function bissextile(annee,who)
{
	if(who == "web")
		annee = parseInt(annee)+2008;

   return (annee%4 ==0) && ( (annee%100 !=0) || (annee%400 ==0) );
}

function manage_days(who)
{
	var biss_start;
	var biss_end;

	if(who == "web")
	{
		biss_start = bissextile(document.getElementById('syear').value,who);
		biss_end = bissextile(document.getElementById('eyear').value,who);
	}
	else
	{
		var mydate=new Date();
		var year=mydate.getYear();
		if(year < 1900) year += 1900;
		biss_start = bissextile(year,who);
		biss_end = bissextile(year,who);
	}

	var smonth = document.getElementById('smonth').value;
	var emonth = document.getElementById('emonth').value;
	var i;
	var last = 28;
	if(biss_start == true) last = 29;
	
	if(smonth == "02")
	{
		for(i = 31 ; i > last ; i--)
		{
			if(document.getElementById('sday').options[i] !=null) document.getElementById('sday').options[i] = null;
		}
	}
	else
	if( (smonth == "04") || (smonth == "06") || (smonth == "09") || (smonth == "11") )
	{
		if(document.getElementById('sday').options[31] !=null)
			document.getElementById('sday').options[31] = null;
		else
		{
			for(i = last ; i < 31 ; i++)
			{
				if(document.getElementById('sday').options[i] ==null) document.getElementById('sday').options[i] =  new Option(i, i);
			}
		}
	}
	else
	{
		for(i = last ; i < 32 ; i++)
		{
			if(document.getElementById('sday').options[i] ==null) document.getElementById('sday').options[i] =  new Option(i, i);
		}
	}

	last = 28;
	if(biss_end == true) last = 29;

	if(emonth == "02")
	{
		for(i = 31 ; i > last ; i--)
		{
			if(document.getElementById('eday').options[i] !=null) document.getElementById('eday').options[i] = null;
		}
	}
	else
	if( (emonth == "04") || (emonth == "06") || (emonth == "09") || (emonth == "11") )
	{
		if(document.getElementById('eday').options[31] !=null)
			document.getElementById('eday').options[31] = null;
		else
		{
			for(i = last ; i < 31 ; i++)
			{
				if(document.getElementById('eday').options[i] ==null) document.getElementById('eday').options[i] =  new Option(i, i);
			}
		}
	}
	else
	{
		for(i = last ; i < 32 ; i++)
		{
			if(document.getElementById('eday').options[i] ==null) document.getElementById('eday').options[i] =  new Option(i, i);
		}
	}
}

function verify_allowed(date1,date2,heure1,heure2)
{
	var year;
	var month;
	var day;
	var heure;
	var minute;
	
	var debut = date1.split("-");
	var fin = date2.split("-");

	var heuredeb = heure1.split(":");
	var heurefin = heure2.split(":");

	var date_start = new Date(parseInt(debut[0],10),parseInt(debut[1],10)-1,parseInt(debut[2],10),parseInt(heuredeb[0],10),parseInt(heuredeb[1],10));
	var date_end = new Date(parseInt(fin[0],10),parseInt(fin[1],10)-1,parseInt(fin[2],10),parseInt(heurefin[0],10),parseInt(heurefin[1],10));

	var nbdays = Math.round((date_end-date_start)/86400000);
	var nbdaysmore = (date_end-date_start)/86400000;

	var diff = nbdaysmore - nbdays;

	if(diff > 0) nbdays += 1;


	document.getElementById('nbdays').value = nbdays;	

	if(nbdays < document.getElementById('allowed_hidden').value)
		return false;
	else 
		return true;
}

function today_date(who)
{
	var datedujour;

	var mydate=new Date();
	var year=mydate.getYear();
	if(year < 1900) year += 1900;
	var month=mydate.getMonth();
	var day=mydate.getDate();
	month += 1;
	var yearind;

	yearind = parseInt(year) - 2008;

	datedujour = year+"-";
	if(month < 10) datedujour += "0"+month+"-"; else datedujour += month+"-";
	if(day < 10) datedujour += "0"+day; else datedujour += day;
	
	document.getElementById('sday').selectedIndex = day;
	document.getElementById('smonth').selectedIndex = month;
	if(who == "web") document.getElementById('syear').selectedIndex = yearind;
	document.getElementById('eday').selectedIndex = day;
	document.getElementById('emonth').selectedIndex = month;
	if(who == "web") document.getElementById('eyear').selectedIndex = yearind;
	
	if(who == "web") document.getElementById('startdate').value = year+"-";
	if(month < 10)
		document.getElementById('startdate').value+= "0"+month+"-";
	else
		document.getElementById('startdate').value+= month+"-";
	if(day < 10)
		document.getElementById('startdate').value+= "0"+day;
	else
		document.getElementById('startdate').value+= day;

	document.getElementById('startdatetpn').value = document.getElementById('startdate').value;

	if(who == "web") document.getElementById('enddate').value = year+"-";
	if(month < 10)
		document.getElementById('enddate').value+= "0"+month+"-";
	else
		document.getElementById('enddate').value+= month+"-";
	if(day < 10)
		document.getElementById('enddate').value+= "0"+day;
	else
		document.getElementById('enddate').value+= day;

	document.getElementById('enddatetpn').value = document.getElementById('enddate').value;

	manage_days(who);

	if(who == "admin") create_label();
	if(who == "web") test_date("web");
}

function update_dropdown(who)
{
	debut = document.getElementById('startdate').value.split("-");

	if(who == "web")
	{
		document.getElementById('syear').selectedIndex = parseInt(debut[0])-2008;
		document.getElementById('smonth').selectedIndex = debut[1];
		document.getElementById('sday').selectedIndex = debut[2];
	}
	else
	{
		document.getElementById('smonth').selectedIndex = debut[0];
		manage_days(who);
		document.getElementById('sday').selectedIndex = debut[1];
	}
	
	debut = document.getElementById('enddate').value.split("-");

	if(who == "web")
	{
		document.getElementById('eyear').selectedIndex = parseInt(debut[0])-2008;
		document.getElementById('emonth').selectedIndex = debut[1];
		document.getElementById('eday').selectedIndex = debut[2];
	}
	else
	{
		document.getElementById('emonth').selectedIndex = debut[0];
		manage_days(who);
		document.getElementById('eday').selectedIndex = debut[1];
	}
	
}

function create_date(who)
{

	manage_days(who);
	
	if( (document.getElementById('sday').value == 0) || (document.getElementById('smonth').value == 0) || (document.getElementById('syear').value == 0))
	{
		document.getElementById('startdate').value = "";
		document.getElementById('startdatetpn').value = "";
	}
	else
	{
		var realyear;
		if(who == "admin") realyear = parseInt(document.getElementById('syear').value)+ 2007;
		else realyear = parseInt(document.getElementById('syear').value)+ 2008;
		document.getElementById('startdate').value = realyear+"-"+document.getElementById('smonth').value+"-"+document.getElementById('sday').value;
		document.getElementById('startdatetpn').value = document.getElementById('startdate').value;
	}
	if( (document.getElementById('eday').value == 0) || (document.getElementById('emonth').value == 0) || (document.getElementById('eyear').value == 0))
	{
		document.getElementById('enddate').value = "";
		document.getElementById('enddatetpn').value = "";
	}
	else
	{
		var realyear;
		if(who == "admin") realyear = parseInt(document.getElementById('eyear').value)+ 2007;
		else realyear = parseInt(document.getElementById('eyear').value)+ 2008;
		document.getElementById('enddate').value = realyear+"-"+document.getElementById('emonth').value+"-"+document.getElementById('eday').value;
		document.getElementById('enddatetpn').value = document.getElementById('enddate').value;
	}

	if(who == "admin") create_label();
	if(who == "web") test_date("web");
}

function test_date(who)
{
	var nberror = 0;
	var starting = document.getElementById('startdate').value;
	var ending = document.getElementById('enddate').value;
	
	if( (document.getElementById('startdate').value == "") && (document.getElementById('enddate').value == "") )
	{
		return false;
	}
	else
	{
		if(starting != "")
		{

			if(who == "web") starting = verify_start_date(starting);

			if(ending == "")
			{
				document.getElementById('enddate').value = document.getElementById('startdate').value;
				document.getElementById('enddatetpn').value = document.getElementById('enddate').value;
				document.getElementById('startdatetpn').value = document.getElementById('startdate').value;
				document.getElementById('eday').selectedIndex = document.getElementById('sday').value;
				document.getElementById('emonth').selectedIndex = document.getElementById('smonth').value;
				if(who == "web") document.getElementById('eyear').selectedIndex = document.getElementById('syear').value;
			}
		}
		
		if(ending != "")
		{
			if(who == "web")
			{
				var comp = ComparerDates(starting,ending);
		
				if(comp == 1)
				{
					document.getElementById('enddate').value = document.getElementById('startdate').value;
					document.getElementById('enddatetpn').value = document.getElementById('enddate').value;
					document.getElementById('startdatetpn').value = document.getElementById('startdate').value;

					var dat = document.getElementById('enddate').value.split("-");
					
					document.getElementById('eday').selectedIndex = dat[2];
					document.getElementById('emonth').selectedIndex = dat[1];
					document.getElementById('eyear').selectedIndex = parseInt(dat[0])-2008;
					manage_days(who);
				}
			}
		}
	}

	if(who == "webvalide")
	{
		if( (document.getElementById('stime').value == 0) || (document.getElementById('etime').value == 0) )
		{
			alert("Please select the delivery and return time.");
			return false;
		}

		var allrent = test_max_rent(document.getElementById('startdate').value,document.getElementById('enddate').value,document.getElementById('stime').value,document.getElementById('etime').value);
		
		if(allrent == false)
		{
			alert("Maximum rent allowed is 30 days, please contact us by clicking on CONTACT.");
			document.getElementById('enddate').value = document.getElementById('startdate').value;
			document.getElementById('enddatetpn').value = document.getElementById('enddate').value;
			document.getElementById('startdatetpn').value = document.getElementById('startdate').value;
			document.getElementById('eday').selectedIndex = document.getElementById('sday').value;
			document.getElementById('emonth').selectedIndex = document.getElementById('smonth').value;
			document.getElementById('eyear').selectedIndex = document.getElementById('syear').value;

			return false;
		}

		var allowed = verify_allowed(document.getElementById('startdate').value,document.getElementById('enddate').value,document.getElementById('stime').value,document.getElementById('etime').value);
		
		if(allowed == false)
		{
			alert("Minimum allowed rent is "+document.getElementById('allowed_hidden').value+" days.");

			return false;
		}
	}
	
	return true;
}

function verify_start_date(ladate)
{
	var erreur = false;
	var debut;
	var datedujour;
	var mydate=new Date();
	var year=mydate.getYear();
	if(year < 1900) year += 1900;
	var month=mydate.getMonth();
	var day=mydate.getDate();
	month += 1;
	datedujour = year+"-";
	if(month < 10) datedujour += "0"+month+"-"; else datedujour += month+"-";
	if(day < 10) datedujour += "0"+day; else datedujour += day;

	debut = ladate.split("-");
	
	if(debut[0] < year) erreur = true;
	else
	if(( debut[0] == year)&&( debut[1] < month) ) erreur = true;
	else
	if(( debut[0] == year)&&( debut[1] == month)&&( debut[2] < day) ) erreur = true;
	
	if(erreur == false)
		return ladate;
	else
	{
		document.getElementById('sday').selectedIndex = day;
		document.getElementById('smonth').selectedIndex = month;
		document.getElementById('syear').selectedIndex = parseInt(year)-2008;
		document.getElementById('startdate').value = datedujour;
		document.getElementById('startdatetpn').value = datedujour;
		return datedujour;
	}
}

function ComparerDates(LeParam1,LeParam2)
{
	var debut;
	var fin;
	var ladate;
	
	debut = LeParam1.split("-");
	fin = LeParam2.split("-");

	if(fin[0] < debut[0]) return 1;
	if( (fin[0] == debut[0]) && (fin[1] < debut[1])) return 1;
	if( (fin[0] == debut[0]) && (fin[1] == debut[1]) && (fin[2] < debut[2])) return 1;

	return 0;
}

function test_max_rent(date1,date2,heure1,heure2)
{
	var year;
	var month;
	var day;
	
	var debut = date1.split("-");
	var fin = date2.split("-");

	var heuredeb = heure1.split(":");
	var heurefin = heure2.split(":");

	var d = new Date(parseInt(debut[0],10),parseInt(debut[1],10)-1,parseInt(debut[2],10),parseInt(heuredeb[0],10),parseInt(heuredeb[1],10));
	var f = new Date(parseInt(fin[0],10),parseInt(fin[1],10)-1,parseInt(fin[2],10),parseInt(heurefin[0],10),parseInt(heurefin[1],10));

	var nbdays = Math.round((f-d)/86400000)+1;

	if(nbdays < 31)
		return true;
	else 
		return false;
}
