/**
*
*
*
*/
var olddatefrom;
var olddateto;

var CalFrom;
var CalTo;

function getCalendarDateFormat ()
{
	if ( typeof( window["calendar_date_format"] ) == "undefined" ) {
		if ($("calendar_date_format")) {
			calendar_date_format = $("calendar_date_format").value;
			//alert("hidden : "+calendar_date_format);
		}
		else if (readCookie("calendar_date_format")) {
			calendar_date_format = readCookie("calendar_date_format");
			//alert("cookie : "+calendar_date_format);
		}
		else {
			calendar_date_format = "%d/%m/%Y";
			//alert("default : "+calendar_date_format);
		}
	}
	else {
		//alert("conf : "+calendar_date_format);
	}
	return calendar_date_format;
}
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}
function getValue (elt) {
	return elt.value;
}

function formatDate (date)
{

	var calendar_date_format = getCalendarDateFormat();
	if (!date) date = new Date();
	if (typeof(date) !="object" && date>0) {
		dateT = new Date();
		dateT.setTime(date);
		date = new Date();
		if (dateT>date) date=dateT;
	}
	else if (typeof date == "object") {
//		alert('formatDate 1 : '+date+" - mois : "+date.getMonth());
	}
	else if (isNaN(date.getYear())) {
		return false;
	}
	
//	alert('formatDate 2 : '+date+" - mois : "+date.getMonth());
	
	var sep="";
	if (calendar_date_format.indexOf("/")>=0) {
		eltsformat = calendar_date_format.split("/");
		sep="/";
	} else if (calendar_date_format.indexOf("-")>=0) {
		eltsformat = calendar_date_format.split("-");
		sep="-";
	}
	else {
		return 0;
	}
	
	dateStr = "";
	switch (eltsformat[0]) {
		case '%Y':
		dateStr+=date.getFullYear();
		break;
		case '%m':
		if (date.getMonth()+1 < 10) dateStr+="0"+(date.getMonth()+1);
		else dateStr+=date.getMonth()+1;
		break;
		case '%d':
		if (date.getDate() < 10) dateStr+="0"+(date.getDate());
		else dateStr+=date.getDate();
		break;
	}
	dateStr+=sep;
	switch (eltsformat[1]) {
		case '%Y':
		dateStr+=date.getFullYear();
		break;
		case '%m':
		if (date.getMonth()+1 < 10) dateStr+="0"+(date.getMonth()+1);
		else dateStr+=date.getMonth()+1;
		break;
		case '%d':
		if (date.getDate() < 10) dateStr+="0"+(date.getDate());
		else dateStr+=date.getDate();
		break;
	}
	dateStr+=sep;
	switch (eltsformat[2]) {
		case '%Y':
		dateStr+=date.getFullYear();
		break;
		case '%m':
		if (date.getMonth()+1 < 10) dateStr+="0"+(date.getMonth()+1);
		else dateStr+=date.getMonth()+1;
		break;
		case '%d':
		if (date.getDate() < 10) dateStr+="0"+(date.getDate());
		else dateStr+=date.getDate();
		break;
	}
	
	return dateStr;
}

function checkDateFormat (date)
{
//	alert("checkDateFormat : "+date+" ("+getCalendarDateFormat()+")");
	var eltsdate = 0;
	if (date.indexOf("/")>=0) {
		eltsdate = date.split("/");
	} else if (date.indexOf("-")>=0) {
		eltsdate = date.split("-");
	}
	else {
		return 0;
	}
	
	if (eltsdate && eltsdate.length!=3) return false;
	if (calendar_date_format.indexOf("/")>=0) {
		eltsformat = calendar_date_format.split("/");
	} else if (calendar_date_format.indexOf("-")>=0) {
		eltsformat = calendar_date_format.split("-");
	}
	else {
		return 0;
	}
	
	eltsdate[0]=parseInt(eltsdate[0].replace(/^0/g, ''));
	eltsdate[1]=parseInt(eltsdate[1].replace(/^0/g, ''));
	eltsdate[2]=parseInt(eltsdate[2].replace(/^0/g, ''));
	
	myDate = new Date();

	

	var year;
	var month;
	var day;
	switch (eltsformat[0]) {
		case '%Y':
		year = eltsdate[0];
		break;
		case '%m':
		month = eltsdate[0]-1;
		break;
		case '%d':
		day = eltsdate[0];
		break;
	}
	switch (eltsformat[1]) {
		case '%Y':
		year = eltsdate[1];
		break;
		case '%m':
		month = eltsdate[1]-1;
		break;
		case '%d':
		day = eltsdate[1];
		break;
	}

	switch (eltsformat[2]) {
		case '%Y':
		year = eltsdate[2];
		break;
		case '%m':
		month = eltsdate[2]-1;
		break;
		case '%d':
		day = eltsdate[2];
		break;
	}

	myDate.setHours(12);
	myDate.setMinutes(0);
	myDate.setSeconds(0);
	myDate.setFullYear(year);
	myDate.setDate(day);
	myDate.setMonth(month);	

	nowDate = new Date();
	
	if (myDate < nowDate) {
		myDate = nowDate;
	}
	return myDate;
}

function checkDateFrom (inputfrom, inputto)
{
	datefrom = inputfrom.value;
//	alert('checkDateFrom: '+datefrom);
	if (!(fromDate = checkDateFormat(datefrom))) {
//		alert('datefrom ko');
		return 0;
	}
	datefrom = formatDate(fromDate);
	
	if (!datefrom) {
//		alert('chgt datefrom');
//		if (olddatefrom) datefrom=olddatefrom;
	}
	else {
//		olddatefrom=datefrom;
	}
	if (!inputto.value) {
		toDate = new Date();
		toDate.setTime(fromDate.getTime()+1000*86400);
		inputto.value = formatDate(toDate);
		inputto.removeClassName("error");	
//		olddateto = inputto.value;
		//alert("ok "+ datefrom+" => to: "+toDate);
		return datefrom;
	}
	else {
		toDate = checkDateFormat(inputto.value);
		if (!toDate) {
			var toDate = new Date();
			//alert(fromDate);
			toDate.setTime(fromDate.getTime() + 1000*86400);
			inputto.value=formatDate(toDate);	
//			olddateto = inputto.value;
			inputto.removeClassName("error");	
			//alert(toDate);
			//alert('todate pas bon format. fromDate: ' + fromDate + " > "+toDate);
		}
		else if (toDate.getTime()<=fromDate.getTime()) {
			//alert('dateto < datefrom');
			toDate = new Date();
			toDate.setTime(fromDate.getTime() + 1000*86400);
			inputto.removeClassName("error");	
			inputto.value=formatDate(toDate);
//			olddateto = inputto.value;
		}
		
		return datefrom;
	}
}

function checkDateTo (inputto, inputfrom)
{
	dateto = inputto.value;
	if (!(toDate = checkDateFormat(dateto))) {
		//alert('dateto ko');
		return 0;
	}
	dateto = formatDate(toDate);
	
	if (!dateto) {
		//alert('chgt dateto');
//		if (olddateto) dateto=olddateto;
	}
	else {
//		olddateto=dateto;
	}
	
	if (!inputfrom.value) {
		//alert('pas de fromdate');
		fromDate = new Date();
		fromDate.setTime(toDate.getTime()-1000*86400);
		//alert(toDate+ " => "+fromDate);
		inputfrom.removeClassName("error");	
		inputfrom.value = formatDate(fromDate);
//		olddatefrom = inputfrom.value;
		return dateto;
	}
	else {
		fromDate = checkDateFormat(inputfrom.value);
		if (!fromDate) {
			//alert('fromdate ko');
			fromDate = new Date();
			fromDate.setTime(toDate.getTime()-1000*86400);
			inputfrom.removeClassName("error");	
			inputfrom.value = formatDate(fromDate);
//			olddatefrom = inputfrom.value;
		}
		else if (fromDate.getTime()>=toDate.getTime()) {
			//alert('datefrom < dateto');
			fromDate = new Date();
			fromDate.setTime(toDate.getTime() - 1000*86400);
			inputfrom.removeClassName("error");	
			inputfrom.value=formatDate(fromDate);	
//			olddatefrom = inputfrom.value;
		}
		
		return dateto;
	}
}


function loadDateFromTo ()
{

	var fromtoelts = document.getElementsByClassName("datefromto");

	var nb=0;
	if (fromtoelts && (nb = fromtoelts.length)>0) {
		for (var i=0; i<nb; i++) {
			fromtoelt = fromtoelts[i];
			
			eltfrom = fromtoelt.getElementsByClassName("datefrom")[0];
			inputfrom = eltfrom.getElementsByTagName("input")[0];
			
			if (readCookie(inputfrom.id)) {
				inputfrom.value = formatDate(readCookie(inputfrom.id)*1000);
//				olddatefrom=inputfrom.value;
			}
			
			if (!inputfrom.id) {
      			inputfrom.id = "calendarfrom"+i;
      		}
			
			eltto = fromtoelt.getElementsByClassName("dateto")[0];
			inputto = eltto.getElementsByTagName("input")[0];
			if (readCookie(inputto.id)) {
				inputto.value = formatDate(readCookie(inputto.id)*1000);
//				olddateto=inputto.value;
			}
			if (!inputto.id) {
      			inputto.id = "calendarto"+i;
      		}
			
			inputfrom.onblur = function () {
				$(this).removeClassName("error");
				var check = checkDateFrom(this, $(inputto));


				if (check != 0) {
					this.value = check;
					return 1;
				}
				if (this.value.length) {
					$(this).addClassName("error");
				}
			}
			
			inputto.onblur = function () {
				$(this).removeClassName("error");	
				
				check = checkDateTo(this, $(inputfrom));

				if (check != 0) {
					this.value = check;
					return 1;
				}
				if (this.value.length) {
					$(this).addClassName("error");
				}
			}
			
			
			
			$(eltfrom).insert("<img src='/images/calendar.png' alt='' id='btnfrom"+inputfrom.id+"' />");
			
			CalFrom = Calendar.setup({
     			inputField  :	inputfrom.id,
     			ifFormat       :    getCalendarDateFormat()?getCalendarDateFormat():"%Y/%m/%d",
        		button         :    "btnfrom"+inputfrom.id,
        		step           :    1,
        		onClose        :	function () {
        			fshowFrom=false;
        			$(inputfrom.id).focus();
        			$(inputfrom.id).blur();
        			calendar.hide()
        		},
        		dateStatusFunc :	function (date, y, m, d) {
        			today = new Date();
        			today.setHours(0);
        			today.setMinutes(0);
        			today.setSeconds(0);
 
        			if (date < today) {
        				return true;
        			}
        			return false;
        		}
      		});
      		var fshowFrom=true;
      		$(inputfrom.id).onfocus = function () {
      			if (fshowFrom) {
      				$(inputfrom.id).blur();
					$("btnfrom"+inputfrom.id).onclick();
				}
				fshowFrom=false; 
			}
			
      		$(eltto).insert("<img src='/images/calendar.png' alt='' id='btnto"+inputto.id+"' />");
			
			Calendar.setup({
     			inputField  :	inputto.id,
     			ifFormat       :    calendar_date_format?calendar_date_format:"%Y/%m/%d",
      			showsTime      :    false,
        		button         :    "btnto"+inputto.id,
        		step           :    1,
        		onClose        :	function () {
        			fshowTo=false;
        			$(inputto.id).focus();
        			$(inputto.id).blur();
        			calendar.hide()
        		},
        		dateStatusFunc :	function (date, y, m, d) {
        			today = new Date();
        			today.setHours(0);
        			today.setMinutes(0);
        			today.setSeconds(0);
 
        			if (date < today) {
        				return true;
        			}
        			return false;
        		}
      		});
      		var fshowTo=true;
      		$(inputto.id).onfocus = function () {
      			if (fshowTo) {
      				$(inputto.id).blur();
					$("btnto"+inputto.id).onclick();
				}
				fshowTo=false; 
			}
			
      		Calendar.minYear = 2009;
      		
      		
		}
	}
	else {
		setTimeout("loadDateFromTo()", 400);
	}
}


new Event.observe(window, 'load', loadDateFromTo);

