﻿/* XML Functions */

var req = createXMLHttpRequest()

function createXMLHttpRequest() {
    var xmlDoc;    
    if(window.XMLHttpRequest) {    
        try {     
            xmlDoc = new XMLHttpRequest();    
        } catch(e) {     
            xmlDoc = false;    
        }    
     } else if(window.ActiveXObject) {     
        try {       
            var xmlDoc=new ActiveXObject("Microsoft.XMLHTTP");
        } catch(e) {       
            xmlDoc = false;     
        }    
    }   
    return xmlDoc;  
}

function PopulateDDL(aXML, aDDL, aHidden) {
    var myXML;
    var x = 0;
    
    aHidden.value = ""
    aDDL.options.length = 0;
    myXML = aXML[0].getElementsByTagName("item");
    for(var i=0; i < myXML.length; i++) {
        if (myXML[i].getAttribute("text") != "") {
            aDDL.options[x] = new Option(myXML[i].getAttribute("text"), myXML[i].getAttribute("value"));
            if (myXML[i].getAttribute("selected") == "1") {
                aDDL.selectedIndex = x;
                aHidden.value = myXML[i].getAttribute("value");
            }
            x++;
        }
    }
}

function PopulateTravellersDDL(aAdultValue, aChildValue) {
    var maxValue;
    var ddlAdult;
    var ddlChild;
    
    maxValue = 5 - aChildValue;
    ddlAdult = document.getElementById("ddlAdult");
    ddlAdult.options.length = 0;
    
    for(a = 1; a <= maxValue; a++) {
        ddlAdult.options[a - 1] = new Option(a, a);
    }
    
    ddlAdult.value = aAdultValue
    document.getElementById("hiddenAdult").value = aAdultValue
    
    maxValue = 5 - aAdultValue
    ddlChild = document.getElementById("ddlChild");
    ddlChild.options.length = 0;
    
    for(c = 0; c <= maxValue; c++) {
        ddlChild.options[c] = new Option(c, c);
    }
    
    ddlChild.value = aChildValue
    document.getElementById("hiddenChild").value = aChildValue
}

function DecodeXMLText(aText) {
    var myText;
    var lt = new RegExp("&lt;", "g");
    var gt = new RegExp("&gt;", "g");
        
    myText = aText;
    myText=myText.replace(lt,"<");
    myText=myText.replace(gt,">");
    
    return myText;    
}

function init() {
    divSearch.useService("search.asmx?WSDL", "svcSearch");
}

function CallLists_Home(aCultureName) {
    
    req.open('POST', 'Search.asmx/Home');
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');                           
    req.onreadystatechange = PopulateLists_Home;    
    req.send('aDestination=' + document.forms[0].ddlDestination.value +
               '&aMonth=' + document.forms[0].ddlMonth.value + 
               '&aCruiseLine=' + document.forms[0].ddlCruiseLine.value + 
               '&aShip=' + document.forms[0].ddlShip.value + 
               '&aCultureName=' + aCultureName);    
}

function CallLists_Home_New(aCultureName) {
    
    req.open('POST', 'Search.asmx/Home_New');
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');                           
    req.onreadystatechange = PopulateLists_Home_New;    
    req.send('aDestination=' + document.forms[0].ddlDestination.value +
               '&aMonth=' + document.forms[0].ddlMonth.value + 
               '&aCruiseLine=' + document.forms[0].ddlCruiseLine.value + 
               '&aDuration=' + document.forms[0].ddlDuration.value + 
               '&aCultureName=' + aCultureName);    
}

function PopulateLists_Home() {
    var myFilterSearch, myError, myText;
    
    if(req.readyState == 4){    
        myText = DecodeXMLText(req.responseText);
        
        if (window.ActiveXObject) {
            var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async="false";
            xmlDoc.loadXML(myText);
        } else {
            var parser=new DOMParser();
            var xmlDoc=parser.parseFromString(myText,"application/xml");        
        }
                
        myFilterSearch = xmlDoc.getElementsByTagName("home");
        myError = myFilterSearch[0].getElementsByTagName("error");
        
        if (myError[0].getAttribute('errortext') != '') {
            alert(myError[0].getAttribute('errortext'));
        } else {    
            PopulateDDL(myFilterSearch[0].getElementsByTagName("destination"), document.forms[0].ddlDestination, document.forms[0].hiddenDestination);
            PopulateDDL(myFilterSearch[0].getElementsByTagName("month"), document.forms[0].ddlMonth, document.forms[0].hiddenMonthYearFrom);
            PopulateDDL(myFilterSearch[0].getElementsByTagName("cruiseline"), document.forms[0].ddlCruiseLine, document.forms[0].hiddenCruiseline);
            PopulateDDL(myFilterSearch[0].getElementsByTagName("ship"), document.forms[0].ddlShip, document.forms[0].hiddenShip);
        }        
    }        
}

function PopulateLists_Home_New() {
    var myFilterSearch, myError, myText;
    
    if(req.readyState == 4){    
        myText = DecodeXMLText(req.responseText);
        
        if (window.ActiveXObject) {
            var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async="false";
            xmlDoc.loadXML(myText);
        } else {
            var parser=new DOMParser();
            var xmlDoc=parser.parseFromString(myText,"application/xml");        
        }
                
        myFilterSearch = xmlDoc.getElementsByTagName("home");
        myError = myFilterSearch[0].getElementsByTagName("error");
        
        if (myError[0].getAttribute('errortext') != '') {
            alert(myError[0].getAttribute('errortext'));
        } else {    
            PopulateDDL(myFilterSearch[0].getElementsByTagName("destination"), document.forms[0].ddlDestination, document.forms[0].hiddenDestination);
            PopulateDDL(myFilterSearch[0].getElementsByTagName("month"), document.forms[0].ddlMonth, document.forms[0].hiddenMonth);
            PopulateDDL(myFilterSearch[0].getElementsByTagName("cruiseline"), document.forms[0].ddlCruiseLine, document.forms[0].hiddenCruiseline);
            PopulateDDL(myFilterSearch[0].getElementsByTagName("duration"), document.forms[0].ddlDuration, document.forms[0].hiddenDuration);
        }        
    }        
}

function CallLists_ReviewHome(aCultureName) {

    req.open('POST', 'Search.asmx/ReviewHome');
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');                           
    req.onreadystatechange = PopulateLists_ReviewHome;    
    req.send('&aCruiseLine=' + document.forms[0].ddlCruiseline.value + 
               '&aShip=' + document.forms[0].ddlShip.value + 
               '&aCultureName=' + aCultureName);  
               
}

function PopulateLists_ReviewHome() {
    var myFilterSearch, myError, myText;
    if(req.readyState == 4) { 
        myText = DecodeXMLText(req.responseText);
    
        if (window.ActiveXObject) {
            var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async="false";
            xmlDoc.loadXML(myText);
        } else {
            var parser=new DOMParser();
            var xmlDoc=parser.parseFromString(myText,"application/xml");            
        }    
 
        myFilterSearch = xmlDoc.getElementsByTagName("reviewhome");
        myError = myFilterSearch[0].getElementsByTagName("error");
        
        if (myError[0].getAttribute('errortext') != '') {
            alert(myError[0].getAttribute('errortext'));
        } else {    
            
            PopulateDDL(myFilterSearch[0].getElementsByTagName("ship"), document.forms[0].ddlShip, document.forms[0].hiddenShip);
        }
    
    }
}

function CallLists_CruiseSearch(aWebID, aProductScope, aCultureName) {    
    var myPromotion = '';
    var ddlPromotion = document.getElementById('ddlPromotion');
    
    if (ddlPromotion != null) {
        myPromotion = ddlPromotion.value
    }
    
    req.open('POST', 'Search.asmx/CruiseSearch');
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');                           
    req.onreadystatechange = PopulateLists_CruiseSearch;    
    req.send('&aDestination=' + document.getElementById("ddlDestination").value +
               '&aSubDestination=' + document.getElementById("ddlSubDestination").value + 
               '&aDeparturePort=' + document.getElementById("ddlDeparturePort").value + 
               '&aDuration=' + document.getElementById("ddlDuration").value + 
               '&aMonth=' + document.getElementById("ddlMonth").value + 
               '&aMonthTo=' + document.getElementById("ddlMonthTo").value + 
               '&aDay=' + document.getElementById("ddlDay").value +
               '&aDayTo=' + document.getElementById("ddlDayTo").value +
               '&aCruiseLine=' + document.getElementById("ddlCruiseLine").value + 
               '&aShip=' + document.getElementById("ddlShip").value + 
               '&aPromotion=' + myPromotion +
               '&aWebID=' + aWebID +
               '&aProductScope=' + aProductScope +
               '&aCultureName=' + aCultureName);
    
}

function InitLists_CruiseSearch(aWebID, aProductScope, aCultureName, aDestination, aSubDestination, aDeparturePort, aDuration, aMonth, aMonthTo, aDay, aDayTo, aCruiseLine, aShip, aPromotion) {
    var divAddOptions = document.getElementById('divAddOptions');
    
    if (divAddOptions != null) {
        if (aShip != '' || aSubDestination != '' || aDeparturePort != '' || aPromotion != '') {
            divAddOptions.style.display = ''
        }
    }
    
    req.open('POST', 'Search.asmx/CruiseSearch');
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');                           
    req.onreadystatechange = PopulateLists_CruiseSearch;    
    req.send('&aDestination=' + aDestination +
               '&aSubDestination=' + aSubDestination + 
               '&aDeparturePort=' + aDeparturePort + 
               '&aDuration=' + aDuration + 
               '&aMonth=' + aMonth + 
               '&aMonthTo=' + aMonthTo + 
               '&aDay=' + aDay +
               '&aDayTo=' + aDayTo +
               '&aCruiseLine=' + aCruiseLine + 
               '&aShip=' + aShip + 
               '&aPromotion=' + aPromotion +
               '&aWebID=' + aWebID +
               '&aProductScope=' + aProductScope +
               '&aCultureName=' + aCultureName);     
    
}

function InitLists_CruiseSearchTake2() {
    var divAddOptions = document.getElementById('divAddOptions');
    
    if (divAddOptions != null) {
        if (document.getElementById("hiddenShip").value != '' || document.getElementById("hiddenSubDestination").value != '' || document.getElementById("hiddenDeparturePort").value != '' || document.getElementById("hiddenPromotion").value != '') {
            divAddOptions.style.display = ''
        }
    }
    
    req.open('POST', 'Search.asmx/CruiseSearch');
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');                           
    req.onreadystatechange = PopulateCruisesFound_CruiseSearch;    
    req.send('&aDestination=' + document.getElementById("ucQSManager_hidDestination").value +
               '&aSubDestination=' + document.getElementById("ucQSManager_hidSubDestination").value + 
               '&aDeparturePort=' + document.getElementById("ucQSManager_hidDeparturePort").value + 
               '&aDuration=' + document.getElementById("hiddenDuration").value + 
               '&aMonth=' + document.getElementById("hiddenMonth").value + 
               '&aMonthTo=' + document.getElementById("hiddenMonthTo").value + 
               '&aDay=' + document.getElementById("hiddenDay").value +
               '&aDayTo=' + document.getElementById("hiddenDayTo").value +
               '&aCruiseLine=' + document.getElementById("ucQSManager_hidCruiseLine").value + 
               '&aShip=' + document.getElementById("ucQSManager_hidShip").value + 
               '&aPromotion=' + document.getElementById("hiddenPromotion").value +
               '&aWebID=' + document.getElementById("hiddenWebID").value +
               '&aProductScope=' + document.getElementById("hiddenProductScope").value +
               '&aCultureName=' + document.getElementById("hiddenCultureName").value);    
}

function PopulateCruisesFound_CruiseSearch() {
    var myFilterSearch, myError, myText, spnResult;
    var myIsDurationRange, myPseudoDuration;
    
    if(req.readyState == 4) { 
        myText = DecodeXMLText(req.responseText);         
        
        if (window.ActiveXObject) {
            var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async="false";
            xmlDoc.loadXML(myText);
        } else {
            var parser=new DOMParser();
            var xmlDoc=parser.parseFromString(myText,"application/xml");            
        }
        
        myFilterSearch = xmlDoc.getElementsByTagName("cruisesearch");
        myError = myFilterSearch[0].getElementsByTagName("error");
        
        if (myError[0].getAttribute('errortext') != '') {
            alert(myError[0].getAttribute('errortext'));
        } else {            
                    
            spnResult = document.getElementById("spnSearchResults")

            if (spnResult != null) {
                spnResult.innerHTML = myFilterSearch[0].getElementsByTagName("count")[0].getAttribute("number");
                
                if (spnResult.innerHTML == '1') {
                    document.getElementById("spnResultsReturned").innerHTML = 'Cruise Found';
                } else {
                    document.getElementById("spnResultsReturned").innerHTML = 'Cruises Found';


                }
            }
        }
    }
}

function PopulateLists_CruiseSearch() {
    var myFilterSearch, myError, myText, spnResult;
    var myIsDurationRange, myPseudoDuration;
    
    if(req.readyState == 4) { 
        myText = DecodeXMLText(req.responseText);         
        
        if (window.ActiveXObject) {
            var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async="false";
            xmlDoc.loadXML(myText);
        } else {
            var parser=new DOMParser();
            var xmlDoc=parser.parseFromString(myText,"application/xml");            
        }
        
        myFilterSearch = xmlDoc.getElementsByTagName("cruisesearch");
        myError = myFilterSearch[0].getElementsByTagName("error");
        
        if (myError[0].getAttribute('errortext') != '') {
            alert(myError[0].getAttribute('errortext'));
        } else {            
            // 1. Where would you like to go and for how long?
            PopulateDDL(myFilterSearch[0].getElementsByTagName("destination"), document.getElementById("ddlDestination"), document.getElementById("hiddenDestination"));
            PopulateDDL(myFilterSearch[0].getElementsByTagName("subdestination"), document.getElementById("ddlSubDestination"), document.getElementById("hiddenSubDestination"));
            PopulateDDL(myFilterSearch[0].getElementsByTagName("departureport"), document.getElementById("ddlDeparturePort"), document.getElementById("hiddenDeparturePort"));
            PopulateDDL(myFilterSearch[0].getElementsByTagName("duration"), document.getElementById("ddlDuration"), document.getElementById("hiddenDuration"));
            
            myIsDurationRange = document.getElementById("ucQSManager_hidIsDurationRange").value;
            myPseudoDuration = document.getElementById("ucQSManager_hidDuration").value;
            //alert(myIsDurationRange);
            //alert(myPseudoDuration);
            if (myIsDurationRange>0){
                document.getElementById("hiddenDuration").value = 0;
                document.getElementById("ddlDuration").selectedIndex = 0;
                //if (myPseudoDuration>14) {
                //    document.getElementById("hiddenDuration").value = 5;
                //    document.getElementById("ddlDuration").selectedIndex = 5;
                //}else{
                //    if (myPseudoDuration>9) {
                //        document.getElementById("hiddenDuration").value = 4;
                //        document.getElementById("ddlDuration").selectedIndex = 4;
                //    }else{
                //        if (myPseudoDuration>5) {
                //            document.getElementById("hiddenDuration").value = 3;
                //            document.getElementById("ddlDuration").selectedIndex = 3;
                //        }else{
                //            if (myPseudoDuration>2) {
                //                document.getElementById("hiddenDuration").value = 2;
                //                document.getElementById("ddlDuration").selectedIndex = 2;
                //            }else{
                //               if (myPseudoDuration>0) {
                //                    document.getElementById("hiddenDuration").value = 1;
                //                    document.getElementById("ddlDuration").selectedIndex = 1;
                //                }
                //            }
                //        }
                //    }
                //}
                InitLists_CruiseSearchTake2();
            }   
                     
            // 2. When would you like to go?
            PopulateDDL(myFilterSearch[0].getElementsByTagName("month"), document.getElementById("ddlMonth"), document.getElementById("hiddenMonth"));
            PopulateDDL(myFilterSearch[0].getElementsByTagName("monthto"), document.getElementById("ddlMonthTo"), document.getElementById("hiddenMonthTo"));
            PopulateDDL(myFilterSearch[0].getElementsByTagName("day"), document.getElementById("ddlDay"), document.getElementById("hiddenDay"));
            PopulateDDL(myFilterSearch[0].getElementsByTagName("dayto"), document.getElementById("ddlDayTo"), document.getElementById("hiddenDayTo"));        
            
            // 3. Do you prefer a specific cruise line?
            PopulateDDL(myFilterSearch[0].getElementsByTagName("cruiseline"), document.getElementById("ddlCruiseLine"), document.getElementById("hiddenCruiseline"));
            PopulateDDL(myFilterSearch[0].getElementsByTagName("ship"), document.getElementById("ddlShip"), document.getElementById("hiddenShip"));
            
            // Populate promotions drop down
            if (document.getElementById("ddlPromotion") != null) {
                PopulateDDL(myFilterSearch[0].getElementsByTagName("promotion"), document.getElementById("ddlPromotion"), document.getElementById("hiddenPromotion"));
            }
            
            spnResult = document.getElementById("spnSearchResults")

            
            if (spnResult != null) {
                spnResult.innerHTML = myFilterSearch[0].getElementsByTagName("count")[0].getAttribute("number");
                
                if (spnResult.innerHTML == '1') {
                    document.getElementById("spnResultsReturned").innerHTML = 'Cruise Found';
                } else {
                    document.getElementById("spnResultsReturned").innerHTML = 'Cruises Found';


                }
            }
            
            //if (document.getElementById("ddlAdult") != null && document.getElementById("ddlChild") != null) {
            //    PopulateTravellersDDL(document.getElementById("hiddenAdult").value, document.getElementById("hiddenChild").value)
            //}
        }
    }
}