function y2k(number) {
    return (number < 1000) ? number + 1900 : number;
}

function isDate(day, month, year) {
    // checks if date passed is valid
    // will accept dates in following format:
    // isDate(dd,mm,ccyy), or
    // isDate(dd,mm) - which defaults to the current year, or
    // isDate(dd) - which defaults to the current month and year.
    // Note, if passed the month must be between 1 and 12, and the
    // year in ccyy format.

    var today = new Date();
    year = ((!year) ? y2k(today.getYear()) : year);
    month = ((!month) ? today.getMonth() : month - 1);
    if (!day) return false
    var test = new Date(year, month, day);
    if ((y2k(test.getYear()) == year) && (month == test.getMonth()) && (day == test.getDate()))
        return true;
    else
        return false
}
//End validation of date


function toggleLayer(whichLayer) {
    var id = "#" + whichLayer;
    if ($(id).is(":visible")) {
        $(id).fadeOut(200);
    }
    else {
        $(id).fadeIn(200);
    }
}

function showPriceCalendar(contract, product, dropdtls, form, qty, ticketType) {
    xmlHttp = GetXmlHttpObject();
    if (xmlHttp == null) {
        return
    }

    var url = "ajax/allocation.aspx";
    url = url + "?contract=" + contract + "&dropdtls=" + dropdtls + "&form=" + form;
    if (product != '') {
        url += "&product=" + product;
    }

    url += "&qty=" + qty;
    url += "&ttype=" + ticketType;
    url = url + "&sid=" + Math.random();
    xmlHttp.onreadystatechange = stateChangedCalendar;
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null);

    function stateChangedCalendar() {
        if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
            document.getElementById("Allocation" + form).innerHTML = xmlHttp.responseText
            toggleLayer("CalendarForm" + form);
        }
    }
}


function showPriceDC(month, year, contracts, contractname, services, navigation, form, ticketType) {
    xmlHttp = GetXmlHttpObject()
    if (xmlHttp == null) {
        return
    }
    var url = "ajax/allocation.aspx"
    url = url + "?seldate=" + year + " " + month + "&contract=" + contracts + "&contractname=" + contractname + "&service=" + services + "&Navigation=" + navigation + "&form=" + form + "&style=2"
    url += "&dropdtls=" + year + "-" + month;
    url += "&ttype=" + ticketType;
    url = url + "&sid=" + Math.random()
    //xmlHttp.onreadystatechange = stateChangedDC
    xmlHttp.onreadystatechange = stateChangedCalendarDC
    xmlHttp.open("GET", url, true)
    xmlHttp.send(null)

    function stateChangedCalendarDC() {
        if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
            document.getElementById("Allocation" + form).innerHTML = xmlHttp.responseText
        }
    }
}

function showPriceMulti(month, year, contracts, contractname, productId, navigation, form, ticketType, siteAttribute, siteId) {
    xmlHttp = GetXmlHttpObject()
    if (xmlHttp == null) {
        return
    }
    var url = "ajax/allocation-multi.aspx"
    url = url + "?seldate=" + year + " " + month + "&contract=" + contracts + "&contractname=" + contractname + "&productId=" + productId + "&Navigation=" + navigation + "&form=" + form + "&style=2"
    url += "&dropdtls=" + year + "-" + month;
    url += "&ttype=" + ticketType;
    url += "&siteId=" + siteId;
    url += "&siteAttribute=" + siteAttribute;
    url = url + "&sid=" + Math.random()
    xmlHttp.onreadystatechange = stateChangedCalendarMulti
    xmlHttp.open("GET", url, true)
    xmlHttp.send(null)

    function stateChangedCalendarMulti() {
        if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
            document.getElementById("Allocation" + form).innerHTML = xmlHttp.responseText
            //toggleLayer("CalendarForm" + form);
        }
    }
}


function stateChangedDC() {
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
        var responseArray = xmlHttp.responseText.split("XX");
        document.getElementById("Allocation" + responseArray[0]).innerHTML = responseArray[1];
    }
}


function showPrice(day, month, year, contract, formnumber, ttype, attrVal, fullDate, firstYear) {
    if (isDate(day, month, year) == false && fullDate) {
        alert("Please enter a valid date (date entered does not exist)");
    }

    xmlHttp = GetXmlHttpObject()
    if (xmlHttp == null) {
        //alert ("Browser does not support HTTP Request")
        return
    }
    var url = "ajax/calendar-price.aspx";
    url = url + "?day=" + day + "&month=" + month + "&year=" + year + "&contract=" + contract + "&formnumber=" + formnumber;
    url += "&ttype=" + ttype;
    url += "&contrID=" + attrVal;
    url += "&fullDate=" + fullDate;
    url += "&firstYear=" + firstYear;
    url = url + "&sid=" + Math.random();
    xmlHttp.onreadystatechange = stateChanged
    xmlHttp.open("GET", url, true)
    xmlHttp.send(null)

}

function stateChanged() {

    if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {

        var responseArray = xmlHttp.responseText.split("X");
        var id = (responseArray.length) - 1;
        if (document.getElementById("adultAjax" + responseArray[id]) != null) {
            document.getElementById("adultAjax" + responseArray[id]).innerHTML = responseArray[0];
        }
        if (document.getElementById("childAjax" + responseArray[id]) != null)
            document.getElementById("childAjax" + responseArray[id]).innerHTML = responseArray[1];
        if (document.getElementById("ageAjax" + responseArray[id]) != null)
            document.getElementById("ageAjax" + responseArray[id]).innerHTML = responseArray[2];
        if (document.frmBooking.ChildAge.value != null)
            document.frmBooking.ChildAge.value = responseArray[3];



        if (responseArray[0] == "&pound;N/A") {
            $("#bookingButton" + responseArray[id]).hide();
        }
        else {
            $("#bookingButton" + responseArray[id]).show();
        }
    }
}

function GetXmlHttpObject(handler) {
    var objXmlHttp = null

    if (navigator.userAgent.indexOf("Opera") >= 0) {
        //alert("Opera not supported...")
        return;
    }
    if (navigator.userAgent.indexOf("MSIE") >= 0) {
        if (navigator.appVersion.indexOf("MSIE 7.0") >= 1) {
            try {
                objXmlHttp = new XMLHttpRequest()
                //objXmlHttp.onreadystatechange=handler
                return objXmlHttp
            }
            catch (e) {
                //alert("Error. Scripting for XML might be disabled")
                return
            }
        }
        else {
            var strName = "Msxml2.XMLHTTP"
            if (navigator.appVersion.indexOf("MSIE 5.5") >= 0) {
                strName = "Microsoft.XMLHTTP"
            }
            try {
                objXmlHttp = new ActiveXObject(strName)
                //objXmlHttp.onreadystatechange=handler
                return objXmlHttp
            }
            catch (e) {
                //alert("Error. Scripting for ActiveX might be disabled")
                return
            }
        }
    }

    if (navigator.userAgent.indexOf("Mozilla") >= 0) {
        objXmlHttp = new XMLHttpRequest()
        objXmlHttp.onload = handler
        objXmlHttp.onerror = handler
        return objXmlHttp
    }
}


function SetCalendarValue(thisForm, FormDay, FormMonth, FormYear, contract) {

    $("#adultAjax" + thisForm).html('<img src = "images/site/ajax-loader-orange.gif" />');
    $("#childAjax" + thisForm).html('<img src = "images/site/ajax-loader-orange.gif" />');

    var formID = "#tick" + thisForm;

    $(formID + " select.day").val(FormDay);
    $(formID + " select.month").val(FormMonth);
    $(formID + " select.year").val(FormYear);

    showPrice(FormDay, FormMonth, FormYear, contract, thisForm, document.frmBooking.TicketType.value, document.frmBooking.SiteAttribute.value, true, $(formID + " input.firstYear").val());
}

function CreateBookmarkLink(url) {
    title = "AttractionTix - Pay, Print, Present";

    if (window.sidebar) { // Mozilla Firefox Bookmark
        window.sidebar.addPanel(title, url, "");
    }
    else if (window.external) { // IE Favorite
        window.external.AddFavorite(url, title);
    }
    else if (window.opera && window.print) { // Opera Hotlist
        return true;
    }
}


function resetForms() {
    for (i = 0; i < document.forms.length; i++) {
        document.forms[i].reset();
    }
}


function CalendarMonthChanged(contract, product, dropdtls, form, ticketType) {
    $("#CalendarForm" + form + " .table").html('<div class = "loading">Loading <img src = "images/site/ajax-loader-bluebg.gif" /></div>');
    var qty = $("#tick" + form + " select.adultTickets").val();
    showPriceCalendar(contract, product, dropdtls, form, qty, ticketType);
}

function GetNewPrice(contract, formnumber, ttype, attrVal, showFullYear) {
    var formID = "#tick" + formnumber;
    $("#adultAjax" + formnumber).html('<img src = "images/site/ajax-loader-orange.gif" />');
    $("#childAjax" + formnumber).html('<img src = "images/site/ajax-loader-orange.gif" />');
    showPrice($(formID + " .day").val(), $(formID + " .month").val(), $(formID + " select.year").val(), contract, formnumber, ttype, attrVal, showFullYear, $(formID + " input.firstYear").val());
}

function BookingPage(frmNo, contractId, childAge) {

    var bkg = document.frmBooking;

    var formID = "#tick" + frmNo;

    var adultTix = $(formID + " select.adultTickets").val();
    var childTix = $(formID + " select.childTickets").val();

    if ($(formID + " .adultsavail").val() == "false")
        bkg.AllowAdults.value = false
    
    if ($(formID + " .childavail").val() == "false")
        bkg.AllowChild.value = false

    bkg.Day.value = $(formID + " .day").val();
    bkg.Month.value = $(formID + " .month").val();
    bkg.Year.value = $(formID + " .year").val();
    bkg.FirstYear.value = $(formID + " .firstYear").val();

    if (childTix != null) { bkg.ChildQty.value = childTix; }

    try {
        bkg.ChildAge.value = childAge;
    }
    catch (ex) {
        bkg.ChildAge.value = null;
    }

    bkg.Contract.value = contractId;
    bkg.AdultQty.value = adultTix;

    if (bkg.AdultQty.value == "0" && bkg.ChildQty.value == "0") {
        alert("Please indicate the number of tickets you require.");
        return false;
    }

    bkg.submit();
}


