function calculPrix(code, Tableau) {
	var nb = document.getElementById("nb"+code).value;
	
	var duree = document.getElementById(code).innerHTML;
	var puTtc = getMontantProduitByCodeAndQuantite(Tableau, code, duree);
	var prixTtc = nb * puTtc;
	prixTtc = Math.round (prixTtc)/100;
	document.getElementById("pu"+code).innerHTML = formatDecimal2(puTtc/100);
	document.getElementById("prix"+code).innerHTML = formatDecimal2(prixTtc);
	
	calculTotal();
}

function calculPrixOption(code, Tableau) {
	if (code == "loccleusb") {
		var duree = document.getElementById(code).value;
		var nb = document.getElementById("nb"+code).value;
		var puTtc = getMontantProduitByCodeAndQuantite(Tableau, code, duree);
		var prixTtc = nb * puTtc;
	}
	else if (code.substring(0,3) == "pap") {
		var duree = document.getElementById(code).value;
		var nb = document.getElementById("nb"+code).value;
		var prixTtc = getMontantProduitByCodeAndQuantite(Tableau, code, duree);
		var puTtc = prixTtc;
		if(puTtc > 0) {
			puTtc = puTtc / duree;
		}
		else {
			puTtc = 0;
		}
		puTtc = Math.round (puTtc);
	}
	else if ((code.substring(0,3) == "loc") || (code.substring(0,3) == "car")) {
		var duree = document.getElementById(code).value;
		var nb = document.getElementById("nb"+code).innerHTML;
		var puTtc = getMontantProduitByCodeAndQuantite(Tableau, code, duree);
		var prixTtc = nb * puTtc;
	}
	
	if ((code.substring(0,3) == "loc") || (code.substring(0,3) == "car") || (code.substring(0,3) == "pap")) {
		prixTtc = Math.round (prixTtc)/100;
		document.getElementById("pu"+code).innerHTML = formatDecimal2(puTtc/100);
		document.getElementById("prix"+code).innerHTML = formatDecimal2(prixTtc);
	}
	
	if(document.getElementById("nbgloballocapncom").value != "0") {
		calculPrixAssuranceCasse();
	}
	if(document.getElementById("nbgloballocapnref").value != "0") {
		calculPrixBatterieSupplementaire();
	}
	if(document.getElementById("nbgloballocapncan").value != "0") {
		calculPrixBatterieSupplementaireCanon();
	}
	if(document.getElementById("nbgloballoccamson").value != "0") {
		calculPrixBatterieSupplementaireCamescope();
	}
	calculTotalOption();
}

/*
function calculPrixAssuranceCasse() {
	var nblocapncom = "0";
	if(document.getElementById("assapncomOuiNon").checked) {
		nblocapncom = document.getElementById("nblocapncom").value;
	}
	document.getElementById("nbassapncom").value = nblocapncom;
	duree = document.getElementById("assapncom").value;
	var puTtc = getMontantProduitByCodeAndQuantite(Tableau, "assapncom", duree);
	var prixTtc = nblocapncom * puTtc;
	prixTtc = Math.round (prixTtc)/100;
	document.getElementById("prixassapncom").innerHTML = formatDecimal2(prixTtc);
}
*/

function calculPrixAssuranceCasse() {
	var nblocapncom = "0";
	if(document.getElementById("assapncomOuiNon").checked) {
		nblocapncom = document.getElementById("nblocapncom").innerHTML;
	}
	document.getElementById("nbassapncom").value = nblocapncom;
	duree = document.getElementById("assapncom").value;
	var puTtc = getMontantProduitByCodeAndQuantite(Tableau, "assapncom", duree);
	var prixTtc = nblocapncom * puTtc;
	prixTtc = Math.round (prixTtc)/100;
	document.getElementById("prixassapncom").innerHTML = formatDecimal2(prixTtc);
}



function calculPrixBatterieSupplementaire() {
	var nblocapnref = "0";
	if(document.getElementById("batapnrefOuiNon").checked) {
		nblocapnref = document.getElementById("nbcarapnref").innerHTML;
	}
	document.getElementById("nbbatapnref").value = nblocapnref;
	duree = document.getElementById("batapnref").value;
	var puTtc = getMontantProduitByCodeAndQuantite(Tableau, "batapnref", duree);
	var prixTtc = nblocapnref * puTtc;
	prixTtc = Math.round (prixTtc)/100;
	document.getElementById("prixbatapnref").innerHTML = formatDecimal2(prixTtc);
}


function calculPrixBatterieSupplementaireCanon() {
	var nblocapncan = "0";
	if(document.getElementById("batapncanOuiNon").checked) {
		nblocapncan = document.getElementById("nbcarapncan").innerHTML;
	}
	document.getElementById("nbbatapncan").value = nblocapncan;
	duree = document.getElementById("batapncan").value;
	var puTtc = getMontantProduitByCodeAndQuantite(Tableau, "batapncan", duree);
	var prixTtc = nblocapncan * puTtc;
	prixTtc = Math.round (prixTtc)/100;
	document.getElementById("prixbatapncan").innerHTML = formatDecimal2(prixTtc);
}


function calculPrixBatterieSupplementaireCamescope() {
	var nbloccamson = "0";
	if(document.getElementById("batcamsonOuiNon").checked) {
		nbloccamson = document.getElementById("nbcarcamson").innerHTML;
	}
	document.getElementById("nbbatcamson").value = nbloccamson;
	duree = document.getElementById("batcamson").value;
	var puTtc = getMontantProduitByCodeAndQuantite(Tableau, "batcamson", duree);
	var prixTtc = nbloccamson * puTtc;
	prixTtc = Math.round (prixTtc)/100;
	document.getElementById("prixbatcamson").innerHTML = formatDecimal2(prixTtc);
}

function calculTotal() {
	var total = 0;
	var totalTva = 0;
	total += parseFloat(document.getElementById("prixlocapncom").innerHTML);
	total += parseFloat(document.getElementById("prixlocapnref").innerHTML);
	total += parseFloat(document.getElementById("prixlocapncan").innerHTML);
	total += parseFloat(document.getElementById("prixlocapneta").innerHTML);
	total += parseFloat(document.getElementById("prixlocimpcan").innerHTML);
	total += parseFloat(document.getElementById("prixloccamson").innerHTML);
	total = Math.round(total * 100) / 100;
	totalTva += Math.round(total * 0.196 / 1.196 * 100) / 100;
	document.getElementById("prixTotal").innerHTML = formatDecimal2(total);
	document.getElementById("prixTotalTva").innerHTML = formatDecimal2(totalTva);
}

function calculTotalOption() {
	var total = 0;
	var totalTva = 0;
	
	total += parseFloat(document.getElementById("totalloc").value);
	
	if(document.getElementById("nbgloballocapncom").value != "0") {
		// total += parseFloat(document.getElementById("prixcarapncom").innerHTML);
		total += parseFloat(document.getElementById("prixassapncom").innerHTML);
		total += parseFloat(document.getElementById("prixloccleusb").innerHTML);
	}
	if(document.getElementById("nbgloballocapnref").value != "0") {
		total += parseFloat(document.getElementById("prixcarapnref").innerHTML);
		total += parseFloat(document.getElementById("prixbatapnref").innerHTML);
	}
	if(document.getElementById("nbgloballocapncan").value != "0") {
		total += parseFloat(document.getElementById("prixcarapncan").innerHTML);
		total += parseFloat(document.getElementById("prixbatapncan").innerHTML);
	}
	if(document.getElementById("nbgloballocapneta").value != "0") {
		total += parseFloat(document.getElementById("prixcarapneta").innerHTML);
	}
	if(document.getElementById("nbgloballocimpcan").value != "0") {
		total += parseFloat(document.getElementById("prixpapimpcan").innerHTML);
	}
	if(document.getElementById("nbgloballocimpcan").value != "0") {
		total += parseFloat(document.getElementById("prixpapimppet").innerHTML);
	}
	if(document.getElementById("nbgloballocimpcan").value != "0") {
		total += parseFloat(document.getElementById("prixpapimpaut").innerHTML);
	}
	if(document.getElementById("nbgloballoccamson").value != "0") {
		total += parseFloat(document.getElementById("prixcarcamson").innerHTML);
		total += parseFloat(document.getElementById("prixbatcamson").innerHTML);
	}
	if(document.getElementById("prixfraporapn").innerHTML != "offert") {
		total += parseFloat(document.getElementById("prixfraporapn").innerHTML);
	}
	total = Math.round(total * 100) / 100;
	totalTva += Math.round(total * 0.196 / 1.196 * 100) / 100;
	document.getElementById("prixTotal").innerHTML = formatDecimal2(total);
	document.getElementById("prixTotalTva").innerHTML = formatDecimal2(totalTva);
}

function formatDecimal2(nombre) {
	nombre += "";
	if(nombre.indexOf('.') == -1) {
		nombre += ".00";
	}
	else if(nombre.indexOf('.') == nombre.length-2) {
		nombre += "0";
	}
		
	return nombre;
}

function getMontantProduitByCodeAndQuantite(produits, code, quantite) {
	var montant = "";
	for (var qte in produits[code])
	{
		if(parseInt(qte) <= parseInt(quantite)) {
			montant = produits[code][qte];
		}
	}
	return montant;
}


function calculNbJours(Tableau) {
	if(document.getElementById("dateEvenement").value == "") {
		document.getElementById("messageerreur").innerHTML = "<span class='messageko'>La date de r&eacute;ception doit &ecirc;tre renseign&eacute;e</span>";
	}
	else if (isDateValid(document.getElementById("dateEvenement").value) == false) {
		document.getElementById("messageerreur").innerHTML = "<span class='messageko'>La date de r&eacute;ception doit &ecirc;tre correcte et au format <i>(JJ/MM/AAAA)</i></span>";
	}
	else if(document.getElementById("dateRenvoi").value == "") {
		document.getElementById("messageerreur").innerHTML = "<span class='messageko'>La date de renvoi doit &ecirc;tre renseign&eacute;e</span>";
	}
	else if (isDateValid(document.getElementById("dateRenvoi").value) == false) {
		document.getElementById("messageerreur").innerHTML = "<span class='messageko'>La date de renvoi doit &ecirc;tre correcte et au format <i>(JJ/MM/AAAA)</i></span>";
	}
	else {
		var debut = getTemps(document.getElementById("dateEvenement").value.split("/"));
		var fin = getTemps(document.getElementById("dateRenvoi").value.split("/"));
		var nbJours = Math.round((fin - debut) / (1000 * 60 * 60 * 24));
		
		var dateAujourdhui = new Date();
		dateAujourdhui.setHours(0);
		dateAujourdhui.setMinutes(0);
		dateAujourdhui.setSeconds(0);
		
		var nbJoursReservation = Math.round((debut - dateAujourdhui.getTime())/ (1000 * 60 * 60 * 24));

		if(isDimancheOuFerie(document.getElementById("dateEvenement").value.split("/"))) {
			document.getElementById("messageerreur").innerHTML = "<span class='messageko'>La date de r&eacute;ception ne doit pas &ecirc;tre un dimanche ou un jour f&eacute;ri&eacute</span>";
		}
		else if(isDimancheOuFerie(document.getElementById("dateRenvoi").value.split("/"))) {
			document.getElementById("messageerreur").innerHTML = "<span class='messageko'>La date de renvoi ne doit pas &ecirc;tre un dimanche ou un jour f&eacute;ri&eacute</span>";
		}
		else if(nbJours < 1) {
			document.getElementById("messageerreur").innerHTML = "<span class='messageko'>La dur&eacute;e de location est incorrecte ou inf&eacute;rieure &agrave; 1 jour</span>";
		}
		else if(nbJours > 40) {
			document.getElementById("messageerreur").innerHTML = "<span class='messageko'>La dur&eacute;e de location est sup&eacute;rieure &agrave; 40 jours<br/>Contactez-nous au <b>09 51 15 04 22</b> pour un devis personnalis&eacute;</span>";
		}
		else if(nbJoursReservation < 7) {
			document.getElementById("messageerreur").innerHTML = "<span class='messageko'>La date de r&eacute;ception doit &ecirc;tre dans 7 jours minimum</span>";
		}
		else {
			document.getElementById("messageerreur").innerHTML = "";
		}
	}
	
	if(document.getElementById("messageerreur").innerHTML == "") {
		document.getElementById("nbJours").innerHTML = "Location de <span style=\"font-weight:bold;\">" + nbJours + " jours</span>";
		document.getElementById("locapncom").innerHTML = nbJours + " jours";
		calculPrix('locapncom', Tableau);
		document.getElementById("locapnref").innerHTML = nbJours + " jours";
		calculPrix('locapnref', Tableau);
		document.getElementById("locapncan").innerHTML = nbJours + " jours";
		calculPrix('locapncan', Tableau);
		document.getElementById("locapneta").innerHTML = nbJours + " jours";
		calculPrix('locapneta', Tableau);
		document.getElementById("locimpcan").innerHTML = nbJours + " jours";
		calculPrix('locimpcan', Tableau);
		document.getElementById("loccamson").innerHTML = nbJours + " jours";
		calculPrix('loccamson', Tableau);
	}
	else {
		document.getElementById("nbJours").innerHTML = "";
		document.getElementById("locapncom").innerHTML = "0 jours";
		calculPrix('locapncom', Tableau);
		document.getElementById("locapnref").innerHTML = "0 jours";
		calculPrix('locapnref', Tableau);
		document.getElementById("locapncan").innerHTML = "0 jours";
		calculPrix('locapncan', Tableau);
		document.getElementById("locapneta").innerHTML = "0 jours";
		calculPrix('locapneta', Tableau);
		document.getElementById("locimpcan").innerHTML = "0 jours";
		calculPrix('locimpcan', Tableau);
		document.getElementById("loccamson").innerHTML = "0 jours";
		calculPrix('loccamson', Tableau);
	}
/* 
	if((document.getElementById("dateEvenement").value != "") && (document.getElementById("dateRenvoi").value)) {
		if(isDateValid(document.getElementById("dateEvenement").value)) {
			var debut = getTemps(document.getElementById("dateEvenement").value.split("/"));
			var fin = getTemps(document.getElementById("dateRenvoi").value.split("/"));
			var nbJours = (fin - debut) / (1000 * 60 * 60 * 24);
			if(nbJours > 2) {
				document.getElementById("messageerreur").innerHTML = "<span class='messageko'>La date de renvoi doit &ecirc;tre dans " + nbJours + " jours minimum</span>";
				document.getElementById("locapncom").innerHTML = nbJours + " jours";
				calculPrix('locapncom', Tableau);
				document.getElementById("locapnref").innerHTML = nbJours + " jours";
				calculPrix('locapnref', Tableau);
				document.getElementById("locapncan").innerHTML = nbJours + " jours";
				calculPrix('locapncan', Tableau);
				document.getElementById("locapneta").innerHTML = nbJours + " jours";
				calculPrix('locapneta', Tableau);
				document.getElementById("locimpcan").innerHTML = nbJours + " jours";
				calculPrix('locimpcan', Tableau);
				document.getElementById("loccamson").innerHTML = nbJours + " jours";
				calculPrix('loccamson', Tableau);
			}
			else {
				document.getElementById("messageerreur").innerHTML = "<span class='messageko'>Dur&eacute;e incorrecte ou inf&eacute;rieure &agrave; 3 jours</span>";;
				document.getElementById("locapncom").innerHTML = "0 jours";
				calculPrix('locapncom', Tableau);
				document.getElementById("locapnref").innerHTML = "0 jours";
				calculPrix('locapnref', Tableau);
				document.getElementById("locapncan").innerHTML = "0 jours";
				calculPrix('locapncan', Tableau);
				document.getElementById("locapneta").innerHTML = "0 jours";
				calculPrix('locapneta', Tableau);
				document.getElementById("locimpcan").innerHTML = "0 jours";
				calculPrix('locimpcan', Tableau);
				document.getElementById("loccamson").innerHTML = "0 jours";
				calculPrix('loccamson', Tableau);
			}
		}
		else {
			document.getElementById("messageerreur").innerHTML = "<span class='messageko'>Format de date incorrect</span>";
			document.getElementById("locapncom").innerHTML = "0 jours";
			calculPrix('locapncom', Tableau);
			document.getElementById("locapnref").innerHTML = "0 jours";
			calculPrix('locapnref', Tableau);
			document.getElementById("locapncan").innerHTML = "0 jours";
			calculPrix('locapncan', Tableau);
			document.getElementById("locapneta").innerHTML = "0 jours";
			calculPrix('locapneta', Tableau);
			document.getElementById("locimpcan").innerHTML = "0 jours";
			calculPrix('locimpcan', Tableau);
			document.getElementById("loccamson").innerHTML = "0 jours";
			calculPrix('loccamson', Tableau);
		}
	}
	else {
		document.getElementById("messageerreur").innerHTML = "";
		document.getElementById("locapncom").innerHTML = "0 jours";
		calculPrix('locapncom', Tableau);
		document.getElementById("locapnref").innerHTML = "0 jours";
		calculPrix('locapnref', Tableau);
		document.getElementById("locapncan").innerHTML = "0 jours";
		calculPrix('locapncan', Tableau);
		document.getElementById("locapneta").innerHTML = "0 jours";
		calculPrix('locapneta', Tableau);
		document.getElementById("locimpcan").innerHTML = "0 jours";
		calculPrix('locimpcan', Tableau);
		document.getElementById("loccamson").innerHTML = "0 jours";
		calculPrix('loccamson', Tableau);
	}
	 */
}

function isDimancheOuFerie(date)
{
	var d = new Date(date[2], date[1] - 1, date[0]);
	if(IsFeastDay(date[0], date[1] - 1, date[2]) || (d.getDay() == 0)) {
		return true;
	}
	else {
		return false;
	}
}

function getTemps(date)
{
	var d = new Date(date[2], date[1] - 1, date[0]);
	return d.getTime();
}

function isDateValid(chaineDate) {
	if (chaineDate == "") return false
   	var ladate = (chaineDate).split("/");
	if ((ladate.length != 3) || isNaN(parseInt(ladate[0])) || isNaN(parseInt(ladate[1])) || isNaN(parseInt(ladate[2]))) return false
	var unedate = new Date(eval(ladate[2]),eval(ladate[1])-1,eval(ladate[0]))
	var annee = unedate.getYear()
   	if ((Math.abs(annee)+"").length < 4) annee = annee + 1900
	return ((unedate.getDate() == eval(ladate[0])) && (unedate.getMonth() == eval(ladate[1])-1) && (annee == eval(ladate[2])))
}
