/*!
 * Ext JS Library 3.0.0
 * Copyright(c) 2006-2009 Ext JS, LLC
 * licensing@extjs.com
 * http://www.extjs.com/license
 */
var mobiPromoBlockObj = new MobiMultipleInstancesExtension();
 
Ext.onReady(function(){
	var pid = mobiPromoBlockObj.pid;

	MobiPromoBlockCls = function () {}; 
	MobiPromoBlockCls.prototype.timers = new Array(); 
	MobiPromoBlockCls.prototype.pageStart = new Array(); 
	MobiPromoBlockCls.prototype.jsonData = new Array(); 
	MobiPromoBlockCls.prototype.list = new Array(); 
	MobiPromoBlockCls.prototype.pageSize = new Array(); 
	MobiPromoBlockCls.prototype.total = new Array(); 
	
	var mPBi = new MobiPromoBlockCls();
	
	var current_lang = 'fr_FR';
	var idLang = '37';
	var lang_geo_filter = 'Filtre géographique...';
	var lang_sort_obts = 'Tri...';
	var lang_date_begin = 'Du...';
	var lang_date_end = 'Au...';

	function promoBlockPageUp(uid){
		mPBi.pageStart[uid] += mPBi.pageSize[uid];
		if (mPBi.pageStart[uid] >= mPBi.total[uid]){
			mPBi.pageStart[uid] = 0;
		}else if (mPBi.pageStart[uid] < 0){
			mPBi.pageStart[uid] = mPBi.total[uid] - mPBi.pageSize[uid];
		}
		document.getElementById('mobi-mt-promo-block-page1-'+uid).innerHTML = mPBi.pageStart[uid]+'/'+mPBi.total[uid];
		if (document.getElementById('mobi-mt-promo-block-page2-'+uid) !== null){
			document.getElementById('mobi-mt-promo-block-page2-'+uid).innerHTML = mPBi.pageStart[uid]+'/'+mPBi.total[uid];
		}
	}

	function promoBlockPageDown(uid){
		mPBi.pageStart[uid] -= mPBi.pageSize[uid];
		if (mPBi.pageStart[uid] >= mPBi.total[uid]){
			mPBi.pageStart[uid] = 0;
		}else if (mPBi.pageStart[uid] < 0){
			mPBi.pageStart[uid] = mPBi.total[uid] - mPBi.pageSize[uid];
		}
		document.getElementById('mobi-mt-promo-block-page1-'+uid).innerHTML = mPBi.pageStart[uid]+'/'+mPBi.total[uid];
		if (document.getElementById('mobi-mt-promo-block-page2-'+uid) !== null){
			document.getElementById('mobi-mt-promo-block-page2-'+uid).innerHTML = mPBi.pageStart[uid]+'/'+mPBi.total[uid];
		}
	}
	
	function getUrl(url){
		return window.location;
	};

	function collapsePromoBlock(uid, dir){
		Ext.getCmp('mobi-mt-promo-block-panel-c-'+uid).collapse();
		
		var i =0;
		while (i < mPBi.jsonData[uid].results.length){
			if (Ext.get('mobi-mt-promo-block-elem-panel-'+i+'-'+uid)){
				Ext.get('mobi-mt-promo-block-elem-panel-'+i+'-'+uid).remove();
			}
			i++;
		}
		document.getElementById('mobi-mt-promo-block-panel-c-'+uid).innerHTML = "";
		
		var conn = new Ext.data.Connection();
		conn.request({
			url: '/fileadmin/ressources_mob/mt_promo_block/form_functions.php',
			method: 'POST',
			params :{
				actionMobi: 'getList',
				url: getUrl(),
				uid: uid,
				pid: pid,
				start: mPBi.pageStart[uid],
				geo: Ext.getCmp('mobi-mt-promo-block-geo-filter1-'+uid).getValue(),
				sort: Ext.getCmp('mobi-mt-promo-block-sort-obts1-'+uid).getValue(),
				db: document.getElementById('mobi-mt-promo-block-db1-'+uid).value,
				de: document.getElementById('mobi-mt-promo-block-de1-'+uid).value
			},
			success: function(responseObject2){
				var temp = Ext.util.JSON.decode(responseObject2.responseText);
				var uid = temp.uid;
				mPBi.jsonData[uid] = temp;
				mPBi.total[uid] = mPBi.jsonData[uid].total;
				var i = 0;
				var count = 0;
				while (i < mPBi.jsonData[uid].results.length){
					document.getElementById('mobi-mt-promo-block-panel-c-'+uid).innerHTML += '<div id="mobi-mt-promo-block-elem-panel-'+i+'-'+uid+'" class="mobi-mt-promo-block-elem-panel"></div>';
					// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					// generate the modules
					var j = 0;
					while (j < mPBi.list[uid].length){
						var module = mPBi.list[uid][j];
						var promoBlockPanel = Ext.getCmp('mobi-mt-promo-block-panel-m-'+uid);
						eval('var '+module+' = new '+module.toUpperCase()+'();'+
							module+'.on(\'finished\', function(panel){'+
								'panel.render(\'mobi-mt-promo-block-elem-panel-'+i+'-'+uid+'\');'+
								
								'count++;'+
								
								'if (count == mPBi.jsonData[uid].results.length*mPBi.list[uid].length){'+
									'promoBlockPanel.render();'+
									'var tx = function(){expandPromoBlock(uid)};'+
									'tx.defer(750);'+
								'}'+						
							'});'
						);
						var value = eval('mPBi.jsonData[uid].results[i].blocks.'+module+'.value');
						// eval(module+'.create(pid, uid, '+i+', "'+value+'");');
						eval(module+'.create(pid, uid, '+i+',\''+(typeof(value) == "string"?value.replace(/[\n\r\t]/g):value)+'\');');
						j++;
					}
					// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					i++;
				}
				if (dir == 1){
					promoBlockPageUp(uid);
				}
				else if (dir == 2){
					promoBlockPageDown(uid);
				}
			},
			failure:function(){							
			}
		});	
	}

	function expandPromoBlock(uid){
		Ext.getCmp('mobi-mt-promo-block-panel-c-'+uid).expand();
	}
	
	var lang_close = 'Fermer la fênetre';
	var lang_param = 'Paramétrage';
	var lang_save = 'Enregistrer';
	var lang_submit = 'Chercher';
	var lang_info_submit_ok = 'Les informations ont été enregistrées.';
	var lang_server_unreachable = 'Le serveur n\'as pas pu être contacté.';
	
	var k = 0;
	while (k < mobiPromoBlockObj.uids.length){
		var uid = mobiPromoBlockObj.uids[k];
		k++;
		mPBi.pageStart[uid] = 0;
		mPBi.jsonData[uid] = new Object();
		mPBi.list[uid] = new Array();
		mPBi.pageSize[uid] = 0; 
		mPBi.total[uid] = 0;
		mPBi.timers[uid] = 0;
		
		var promoBlockPanel = new Ext.Panel({ 
			renderTo: 'mobi-mt-promo-block-'+uid,
			id: 'mobi-mt-promo-block-panel-m-'+uid,
			cls: 'mobi-mt-promo-block-panel-m',
			hideLabel: true,
			layout:'border',
			width:'auto',
			height: 360,
			items: [{
				id: 'mobi-mt-promo-block-panel-c-'+uid,
				cls: 'mobi-mt-promo-block-panel-c',
				hideBorders: true,
				region: 'west',
				collapsible: true,
				width: 150,
				//width: 'auto',
				height: 310
			},{
				title: 'Center Region',
				hidden: true,
				region: 'center', 
				xtype: 'container',
				layout: 'fit'
			}],
			tbar: new Ext.Toolbar({
				id: 'mobi-mt-promo-block-tbar1-'+uid,
				cls: 'mobi-mt-promo-block-tbar mobi-mt-promo-block-tbar1',
				items: [{
					text: '',
					hideLabel: true,
					id: 'mobi-mt-promo-block-bck1-'+uid,
					iconCls: 'mobi-mt-promo-block-bck',
					handler : function(){
						var ti = this.getId().substr(this.getId().lastIndexOf('-')+1);
						collapsePromoBlock(ti, 2);
						clearTimeout(mPBi.timers[ti]);
					}
				},{
					text: '',
					hideLabel: true,
					id: 'mobi-mt-promo-block-pse1-'+uid,
					iconCls: 'mobi-mt-promo-block-pse',
					handler : function(){
						var ti = this.getId().substr(this.getId().lastIndexOf('-')+1);
						clearTimeout(mPBi.timers[ti]);
					}
				},{
					text: '',
					hideLabel: true,
					id: 'mobi-mt-promo-block-fwd1-'+uid,
					iconCls: 'mobi-mt-promo-block-fwd',
					handler : function(){
						var ti = this.getId().substr(this.getId().lastIndexOf('-')+1);
						collapsePromoBlock(ti, 1);
						clearTimeout(mPBi.timers[ti]);
					}
				},{	
					xtype: 'panel',
					html: '<div id="mobi-mt-promo-block-page1-'+uid+'" class="mobi-mt-promo-block-page"></div>'
				},
					new Ext.form.DateField({
						id: 'mobi-mt-promo-block-db1-'+uid,
						cls: 'mobi-mt-promo-block-db mobi-mt-promo-block-db1',
						width: 80,
						emptyText: lang_date_begin,
						allowBlank: false,
						format: 'd/m/Y',
						readOnly: true,
						listeners: {
							"select": function(field, date){
								var ti = this.getId().substr(this.getId().lastIndexOf('-')+1);
								if (Ext.getCmp('mobi-mt-promo-block-de1-'+ti).isDirty()){
									clearTimeout(mPBi.timers[ti]);
									mPBi.pageStart[ti] = 0;
									collapsePromoBlock(ti, 1);
								}
							}
						}
					})
				,
					new Ext.form.DateField({
						id: 'mobi-mt-promo-block-de1-'+uid,
						cls: 'mobi-mt-promo-block-de mobi-mt-promo-block-de1',
						width: 80,
						emptyText: lang_date_end,
						allowBlank: false,
						format: 'd/m/Y',
						readOnly: true,
						listeners: {
							"select": function(field, date){
								var ti = this.getId().substr(this.getId().lastIndexOf('-')+1);
								if (Ext.getCmp('mobi-mt-promo-block-db1-'+ti).isDirty()){
									clearTimeout(mPBi.timers[ti]);
									mPBi.pageStart[ti] = 0;
									collapsePromoBlock(ti, 1);
								}
							}
						}
					})
				,{
					xtype: 'combo',
					store: new Ext.data.Store({
							proxy: new Ext.data.HttpProxy({url:'/fileadmin/ressources_mob/mt_promo_block/form_functions.php'}),
							method: 'POST',
							baseParams :{
								actionMobi: 'getAssocPGA',
								pid: pid,
								node: 'root',
								lang: current_lang
							},
							reader: new Ext.data.JsonReader({
								id: 'idMobi'
								},[
									{name: 'text', mapping: 'text'},
									{name: 'idMobi', mapping: 'idMobi'}
								]
							),
							remoteSort: false
						}),
					id: 'mobi-mt-promo-block-geo-filter1-'+uid,
					cls: 'mobi-mt-promo-block-geo-filter mobi-mt-promo-block-geo-filter1',
					name: 'mobi-mt-promo-block-geo-filter-combo',
					hiddenName: 'mobi-mt-promo-block-geo-filter-combo_hidden',						
					displayField: 'text',
					valueField: 'idMobi',
					typeAhead: true,
					forceSelection: true,
					mode: 'remote',
					triggerAction: 'all',
					emptyText: lang_geo_filter,
					selectOnFocus: true,
					listWidth: 100,	//deferredRender bug
					width: 117,
					listeners: {
						"select": function(combo, record, index){
							var ti = this.getId().substr(this.getId().lastIndexOf('-')+1);
							clearTimeout(mPBi.timers[ti]);
							mPBi.pageStart[ti] = 0;
							collapsePromoBlock(ti, 1);
						}
					}
				},{
					xtype: 'combo',
					store: new Ext.data.Store({
							proxy: new Ext.data.HttpProxy({url:'/fileadmin/ressources_mob/mt_promo_block/form_functions.php'}),
							method: 'POST',
							baseParams :{
								actionMobi: 'getFeFilter',
								pid: pid,
								node: 'root',
								lang: current_lang
							},
							reader: new Ext.data.JsonReader({
								id: 'idMobi'
								},[
									{name: 'text', mapping: 'text'},
									{name: 'idMobi', mapping: 'idMobi'}
								]
							),
							remoteSort: false
						}),
					id: 'mobi-mt-promo-block-sort-obts1-'+uid,
					cls: 'mobi-mt-promo-block-sort-obts mobi-mt-promo-block-sort-obts1',
					name: 'mobi-mt-promo-block-sort-obts-combo',
					hiddenName: 'mobi-mt-promo-block-sort-obts-combo_hidden',						
					displayField: 'text',
					valueField: 'idMobi',
					typeAhead: true,
					forceSelection: true,
					mode: 'remote',
					triggerAction: 'all',
					emptyText: lang_sort_obts,
					selectOnFocus: true,
					listWidth: 100,	//deferredRender bug
					width: 117,
					listeners: {
						"select": function(combo, record, index){
							var ti = this.getId().substr(this.getId().lastIndexOf('-')+1);
							clearTimeout(mPBi.timers[ti]);
							mPBi.pageStart[ti] = 0;
							collapsePromoBlock(ti, 1);
						}
					}
				}]
			}),
			bbar: new Ext.Toolbar({
				id: 'mobi-mt-promo-block-tbar2-'+uid,
				cls: 'mobi-mt-promo-block-tbar mobi-mt-promo-block-tbar2',
				items: [{
					text: '',
					hideLabel: true,
					id: 'mobi-mt-promo-block-bck2-'+uid,
					iconCls: 'mobi-mt-promo-block-bck',
					handler : function(){
						var ti = this.getId().substr(this.getId().lastIndexOf('-')+1);
						collapsePromoBlock(ti, 2);
						clearTimeout(mPBi.timers[ti]);
					}
				},{
					text: '',
					hideLabel: true,
					id: 'mobi-mt-promo-block-pse2-'+uid,
					iconCls: 'mobi-mt-promo-block-pse',
					handler : function(){
						var ti = this.getId().substr(this.getId().lastIndexOf('-')+1);
						clearTimeout(mPBi.timers[ti]);
					}
				},{
					text: '',
					hideLabel: true,
					id: 'mobi-mt-promo-block-fwd2-'+uid,
					iconCls: 'mobi-mt-promo-block-fwd',
					handler : function(){
						var ti = this.getId().substr(this.getId().lastIndexOf('-')+1);
						collapsePromoBlock(ti, 1);
						clearTimeout(mPBi.timers[ti]);
					}
				},{	
					xtype: 'panel',
					html: '<div id="mobi-mt-promo-block-page2-'+uid+'" class="mobi-mt-promo-block-page"></div>'
				},
					new Ext.form.DateField({
						id: 'mobi-mt-promo-block-db2-'+uid,
						cls: 'mobi-mt-promo-block-db',
						width: 80,
						emptyText: lang_date_begin,
						allowBlank: false,
						format: 'd/m/Y',
						readOnly: true,
						listeners: {
							"select": function(field, date){
								var ti = this.getId().substr(this.getId().lastIndexOf('-')+1);
								if (Ext.getCmp('mobi-mt-promo-block-de2-'+ti).isDirty()){
									clearTimeout(mPBi.timers[ti]);
									mPBi.pageStart[ti] = 0;
									collapsePromoBlock(ti, 1);
									Ext.getCmp('mobi-mt-promo-block-db1-'+ti).setValue(Ext.getCmp('mobi-mt-promo-block-db1-'+ti).getValue());
								}
							}
						}
					})
				,
					new Ext.form.DateField({
						id: 'mobi-mt-promo-block-de2',
						cls: 'mobi-mt-promo-block-de mobi-mt-promo-block-de2',
						width: 80,
						emptyText: lang_date_end,
						allowBlank: false,
						format: 'd/m/Y',
						readOnly: true,
						listeners: {
							"select": function(field, date){
								var ti = this.getId().substr(this.getId().lastIndexOf('-')+1);
								if (Ext.getCmp('mobi-mt-promo-block-db2-'+ti).isDirty()){
									clearTimeout(mPBi.timers[ti]);
									mPBi.pageStart[ti] = 0;
									collapsePromoBlock(ti, 1);
									Ext.getCmp('mobi-mt-promo-block-de1-'+ti).setValue(Ext.getCmp('mobi-mt-promo-block-de1-'+ti).getValue());
								}
							}
						}
					})
				,{
					xtype: 'combo',
					store: new Ext.data.Store({
							proxy: new Ext.data.HttpProxy({url:'/fileadmin/ressources_mob/mt_promo_block/form_functions.php'}),
							method: 'POST',
							baseParams :{
								actionMobi: 'getAssocPGA',
								pid: pid,
								node: 'root',
								lang: current_lang
							},
							reader: new Ext.data.JsonReader({
								id: 'idMobi'
								},[
									{name: 'text', mapping: 'text'},
									{name: 'idMobi', mapping: 'idMobi'}
								]
							),
							remoteSort: false
						}),
					id: 'mobi-mt-promo-block-geo-filter2-'+uid,
					cls: 'mobi-mt-promo-block-geo-filter mobi-mt-promo-block-geo-filter2',
					name: 'mobi-mt-promo-block-geo-filter-combo',
					hiddenName: 'mobi-mt-promo-block-geo-filter-combo_hidden',						
					displayField: 'text',
					valueField: 'idMobi',
					typeAhead: true,
					forceSelection: true,
					mode: 'remote',
					triggerAction: 'all',
					emptyText: lang_geo_filter,
					selectOnFocus: true,
					listWidth: 100,	//deferredRender bug
					width: 117,
					listeners: {
						"select": function(combo, record, index){
							var ti = this.getId().substr(this.getId().lastIndexOf('-')+1);
							clearTimeout(mPBi.timers[ti]);
							mPBi.pageStart[ti] = 0;
							collapsePromoBlock(ti, 1);
							Ext.getCmp('mobi-mt-promo-block-geo-filter1-'+ti).setValue(record.idMobi);
						}
					}
				},{
					xtype: 'combo',
					store: new Ext.data.Store({
							proxy: new Ext.data.HttpProxy({url:'/fileadmin/ressources_mob/mt_promo_block/form_functions.php'}),
							method: 'POST',
							baseParams :{
								actionMobi: 'getFeFilter',
								pid: pid,
								node: 'root',
								lang: current_lang
							},
							reader: new Ext.data.JsonReader({
								id: 'idMobi'
								},[
									{name: 'text', mapping: 'text'},
									{name: 'idMobi', mapping: 'idMobi'}
								]
							),
							remoteSort: false
						}),
					id: 'mobi-mt-promo-block-sort-obts2-'+uid,
					cls: 'mobi-mt-promo-block-sort-obts mobi-mt-promo-block-sort-obts2',
					name: 'mobi-mt-promo-block-sort-obts-combo',
					hiddenName: 'mobi-mt-promo-block-sort-obts-combo_hidden',						
					displayField: 'text',
					valueField: 'idMobi',
					typeAhead: true,
					forceSelection: true,
					mode: 'remote',
					triggerAction: 'all',
					emptyText: lang_sort_obts,
					selectOnFocus: true,
					listWidth: 100,	//deferredRender bug
					width: 117,
					listeners: {
						"select": function(combo, record, index){
							var ti = this.getId().substr(this.getId().lastIndexOf('-')+1);
							clearTimeout(mPBi.timers[ti]);
							mPBi.pageStart[ti] = 0;
							collapsePromoBlock(ti, 1);
							Ext.getCmp('mobi-mt-promo-block-sort-obts1-'+ti).setValue(record.idMobi);
						}
					}
				}]
			})
		});
		
		var connUrl='/fileadmin/ressources_mob/mt_promo_block/form_functions.php';
		var responseObject = new Object();
		var conn = new Ext.data.Connection();
		conn.request({
			url: connUrl,
			method: 'POST',
			params:{
				actionMobi: 'getModuleList',
				url: getUrl(),
				uid: uid,
				pid: pid
			},
			success: function(responseObject){	
				var json = Ext.util.JSON.decode(responseObject.responseText);
				var uid = parseInt(json[2]);
				mPBi.pageSize[uid] = parseInt(json[1])
				mPBi.list[uid] = json[0];
				var conn2 = new Ext.data.Connection();
				var responseObject2 = new Object();
				conn2.request({
					url: connUrl,
					method: 'POST',
					params:{
						actionMobi: 'getList',
						url: getUrl(),
						uid: uid,
						pid: pid
					},
					success: function(responseObject2){	
						var temp = Ext.util.JSON.decode(responseObject2.responseText);
						var uid = temp.uid;
						mPBi.jsonData[uid] = temp;
						var promoBlockPanel = Ext.getCmp('mobi-mt-promo-block-panel-m-'+mPBi.jsonData[uid].uid);
						mPBi.total[uid] = mPBi.jsonData[uid].total;
						var i = 0;
						while (i < mPBi.jsonData[uid].results.length){
							document.getElementById('mobi-mt-promo-block-panel-c-'+uid).innerHTML += '<div id="mobi-mt-promo-block-elem-panel-'+i+'-'+uid+'" class="mobi-mt-promo-block-elem-panel mobi-mt-promo-block-elem-panel-'+i+'"></div>';
							// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
							// generate the modules
							var j = 0;
							while (j < mPBi.list[uid].length){
								var module = mPBi.list[uid][j];
								eval('var '+module+' = new '+module.toUpperCase()+'();'+
									module+'.on(\'finished\', function(panel){'+
										'panel.render(\'mobi-mt-promo-block-elem-panel-'+i+'-'+uid+'\');'+
									'});'
								);
								var value = eval('mPBi.jsonData[uid].results[i].blocks.'+module+'.value');

								// eval(module+'.create(pid, uid, '+i+', "'+value+'");');
								eval(module+'.create(pid, uid, '+i+',\''+(typeof(value) == "string"?value.replace(/[\n\r\t]/g):value)+'\');');
								j++;
							}
							// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
							i++;
						}
						promoBlockPanel.render();
						if (mPBi.jsonData[uid].total <= mPBi.pageSize[uid]){
							Ext.getCmp('mobi-mt-promo-block-tbar1-'+uid).hide();
							Ext.getCmp('mobi-mt-promo-block-tbar2-'+uid).hide();
						}
						else{
							mPBi.timers[uid] = setInterval ( function(){collapsePromoBlock(uid, 1);}, 15000 );
							mPBi.pageStart[uid] += mPBi.pageSize[uid];
						}
					},
					failure:function(){ 
						Ext.Msg.alert('ERR', lang_server_unreachable);
					}
				});
			},
			failure:function(){ 
				Ext.Msg.alert('ERR', lang_server_unreachable);
			}
		});
	}
});
