﻿String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}
function Left(str, n) {
    if (n <= 0)
        return "";
    else if (n > String(str).length)
        return str;
    else
        return String(str).substring(0, n);
}
function Right(str, n) {
    if (n <= 0)
        return "";
    else if (n > String(str).length)
        return str;
    else {
        var iLen = String(str).length;
        return String(str).substring(iLen, iLen - n);
    }
}
function DateToString(dDate) {
    return Right("0" + dDate.getDate().toString(), 2) + "/" + Right("0" + (dDate.getMonth() + 1).toString(), 2) + "/" + dDate.getFullYear().toString();
}
function StringToDate(dDate) {
    return new Date(dDate.substring(6, 10), dDate.substring(3, 5) - 1, dDate.substring(0, 2),0,0,0);
}
function isDate(date) {
    month = date.substring(3, 5);
    day = date.substring(0, 2);
    year = date.substring(6, 10)
    if (month < 1 || month > 12) {
        return false;
    }
    if (day < 1 || day > 31) {
        return false;
    }
    if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) {
        return false;
    }
    if (month == 2) {
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day > 29 || (day == 29 && !isleap)) {
            return false;
        }
    }
    return true;
}
function fcIsValidDate(value) {
    if (value.length != 10) return false;
    else if (value.substring(2, 3) != "/" || value.substring(5, 6) != "/") return false;
    else if (isNaN(value.substring(0, 1)) ||
            isNaN(value.substring(1, 2)) ||
            isNaN(value.substring(3, 4)) ||
            isNaN(value.substring(4, 5)) ||
            isNaN(value.substring(6, 7)) ||
            isNaN(value.substring(7, 8)) ||
            isNaN(value.substring(8, 9)) ||
            isNaN(value.substring(9, 10)))
        return false;
    else if (!isDate(value))
        return false;
    else
        return true;
}
function fcIsIntegerNumber(value) {
    if (value == "") return false;
    for (i = 0; i < value.length; i++) {
        if (value.substring(i, i + 1) != 0 &&
                value.substring(i, i + 1) != 1 &&
                value.substring(i, i + 1) != 2 &&
                value.substring(i, i + 1) != 3 &&
                value.substring(i, i + 1) != 4 &&
                value.substring(i, i + 1) != 5 &&
                value.substring(i, i + 1) != 6 &&
                value.substring(i, i + 1) != 7 &&
                value.substring(i, i + 1) != 8 &&
                value.substring(i, i + 1) != 9)
            return false;
    }
    return true;
}
function DateDiff(x, y) {
    var x1, y1;
    x1 = new Date(x.substring(6, 10), x.substring(3, 5) - 1, x.substring(0, 2));
    y1 = new Date(y.substring(6, 10), y.substring(3, 5) - 1, y.substring(0, 2));
    var one_day = 1000 * 60 * 60 * 24;
    return Math.ceil((y1.getTime() - x1.getTime()) / (one_day));
}
function fcNoOfNightsCalculate(sender) {
    var a = document.getElementById("txtArrivalDate").value.trim();
    var d = document.getElementById("txtDepartureDate").value.trim();
    var n = document.getElementById("txtNoNights").value.trim();
    if ((sender == "ArrivalDate" || sender == "DepartureDate") && fcIsValidDate(a) && fcIsValidDate(d))
        document.getElementById("txtNoNights").value = DateDiff(a, d).toString();
    else if ((sender == "ArrivalDate" && fcIsValidDate(a) && !fcIsValidDate(d) && fcIsIntegerNumber(n))
                || (sender == "NoOfNights" && fcIsValidDate(a) && fcIsIntegerNumber(n)))
        document.getElementById("txtDepartureDate").value = DateToString(DateAdd("d", n, StringToDate(a)));
    else if ((sender == "DepartureDate" && fcIsValidDate(d) && !fcIsValidDate(a) && fcIsIntegerNumber(n))
                || (sender == "NoOfNights" && fcIsValidDate(d) && fcIsIntegerNumber(n)))
        document.getElementById("txtArrivalDate").value = DateToString(DateAdd("d", -1 * n, StringToDate(a)));
}
function fcTotalBillCalculate(sender) {
    if (sender == "ArrivalDate" || sender == "DepartureDate" || sender == "NoOfNights") {
        fcNoOfNightsCalculate(sender);
    }
    var n = document.getElementById("txtNoNights").value.trim();
    var g = document.getElementById("txtNoOfGuests").value.trim();
    var dr = document.getElementById("txtDayRate").value.trim();
    var br = document.getElementById("txtBreakfast").value.trim();
    var brr = document.getElementById("txtBreakfastRate").value.trim();
    var hb = document.getElementById("txtHalfboard").value.trim();
    var hbr = document.getElementById("txtHalfboardRate").value.trim();
    var fb = document.getElementById("txtFullboard").value.trim();
    var fbr = document.getElementById("txtFullboardRate").value.trim();
    var ac = document.getElementById("txtAirCondition").value.trim();
    var acc = document.getElementById("chkAirCondition").checked;
    var it = document.getElementById("txtInternet").value.trim();
    var itc = document.getElementById("chkInternet").checked;
    var pr = document.getElementById("txtParking").value.trim();
    var prc = document.getElementById("chkParking").checked;
    var st = document.getElementById("txtSatellite").value.trim();
    var stc = document.getElementById("chkSatellite").checked;
    var dv = document.getElementById("txtDVD").value.trim();
    var dvc = document.getElementById("chkDVD").checked;
    var bc = document.getElementById("txtBabyCot").value.trim();
    var bcc = document.getElementById("chkBabyCot").checked;
    var tat = document.getElementById("txtArrivalTotal").value.trim();
    var tdt = document.getElementById("txtDepartureTotal").value.trim();
    var ast = document.getElementById("txtSpecialServicesTotal").value.trim();
    var d = document.getElementById("txtDiscount").value.trim();
    var ao = 0;
    var TotalBill = 0;
    if (fcIsIntegerNumber(n) && fcIsIntegerNumber(g) && sender == "") {
        if (!isNaN(dr))
            TotalBill = n * g * dr;
        if (fcIsIntegerNumber(br) && !isNaN(brr))
            TotalBill = TotalBill + br * brr;
        if (fcIsIntegerNumber(hb) && !isNaN(hbr))
            TotalBill = TotalBill + hb * hbr;
        if (fcIsIntegerNumber(fb) && !isNaN(fbr))
            TotalBill = TotalBill + fb * fbr;
        if (!isNaN(ac) && acc)
            TotalBill = TotalBill + n * ac;
        if (!isNaN(it) && itc)
            TotalBill = TotalBill + n * it;
        if (!isNaN(pr) && prc)
            TotalBill = TotalBill + n * pr;
        if (!isNaN(st) && stc)
            TotalBill = TotalBill + n * st;
        if (!isNaN(dv) && dvc)
            TotalBill = TotalBill + n * dv;
        if (!isNaN(bc) && bcc)
            TotalBill = TotalBill + n * bc;
        if (!isNaN(ast))
            TotalBill = TotalBill + 1 * ast;
        if (!isNaN(tat))
            TotalBill = TotalBill + 1 * tat;
        if (!isNaN(tdt))
            TotalBill = TotalBill + 1 * tdt;
        document.getElementById("txtAmountOwed").value = TotalBill.toFixed(2).toString();
    }
    ao = document.getElementById("txtAmountOwed").value.trim();
    if (!isNaN(d) && !isNaN(ao))
        document.getElementById("txtTotal").value = (ao - d).toFixed(2).toString();
    if ((sender == "AmountOwed" || sender == "Discount") && !isNaN(d) && !isNaN(ao))
        document.getElementById("txtTotal").value = (ao - d).toFixed(2).toString();
}
function fcMonthName(month,lang) {
    var m_names;
    if (lang == 'it')
        m_names = new Array("gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre");
    else
        m_names = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
    return m_names[month-1];
}
function DateAdd(timeU, byMany, dateObj) {
    var millisecond = 1;
    var second = millisecond * 1000;
    var minute = second * 60;
    var hour = minute * 60;
    var day = hour * 24;
    var year = day * 365;

    var newDate;
    var dVal = dateObj.valueOf();
    switch (timeU) {
        case "ms": newDate = new Date(dVal + millisecond * byMany); break;
        case "s": newDate = new Date(dVal + second * byMany); break;
        case "mi": newDate = new Date(dVal + minute * byMany); break;
        case "h": newDate = new Date(dVal + hour * byMany); break;
        case "d":
            newDate = new Date(dVal + day * byMany);
            if (newDate.getHours() == 23 && newDate.getMonth() == 9 && newDate.getDay() == 0)
                newDate = new Date(dVal + day * byMany + hour);
            //if (newDate.getHours() == 1 && newDate.getMonth() == 2 && newDate.getDay() == 1)
            //    newDate = newDate //new Date(dVal + day * byMany - 2* hour);
            break;
        case "y": newDate = new Date(dVal + year * byMany); break;
    }
    return newDate;
}
function fcSetDates(ddlMonthYear, ddlDays, ln) {
    document.getElementById(ddlMonthYear).length = 0;
    document.getElementById(ddlDays).length = 0;
    var now = DateAdd("d", 2, new Date());
    var month = now.getMonth() + 1;
    var year = now.getFullYear();
    for (i = 1; i <= 12; i++) {
        var opt = document.createElement("option");
        if ((month + i - 1) > 12) {
            //opt.text = Right('0' + (month + i - 1 - 12).toString(),2) + "/" + (year+1).toString()
            opt.text = fcMonthName(month + i - 1 - 12,ln) + " " + (year + 1).toString()
            opt.value = Right('0' + (month + i - 1 - 12).toString(), 2) + "/" + (year + 1).toString()
        } else {
            opt.text = fcMonthName(month + i - 1, ln) + " " + year.toString()
            opt.value = Right('0' + (month + i - 1).toString(), 2) + "/" + year.toString()
        }
        document.getElementById(ddlMonthYear).options.add(opt);
    }
    var days = 31;
    if (month == 4 || month == 6 || month == 9 || month == 11) {
        days = 30;
    }
    if (month == 2) {
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (isleap) {days = 29; } else {days = 28; }
    }
    for (i = now.getDate(); i <= days; i++) {
        var opt = document.createElement("option");
        opt.text = Right('0' + i.toString(), 2)
        opt.value = Right('0' + i.toString(), 2)
        document.getElementById(ddlDays).options.add(opt);
    }
}
function fcOnMonthDaysChange(ddlMonthYear, ddlDays) {
    var month = parseInt(Left(document.getElementById(ddlMonthYear).value, 2), 10);
    var year = parseInt(Right(document.getElementById(ddlMonthYear).value, 4));
    document.getElementById(ddlDays).length = 0;
    var days = 31;
    if (month == 4 || month == 6 || month == 9 || month == 11) {
        days = 30;
    }
    if (month == 2) {
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (isleap) {days = 29;} else {days = 28;}
    }
    var startDay = 1;
    var now = DateAdd("d", 2, new Date());
    if (month == now.getMonth() + 1 && year == now.getFullYear()) 
        startDay = now.getDate()
    for (i = startDay; i <= days; i++) {
        var opt = document.createElement("option");
        opt.text = Right('0' + i.toString(), 2);
        opt.value = Right('0' + i.toString(), 2);
        document.getElementById(ddlDays).options.add(opt);
    }
}
function fcSetArrivalDepartureDatesNoOfNights(ddlArrivalMonthYear, ddlArrivalDays, ddlDepartureMonthYear, ddlDepartureDays, ddlNoOfNights, Sender, ln) {
    var ArrivalDate = new Date();
    ArrivalDate = StringToDate(document.getElementById(ddlArrivalDays).value + "/" + document.getElementById(ddlArrivalMonthYear).value);
    var NoOfNights = parseInt(document.getElementById(ddlNoOfNights).value, 10);
    var DepartureDate = new Date();
    DepartureDate = DateAdd("d", NoOfNights, ArrivalDate);
    document.getElementById(ddlDepartureMonthYear).length = 0;
    document.getElementById(ddlDepartureDays).length = 0;
    var optday = document.createElement("option");
    optday.value = Left(DateToString(DepartureDate), 2);
    optday.text = Left(DateToString(DepartureDate), 2);
    document.getElementById(ddlDepartureDays).options.add(optday);
    var optmy = document.createElement("option");
    optmy.value = Right(DateToString(DepartureDate), 7);
    optmy.text = fcMonthName(DepartureDate.getMonth() + 1, ln) + " " + Right(DateToString(DepartureDate), 4);
    document.getElementById(ddlDepartureMonthYear).options.add(optmy);

    document.getElementById("ddlMonthYear").selectedIndex = document.getElementById(ddlArrivalMonthYear).selectedIndex;
    fcOnMonthDaysChange("ddlMonthYear", "ddlDay");
    document.getElementById("ddlDay").selectedIndex = document.getElementById(ddlArrivalDays).selectedIndex;
}
function fcFrameLoad(ln) {
    fcSetDates('ddlMonthYear', 'ddlDay',ln);
    document.getElementById('btnRentalBookNow').setAttribute('onclick', 'window.location = "./apartment_rental.aspx?a=' + document.getElementById('ddlDay').value + '/' + document.getElementById('ddlMonthYear').value + '#_"');
    document.getElementById('m_left').style.height = (document.body.clientHeight - 1051 - 150 - 10).toString() + "px";
    if ((document.body['scrollWidth'] == document.body['clientWidth']) && (document.body['scrollWidth'] < 1085))
        scrollBy((1076-document.body['scrollWidth']) / 2, 0);
    if (document.body['scrollWidth'] < 1085)
        scrollBy(((document.body['scrollWidth']) - document.body['clientWidth']) / 2, 0);
    //alert(document.body['scrollWidth']);
    //alert(document.body['clientWidth']);
}
function fcFrameResize() {
    if (document.getElementById('m_left') != null) {
        document.getElementById('m_left').style.height = 0
        document.getElementById('m_left').style.height = (document.body.clientHeight - 1051 - 150 - 10).toString() + "px";
    }
}
