function checkdate(chaine)
{
	var vdate = (chaine).split('/');
	if ((vdate.length != 3) || isNaN(parseInt(vdate[0])) || isNaN(parseInt(vdate[1])) || isNaN(parseInt(vdate[2])))
		return false;
	var date = new Date(eval(vdate[2]),eval(vdate[1])-1,eval(vdate[0]));
	var now = new Date();
	var time = now.getTime();
	date.setHours(now.getHours());
	date.setMinutes(now.getMinutes());
	if (date.getTime()+100000 < time)
		return false;
	var year = date.getYear();
	if ((Math.abs(year) + "").length < 4)
		year = year + 1900;
	return ((date.getDate() == eval(vdate[0])) && (date.getMonth() == eval(vdate[1])-1) && (year == eval(vdate[2])));
	/* + RAJOUTER LE CHECKAGE QUE DATE > JOUR ACTUEL */
}

function checknbr(nbr)
{
	return (!isNaN(nbr) && nbr > 0 && nbr < 100);
}

function illuminate(obj, bool)
{
	if (obj.value == "")
	{
		obj.className = "";
		return ;
	}
	if (bool)
		obj.className = "champs_right";
	else
		obj.className = "champs_wrong";
}

function illuminatet(obj, bool)
{
	if (bool)
		obj.className = "champs_right";
	else
		obj.className = "champs_wrong";
}


function calc_diff(from, to)
{
	/* From */
	var vfrom = from.split('/');
	var fromDate = new Date(eval(vfrom[2]),eval(vfrom[1])-1,eval(vfrom[0]));
	/* To */
	var vto = (to).split('/');
	var toDate = new Date(eval(vto[2]),eval(vto[1])-1,eval(vto[0]));
	/* Comparaison */
	var msbyDay = 24 * 60 * 60 * 1000; /* Nombre de millisecondes par jour */
	var dayLeft = (toDate.getTime() - fromDate.getTime()) / msbyDay;
	return dayLeft +1;
}

function recalc()
{
	var err	= false;
	var vdeparture = document.getElementById("departure");
	var vreturn = document.getElementById("return");
	var vcar_nbr = document.getElementById("car_nbr");
	if ((!vreturn || !vdeparture || !vcar_nbr))
		return;
	if (vdeparture.value == "21/04/2011" || vdeparture.value == "22/04/2011"
		|| vdeparture.value == "23/04/2011" || vdeparture.value == "24/04/2011")
	{
		document.getElementById("departure").value = "";
		alert("Aero parc \351tant victime de son succ\350s, nous ne pouvons pas vous prendre en charge ce jour.");
		return false;
	}
	var depbool = checkdate(vdeparture.value);
	var retbool = checkdate(vreturn.value);
	/* Form Illumination green/red */
	if (vdeparture.value != "jj/mm/aaaa")
		illuminate(vdeparture, depbool);
	if (vreturn.value != "jj/mm/aaaa")
		illuminate(vreturn, retbool);
	illuminate(vcar_nbr, checknbr(vcar_nbr.value));
	var day_nbr = 0;
	if (depbool == true && retbool == true)
	{
		day_nbr = Math.round(calc_diff(vdeparture.value, vreturn.value));
		if (day_nbr <= 0)
		{
			alert("Votre date d'arriv\351e doit \352tre ant\351rieure \340 votre date de retour");
			illuminate(vdeparture, false);
			illuminate(vreturn, false);
			depbool = false;
			retbool = false;
		}
	}
	/* PRIX */
	var vprice = document.getElementById("price");
	var step1nextbutton = document.getElementById("step1nextbutton");
	if (depbool == true && retbool == true && day_nbr >= 0 && checknbr(vcar_nbr.value)) /* Si tout les champs sont bons */
	{
		var price = 0;
		if (day_nbr >= 0 && day_nbr < 5)
			price = 50;
		else if (day_nbr >= 5 && day_nbr <= 7)
			price = 10*day_nbr;
		else if (day_nbr > 7 && day_nbr <= 15)
			price = 8*day_nbr;
		else if (day_nbr > 15)
			price = 7*day_nbr+15;
		vprice.value = vcar_nbr.value * price.toFixed(0);
		if (day_nbr > 7)
		{
			document.getElementById('ppd').innerHTML = "Soit environ <span id=\"ppd\" style=\"font-size: 200%\">"+(vprice.value / day_nbr).toFixed(2)+"</span> &euro; par jour" + ((vprice.value / day_nbr < 15) ? " seulement!" : "") + "*<br/> <span style=\"color:#888888;font-size: 80%;\">(*sans les majorations dues au jour f&eacute;ri&eacute;s et navettes de nuit)<br />";
			document.getElementById('ppd').className = "";
		}
		if (step1nextbutton)
			step1nextbutton.className = "";
		if (document.getElementById("boldwarning"))
			document.getElementById("boldwarning").className = "hidden";
	}
	else
	{
		vprice.value = "";
		if (document.getElementById('ppd'))
		{
			document.getElementById('ppd').value = "";
			document.getElementById('ppd').className = "hidden";
		}
		if (step1nextbutton)
			step1nextbutton.className = "hidden";
		if (document.getElementById("boldwarning"))
			document.getElementById("boldwarning").className = "";
	}
}

function calc_dep_hour()
{
	var bdeparture = true;
	var vdeparture_hour = document.getElementById("departure_hour");
	/*FIXME: Cette ligne de passe pas sous IE; A premiere vue je vois pas*/
	var vdate = vdeparture_hour.options[vdeparture_hour.selectedIndex].value.split('h');
	if (vdate.length != 2) /* If no 'h', test for ':' */
		vdate = vdeparture_hour.options[vdeparture_hour.selectedIndex].value.split(':');
	if (vdate.length == 2) /* Values are numbers Numbers are correct; */
		bdeparture = ((!isNaN(parseInt(vdate[0])) && !isNaN(parseInt(vdate[1]))) && (vdate[0] >= 0 && vdate[0] < 24 && vdate[1] >= 0 && vdate[1] < 60));
	else
		bdeparture = false;
	/* NOEL */
	var vdeparture = document.getElementById("departure");
	if (!vdeparture)
		return;
	if (vdeparture.value == "24/12/2011" || vdeparture.value == "31/12/2011")
	{
		if (vdate.length == 2 && vdate[0] >= 18)
		{
			vdeparture_hour.selectedIndex = 0;
			alert("Aero parc \351tant victime de son succ\350s, nous ne pouvons pas vous prendre en charge apr\350s 18h00 ce jour.");
			bdeparture = false;
		}			
	}
	if (vdeparture.value == "25/12/2011" || vdeparture.value == "01/01/2012")
	{
		if (vdate.length == 2 && vdate[0] < 13)
		{
			vdeparture_hour.selectedIndex = 0;
			alert("Aero parc \351tant victime de son succ\350s, nous ne pouvons pas vous prendre en charge avant 13h00 ce jour.");
			bdeparture = false;
		}			
	}
	/* /NOEL */
	illuminatet(vdeparture_hour, bdeparture);
	if (bdeparture && ((vdate[0] < 6 || (vdate[0] == 6 && vdate[1] <= 30)) || (vdate[0] > 20 || (vdate[0] == 20 && vdate[1] >= 30))))
		document.getElementById("dep_night").className = ""; /* Si horaire de nuit, afficher explication taxe + ajouter prix */
	else
		document.getElementById("dep_night").className = "hidden";
}

function calc_ret_hour()
{
	var breturn = true;
	var vreturn_hour = document.getElementById("return_hour");
	var vdate = vreturn_hour.options[vreturn_hour.selectedIndex].value.split('h');
	if (vdate.length != 2) /* If no 'h', test for ':' */
		vdate = vreturn_hour.options[vreturn_hour.selectedIndex].value.split(':');
	if (vdate.length == 2) /* Values are numbers && Numbers are correct; */
		breturn = ((!isNaN(parseInt(vdate[0])) && !isNaN(parseInt(vdate[1]))) && (vdate[0] >= 0 && vdate[0] < 24 && vdate[1] >= 0 && vdate[1] < 60));
	else
		breturn = false;
	/* NOEL */
	var vreturn = document.getElementById("return");
	if (!vreturn)
		return;
	if (vreturn.value == "24/12/2011" || vreturn.value == "31/12/2011")
	{
		if (vdate.length == 2 && vdate[0] >= 18)
		{
			vreturn_hour.selectedIndex = 0;
			alert("Aero parc \351tant victime de son succ\350s, nous ne pouvons pas vous prendre en charge apr\350s 18h00 ce jour.");
			breturn = false;
		}			
	}
	if (vreturn.value == "25/12/2011" || vreturn.value == "01/01/2012")
	{
		if (vdate.length == 2 && vdate[0] < 13)
		{
			vreturn_hour.selectedIndex = 0;
			alert("Aero parc \351tant victime de son succ\350s, nous ne pouvons pas vous prendre en charge avant 13h00 ce jour.");
			breturn = false;
		}			
	}
	/* /NOEL */
	illuminatet(vreturn_hour, breturn);
	if (breturn && ((vdate[0] < 6 || (vdate[0] == 6 && vdate[1] <= 30)) || (vdate[0] > 20 || (vdate[0] == 20 && vdate[1] >= 30))))
		document.getElementById("ret_night").className = ""; /* Si horaire de nuit, afficher explication taxe */
	else
		document.getElementById("ret_night").className = "hidden";
}

function same(mdate, odate)
{
	v2 = odate.split('/');
	return (mdate[0] == v2[0] && mdate[1] == v2[1]);
}

function parse_blacklist(mdate)
{
	return (same(mdate, '01/01') || /* Jour de l'an*/
		same(mdate, '01/05') || /* Fête du travail */
		same(mdate, '08/05') || /* Victoire Alliés */
		same(mdate, '14/07') || /* Fête nationale */ 
		same(mdate, '15/08') || /* Assomption */
		same(mdate, '01/11') || /* Toussaint */
		same(mdate, '11/11') || /* Armistice */
		same(mdate, '25/12') /* Noel */
		);
}

function calc_blacklisted_days()
{
	var vdeparture = document.getElementById("departure").value;
	var dep_date = vdeparture.split('/');
	if (parse_blacklist(dep_date))
		document.getElementById("dep_ferie").className = ""; /* Si jr ferie */
	else
		document.getElementById("dep_ferie").className = "hidden";
	var vreturn = document.getElementById("return").value;
	var ret_date = vreturn.split('/');
	if (parse_blacklist(ret_date))
		document.getElementById("ret_ferie").className = ""; /* Si jr ferie */
	else
		document.getElementById("ret_ferie").className = "hidden";
}

function calc_additionnal_fees()
{
	calc_dep_hour();
	calc_ret_hour();
	calc_blacklisted_days();
}

function validate_step2(form)
{
	name = document.getElementById("lastname");
	error = false;
	if (name.value == "")
	{
		/*alert("Veuillez indiquer votre nom");*/
		illuminatet(name, false);
		error = true;
	}
	else
		illuminatet(name, true);
	mail = document.getElementById("email");
	if (mail.value == "")
	{
		/*alert("Veuillez indiquer une adresse e-mail valide");*/
		illuminatet(mail, false);
		error = true;
	}
	else
		illuminatet(mail, true);
	tel = document.getElementById("telephone");
	if (tel.value == "")
	{
		/*alert("Veuillez indiquer un numero de telephone portable valide");*/
		illuminatet(tel, false);
		error = true;
	}
	else
		illuminatet(tel, true);
	if (error == false)
		form.submit();
	return;
}
