  	/** *************************************************************************************
	***  Société : Idealcoms																*
	***  Auteur  : <a href="mailto:juanito.goncalves@idealcoms.net">Juanito Goncalves</a>	*
	***  Projet  : tous 																	*
	***  Date    : jeudi 11 mars 2004 		 												*
	***  Version : 1 Rev 0	{11/03/2004}		 		 									*
	***  Titre   : Fonctions javascript de base 											*
	*** ************************************************************************************/
	/** Equivalent de la fonction php trim() en Javascript **/
	function trim( string ) {
		return string.replace(/(^\s*)|(\s*$)/g,''); 
	}
	
  	/** Vérifie la valeur d'un formulaire et affiche un message en conséquence. **/
  	
  	function check(formId,elementNum,typeCheck,message,required,lastChecked,langue,noAlert) {

		switch(langue) {
			default : messageResult =  "Merci de préciser " + message;break;
			case "en" : messageResult =  "Please enter " + message;break;
		}
		
  		flag = true;
  		if (elementNum) {
	  		element = document.getElementById(formId).elements[elementNum];

	  		if (element) {

				element.value = trim(element.value);
		  		
		  		// Si le typeCheck ressemble a une expression régulière, on la traite comme tel
		  		if (typeCheck.substr(0,1)=='/') {regexp = typeCheck;typeCheck = 'regexp';}
		  		if (typeCheck=='<' || typeCheck=='>' || typeCheck=='==' || typeCheck=='>=' || typeCheck=='<=') {cmp = typeCheck;typeCheck = 'cmp';}
		  		
		  		switch (typeCheck) {
		  			default : 
		  				flag =  !(element.value=='');
		  			break;
		  			case 'select' : 
		  				flag = !(element.options[element.selectedIndex].value=='');
		  			break;
		  			
		  			case 'email' : 
		  				if (required && element.value=='') flag = !(element.value=='') ;
		  				else {
		  					flag =  !(element.value!='' && (element.value.indexOf("@")==-1 || element.value.indexOf(".")==-1));
							switch(langue) {
								default : messageResult =  "Merci de préciser une adresse mél valide (exp nom@domaine.com)";break;
				  				case "en" : messageResult =  "Please enter a valid email address (exp name@domain.com)";break;
							}
		  				}
		  			break;
		  			case 'url' : 
		  				if (required && element.value=='') flag = !(element.value=='') ;
		  				else {
		  					flag = !(element.value!='' && (element.value.indexOf("http://")==-1 || element.value.indexOf(".")==-1));
							switch(langue) {
								default : messageResult =  "Merci de préciser une adresse internet valide (exp http://domaine.com)";break;
				  				case "en" : messageResult =  "Please enter a valid internet address (http://domain.com)";break;
							}
		  				}
		  			break;
		  			case 'password' : 
		  				compare = document.getElementById(formId).elements[elementNum+"2"];
		  				if (required && element.value=='') flag = !(element.value=='') ;
		  				else {
		  					flag =  !(element.value!='' && element.value!=compare.value);
							switch(langue) {
								default : messageResult =  "Les mots de passe ne concordent pas";break;
				  				case "en" : messageResult =  "The passwords do not match";break;
							}
		  				}
		  			break;
		  			case 'length' :
		  				flag = element.value.length<=required;
						switch(langue) {
							default : messageResult =  message + " ne doit pas dépasser "+required+" caractères";break;
			  				case "en" : messageResult = message + " must not exceed "+required+" caracters";break;
						}
		  			break;
		  			
		  			case 'exactlength' :
		  				flag = element.value.length==required;
						switch(langue) {
							default : messageResult =  message + " doit être à "+required+" caractères";break;
			  				case "en" : messageResult = message + " must be "+required+" caracters length";break;
						}
		  			break;
		  			
		  			case 'date' :
		  				regexp = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/ ;
		  				if (required && element.value=='') flag = !(element.value=='') ;
		  				else {
		  					flag = element.value=='' || regexp.test(element.value);
							switch(langue) {
								default : messageResult =  message + " doit être au format jj/mm/aaaa";break;
				  				case "en" : messageResult =  message + " must be in dd/mm/yyyy format";break;
							}
		  				}
		  			break;
		  			
		  			case 'radio' :
		  				flag = false;
		  				for (i=0;i<element.length;i++) {
		  					if (element[i].checked==true) {
		  						flag = true;
		  					}
		  				}
		  			break;
		  			
		  			case 'checkbox' :
		  				flag = element.checked; 
		  				if (required) {
			  				switch(langue) {
								default : messageResult =  "Merci de cocher "+ message ;break;
				  				case "en" : messageResult =  "Please tick "+ message;break;
							}
						}
		  			break;
		  			
		  			case 'telRegexp' :
		  				regexp = /^[0-9]{2}\.[0-9]{2}\.[0-9]{2}\.[0-9]{2}\.[0-9]{2}$/ ;
		  				if (required && element.value=='') flag = !(element.value=='') ;
		  				else {
		  					flag = element.value=='' || regexp.test(element.value);
							switch(langue) {
								default : messageResult =  message + " doit être au format nn.nn.nn.nn.nn";break;
				  				case "en" : messageResult =  message + " must be in nn.nn.nn.nn.nn format";break;
							}
		  				}
		  			break;
		  			
		  			case 'heureRegexp' :
		  				regexp = /^[0-9]{2}:[0-9]{2}$/ ;
		  				if (required && element.value=='') flag = !(element.value=='') ;
		  				else {
		  					flag = element.value=='' || regexp.test(element.value);
							switch(langue) {
								default : messageResult =  message + " doit être au format 00:00";break;
				  				case "en" : messageResult =  message + " must be in 00:00 format";break;
							}
		  				}
		  			break;
		  			
		  			case 'regexp' : 
		  				regxp = new RegExp(regexp.substr(1,regexp.length-2));
		  				
		  				if (required && element.value=='') flag = !(element.value=='') ;
		  				else {
		  					flag = element.value=='' || regxp.test(element.value);
							switch(langue) {
								default : messageResult =  message + " n'est pas au bon format";break;
				  				case "en" : messageResult =  message + " must be in format";break;
							}
		  				}
		  			break;
		  			
		  			case 'numeric' :
		  				if (required && element.value=='') flag = !(element.value=='') ;
		  				else {
		  					flag = element.value=='' || !isNaN(element.value);
							switch(langue) {
								default : messageResult =  message + " doit être un nombre";break;
								case "en" : messageResult =  message + " must be a number";break;

							}
		  				}
		  			break;
		  			
		  			case 'cmp' : //comparaison
		  				if (required && element.value=='') flag = !(element.value=='') ;
		  				else {
		  					switch(cmp) {
		  						case '==' : flag = parseFloat(element.value)==parseFloat(required); 
		  							switch(langue) {
										default : messageResult =  message + " doit être égal à " + required;break;
						  				case "en" : messageResult =  message + " must be equal to " + required;break;
									}
		  						break;
		  						case '<=' : 
		  							flag = parseFloat(element.value)<=parseFloat(required); 
		  							switch(langue) {
										default : messageResult =  message + " doit être inférieur ou égal à " + required;break;
						  				case "en" : messageResult =  message + " must be less than " + required;break;
									}
		  						break;
		  						case '>=' : 
		  							flag = parseFloat(element.value)>=parseFloat(required); 
		  							switch(langue) {
										default : messageResult =  message + " doit être supérieur ou égal à " + required;break;
						  				case "en" : messageResult =  message + " must be greater than " + required;break;
									}
		  						break;
		  						case '<' : 
		  							flag = parseFloat(element.value)<parseFloat(required); 
		  							switch(langue) {
										default : messageResult =  message + " doit être inférieur à " + required;break;
						  				case "en" : messageResult =  message + " must be less than " + required;break;
									}
		  						break;
		  						case '>' : 
		  							flag = parseFloat(element.value)>parseFloat(required); 
		  							switch(langue) {
										default : messageResult =  message + " doit être supérieur à " + required;break;
						  				case "en" : messageResult =  message + " must be greater than " + required;break;
									}
		  						break;
		  					}
		  					
							
		  				}
		  			break;
		  			
		  			case 'multipleSelect' : 
		  				flag = false;
		  				for (i=0;i<element.options.length;i++) {
		  					if (element.options[i].selected) flag = true;
		  				}
		  				switch(langue) {
		  					default : messageResult = " Veuillez préciser au moins " + message;break;
		  				}
		  			break;
	  			}
	  		}
	  	} else {flag = true;lastChecked=true;}

  		if (flag) {
  			// si un champ upload existe, on y affiche le texte de téléchargement : 
  			if (lastChecked && document.getElementById(formId).elements['upload']!=undefined) 
  			switch(langue) {
  				default : document.getElementById(formId).elements['upload'].value="Veuillez patienter, téléchargement en cours...";break;
  				case "en" : document.getElementById(formId).elements['upload'].value="Please wait, modification in progress ...";break;
  			}
  			return true;
  		}
  		else {
  			if (!noAlert) {
  				alert(messageResult);
  				if (element.type!="hidden" && typeCheck!="radio") element.focus();
  			}
  			return false;
  		}
  	}
  	
  	/** Renvoie vers une autre page **/
  	function go(url,params) {
  		if (!params) params = ""; else params = "?" + params;
  		document.location.replace(url + params);
  	}
  	
  	function launchPrint(message) {
  		ua=navigator.userAgent;
  		if (ua.indexOf("Mac")!=-1) alert(message);
  		else window.print();
  	}
  	
  	function cmpDate(date1,date2,equals,msg) {
  		date1CMP = date2CMP = "";
  		date1 = date1.split("/");
  		date2 = date2.split("/");
  		date1CMP = date1[2] + date1[1] + date1[0];
  		date2CMP = date2[2] + date2[1] + date2[0];
  		result =  equals ? date1CMP <= date2CMP : date1CMP < date2CMP;
  		if (msg!="" && !result) {alert(msg);}
  		return result;
  	}
  	
  	function afficheDate() {
		document.write(new Date());	
  	}
  	
  	//supprime une commune de la liste de celles choisies
		function deleteListElement(element,valeur){
			form = document.forms[0].elements;
			form[element].value = valeur;
			document.forms[0].submit();
		}
		
	// Page d'attente de la fonctionalité
		function enAttente() {
			window.open('/pageAttente.htm','attente','width=450,height=400');
		}
	
	function HowOld(day,month,year,thisDay,thisMonth,thisYear) {
   		var yearsold = thisYear - year, monthsold = 0, daysold = 0;

    	if (thisMonth >= month) monthsold = thisMonth - month;
    	else { yearsold--; monthsold = thisMonth + 12 - month; }

	    if (thisDay >= day)daysold = thisDay - day;
	    else {
        	if (monthsold > 0) monthsold--;
	        else { yearsold--; monthsold+=11; }
        	daysold = thisDay + 31 - day;
    	}
	    return yearsold;
	}
	
	
	function returnObjById( id )
	{
	    if (document.getElementById)
	        var returnVar = document.getElementById(id);
	    else if (document.all)
	        var returnVar = document.all[id];
	    else if (document.layers)
	        var returnVar = document.layers[id];
	    return returnVar;
	}
	
	function showPeninsule(type) {
	
		if (type=='acc') {
			var divVisible = returnObjById('perso_pen_acc');
			var divHidden = returnObjById('perso_pen_rond');
		}

		if (type=='rond') {
			var divVisible = returnObjById('perso_pen_rond');
			var divHidden = returnObjById('perso_pen_acc');
		}		


		divVisible.style.display = "";
		divHidden.style.display = "none";
		
	}

	function chgDisplay(divHidden, divVisible) {
	
		var myElement1 = returnObjById(divHidden);
		var myElement2 = returnObjById(divVisible);

		myElement1.style.display = "none";
		myElement2.style.display = "";		
	}
	
	function changeAffichage(idCat,espace) {
	
		var myElement = returnObjById('details'+idCat);
		var myfleche = returnObjById('fleche'+idCat);
		var mytitle = returnObjById('cat'+idCat);

//if (myElement.style.visibility=='' || myElement.style.visibility=='hidden') {
//	myElement.style.visibility='visible';
		if (myElement.style.display=='' || myElement.style.display=='none') {
			myElement.style.display='block';
			mytitle.bgColor='green';		
			myfleche.src='images/flecheCat_on.gif';			
		}else {
//		myElement.style.visibility='hidden';
			myElement.style.display='none';		
			myfleche.src='images/flecheCat_'+espace+'_off.gif';			
		}

	}
	
	function changeAffichage_faq(valrep) {
		var myElement = returnObjById('reponse'+valrep);
		var myfleche = returnObjById('fleche'+valrep);
		if (myElement.style.display=='' || myElement.style.display=='none') {
			myElement.style.display='block';
			myfleche.src='images/puce_FAQ_on.jpg';			
		}else {
			myElement.style.display='none';		
			myfleche.src='images/puce_FAQ_off.jpg';
		}

	}
	
	
	function changeAffichage_ville(ville,indexVille) {
	
		var myElement = returnObjById('contact'+ville);
		
		/*
		returnObjById('contactANGOULEME').style.visibility='hidden';
		returnObjById('contactANGOULEME').style.display='none';		
		returnObjById('contactCOGNAC').style.visibility='hidden';
		returnObjById('contactCOGNAC').style.display='none';
		returnObjById('contactCHASSENEUIL').style.visibility='hidden';
		returnObjById('contactCHASSENEUIL').style.display='none';		
		returnObjById('contactSAINTES').style.visibility='hidden';
		returnObjById('contactSAINTES').style.display='none';		
		returnObjById('contactROYAN').style.visibility='hidden';
		returnObjById('contactROYAN').style.display='none';		
		returnObjById('contactLAROCHELLE').style.visibility='hidden';
		returnObjById('contactLAROCHELLE').style.display='none';		
		returnObjById('contactROCHEFORT').style.visibility='hidden';
		returnObjById('contactROCHEFORT').style.display='none';		
		returnObjById('contactBEGLES').style.visibility='hidden';
		returnObjById('contactBEGLES').style.display='none';
		returnObjById('contactBARBEZIEUX').style.visibility='hidden';
		returnObjById('contactBARBEZIEUX').style.display='none';								
				
		myElement.style.visibility='visible';
		myElement.style.display='block';
		
		*/

		returnObjById('TBL_agence_ID').options[indexVille].selected=true;
	}

	
	function RGBToHex(ColorString) {
		HexDigits = "0123456789abcdef";
		if (ColorString.charAt(0) == '#') {
			return ColorString;
		} else {
			ColorString = ColorString.substr(4);
			pos = ColorString.indexOf(',');
			Result = '#' + HexDigits.substr(Math.floor(ColorString.substr(0, pos) / 16), 1) + HexDigits.substr(ColorString.substr(0, pos) % 16, 1);
			ColorString = ColorString.substr(pos + 1);
			pos = ColorString.indexOf(',');
			Result = Result + HexDigits.substr(Math.floor(ColorString.substr(0, pos) / 16), 1) + HexDigits.substr(ColorString.substr(0, pos) % 16, 1);
			ColorString = ColorString.substr(pos + 1);
			Result = Result + HexDigits.substr(Math.floor(ColorString.substr(0, pos) / 16), 1) + HexDigits.substr(ColorString.substr(0, pos) % 16, 1);
			
			return Result;
		}
	}


	function changeColor(id, color, colorOff) {
		element = returnObjById(id);
		
		var couleurHex = RGBToHex(element.style.backgroundColor).toUpperCase();
		
		if (element.style.backgroundColor =="" || couleurHex == colorOff)
			element.style.backgroundColor = color;
		else
			element.style.backgroundColor = colorOff;
	}
	