/* 2008 > Gaetan Langhade < Equallia - pour Amaguiz */


/* simulation financiere du gabarit 3 du tunnel de devis */
// GUR : l'event est géré dans surface
//if (window.addEventListener) window.addEventListener("load",lancerSimulation,false);
//else if (window.attachEvent) window.attachEvent("onload",lancerSimulation);


//Tarifs des formules
var formules = new Array(); //ici chiffre de remplissage
var formuleIndex = 0; //specification novembre 08

//Correlation au formulaire :
var listeTauxMajoration = new Array();
var listePacks = new Array();

//Tarifs des packs
var packsTab = new Array();
var packTabTauxMaj;
var lesFranchises = new Array();

//Tarifs des options
var optyonsTab = new Array();
var optyonsOffTab = new Array();
//Correlation au formulaire :
var lesOptions = new Array();

//Echeancier
var rythme = 1; //specification novembre 08
var auRythme = new Array(" /mois"," /an")
//Correlation au formulaire :
var leRythme = new Array();

//Correlation au formulaire :
var leTarifTotalMensuel;		/* champ select tarif mensuel */
var leTarifTotalAnnuel;		/* champ select tarif annuel */
var leTarifTotal1;					/* barre d'outils colonne de gauche TOTAL DE MA FORMULE */
var leTarifTotal2;					/* colonne de droite MON TARIF */
var leTarifTotal3;					/* colonne de droite bilan */
var leTarifTotal_hp;				/* colonne de droite bilan hors promo */
var leTarifFormule1;			/* colonne de gauche */
var leTarifFormule2;			/* colonne de droite */
//var lesOptionsSouscrites; /* colonne de droite : liste des options souscrites */
var optyons;

function optionOfferte(code) {
	if ( typeof(optyonsOffTab) != 'undefined' ) {
		var opt = code.split(/[;,]+/g);
		for (var o = 0; o < optyonsOffTab.length; ++o) {
			for (var i = 0; i < opt.length; ++i) {
				if (optyonsOffTab[o] == opt[i]) {
					return true;
				}
			}
		}
	}
	return false;
}

function lancerSimulation(){
	try{
		var majorationsElems = getElementsByClassName("garanties",document);
		if (majorationsElems.length > 0){
			leTarifFormule1 = document.getElementById("tarifFormule1");
			leTarifFormule2 = document.getElementById("tarifFormule2");
			leTarifTotalMensuel = document.getElementById("tarifTotalMensuel");
			leTarifTotalAnnuel = document.getElementById("tarifTotalAnnuel");
			leTarifTotal1 = document.getElementById("tarifTotal1");
			leTarifTotal2 = document.getElementById("tarifTotal2");
			leTarifTotal3 = document.getElementById("tarifTotal3");
			leTarifTotal_hp = document.getElementById("tarifTotal_hp");
			
			var majorationElem = majorationsElems[0].getElementsByTagName("input");
			for (i=0;i<majorationElem.length;i++) {
				if (majorationElem[i].type == "radio") {
					listeTauxMajoration.push(majorationElem[i]); //attention aux champs caches
				}
			}
			// gestion des taux de majorations
			for (i=0;i<listeTauxMajoration.length;i++){
				if (listeTauxMajoration[i].checked) {
					formuleIndex = i;
					optyons = optyonsTab[i]; // on prend comme référenciel de tarifs les tarifs du taux de majoration courant;
					packTabTauxMaj = packsTab[i];
				}
				listeTauxMajoration[i].onclick = function(){
					for (current=0;current<listeTauxMajoration.length;current++){
						if (this != listeTauxMajoration[current]) {
							listeTauxMajoration[current].parentNode.className = "pan";
						} else {
							this.parentNode.className = "pan actif";
							formuleIndex = current;
							optyons = optyonsTab[current];
							packTabTauxMaj = packsTab[current];
							calculer();
						}	
					}	
				}	
			}
			
			//MGS - gestion des packs - Boitier Prevention
			var packsElems = getElementsByClassName("tableauPrevention",document);
			if(typeof(packsElems) != 'undefined' && packsElems.length>0){
				var packsInput = packsElems[0].getElementsByTagName("input");
				for(i=0;i<packsInput.length;i++){
					if(packsInput[i].type== "checkbox"){
						listePacks.push(packsInput[i]);
					}
				}
			}
			// gestion bloc de droite - Boitier Prevention
			var lesPacksSouscrits = document.getElementById("articat2");
			for (i=listePacks.length-1; i>=0 ; i--){
				listePacks[i].onclick = calculer;
				var idPack = listePacks[i].id;
				ceerAvant("dd", packTabTauxMaj[idPack][rythme] + devise,lesPacksSouscrits,"id~" + idPack + "listeAz","class~desactif");
				var labelPack = listePacks[i].parentNode.getElementsByTagName("label")[0].innerHTML;
				ceerAvant("dt",labelPack,lesPacksSouscrits,"id~" + idPack + "listeAa","class~desactif");
			}
			//ceerAvant("h3", "Mon service Pr\u00E9vention",lesPacksSouscrits,"id~titrePack","class~desactif");
			
			// gestion des fractionnements
			var listeFractionnement = getElementsByClassName("ligne",document)[0].getElementsByTagName("input");
			for (i=0;i<listeFractionnement.length;i++) {
				if (listeFractionnement[i].type == "radio") {
					leRythme.push(listeFractionnement[i]); //attention aux champs caches
				}
			}
			for (i=0;i<leRythme.length;i++){
				if (leRythme[i].checked) {
					rythme = i;
				}
				if (navigator.userAgent.toLowerCase().indexOf("safari") > -1) {
					leRythme[i].parentNode.style.paddingBottom = "3px";
				}
				leRythme[i].onclick = function(){
					for (i=0;i<leRythme.length;i++){
						if (this != leRythme[i]) {
							leRythme[i].parentNode.className = "";
						} else{
							this.parentNode.className = "actif";
							rythme = i;
							calculer();
						}	
					}	
				}	
			}
			
			// gestion bloc de droite et calculs totaux
			var lesOptionsSouscrites = getElementsByClassName("coeur",document)[0].getElementsByTagName("dl")[1];
			//CCD : recherche des éléments input simplement pour affichage tarifs options (suite modification structure Html de la page devis_left )
			//	var listeOptions = getElementsByClassName("devis",document)[0].getElementsByTagName("table")[1].getElementsByTagName("input");
			var listeOptions = document.getElementsByTagName("input");			for (i=0;i<listeOptions.length;i++) { 
				if (listeOptions[i].type == "checkbox") {
					lesOptions.push(listeOptions[i]); //attention aux champs caches
				}
			}
			for (i=lesOptions.length-1; i>=0 ; i--){
				lesOptions[i].onclick = calculer;
				var idOption = lesOptions[i].id;
				if(idOption != 'PREV1' && idOption != 'PREV2' && idOption != 'PREV3'){
					ceerAvant("dd", amaguiz_tools.getValueFromFraction( optyons[idOption][rythme] , rythme ) + devise,lesOptionsSouscrites,"id~" + idOption + "listeAz","class~desactif");
					var labelOption = lesOptions[i].parentNode.getElementsByTagName("label")[0].innerHTML;
					// DAQ: Amaline ne désire plus que les libellés soient tronqués
					//labelOption = (labelOption.length > 24 ? (labelOption.charCodeAt(22) == 32 ? labelOption.substring(0,22) + "\u2026" : labelOption.substring(0,23) + "\u2026") : labelOption);
					ceerAvant("dt",labelOption,lesOptionsSouscrites,"id~" + idOption + "listeAa","class~desactif");
				}
			}

			calculer();
		}
	} catch(e){
		//alert(e); 
	}
}


var devise = " \u20AC";
function calculer(){
	var total = formules[formuleIndex][rythme];
	var totalMensuel = formules[formuleIndex][0];
	var totalAnnuel = formules[formuleIndex][1];

	leTarifFormule1.innerHTML = amaguiz_tools.convertToComma( total ) + devise + auRythme[rythme];
	leTarifFormule2.innerHTML = amaguiz_tools.convertToComma( total ) + devise;

	var totalOptionsMensuel = 0;
	var totalOptionsAnnuel = 0;
	var totalOptions = 0;
	var totalOptions_HP = 0;
	var totalPack = 0;
	var totalPackAnnuel = 0;
	var totalPackMensuel = 0;
	var packChecked = false;
	for (z=0;z<lesOptions.length;z++){
		var idOption = lesOptions[z].id;
		if(idOption != 'PREV1' && idOption != 'PREV2' && idOption != 'PREV3'){
			if (optionOfferte(lesOptions[z].value) ) {
				document.getElementById(idOption + "tarif").innerHTML = 'Offert';
				document.getElementById(idOption + "listeAz").innerHTML = 'Offert' ;
			} else {
				var tarifOption =  amaguiz_tools.convertToComma( amaguiz_tools.getValueFromFraction( optyons[idOption][rythme], rythme ) ) + devise;
				document.getElementById(idOption + "tarif").innerHTML = tarifOption + auRythme[rythme];
				document.getElementById(idOption + "listeAz").innerHTML = tarifOption ;
			}
			if (lesOptions[z].checked){
				totalOptions += optyons[idOption][rythme];
				if (optionOfferte(lesOptions[z].value)) {
					if (typeof(optyons[idOption+"_HP"][rythme]) != 'undefined') {
						totalOptions_HP += optyons[idOption+"_HP"][rythme];
					}
				}
				totalOptionsMensuel += optyons[idOption][0];
				totalOptionsAnnuel += optyons[idOption][1];
				document.getElementById(idOption + "listeAa").className = "";
				document.getElementById(idOption + "listeAz").className = "";
			} else{
				document.getElementById(idOption + "listeAa").className = "desactif";
				document.getElementById(idOption + "listeAz").className = "desactif";
			}	
		}
	}
	
	//Boitier Prevention
	for (z=0;z<listePacks.length;z++){
		var idPack = listePacks[z].id;
		var tarifPack =  amaguiz_tools.convertToComma( amaguiz_tools.getValueFromFraction(packTabTauxMaj[idPack][rythme],rythme)) + devise;
		document.getElementById(idPack + "tarif").innerHTML = tarifPack + auRythme[rythme];
		document.getElementById(idPack + "listeAz").innerHTML = tarifPack ;
		if (listePacks[z].checked){
			packChecked = true;
			document.getElementById(idPack + "listeAa").className = "";
			document.getElementById(idPack + "listeAz").className = "";
			totalPackAnnuel = packTabTauxMaj[idPack][1];
			totalPackMensuel = packTabTauxMaj[idPack][0];
			totalPack = packTabTauxMaj[idPack][rythme];
		}else{
			document.getElementById(idPack + "listeAa").className = "desactif";
			document.getElementById(idPack + "listeAz").className = "desactif";
		}
	}
	if(packChecked){
		document.getElementById("titrePack").className = "";
		document.getElementById("INCH*franchise").innerHTML = "0";
		document.getElementById("VOLH*franchise").innerHTML = "0";//lesFranchises["VOLH*"]/2;
		document.getElementById("INCH*franchisebloc").className="franchisemodifiee";
		document.getElementById("VOLH*franchisebloc").className="franchisemodifiee";
	}else{
		document.getElementById("titrePack").className = "desactif";
		document.getElementById("INCH*franchise").innerHTML = lesFranchises["INCH*"];
		document.getElementById("VOLH*franchise").innerHTML = lesFranchises["VOLH*"];
		document.getElementById("INCH*franchisebloc").className="";
		document.getElementById("VOLH*franchisebloc").className="";
	}
	
	// le total des options est toujours en annuel, il faut lui appliquer un recalcul si on est en mensuel (divisé par 12) ;
	// par soucis d'arrondi, on applique le recalcul sur la somme des options
	total += amaguiz_tools.getValueFromFraction( totalOptions, rythme );
	totalMensuel += amaguiz_tools.getValueFromFraction( totalOptionsMensuel, 0 );
	totalAnnuel += amaguiz_tools.getValueFromFraction( totalOptionsAnnuel, 1 );
	
	//Boitier Prevention
	total += amaguiz_tools.getValueFromFraction(totalPack,rythme);
	totalMensuel +=  amaguiz_tools.getValueFromFraction(totalPackMensuel,0);
	totalAnnuel +=  amaguiz_tools.getValueFromFraction(totalPackAnnuel,1);
	
	totalOptions_HP = amaguiz_tools.getValueFromFraction( totalOptions_HP, rythme );
	
	
	if (total != Math.round(total)) {
		total = amaguiz_tools.roundNumber( total , amaguiz_tools.decimal);
	}
	totalMensuel = amaguiz_tools.roundNumber( totalMensuel , amaguiz_tools.decimal); 
	totalAnnuel = amaguiz_tools.roundNumber( totalAnnuel , amaguiz_tools.decimal);

	leTarifTotalMensuel.innerHTML = amaguiz_tools.convertToComma( totalMensuel ) + devise + auRythme[0];
	leTarifTotalAnnuel.innerHTML = amaguiz_tools.convertToComma( totalAnnuel ) + devise + auRythme[1];
	
	leTarifTotal1.innerHTML = amaguiz_tools.convertToComma( total ) + devise + "<span>" + auRythme[rythme] + "</span>";
	leTarifTotal2.innerHTML = amaguiz_tools.convertToComma( total ) + devise + auRythme[rythme];
	leTarifTotal3.innerHTML = amaguiz_tools.convertToComma( total ) + devise ;
	
	totalOptions_HP+=total;
	if (totalOptions_HP != Math.round(totalOptions_HP)) {
		totalOptions_HP = amaguiz_tools.roundNumber( totalOptions_HP , amaguiz_tools.decimal);
	}
	if (leTarifTotal_hp != null) {
		leTarifTotal_hp.innerHTML = amaguiz_tools.convertToComma( totalOptions_HP ) + devise ;
	}
}


