/*!
 * Ext JS Library 3.0.0
 * Copyright(c) 2006-2009 Ext JS, LLC
 * licensing@extjs.com
 * http://www.extjs.com/license
 */
 
Ext.onReady(function(){
	var conn = new Ext.data.Connection();
	var pageStart = 0;
	var jsonData = new Object();
	var list = new Array();
	var pageSize = 0;
	var total = 0;
	var pid = document.getElementById('mobi-promo-pid').innerHTML;
	var promoTimer;
	
	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(){
		pageStart += pageSize;
		if (pageStart >= total){
			pageStart = 0;
		}else if (pageStart < 0){
			pageStart = total - pageSize;
		}
		document.getElementById('mobi-mt-promo-block-page1').innerHTML = pageStart+'/'+total;
		if (document.getElementById('mobi-mt-promo-block-page2') !== null){
			document.getElementById('mobi-mt-promo-block-page2').innerHTML = pageStart+'/'+total;
		}
	}

	function promoBlockPageDown(){
		pageStart -= pageSize;
		if (pageStart >= total){
			pageStart = 0;
		}else if (pageStart < 0){
			pageStart = total - pageSize;
		}
		document.getElementById('mobi-mt-promo-block-page1').innerHTML = pageStart+'/'+total;
		if (document.getElementById('mobi-mt-promo-block-page2') !== null){
			document.getElementById('mobi-mt-promo-block-page2').innerHTML = pageStart+'/'+total;
		}
	}

	var promoBlockPanel = new Ext.Panel({ 
		renderTo: 'mobi-mt-promo-block',
		id: 'mobi-mt-promo-block-panel-m',
		hideLabel: true,
		layout:'border',
		width:'auto',
		height: 360,
		items: [{
			id: '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',
			cls: 'mobi-mt-promo-block-tbar',
			items: [{
				text: '',
				hideLabel: true,
				iconCls: 'mobi-mt-promo-block-bck',
				handler : function(){
					collapsePromoBlock(2);
					clearTimeout(promoTimer);
				}
			},{
				text: '',
				hideLabel: true,
				iconCls: 'mobi-mt-promo-block-pse',
				handler : function(){
					clearTimeout(promoTimer);
				}
			},{
				text: '',
				hideLabel: true,
				iconCls: 'mobi-mt-promo-block-fwd',
				handler : function(){
					collapsePromoBlock(1);
					clearTimeout(promoTimer);
				}
			},{	
				xtype: 'panel',
				html: '<div id="mobi-mt-promo-block-page1" class="mobi-mt-promo-block-page"></div>'
			},
				new Ext.form.DateField({
					id: 'mobi-mt-promo-block-db1',
					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){
							if (Ext.getCmp('mobi-mt-promo-block-de1').isDirty()){
								clearTimeout(promoTimer);
								pageStart = 0;
								collapsePromoBlock(1);
							}
						}
					}
				})
			,
				new Ext.form.DateField({
					id: 'mobi-mt-promo-block-de1',
					cls: 'mobi-mt-promo-block-de',
					width: 80,
					emptyText: lang_date_end,
					allowBlank: false,
					format: 'd/m/Y',
					readOnly: true,
					listeners: {
						"select": function(field, date){
							if (Ext.getCmp('mobi-mt-promo-block-db1').isDirty()){
								clearTimeout(promoTimer);
								pageStart = 0;
								collapsePromoBlock(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',
				cls: 'mobi-mt-promo-block-geo-filter',
				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){
						clearTimeout(promoTimer);
						pageStart = 0;
						collapsePromoBlock(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',
				cls: 'mobi-mt-promo-block-sort-obts',
				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){
						clearTimeout(promoTimer);
						pageStart = 0;
						collapsePromoBlock(1);
					}
				}
			}]
		}),
		bbar: new Ext.Toolbar({
			id: 'mobi-mt-promo-block-tbar2',
			cls: 'mobi-mt-promo-block-tbar',
			items: [{
				text: '',
				hideLabel: true,
				iconCls: 'mobi-mt-promo-block-bck',
				handler : function(){
					collapsePromoBlock(2);
					clearTimeout(promoTimer);
				}
			},{
				text: '',
				hideLabel: true,
				iconCls: 'mobi-mt-promo-block-pse',
				handler : function(){
					clearTimeout(promoTimer);
				}
			},{
				text: '',
				hideLabel: true,
				iconCls: 'mobi-mt-promo-block-fwd',
				handler : function(){
					collapsePromoBlock(1);
					clearTimeout(promoTimer);
				}
			},{	
				xtype: 'panel',
				html: '<div id="mobi-mt-promo-block-page2" class="mobi-mt-promo-block-page"></div>'
			},
				new Ext.form.DateField({
					id: 'mobi-mt-promo-block-db2',
					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){
							if (Ext.getCmp('mobi-mt-promo-block-de2').isDirty()){
								clearTimeout(promoTimer);
								pageStart = 0;
								collapsePromoBlock(1);
								Ext.getCmp('mobi-mt-promo-block-db1').setValue(Ext.getCmp('mobi-mt-promo-block-db1').getValue());
							}
						}
					}
				})
			,
				new Ext.form.DateField({
					id: 'mobi-mt-promo-block-de2',
					cls: 'mobi-mt-promo-block-de',
					width: 80,
					emptyText: lang_date_end,
					allowBlank: false,
					format: 'd/m/Y',
					readOnly: true,
					listeners: {
						"select": function(field, date){
							if (Ext.getCmp('mobi-mt-promo-block-db2').isDirty()){
								clearTimeout(promoTimer);
								pageStart = 0;
								collapsePromoBlock(1);
								Ext.getCmp('mobi-mt-promo-block-de1').setValue(Ext.getCmp('mobi-mt-promo-block-de1').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',
				cls: 'mobi-mt-promo-block-geo-filter',
				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){
						clearTimeout(promoTimer);
						pageStart = 0;
						collapsePromoBlock(1);
						Ext.getCmp('mobi-mt-promo-block-geo-filter1').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',
				cls: 'mobi-mt-promo-block-sort-obts',
				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){
						clearTimeout(promoTimer);
						pageStart = 0;
						collapsePromoBlock(1);
						Ext.getCmp('mobi-mt-promo-block-sort-obts1').setValue(record.idMobi);
					}
				}
			}]
		})
	});
	 
	function getUrl(url){
		return window.location;
	};

	function collapsePromoBlock(dir){
		Ext.getCmp('mobi-mt-promo-block-panel-c').collapse();
		
		var i =0;
		while (i < jsonData.results.length){
			if (Ext.get('mobi-mt-promo-block-elem-panel-'+i)){
				Ext.get('mobi-mt-promo-block-elem-panel-'+i).remove();
			}
			i++;
		}
		document.getElementById('mobi-mt-promo-block-panel-c').innerHTML = "";

		conn.request({
			url: '/fileadmin/ressources_mob/mt_promo_block/form_functions.php',
			method: 'POST',
			params :{
				actionMobi: 'getList',
				url: getUrl(),
				pid: pid,
				start: pageStart,
				geo: Ext.getCmp('mobi-mt-promo-block-geo-filter1').getValue(),
				sort: Ext.getCmp('mobi-mt-promo-block-sort-obts1').getValue(),
				db: document.getElementById('mobi-mt-promo-block-db1').value,
				de: document.getElementById('mobi-mt-promo-block-de1').value
			},
			success: function(responseObject2){
				jsonData = Ext.util.JSON.decode(responseObject2.responseText);
				total = jsonData.total;
				var i =0;
				var count = 0;
				while (i < jsonData.results.length){
					document.getElementById('mobi-mt-promo-block-panel-c').innerHTML += '<div id="mobi-mt-promo-block-elem-panel-'+i+'" class="mobi-mt-promo-block-elem-panel"></div>';
					// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					// genarate the modules
					var j = 0;
					while (j < list.length){
						var module = list[j];
						eval('var '+module+' = new '+module.toUpperCase()+'();'+
							module+'.on(\'finished\', function(panel){'+
								'panel.render(\'mobi-mt-promo-block-elem-panel-'+i+'\');'+
								
								'count++;'+
								
								'if (count == jsonData.results.length*list.length){'+
									'promoBlockPanel.render();'+
									'expandPromoBlock.defer(750);'+
								'}'+						
							'});'
						);
						var value = eval('jsonData.results[i].blocks.'+module+'.value');
						eval(module+'.create(pid, '+i+', "'+value+'");');
						j++;
					}
					// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					i++;
				}
				if (dir == 1){
					promoBlockPageUp();
				}
				else if (dir == 2){
					promoBlockPageDown();
				}
				
			},
			failure:function(){							
			}
		});	
	}

	function expandPromoBlock(){
		Ext.getCmp('mobi-mt-promo-block-panel-c').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 connUrl='/fileadmin/ressources_mob/mt_promo_block/form_functions.php';
	var responseObject = new Object();
	conn.request({
		url: connUrl,
		method: 'POST',
		params:{
			actionMobi: 'getModuleList',
			url: getUrl(),
			pid: pid
		},
		success: function(responseObject){	
			var json = Ext.util.JSON.decode(responseObject.responseText);
			list = json[0];
			pageSize = parseInt(json[1]);
			var conn2 = new Ext.data.Connection();
			var responseObject2 = new Object();
			conn2.request({
				url: connUrl,
				method: 'POST',
				params:{
					actionMobi: 'getList',
					url: getUrl(),
					pid: pid
				},
				success: function(responseObject2){	
					jsonData = Ext.util.JSON.decode(responseObject2.responseText);
					total = jsonData.total;
					var i = 0;
					
					
					
					while (i < jsonData.results.length){
						document.getElementById('mobi-mt-promo-block-panel-c').innerHTML += '<div id="mobi-mt-promo-block-elem-panel-'+i+'" class="mobi-mt-promo-block-elem-panel"></div>';
						// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
						// generate the modules
						var j = 0;
						while (j < list.length){
							var module = list[j];
							eval('var '+module+' = new '+module.toUpperCase()+'();'+
								module+'.on(\'finished\', function(panel){'+
									'panel.render(\'mobi-mt-promo-block-elem-panel-'+i+'\');'+
								'});'
							);
							var value = eval('jsonData.results[i].blocks.'+module+'.value');
							eval(module+'.create(pid, '+i+', "'+value+'");');
							j++;
						}
						// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
						i++;
					}
					promoBlockPanel.render();
					if (jsonData.total <= pageSize){
						Ext.getCmp('mobi-mt-promo-block-tbar1').hide();
						Ext.getCmp('mobi-mt-promo-block-tbar2').hide();
					}
					else{
						promoTimer = setInterval ( function(){collapsePromoBlock(1);}, 15000 );
						pageStart += pageSize;
					}
				},
				failure:function(){ 
					Ext.Msg.alert('ERR', lang_server_unreachable);
				}
			});
		},
		failure:function(){ 
			Ext.Msg.alert('ERR', lang_server_unreachable);
		}
	});
});