ecommerce.browsing = {
	
	/*
	 * zindex   : i, j, k
	 * zel      : element
	 * zname    : entry to update (u, x, y, etc...)
	 * zchecked : true or false (only for u)
	 * clear    : true or false (clears the entry)
	 * submitit : true or false (calls refreshProductList if true)
	 */
	refreshForm: function(zindex,
						  zel,
						  zname,
						  zvalue,
						  zchecked,
						  clear,
						  submitit) {
		var zform ;
		var zinput ;
		var zvals ;
		
		zel = $(zel);
		
		zform  = $('cssid_selection_form_'+zindex);
		zinput = zform.down('input[name="'+zname+'"]');
		if (clear) zinput.value = '';
		switch(zname) {
			case 'u':
				zvals  = zinput.value.split('-');
				if (zchecked) {
					if (!zvals.member(zvalue)) zvals.push(zvalue);
				} else {
					zvals = zvals.without(zvalue);
				}
				zvals = zvals.join('-');
				zvals.startsWith('-') ? zinput.value = zvals.substring(1) : zinput.value = zvals ;
				zform.down('input[name=o]').value = ''; // back to page 1
				break;
			
			case 'o':
			case 'p':
			case 'd':
				zinput.value = zvalue;
				break;
				
			case 'n':
			case 't':
			case 'a':
			case 'x':
			case 'y':
				zform.down('input[name=o]').value = ''; // back to page 1
				zinput.value = zvalue;
				break
		}
		
		if (submitit==true) ecommerce.browsing.refreshProductList(zindex,zel) ;
	},
	
	refreshProductList: function(zindex,zel) {
		ecommerce.ajaxmask.show(ecommerce.utils.translate('Chargement en cours...#Your request is being processed...'));
		
		var zi = '';
		var zj = '';
		var zk = '';
		
		switch (zindex) {
			case 'k':
				zk = ecommerce.browsing.formToParam('k');
			case 'j':
				zj = ecommerce.browsing.formToParam('j');
			case 'i':
				zi = ecommerce.browsing.formToParam('i');
		}
		
	    new Ajax.Request('/pc/ajax_pc_callback.php?action=product_list',
						 { method: 'post',
						   parameters: { i: zi, j: zj, k: zk },
						   onSuccess: function(transport) {
						   		var zresp ;
						   		zresp = transport.responseXML.documentElement;
							   	ecommerce.browsing.displayProductList(zindex,zel,zresp);
						   		ecommerce.ajaxmask.hide();
						   } } );
	},
	
	formToParam: function(zindex) {
		var zform;
		var zinputs;
		var zq  = '';
		var sep = '';
		
		zform  = $('cssid_selection_form_'+zindex);
	
		zinputs = zform.select('input');
		zinputs.each(function(el) {
			if (el.value.length>0) {
				zq = zq + sep + el.readAttribute('name') + el.value;
				sep = ':';
			}
		});
		
		return encodeURI(zq);
	},
	
	displayProductList: function(zindex,zel,zxml) {
		var zcontainer ;
		var zcontentNode ;
		var zcontent ;
		var zsummary ;
		
		zsummary = zxml.getElementsByTagName('summary')[0];
		ecommerce.browsing.updateVerticalMenu(zindex,zel,zsummary);
		
		if (zindex == 'j') {
			zcontainer = $('cssid_pccontent').down('div.cssclass_catalogue_content').down('div.cssclass_catalogue_horizontal');
			
		} else {
			zcontainer = $('cssid_pccontent').down('div.cssclass_catalogue_content').down('div.cssclass_catalogue_horizontal').down('div.cssclass_page_content') ;
			
		}
		
		zcontentNode = zxml.getElementsByTagName('html_content')[0];
		if (navigator.appName == 'Microsoft Internet Explorer') {
			zcontent = zcontentNode.text;
		} else {
			zcontent = zcontentNode.textContent;
		}
		zcontainer.update(zcontent);
		
		ecommerce.browsing.updateBottomData(zsummary);
	},

	updateBottomData: function(zsummary) {
		var bdiv = $('cssid_bottom_pagination').down('div.cssclass_pagination');
		var odiv = $('cssid_pccontent').down('div.cssclass_catalogue_horizontal').down('div.cssclass_pagination');
		var ppage = odiv.down('div.cssclass_per_page');
		var pages = odiv.down('div.cssclass_page');
		var zclone;
		
		if (typeof bdiv != 'undefined') {
			bdiv.update();
			if (typeof ppage != 'undefined') {
				zclone = ppage.cloneNode(true);
				bdiv.insert(zclone);
			}
			if (typeof pages != 'undefined') {
				zclone = pages.cloneNode(true);
				bdiv.insert(zclone);
			}
		}
	},
	
	updateVerticalMenu: function(zindex,zel,zsummary) {
		var zcategories ;
		var nb_categories ;
		var zmenuContainer ;
		var zelsas ;
		var zfd ;
		var znb ;
		var zela ;
		var zeld ;
		
		zcategories = zsummary.getElementsByTagName('package_category') ;
		nb_categories = zcategories.length ;
			
		zmenuContainer = $('cssid_pccontent').down('div.cssclass_catalogue_content').down('div.cssclass_catalogue_vertical');
		
		zelsas = zmenuContainer.select('a.cssclass_package_category.cssclass_not_empty');
		zelsas.each(function(el) { el.addClassName('cssclass_empty'); el.removeClassName('cssclass_not_empty'); });
		
		for(var i=0; i<nb_categories; i++) {
		 	zfd  = zcategories[i].getAttribute('id');
		 	znb  = zcategories[i].getAttribute('nb_packages');
		 	zela = zmenuContainer.down('a.cssclass_package_category#cssid_pc_a_'+zfd);
		 	if (typeof zela != 'undefined') {
			 	zela.down('span').innerHTML = '('+znb+')';
			 	zela.removeClassName('cssclass_empty');
			 	zela.addClassName('cssclass_not_empty');
			}
		}
	},
	
	sortProductList: function(select) {
		var zval = select.options[select.selectedIndex].value ;
		if (zval.length>0) {
			ecommerce.analytics.trackPage('/ficheproduit/outils/tri/'+zval) ;
			ecommerce.browsing.refreshForm('k',select,'t',zval,true,false,true) ;
		}
	},
	
	changeNbPerPage: function(select) {
		var zval = select.options[select.selectedIndex].value ;
		if (zval.length>0) {
			ecommerce.analytics.trackPage('/ficheproduit/outils/parpage/'+zval) ;
			ecommerce.browsing.refreshForm('k',select,'n',zval,true,false,true) ;
		}
	},
	
	changeAvailability: function(zradio,zval) {
		if (zradio.checked) {
			var zchoix = (zval==2) ? 'tous' : 'enstock' ;
			ecommerce.analytics.trackPage('/ficheproduit/outils/disponibilite/'+zchoix);
			ecommerce.browsing.refreshForm('k',zradio,'a',zval,true,false,true) ;
		}
	},
	
	changeSubCategory: function(select,type) {
		var zval = select.options[select.selectedIndex].value ;
		ecommerce.analytics.trackPage('/ficheproduit/outils/'+type) ;
		ecommerce.browsing.refreshForm('k',select,'u',zval,true,true,true) ;
	},
	
	loadPage: function(zel,zval) {
		ecommerce.analytics.trackPage('/ficheproduit/outils/page/'+zval) ;
		ecommerce.browsing.refreshForm('k',zel,'o',zval-1,true,false,true);
	}
	
} ;