// +----------------------------------------------------------------------+
// | JAVASCRIPT                                                           |
// +----------------------------------------------------------------------+
// | Copyright (c) 2003-2008 ALCIIP                                       |
// +----------------------------------------------------------------------+
// | Authors: David Essayan <david@alciip.com>                            |
// | Authors: David Essayan <david@alciip.com> Original Author            |
// +----------------------------------------------------------------------+
// | Creation date : 22/04/2008                                           |
// | Last Modified : 22/04/2008                                           |
// | Version : 1.0                                                        |
// +----------------------------------------------------------------------+

// Variables non-customisables

var http_request 			= new Array;
var ajaxResult 				= '';					// Stocke le résultat d'une requête AJAX
var tabFieldsState			= new Array;			// Stocke les états de validation des différents champs

var tabLayers				= new Array;
tabLayers['sent']			= new Array;
tabLayers['form']			= new Array;

// Variables customisables

var noneedFieldsInvalidImg	= true;
var formName 				= "tab_form";			// Définit l'ID du formulaire ou de son conteneur

tabLayers['sent'][1]	 	= "lay_send_succes";	// Stocke l'ID du layer affichant le message de succès après envoi	
tabLayers['sent'][0] 		= "lay_send_echec";		// Stocke l'ID du layer affichant le message d'echec après envoi	
tabLayers['form'][1] 		= "lay_form_succes";	// Stocke l'ID du layer affichant le message de succès après test des champs	
tabLayers['form'][0] 		= "lay_form_echec";		// Stocke l'ID du layer affichant le message d'echec après test des champs	

// Définition des champs et de leur caractéristiques

var	nbrFields				= 7;
var tabFields				= new Array;	

for(var i=1;i<=nbrFields;i++){
	tabFields[i] = new Array;
}

tabFields[1]['name']		= "WSFORM_nom_perso";
tabFields[2]['name']		= "WSFORM_prenom_perso";
tabFields[3]['name']		= "WSFORM_societe";
tabFields[4]['name']		= "WSFORM_email_perso";
tabFields[5]['name']		= "WSFORM_tel_domicile_perso";
tabFields[6]['name']		= "WSFORM_message";
tabFields[7]['name']		= "WSFORM_action";

tabFields[1]['need']		= 1;
tabFields[2]['need']		= 1;
tabFields[3]['need']		= 0;
tabFields[4]['need']		= 1;
tabFields[5]['need']		= 0;
tabFields[6]['need']		= 1;
tabFields[7]['need']		= 0;

// Types possibles : normal, specific, hidden, email

tabFields[1]['type']		= "normal";
tabFields[2]['type']		= "normal";
tabFields[3]['type']		= "normal";
tabFields[4]['type']		= "email";
tabFields[5]['type']		= "normal";
tabFields[6]['type']		= "normal";
tabFields[7]['type']		= "hidden";

// Définition des fichiers 

var urlFileSender 			= "../checkformulaire.php";					// Stocke le chemin vers le fichier d'envoi du formulaire

tabFields[1]['file']		= '';
tabFields[2]['file']		= '';
tabFields[3]['file']		= '';
tabFields[4]['file']		= '../checkmail.php';
tabFields[5]['file']		= '';
tabFields[6]['file']		= '';
tabFields[7]['file']		= '';

var imgLoader				= "../images/pictos-form/mini-loader.gif"; 	// Stocke le chemin vers l'image du loader
var imgValid 				= "../images/pictos-form/green-cross.gif";	// Stocke le chemin vers l'image de validation
var imgInvalid 				= "../images/pictos-form/red-cross.gif";		// Stocke le chemin vers l'image d'erreur

var borderEmptyField		= "2px solid #CE2221";
var borderPopulateField		= "1px solid #666666";

/* --------------------------------------------------------------------- */
/* --------- FONCTIONS PERSONNALISABLES -------------------------------- */
/* --------------------------------------------------------------------- */

// Cette fonction contrôle le champ, affiche l'image correspondante au résultat et met à jour le tableau d'états
// @param string field 	-> Correspond au champ courant à traiter

function displayResultSpecific(field){

	// On recherche l'indice du champ courant
	
	var indField = findFieldNumber(field);

	// Téléphone

	if(field == "tel"){
		var telString = document.getElementById('form_'+field).value;
		if(!isNaN(telString) && telString != '' && telString.length == 10){
			tabFieldsState[field] = 1;
			document.getElementById('img_'+field).src=imgValid;
		}else{
			tabFieldsState[field] = 0;
			if(tabFields[indField]['need'] == 1 || (tabFields[indField]['need'] == 0 && noneedFieldsInvalidImg == true)){
				document.getElementById('img_'+field).src=imgInvalid;
			}else{
				document.getElementById('img_'+field).style.display="none";
			}
		}
	}
	
	// Département
	
	if(field == "departement"){
		if(ajaxResult != 'false' && ajaxResult != 'true' && ajaxResult != ''){
			var tabResult = ajaxResult.split(';');
			var stringResult = '<div style=color:#E93388"; font-weight:bold;">Choisir un département :</div>';
			for(var i=0;i<tabResult.length;i++){
				stringResult += '<a href="javascript:setDepartement(\''+tabResult[i]+'\')">';
				stringResult += tabResult[i];
				stringResult += '</a>';
				stringResult += (tabResult[i+1])?'<br />':'';
			}
			document.getElementById('lay_'+field).innerHTML = stringResult;
			document.getElementById('lay_'+field).style.display = 'block';
			document.getElementById('img_'+field).style.display = 'none';
		}else{ 
			if(ajaxResult == 'false'){
				tabFieldsState[field] = 0;
				document.getElementById('lay_'+field).style.display = 'none';
				document.getElementById('img_'+field).src=imgInvalid;
			}else{
				tabFieldsState[field] = 1;
				document.getElementById('lay_'+field).style.display = 'none';
				document.getElementById('img_'+field).src=imgValid;
			}
		}
	}
}

function setDepartement(string){
	document.getElementById('form_departement').value = string;
	document.getElementById('img_departement').style.display = 'block';
	document.getElementById('img_departement').src = imgValid;
	document.getElementById('lay_departement').style.display = 'none';
	tabFieldsState["departement"] = 1;
}

/* --------------------------------------------------------------------- */
/* --------- DONT ALTER !!! -------------------------------------------- */
/* --------------------------------------------------------------------- */

function requestAjax(url,field,method) {

	// On recherche l'indice du champ courant
	
	var indField = findFieldNumber(field);
	
	// On déclare http_request à false

	http_request[field] = false;

	// Appel de l'objet pour navigateurs type Mozilla, Safari...

	if (window.XMLHttpRequest) { 
		http_request[field] = new XMLHttpRequest();
		if (http_request[field].overrideMimeType) {
			http_request[field].overrideMimeType('text/xml');
		}
	} 
	
	// Appel de l'objet ActiveX pour les navigateurs Internet Explorer
	
	else if (window.ActiveXObject) { 
		try {
			http_request[field] = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
			http_request[field] = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request[field]) {
		return false;
	}
	
	// Fonction éxécutée après requête
	http_request[field].onreadystatechange = function(){
		resultAjax(field,indField);
	}
	
	// Exécution de la requête
	
	if(method == 'GET'){
		http_request[field].open('GET', url, true);
		http_request[field].send(null);
	}
	if(method == 'POST'){
		var tabUrl = url.split('?');
		http_request[field].open('POST', tabUrl[0], true);
      	http_request[field].setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      	http_request[field].setRequestHeader("Content-length", tabUrl[1].length);
      	http_request[field].setRequestHeader("Connection", "close");
      	http_request[field].send(tabUrl[1]);
	}
}

function resultAjax(field,indField){
	if (http_request[field].readyState == 4) {
		if (http_request[field].status == 200) {
			var xmldoc = http_request[field].responseXML;
			var result = xmldoc.getElementsByTagName('response').item(0);
			ajaxResult = result.firstChild.data;
			if(field == 'form'){
				displayForm();
			}else{
				if(tabFields[indField]['type'] != 'specific'){
					displayResult(field);
				}else{
					displayResultSpecific(field);
				}
			}
		}		
	}
}

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('h 14(){j(a i=1;i<=k;i++){7(2[i][\'g\']!="s"&&(4.3(\'c\'+2[i][\'9\']).l!=\'\')){K(2[i][\'9\'])}}}h 10(){4.3(m[\'t\'][1]).8.b=\'o\';7(C==\'u\'){4.3(m[\'E\'][1]).8.b=\'r\'}f{4.3(m[\'E\'][1]).8.b=\'r\'}}h 11(y){7(y!=m[\'E\'][1]){j(a i=1;i<=k;i++){7(2[i][\'n\']==1){7(!d[2[i][\'9\']]||d[2[i][\'9\']]==0){4.3(\'c\'+2[i][\'9\']).8.D=13}f{4.3(\'c\'+2[i][\'9\']).8.D=R}}}}f{j(a i=1;i<=k;i++){7(2[i][\'g\']!="s"){4.3(\'c\'+2[i][\'9\']).8.D=R;4.3(\'c\'+2[i][\'9\']).l=\'\';4.3(\'e\'+2[i][\'9\']).8.b=\'o\'}}}4.3(B).8.A=\'S\';4.3(y).8.b=\'o\'}h T(){}h U(){a x=0;j(a i=1;i<=k;i++){7(2[i][\'n\']==1){7(!d[2[i][\'9\']]||d[2[i][\'9\']]==0){x++}}}7(x>0){4.3(B).8.A=\'s\';4.3(m[\'t\'][0]).8.b=\'r\'}7(x==0){4.3(B).8.A=\'s\';4.3(m[\'t\'][1]).8.b=\'r\';a v=\'?\';j(a i=1;i<=k;i++){v+=2[i][\'9\']+"="+O(4.3(\'c\'+2[i][\'9\']).l);v+=(2[i+1])?\'&\':\'\'}P(V+v,\'t\',\'W\');j(a i=1;i<=k;i++){d[2[i][\'9\']]=0}}}h z(5){a 6=\'\';j(a i=1;i<=k;i++){7(2[i][\'9\']==5){6=i}}X 6}h K(5){4.3(\'e\'+5).p=Y;4.3(\'e\'+5).8.b=\'r\';a 6=z(5);7(6!=\'\'&&2[6][\'w\']==\'\'&&2[6][\'g\']=="G"){F(5)}f 7(6!=\'\'&&2[6][\'w\']==\'\'&&2[6][\'g\']=="M"){Z(5)}f 7(6!=\'\'&&2[6][\'w\']!=\'\'&&(2[6][\'g\']==\'H\'||2[6][\'g\']==\'M\')){a Q=O(4.3(\'c\'+5).l);C=\'\';P(2[6][\'w\']+"?q="+Q,2[6][\'9\'],\'12\')}}h F(5){a 6=z(5);7(2[6][\'g\']=="G"){7(4.3(\'c\'+5).l!=\'\'){d[5]=1;4.3(\'e\'+5).p=L}f{d[5]=0;7(2[6][\'n\']==1||(2[6][\'n\']==0&&I==u)){4.3(\'e\'+5).p=N}f{4.3(\'e\'+5).8.b="o"}}}7(2[6][\'g\']=="H"){7(4.3(\'c\'+5).l.J("@")>0&&4.3(\'c\'+5).l.J(".")>0&&C==\'u\'){d[5]=1;4.3(\'e\'+5).p=L}f{d[5]=0;7(2[6][\'n\']==1||(2[6][\'n\']==0&&I==u)){4.3(\'e\'+5).p=N}f{4.3(\'e\'+5).8.b="o"}}}}',62,67,'||tabFields|getElementById|document|field|indField|if|style|name|var|display|form_|tabFieldsState|img_|else|type|function||for|nbrFields|value|tabLayers|need|none|src||block|hidden|form|true|strContents|file|error|provenance|findFieldNumber|visibility|formName|ajaxResult|border|sent|displayResult|normal|email|noneedFieldsInvalidImg|indexOf|displayLoading|imgValid|specific|imgInvalid|escape|requestAjax|fieldValue|borderPopulateField|visible|emptyFunction|testForm|urlFileSender|POST|return|imgLoader|displayResultSpecific|displayForm|returnForm|GET|borderEmptyField|initForm'.split('|'),0,{}))
