var isIE6 = /msie|MSIE 6/.test(navigator.userAgent);
function checkTo(){
    if (document.getElementById("to_list").value == "U/L") {
        alert("Choose a destination");
        return (false);
    }
    else {
        return (true);
    }
}

function checkSubmitFlight(){
    if (checkDates(document.forms['MainForm'].DepartDate, 'Depart date', document.forms['MainForm'].ReturnDate, 'Return date', getCheckedValue(document.MainForm.onewayswitch) == '1') && checkAirportCodeCalendar() && checkTo()) {
        document.MainForm.submit();
    }
    else {
        return (false);
    }
}

//for /inc-travel-portal/index.asp flight search submit
function checkSubmitFlightNewWin(){
	errMsg = ""
	errMsg = checkDatesNew(document.getElementById('DepartDateFlight'), 'Depart date', document.getElementById('ReturnDateFlight'), 'Return date', getCheckedValue(document.MainForm.onewayswitch) == '1');
	errMsg += checkAirportCodeCalendarNew();
	errMsg += checkToNew()
    if ( errMsg == "" ) {
		postSearchFlight(document.getElementById('CompanyName').value);
        document.MainForm.target='_blank';
		document.MainForm.submit();
    }
    else {
		errMsg = "\nYou must fill in the following fields correctly:\n" + errMsg + "\n\nPlease re-enter your information and submit it again. Thank You!";
        alert(errMsg);
    }
}

function copyValue(obj){
    document.getElementById("other").value = obj.value;
}

function getFlightPageCookies(){
    if (readCookie('cheapFlightSearchFrom') != null) {
        changeDefaultSelectedValue(document.getElementById("from"), readCookie('cheapFlightSearchFrom'));
    }
    if (readCookie('cheapFlightSearchToList') != null) {
        changeDefaultSelectedValue(document.getElementById("to_list"), readCookie('cheapFlightSearchToList'));
    }
    if (readCookie('cheapFlightSearchOneWaySwitch') != null) {
        changeDefaultRadioSelectedValue(document.MainForm.onewayswitch, readCookie('cheapFlightSearchOneWaySwitch'));
    }
    if (readCookie('cheapFlightSearchTarifKlasse') != null) {
        changeDefaultRadioSelectedValue(document.MainForm.tarif_klasse, readCookie('cheapFlightSearchTarifKlasse'));
    }
    if (readCookie('cheapFlightSearchDepartDate') != null) {
        document.getElementById("DepartDate").value = readCookie('cheapFlightSearchDepartDate');
    }
    else {
        fillCurrentDate();
    }
    if (readCookie('cheapFlightSearchReturnDate') != null) {
        document.getElementById("ReturnDate").value = readCookie('cheapFlightSearchReturnDate');
    }
    if (readCookie('cheapFlightSearchPaxAdult') != null) {
        changeDefaultSelectedValue(document.getElementById("pax_adult"), readCookie('cheapFlightSearchPaxAdult'));
    }
    if (readCookie('cheapFlightSearchPaxChd') != null) {
        changeDefaultSelectedValue(document.getElementById("pax_chd"), readCookie('cheapFlightSearchPaxChd'));
    }
    if (readCookie('cheapFlightSearchPaxInf') != null) {
        changeDefaultSelectedValue(document.getElementById("pax_inf"), readCookie('cheapFlightSearchPaxInf'));
    }
}

function changeDefaultSelectedValue(objSelect, value){
    try {
        for (var i = 0; i < objSelect.options.length; i++) {
            if (objSelect.options[i].value == value) {
                objSelect.options[i].selected = true;
                break
            }
        }
    } 
    catch (e) {
    }
}
/*This sets 2 weeks from current date*/
function fillCurrentDate(){
    var currentDate = new Date();
    var currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate() + 14);
    var day = currentDate.getDate();
    var month = currentDate.getMonth() + 1;
    if (parseInt(day) < 10) {
        day = "0" + day;
    }
    if (parseInt(month) < 10) {
        month = "0" + month;
    }
    var currentDateStr = day + "/" + month + "/" + currentDate.getFullYear();
    document.MainForm.DepartDate.value = currentDateStr;
	
	  var currentDate = new Date();
    var currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate() + 21);
    var day = currentDate.getDate();
    var month = currentDate.getMonth() + 1;
    if (parseInt(day) < 10) {
        day = "0" + day;
    }
    if (parseInt(month) < 10) {
        month = "0" + month;
    }
    var currentDateStr = day + "/" + month + "/" + currentDate.getFullYear();
	
	
	
	
    document.MainForm.ReturnDate.value = currentDateStr;
}

function changeDefaultRadioSelectedValue(objRadio, value){
    try {
        if ((value == 1) || (value == 'N')) {
            objRadio[0].checked = true;
            objRadio[1].checked = false;
        }
        else {
            objRadio[0].checked = false;
            objRadio[1].checked = true;
        }
    } 
    catch (e) {
    }
}

function updateReturnDate(){
    if ((document.getElementById("DepartDate") != null) && (document.getElementById("DepartDate").value != "")) {
        var leavingDate = document.getElementById("DepartDate").value;
        try {
            if (IsNumeric(leavingDate.substring(0, 2)) && IsNumeric(leavingDate.substring(3, 5)) && IsNumeric(leavingDate.substring(6, 10))) {
                var dateDep = new Date(leavingDate.substring(6, 10), leavingDate.substring(3, 5), leavingDate.substring(0, 2));
                var dateRetPlusWeek;
                if (leavingDate.substring(0, 2) != 31) {
                    dateRetPlusWeek = new Date(leavingDate.substring(6, 10), ((leavingDate.substring(3, 5)) - 1), dateDep.getDate() + 7);
                }
                else {
                    dateRetPlusWeek = new Date(leavingDate.substring(6, 10), ((leavingDate.substring(3, 5))), dateDep.getDate() + 6);
                }
				
                document.getElementById("ReturnDate").value = formatInputDate(dateRetPlusWeek);
            }
        } 
        catch (e) {
            return (false);
        }
    }
    else {
        return (false);
    }
}

//avoid over-write '"DepartDate'
function updateReturnDateFlight(){
    if ((document.getElementById("DepartDateFlight") != null) && (document.getElementById("DepartDateFilght").value != "")) {
        var leavingDate = document.getElementById("DepartDateFilght").value;
        try {
            if (IsNumeric(leavingDate.substring(0, 2)) && IsNumeric(leavingDate.substring(3, 5)) && IsNumeric(leavingDate.substring(6, 10))) {
                var dateDep = new Date(leavingDate.substring(6, 10), leavingDate.substring(3, 5), leavingDate.substring(0, 2));
                var dateRetPlusWeek;
                if (leavingDate.substring(0, 2) != 31) {
                    dateRetPlusWeek = new Date(leavingDate.substring(6, 10), ((leavingDate.substring(3, 5)) - 1), dateDep.getDate() + 7);
                }
                else {
                    dateRetPlusWeek = new Date(leavingDate.substring(6, 10), ((leavingDate.substring(3, 5))), dateDep.getDate() + 6);
                }
				
                document.getElementById("ReturnDateFlight").value = formatInputDate(dateRetPlusWeek);
            }
        } 
        catch (e) {
            return (false);
        }
    }
    else {
        return (false);
    }
}

function formatInputDate(value){
    var dateToFormat = new Date(value);
    var day = dateToFormat.getDate();
    var month = dateToFormat.getMonth() + 1;
    if (parseInt(day) < 10) {
        day = "0" + day;
    }
    if (parseInt(month) < 10) {
        month = "0" + month;
    }
    var DateStr = day + "/" + month + "/" + dateToFormat.getFullYear();
    return (DateStr);
}

function IsNumeric(value){
    var objRegExp = /^[0-9]*$/;
    try {
        return (objRegExp.test(value));
    } 
    catch (e) {
        return false;
    }
}

function hideFixFirstDate(){
    if (isIE6) {
        document.getElementById('pax_adult').style.visibility = 'hidden';
    }
}

function showFixFirstDate(){
    if (isIE6) {
        document.getElementById('pax_adult').style.visibility = 'visible';
    }
}

function hideFixSecondDate(){
    if (isIE6) {
        document.getElementById('pax_chd').style.visibility = 'hidden';
        document.getElementById('pax_inf').style.visibility = 'hidden';
    }
}

function showFixSecondDate(){
    if (isIE6) {
        document.getElementById('pax_chd').style.visibility = 'visible';
        document.getElementById('pax_inf').style.visibility = 'visible';
    }
}

function checkAirportCodeCalendar(){
    var numDays = 1;
    if (document.MainForm.pax_adult.value == 0 && document.MainForm.pax_stud.value == 0) {
        alert('You must enter at least 1 Passenger to proceed');
        return false;
    }
    if (document.MainForm.pax_adult.value != 0) {
        document.MainForm.paxflight.value = document.MainForm.pax_adult.value;
    }
    else {
        document.MainForm.paxflight.value = document.MainForm.pax_stud.value;
    }
    if (document.MainForm.onewayswitch[0].checked) {
        createCookie('onewayswitch', 1, numDays);
        document.oz_form.TickType.value = 1;
    }
    else {
        createCookie('onewayswitch', 0, numDays);
        document.oz_form.TickType.value = 0;
    }
    if (document.MainForm.other.value == '') {
        if (document.MainForm.to_list.value == 'U/L' || document.MainForm.to_list.value == '0') {
            alert('Please choose a destination before proceeding');
            return false;
        }
        else {
            document.MainForm.to.value = document.MainForm.to_list.value;
        }
    }
    else {
        if (document.MainForm.other.value.length == 3) {
            document.MainForm.to.value = document.MainForm.other.value;
        }
        else 
            if (document.MainForm.other.value.length < 6) {
                alert('Specify 3 letter city code or click on "Other cities"!');
                return false;
            }
            else {
                s = document.MainForm.other.value;
                if (s.substr(s.length - 1, 1) != ')' || s.substr(s.length - 5, 1) != '(') {
                    alert('Specify 3 letter city code or click on "Other cities"!');
                    return false;
                }
                document.MainForm.to.value = s.substr(s.length - 4, 3);
            }
    }
    if (document.MainForm.onewayswitch[0].checked) {
        createCookie('cheapFlightSearchOneWaySwitch', 1, numDays);
        document.oz_form.TickType.value = 1;
    }
    else {
        createCookie('cheapFlightSearchOneWaySwitch', 0, numDays);
        document.oz_form.TickType.value = 0;
    }
    if (document.MainForm.tarif_klasse[0].checked) {
        createCookie('cheapFlightSearchTarifKlasse', document.MainForm.tarif_klasse[0].value, numDays)
    }
    else {
        createCookie('cheapFlightSearchTarifKlasse', document.MainForm.tarif_klasse[1].value, numDays)
    }
    createCookie('cheapFlightSearchPax', document.MainForm.paxflight.value, numDays)
    createCookie('cheapFlightSearchPaxChd', document.MainForm.pax_chd[document.MainForm.pax_chd.selectedIndex].value, numDays)
    createCookie('cheapFlightSearchPaxInf', document.MainForm.pax_inf.value, numDays)
    createCookie('cheapFlightSearchPaxAdult', document.MainForm.pax_adult[document.MainForm.pax_adult.selectedIndex].value, numDays)
    createCookie('cheapFlightSearchFrom', document.MainForm.from.value, numDays)
    createCookie('cheapFlightSearchDestination', document.MainForm.to.value, numDays)
    createCookie('cheapFlightSearchOther', document.MainForm.other.value, numDays)
    createCookie('cheapFlightSearchToList', document.MainForm.to_list.value, numDays)
    createCookie('cheapFlightSearchDepartDate', document.MainForm.DepartDate.value, numDays)
    createCookie('cheapFlightSearchReturnDate', document.MainForm.ReturnDate.value, numDays)
    if (OzDest(document.MainForm.to.value)) {
        document.oz_form.ArrAptCode.value = document.MainForm.to.value;
        document.oz_form.DepDay.value = document.MainForm.Day.value;
        document.oz_form.RetDay.value = document.MainForm.RetDay.value;
        document.oz_form.DepMonthYear.value = document.MainForm.month_1.value;
        document.oz_form.RetMonthYear.value = document.MainForm.month_2.value;
        document.oz_form.ADT.value = document.MainForm.paxflight.value;
        document.oz_form.CHD.value = document.MainForm.pax_chd.value;
        document.oz_form.submit();
        return false;
    }
    return true;
}

function checkAirportCode(){
    if (document.MainForm.pax_adult.value == 0 && document.MainForm.pax_stud.value == 0) {
        alert('You must enter at least 1 Passenger to proceed');
        return false;
    }
    if (document.MainForm.pax_adult.value != 0) 
        document.MainForm.paxflight.value = document.MainForm.pax_adult.value
    else 
        document.MainForm.paxflight.value = document.MainForm.pax_stud.value
    if (document.MainForm.onewayswitch[0].checked) {
        createCookie('cheapFlightSearchOneWaySwitch', 1, numDays);
        document.oz_form.TickType.value = 1;
    }
    else {
        createCookie('cheapFlightSearchOneWaySwitch', 0, numDays);
        document.oz_form.TickType.value = 0;
    }
    if (document.MainForm.other.value == '') {
        if (document.MainForm.to_list.value == 'U/L' || document.MainForm.to_list.value == '0') {
            alert('Please choose a destination before proceeding');
            return false;
        }
        else {
            document.MainForm.to.value = document.MainForm.to_list.value;
        }
    }
    else {
        if ((document.MainForm.other.value).length == 3) {
            document.MainForm.to.value = document.MainForm.other.value;
        }
        else 
            if ((document.MainForm.other.value).length < 6) {
                alert('Specify 3 letter city code or click on "Other cities"!');
                return false;
            }
            else {
                s = document.MainForm.other.value;
                if (s.substr(s.length - 1, 1) != ')' || s.substr(s.length - 5, 1) != '(') {
                    alert('Specify 3 letter city code or click on "Other cities"!');
                    return false;
                }
                document.MainForm.to.value = s.substr(s.length - 4, 3);
            }
    }
    if (!CheckDate()) {
        return false;
    }
    if ((document.MainForm.month_1.selectedIndex * 31 + document.MainForm.Day.selectedIndex) > (document.MainForm.month_2.selectedIndex * 31 + document.MainForm.RetDay.selectedIndex)) {
        alert('Return date is before departure date.\nPlease correct and try again.');
        return false;
    }
    createCookie('cheapFlightSearchTarifKlasse', document.MainForm.tarif_klasse.value, numDays)
    createCookie('cheapFlightSearchPax', document.MainForm.paxflight.value, numDays)
    createCookie('cheapFlightSearchPaxChd', document.MainForm.pax_chd[document.MainForm.pax_chd.selectedIndex].value, numDays)
    createCookie('cheapFlightSearchPaxStudent', document.MainForm.pax_stud.value, numDays)
    createCookie('cheapFlightSearchPaxAdult', document.MainForm.pax_adult[document.MainForm.pax_adult.selectedIndex].value, numDays)
    createCookie('cheapFlightSearchFrom', document.MainForm.DepAptCode.value, numDays)
    createCookie('cheapFlightSearchDestination', document.MainForm.to.value, numDays)
    createCookie('DepDay', document.MainForm.Day.value, numDays)
    createCookie('DepMonYr', document.MainForm.month_1.value, numDays)
    createCookie('RetDay', document.MainForm.RetDay.value, numDays)
    createCookie('RetMonYr', document.MainForm.month_2.value, numDays)
    createCookie('cheapFlightSearchOther', document.MainForm.other.value, numDays)
    createCookie('cheapFlightSearchToList', document.MainForm.to_list.value, numDays)
    if (OzDest(document.MainForm.to.value)) {
        document.oz_form.ArrAptCode.value = document.MainForm.to.value;
        document.oz_form.DepDay.value = document.MainForm.Day.value;
        document.oz_form.RetDay.value = document.MainForm.RetDay.value;
        document.oz_form.DepMonthYear.value = document.MainForm.month_1.value;
        document.oz_form.RetMonthYear.value = document.MainForm.month_2.value;
        document.oz_form.ADT.value = document.MainForm.paxflight.value;
        document.oz_form.CHD.value = document.MainForm.pax_chd.value;
        document.oz_form.submit();
        return false;
    }
    return true;
}

dateToday = new Date();
thisYear = dateToday.getFullYear();
thisMonth = dateToday.getMonth() + 1;
thisDate = dateToday.getDate();
var MonthArray = new Array();
function openpopupDest(){
    window.open('/includes/selectdest.asp', 'new1', 'toolbar=no,location=no,statusbar=no,menubar=no,resizable=yes,width=400,height=220,top=220,left=220');
}

function OzDest(strDest){
    return false;
    if (strDest == 'ADL') 
        return true;
    if (strDest == 'ASP') 
        return true;
    if (strDest == 'AKL') 
        return true;
    if (strDest == 'DPS') 
        return true;
    if (strDest == 'BKK') 
        return true;
    if (strDest == 'BOS') 
        return true;
    if (strDest == 'BNE') 
        return true;
    if (strDest == 'CNS') 
        return true;
    if (strDest == 'CHC') 
        return true;
    if (strDest == 'DEW') 
        return true;
    if (strDest == 'HKG') 
        return true;
    if (strDest == 'HNL') 
        return true;
    if (strDest == 'KUL') 
        return true;
    if (strDest == 'LAX') 
        return true;
    if (strDest == 'MEL') 
        return true;
    if (strDest == 'NYC') 
        return true;
    if (strDest == 'PER') 
        return true;
    if (strDest == 'SIN') 
        return true;
    if (strDest == 'SYD') 
        return true;
    if (strDest == 'WLG') 
        return true;
    return false;
}

function addDays(myDate, days){
    return new Date(myDate.getTime() + days * 24 * 60 * 60 * 1000);
}

var numDays = addDays(new Date(), 5)
function createCookie(name, value, expires, path, domain, secure){
    var curCookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
    document.cookie = curCookie;
}

function getCookie(name){
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) 
            return null;
    }
    else 
        begin += 2;
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) 
        end = dc.length;
    return unescape(dc.substring(begin + prefix.length, end));
}

function deleteCookie(name, path, domain){
    if (getCookie(name)) {
        document.cookie = name + "=" +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}

function checkSunHotelsFields(){
    var missinginfo = "";
    if (document.book.tempArea.value == "") {
        missinginfo += "\n     -  You must select a Destination";
    }
    if (document.book.tempBoardCategory.value == "-") {
        missinginfo += "\n     -  You must select a Board Option";
    }
    if (missinginfo != "") {
        missinginfo = "\nYou must fill in the following fields correctly:\n" +
        missinginfo +
        "\n\nPlease re-enter your information and submit it again. Thank You!";
        alert(missinginfo);
        return;
    }
    else 
        document.book.submit();
}

var dtCh = "/";
var minYear = 1900;
var maxYear = 2100;
function isInteger(s){
    var i;
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) 
            return false;
    }
    return true;
}

function stripCharsInBag(s, bag){
    var i;
    var returnString = "";
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) 
            returnString += c;
    }
    return returnString;
}

function daysInFebruary(year){
    return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
}

function DaysArray(n){
    for (var i = 1; i <= n; i++) {
        this[i] = 31
        if (i == 4 || i == 6 || i == 9 || i == 11) {
            this[i] = 30
        }
        if (i == 2) {
            this[i] = 29
        }
    }
    return this
}

function isDate(dtStr, name){
    var daysInMonth = DaysArray(12)
    var pos1 = dtStr.indexOf(dtCh)
    var pos2 = dtStr.indexOf(dtCh, pos1 + 1)
    var strDay = dtStr.substring(0, pos1)
    var strMonth = dtStr.substring(pos1 + 1, pos2)
    var strYear = dtStr.substring(pos2 + 1)
    strYr = strYear
    if (strDay.charAt(0) == "0" && strDay.length > 1) 
        strDay = strDay.substring(1)
    if (strMonth.charAt(0) == "0" && strMonth.length > 1) 
        strMonth = strMonth.substring(1)
    for (var i = 1; i <= 3; i++) {
        if (strYr.charAt(0) == "0" && strYr.length > 1) 
            strYr = strYr.substring(1)
    }
    month = parseInt(strMonth)
    day = parseInt(strDay)
    year = parseInt(strYr)
    if (pos1 == -1 || pos2 == -1) {
        alert(name + ": the date format should be : dd/mm/yyyy")
        return false
    }
    if (strMonth.length < 1 || month < 1 || month > 12) {
        alert(name + ": please enter a valid month")
        return false
    }
    if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]) {
        alert(name + ": please enter a valid day")
        return false
    }
    if (strYear.length != 4 || year == 0 || year < minYear || year > maxYear) {
        alert(name + ": please enter a valid 4 digit year between " + minYear + " and " + maxYear)
        return false
    }
    if (dtStr.indexOf(dtCh, pos2 + 1) != -1 || isInteger(stripCharsInBag(dtStr, dtCh)) == false) {
        alert(name + ": please enter a valid date")
        return false
    }
    return true
}

function dateCheck(input, name){
    if (input != null && input.value != null && input.value.length > 0) 
	{
        if (!isDate(input.value, name)) 
		{
            return false;
        }
    }
    else {
        alert(name + ": no date provided");
        return false;
    }
    return true;
}

function checkDates(inputDepart, nameDepart, inputReturn, nameReturn, oneway){
    if (oneway) {
        return dateCheck(inputDepart, nameDepart);
    }
    else {
        if (!dateCheck(inputDepart, nameDepart) || !dateCheck(inputReturn, nameReturn)) {
            return false;
        }
        else {
            dateDepart = new Date(getDateFromFormat(inputDepart.value, "dd/MM/yyyy"));
            dateReturn = new Date(getDateFromFormat(inputReturn.value, "dd/MM/yyyy"));
            if (dateDepart > dateReturn) {
                alert("Your desired return date must be greater or equal to your departure date");
                return false;
            }
            else {
                return true;
            }
        }
    }
}

function getCheckedValue(radioObj){
    if (!radioObj) 
        return "";
    var radioLength = radioObj.length;
    if (radioLength == undefined) 
        if (radioObj.checked) 
            return radioObj.value;
        else 
            return "";
    for (var i = 0; i < radioLength; i++) {
        if (radioObj[i].checked) {
            return radioObj[i].value;
        }
    }
    return "";
}

function _isInteger(val){
    var digits = "1234567890";
    for (var i = 0; i < val.length; i++) {
        if (digits.indexOf(val.charAt(i)) == -1) {
            return false;
        }
    }
    return true;
}

function _getInt(str, i, minlength, maxlength){
    for (var x = maxlength; x >= minlength; x--) {
        var token = str.substring(i, i + x);
        if (token.length < minlength) {
            return null;
        }
        if (_isInteger(token)) {
            return token;
        }
    }
    return null;
}

function getDateFromFormat(val, format){
    val = val + "";
    format = format + "";
    var i_val = 0;
    var i_format = 0;
    var c = "";
    var token = "";
    var token2 = "";
    var x, y;
    var now = new Date();
    var year = now.getYear();
    var month = now.getMonth() + 1;
    var date = 1;
    var hh = now.getHours();
    var mm = now.getMinutes();
    var ss = now.getSeconds();
    var ampm = "";
    while (i_format < format.length) {
        c = format.charAt(i_format);
        token = "";
        while ((format.charAt(i_format) == c) && (i_format < format.length)) {
            token += format.charAt(i_format++);
        }
        if (token == "yyyy" || token == "yy" || token == "y") {
            if (token == "yyyy") {
                x = 4;
                y = 4;
            }
            if (token == "yy") {
                x = 2;
                y = 2;
            }
            if (token == "y") {
                x = 2;
                y = 4;
            }
            year = _getInt(val, i_val, x, y);
            if (year == null) {
                return 0;
            }
            i_val += year.length;
            if (year.length == 2) {
                if (year > 70) {
                    year = 1900 + (year - 0);
                }
                else {
                    year = 2000 + (year - 0);
                }
            }
        }
        else 
            if (token == "MMM" || token == "NNN") {
                month = 0;
                for (var i = 0; i < MONTH_NAMES.length; i++) {
                    var month_name = MONTH_NAMES[i];
                    if (val.substring(i_val, i_val + month_name.length).toLowerCase() == month_name.toLowerCase()) {
                        if (token == "MMM" || (token == "NNN" && i > 11)) {
                            month = i + 1;
                            if (month > 12) {
                                month -= 12;
                            }
                            i_val += month_name.length;
                            break;
                        }
                    }
                }
                if ((month < 1) || (month > 12)) {
                    return 0;
                }
            }
            else 
                if (token == "EE" || token == "E") {
                    for (var i = 0; i < DAY_NAMES.length; i++) {
                        var day_name = DAY_NAMES[i];
                        if (val.substring(i_val, i_val + day_name.length).toLowerCase() == day_name.toLowerCase()) {
                            i_val += day_name.length;
                            break;
                        }
                    }
                }
                else 
                    if (token == "MM" || token == "M") {
                        month = _getInt(val, i_val, token.length, 2);
                        if (month == null || (month < 1) || (month > 12)) {
                            return 0;
                        }
                        i_val += month.length;
                    }
                    else 
                        if (token == "dd" || token == "d") {
                            date = _getInt(val, i_val, token.length, 2);
                            if (date == null || (date < 1) || (date > 31)) {
                                return 0;
                            }
                            i_val += date.length;
                        }
                        else 
                            if (token == "hh" || token == "h") {
                                hh = _getInt(val, i_val, token.length, 2);
                                if (hh == null || (hh < 1) || (hh > 12)) {
                                    return 0;
                                }
                                i_val += hh.length;
                            }
                            else 
                                if (token == "HH" || token == "H") {
                                    hh = _getInt(val, i_val, token.length, 2);
                                    if (hh == null || (hh < 0) || (hh > 23)) {
                                        return 0;
                                    }
                                    i_val += hh.length;
                                }
                                else 
                                    if (token == "KK" || token == "K") {
                                        hh = _getInt(val, i_val, token.length, 2);
                                        if (hh == null || (hh < 0) || (hh > 11)) {
                                            return 0;
                                        }
                                        i_val += hh.length;
                                    }
                                    else 
                                        if (token == "kk" || token == "k") {
                                            hh = _getInt(val, i_val, token.length, 2);
                                            if (hh == null || (hh < 1) || (hh > 24)) {
                                                return 0;
                                            }
                                            i_val += hh.length;
                                            hh--;
                                        }
                                        else 
                                            if (token == "mm" || token == "m") {
                                                mm = _getInt(val, i_val, token.length, 2);
                                                if (mm == null || (mm < 0) || (mm > 59)) {
                                                    return 0;
                                                }
                                                i_val += mm.length;
                                            }
                                            else 
                                                if (token == "ss" || token == "s") {
                                                    ss = _getInt(val, i_val, token.length, 2);
                                                    if (ss == null || (ss < 0) || (ss > 59)) {
                                                        return 0;
                                                    }
                                                    i_val += ss.length;
                                                }
                                                else 
                                                    if (token == "a") {
                                                        if (val.substring(i_val, i_val + 2).toLowerCase() == "am") {
                                                            ampm = "AM";
                                                        }
                                                        else 
                                                            if (val.substring(i_val, i_val + 2).toLowerCase() == "pm") {
                                                                ampm = "PM";
                                                            }
                                                            else {
                                                                return 0;
                                                            }
                                                        i_val += 2;
                                                    }
                                                    else {
                                                        if (val.substring(i_val, i_val + token.length) != token) {
                                                            return 0;
                                                        }
                                                        else {
                                                            i_val += token.length;
                                                        }
                                                    }
    }
    if (i_val != val.length) {
        return 0;
    }
    if (month == 2) {
        if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {
            if (date > 29) {
                return 0;
            }
        }
        else {
            if (date > 28) {
                return 0;
            }
        }
    }
    if ((month == 4) || (month == 6) || (month == 9) || (month == 11)) {
        if (date > 30) {
            return 0;
        }
    }
    if (hh < 12 && ampm == "PM") {
        hh = hh - 0 + 12;
    }
    else 
        if (hh > 11 && ampm == "AM") {
            hh -= 12;
        }
    var newdate = new Date(year, month - 1, date, hh, mm, ss);
    return newdate.getTime();
}

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 updateFlexibleDates()
{
	if (document.getElementById('flexible_dates_checkbox').checked)
	{
		document.getElementById('flexible_dates').value = 'Y';	
	}	
	else
	{
		document.getElementById('flexible_dates').value = 'N';	
	}
}
