
/* Utilitaires Dates et navigation pour Dashboard.
    FVE, 07/10/2002, création.
    FVE, 26/12/2002, passage en WX.
    FVE, 26/12/2002, ajout de WXUrlPageName.
    FVE, 31/12/2002, ajout de beginDate.
    FVE, 02/01/2003, ajout de frequency.
    FVE, 16/05/2003, ajout de WXUrlPageNameFromString() et WXComboDateFrequencyFromString().
    FVE, 15/10/2003, prise en compte de l'année dans la selection de la combo date.
*/

var beginDate = '10/01/2002'; // date en anglais (MM/JJ/AAAA) !!
var frequency = 'day';

function WXUrlPageName() {
    return WXUrlPageNameFromString('' + document.location); // convertion en string.
}

function WXUrlPageNameFromString(docloc) {

    var index = docloc.indexOf('.htm') - 10;
    if (docloc.charAt(index + 4) != '-') index += 3;
    for (i = index; 
         (docloc.substring(i, i+1) != '/') && 
	 (docloc.substring(i, i+1) != '\\') &&
	 (i >= 0); i--);
    var pagename = docloc.substring(i + 1, index);
    if (pagename.indexOf('week') == 0) frequency = 'week';
    if (pagename.indexOf('month') == 0) frequency = 'month';
    return pagename;
}

function WXUrlDate() {
    return WXUrlDateFromString('' + document.location); // convertion en string.
}

function WXUrlDateFromString(docloc) {

    var index = docloc.indexOf('.htm');
    var urldate;
    if (docloc.charAt(index - 6) != '-') {
	datefromurl = docloc.substring(index - 7, index);
	urldate = new Date(datefromurl.substring(5,7) + '/' +
			   '01/' + 
			   datefromurl.substring(0,4));
    } else {
	datefromurl = docloc.substring(index - 10, index);
	urldate = new Date(datefromurl.substring(5,7) + '/' +
			   datefromurl.substring(8,10) + '/' + 
			   datefromurl.substring(0,4));
    }
    return urldate;
}

function WXComboDateFrequency() {

    if (frequency == 'month') {
	return WXComboDateMonth();
    } else if (frequency == 'week') {
	return WXComboDateWeek();
    } else {
	return WXComboDate();
    }
}

function WXComboDateFrequencyFromString(fromstring) {

    if (frequency == 'month') {
	return WXComboDateMonthFromString(fromstring);
    } else if (frequency == 'week') {
	return WXComboDateWeekFromString(fromstring);
    } else {
	return WXComboDateFromString(fromstring);
    }
}

function WXComboDate() {
    return WXComboDateFromString('' + document.location); // convertion en string.
}

function WXComboDateFromString(fromstring) {

    var fromday = new Date(beginDate);
    var urldate = WXUrlDateFromString(fromstring);

    chaine = '<select id="sel" size="1" onchange="submit();">';
    var today = new Date();
    fromday.setDate(fromday.getDate());
    today.setDate(today.getDate() - 1);
    for (; 
	 (today.getTime() > fromday.getTime()); 
	 today.setDate(today.getDate() - 1)) {
	year = today.getYear(); 
	if (year < 200) year += 1900;
	month = today.getMonth() + 1;
	if (month < 10) month ='0' + month;
	day = today.getDate();
	if (day < 10) day ='0' + day;
	chaine += '<option value="' + year + '-' + month + '-' + day + '"';
	if ((today.getDate() == urldate.getDate()) && 
	    (today.getMonth() == urldate.getMonth()) &&
	    (today.getYear() == urldate.getYear()) ) 
		chaine += ' selected';
	chaine += '>' + day + '/' + month + '/' + year + '</option>';
    }
    chaine += '</select>';
    return chaine;
}

// calcul la date de jour correspondant à une date.
function WXDayDate(fromdate) {

    var fromday = new Date(); // date au format AAAA-MM-JJ ou AAAA-MM !!
    fromday.setYear(fromdate.substring(0,4));
    fromday.setMonth(fromdate.substring(5,7) - 1);
    if (fromdate.length > 7) {
	fromday.setDate(fromdate.substring(8,10));
    } else {
	fromday.setDate(1);
    }

    year = fromday.getYear(); 
    if (year < 200) year += 1900;
    month = fromday.getMonth() + 1;
    if (month < 10) month ='0' + month;
    day = fromday.getDate();
    if (day < 10) day ='0' + day;
    return year + '-' + month + '-' + day;
}

// calcul la date de semaine correspondant à un jour.
function WXWeekDate(fromdate) {

    var fromday = new Date(); // date au format AAAA-MM-JJ ou AAAA-MM !!
    fromday.setYear(fromdate.substring(0,4));
    fromday.setMonth(fromdate.substring(5,7) - 1);
    if (fromdate.length > 7) {
	fromday.setDate(fromdate.substring(8,10));
    } else {
	fromday.setDate(1);
    }

    delta = fromday.getDay() - 1;
    if (delta == -1) delta = 6;
    fromday.setDate(fromday.getDate() - delta);

    // si la semaine en cours n'est pas passée, on prends la précédente.
    var today = new Date();
    if (today.getTime() - fromday.getTime() < (7 * 86400000)) {
	fromday.setDate(fromday.getDate() - 7);
    }
    if (fromday.getTime() < new Date(beginDate))
	fromday.setDate(fromday.getDate() + 7);

    year = fromday.getYear(); 
    if (year < 200) year += 1900;
    month = fromday.getMonth() + 1;
    if (month < 10) month ='0' + month;
    day = fromday.getDate();
    if (day < 10) day ='0' + day;
    return year + '-' + month + '-' + day;
}

function WXComboDateWeek() {
    return WXComboDateWeekFromString('' + document.location); // convertion en string.
}

function WXComboDateWeekFromString(fromstring) {

    var fromday = new Date(beginDate);
    var urldate = WXUrlDateFromString(fromstring);

    chaine = '<select id="sel" size="1" onchange="submit();">';
    var today = new Date();
    delta = today.getDay() - 1;
    if (delta == -1) delta = 6;
    today.setDate(today.getDate() - delta);
    today.setDate(today.getDate() - 7);
    for (; 
	 (today.getTime() > fromday.getTime()); 
	 today.setDate(today.getDate() - 7)) {
	year = today.getYear(); 
	if (year < 200) year += 1900;
	month = today.getMonth() + 1;
	if (month < 10) month ='0' + month;
	day = today.getDate();
	if (day < 10) day ='0' + day;
	chaine += '<option value="' + year + '-' + month + '-' + day + '"';
	if ((today.getDate() == urldate.getDate()) && 
	    (today.getMonth() == urldate.getMonth()) &&
	    (today.getYear() == urldate.getYear())) 
		chaine += ' selected';
	chaine += '>' + day + '/' + month + '/' + year + '</option>';
    }
    chaine += '</select>';
    return chaine;
}

function WXMonthDate(fromdate) {

    var fromday = new Date(); // date au format AAAA-MM-JJ ou AAAA-MM !!
    fromday.setYear(fromdate.substring(0,4));
    fromday.setMonth(fromdate.substring(5,7) - 1);
    fromday.setDate(1);

    // si le mois en cours n'est pas passé, on prends le précédent.
    var today = new Date();
    if ((today.getMonth() == fromday.getMonth()) &&
	(today.getYear() == fromday.getYear())) {
	fromday.setDate(-1);
	fromday.setDate(1);
    }

    year = fromday.getYear(); 
    if (year < 200) year += 1900;
    month = fromday.getMonth() + 1;
    if (month < 10) month ='0' + month;
    return year + '-' + month;
}

function WXComboDateMonth() {
    return WXComboDateMonthFromString('' + document.location); // convertion en string.
}

function WXComboDateMonthFromString(fromstring) {

    var fromday = new Date(beginDate);
    var urldate = WXUrlDateFromString(fromstring);

    chaine = '<select id="sel" size="1" onchange="submit();">';
    var today = new Date();
    today.setDate(1);
    today.setMonth(today.getMonth() - 1);
    for (; 
	 (today.getTime() > fromday.getTime()); 
	 today.setMonth(today.getMonth() - 1)) {
	year = today.getYear(); 
	if (year < 200) year += 1900;
	month = today.getMonth() + 1;
	if (month < 10) month ='0' + month;
	day = today.getDate();
	if (day < 10) day ='0' + day;
	chaine += '<option value="' + year + '-' + month + '"';
	if ((today.getYear() == urldate.getYear()) && 
	    (today.getMonth() == urldate.getMonth())) {
	    chaine += ' selected';
	}
	chaine += '>' + month + '/' + year + '</option>';
    }
    chaine += '</select>';
    return chaine;
}


