  	/** *************************************************************************************
	***  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;
			case "de" : messageResult =  "Bitte angeben : " + 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 affichage(element) {
		styleElement = returnObjById(element).style;
		
		if (styleElement.display=='none')
			styleElement.display='';
		else
			styleElement.display='none';
	}		
	

	function number_format(number, decimals, dec_point, thousands_sep) {
	    // Formats a number with grouped thousands  
	    // 
	    // version: 1004.2314
	    // discuss at: http://phpjs.org/functions/number_format    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
	    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	    // +     bugfix by: Michael White (http://getsprink.com)
	    // +     bugfix by: Benjamin Lupton
	    // +     bugfix by: Allan Jensen (http://www.winternet.no)    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
	    // +     bugfix by: Howard Yeend
	    // +    revised by: Luke Smith (http://lucassmith.name)
	    // +     bugfix by: Diogo Resende
	    // +     bugfix by: Rival    // +      input by: Kheang Hok Chin (http://www.distantia.ca/)
	    // +   improved by: davook
	    // +   improved by: Brett Zamir (http://brett-zamir.me)
	    // +      input by: Jay Klehr
	    // +   improved by: Brett Zamir (http://brett-zamir.me)    // +      input by: Amir Habibi (http://www.residence-mixte.com/)
	    // +     bugfix by: Brett Zamir (http://brett-zamir.me)
	    // +   improved by: Theriault
	    // *     example 1: number_format(1234.56);
	    // *     returns 1: '1,235'    // *     example 2: number_format(1234.56, 2, ',', ' ');
	    // *     returns 2: '1 234,56'
	    // *     example 3: number_format(1234.5678, 2, '.', '');
	    // *     returns 3: '1234.57'
	    // *     example 4: number_format(67, 2, ',', '.');    // *     returns 4: '67,00'
	    // *     example 5: number_format(1000);
	    // *     returns 5: '1,000'
	    // *     example 6: number_format(67.311, 2);
	    // *     returns 6: '67.31'    // *     example 7: number_format(1000.55, 1);
	    // *     returns 7: '1,000.6'
	    // *     example 8: number_format(67000, 5, ',', '.');
	    // *     returns 8: '67.000,00000'
	    // *     example 9: number_format(0.9, 0);    // *     returns 9: '1'
	    // *    example 10: number_format('1.20', 2);
	    // *    returns 10: '1.20'
	    // *    example 11: number_format('1.20', 4);
	    // *    returns 11: '1.2000'    // *    example 12: number_format('1.2000', 3);
	    // *    returns 12: '1.200'
	    var n = !isFinite(+number) ? 0 : +number, 
	        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
	        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
	        s = '',
	        toFixedFix = function (n, prec) {
	            var k = Math.pow(10, prec);
	            return '' + Math.round(n * k) / k;        };
	    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
	    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
	    if (s[0].length > 3) {
	        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);    }
	    if ((s[1] || '').length < prec) {
	        s[1] = s[1] || '';
	        s[1] += new Array(prec - s[1].length + 1).join('0');
	    }    return s.join(dec);
	}
	

	function displayEtat(id_pays) {
		if (id_pays == 41) {
			returnObjById("trEtat41").style.visibility="visible";
			returnObjById("trEtat41").style.display = "";	

			returnObjById("trEtat").style.display = "none";
			returnObjById("trEtat43").style.display = "none";
		}else if (id_pays == 43) {
			returnObjById("trEtat43").style.visibility="visible";
			returnObjById("trEtat43").style.display = "";

			returnObjById("trEtat").style.display = "none";
			returnObjById("trEtat41").style.display = "none";
		}else {
			returnObjById("trEtat").style.visibility="visible";
			returnObjById("trEtat").style.display = "";

			returnObjById("trEtat41").style.display = "none";
			returnObjById("trEtat43").style.display = "none";						
		}
	}	
	

	function doMoins() {
		document.getElementById("quantite").value = parseInt(document.getElementById("quantite").value) - 1;
		if (document.getElementById("quantite").value<1) document.getElementById("quantite").value = 1;
		//calculePrix();
	}
	
	function doPlus() {
		document.getElementById("quantite").value = parseInt(document.getElementById("quantite").value) + 1;
		//calculePrix();
	}

	function changeZoom(img,width,height) {
		var zoom = document.getElementById("zoom");
		var calque = document.getElementById("calque");
		var copyright = document.getElementById("copyright");

		zoom.src = img;
		calque.style.width = width+"px";			
		calque.style.height = height+"px";
		copyright.style.top = (height-42)+"px";
		copyright.style.left = (width-151)+"px";
	}
	

	function afficherPrezoom(id_pdt, decalage) {
		
		var div = returnObjById('divProduit'+id_pdt);
		
		var x = div.offsetLeft + decalage;
		var y = div.offsetTop + 50;
	
		returnObjById('prezoom_'+id_pdt).style.display = '';
		returnObjById('prezoom_'+id_pdt).style.top.value = y + 'px';
		returnObjById('prezoom_'+id_pdt).style.left = x +'px';
	
	}
	
	
	
	function majChampsAdresse() {
		
		if ( 
			returnObjById("TBL_PAYS_ID").value == 1
			|| returnObjById("TBL_PAYS_ID").value == 15
			|| returnObjById("TBL_PAYS_ID").value == 39
			|| returnObjById("TBL_PAYS_ID").value == 40
		) {
			returnObjById("trEtat").style.visibility="hidden";
			returnObjById("trEtat").style.display = "none";

			returnObjById("divTEL_FRANCE").style.visibility="visible";
			returnObjById("divTEL_FRANCE").style.display = "";
			returnObjById("divTEL").style.visibility="hidden";
			returnObjById("divTEL").style.display = "none";
			returnObjById("divMOBILE_FRANCE").style.visibility="visible";
			returnObjById("divMOBILE_FRANCE").style.display = "";
			returnObjById("divMOBILE").style.visibility="hidden";
			returnObjById("divMOBILE").style.display = "none";
			returnObjById("divFAX_FRANCE").style.visibility="visible";
			returnObjById("divFAX_FRANCE").style.display = "";
			returnObjById("divFAX").style.visibility="hidden";
			returnObjById("divFAX").style.display = "none";
			
		}else{

			if (returnObjById("TBL_PAYS_ID").value == 41) {
				returnObjById("trEtat41").style.visibility="visible";
				returnObjById("trEtat41").style.display = "";	

				returnObjById("trEtat").style.display = "none";
				returnObjById("trEtat43").style.display = "none";
			}else if (returnObjById("TBL_PAYS_ID").value == 43) {
				returnObjById("trEtat43").style.visibility="visible";
				returnObjById("trEtat43").style.display = "";

				returnObjById("trEtat").style.display = "none";
				returnObjById("trEtat41").style.display = "none";
			}else {
				returnObjById("trEtat").style.visibility="visible";
				returnObjById("trEtat").style.display = "";

				returnObjById("trEtat41").style.display = "none";
				returnObjById("trEtat43").style.display = "none";						
			}
			returnObjById("divTEL_FRANCE").style.visibility="hidden";
			returnObjById("divTEL_FRANCE").style.display = "none";
			returnObjById("divTEL").style.visibility="visible";
			returnObjById("divTEL").style.display = "";
			returnObjById("divMOBILE_FRANCE").style.visibility="hidden";
			returnObjById("divMOBILE_FRANCE").style.display = "none";
			returnObjById("divMOBILE").style.visibility="visible";
			returnObjById("divMOBILE").style.display = "";
			returnObjById("divFAX_FRANCE").style.visibility="hidden";
			returnObjById("divFAX_FRANCE").style.display = "none";
			returnObjById("divFAX").style.visibility="visible";
			returnObjById("divFAX").style.display = "";
		}	
	
	}
	
	/** FONCTIONS SPECIFIQUE A LA FICHE PRODUIT **/	
	function selectPerso(idPerso) {
		if (returnObjById('PERSO'+idPerso).checked == false) {
			returnObjById('PERSO'+idPerso).checked = true;
			afficherOptions(idPerso);
		}
	}
	
	function afficherOptions(idPerso) {
		if (returnObjById('OPTIONS'+idPerso)) {

			if (returnObjById('PERSO'+idPerso).checked == true) {
				returnObjById('OPTIONS'+idPerso).style.display = "";
			}else{
				returnObjById('OPTIONS'+idPerso).style.display = "none";
			}
		}
		ouvrirOptions(idPerso);
		
	}


	function ouvrirOptions(idPerso) {
		var statutDisplay = returnObjById('attributs'+idPerso).style.display;

		if (statutDisplay=='none') {
			returnObjById('attributs'+idPerso).style.display = "";
			returnObjById('fleche'+idPerso).src="http://www.valmour.fr/images/picto/fleche_haut.gif";
		}else{
			returnObjById('attributs'+idPerso).style.display = "none";
			returnObjById('fleche'+idPerso).src="http://www.valmour.fr/images/picto/fleche_bas.gif";
		}
	}
	
	/***********************************************/	
	
	/** FONCTIONS SPECIFIQUES AU PROCESSUS DE COMMANDE **/	
	function selection_transporteur(id_transporteur) {
	
		returnObjById('choix_transporteur').value = id_transporteur;

		//selection de ICI RELAIS
		if ( id_transporteur == 9 ) {
			returnObjById('selection_point_relais').style.display='block';
			returnObjById('selection_adresse_livraison').style.display='none';
		} else {
			returnObjById('selection_point_relais').style.display='none';
			returnObjById('selection_adresse_livraison').style.display='block';
		}
	
		//affichage du bloc "infos complementaires
		returnObjById('infos_complementaires').style.display='block';
	
		//affichage du champ "commentaire"
		if (
		    id_transporteur == 1 //exapaq
		    || id_transporteur == 3 //envoi postal
		    || id_transporteur == 8 //fedex
		    || id_transporteur == 9 //ici relais
		) {
			returnObjById('divCommentaire').style.display='';
		} else {
			returnObjById('divCommentaire').style.display='none';
		}
	
	}
	
	// fonction d'affichage du plan d'accès GOOGLEMAP sur un iframe
	function afficher_iframe_plan( id_frame, src_frame ) {
		display_iframe = returnObjById(id_frame).style.display;

		if ( display_iframe == 'none' ) {
			returnObjById(id_frame).style.display = 'block';
			returnObjById(id_frame).src = src_frame;

		}else{
			returnObjById(id_frame).style.display = 'none';
		}
		
	}
		
	//function displayNewAdresse(affiche) {
	function displayNewAdresse( bo_affichage ) {
	
		//if (returnObjById("newAdresse").style.display=="none" ) {
		if ( bo_affichage ) {
			returnObjById("newAdresse").style.visibility="visible";
			returnObjById("newAdresse").style.display="block";
		}
		else {
			returnObjById("newAdresse").style.visibility="hidden";
			returnObjById("newAdresse").style.display="none";
		}
	
	}	
	/***********************************************/	

