/**
 *	########################################################################
 *	Controle de la valeur saisie dans les champs numeriques
 *	Si la valeur n'est pas num?rique ou s'il y a un point, le controle va 
 *	prendre la derni?re valeur valide.
 *	########################################################################
 */
function ControleVal(obj){

	while(obj && (isNaN(obj.value)) || obj.value.indexOf('.') != -1){
			var oldVal = obj.value;
			oldVal= oldVal.substring(0,oldVal.length-1);
			obj.value = oldVal;
	}
}

/**
 *	########################################################################
 *	Fonction qui controle l'existence d'une valeur dans les champs numeriques
 *	########################################################################
 */
function ControleExist(obj){
	if(obj && obj.value == ''){
		obj.value = 0;
	}
}

/**
 *	########################################################################
 *	Calcul du pourcentage prix / apport
 *	On regarde le montant de l'apport par rappor au prix de vente,
 *	Si celui-ci est valide, on affiche le pourcentage, sinon on n'affiche
 *	un ensemble vide.
 *	########################################################################
 */	
function CalculValue() {
    var prixvente = $F('vehicule.prix');
    var votreapport = $F('projet.montantApport');
	    if(!isNaN(prixvente) && prixvente != '' && !isNaN(votreapport) && votreapport != '') {
	       var calcul = (votreapport/prixvente) * 100;
	       if(!isNaN(calcul) && calcul > 0 && calcul != 'Infinity'){
	       
	       		$('spanSoit').innerHTML = Math.round(calcul)+'%';
	       }
	       else{
	       		$('spanSoit').innerHTML = "";
	       }
	    }
}

/**
 *	########################################################################
 *	Calcul du credit ( prix - apport )
 *	Permet de calculer le credit qui sera envoy? au Controller
 *	########################################################################
 */
function CalculMontantCredit() {
    var prixvente = $F('vehicule.prix');
    var votreapport = $F('projet.montantApport');
    $('projet.montantCredit').value = prixvente - votreapport;
}

/**
 *	########################################################################
 *	Fonction de controle des valeurs envoy? pour l'E-mail
 *	Fonction qui ? vocaction ? dispara?tre
 *	########################################################################
 */
function getSimulation(param1, param2, param3) {
    	//window.alert("getSimulation "+param1+"-"+param2+"-"+param3);
	}
	function isNumeric(sText){
    	var ValidChars = "0123456789.";
	    var IsNumber=true;
    	var Char;
	    for (i = 0; i < sText.length && IsNumber == true; i++){
    	    Char = sText.charAt(i);
        	if (ValidChars.indexOf(Char) == -1){
            	IsNumber = false;
        	}
    	}
   	 	return IsNumber;
	}

/**
 *	########################################################################
 *	Fonctions DWR pour la recuperation des Marque / Modele / Type des vehicules
 *	########################################################################
 */
	// Swallow errors and warnings from DWR; handle appropriately in your app
	// Swallow errors and warnings from DWR; handle appropriately in your app
	DWREngine.setErrorHandler(null);
	DWREngine.setWarningHandler(null);
	
	
	
	function loadMarque(marche,typeBareme,nameForm,str1,str2,str3) {
		/* Appel Ajax pour l'initialisation de la combo des marques */
		
			var reponseMarque = function(ret)
		{
			dwr.util.removeAllOptions('vehicule.marqueArgus');
			dwr.util.removeAllOptions('vehicule.modeleArgus');
			dwr.util.removeAllOptions('vehicule.referenceArgus');
			dwr.util.addOptions('vehicule.marqueArgus', ret, 'll_mrq', 'c_mrq');
	
			if(str1!=null && str2!=null && str3!=null)
			{
				var selectorigine = document.getElementById('vehicule.marqueArgus');
				var longueur = selectorigine.childNodes.length;
				
				//var reg=new RegExp("[\\s\*\.\+\-;,_/]", "gi");
				var reg=new RegExp("[\\s/\W|_.]", "gi");
				str1=str1.replace(reg,"");
				str1=str1.toUpperCase();
	
				for(var i=0;i<longueur-1;i++)
				{
					var letexte =selectorigine.options[i].text;
					var lavaleur =selectorigine.options[i].value;
					var parent = selectorigine.parentNode;
					var comparant =letexte.replace(reg,"");
					comparant=comparant.toUpperCase();
					
					if(str1==comparant)
					{
						var input =document.createElement('input');
						
						var css= document.createAttribute("class");
						css.nodeValue ="text";
						input.setAttributeNode(css);
						
						var readonly= document.createAttribute("readonly");
						readonly.nodeValue="true";
						input.setAttributeNode(readonly);
						
						var valeur = document.createAttribute("value");
						valeur.nodeValue= letexte;
						input.setAttributeNode(valeur);
						
						var id_hidden = document.createAttribute("id");
						id_hidden.nodeValue = "lib_ma";
						input.setAttributeNode(id_hidden);
					
						var hidden=document.createElement('input');
				
						var id = document.createAttribute("id");
						id.nodeValue = "vehicule.marqueArgus";
						hidden.setAttributeNode(id);
					
						var name = document.createAttribute("name");
						name.nodeValue="vehicule.marqueArgus";
						hidden.setAttributeNode(name);
					
						var valeur_hidden = document.createAttribute("value");
						valeur_hidden.nodeValue=lavaleur;
						hidden.setAttributeNode(valeur_hidden);
							
						var type_hidden = document.createAttribute("type");
						type_hidden.nodeValue="hidden";
						hidden.setAttributeNode(type_hidden);
						
		
						parent.insertBefore(input,selectorigine);
				
						parent.insertBefore(hidden,input);
				
						loadModele(lavaleur,nameForm,str2,str3);
						
						dwr.util.removeAllOptions('vehicule.marqueArgus');
						
						parent.removeChild(selectorigine);
						
						
					}
				}
			}
		}
		ArgusDwr.getMarqueArgusList(marche,typeBareme,reponseMarque);
		

	}
	
	function loadModele(marque, nameForm , str2,str3) {
		/* Appel Ajax pour l'initialisation de la combo des mod?les */
		var natureMateriel ;
		for(i=0;i<document.forms[nameForm].elements.length;i++){
				if(document.forms[nameForm].elements[i].name.substr(0,22) == 'projet.natureMateriel'){
						natureMateriel = document.forms[nameForm].elements[i].value;
				}
			}
		var reponseModele = function(ret)
		{
		
			if (ret) {
				$('vehicule.modeleArgus').disabled = false;
				dwr.util.removeAllOptions('vehicule.modeleArgus');
				dwr.util.removeAllOptions('vehicule.referenceArgus');
				dwr.util.addOptions('vehicule.modeleArgus', ret, 'c_mdl', 'l_mdl');
				if(str2!=null && str3!=null)
				{
					var selectorigine = document.getElementById('vehicule.modeleArgus');	
					var longueur = selectorigine.childNodes.length;
					//var reg=new RegExp("[\\s\*\.\+\-;,_/]", "gi");
					var reg=new RegExp("[\\s/\W|_.]", "gi");
					str2=str2.replace(reg,"");
					str2=str2.toUpperCase();
					for(var i=0;i<longueur;i++)
					{
					
						var letexte =selectorigine.options[i].text;
						var lavaleur =selectorigine.options[i].value;
						var parent = selectorigine.parentNode;
						
						var comparant =letexte.replace(reg,"");
						comparant=comparant.toUpperCase();
		
						
						if(str2==comparant)
						{
							var input =document.createElement('input');
		
							var id = document.createAttribute("id");
							id.nodeValue = "lib_mo";
							input.setAttributeNode(id);
							var css= document.createAttribute("class");
							css.nodeValue ="text";
							input.setAttributeNode(css);
						
							var readonly= document.createAttribute("readonly");
							readonly.nodeValue="true";
							input.setAttributeNode(readonly);
							
							var valeur = document.createAttribute("value");
							valeur.nodeValue= letexte;
							input.setAttributeNode(valeur);
						
							
							var hidden=document.createElement('input');
						
							var id = document.createAttribute("id");
							id.nodeValue = "vehicule.modeleArgus";
							hidden.setAttributeNode(id);
							
							var name = document.createAttribute("name");
							name.nodeValue="vehicule.modeleArgus";
							hidden.setAttributeNode(name);
							
							var valeur_hidden = document.createAttribute("value");
							valeur_hidden.nodeValue=lavaleur;
							hidden.setAttributeNode(valeur_hidden);
							
							var type_hidden = document.createAttribute("type");
							type_hidden.nodeValue="hidden";
							hidden.setAttributeNode(type_hidden);
							
							parent.insertBefore(input,selectorigine);
							parent.insertBefore(hidden,input);
							
							loadType(lavaleur,nameForm,str3);
							dwr.util.removeAllOptions('vehicule.modeleArgus');
							
							parent.removeChild(selectorigine);
						}
						else
						{
							if(str2!='0')
							{
								var reglike = new RegExp(str2,"gi");
								var valuerboolean = reglike.test(comparant);
								
								if( valuerboolean === false )
								{
									if(lavaleur!='00')
									{
										selectorigine.removeChild(selectorigine.options[i]);
										i=i-1;
									}
									
								}
							}
						}
					}
				}
			}
			else {
				dwr.util.removeAllOptions('vehicule.modeleArgus');
				dwr.util.addOptions('vehicule.modeleArgus', ["aucun modele"]);
				dwr.util.removeAllOptions('vehicule.referenceArgus');
				$('vehicule.modeleArgus').disabled = true;
			}
			
		}
		var dateImmatVehicule = "";
		if(eval($('vehicule.dateImmatriculation')))
			 dateImmatVehicule =$('vehicule.dateImmatriculation').value;
		else
			 dateImmatVehicule ="01/"+$('moisImmatVehicule').value+"/"+$('anneeImmatVehicule').value;
	
		ArgusDwr.getModeleArgusList(marque, natureMateriel, dateImmatVehicule,reponseModele);
	}
	
	function loadType(modele, nameForm, str3) {
		var natureMateriel ;
		for(i=0;i<document.forms[nameForm].elements.length;i++){
				if(document.forms[nameForm].elements[i].name.substr(0,22) == 'projet.natureMateriel'){
						natureMateriel = document.forms[nameForm].elements[i].value;
				}
			}
		
		
		// a modifier fo trouver une combine pour prendre soit select soit imput
		//var index = $('vehicule.marqueArgus').selectedIndex;
		var marque = document.getElementById('vehicule.marqueArgus').value;

		/* Appel Ajax pour l'initialisation de la combo des types */
		var reponseType = function(ret)
		{
			if (ret) {
				$('vehicule.referenceArgus').disabled = false;
				dwr.util.removeAllOptions('vehicule.referenceArgus');
				dwr.util.addOptions('vehicule.referenceArgus', ret, 'ref_veh', 'l_typ');
				if(str3!=null)
				{
					var selectorigine = document.getElementById('vehicule.referenceArgus');	
					var longueur = selectorigine.childNodes.length;
					
					var reg=new RegExp("[\\s/\W|_.]", "gi");
					str3=str3.replace(reg,"gi");
					str3=str3.toUpperCase();
					for(var i=0;i<longueur;i++)
					{

						var letexte =selectorigine.options[i].text;
						var lavaleur =selectorigine.options[i].value;
						var parent = selectorigine.parentNode;;
						var comparant =letexte.replace(reg,"gi");
						comparant=comparant.toUpperCase();
	
						if(comparant==str3)
						{
					
							var input =document.createElement('input');
		
							var id = document.createAttribute("id");
							id.nodeValue = "lib_ty";
							input.setAttributeNode(id);
							var css= document.createAttribute("class");
							css.nodeValue ="text";
							input.setAttributeNode(css);
						
							var readonly= document.createAttribute("readonly");
							readonly.nodeValue="true";
							input.setAttributeNode(readonly);
							
							var valeur = document.createAttribute("value");
							valeur.nodeValue= letexte;
							input.setAttributeNode(valeur);
						
							
							var hidden=document.createElement('input');
						
							var id = document.createAttribute("id");
							id.nodeValue = "vehicule.referenceArgus";
							hidden.setAttributeNode(id);
							
							var name = document.createAttribute("name");
							name.nodeValue="vehicule.referenceArgus";
							hidden.setAttributeNode(name);
							
							var valeur_hidden = document.createAttribute("value");
							valeur_hidden.nodeValue=lavaleur;
							hidden.setAttributeNode(valeur_hidden);
							
							var type_hidden = document.createAttribute("type");
							type_hidden.nodeValue="hidden";
							hidden.setAttributeNode(type_hidden);
							
							
							parent.insertBefore(input,selectorigine);
							parent.insertBefore(hidden,input);
							
							parent.removeChild(selectorigine);
								
						}
						
						else
						{
							if(str3!='0')
							{
								var reglike = new RegExp(str3,"gi");
								var valuerboolean = reglike.test(comparant);
								if( valuerboolean === false )
								{
									selectorigine.removeChild(selectorigine.options[i]);
									i=i-1;
								}
							}
						}			
					}
				}
			}
			else {
				dwr.util.removeAllOptions('vehicule.referenceArgus');
				dwr.util.addOptions('vehicule.referenceArgus', ["aucun type"]);
				$('vehicule.referenceArgus').disabled = true;
			}
		}
		
		var dateImmatVehicule = "";
		if(eval($('vehicule.dateImmatriculation')))
			 dateImmatVehicule =$('vehicule.dateImmatriculation').value;
		else
			 dateImmatVehicule ="01/"+$('moisImmatVehicule').value+"/"+$('anneeImmatVehicule').value;
		
		ArgusDwr.getTypeArgusList(marque, natureMateriel, modele, dateImmatVehicule,reponseType);
	}
	
	function testXmlFlash(){
		var url = 'simulation-vac-xml-flash.htm';
		new Ajax.Request(url, {
  		method: 'post',
  		onSuccess: function(response) {
			{}
		}
		});
	} 
	
/**
 *	########################################################################
 *	Gestion des prestations (affichage tableau vehicule + controle d'exclu)
 *	Cette fonction permet l'affichage ou non du tableau de vehicule et
 *	d?clenche l'animation d'ouverture ou de fermeture du tableau vehicule
 *	Commentaires d?taill?s dans la fonction.
 *	########################################################################
 */
	function gestionPrestation(obj, nameForm, isValeursFournies,isValeurNormalisees){
	
		//Status des prestation initial
		var beforeStatus = 0;
		//Status des prestations au fil de la fonction
		var status = 0;
		//Si vrai, status prestation = 1
		if(obj.checked == false){
			status = 1;
		}
		
		//Parcours des elements du formulaire, si une prestation est coch? on incr?mente
		//beforeStatus, on decoche toutes les prestations
		for(i=0;i<document.forms[nameForm].elements.length;i++){
			if(document.forms[nameForm].elements[i].name.substr(0,10) == 'Prestation'){
				if(document.forms[nameForm].elements[i].checked == true){
					beforeStatus ++;
				}
				document.forms[nameForm].elements[i].checked = false;
			}
		}
		//Modification pour eviter l'appel a l'animation quand les valeurs sont fournies
		if (!isValeursFournies || (isValeursFournies==true && isValeurNormalisees==false))
		{
			//s'il n'y a plus de prestation coch? ou seulement une, on active l'animation
			if(beforeStatus < 2){
				Effect.toggle('detail-integrale', 'slide',{
				beforeStart:function(){
					for(i=0;i<document.forms[nameForm].elements.length;i++){
						//Avant l'animation, on disable toutes les prestation
						if(document.forms[nameForm].elements[i].name.substr(0,10) == 'Prestation'){
							document.forms[nameForm].elements[i].disabled = true;
						}
					}
				},
				afterFinish:function(){
					for(i=0;i<document.forms[nameForm].elements.length;i++){
						//On les r?active ? la fin de l'animation
						if(document.forms[nameForm].elements[i].name.substr(0,10) == 'Prestation'){
							document.forms[nameForm].elements[i].disabled = false;
						}
					}
				}
				});
			}
		}
		//Si la prestation ?tait coch?, on la recoche.
		if(status == 0){
			obj.checked = true;
		}	
	}

	/**
	 *	########################################################################
	 *	Fonction qui corrige un bug de rafraichissement sous FireFox.
	 *	Quand on F5 sous Firefox avec les checkbox Prestations d?coch?s, le 
	 *	formulaire v?hicule apparait quand m?me, ce qui inverse l'animation
	 *	On v?rifie donc a chaque load de la page si les checkbox sont coch?s ou
	 *	pas.
	 *	########################################################################
	 */
	function gestionPrestationStart(nameForm, isValeursFournies,isValeurNormalisees){
		
		
		
		//Status des prestation initial
		var beforeStatus = 0;
		//Status des prestations au fil de la fonction
	
		//Parcours des elements du formulaire, si une prestation est coch? on incr?mente
		//beforeStatus, on decoche toutes les prestations
		for(i=0;i<document.forms[nameForm].elements.length;i++){
			if(document.forms[nameForm].elements[i].name.substr(0,10) == 'Prestation'){
				if(document.forms[nameForm].elements[i].checked == true){
					beforeStatus ++;
				}
			}
		}
		//Modification pour eviter l'appel a l'animation quand les valeurs sont fournies
		if (!isValeursFournies || (isValeursFournies==true && isValeurNormalisees==false))
		{
			//s'il n'y a plus de prestation coch? ou seulement une, on active l'animation
			if(beforeStatus == 0){
				Effect.toggle('detail-integrale', 'slide',{
				duration: 0.1,
				beforeStart:function(){
					for(i=0;i<document.forms[nameForm].elements.length;i++){
						//Avant l'animation, on disable toutes les prestation
						if(document.forms[nameForm].elements[i].name.substr(0,10) == 'Prestation'){
							document.forms[nameForm].elements[i].disabled = true;
						}
					}
				},
				afterFinish:function(){
					for(i=0;i<document.forms[nameForm].elements.length;i++){
						//On les r?active ? la fin de l'animation
						if(document.forms[nameForm].elements[i].name.substr(0,10) == 'Prestation'){
							document.forms[nameForm].elements[i].disabled = false;
						}
					}
				}
				});
			}
		}
	}	
	
	
/**
 *	########################################################################
 *	Affichage de Kms/an quand Entretien est coch?, hidden si autrement 
 *	Fonction pour les PRO
 *	########################################################################
 */	
 
 	function affichageKmAn(obj){
 
		if((obj.value == 'PRCAR') && (obj.checked == true)){
			if($('nbKmPrest') != null){
				$('nbKmPrest').style.visibility='hidden';
				$('nbKmPrest').style.visibility='none';
			}
		}
		else{
			if($('nbKmPrest') != null){
				$('nbKmPrest').style.visibility='visible';
				$('nbKmPrest').style.visibility='block';
			}
		}
	}
	
/**
 *	########################################################################
 *	Affichage de Kms/an quand Entretien est coch', hidden si autrement 
 *	( Au chargement)
 *	########################################################################
 */
 
 
	function startAffichageKmAn(nameForm){
		
		for(i=0;i<document.forms[nameForm].elements.length;i++){
			if(document.forms[nameForm].elements[i].name.substr(0,10) == 'Prestation' && document.forms[nameForm].elements[i].value == 'PRCAR'
			&& document.forms[nameForm].elements[i].checked == true){
				if($('nbKmPrest') != null){
					$('nbKmPrest').style.visibility='hidden';
					$('nbKmPrest').style.visibility='none';
				}
			}
		}		
		
	}
	
	
/**
 *	########################################################################
 *	V?rification du montant de l'apport / Prix de vente pour LOA / LOAB
 *	Si l'apport ? un ratio inferieur ? celui donn? par rapport au prix de vente
 *	on augmente ce ratio.
 *	########################################################################
 */
 
 	function verifApportLOA(){
 		
 		var prixVente = $F('vehicule.prix');
   		var apport = $F('projet.montantApport');
   				
   		if((apport / prixVente) < 0.05){
   			apport = prixVente * 0.05;
   			if(Math.floor(apport)!=apport)
   				$('projet.montantApport').value =Math.floor(apport+1);
   			else
   				$('projet.montantApport').value =apport
   			
   			
   			CalculValue();
   		}
 	}
 	
/**
 *	########################################################################
 *	Affiche ou cache la francisation du bateau en fonction de la cat?gorie
 *	bateau : A, B, C on affiche, D on cache
 *	########################################################################
 */	
 	
 	function afficheNautFrancise(obj, cible){
 		if(obj.value == 'A' || obj.value == 'B' || obj.value == 'C'){		
			$(cible).style.visibility='visible';
			$(cible).style.visibility='block';
 		}
		else{
			$(cible).style.visibility='hidden';
			$(cible).style.visibility='none';
		}
 	}

/**
 *	########################################################################
 *	Affiche ou cache le select qui permet de choisir le type de vehicule
 *   "vu" utilitaire ou "vt" vehicule de tourisme
 *	########################################################################
 */	
 	
 	function changeNatureMateriel(obj,nameForm){
 		
 		var value510 = '510';
    	var value590 = '590';
    	var marque ;
    	var indexNatMat ;
 		for(i=0;i<document.forms[nameForm].elements.length;i++){
				if(document.forms[nameForm].elements[i].name.substr(0,22) == 'vehicule.marqueArgus'){
						marque = document.forms[nameForm].elements[i].value;
				}
				if(document.forms[nameForm].elements[i].name.substr(0,22) == 'projet.natureMateriel'){
					indexNatMat = i;
				}
			}
 		if(obj.value == 'VU'){	
			document.forms[nameForm].elements[indexNatMat].value = value590;
		}
		if(obj.value == 'VT'){
 			document.forms[nameForm].elements[indexNatMat].value = value510;
 		}
 		dwr.util.removeAllOptions('vehicule.modeleArgus');
		dwr.util.removeAllOptions('vehicule.referenceArgus');
		loadModele(marque, nameForm);
 	}
 	
 	function infoAutreKM(obj,message){
 	
 	
 		new Tip(obj, message , {
		delay : 0,
		hook: { target: 'middleLeft', tip: 'bottomLeft' },																										
		offset: {x:50, y:0}, 
		border: 3,
		radius: 3,
		stem: 'bottomLeft'
	});
	
 	}
 	
 	/**
 	* Re-initialise les choix des informations Argus tels: marque, modele, type
 	*/
 		
 	function initialiseChoixArgus(){
 		
 		if($('vehicule.marqueArgus') && $('vehicule.modeleArgus') && $('vehicule.referenceArgus')   ){
 		
 			$('vehicule.marqueArgus').selectedIndex=0;
 		
	 		if( ($('vehicule.modeleArgus').disabled !="disabled") ){
	 			
	 			while($('vehicule.modeleArgus').length>0){
	 				$('vehicule.modeleArgus').remove($('vehicule.modeleArgus').options[0]);
	 			}
	 			$('vehicule.modeleArgus').disabled="disabled";	
	 		}
	 		
	 		if( ($('vehicule.referenceArgus').disabled !="disabled") ){
	 			
	 			while($('vehicule.referenceArgus').length>0){
	 				$('vehicule.referenceArgus').remove($('vehicule.referenceArgus').options[0]);
	 			}
	 			$('vehicule.referenceArgus').disabled="disabled";	
	 		}
 		}
 	}
 
 	
