﻿function initInfantCount(list, optionLabel) {
    if (optionLabel == null)
        optionLabel = "";

    list.addOptions("1", "0 " + optionLabel, "0", "1 " + optionLabel, "1");
    list.addOptions("2", "0 " + optionLabel, "0", "1 " + optionLabel, "1", "2 " + optionLabel, "2");
    list.addOptions("3", "0 " + optionLabel, "0", "1 " + optionLabel, "1", "2 " + optionLabel, "2", "3 " + optionLabel, "3");
    list.addOptions("4", "0 " + optionLabel, "0", "1 " + optionLabel, "1", "2 " + optionLabel, "2", "3 " + optionLabel, "3", "4 " + optionLabel, "4");
    list.addOptions("5", "0 " + optionLabel, "0", "1 " + optionLabel, "1", "2 " + optionLabel, "2", "3 " + optionLabel, "3", "4 " + optionLabel, "4", "5 " + optionLabel, "5");
    list.addOptions("6", "0 " + optionLabel, "0", "1 " + optionLabel, "1", "2 " + optionLabel, "2", "3 " + optionLabel, "3", "4 " + optionLabel, "4", "5 " + optionLabel, "5", "6 " + optionLabel, "6");
    list.addOptions("7", "0 " + optionLabel, "0", "1 " + optionLabel, "1", "2 " + optionLabel, "2", "3 " + optionLabel, "3", "4 " + optionLabel, "4", "5 " + optionLabel, "5", "6 " + optionLabel, "6", "7 " + optionLabel, "7");
    list.addOptions("8", "0 " + optionLabel, "0", "1 " + optionLabel, "1", "2 " + optionLabel, "2", "3 " + optionLabel, "3", "4 " + optionLabel, "4", "5 " + optionLabel, "5", "6 " + optionLabel, "6", "7 " + optionLabel, "7", "8 " + optionLabel, "8");
    list.addOptions("9", "0 " + optionLabel, "0", "1 " + optionLabel, "1", "2 " + optionLabel, "2", "3 " + optionLabel, "3", "4 " + optionLabel, "4", "5 " + optionLabel, "5", "6 " + optionLabel, "6", "7 " + optionLabel, "7", "8 " + optionLabel, "8", "9 " + optionLabel, "9");
    list.setDefaultOption("1", "0");
    list.setDefaultOption("2", "0");
    list.setDefaultOption("3", "0");
    list.setDefaultOption("4", "0");
    list.setDefaultOption("5", "0");
    list.setDefaultOption("6", "0");
    list.setDefaultOption("7", "0");
    list.setDefaultOption("8", "0");
    list.setDefaultOption("9", "0");
}

function initChildCount(list, optionLabel) {
    if (optionLabel == null)
        optionLabel = "";

    list.addOptions("1", "0 " + optionLabel, "0", "1 " + optionLabel, "1", "2 " + optionLabel, "2", "3 " + optionLabel, "3", "4 " + optionLabel, "4", "5 " + optionLabel, "5", "6 " + optionLabel, "6", "7 " + optionLabel, "7", "8 " + optionLabel, "8");
    list.addOptions("2", "0 " + optionLabel, "0", "1 " + optionLabel, "1", "2 " + optionLabel, "2", "3 " + optionLabel, "3", "4 " + optionLabel, "4", "5 " + optionLabel, "5", "6 " + optionLabel, "6", "7 " + optionLabel, "7");
    list.addOptions("3", "0 " + optionLabel, "0", "1 " + optionLabel, "1", "2 " + optionLabel, "2", "3 " + optionLabel, "3", "4 " + optionLabel, "4", "5 " + optionLabel, "5", "6 " + optionLabel, "6");
    list.addOptions("4", "0 " + optionLabel, "0", "1 " + optionLabel, "1", "2 " + optionLabel, "2", "3 " + optionLabel, "3", "4 " + optionLabel, "4", "5 " + optionLabel, "5");
    list.addOptions("5", "0 " + optionLabel, "0", "1 " + optionLabel, "1", "2 " + optionLabel, "2", "3 " + optionLabel, "3", "4 " + optionLabel, "4");
    list.addOptions("6", "0 " + optionLabel, "0", "1 " + optionLabel, "1", "2 " + optionLabel, "2", "3 " + optionLabel, "3");
    list.addOptions("7", "0 " + optionLabel, "0", "1 " + optionLabel, "1", "2 " + optionLabel, "2");
    list.addOptions("8", "0 " + optionLabel, "0", "1 " + optionLabel, "1");
    list.addOptions("9", "0 " + optionLabel, "0");
    list.setDefaultOption("1", "0");
    list.setDefaultOption("2", "0");
    list.setDefaultOption("3", "0");
    list.setDefaultOption("4", "0");
    list.setDefaultOption("5", "0");
    list.setDefaultOption("6", "0");
    list.setDefaultOption("7", "0");
    list.setDefaultOption("8", "0");
    list.setDefaultOption("9", "0");
}

function leapYear(year) {
    return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) ? true : false;
}

function initDayOptions() {
    var dayString = '';
    for (i = 1; i <= 31; i++) {
        dayString += '<option value=\"' + padd(i) + '\">' + padd(i) + '</option>\n'
    }

    document.write(dayString);
}

function initMonthOptions(monthArray) {
    var today = new Date();
    var bumped = false;
    var monthString = '';
    var monthArrayIndex;

    var maxday = addDays(today, 355);
    var maxRealMonth = getRealMonth(maxday.getMonth());
    var maxRealYear = getRealYear(maxday.getYear());

    var currentYear = getRealYear(today.getYear());
    var currentRealMonth;

    for (i = 0; i < 15; i++) {
        monthArrayIndex = today.getMonth() + i;
        currentRealMonth = (monthArrayIndex % 12) + 1;

        if (!bumped && monthArrayIndex >= 12) {
            currentYear++;
            bumped = true;
        }
        monthString = monthString + '<option value="' + currentYear + (padd(currentRealMonth)) + '">' + (monthArray[monthArrayIndex]) + ' ' + currentYear + '</option>\n';
        if (maxRealYear == currentYear && currentRealMonth >= maxRealMonth) {
            break;
        }
    }

    document.write(monthString);
}

function initMonthOptionsWithTripType(tripTypeOneWayText, monthArray) {
    var today = new Date();
    var bumped = false;
    var monthString = '<option value="" >' + tripTypeOneWayText + '</option>\n';
    var monthArrayIndex;

    var maxday = addDays(today, 355);
    var maxRealMonth = getRealMonth(maxday.getMonth());
    var maxRealYear = getRealYear(maxday.getYear());

    var currentYear = getRealYear(today.getYear());
    var currentRealMonth;

    for (i = 0; i < 15; i++) {
        monthArrayIndex = today.getMonth() + i;
        currentRealMonth = (monthArrayIndex % 12) + 1;

        if (!bumped && monthArrayIndex >= 12) {
            currentYear++;
            bumped = true;
        }
        if (i == 0) {
            monthString = monthString + '<option value="' + currentYear + (padd(currentRealMonth)) + '" selected=selected >' + (monthArray[monthArrayIndex]) + ' ' + currentYear + '</option>\n';
        }
        else {
            monthString = monthString + '<option value="' + currentYear + (padd(currentRealMonth)) + '">' + (monthArray[monthArrayIndex]) + ' ' + currentYear + '</option>\n';
        }
        if (maxRealYear == currentYear && currentRealMonth >= maxRealMonth) {
            break;
        }
    }

    document.write(monthString);
}

function getRealMonth(jsMonth) {
    return (jsMonth + 1);
}
function getRealYear(jsYear) {
    var year = jsYear;
    if (year < 1000) {
        year += 1900;
    }
    return year;
}

function padd(number) {
    return (number < 10) ? '0' + number : number;
}
function addDays(myDate, days) {
    return new Date(myDate.getTime() + days * 24 * 60 * 60 * 1000);
}
function days_in_month(year, month) {
    return 32 - new Date(year, month, 32).getDate();
}


/**
* Function looks for a value in a select list.
* If found, it is selected
**/
function selectIfFound(selectList, targetValue) {
    if (selectList == null)
        return;
    var found = false;
    for (var i = 0; i < selectList.length; i++) {
        if (selectList.options[i].value == targetValue) {
            selectList.options[i].selected = true;
            found = true;
            break;
        }
    }
}

function setDeparture(origins, value) {
    if (value != null && value != "")
        selectIfFound(origins, value);
    else
        origins.selectedIndex = 0;
}

		function setDefaultPax(origins, value)
		{
			if (value != null && value != "")
				selectIfFound(origins, value);
			else
				origins.selectedIndex = 0;
		}
		
function setArrival(destinations, value) {

    if (value != null && value != "") {
        selectIfFound(destinations, value);
    }
    else if (destinations.selectedIndex > 0) {
        selectIfFound(destinations, destinations.options[destinations.selectedIndex].value);
    }
    else {
        destinations.selectedIndex = 0;
    }
}

/**
* Toggles the visibility of the object with the passed in ID.
* Method requires DOM level 1 support in the browser.
**/
function toggleElement(elementId, isEnabled) {
    if (document.getElementById) {
        var element = document.getElementById(elementId);
        if (element) {
            element.disabled = !isEnabled;
        }
    }
}



/**
*	Check if date is valid	
*
*	DateValue = 
*	ddmmyy (171201) or 
*	ddmmyyyy (17122001) or 
*	ddXmmXyy (17-12-01 or 17y12q01 ... ) or 
*	ddXmmXyyyy (17.12.2001 or 17,12,2001 ...) 
*	where 'X' is any sign not in 0..9, i.e. '-' or '/'
*
**/
function checkDateGeneral(DateValue) {
    var checkstr = '0123456789';
    var NewDatevalue = '';
    var DateTemp = '';
    var seperator = '.';
    var day;
    var month;
    var year;
    var leap = 0;
    var err = 0;
    var i;
    err = 0;

    /* Delete all chars except 0..9 */
    for (i = 0; i < DateValue.length; i++) {
        if (checkstr.indexOf(DateValue.substr(i, 1)) >= 0) {
            DateTemp = DateTemp + DateValue.substr(i, 1);
        }
    }
    DateValue = DateTemp;
    /* Always change date to 8 digits - string*/
    /* if year is entered as 2-digit / always assume 20xx */
    if (DateValue.length == 6) {
        DateValue = DateValue.substr(0, 4) + '20' + DateValue.substr(4, 2);
    }
    if (DateValue.length != 8) {
        err = 19;
    }
    /* year is wrong if year = 0000 */
    year = DateValue.substr(4, 4);
    if (year == 0) {
        err = 20;
    }
    /* Validation of month*/
    month = DateValue.substr(2, 2);
    if ((month < 1) || (month > 12)) {
        err = 21;
    }
    /* Validation of day*/
    day = DateValue.substr(0, 2);
    if (day < 1) {
        err = 22;
    }
    /* Validation leap-year / february / day */
    if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
        leap = 1;
    }
    if ((month == 2) && (leap == 1) && (day > 29)) {
        err = 23;
    }
    if ((month == 2) && (leap != 1) && (day > 28)) {
        err = 24;
    }
    /* Validation of other months */
    if ((day > 31) && ((month == '01') || (month == '03') || (month == '05') || (month == '07') || (month == '08') || (month == '10') || (month == '12'))) {
        err = 25;
    }
    if ((day > 30) && ((month == '04') || (month == '06') || (month == '09') || (month == '11'))) {
        err = 26;
    }
    /* if 00 ist entered, no error, deleting the entry */
    if ((day == 0) && (month == 0) && (year == 00)) {
        err = 0; day = ''; month = ''; year = ''; seperator = '';
    }
    /* if no error, write the completed date to Input-Field (e.g. 13.12.2001) */
    if (err == 0) {
        NewDatevalue = day + seperator + month + seperator + year;
    }

    return err;
}