var roomsSelected = [];


function InitHotelRooms(i_HId, i_RCount, i_BPFactor)
{
    isHotelIdle = true;
    
    if (roomsSelected.length > 0)
    {
        hotel_loop:
        
        for (var i=0; i<roomsSelected.length; i++) 
        {
            if (roomsSelected[i][0] == i_HId)
            {
                isHotelIdle = false;
                break hotel_loop;
            }
        }
    }

    
    if (isHotelIdle)
    {
        // init hotel...
        roomsSelected[roomsSelected.length] = [i_HId, i_BPFactor, []];        
    }
}


function SetRoomData(i_HId, i_RId, i_RPrice, i_Gid, i_RDPrices)
{
    hotel_loop:
    
    for (var i=0; i<roomsSelected.length; i++) 
    {
        if (roomsSelected[i][0] == i_HId)
        {
            var isRoomIdle = true;
            
            if (roomsSelected[i][2].length > 0)
            {
                room_loop:
                
                for (var j=0; j<roomsSelected[i][2].length; j++) 
                {
                    if (roomsSelected[i][2][j][0] == i_RId)
                    {
                        isRoomIdle = false;
                        break room_loop;
                    }
                }
            }
            
            if (isRoomIdle)
            {
                roomsSelected[i][2][roomsSelected[i][2].length] = [i_RId, 0, i_RPrice, i_Gid, i_RDPrices];
            }
            
            break hotel_loop;
        }
    }
}


function UpdateRoomSelection(i_HId, i_GId)
{
    var selectObj = document.getElementById('_room_selection_'+i_HId+'_'+i_GId);
    var roomIndex = selectObj.options[selectObj.selectedIndex].value;    
    SetRoomSelection(i_HId, roomIndex, i_GId, true);
}


function SetRoomSelection(i_HId, i_RId, i_GId, i_UpdateUI)
{
    // unselect previously selected
    hotel_loop:
    
    for (var i=0; i<roomsSelected.length; i++) 
    {
        if (roomsSelected[i][0] == i_HId)
        {
            room_loop:
            
            for (var j=0; j<roomsSelected[i][2].length; j++) 
            {
                if ((roomsSelected[i][2][j][3] == i_GId) && (roomsSelected[i][2][j][1] == true))
                {
                    roomsSelected[i][2][j][1] = 0;
                }
            }
        }
    }
    
    
    
    // select new one
    hotel_loop:
    
    for (var i=0; i<roomsSelected.length; i++) 
    {
        if (roomsSelected[i][0] == i_HId)
        {
            room_loop:
            
            for (var j=0; j<roomsSelected[i][2].length; j++) 
            {
                if (roomsSelected[i][2][j][0] == i_RId)
                {
                    if (roomsSelected[i][2][j][1] == 1)
                    {
                        // deactivate
                        roomsSelected[i][2][j][1] = 0;
                    }
                    else if (roomsSelected[i][2][j][1] == 0)
                    {
                        // activate
                        roomsSelected[i][2][j][1] = 1;
                    }
                    
                    if (i_UpdateUI)
                    {
                        _UpdateRoomPriceAndCalendar(i_HId, i_RId, i_GId);
                        _UpdateHotelPrice(i_HId);   
                    }
                        
                    break hotel_loop;
                }
            }
        }
    }
}



function _UpdateHotelPrice(i_HId)
{
    var grandTotal   = 0;
    var bpFactor    = 0;
    
    hotel_loop:
    
    for (var i=0; i<roomsSelected.length; i++) 
    {
        if (roomsSelected[i][0] == i_HId)
        {
            bpFactor = roomsSelected[i][1];
            
            room_loop:
            
            for (var j=0; j<roomsSelected[i][2].length; j++) 
            {
                if (roomsSelected[i][2][j][1] == 1)
                {
                    grandTotal += roomsSelected[i][2][j][2];
                }
            }
            
            break hotel_loop;
        }
    }
    
    var bonusPoints = (grandTotal * bpFactor) / 100;
    bonusPoints = Math.round(bonusPoints*Math.pow(10,2))/Math.pow(10,2);

    var divObj = document.getElementById(i_HId + '_bonus_points_value');
    if (divObj)
        divObj.innerHTML = bonusPoints;
        
    var divObj = document.getElementById(i_HId + '_grand_total_value');
    if (divObj)
        divObj.innerHTML = grandTotal;
}



function _UpdateRoomPriceAndCalendar(i_HId, i_RId, i_GId)
{
    // update total 
    hotel_loop:
    
    for (var i=0; i<roomsSelected.length; i++) 
    {
        if (roomsSelected[i][0] == i_HId)
        {
            room_loop:
            
            for (var j=0; j<roomsSelected[i][2].length; j++) 
            {
                if (roomsSelected[i][2][j][0] == i_RId)
                {
                    if (roomsSelected[i][2][j][1] == 1)
                    {
                        var divObj = document.getElementById('room_total_value_'+i_HId+'_'+i_GId);
                        if (divObj)
                            divObj.innerHTML = roomsSelected[i][2][j][2];

                        var roomDayPrices = roomsSelected[i][2][j][4];

                        break hotel_loop;
                    }
                }
            }            
        }
    }
    
    
    // update room prices
    for (var i=0; i<roomDayPrices.length; i++)
    {
        var divObj = document.getElementById('room_day_price_'+i_HId+'_'+i_GId+'_'+i);
        if (divObj)
        {
            if (roomDayPrices[i] > 0)
            {
                divObj.innerHTML = roomDayPrices[i] + ' ' + viewCurrency;
            }
            else
            {
                divObj.innerHTML = '<span class="highlighted"><strong>FREE!</strong></span>';
            }
        }
    }

}


function SubmitBookingForm(i_Url, i_HId)
{
    var isValidated = false;

    hotel_loop:
    
    for (var i=0; i<roomsSelected.length; i++) 
    {
        if (roomsSelected[i][0] == i_HId)
        {
            room_loop:
            
            for (var j=0; j<roomsSelected[i][2].length; j++) 
            {
                if (roomsSelected[i][2][j][1] == 1)
                {
                    isValidated = true;
                    break hotel_loop;
                }
            }
        }
    }
    
    
    if (isValidated == true)
    {
        var hotelFormName = '_hotelform_' + i_HId;
        document.forms[hotelFormName].action = i_Url;
        document.forms[hotelFormName].method = 'POST';        
        document.forms[hotelFormName].submit();
        return false;
    }
    else
    {
        alert('Please select at least one room to proceed with booking for this hotel...');
        return false;
    }
}
