/*________________________________________________________________________________________
  chargement du xml d'erreurs
*/
var xhr; 
var xmlErreurs;
var lang = "FR";
try {  
	xhr = new ActiveXObject('Msxml2.XMLHTTP');   
}catch (e){
	try {
 		xhr = new ActiveXObject('Microsoft.XMLHTTP');    
	}catch (e2){
 		try {  
 			xhr = new XMLHttpRequest();     
 		}catch (e3) {  
 			xhr = false;   
 		}
 	}
} 
xhr.open("GET", "app/config/erreurs.xml",  false); 
xhr.send(null);
xmlErreurs = xhr.responseXML;
/*________________________________________________________________________________________
  sélectionne le message d'erreur correspondant
*/
function getError(id_erreur){
	var aTtribs1;
	var aTtribs2;
	var i;
	var j;
	var erreurs = xmlErreurs.getElementsByTagName("erreurs");
	for(i=0;i<erreurs.length;i++) {
		aTtribs1 = erreurs[i].attributes;
		if(aTtribs1.getNamedItem("lang").nodeValue == lang){
			var aErreurs = erreurs[i].getElementsByTagName("erreur");
			for(j=0;j<aErreurs.length;j++){
				aTtribs2 = aErreurs[j].attributes;
				if(aTtribs2.getNamedItem("id").nodeValue == id_erreur){
					return aErreurs[j].childNodes[0].nodeValue;
					break;
				}
			}
		}
	} 
}
/*________________________________________________________________________________________
  sélectionne une option d'une liste déroulante
*/
function setOption(list,value){
	var nList = document.getElementById(list)
	var aOptions = nList.options;
	for(var i=0;i<aOptions.length;i++){
		if(aOptions[i].value == value){
			nList.selectedIndex = i;
		}
	}	
}
/*________________________________________________________________________________________
  liste des éléments portant l'attribu class spécifié
*/
function getElementsByClassName(c1) {
	var retnode = [];
	var myclass = new RegExp('\\b'+c1+'\\b');
	var elem = document.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++) {
		if(elem[i].className){
			var classes = elem[i].className;		
			if (myclass.test(classes)) retnode.push(elem[i]);
		}
	}
	return retnode;
} 
/*________________________________________________________________________________________
  vérification du format d'un champ et mise en évidence du champ
*/
function verrifElementForm(element,type,parent){
	document.getElementById("msg_"+element.name).style.display = 'none';
	if(checkElementForm(element,type,parent)){
		setValide(element);
		return true;
	}else{
		setErreur(element);
		return false;
	}
}
/*________________________________________________________________________________________
  vérification du format d'un champ
*/
function checkElementForm(element,type,parent){
	switch(type){
		case 'combobox':
			return verrifComboBox(element);
		break;
		case 'char':
			return verrifChar(element);
		break;
		case 'integer':
			return verrifInteger(element);
		break;
		case 'password':
			return verrifPassword(element);
		break;
		case 'email':
			return verifEmail(element);
		break;
		case 'email-confirm':
			return verifEmailConfirm(element,parent);
		break;
		case 'date':
			return verifDate(element,parent);
		break;
		case 'reglement':
			return verifReglement(element);
		break;
		case 'optin':
			return verifOptin(element);
		break;
		case 'radio':
			return verifRadio(element,parent);
		break;
		case 'telephone':
			return verifTelephone(element);
		break;
		case 'adresse':
			return verifAdresse(element);
		break;
		case 'adresse2':
			return verifAdresse2(element);
		break;
		case 'captcha':
			return verifCaptcha(element);
		break;	
		case 'alphanum':
			return verifAlphanum(element);
		break;			
		case 'code-postal':
			return verrifCodePostal(element);
		break;				
		default:
			return true;
		break;
	}
}
/*________________________________________________________________________________________
  mise en évidence de l'état valide d'un champ
*/
function setValide(element){
	//alert(element.className);
	element.className = "valide";
	document.getElementById("erreur_"+element.name).className = "ico_valide";
	document.getElementById("erreur_"+element.name).onClick = "";
	document.getElementById("erreur_"+element.name).onmouseover = null;
	document.getElementById("erreur_"+element.name).onmouseout  = null;
}
/*________________________________________________________________________________________
  mise en évidence de l'état erreur d'un champ
*/
function setErreur(element){
	element.className = "erreur";
	var njElement = document.getElementById("erreur_"+element.name);
	njElement.className = "ico_erreur";
	njElement.onmouseover  = function (){
		showMsg(document.getElementById("msg_"+element.name));
	}
	njElement.onmouseout  = function (){
		hideMsg(document.getElementById("msg_"+element.name));
	}
	njElement.onclick = function(){
		showHideMsg(document.getElementById("msg_"+element.name));
	}
}

/*________________________________________________________________________________________
  mise en évidence de l'état erreur d'un champ depuis le controleur
*/
function setErreurXml(elementId,errorId){
	var niElement 	= document.getElementById(elementId);
	var nMsgErreur 	= document.getElementById("msg_"+elementId);
	nMsgErreur.innerHTML = getError(errorId);
	setErreur(niElement);
	return false;
}

/*________________________________________________________________________________________
  affiche le message d'erreur
*/
function showMsg(element){
	element.style.display = 'block';
}
/*________________________________________________________________________________________
  masque le message d'erreur
*/
function hideMsg(element){
	element.style.display = 'none';
}
/*________________________________________________________________________________________
  affiche ou masque le message d'erreur
*/
function showHideMsg(element){
	if(element.style.display == 'none'){
		element.style.display = 'block';
	}else{
		element.style.display = 'none';
	}
}
/*________________________________________________________________________________________
  vérification du format d'un champ alpha
*/
function verrifChar(element){
	element.value = element.value.replace(/[0123456789"('&~#'{[\-|`_\\^@)\]°}=+$£¤¨ù%*µ!§:/;\.,\?<>]/ig, '');
	if(element.value.length > 0){
		return true;
	}else{
		return false;
	}
}
/*________________________________________________________________________________________
  vérification du format d'un champ alpha
*/
function verifAlphanum(element){
	element.value = element.value.replace(/["('&~#'{[\-|`_\\^@)\]°}=+$£¤¨ù%*µ!§:/;\.,\?<>]/ig, '');
	if(element.value.length > 0){
		return true;
	}else{
		return false;
	}
}


/*________________________________________________________________________________________
  vérification du format d'un champ adresse
*/
function verifAdresse(element){	
	element.value = element.value.replace(/[&~#'{[\-|`_\\^@)\]°}=+$£¤¨ù%*µ!§:/;\.,\?<>]/ig, '');
	if(element.value.length == 0){
		return false;
	}else{
		return true;
	}
}
/*________________________________________________________________________________________
  vérification du format d'un champ adresse
*/
function verifAdresse2(element){	
	if(element.value.length > 0){	
		return verifAdresse(element);
	}else{
		return true;
	}
}
/*________________________________________________________________________________________
  vérification du format d'un champ adresse
*/
function verifCaptcha(element){	
	element.value = element.value.replace(/[&~#'{[\-|`_\\^@)\]°}=+$£¤¨ù%*µ!§:/;\.,\?<>]/ig, '');
	if(element.value.length != 5){
		return false;
	}else{
		return true;
	}
}



/*________________________________________________________________________________________
  vérification du format d'un champ numérique
*/
function verrifInteger(element){
	element.value = element.value.replace(/[^0-9]/g,"");
	if(element.value.length == 0){
		return false;
	}else{
		return true;
	}
}
/*________________________________________________________________________________________
  vérification du format d'un champ code postal
*/
function verrifCodePostal(element){
	
	if(verrifInteger(element))
	{
		if(element.value.length == 5){
			return true;
		}else{
			return false;
		}
		
	}else{
		return false;
	}
}
/*________________________________________________________________________________________
  vérification du format d'un champ password
*/
function verrifPassword(element){
	element.className = "valide";
	if(element.value.length < 6){
		return false;
	}else{
		return true;
	}
}
/*________________________________________________________________________________________
  vérification du format d'un champ monaitaire
*/
function verifMontant(element){
	element.value = element.value.replace(/[^0-9^.^,]/g,"");
	if(element.value.length == 0){
		return false;
	}else{
		return true;
	}
}
/*________________________________________________________________________________________
  controle du format de l'adresse email
*/
function verifEmail(element){
	a = element.value;
	valide = false;	
	for(var j=1;j<(a.length);j++){
		if(a.charAt(j)=='@'){
			if(j<(a.length-4)){
				for(var k=j;k<(a.length-2);k++){
					if(a.charAt(k)=='.') valide = true;
				}
			}
		}
	}
	return valide;
}
/*________________________________________________________________________________________
  controle du format de l'adresse email + confirmation
*/
function verifEmailConfirm(element,parent){
	if(verifEmail(element)){
		if(parent.value == element.value){
			return true;
		}else{
			return false;
		}
	}else{
		return false;
	}
}
/*________________________________________________________________________________________
  controle du format d'un champ civilité
*/
function verrifComboBox(element){
	if(element.value == "0"){
		return false;
	}else{
		return true;
	}
}
/*________________________________________________________________________________________
  controle le format d'une date jj/mm/aaaa
*/
function verifDate(element) {
	txtDate = element.value;
    var objDate,  
        mSeconds, 
        day,      
        month,    
        year;     
    if (txtDate.length !== 10) {
        return false;
    }
    if (txtDate.substring(2, 3) !== '/' || txtDate.substring(5, 6) !== '/') {
        return false;
    }
    day = txtDate.substring(0, 2) - 0; 
    month = txtDate.substring(3, 5) - 1;
    year = txtDate.substring(6, 10) - 0;
    if (year < 1000 || year > 3000) {
        return false;
    }
    mSeconds = (new Date(year, month, day)).getTime();
    objDate = new Date();
    objDate.setTime(mSeconds);
    if (objDate.getFullYear() !== year ||
        objDate.getMonth() !== month ||
        objDate.getDate() !== day) {
        return false;
    }
    return true;
}
/*________________________________________________________________________________________
  controle du format d'un champ optin
*/
function verifOptin(element){
	var isValide = false;
	
	var className = document.getElementById("erreur_"+element.name).className;
	if(className == "ico_valide"){
		isValide = true;
	}	
	return isValide;
}
/*________________________________________________________________________________________
  controle du format d'un groupe de champ radio
*/
function verifRadio(element,className){	
	var isValide = false;
	var id_groupe = element.name;	
	var aGroupe = getElementsByClassName(className+"_on");
	var ident;
	for(var i=0;i<aGroupe.length;i++){
		ident = aGroupe[i].id;
		var aData = ident.split("_");
		if(aData[0] == id_groupe){
			isValide = true;
		}		
	}
	return isValide;
}
/*________________________________________________________________________________________
  controle du format d'un champ règlement
*/
function verifReglement(element){
	if(element.value == "on"){
		return true;
	}else{
		return false;
	}
}
/*________________________________________________________________________________________
  controle du format d'un champ téléphone
*/
function verifTelephone(element){
	element.value = element.value.replace(/[^0-9]/g,"");
	if(element.value.length != 10){
		return false;
	}else{
		if(element.value.charAt(0) == "0"){
			return true;
		}else{
			return false;
		}
	}
}
/*________________________________________________________________________________________
  envoi du formulaire
*/
function frm_submit(frm){
	
	var errors = 0;
	
	for(var i=0;i<document.getElementById(frm).elements.length;i++){
		var element =document.getElementById(frm).elements[i];	
		if(element.className == "normal" || element.className == "focus" || element.className == "erreur"){
			if(element.getAttribute("onchange")){
				var js = element.getAttribute("onchange");
				var njs = js.valueOf()+"";	
				njs = njs.replace(/[\n]/gi, "");	
				njs = njs.replace("function onchange()","");
				njs = njs.replace("function anonymous()","");
				njs = njs.replace('{','');
				njs = njs.replace('}','');
				njs = njs.replace('verrifElementForm(this,','');	
				njs = njs.replace(');','');
				var aData = njs.split(",");
				var reg = new RegExp("'", "g");			
				if(aData.length > 1){
					if(!verrifElementForm(element,aData[0].replace(reg,""),aData[1])){
						errors ++;
					}
				}else{
					if(!verrifElementForm(element,aData[0].replace(reg,""))){
						errors ++;
					}				
				}
			}
		}
	}
	
	if(errors == 0){
		document.getElementById(frm).submit();
	}else{
		alert("Merci de renseigner correctement tous les champs");
	}
}
/*________________________________________________________________________________________
  mise en évidence d'un champ
*/
function setFocus(element){
	if(element.className != "erreur"){
		element.className = "focus";
	}
}
/*________________________________________________________________________________________
  affiche ou masque une div
*/
function displayHide(div){
	var mDiv = document.getElementById(div);
	if(mDiv.style.display == 'none'){
		mDiv.style.display = 'block';
		mDiv.style.zIndex = '1000';
	}else{
		mDiv.style.display = 'none';
		mDiv.style.zIndex = '1';
	}
}
/*________________________________________________________________________________________
  gére le comportement d'une checkbox
*/
function checkBox(id,img){
	var cBox = document.getElementById(id);
	if(cBox.value == "on"){
		cBox.value = "off";
		img.className = "checkbox";
	}else{
		cBox.value = "on";
		img.className = "checkbox_on";
	}
}
/*________________________________________________________________________________________
  gére le comportement d'une checkbox
*/
function checkBoxMultiple(id,img,val){
	var cBoxValue = document.getElementById(id);
	var cBoxValues = cBoxValue.value.split(",");	
	var nBox = document.getElementById("block_"+id);
	var aBoxes = nBox.getElementsByTagName("img");
	var nValue = "";
	var js;
	if(val == "Y"){
		for(var i=0;i<aBoxes.length;i++){	
			if(aBoxes[i].getAttribute("onclick")){				
				js = aBoxes[i].getAttribute("onclick").valueOf()+"";
				js = js.replace(/[\n]/gi, "");	
				js = js.replace("function onchange()","");
				js = js.replace("function anonymous()","");
				js = js.replace('{','');
				js = js.replace('}','');
				js = js.replace('checkBoxMultiple(','');					
				js = js.replace(');','');
				js = js.replace("'",'');
				var aData = js.split(",");
				var reg = new RegExp("'", "g");	
				if(aData[2].replace(reg,"") == "N"){
					if(i == aBoxes.length-1){
						nValue += "N";
					}else{
						nValue += "N,";
					}
					aBoxes[i].className = "checkbox";
				}else{			
					if(img.getAttribute("id") == aBoxes[i].getAttribute("id")){
						if(cBoxValues[i] == "Y"){
							if(i == aBoxes.length-1){
								nValue += "N";
							}else{
								nValue += "N,";
							}
							aBoxes[i].className = "checkbox";
						}else{
							if(i == aBoxes.length-1){
								nValue += "Y";
							}else{
								nValue += "Y,";
							}
							aBoxes[i].className = "checkbox_on";
						}			
					}else{
						if(cBoxValues[i] == "Y"){
							if(i == aBoxes.length-1){
								nValue += "Y";
							}else{
								nValue += "Y,";
							}
							aBoxes[i].className = "checkbox_on";
						}else{
							if(i == aBoxes.length-1){
								nValue += "N";
							}else{
								nValue += "N,";
							}
							aBoxes[i].className = "checkbox";
						}
					}	
				}

			}
		}		
	}else{
		for(var i=0;i<aBoxes.length;i++){		
			if(img.getAttribute("id") == aBoxes[i].getAttribute("id")){		
				if(i == aBoxes.length-1){
					nValue += "Y";
				}else{
					nValue += "Y,";
				}		
				aBoxes[i].className = "checkbox_on";
			}else{
				if(i == aBoxes.length-1){
					nValue += "N";
				}else{
					nValue += "N,";
				}		
				aBoxes[i].className = "checkbox";
			}			
		}		
	}
	cBoxValue.value = nValue;
	verrifElementForm(cBoxValue,'radio','checkbox');	
}
/*________________________________________________________________________________________
  gére le comportement d'une checkbox
*/
function optin(id,img,value){
	var Opt = document.getElementById(id);
	if(Opt.value != value){
		img.className = "checkbox_on";
		Opt.value = value;
	}else{
		img.className = "checkbox";
		Opt.value = "";
	}
	setValide(Opt);
}
/*________________________________________________________________________________________
  gére le comportement d'un groupe de radio
*/
function radio(id_groupe,element,value){
	var aGroupe = getElementsByClassName("radio_on");
	var ident;
	for(var i=0;i<aGroupe.length;i++){
		ident = aGroupe[i].id;
		var aData = ident.split("_");
		if(aData[0] == id_groupe){
			aGroupe[i].className = "radio";
		}		
	}
	element.className = "radio_on";
	document.getElementById(id_groupe).value = value;
	setValide(document.getElementById(id_groupe));
}
/*________________________________________________________________________________________
  gére le comportement d'un groupe de radio
*/
function radioBox(id_groupe,element,value){
	var aGroupe = getElementsByClassName("checkbox_on");
	var ident;
	for(var i=0;i<aGroupe.length;i++){
		ident = aGroupe[i].id;
		var aData = ident.split("_");
		if(aData[0] == id_groupe){
			aGroupe[i].className = "checkbox";
		}		
	}
	element.className = "checkbox_on";
	document.getElementById(id_groupe).value = value;
	setValide(document.getElementById(id_groupe));
}
/*________________________________________________________________________________________
  génére un nouveau captcha
*/
function nouveauCaptcha(id_captcha){
	var currentTime = new Date()
	var time = currentTime.getTime();	
	document.getElementById(id_captcha).src = "";
	document.getElementById(id_captcha).src = "captcha.img.php?rnd="+time;
}
/*________________________________________________________________________________________
  authentification
*/	 	
function login(frm){
	var errors = 0;
	
	for(var i=0;i<document.getElementById(frm).elements.length;i++){
		var element =document.getElementById(frm).elements[i];	
		if(element.className == "normal" || element.className == "focus" || element.className == "erreur"){
			if(element.getAttribute("onchange")){
				var js = element.getAttribute("onchange");
				js = js.replace(/[\n]/gi, "");	
				js = js.replace("function onchange()","");
				js = js.replace("function anonymous()","");
				js = js.replace('{','');
				js = js.replace('}','');
				js = js.replace('verrifElementForm(this,','');	
				js = js.replace(');','');
				var aData = js.split(",");
				var reg = new RegExp("'", "g");			
				if(aData.length > 1){
					if(!verrifElementForm(element,aData[0].replace(reg,""),aData[1])){
						errors ++;
					}
				}else{
					if(!verrifElementForm(element,aData[0].replace(reg,""))){
						errors ++;
					}				
				}
			}
		}
	}
	
	if(errors == 0){
		var login 	= document.getElementById("email").value;
		var pwd 	= document.getElementById("mdp").value;
		var token 	= document.getElementById("token").value;	
		var encrypt = MD5(token+MD5(pwd+login));	
		//var encrypt = MD5(pwd+login);	
		var nForm = "<form id=\"authentification\" method=\"post\">";
		nForm += "<input type=\"hidden\" name=\"appCmd\" id=\"appCmd\" value=\"identification\"/>";
		nForm += "<input type=\"hidden\" name=\"encrypt\" value=\""+encrypt+"\"/>";
		nForm += "<input type=\"hidden\" name=\"login\" value=\""+login+"\"/>";
		nForm += "</form>";		
		document.getElementById("footer").innerHTML += nForm;
		document.getElementById("authentification").submit(); 			
	}else{
		alert("Merci de renseigner correctement tous les champs");
	}	
}

/*________________________________________________________________________________________
  révélation
*/	 
var cpt = new Array();
cpt[6] = 24;
cpt[5] = 22;
cpt[4] = 20;
cpt[3] = 18;
cpt[2] = 16;
cpt[1] = 14;

function revelation(container,img){
	var id = container.replace("R","");			
	var cont = document.getElementById(container);		
	if(cpt[id] != 0){			
		if(cont.className == 'R'){
			cont.className = 'RBL';
		}else{
			cont.className = 'R';
		}
		cpt[id] --;
		var t = setTimeout("revelation('"+container+"','"+img+"');",50);
	}else{
		cont.className = img;
	}	
}

var cptA = new Array();
cptA[13] = 38;
cptA[12] = 36;
cptA[11] = 34;
cptA[10] = 32;
cptA[9] = 30;
cptA[8] = 28;
cptA[7] = 26;
cptA[6] = 24;
cptA[5] = 22;
cptA[4] = 20;
cptA[3] = 18;
cptA[2] = 16;
cptA[1] = 14;

function revelationHome(container,img){
	var id = container.replace("A","");			
	var cont = document.getElementById(container);		
	if(cptA[id] != 0){			
		if(cont.className == 'AR'){
			cont.className = 'ARBL';
		}else{
			cont.className = 'AR';
		}
		cptA[id] --;
		var t = setTimeout("revelationHome('"+container+"','"+img+"');",50);
	}else{
		cont.className = img;
	}	
}
