// mdr_sbp.js
// AFG
// creation : 16/02/2009
// fonction pour le site bons plans
//alert("ici mdr_sbp");
var sbp_error_trace = false;
var sbp_trace_google_analytics = false;

/**
Author: AFG
Date: 18 FEV. 2009
Description: Gestion de la recherche dans la page (TEMPLATE A GAUCHE)
**/
var MdrSbp = function(prefixBt, sufixBt ) {
	
	// Sufixe et prefixe du BOUTON dans le formulaire de recherche de bons plans
	this.prefixBt = (prefixBt ? trim(prefixBt):'Search (');
	this.sufixBt  = (sufixBt ? trim(sufixBt):')');
	this.msgInvalidFormStructure = 'Please enter a type of structure!';
	
	this.formID = '';
	this.butSearchID = '';
		
	this.urlsearchList = '';
	this.urlsearchMap = '';
	this.urlsearchNb = '';
	
	this.modeResult = 0; // (0=MODE List | 1=MODE carto)
	
	// DIV pour les resultat et pour la carto
	this.divID_result = '';
	this.divID_carto = '';
	this.divIDGlobalContainer ='';
	this.divIDSheetContainer ='';
	
	// Liste des arguments utilises pour une recherche (0: Liste, 1: carto) 
	this.searchArgs = Array('void','void');
	
	// Vars for AJAX
	this.res_url = ''; // requete courante
	this.callback = null;  // methode de callback
	this.callback_args = null; // arguments sur le callback
	this.last_url = '';
	
	this.googleStatsModName = new Array ('Search list', 'Search map');
	this.googleStatsCatName = new Array ('Hotel','Camp Site','Guest House', 'Locations');
	
	this.fonc_search_carto = null; /* fonction de recherche sur carto */
	this.fonc_close_carto = null; /* fonction declenchee quand la carte va etre cachee */
	
	this.fieldsSeparator = '&';
	this.valuesSeparator = ',';
	
	this.directdisplay = false;
	this.delayedsearch = true;
	this.lastIdRequest=0;
	
	this.viewsId = new Array(); /* vues disponibles */
	this.viewDivFrom = false;
	/*this.viewLastScroll = false; TODO : recuperer le scroll de l'objet window */
}


MdrSbp.prototype = {

/* ********************************************* */	
	
	setMsgInvalidFormStructure : function(value) {
		this.msgInvalidFormStructure = value;
	},
	getMsgInvalidFormStructure : function() {
		return this.msgInvalidFormStructure;
	}, 
	
	setDirectDisplay : function(pBool) {
		this.directdisplay = pBool;
	},
	isDirectDisplay : function() {
		return this.directdisplay;
	}, 
	
	setFormID : function(value) {
		this.formID = value;
	},
	getFormID : function() {
		return this.formID;
	}, 
	
	setbutSearchID : function(value) {
		this.butSearchID = value;
	},
	getbutSearchID : function() {
		return this.butSearchID;
	}, 
	
	setDivID_result : function(value) {
		this.divID_result = value;
	},
	getDivID_result : function() {
		return this.divID_result;
	}, 
	
	
	setDivID_carto : function(value) {
		this.divID_carto = value;
	},
	getDivID_carto : function() {
		return this.divID_carto;
	}, 
	
	
	setDivIDGlobalContainer : function(value) {
		this.divIDGlobalContainer = value;
	},
	getDivIDGlobalContainer : function() {
		return this.divIDGlobalContainer;
	}, 
	setDivIDSheetContainer : function(value) {
		this.divIDSheetContainer = value;
	},
	getDivIDSheetContainer : function() {
		return this.divIDSheetContainer;
	}, 
	
	
	
	setSearchFoncCarto : function(fonc) {
		this.fonc_search_carto = fonc;
	}, 
	setCloseFoncCarto : function(fonc) {
		this.fonc_close_carto = fonc;
	}, 
	
	
	setUrlsearchList : function(value) {
		this.urlsearchList = value;
	},
	getUrlsearchList : function() {
		return this.urlsearchList;
	},
	
	
	setUrlsearchMap : function(value) {
		this.urlsearchMap = value;
	},
	getUrlsearchMap : function() {
		return this.urlsearchMap;
	},
	
	
	setUrlsearchNb : function(value) {
		this.urlsearchNb = value;
	},
	getUrlsearchNb : function() {
		return this.urlsearchNb;
	},
	
	
	setModeResult : function(value) {
		if (1 != value && 1 == this.modeResult && this.fonc_close_carto) { /* si carto a cacher */
			//alert('close map this.fonc_close_carto='+this.fonc_close_carto);
			try {this.fonc_close_carto();} catch(err){alert('error fonc_close_carto');};
		}
		this.modeResult = value;
	},
	getModeResult : function() {
		return this.modeResult;
	},
	
	getCurrentDivIdResult : function () {
		var result = '';
		
		if (this.divID_result.length != 0  && this.divID_carto.length != 0)	{
			if ( this.modeResult == 0) {
				result = this.divID_result;
			} else if ( this.modeResult == 1) {
				result = this.divID_carto;
			} else {
				result = this.divID_result;
			}
		}
		return result;
	},
	
	// Test si le resultat de la recherche est Valide (si == TRUE => RECHERCHE A FAIRE)
	needRefresh : function () {
		var result = true;
		var newArgs = this.getUrlArgsFromFinderForm(this.formID)
		var oldArgs = this.searchArgs[this.modeResult];
		
		if ( sbp_error_trace == true) alert ('old:'+ oldArgs +' /new:'+ newArgs);
		if ( newArgs == oldArgs ) result = false;
		
		return result;
	},
	
	
/* ********************************************* */	

	setView : function (num,id) {
		this.viewsId[num] = id;
	},
	
	selectView : function (num,from) {
		if ('undefined' != this.viewsId[num]) {
			/* on cache les autres */
			for (var curid in this.viewsId) {
				if (null != curid && num != curid && null != this.viewsId[curid] && ('function' != typeof this.viewsId[curid])) {
					try{
						$(this.viewsId[curid]).hide();/* cf. prototype.js */
					}catch(err){
						/* erreur */
						alert('hide error ='+this.viewsId[curid]+',err='+err);
					}
				}
			}
			/* on montre la vue */
			try {
				$(this.viewsId[num]).show();/* cf. prototype.js */
			} catch(err){
				alert('hide show ='+this.viewsId[curid]+',err='+err);/* erreur */
			}
			/* focus sur l'element ayant change la vue */
			try {
				if (false != this.viewDivFrom) {
					/*alert('this.viewDivFrom='+this.viewDivFrom);*/
					$(this.viewDivFrom).focus();/* cf. prototype.js */
				}
				else window.scrollTo(0,0);
			} catch(err){
				//alert('focus error ='+this.viewDivFrom);/* erreur */
				try {window.scrollTo(0,0);} catch(err){} /* par defaut */
			}
			this.viewDivFrom = from;
		} else {
			alert('view not set!');
			alert('this.viewsId='+this.viewsId+', num='+num);
		}
	},
	
	selectAndUpdateView: function (num,url_ajax,from) {
		try {
			if ('undefined' != this.viewsId[num]) {
				sbp_addWaitMsgToDiv(this.viewsId[num]);
				this.selectView(num,from);
				var div_dest = this.viewsId[num];
				new Ajax_request(
					url_ajax,
					{
						method:'post',
						params:'',
						onSuccess:function(xhr) {
							Element.update(div_dest, trim(xhr.responseText)); /* cf. prototype.js */
						},
						async:true
					}
				);
			}
		} catch(err){
			alert('selectAndUpdateView error - num ='+num+',url_ajax'+url_ajax);/* erreur */
		}
	},
	
/* ********************************************* */	
	checkForm : function (bAlert) {
		var form_id = this.formID;
		var obj_form=document.getElementById(form_id);
		var result=false;
		
		// retrait de l'obligation de specifier un type de structure
		return true;
		
		if (obj_form) {
			nb_elements = obj_form.elements.length;
			for (i=0;i<nb_elements;i++) {
				curelement =  obj_form.elements[i];
				if (curelement.name && curelement.name.length > 2 ) {
					switch (obj_form.elements[i].name.substr(0, 3)) {
						// Structure
						case ('iST'):
							if (obj_form.elements[i].checked) result=true;
							break;
					} // FIN SWITCH
				}
			}
		}
		if (!result && bAlert) {
			alert(this.msgInvalidFormStructure)
		}
		return result;
	},

	getUrlArgsFromFinderForm : function (form_id){
		var params = this.getFieldsFromFinderForm(form_id)
		return this.serializeFieldsFromFinderForm(params);
	},
	encode_url_param_value : function (value){
		//return escape(value);
		if ('string' == typeof value) return value.replace('=','%3D');
		else return value;
	},
	serializeFieldsFromFinderForm: function (params) {
		var args='';
		
		if (params) {
			for (var fieldname in params) {
				if (null != fieldname && null != params[fieldname] && ('function' != typeof params[fieldname])) {
					if (args.length > 0) args+=this.fieldsSeparator;
					args+=fieldname+'=';
					var cur_param = params[fieldname];
					if (is_array(cur_param)) {
						fparams_c = cur_param.length;
						if (fparams_c > 0) {
							args+=this.encode_url_param_value(cur_param[0]);
							if (fparams_c > 1) {
								for (fpi=1;fpi<fparams_c;fpi++) {
									args+=this.valuesSeparator+this.encode_url_param_value(cur_param[fpi]);
								}
							}
						}
					} else {
						args+=this.encode_url_param_value(params[fieldname]);
					}
				}
			}
		}
		if (sbp_error_trace == true) alert (args);
		return args;
	},
	
	getFieldsFromFinderForm : function (form_id){
		var obj_form=document.getElementById(form_id);
		var form_params = new Array();
		
		var iStrucType = new Array();
		var iDept = new Array();
		var iCityInsee = new Array();
		
		var sPromoReducScale = new Array();
		var sPromoTypeCode = new Array();
		var iPromoGE = '';
		var iPromoSP = '';
		var iPrixMin = '';
		var iPrixMax = '';
		var iPrixSearch = '';
		
		var iPromoReducSP = '';
		var iPromoPrixSP = '';
		
		if (obj_form) {
			nb_elements = obj_form.elements.length;
			for (i=0;i<nb_elements;i++) {
				curelement =  obj_form.elements[i];
				if (curelement.name && curelement.name.length > 2 ) {
					switch (curelement.name.substr(0, 3)) {
							// Structure
							case ('iST'):
								if ('checkbox' == curelement.type && curelement.checked) iStrucType.push(curelement.value);
								break;
							// Zones
							case ('iDe'): 
								if ('checkbox' == curelement.type && curelement.checked && curelement.value != 0) iDept.push(curelement.value);
								break;
							// City
							case ('iCi'):
									iCityInsee.push(curelement.value);
								break;
							// promo string
							case ('sPr'): 
									if ( 0 == curelement.name.indexOf('sPromoReducScale')) {
										if ('checkbox' == curelement.type && curelement.checked) sPromoReducScale.push(curelement.value);
									} else if ( 0 == curelement.name.indexOf('sPromoTypeCode')) {
										if ('checkbox' == curelement.type && curelement.checked) sPromoTypeCode.push(curelement.value); //sPromoTypeCode.push(escape(curelement.value));
									}
								break;
							// promo entier ou boolean
							case ('iPr') :
								if ('checkbox' == curelement.type && curelement.checked) {
									if ( 0 == curelement.name.indexOf('iPromoGE')) {
										iPromoGE += curelement.value;
									} else if ( 0 == curelement.name.indexOf('iPromoSP')) {
										iPromoSP += curelement.value;
									} else if ( 0 == curelement.name.indexOf('iPromoReducSP')) {
										if ('checkbox' == curelement.type && curelement.checked) iPromoReducSP=curelement.value;
									}  else if ( 0 == curelement.name.indexOf('iPromoPrixSP')) {
										if ('checkbox' == curelement.type && curelement.checked) iPromoPrixSP=curelement.value;
									}
								}
								/* partie prix  */
								if ( 0 == curelement.name.indexOf('iPrixMin')) {
									iPrixMin += curelement.value;
								} else if ( 0 == curelement.name.indexOf('iPrixMax')) {
									iPrixMax += curelement.value;
								} else if ( 0 == curelement.name.indexOf('iPrixSearch')) {
									iPrixSearch += curelement.value;
								}
								break;
					} // FIN SWITCH
				}
			}
			// ARGS
			if (iStrucType .length!=0) form_params['iStrucType'] = iStrucType; //implode(',',iStrucType);
			if (iDept .length!=0) form_params['iDept'] = iDept; //implode(',',iDept);
			if (iCityInsee.length!=0) form_params['iCityInsee'] = iCityInsee ; //implode(',',iCityInsee);
			
			//if (iPromoSP.length!=0) form_params['iPromoSP'] = iPromoSP ; // cf. iPromoReducSP et iPromoPrixSP

			if (iPrixSearch.length!=0) form_params['iPrixSearch'] = iPrixSearch ;
			if (iPrixSearch.length!=0 && '1'==iPrixSearch) {
				if (iPrixMin.length!=0) form_params['iPrixMin'] = iPrixMin ;
				if (iPrixMax.length!=0) form_params['iPrixMax'] = iPrixMax ;
				if (iPromoPrixSP.length!=0) form_params['iPromoSP'] = iPromoPrixSP;
			} else {
				if (iPromoGE.length!=0) form_params['iPromoGE'] = iPromoGE ;
				if (sPromoReducScale.length!=0) form_params['sPromoReducScale'] = sPromoReducScale;
				if (sPromoTypeCode.length!=0) form_params['sPromoTypeCode'] = sPromoTypeCode;
				if (iPromoReducSP.length!=0) form_params['iPromoSP'] = iPromoReducSP;
			}
		} // FIN IF
		return form_params;
	},
	
/* ***************************************************** */
	onCriteriaSelected : function (pSrcObj) {
		/* traitement du changement de valeur du critere*/
		if (pSrcObj && pSrcObj.id) {
			//alert("pSrcObj.id="+pSrcObj.id);
			if ('iDepts' == pSrcObj.id.substr(0, 6)) {
				this.validiDepts(pSrcObj);
			}else if ('iCity' == pSrcObj.id.substr(0, 5)) {
				this.validiCity();
			}
		}
		/* recherche */
		if (true === this.directdisplay) {
			this.refreshSearch(true);
		} else {
			this.refreshNbResult();
		}
	},
	
	validiDepts : function (pSrcObj) {
		var tabControls = new Array(window.document.getElementById('iDepts0'),window.document.getElementById('iDepts1'),window.document.getElementById('iDepts2'),window.document.getElementById('iDepts3'),window.document.getElementById('iDepts4'));
		var bretagne_checked = (true == tabControls[0].checked);
		var evt_bretagne_selection = (pSrcObj && 'iDepts0' == pSrcObj.id && bretagne_checked);
		/* region bretagne qui vient d'etre selectionne */
		if (evt_bretagne_selection) { 
			for (i=1; i<tabControls.length; i++) {tabControls[i].checked = true;}
		}
		/* on decoche bretagne si un departement n'est pas selectionne */
		if (bretagne_checked) {
			var uncheck_bretagne=false;
			for (i=1; i<tabControls.length; i++) {if (false == tabControls[i].checked) uncheck_bretagne=true;}
			if (uncheck_bretagne) tabControls[0].checked = false;
		}
		/* de-selection de la ville */
		try {
			var selectCity = window.document.getElementById('iCity');
			if (selectCity) selectCity.selectedIndex=0;
			} catch(err){}
		// CALL AJAX
		this.onCriteriaSelected();
	},
	
	validiCity : function() {
		var tabControls = new Array(window.document.getElementById('iDepts0'),window.document.getElementById('iDepts1'),window.document.getElementById('iDepts2'),window.document.getElementById('iDepts3'),window.document.getElementById('iDepts4'));
		
		//if (window.document.getElementById('iCity').value != '00000') {
		//	for (i=0; i<tabControls.length; i++) {tabControls[i].disabled='disabled';tabControls[i].checked=false;}	
		//}else {
			for (i=0; i<tabControls.length; i++) {
				tabControls[i].disabled='';
				tabControls[i].checked=false;
			}
		//}
		
		// CALL AJAX
		this.onCriteriaSelected();
	},
	
	// Exec onChange
	refreshNbResult : function() {
		this.getNbResult();
		// IL FAUDRAIT UN FONCTIONNEMENT SPECIAL EN MODE (CARTE) CAD recalculer la carte et le nb de resultat en //.
	},
	
	CB_refreshNbResult : function(xhr, cur_url) {
		var val = trim(xhr.responseText);
		
		if (cur_url == this.last_url) {
			butSearchObj = document.getElementById(this.butSearchID);
			but_content = this.prefixBt + ' '+ val + ' ' +this.sufixBt;
			if (butSearchObj) {
				if ('input' == butSearchObj.nodeName) butSearchObj.value = but_content;
				else butSearchObj.innerHTML = but_content;
			}
		} else
			// Seule la derniere demande est pris en compte et affiche
			if (sbp_error_trace == true) alert ('Requete non pris en compte / ' + cur_url);
	},
	
	getNbResult : function() {
		if (this.formID) {
			var args_s = this.getUrlArgsFromFinderForm(this.formID);
			var obj = this;
			var cur_url = this.urlsearchNb+'&'+args_s;
			
			var cb = function(xhr) { sbp_thisCB_refreshNbResult(obj,xhr,cur_url)};
			//var cb = this.CB_refreshNbResult() 
			
			// Sauvegarde du dernier appel AJAX
			this.last_url = cur_url;
			this.search(cur_url, cb);
		}
	},
/* ***************************************************** */	
	
	updateSearchURL : function (url) {
		var divTmp = this.getCurrentDivIdResult();
		
		if (url) {
			sbp_addWaitMsgToDiv(divTmp);
			try {window.scrollTo(0,0);} catch(err){} /* scroll on top by default */
			this.getSearch(url);
		}
		
	},

/* ***************************************************** */	

	// Lance la recherche
	refreshSearch : function (recordStats) {
		if (true === this.delayedsearch) {
			var refreshSearchThis = this;
			var idrequest = this.generateNewIdRequest();
			setTimeout(function() { refreshSearchThis.refreshSearchDelayed(recordStats,idrequest); }, 1400);
		} else {
			this.refreshSearchNow(recordStats);
		}
	},
	
	refreshSearchDelayed : function (pRecordStats,pIdrequest) {
		//alert('pIdrequest='+pIdrequest+', lastIdRequest='+this.getLastIdRequest())
		if (this.getLastIdRequest() == pIdrequest) {
			this.refreshSearchNow(pRecordStats);
		}
	},
	generateNewIdRequest : function (pRecordStats,pIdrequest) {
		return ++this.lastIdRequest;
	},
	getLastIdRequest : function () {
		return this.lastIdRequest;
	},
	
	refreshSearchNow : function (recordStats) {
		var divTmp = this.getCurrentDivIdResult();
		if (this.checkForm(true)) {
			sbp_setHideDiv(this.divIDGlobalContainer,false);
			sbp_setHideDiv(this.divIDSheetContainer,true);
			
			try {window.scrollTo(0,0);} catch(err){} /* scroll on top by default */
			
			// Record on Stats
			if (recordStats == true) this.recordSearch();
			
			if (this.modeResult != 1) { /* si pas carto */
				sbp_addWaitMsgToDiv(divTmp);
				this.getSearch();
			} else {
				if (this.fonc_search_carto) {
					/* carto a faire */
					//var args_s = this.getUrlArgsFromFinderForm(this.formID);
					var params = this.getFieldsFromFinderForm(this.formID);
					var args_s = this.serializeFieldsFromFinderForm(params);
					try {
						if (gm) {
							var tmp_mdrgeoloc = gm.getVar('mdrgeoloc');
							//alert('get gm.getVar(\'mdrgeoloc\')='+tmp_mdrgeoloc+',params[\'iCityInsee\']='+params['iCityInsee']);
							if ('00000'!=params['iCityInsee'] && ''!=params['iCityInsee']) {
								tmp_mdrgeoloc.setLastSearch(params['iCityInsee'],'city');
							} else if (''!=params['iDept'] && params['iDept'].indexOf(',',0) < 0) {
								tmp_mdrgeoloc.setLastSearch(params['iDept'],'dept');
							}
						}
					}catch(err){}
					this.fonc_search_carto(this.urlsearchMap+'&'+args_s);
					//this.fonc_search_carto(this.urlsearchMap);
				}
			}
		}
	},
	
	recordSearch : function () {
		// STATS on Search
		if (gm) {
			var googleStats = gm.getVar('googleStats');
			
			if (googleStats != null && googleStats.getInit() == true){
				// Init Vals
				var params = this.getFieldsFromFinderForm(this.formID);
				var result_serialized = this.serializeFieldsFromFinderForm(params)
				
				if (params) {
					for (var fieldname in params) {
						if (null != fieldname && null != params[fieldname] && ('function' != typeof params[fieldname])) {
							var cur_param = params[fieldname];
							if (is_array(cur_param)) {
								fparams_c = cur_param.length;
								if (fparams_c > 0) {
									for (fpi=0;fpi<fparams_c;fpi++) {
										value = cur_param[fpi];
										var fn = fieldname;
										if ('iStrucType' == fieldname) {
											try {
												fn='sStrucType';
												value=this.googleStatsCatName[cur_param[fpi]];
											}catch(err){}
										}
										if ('iCityInsee' == fieldname && '00000' != value && isset(value)) { /* on on doit prendre en compte le parametre */
											googleStats.trackEvent('Research', fn+'='+value, result_serialized);
										}
									}
								}
							} else {
								googleStats.trackEvent('Research', fieldname, params[fieldname], result_serialized);
							}
						}
					}
				}
			}
		}
	},
	
	CB_refreshSearch : function(xhr) {
		// AFFICHAGE DU RESULTAT OBTENU
		var val = trim(xhr.responseText);
		var id_dest = this.getCurrentDivIdResult ();
		var obj_dest = document.getElementById(id_dest);
		
		// Sauvegarde des arguments affiche en fonction du DIV		
		this.searchArgs[this.modeResult] = this.getUrlArgsFromFinderForm(this.formID);
		
		if (this.modeResult != 1) {
			//setInnerHTML(obj_dest, val);
			// Utilisation de prototype.js car execution des Scripts
			Element.update(this.divID_result, val);
		} else {
			/* traiter la carto fait dans mbr_geoloc.js */ 
		}
	},
	
	getSearch : function(url) {
		var args_s = '';
		var obj = this;
		var cb = function(xhr) { sbp_thisCB_searchResult(obj,xhr) };
		var urlTmp = '';
		
		if (this.formID) {
			
			if (!url)
				args_s = this.getUrlArgsFromFinderForm(this.formID);
			else
				args_s = url;
		
			if (sbp_error_trace == true) alert ('url::'+ url +'Args::' + args_s);
		
			// EN FONCTION DU MODE, IL FAUT savoir quelLE URL 
			//	this.urlsearchMap = ''; // MODE 1
			//  this.urlsearchNb = ''; // MODE 0
			if (this.modeResult == 0) urlTmp = this.urlsearchList+'&'+ args_s;
			else urlTmp = this.urlsearchMap+'&'+ args_s;
			
			if ( urlTmp.length != 0 )
				this.search( urlTmp , cb );
		}
	},
	
	
	
/* ***************************************************** */	
	
	/** 
	Lance une recherche
	**/
	search : function (url, callback, callback_args) {
		this.res_url = url;
		this.callback = callback;
		this.callback_args = callback_args;
		var obj = this;
		
		if (document.all) obj.processRes();
		else setTimeout(function(thisObj) { thisObj.processRes(); }, 10, this);
	},
	
	processRes : function () {
		//recupere l'ID de la branche selectionne
		var url = this.res_url;
		if (sbp_error_trace == true) alert('AJAX url='+url);
		//var processRes_obj = this;
		new Ajax_request(
			url,
			{
				method:'post',
				params:'',
				onSuccess:this.callback,
				async:true
			}
		);			
		//this.res_url='';	
	}
	
}//-------------------------------------------------------------------------------------- FIN CLASSE

/* **************************************** */

// Fonction passe a la bibliotheque AJAX
sbp_thisCB_refreshNbResult = function(obj,xhr,urlreq) {
	obj.CB_refreshNbResult(xhr,urlreq);
}

// Fonction passe a la bibliotheque AJAX
sbp_thisCB_searchResult = function(obj,xhr) {
	obj.CB_refreshSearch(xhr);
}

/* **************************************** */
function trim (aString) {
	var tmp = ltrim(aString);
	return rtrim(tmp);
}

// Supprime les espaces inutiles en debut de la chaîne passee en parametre.
function ltrim(aString) {
	var regExpBeginning = /^\s+/;
    return aString.replace(regExpBeginning, "");
}
// Supprime les espaces inutiles en fin de la chaîne passee en parametre.
function rtrim(aString) {
	var regExpEnd       = /\s+$/;
    return aString.replace(regExpEnd, "");
}
/* **************************************** */

sbp_addWaitMsgToDiv = function(id_div,msg) {
			div_obj = document.getElementById(id_div);
			if (div_obj) {
				if (! msg) msg=" loading ...";
				div_obj.innerHTML = "<div class='loading'><table style='text-align:center;width:100%;height:100px;'><tr><td>"+msg+"</td></tr></table></div>";
			}
}

/* FUNCTION : recupere le formulaire  et lance l'affichage de ce dernier 
gl_getSpecForm = function(url_get,id_select,id_dest) {
	var obj_dest = document.getElementById(id_dest);
	var objet_select = document.getElementById(id_select);
	
	if (objet_select && url_get && obj_dest) {
		var reqGetForm = new Ajax_request(url_get,
			{
				method:'post',
				params:objet_select.name+'='+objet_select.value,
				onSuccess:gl_updateSpecForm = function(xhr) {
					//var obj_dest = document.getElementById(id_dest);
					//setInnerHTML(obj_dest,xhr.responseText);
					// Conf prototype.js (probleme avec MOTEUR AJAX)
					Element.update(this.divID_result, val);
				},
				async:true
			});
		/*if ('' != reqGetForm.responseText) {
			setInnerHTML(obj_src,reqGetForm.responseText);
		}
	}
}
*/


/* FUNCTION : teste si une variable est initialisee */
function isset(variable_name)
{
	try
	{
		if (typeof(eval(variable_name)) != 'undefined')
		if (eval(variable_name) != null)
		return true;
	} catch(e) { }
	return false;
}

/* FUNCTION : implode un tableau  */
function implode(sep, p) {
    implode_result  = null; 
	if (p.length > 0) {
		implode_result += p[0];
	    for(c = 1 ; c < p.length ; c++) {
	        if (null != p[c]) 
				implode_result += sep + p[c];
	    }
	}
    return implode_result;
}

function is_array( object ) {
	return object != null && typeof object == "object" &&'splice' in object && 'join' in object;
}

/* FUNCTION : efface le options de l'objet Select */
sbp_selectValueOption = function (selectObject,value)
{
	var indexSearch=0;
	if (selectObject) {
		// on laisse la premiere option qui la valeur par defaut
		var taille = selectObject.options.length;
		for(var i=1;i <(taille);i++){
			if (!selectObject.options[i]) break; /* on s'arrete au 1er null */
			if (value == selectObject.options[i].value) indexSearch=i;
		}
		selectObject.selectedIndex = indexSearch;
	}
	return indexSearch;
}

sbp_setHideDiv = function (div_id,hide) {
	try {
		if ('' != div_id) {
			//var obj = document.getElementById(div_id);
			//alert('div_id='+div_id+',obj='+obj);
			if (hide) $(div_id).hide(); /* cf. prototype.js */
			else $(div_id).show();
		}
	}catch(err) {
		alert('merde');
	}
}

/* **************************************** 
* Author : AFG
* DATE: 18-02-2008
* Description: Adaptation des tabs (source:www.dhtmlgoodies.com) pour le module bons plans
*/

// TABS POUR Site BONS PLANS
	
	var sbp_textPadding = 3; // Padding at the left of tab text - bigger value gives you wider tabs
	var sbp_strictDocType = true; 
	var sbp_tabView_maxNumberOfTabs = 6;	// Maximum number of tabs
	
	var sbp_nbTabs = 0;	// number of tabs
	
	/* Don't change anything below here */
	var sbp_dhtmlgoodies_tabObj = new Array();
	var sbp_activeTabIndex = new Array();
	var sbp_MSIE = navigator.userAgent.indexOf('MSIE')>=0?true:false;
	
	var sbp_ajaxObjects = new Array();
	var sbp_tabView_countTabs = new Array();
	var sbp_tabViewHeight = new Array();
	

	var sbp_ieversion=-1;
	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x;
		sbp_ieversion=new Number(RegExp.$1) // capture x.x portion and store as a number
	}
	
	//var sbp_tabDivCounter = 0;
	//var closeImageHeight = 8;	// Pixel height of close buttons
	//var closeImageWidth = 8;	// Pixel height of close buttons

	function sbp_initTabs (mainContainerID,tabTitles,activeTab,width,height) {
		
			sbp_dhtmlgoodies_tabObj[mainContainerID] = document.getElementById(mainContainerID);
			width = width + '';
			if(width.indexOf('%')<0) width= width + 'px';
			sbp_dhtmlgoodies_tabObj[mainContainerID].style.width = width;
						
			height = height + '';
			if(height.length>0){
				if(height.indexOf('%')<0)height= height + 'px';
				sbp_dhtmlgoodies_tabObj[mainContainerID].style.height = height;
			}

			sbp_tabViewHeight[mainContainerID] = height;
			
			var tabDiv = document.createElement('DIV');		
			var firstDiv = sbp_dhtmlgoodies_tabObj[mainContainerID].getElementsByTagName('DIV')[0];	
			
			sbp_dhtmlgoodies_tabObj[mainContainerID].insertBefore(tabDiv,firstDiv);	
			tabDiv.className = 'dhtmlgoodies_tabPane';			
			sbp_tabView_countTabs[mainContainerID] = 0;	
		
		
		var percentpertab = 0;
		if (tabTitles.length > 0) percentpertab = 100 / tabTitles.length;
		/* boucle sur les onglets */
		for(var no=0; no<tabTitles.length;no++){
			var aTab = document.createElement('DIV');
			// Creation des DIV
			/* conteneur de l'onglet */
			aTab.id = 'tabTab' + mainContainerID + "_" +  (no + sbp_tabView_countTabs[mainContainerID]);
			aTab.onmouseover = rolloverTab;
			aTab.onmouseout = rolloutTab;
			aTab.onclick = sbp_tabClick;
			aTab.className='tabInactive';
			if (percentpertab>0) aTab.style.width = percentpertab+'%';
			tabDiv.appendChild(aTab);
			sbp_nbTabs++;
			
			/* conteneur du bord gauche */
			try {
				var img = document.createElement('IMG');
				img.valign = 'bottom';
				img.src = images_path  + 'sitebonsplans/tabs/'; //IMG - var globale 'images_path'
				if (0 == no) { /* si dernier onglet */
					img.src += 'tab_bl_inactive_b.png'; //IMG BORD GAUCHE INACTIF - SUR ONGLET LIMIT GAUCHE
				} else {
					img.src += 'tab_bl_inactive.png'; //IMG BORD GAUCHE INACTIF
				}
				// IE5.X FIX
				if((sbp_ieversion > 0  && sbp_ieversion < 6) || (sbp_ieversion > 0 && !sbp_strictDocType)){
					img.style.styleFloat = 'none';
					img.style.position = 'relative';	
					img.style.top = '4px'
					span.style.paddingTop = '4px';
					aTab.style.cursor = 'hand';
				}	// End IE5.x FIX
				aTab.appendChild(img);
			}catch(err){alert('cbg - err='+err);}
			
			/* conteneur du titre */
			var span = document.createElement('SPAN');
			span.innerHTML = tabTitles[no];
			span.style.position = 'relative';
			aTab.appendChild(span);
			
			/* conteneur du bord droit */
			try {
				var img = document.createElement('IMG');
				img.valign = 'bottom';
				// IE X FIX
				if (sbp_ieversion > 0) img.style.styleFloat = 'right';
				else {img.style.cssFloat='right';}
				img.src = images_path  + 'sitebonsplans/tabs/'; //IMG - var globale 'images_path'
				if ((no+1) == tabTitles.length) { /* si dernier onglet */
					img.src += 'tab_br_inactive_b.png'; //IMG BORD DROIT INACTIF  - SUR ONGLET LIMIT DROIT
				} else {
					img.src +='tab_br_noborder.png'; // pas de bord droit
				}
				// IE5.X FIX
				if((sbp_ieversion > 0  && sbp_ieversion < 6) || (sbp_ieversion > 0 && !sbp_strictDocType)){
					img.style.styleFloat = 'none';
					img.style.position = 'relative';	
					img.style.top = '4px'
					span.style.paddingTop = '4px';
					aTab.style.cursor = 'hand';
				}	// End IE5.x FIX
				aTab.appendChild(img);
			}catch(err){alert('cbd - err='+err);}
		}
		
		var tabs = sbp_dhtmlgoodies_tabObj[mainContainerID].getElementsByTagName('DIV');
		var divCounter = 0;
		for(var no=0;no<tabs.length;no++){
			if(tabs[no].className=='dhtmlgoodies_aTab' && tabs[no].parentNode.id == mainContainerID){
				if(height.length>0)tabs[no].style.height = height;
				tabs[no].style.display='none';
				tabs[no].id = 'tabView' + mainContainerID + "_" + divCounter;
				divCounter++;
			}			
		}	
		sbp_tabView_countTabs[mainContainerID] = sbp_tabView_countTabs[mainContainerID] + tabTitles.length;	
		sbp_showTab(mainContainerID, activeTab);

		return activeTab;
	}
	
	function sbp_tabClick()
	{
		var idArray = this.id.split('_');
		var selectedMode = idArray[idArray.length-1].replace(/[^0-9]/gi,'');
		var checked = false;
		
		if (sbp_error_trace == true) alert (this.parentNode.parentNode.id +' / ' + idArray[idArray.length-1].replace(/[^0-9]/gi,''));
		
		// gestion de GM
		if (gm) {
			var finder = gm.getVar('finder');
			// == DEBUT CORRECTION == Ticket #1706 == PPLESSIS -BMOREAU == 04032009
			if (finder && (finder.checkForm(true) || false == finder.needRefresh()) ) {
				checked = true;
				finder.setModeResult(selectedMode);
				
				//if (gm.getVar('finder').needRefresh() == true) gm.getVar('finder').refreshSearch(false);
				if (selectedMode == 1) {
					//debugger;
					finder.refreshSearchNow(false);
				} else if (finder.needRefresh() == true) { 	
					finder.refreshSearchNow(false);
				}
			}
			// == FIN DE CORRECTION ==
		}
		if (checked) sbp_showTab(this.parentNode.parentNode.id, idArray[idArray.length-1].replace(/[^0-9]/gi,''));
	}
	
	function rolloverTab()
	{
		/*if(this.className.indexOf('tabInactive')>=0) {
			this.className='inactiveTabOver';
			var img = this.getElementsByTagName('IMG')[0];
			if(img.src.indexOf('tab_')<=0)img = this.getElementsByTagName('IMG')[1];
			img.src = images_path  + '/tab_right_over.gif';
		}*/
	}
	
	function rolloutTab()
	{
		/*if(this.className ==  'inactiveTabOver'){
			this.className='tabInactive';
			var img = this.getElementsByTagName('IMG')[0];
			if(img.src.indexOf('tab_')<=0)img = this.getElementsByTagName('IMG')[1];
			img.src = images_path  + 'tab_right_inactive.gif';
		}*/
	}
	
	
	function sbp_showTab(parentId, tabIndex)
	{
		//alert('parentId='+parentId+',tabIndex='+tabIndex);
		/* contient l'index de l'onglet actif courant */
		var index_cur_tab = sbp_activeTabIndex[parentId] ;
		var parentId_div = parentId + "_";
		var img_path_base = images_path  + 'sitebonsplans/tabs/'; //IMG - var globale 'images_path'
		if(!document.getElementById('tabView' + parentId_div + tabIndex)){
			return;
		}
		if(index_cur_tab>=0){
			if(index_cur_tab==tabIndex){
				return;
			}
	
			var obj = document.getElementById('tabTab'+parentId_div + index_cur_tab);
			
			obj.className='tabInactive';
			var imgIndex=0;
			var tab_images = obj.getElementsByTagName('IMG');
			try {
				/* conteneur du bord gauche */
				var img = tab_images[imgIndex];
				if(img.src.indexOf('tab_')==-1) img = tab_images[++imgIndex];
				if (0 == index_cur_tab) {
					img.src = img_path_base  + 'tab_bl_inactive_b.png'; //IMG BORD GAUCHE INACTIF  - SUR ONGLET LIMIT GAUCHE
				} else {
					img.src = img_path_base  + 'tab_bl_inactive.png'; //IMG BORD GAUCHE INACTIF
				}
			}catch(err){alert('cbg - err='+err);}
			
			/* conteneur du bord droit */
			try {
				var img = tab_images[++imgIndex];
				if(img.src.indexOf('tab_')==-1) img = tab_images[++imgIndex];
				if (sbp_nbTabs-1 == index_cur_tab) {
					img.src = img_path_base  + 'tab_br_inactive_b.png'; //IMG BORD DROIT INACTIF  - SUR ONGLET LIMIT DROIT
				} else {
					img.src = img_path_base  + 'tab_br_noborder.png'; // pas de bord droit
				}
			}catch(err){alert('cbd - err='+err);}
			document.getElementById('tabView' + parentId_div + sbp_activeTabIndex[parentId]).style.display='none';
		}
		
		var thisObj = document.getElementById('tabTab'+ parentId_div +tabIndex);	
			
		thisObj.className='tabActive';
		
		/* images */
		imgIndex=0;
		tab_images = thisObj.getElementsByTagName('IMG');
		try {
			/* conteneur du bord gauche */
			var img = tab_images[imgIndex];
			if(img.src.indexOf('tab_')==-1) img = tab_images[++imgIndex];
			if (0 == tabIndex) {
				img.src = img_path_base  + 'tab_bl_active_b.png'; //IMG BORD GAUCHE ACTIF  - SUR ONGLET LIMIT GAUCHE
			} else {
				img.src = img_path_base  + 'tab_bl_active.png'; //IMG BORD GAUCHE ACTIF
			}
		}catch(err){alert('cbg - err='+err);}
		
		/* conteneur du bord droit */
		try {
			var img = tab_images[++imgIndex];
			if(img.src.indexOf('tab_')==-1) img = tab_images[++imgIndex];
			if (sbp_nbTabs-1 == tabIndex) {
				img.src = img_path_base  + 'tab_br_active_b.png'; //IMG BORD DROIT ACTIF  - SUR ONGLET LIMIT DROIT
			} else {
				img.src = img_path_base  + 'tab_br_noborder.png'; // pas de bord droit
			}
		}catch(err){alert('cbd - err='+err);}
			
		
		document.getElementById('tabView' + parentId_div + tabIndex).style.display='block';
		sbp_activeTabIndex[parentId] = tabIndex;
		
		/*
		var parentObj = thisObj.parentNode;
		var aTab = parentObj.getElementsByTagName('DIV')[0];
		countObjects = 0;
		var startPos = 0; // ancienne valeur 2
		var previousObjectActive = false;
		
		while(aTab){
			if(aTab.tagName=='DIV'){
				if(previousObjectActive){
					previousObjectActive = false;
					startPos-=2;
				}
				if(aTab==thisObj){
					startPos-=2;
					previousObjectActive=true;
					setPadding(aTab,sbp_textPadding+1);
				}else{
					setPadding(aTab,sbp_textPadding);
				}
				
				aTab.style.left = startPos + 'px';
				countObjects++;
				startPos+=2;
			}			
			aTab = aTab.nextSibling;
		}*/
		
		return;
	}

/* ******************* GOOGLE ANALYTICS **********************/
var GoogleTracker = function(pidGoogle) {

	this.idGoogle = pidGoogle;
	this.init = false;
	this.pageTracker = null;

	try{
		this.pageTracker = _gat._getTracker(this.idGoogle);
	
		this.pageTracker._setClientInfo(true);
		this.pageTracker._trackPageview();
			
		this.init = true;
		} 
	catch(err) {
		this.init = false;
	}
}

GoogleTracker.prototype = { 
		getInit : function () {
			return this.init;
		},
		getIdGoogle : function () {
			return this.idGoogle;
		},
		stopStats : function (){
			this.init = false;
		},
		trackEvent : function (category, action, label, value ) {
			if (value || null == value) {
				value=0;
			}
			if (this.init == true) {
				if (sbp_trace_google_analytics == true) alert ( 'id GOOGLE: ' + this.getIdGoogle() + ' category:: ' + category + ', action:: '+ action + ', label:: '+ label + ', value::'+value);
				if (this.pageTracker._trackEvent(category, action, label, value) == true) {
					if (sbp_trace_google_analytics == true) alert ('Envois vers GOOGLE Analytics -> OK');
				} else if (sbp_trace_google_analytics == true) alert ('Envois vers GOOGLE Analytics -> KO');
			}
		}
		
}
/* ******************* FIN PARTIE GOOGLE ANALYTICS **********************/
