/**
 * CalendarInit.js
 * @author Emmanuel Sammut (TS)
 * Last modified July 1, 2008 by Emmanuel Sammut (TS)
 */

//-----o init
/**
 * initalize calendar constants, create calendar and set calendar properties
 */
function initCalendar() {
	// constants
    var startDate = new Date();
    var numberToFirstDay = 2;//n'oublies pas de changer ce valeur dans control.js(numberToFirstDay)
    // set the startDate after the numberToFirstDay
    startDate.setDate(startDate.getDate() + numberToFirstDay);

    var startDay = startDate.getDate();
    var startMonth = startDate.getMonth() + 1;
    var startYear = startDate.getFullYear();

    var endDate = new Date();
    var numberMonthAvailable = 11;
    var endMonth =  startMonth + numberMonthAvailable;
    var endYear =  startYear;
    while(endMonth > 12){
        endMonth = endMonth - 12;
        endYear = endYear + 1;
    }

    var j=1;
     for (var monthIterate = startMonth; monthIterate <= startMonth + numberMonthAvailable; monthIterate++){
       document.getElementById("monthOfDeparture").options[j] = new Option(convertIndexToMthYear(monthIterate,startYear,1),convertIndexToMthYear(monthIterate,startYear,0));
        j++;
     }
    j=1;
     for (var dayIterate = 1; dayIterate <= 31; dayIterate++){
       document.getElementById("dayOfDeparture").options[j] = new Option((dayIterate < 10)?'0'+dayIterate : dayIterate,dayIterate);
        j++;
     }

    endDate.setFullYear(endYear);
    endDate.setMonth(endMonth);


	DISABLED_START = startDate;
	//DISABLED_END = "yesterday";

    DISABLED_END = endDate;
	DISABLED_OFFSET = 1;
	ANCHOR_START = "anchorCalendar";


	//YEAR_START = document.forms["formSearchEngine"].yearOfDeparture;
	//MONTH_START = document.forms["formSearchEngine"].monthOfDeparture;
	//DAY_START = document.forms["formSearchEngine"].dayOfDeparture;
    var dmy=document.forms["formSearchEngine"].dmy.value;
    if(dmy!=""){
        YEAR_START =dmy.split("/")[1];
        MONTH_START = dmy.split("/")[0];
    }else{

        YEAR_START = "";
        MONTH_START = "";
    }

    DAY_START = document.forms["formSearchEngine"].dd.value;
	SYMBOL_PREVIEW = '&lt;';
	SYMBOL_NEXT = '&gt';
	// create calendar
	cal = new Calendar("div" , "calendarContainer");
	// set calendar properties
	cal.addDisabledDates(DISABLED_START, DISABLED_END);
	cal.setReturnFunction("setValuesCalendar");
	cal.setMonthNames('Janvier','F&eacute;vrier','Mars','Avril','Mai','Juin','Juillet','Ao&ucirc;t','Septembre','Octobre','Novembre','D&eacute;cembre');
	cal.setDayHeaders('Di','Lu','Ma','Me','Je','Ve','Sa');
	cal.setTodayText("Aujourd'hui");
	cal.setWeekStartDay(1);
	cal.setSymbolNavigation(SYMBOL_PREVIEW, SYMBOL_NEXT);
	cal.setCssPrefix("se_");
	cal.offsetX = 30;
	cal.offsetY = 0;
	// set select and input
	//setToday(YEAR_START, MONTH_START, DAY_START);
}


function convertIndexToMthYear(month,startYear, index){
    var monthAbbreFrench = new Array('','Jan.','F\xE9v.','Mars','Avr.','Mai','Juin','Juil.','Ao\xFBt','Sept.','Oct.','Nov.','D\xE9c.');
    var year =  startYear;
    while(month > 12){
        month = month - 12;
        year = year + 1;
    }
    if (index == 0){ return (LZ(month) + "/" + year);}
    return monthAbbreFrench[month]+" "+year;
    }

//-----o Open window
/**
 * Open calendar window
 * @return {Boolean} false
 */
function showCal() {
    var daysinmonth=new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
    var dmy=document.forms["formSearchEngine"].dmy.value;
    if(dmy!=""){
        YEAR_START =dmy.split("/")[1];
        MONTH_START = dmy.split("/")[0];
        if(((MONTH_START%4==0)&&(MONTH_START%100!=0))||(MONTH_START%400==0)){daysinmonth[2]=29;}
    }else{

        YEAR_START = "";
        MONTH_START = "";
    }


    DAY_START = document.forms["formSearchEngine"].dd.value;
    if(MONTH_START != ""){
        var month=MONTH_START;
        if(month.length==2)month=month.substring(1,2);
        var dayMax=daysinmonth[month];
        if(DAY_START>dayMax)
            DAY_START=dayMax;

    }
	var thisSelect = getDateString(YEAR_START, MONTH_START, DAY_START);
	cal.showCalendar(ANCHOR_START, thisSelect);
	return false;
}

//-----o select and input
/**
 * Set the select and input values from calendar
 * @param {String} y
 * @param {String} m
 * @param {String} d
 */
function setValuesCalendar(y, m, d) {
//alert("y:"+y+"m:"+m+"d:"+d);
YEAR_START=y;
MONTH_START=(m < 10)?'0'+m : m;
DAY_START=d;

document.forms["formSearchEngine"].dd.value=DAY_START;
document.forms["formSearchEngine"].dmy.value=MONTH_START+"/"+YEAR_START;
	//YEAR_START.value = y;
	//MONTH_START.selectedIndex = m;
//	for (var i = 0; i < DAY_START.options.length; i++) {
//		if (DAY_START.options[i].value == d) {
//			DAY_START.selectedIndex = i;
//		}
//	}
}

/**
 * Get select and input values and retrun good format
 * @param {Object} y_obj
 * @param {Object} m_obj
 * @param {Object} d_obj
 * @return {String} default y-m-d format, or null if Objects is null
 */
function getDateString(y_obj, m_obj, d_obj) {
	//var y = y_obj.value;
	//var m = m_obj.options[m_obj.selectedIndex].value;
	//var d = d_obj.options[d_obj.selectedIndex].value;
    var y = y_obj;
    var m = m_obj;
    var d = d_obj;
	if (y == "" || m == "") {
		return null;
	}
	if (d == "") {
		d = 1;
	}

	return str= y + '-' + m + '-' + d;
}

/**
 * Set today values into select and input
 * @param {Object} y_obj
 * @param {Object} m_obj
 * @param {Object} d_obj
 */
function setToday(y_obj, m_obj, d_obj) {
	var today = new Date();
	//var y = y_obj.value;
	//var m = m_obj.options[m_obj.selectedIndex].value;
	//var d = d_obj.options[d_obj.selectedIndex].value;
    var y = y_obj;
    var m = m_obj;
    var d = d_obj;
	y = today.getFullYear();
	m = today.getMonth() + 1;
	d = today.getDate();

	setValuesCalendar(y, m, d);
}
