﻿// 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
        }
    }

}

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 
 
        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])              
                                }            
                            }
                    }
                    else{
                    hiddenelem.value+=elem.value + "]"
                    fullstring=elem.value
                    splitstring=fullstring.split("|")
                    total+=parseInt(splitstring[2])       
                    }
                }
            }
 
        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>"
            }     
        }       
    }
 }
 }

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=""
    }
}