﻿
var d = new Date();
var oldTextHolder = null;
var oldMainHotelHolder = null;

function initAjaxObject() {
    if (window.XMLHttpRequest) {
        // W3C METHOD
        return new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        // IE METHOD
        return new ActiveXObject('Microsoft.XMLHTTP');
    } else {
        return;
    }
}

function hotelInformation(propertyNodeId) {

    ajaxObject = initAjaxObject();
    ajaxObject.onreadystatechange = processAjaxReadyState_hotelInfo;
    ajaxObject.open('GET', '/ski/utility/hotelinfo.aspx?globalProperty=' + propertyNodeId + '&date=' + d, true);
    ajaxObject.send('');

}

function processAjaxReadyState_hotelInfo() {

    if (ajaxObject.readyState == 4) {
        if (ajaxObject.status == '200') {
            if (this.responseXML.getElementsByTagName('Request')) {

                var root = this.responseXML.getElementsByTagName('HotelInfo');
                var currenthotelinfo = document.getElementById('currenthotelinfo');
                var hotelimageholder = document.getElementById('hotelimageholder');
                var closeDiv = document.getElementById('close');
                
                if (closeDiv != null) {
                    if (closeDiv.childNodes.length > 0 ) {
                        closeDiv.removeChild(closeDiv.firstChild);
                    }
                }
                
                var textHolder = document.createElement('div');
                var hotel = document.createElement('h5');
                var numberOfRooms = document.createElement('p');
                var price = document.createElement('span');
                var generalText = document.createElement('p');
                var roomText = document.createElement('p');
                var activitiesText = document.createElement('p');
                var diningText = document.createElement('p');
                var linkElement = document.createElement('a');
                var smallImages = document.createElement('img');
                var closeLink = document.createElement('a');
                var closeImg = document.createElement('img');
                
                textHolder.className = 'hoteltextholder';
                numberOfRooms.className = 'rooms';
                generalText.className = 'hotelinfo';
                roomText.className = 'hotelinfo';
                activitiesText.className = 'hotelinfo';
                diningText.className = 'hotelinfo';

                generalText.id = 'general';
                roomText.id = 'rooms';
                activitiesText.id = 'activities';
                diningText.id = 'dining';

                if (root.length > 0) {

                    hotel.innerHTML = Encoder.htmlEncode(root[1].childNodes[0].childNodes[0].nodeValue);
                                
                    if (root[1].childNodes[8].childNodes[0].nodeValue != null) {
                        numberOfRooms.innerHTML = '<strong> fr' + ' ' + '£' + Encoder.htmlEncode(root[1].childNodes[8].childNodes[0].nodeValue) + 'pp' + '</strong>';
                    } else {
                        numberOfRooms.innerHTML = Encoder.htmlDecode(root[1].childNodes[2].childNodes[0].nodeValue);
                    }

                    if (root[1].childNodes[3].childNodes.length > 0) {
                        generalText.innerHTML = Encoder.htmlDecode(root[1].childNodes[3].childNodes[0].nodeValue);
                    } else {
                        generalText.innerHTML = 'Please call 020 7962 9933 to find out more.';
                    }
                    
                    if (root[1].childNodes[4].childNodes.length > 0) {
                        roomText.innerHTML = Encoder.htmlDecode(root[1].childNodes[4].childNodes[0].nodeValue);
                    } else {
                        roomText.innerHTML = 'Please call 020 7962 9933 to find out more.';
                    }
                    
                    if (root[1].childNodes[5].childNodes.length > 0) {
                        activitiesText.innerHTML = Encoder.htmlDecode(root[1].childNodes[5].childNodes[0].nodeValue);
                    } else {
                        activitiesText.innerHTML = 'Please call 020 7962 9933 to find out more.';
                    }

                    if (root[1].childNodes[6].childNodes.length > 0) {
                        diningText.innerHTML = Encoder.htmlDecode(root[1].childNodes[6].childNodes[0].nodeValue);
                    } else {
                        diningText.innerHTML = 'Please call 020 7962 9933 to find out more.';
                    }

                    if (root[1].childNodes[7].childNodes.length > 0) {
                        preLoadHotelImages(new Array(root[1].childNodes[7].childNodes[0].nodeValue + '1', root[1].childNodes[7].childNodes[0].nodeValue + '2', root[1].childNodes[7].childNodes[0].nodeValue + '3', root[1].childNodes[7].childNodes[0].nodeValue + '4'));
                        document.getElementById('hotelimage').src = '/ski/images/hotelimages/big/' + root[1].childNodes[7].childNodes[0].nodeValue + '1' + '.jpg';
                        document.getElementById('hotelimage').alt = root[1].childNodes[0].childNodes[0].nodeValue;
                        for (var i = 1; i <= 4; i++) {
                            smallImages = document.getElementById('hotelsmallimage' + i);
                            smallImages.src = '/ski/images/hotelimages/thumbnail/' + root[1].childNodes[7].childNodes[0].nodeValue + i + '.jpg';
                        }
                        smallImages.alt = root[1].childNodes[0].childNodes[0].nodeValue;
                    } else {
                        preLoadHotelImages(new Array(' ', ' ', ' ', ' '))
                        document.getElementById('hotelimage').src = '';
                        for (var i = 1; i <= 4; i++) {
                        
                            smallImages = document.getElementById('hotelsmallimage' + i);

                            smallImages.src = ' ';

                            smallImages.alt = root[1].childNodes[0].childNodes[0].nodeValue;
                        }
                        
                    }

                    closeLink.href = root[1].childNodes[10].childNodes[0].nodeValue; 
                    closeLink.innerHTML = 'Back to all hotels';
                    
                    closeDiv.appendChild(closeLink);

                    textHolder.appendChild(hotel);
                    textHolder.appendChild(numberOfRooms);
                    textHolder.appendChild(generalText);
                    textHolder.appendChild(roomText);
                    textHolder.appendChild(activitiesText);
                    textHolder.appendChild(diningText);
                    textHolder.appendChild(closeDiv);
                   

                    if (oldTextHolder != null) {
                        currenthotelinfo.appendChild(textHolder);
                        currenthotelinfo.replaceChild(textHolder, oldTextHolder);
                    }else {
                        currenthotelinfo.appendChild(textHolder);
                        currenthotelinfo.appendChild(hotelimageholder);
                    }

                    currenthotelinfo.style.display = 'block';

                    document.getElementById('hotellistholder').style.display = 'none';

                    if (document.getElementById('specifichotels')) {
                        document.getElementById('specifichotels').style.display = 'none';
                    }

                    oldTextHolder = textHolder;
                    return false;
                }
                
            }
        }
    }

}


function skiHotels(skiResortId, starRating, moreHotels) {
    
    ajaxObject = initAjaxObject();
    ajaxObject.onreadystatechange = processAjaxReadyState_skiHotels;
    
    if (moreHotels != undefined && moreHotels == 1) {
        ajaxObject.open('GET', '/ski/utility/hotelinfo.aspx?resortid=' + skiResortId + '&starrating=' + starRating + '&morehotels=' + moreHotels + '&date=' + d, true);
        ajaxObject.send('');
    } else {
        ajaxObject.open('GET', '/ski/utility/hotelinfo.aspx?resortid=' + skiResortId + '&starrating=' + starRating + '&date=' + d, true);
        ajaxObject.send('');
    }
}

function processAjaxReadyState_skiHotels() {

    if (ajaxObject.readyState == 4) {
        if (ajaxObject.status == '200') {
            if (this.responseXML.getElementsByTagName('Request')) {

                var root = this.responseXML.getElementsByTagName('HotelInfo');
                var mainHotelHolder = document.getElementById('hotelholder');
                var mainDiv = document.createElement('div');
                mainDiv.className = 'hotellistholder';
                mainDiv.id = 'specifichotels';                
                var hotelHolder;
                var hotelName;
                var linkElement;
                var linkElement2;
                var linkHolder = document.createElement('div');
                linkHolder.className = 'linkholder';
                var price;
                var hotelImage;
                var resortName;
                var priceInfo = document.createElement('p');
                priceInfo.className = 'smallinfo';

                if (root.length > 0) {

                    document.getElementById('currenthotelinfo').style.display = 'none';
                    document.getElementById('hotellistholder').style.display = 'none';
                    resortName = document.createElement('h3');

                    if (root[0].childNodes.length > 0) {
                        if (root[0].childNodes[0].childNodes[5].childNodes[0].nodeValue == '0') {
                            resortName.innerHTML = 'Other properties ' + Encoder.htmlDecode(root[0].childNodes[0].childNodes[3].childNodes[0].nodeValue);
                        } else {
                            resortName.innerHTML = Encoder.htmlDecode(root[0].childNodes[0].childNodes[5].childNodes[0].nodeValue) + ' Star ' + Encoder.htmlDecode(root[0].childNodes[0].childNodes[3].childNodes[0].nodeValue);
                        }
                    } else {
                        resortName.innerHTML = 'Unfortunatly there are no properties available.';
                    }
                    
                    mainDiv.appendChild(resortName);
                    
                    for (i = 1; i < root.length; i++) {
                        if (i == 11) {

                            if (root.length > 10) {
                                linkElement = document.createElement('a');
                                linkElement.href = 'javascript:skiHotels(' + root[0].childNodes[0].childNodes[6].childNodes[0].nodeValue + ', ' + root[0].childNodes[0].childNodes[5].childNodes[0].nodeValue + ',' + 1 + ')';
                                linkElement.innerHTML = 'more ' + root[0].childNodes[0].childNodes[5].childNodes[0].nodeValue + ' star hotels';
                                linkElement.className = 'morehotels';
                                linkElement2 = document.createElement('a');
                                linkElement2.href = 'javascript:toggleTabs2(' + '"hotellistholder"' + ',' + '"specifichotels"' + ')';
                                linkElement2.innerHTML = 'Hotels in ' + Encoder.htmlDecode(root[0].childNodes[0].childNodes[3].childNodes[0].nodeValue);

                                linkHolder.appendChild(linkElement);
                                linkHolder.appendChild(linkElement2);

                                mainDiv.appendChild(linkHolder);
                                break;
                            } else {
                                linkElement2 = document.createElement('a');
                                linkElement2.href = 'javascript:toggleTabs2(' + '"hotellistholder"' + ',' + '"specifichotels"' + ')';
                                linkElement2.innerHTML = 'Hotels in ' + Encoder.htmlDecode(root[0].childNodes[0].childNodes[3].childNodes[0].nodeValue);

                                linkHolder.appendChild(linkElement);
                                linkHolder.appendChild(linkElement2);

                                mainDiv.appendChild(linkHolder);
                                break;
                            } 
                        
                            
                        } else {

                            hotelHolder = document.createElement('hotellist');
                            hotelHolder.className = 'hotellist';
                            linkElement = document.createElement('a');
                            hotelName = document.createElement('p');
                            price = document.createElement('span');
                            hotelImage = document.createElement('img');

                            hotelName.innerHTML = Encoder.htmlDecode(root[i].childNodes[0].childNodes[0].nodeValue);
                            price.innerHTML = 'fr &pound;' + Encoder.htmlDecode(root[i].childNodes[1].childNodes[0].nodeValue) + 'pp';
                            
                            priceInfo.innerHTML = 'Prices per person based on 7 nights accommodation excluding travel for departure on the 12 Dec 2011';
                            linkElement.href = 'javascript:hotelInformation(' + Encoder.htmlDecode(root[i].childNodes[4].childNodes[0].nodeValue) + ')';

                            if (root[i].childNodes[2].childNodes.length > 0) {

                                hotelImage.src = '/ski/images/hotelimages/main/' + Encoder.htmlDecode(root[i].childNodes[2].childNodes[0].nodeValue) + '.jpg';

                            }

                            hotelImage.alt = Encoder.htmlDecode(root[i].childNodes[0].childNodes[0].nodeValue);
                            hotelImage.width = 148;
                            hotelImage.height = 109;

                            linkElement.appendChild(hotelImage);

                            hotelHolder.appendChild(linkElement);
                            hotelHolder.appendChild(hotelName);
                            hotelHolder.appendChild(price);

                            mainDiv.appendChild(hotelHolder);
                            mainHotelHolder.appendChild(mainDiv);

                            mainDiv.style.display = 'block';

                            if (i == root.length - 1) {

                                linkElement2 = document.createElement('a');
                                linkElement2.href = 'javascript:toggleTabs2(' + '"hotellistholder"' + ',' + '"specifichotels"' + ')';
                                linkElement2.innerHTML = 'Hotels in ' + Encoder.htmlDecode(root[0].childNodes[0].childNodes[3].childNodes[0].nodeValue);

                                linkHolder.appendChild(linkElement2);

                                mainDiv.appendChild(linkHolder);
                                break;
                            }
                            
                        }
                    }

                    if (oldMainHotelHolder != null) {
                        mainDiv.style.display = 'block';
                        mainHotelHolder.replaceChild(mainDiv, oldMainHotelHolder);
                    }

                    mainDiv.appendChild(priceInfo);
                    mainDiv.style.display = 'block';
                    mainHotelHolder.appendChild(mainDiv);
                    oldMainHotelHolder = mainDiv;
                }         
            }
        }
    }  
}


var preLoadedHotelImageNames = new Array(4);
var preLoadedHotelImages = new Array(4);

function preLoadHotelImages(imageNames) {
    preLoadedHotelImageNames = imageNames

    preLoadedHotelImages = new Array(preLoadedHotelImageNames.length);

    loadImages();
}


function loadImages() {

    for (var i = 0; i < preLoadedHotelImageNames.length; i++) {
        preLoadedHotelImages[i] = new Image();
        preLoadedHotelImages[i] = '/ski/images/hotelimages/big/' + preLoadedHotelImageNames[i] + '.jpg';
    }
    
    if (document.getElementById('hotelimage') != undefined) {
        document.getElementById('hotelimage').src = preLoadedHotelImages[0];
    }

}

function swapImages(imgIndex) {
    document.getElementById('hotelimage').src = preLoadedHotelImages[imgIndex];
}         
