﻿// JScript File

//Trim function - reusable code

function LTrim(str) {

    var whitespace = new String(" \n\r\t")
    var s = new String(str)

    if (whitespace.indexOf(s.charAt(0)) != -1) {
        var j = 0, i = s.length
        while (j < i && whitespace.indexOf(s.charAt(j)) != -1) {
            j++
        }
        s = s.substring(j, i)
    }
    return (s)
}

function RTrim(str) {

    var whitespace = new String(" \t\n\r")
    var s = new String(str)

    if (whitespace.indexOf(s.charAt(s.length - 1)) != -1) {
        var i = s.length - 1
        while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1) {
            i--
        }
        s = s.substring(0, i + 1)
    }
    return (s)
}

function Trim(str) {
    return RTrim(LTrim(str))
}

function hnclick() {
    if (document.getElementById(HNid).value == "All properties") {
        document.getElementById(HNid).value = ""
    }
}

function comboclick() {

    if (reset == 0 && document.getElementById(CCid).value != "") {

        if (typeof (DbComboServerExists) != 'undefined') {
            var str = DbComboGetQuery(CTid)
            DbComboChangeText(CTid, str)
            DbComboSelectAll(CTid)
        }
    }
}

var reset = 0

function copycombo(Value, Text, SelectionType) {

    //don't bother if nothing has changed
    //(this allows reset when user clicks to change city after search has happened)

    if (document.getElementById(CCid).value != Value) {
        document.getElementById(CCid).value = Value

        if (Value != "") {
            document.getElementById("div1").style.visibility = "hidden"
            document.getElementById("div2").style.visibility = "hidden"
            //when city selected (ie don't reset the combo when clicked to make this selection)
            reset = 1
        }
        else {
            document.getElementById("div1").style.visibility = "visible"
            document.getElementById("div2").style.visibility = "visible"
        }
    }
}

function copydate() {

    //whenever form is clicked
    reset = 0
    //document.getElementById("div5").style.visibility="hidden"
    //document.getElementById("div5").style.display="none"

    //copy date to hidden box
    var elem = document.getElementById(Cid)

    if (elem) {

        var seldate = elem.value
        var elem2 = document.getElementById(DCid)
        elem2.value = seldate
        //check in future box
        var elem3 = document.getElementById(Tdyid)
        var todaydate = elem3.value

        //hide or show validation control
        //no date
        if (seldate.length == 0) {
            document.getElementById("div3").style.visibility = "visible"
            document.getElementById("div3").style.display = "inline"
        }
        else {
            document.getElementById("div3").style.visibility = "hidden"
            document.getElementById("div3").style.display = "none"

            var d = new Date(seldate.substring(6), (seldate.substring(3, 5) - 1), seldate.substring(0, 2))

            if (d.getFullYear() == seldate.substring(6) && d.getMonth() == (seldate.substring(3, 5) - 1) && d.getDate() == seldate.substring(0, 2)) {
                document.getElementById("div4").style.visibility = "hidden"
                document.getElementById("div4").style.display = "none"

                if (seldate.substring(2, 3) != "/" || seldate.substring(5, 6) != "/" || seldate.length < 10) {
                    document.getElementById("div4").style.visibility = "visible"
                    document.getElementById("div4").style.display = "inline"
                    document.getElementById("div6").style.visibility = "hidden"
                    document.getElementById("div6").style.display = "none"
                    document.getElementById("div6").innerHTML = ""
                }
                else {
                    document.getElementById("div4").style.visibility = "hidden"
                    document.getElementById("div4").style.display = "none"

                    var d2 = new Date(todaydate.substring(6), (todaydate.substring(3, 5) - 1), todaydate.substring(0, 2))

                    if (d < d2) {
                        document.getElementById("div6").style.visibility = "visible"
                        document.getElementById("div6").style.display = "inline"
                        document.getElementById("div6").innerHTML = "*Date too early"
                        error = true
                    }
                    else {
                        document.getElementById("div6").style.visibility = "hidden"
                        document.getElementById("div6").style.display = "none"
                        document.getElementById("div6").innerHTML = ""
                    }

                }

            }
            else {
                document.getElementById("div4").style.visibility = "visible"
                document.getElementById("div4").style.display = "inline"
            }
        }
    }
}

var error

function getfocus() {

    dontdisable = "0"
    error = false
    //default to focus on nights box, will get overrided if invalid selection before this

    var txt = document.getElementById(Nid)
    var txtv = Trim(txt.value)

    if (isNaN(txtv) || txtv.length == 0) {
        txt.focus()
        error = true
    }
    else {
        if (parseInt(txt.value) <= 0 || parseInt(txt.value) > 28) {
            txt.focus()
            error = true
        }
    }


    var txt = document.getElementById(Cid)
    var txtv, d
    txtv = Trim(txt.value)

    if (txtv.length < 10) {

        if (txtv.length == 8 && txtv.substring(2, 3) == "/" && txtv.substring(5, 6) == "/") {
            txt.value = txtv.substring(0, 6) + "20" + txtv.substring(6, 8)
            getfocus()
            //txt.focus()    
            //error=true
        }
        else {
            txt.focus()
            error = true
        }
    }
    else {

        //check slashes in right place
        if (txtv.substring(2, 3) != "/" || txtv.substring(5, 6) != "/") {
            txt.focus()
            error = true
        }
        else {
            //check valid date
            d = new Date(txtv.substring(6), (txtv.substring(3, 5) - 1), txtv.substring(0, 2))

            if (d.getFullYear() == txtv.substring(6) && d.getMonth() == (txtv.substring(3, 5) - 1) && d.getDate() == txtv.substring(0, 2)) {
            }
            else {
                txt.focus()
                error = true
            }
        }
    }

    copydate()

    //if no errors we know the form will be submitted so display busy box    
    if (error == false) {
        busyBox.Show()
    }
}


function loadDate() {

    //load selected date back into DatePicker
    //this eliminates the lag on calendar after postback (allows us to reset the calendar control)
    var elem = document.getElementById(Cid)
    var elem2
    var elem3
    var elem4

    //elem.value="dd/mm/yyyy"

    if (datepicked.length > 0) {
        elem.value = datepicked
    }

    elem = document.getElementById(Nid)

    //elem.value=""
    if (nights != "") {
        elem.value = nights
    }

    elem = document.getElementById(ddRQid)

    if (rooms != "") {
        elem.value = rooms

        for (r = 1; r <= 4; r++) {

            if (r <= rooms) {
                elem = document.getElementById(ddAdArray[r - 1])
                elem.value = AdValArray[r - 1]
                elem = document.getElementById(ddChArray[r - 1])
                elem.value = ChValArray[r - 1]

                elem4 = document.getElementById("Room" + r + "C")
                displayAges(ChValArray[r - 1], r)

                if (ChValArray[r - 1] > 0) {

                    elem4.style.visibility = "visible"
                    elem4.style.display = "block"

                    switch (r) {
                        case 1:

                            for (c = 1; c <= ChValArray[r - 1]; c++) {
                                elem2 = document.getElementById(ddChAgeArray1[c - 1])
                                elem2.value = ChAgesArray1[c - 1]
                            }

                            break;

                        case 2:

                            for (c = 1; c <= elem.value; c++) {
                                elem2 = document.getElementById(ddChAgeArray2[c - 1])
                                elem2.value = ChAgesArray2[c - 1]
                            }

                            break;

                        case 3:

                            for (c = 1; c <= elem.value; c++) {
                                elem2 = document.getElementById(ddChAgeArray3[c - 1])
                                elem2.value = ChAgesArray3[c - 1]
                            }

                            break;

                        case 4:

                            for (c = 1; c <= elem.value; c++) {
                                elem2 = document.getElementById(ddChAgeArray4[c - 1])
                                elem2.value = ChAgesArray4[c - 1]
                            }

                            break;
                    }

                }
                else {
                    elem4.style.visibility = "hidden"
                    elem4.style.display = "none"
                }

                elem = document.getElementById("Room" + r + "A")
                elem2 = document.getElementById("Room" + r + "B")
                elem3 = document.getElementById("Room" + r + "H")

                elem.style.visibility = "visible"
                elem.style.display = "block"
                elem2.style.visibility = "visible"
                elem2.style.display = "block"

                if (r > 1 && elem3) {
                    elem3.style.visibility = "visible"
                    elem3.style.display = "block"
                }

            }
            else {
                displayAges(0, r)
                elem = document.getElementById("Room" + r + "A")
                elem2 = document.getElementById("Room" + r + "B")
                elem3 = document.getElementById("Room" + r + "H")
                elem4 = document.getElementById("Room" + r + "C")

                elem.style.visibility = "hidden"
                elem.style.display = "none"
                elem2.style.visibility = "hidden"
                elem2.style.display = "none"
                elem4.style.visibility = "hidden"
                elem4.style.display = "none"

                if (r > 1 && elem3) {
                    elem3.style.visibility = "hidden"
                    elem3.style.display = "none"
                }

            }
        }

    }

}

function ddRQ_onchange() {

    var elem = ""
    var elemB = ""
    var elemH = ""

    var qty = document.getElementById(ddRQid)
    qty = qty.options[qty.selectedIndex].value

    for (i = 1; i <= 4; i++) {
        elem = document.getElementById("Room" + i + "A")
        elemB = document.getElementById("Room" + i + "B")
        elemH = document.getElementById("Room" + i + "H")

        if (i <= qty) {
            elem.style.visibility = "visible"
            elem.style.display = "block"
            elemB.style.visibility = "visible"
            elemB.style.display = "block"
            if (i > 1 && elemH) {
                elemH.style.visibility = "visible"
                elemH.style.display = "block"
            }
            //display any child age boxes (for page load purposes)
            ddCh_onchange(i)

        }
        else {
            elem.style.visibility = "hidden"
            elem.style.display = "none"
            elemB.style.visibility = "hidden"
            elemB.style.display = "none"

            if (i > 1 && elemH) {
                elemH.style.visibility = "hidden"
                elemH.style.display = "none"
            }

            //hide any open age labels
            elemB = document.getElementById("Room" + i + "C")
            elemB.style.visibility = "hidden"
            elemB.style.display = "none"

            //hide and reset any open age boxes
            displayAges(0, i)
            elemH = document.getElementById(ddChArray[i - 1])
            elemH.selectedIndex = 0
        }
    }

    var elem2 = document.getElementById("breaksmiddle2");

    if (elem2) {
        menupos()
    }

}

function ddCh_onchange(roomno) {

    var elem = ""
    var elemCD = ""
    var elemH = document.getElementById("HelpChildAges")

    var qty = document.getElementById(ddChArray[roomno - 1])
    qty = qty.options[qty.selectedIndex].value
    //Child Ages label
    elem = document.getElementById("Room" + roomno + "C")

    if (qty > 0) {
        elem.style.visibility = "visible"
        elem.style.display = "block"
        elemH.style.visibility = "visible"
        elemH.style.display = "block"
    }
    else {
        elem.style.visibility = "hidden"
        elem.style.display = "none"
    }

    //Child ages dropdown    
    displayAges(qty, roomno)

}

function displayAges(childcount, roomno) {

    for (c = 1; c <= 3; c++) {
        elemCD = document.getElementById("Room" + roomno + "CD" + c)

        if (c <= childcount) {
            elemCD.style.visibility = "visible"
            elemCD.style.display = "inline"
        }
        else {
            elemCD.style.visibility = "hidden"
            elemCD.style.display = "none"
        }
    }

}

function copyhidden() {

    for (i = 0; i < pcount; i++) {
        var elem = document.getElementById(hiddenArray[i]);
        var elem2 = document.getElementById('HiddenProperty' + i);

        //don't calculate initial price if added to basket
        //we want it to reflect whatever selection the user made
        if (elem2) {
            if (basketadd != i) {
                elem.value = elem2.value
            }
        }
    }
}


//this goes through hidden textboxes and selects right radio buttons
//otherwise will default back to first option
function selectrightradios() {

    if (basketadd != "x") {

        //loop through properties on this page
        //for(p=0;p<pcount;p++){
        //alert(p_start)
        //alert(p_end)
        //for(p=p_start;p<p_end;p++){

        var hiddenelem = document.getElementById(hiddenArray[0])
        hiddenelem = hiddenelem.value

        if (hiddenelem) {

            var reqsplit = hiddenelem.split("]")
            //alert(rcount)

            //loop through rooms
            for (r = 1; r <= rcount; r++) {
                var req = reqsplit[r - 1]

                var elem = eval("document.forms[0].Property0Room" + r)
                //match selected option and set appropriate radio button to checked
                //but not needed if only one option

                if (elem) {

                    if (elem.length > 1) {

                        for (o = 0; o < elem.length; o++) {

                            if (elem[o].value == req) {
                                //alert("OK")    
                                elem[o].checked = true
                                break
                            }
                        }
                    }
                }
            }
            calcprice(0)
        }
    }
}

var theproperty

//sets no of latest property that the user has tried to add to basket
function getClicked(propertyno) {
    theproperty = propertyno
}

//checks that (HB) properties haven't run out of availability for any of the rooms selected
//when a property is added to basket
function validate() {
    var hiddenelem = document.getElementById(hiddenArray[theproperty])

    if (hiddenelem) {

        var allvals = hiddenelem.value
        var splitvals = allvals.split("]")
        var splitval
        var splitval2
        var avail
        var availused

        for (i = 0; i < splitvals.length - 1; i++) {
            splitval = splitvals[i].split("|")
            avail = splitval[3]
            availused = 1

            for (s = 0; s < splitvals.length - 1; s++) {
                //availused=1

                if (i != s) {
                    splitval2 = splitvals[s].split("|")

                    if (splitval2[0] == splitval[0]) {
                        availused += 1

                        if (availused > avail) {
                            alert("Sorry, there is insufficient availability to meet your room requests for this property. Please amend.")
                            return false
                            break
                        }
                    }
                }
            }
        }
    }
    return true
}

function calcprice(propertyno) {

    if (hiddenArray[propertyno] != "x") {

        var hiddenelem = document.getElementById(hiddenArray[propertyno])
        var total = 0
        var total_f = 0

        if (hiddenelem) {

            if (hiddenelem.value != "") {
                hiddenelem.value = ""

                for (r = 1; r <= rcount; r++) {

                    var elem = eval("document.forms[0].Property" + propertyno + "Room" + r)

                    var fullstring
                    var splitstring

                    if (elem) {


                        if (elem.length > 1) {

                            for (o = 0; o < elem.length; o++) {

                                if (elem[o].checked) {
                                    //update hidden server control with what has been selected for this property
                                    hiddenelem.value += elem[o].value + "]"
                                    //update total price for this property
                                    fullstring = elem[o].value
                                    splitstring = fullstring.split("|")
                                    total += parseInt(splitstring[2])
                                    total_f += parseInt(splitstring[6])
                                }
                            }
                        }
                        else {
                            hiddenelem.value += elem.value + "]"
                            fullstring = elem.value
                            splitstring = fullstring.split("|")
                            total += parseInt(splitstring[2])
                            total_f += parseInt(splitstring[6])
                        }
                    }
                }

                var pricespan = document.getElementById('total' + propertyno)

                if (pricespan) {
                    pricespan.innerHTML = "<FONT color='red'><B>" + total + "</B></FONT>"
                }

                pricespan = document.getElementById('pricewithflights' + propertyno)

                if (pricespan) {
                    //var discount_total=total - Math.floor(((total/100)*2))
                    //pricespan.innerHTML="<FONT color='red'><B>" + discount_total + "</B></FONT>"
                    pricespan.innerHTML = "<FONT color='red'><B>" + total_f + "</B></FONT>"
                }
            }
        }
    }
}

function selectOption(property, room, option) {
    var elem = eval("document.forms[0].Property" + property + "Room" + room)

    if (elem) {
        if (elem.length > 1) {
            elem[option].checked = true
            calcprice(property)
        }
    }
}


function dp_onclick() {
    var elem = document.getElementById(Cid)
    if (elem.value == "dd/mm/yyyy") {
        elem.value = ""
    }
}
