﻿
ThailandHotel = {
    rooms: ['room1', 'room2', 'room3', 'room4', 'room5', 'room6', 'room7', 'room8'],
    adults: ['drpAdult1', 'drpAdult2', 'drpAdult3', 'drpAdult4', 'drpAdult5', 'drpAdult6', 'drpAdult7', 'drpAdult8'],
    childs: ['drpChild1', 'drpChild2', 'drpChild3', 'drpChild4', 'drpChild5', 'drpChild6', 'drpChild7', 'drpChild8'],
    room: 'drpRoom',
    noadults: 1,
    nochilds: 1,
    noRoom: 1,
    hdnRoomId: '',
    hdnAdultId: '',
    hdnChildId: '',
    hdnChildAgeId: '',
    onLoad: '',
    isCallback: false,
    $: function () {
        var elements = new Array();
        for (var i = 0; i < arguments.length; i++) {
            var element = arguments[i];
            if (typeof element == 'string')
                element = document.getElementById(element);
            if (arguments.length == 1)
                return element;
            elements.push(element);
        }
        return elements;
    },
    init: function () {
        ThailandHotel.room = ThailandHotel.$(ThailandHotel.room);
        if (ThailandHotel.onLoad) {
            ThailandHotel.onLoad();
        }
        ThailandHotel.noRoom = ThailandHotel.room.options[ThailandHotel.room.selectedIndex].value;
        
        ThailandHotel.assignDefaultValue();
        ThailandHotel.createRoomsAdult();
        
        ThailandHotel.room.onchange = ThailandHotel.onChange;
        var id1,id2,id3;
        for (var a = 0; a < 8; a++) {
            var ob = ThailandHotel.$(ThailandHotel.adults[a]);
            ob.onchange = function () { ThailandHotel.assignValue(2); }
            ob = ThailandHotel.$(ThailandHotel.childs[a]);
            ob.onchange = function () { ThailandHotel.assignValue(3); ThailandHotel.showchildAge(); }
            id1 = 'drproom' + (a+1) + 'child1';
            id2 = 'drproom' + (a+1) + 'child2';
            id3 = 'drproom' + (a+1) + 'child3';
            ThailandHotel.$(id1).onchange = function(){ThailandHotel.assignChildAge();}
            ThailandHotel.$(id2).onchange = function(){ThailandHotel.assignChildAge();}
            ThailandHotel.$(id3).onchange = function(){ThailandHotel.assignChildAge();}
        }
    },
    showchildAge:function(){
        var show=false;
        var _oc;
        var mxlen=0;
        for(var i=0; i<this.childs.length; i++){
            _oc = this.$(this.childs[i]); 
            _oc = _oc.options[_oc.selectedIndex].value;
            if(_oc != 0){
                if(mxlen<_oc)
                    mxlen = _oc;
                this.$('childromm' + (i+1)).style.display = 'block';
                this.$('drproom' + (i+1) + 'child1').style.display = 'block';
                this.$('drproom' + (i+1) + 'child2').style.display = _oc > 1 ? 'block': 'none';
                this.$('drproom' + (i+1) + 'child3').style.display =_oc > 2 ? 'block' : 'none';
                show = true;
            }else{
                this.$('childromm' + (i+1)).style.display = 'none';
            }
        }
        this.$('roomchildtitle2').style.display = mxlen>1?'block':'none';
        this.$('roomchildtitle3').style.display = mxlen>2?'block':'none';
        this.$('divroomchild').style.display = show?'block':'none';
    },
    assignDefaultValue: function () {
        var adlt = this.$(this.hdnAdultId).value;
        var chld = this.$(this.hdnChildId).value;
        for (var i = 0; i < this.noRoom; i++) {
            var ob = this.$(this.adults[i]);
            ob.selectedIndex = parseInt(adlt.charAt(i)) - 1;

            var ob = this.$(this.childs[i]);
            ob.selectedIndex = parseInt(chld.charAt(i));
        }
        ThailandHotel.setChildAgeValue();
    },
    setChildAgeValue:function(){
        var id1,id2,id3;
        var v1,v2,v3,value;
        
        var chldage = this.$(this.hdnChildAgeId).value; 
        if(chldage==''||chldage.length==0)
            return;
        chldage = chldage.split('$');
        for (var i = 0; i < this.noRoom; i++) {
            
                id1 = 'drproom' + (i+1) + 'child1';
                id2 = 'drproom' + (i+1) + 'child2';
                id3 = 'drproom' + (i+1) + 'child3';
                
                value = chldage[i].split('#');
                v1 = parseInt(value[0]) == isNaN ? 0 : (parseInt(value[0]) + 1);
                v2 = parseInt(value[1]) == isNaN ? 0 : (parseInt(value[1]) + 1);
                v3 = parseInt(value[2]) == isNaN ? 0 : (parseInt(value[2]) + 1);
                
                this.$(id1).selectedIndex = v1; 
                this.$(id2).selectedIndex = v2;
                this.$(id3).selectedIndex = v3;
            
        }
    },
    createRoomsAdult: function () {
        for (var i = 0; i < 8; i++) {
            if (i < this.noRoom) {
                this.$(this.rooms[i]).style.display = 'block';
            }
            else {
                this.$(this.rooms[i]).style.display = 'none';
                this.$(this.childs[i]).selectedIndex = 0;
            }
        }
        ThailandHotel.assignValue(1);
        ThailandHotel.showchildAge();
    },
    assignValue: function (i) {
        this.$(this.hdnRoomId).value = this.noRoom;

        this.$(this.hdnAdultId).value = '';
        for (var a = 0; a < this.noRoom; a++) {
            var adlt = this.$(this.adults[a]);
            this.$(this.hdnAdultId).value += adlt.options[adlt.selectedIndex].value;
        }
        this.$(this.hdnChildId).value = '';
        for (var a = 0; a < this.noRoom; a++) {
            var chld = this.$(this.childs[a]);
            this.$(this.hdnChildId).value += chld.options[chld.selectedIndex].value;
        }
        this.assignChildAge();
    },
    assignChildAge:function(){
        var strAge='';
        var id1,id2,id3;
        var chdAge = ''
        for (var a = 1; a <= this.noRoom; a++) {
            chdAge = this.$(this.childs[a-1]).selectedIndex;
            id1 = 'drproom' + a + 'child1';
            id2 = 'drproom' + a + 'child2';
            id3 = 'drproom' + a + 'child3';
            strAge += chdAge>0?this.$(id1).selectedIndex - 1:-1;
            strAge +='#';
            strAge += chdAge>1?this.$(id2).selectedIndex - 1:-1;
            strAge +='#';
            strAge += chdAge>1?this.$(id3).selectedIndex - 1:-1;
            strAge +='$';
        }
        strAge = strAge.substring(0,strAge.length-1);
        this.$(this.hdnChildAgeId).value = strAge;
    },
    onChange: function () {
        ThailandHotel.noRoom = ThailandHotel.room.options[ThailandHotel.room.selectedIndex].value;
        ThailandHotel.showTitle();
        ThailandHotel.createRoomsAdult();
    },
    showTitle: function () {
        if (ThailandHotel.noRoom > 1) {
            ThailandHotel.$('roomtitle').innerHTML = 'Room 1';
        }
        else {
            ThailandHotel.$('roomtitle').innerHTML = '';
        }
    },
    addLoadEvent: function (func) {
        var oldonload = window.onload;
        if (typeof window.onload != 'function') {
            window.onload = func;
        }
        else {
            window.onload = function () {
                oldonload();
                func();
            }
        }
    }
}
ThailandHotel.addLoadEvent(ThailandHotel.init);
