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

//-----o init
/**
 * Defined contants, call initCalendar methode
 */
var DISABLED_START;
var DISABLED_END;
var DISABLED_OFFSET;
var ANCHOR_START;
var YEAR_START;
var MONTH_START;
var DAY_START;
var SYMBOL_PREVIEW;
var SYMBOL_NEXT;
var cal;

/**
 * initalize calendar constants, create calendar and set calendar properties
 */
function initDateDepartOnglet() {

	var startDate = new Date();
    var numberToFirstDay = 2;
    // set the startDate after the numberToFirstDay
    startDate.setDate(startDate.getDate() + numberToFirstDay);
	var value;
    var startMonth = startDate.getMonth() + 1;
    var startYear = startDate.getFullYear();

    var numberMonthAvailable = 10;
    var endMonth =  startMonth + numberMonthAvailable;
    var endYear =  startYear;
    while(endMonth > 12){
        endMonth = endMonth - 12;
        endYear = endYear + 1;
    }
		var buffer ="";
	  	buffer += "<li>";
     	buffer += "<a href=\"/safari/Toutes-Les-Dates/dmy=\">";
     	buffer += "Toutes les dates"
       	buffer += "</a></li>";

     for (var monthIterate = startMonth; monthIterate <= startMonth + numberMonthAvailable+1; monthIterate++){
     	buffer += "<li>";
     	buffer += "<a href=/safari/"+convertIndexToMth(monthIterate)+"/"+convertIndexToMthYear(monthIterate,startYear,0)+">";
     	buffer += convertIndexToMthYear(monthIterate,startYear,2);
       	buffer += "</a></li>";
     }
     document.write(buffer);
}

function initDateDepartSearchEngine(value) {
	// constants
	var isSelected=true;
    var startDate = new Date();
    var numberToFirstDay = 2;
    // 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;

   if(value==""){
   		for (var monthIterate = startMonth; monthIterate <= startMonth + numberMonthAvailable; monthIterate++){
      	 	document.getElementById("monthSearch").options[j] = new Option((convertIndexToMthYear(monthIterate,startYear,1)),(convertIndexToMthYear(monthIterate,startYear,0)));
        	j++;
    	 }
     }
     else{
    	 for (var monthIterate = startMonth; monthIterate <= startMonth + numberMonthAvailable; monthIterate++){

       		if(value==(convertIndexToMthYear(monthIterate,startYear,0))){isSelected=true;}
       		else{isSelected=false;}

       	document.getElementById("monthSearch").options[j] = new Option((convertIndexToMthYear(monthIterate,startYear,1)),(convertIndexToMthYear(monthIterate,startYear,0)),false,isSelected);
        j++;
     }
     }
}


function convertIndexToMthYear(month,startYear, index){
    var monthAbbreFrench = new Array('','Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
    var year =  startYear;
    var years="";
    while(month > 12){
        month = month - 12;
        year = year + 1;
    }
    if (index == 0){
    	if(month<10){return ("0"+month+"/"+year);}
    	else{ return ((month) + "/" + year);}
    }
    years=year.toString().substring(2,4);
    return monthAbbreFrench[month]+" "+years;
}

function convertIndexToMth(month){
	var monthSelected;
    var monthAbbreFrench = new Array('','janvier','fevrier','mars','avril','mai','juin','juillet','aout','septembre','octobre','novembre','decembre');
    while(month > 12){
        month = month - 12;
    }
    monthSelected=monthAbbreFrench[month];
	monthSelected=AccentToNoAccent(monthSelected);
    return monthSelected;
   }

// Remplace les caractères accentués
function AccentToNoAccent(str) {
var norm = new Array('À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï', 'Ð','Ñ','Ò','Ó','Ô','Õ','Ö','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß', 'à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ', 'ò','ó','ô','õ','ö','ø','ù','ú','û','ü','ý','ý','þ','ÿ');
var spec = new Array('A','A','A','A','A','A','A','C','E','E','E','E','I','I','I','I', 'D','N','O','O','O','0','O','O','U','U','U','U','Y','b','s', 'a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','d','n', 'o','o','o','o','o','o','u','u','u','u','y','y','b','y');
for (var i = 0; i < spec.length; i++)
str = replaceAll(str, norm[i], spec[i]);
return str;
}
function MajToMin(str) {
var norm = new Array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
var spec = new Array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
for (var i = 0; i < spec.length; i++)
str = replaceAll(str, norm[i], spec[i]);
return str;
}
// Remplace toutes les occurences d'une chaine
function replaceAll(str, search, repl) {
while (str.indexOf(search) != -1)
str = str.replace(search, repl);
return str;
}
//-----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["searchEngineForm"].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["searchEngineForm"].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) {
	YEAR_START=y;
	MONTH_START=(m < 10)?'0'+m : m;
	DAY_START=d;

	document.forms["searchEngineForm"].dd.value=DAY_START;
	document.forms["searchEngineForm"].dmy.value=MONTH_START+"/"+YEAR_START;
}

/**
 * Set the select and input values from calendar
 * @param {String} dd
 * @param {String} dmy
 */
function setValuesDDDMY(dmy, dd) {
	//alert(dmy);
	document.forms["searchEngineForm"].dd.value=dd;
	document.forms["searchEngineForm"].dmy.value=dmy;
}


/**
 * 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;
    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;
    var m = m_obj;
    var d = d_obj;
	y = today.getFullYear();
	m = today.getMonth() + 1;
	d = today.getDate();

	setValuesCalendar(y, m, d);
}
