function showRooms(i_noOfRooms)
{
	var i;
	
	for (i = 1; i <= 10; i++)
    {
  		_divObj = document.getElementById('search-room_' + i);    
  		
    	if (i <= i_noOfRooms 
    	    && _divObj.innerHTML == '')
        {   _divObj.innerHTML = GetSearchRoomDiv(i);
    		_divObj.style.display = 'block';
    	}
    	else if (i > i_noOfRooms 
    	         && _divObj.innerHTML != '')
    	{
	   		_divObj.innerHTML = '';
    		_divObj.style.display = 'none';
    	}
    	
    	updateChildAge(i);
    }
}

/**
 * Set rooms values
 *
 * @param JSon/null i_RoomsCachedData
 */
function restoreFromCache(i_RoomsCachedData)
{   
    if (!i_RoomsCachedData)
    {
        return;
    }

    for (var i = 1; i <= 10; i++)
    {
        if (!i_RoomsCachedData[i])
        {
            continue;
        }
        
        $('form-adult_rooms_' + i).value = i_RoomsCachedData[i].adult; 
        $('form-child_rooms_' + i).value = i_RoomsCachedData[i].child;
        
        updateChildAge(i);
        
        for(var j = 1; j <= i_RoomsCachedData[i].child; j++)
        {
            $('form-child_age_' + i + '_' + j).value = i_RoomsCachedData[i].childAge[j];
        }
    }
}

/**
 * Retrun numerical sufix if DOM element id
 * 
 * @param i_Object DOM element
 * @return string
 */
function getIdSufix(i_Object)
{
    return i_Object.id.split('_').pop();
}

function updateChildAge(i_roomNo)
{
    /**
     * main div
     */
     
    _divObj = document.getElementById('child-age-room-' + i_roomNo);        
    _childrenNoObj = $('form-child_rooms_' + i_roomNo);
    
    if (_childrenNoObj != undefined && _childrenNoObj.value != '0')
    {
        _childrenNo = _childrenNoObj.value;
        if (_divObj.innerHTML == '') _divObj.innerHTML = GetChildAgeRoomDiv(i_roomNo, _childrenNo);
        _divObj.style.display = 'block';
    }
    else
    {
        _childrenNo = '0';
        if (_divObj.innerHTML != '') _divObj.innerHTML = '';
        _divObj.style.display = 'none';
    }
    
    if (_childrenNoObj)
    {
        var adultsRooms = $('form-adult_rooms_' + i_roomNo);
        var bedType;
        
        if (adultsRooms.value == 2
            && _childrenNoObj.value == 0
            && (bedType = $('form-bed_type_' + i_roomNo).up().up().up()))
        {
            bedType.removeClassName('hidden-element').addClassName('showed-element');    
        }
        
        if (adultsRooms.value == 2
            && _childrenNoObj.value != 0
            && (bedType = $('form-bed_type_' + i_roomNo).up().up().up()))
        {
            bedType.removeClassName('showed-element').addClassName('hidden-element');    
        }
    }

	/**
	 * title & header
	 */

	_countChildren = 0;
	_maxChildren = 0;
	
	for (i = 1; i <= 10; i++)
	{
		_childRoomsObj = document.getElementById('form-child_rooms_' + i);
		if (_childRoomsObj != undefined)
		{
			_countChildren = _countChildren + parseInt(_childRoomsObj.value);
			
			if (parseInt(_childRoomsObj.value) > _maxChildren)
			{
				_maxChildren = parseInt(_childRoomsObj.value);
			}
		}
	}
	
	_childAgeHeaderObj = document.getElementById('child-age-header');
	_childAgeTitleObj = document.getElementById('child-age-title');
	
	if (_countChildren > 0)
	{
		_childAgeHeaderObj.style.display = 'block';
		_childAgeTitleObj.style.display = 'block';
		
		//setChildAgeHeader(_maxChildren);
	}
	else
	{
		_childAgeHeaderObj.style.display = 'none';
		_childAgeTitleObj.style.display = 'none';
	}    

	if (_childrenNo == '0') return;

	/**
	 * particular selects
	 */

	for (i = 1; i <= 5; i++)
    {
		_selectObj = document.getElementById('form-child_age_' + i_roomNo + '_' + i);
        _headerObj = document.getElementById('span-child_age_header_' + i_roomNo + '_' + i);
  		
    	if (i <= _childrenNo && _selectObj.style.display != 'inline')
    	{
    		_selectObj.style.display = 'inline';
            _headerObj.style.display = 'inline';
    	}
    	else if (i > _childrenNo && _selectObj.style.display != 'none')
    	{
	   		_selectObj.style.display = 'none';
            _headerObj.style.display = 'none';
    	}
    }
}

function setChildAgeHeader(_childrenNo)
{
    return;
	for (i = 1; i <= 5; i++)
    {
		_headObj = document.getElementById('child_age_header_' + i);
  		
    	if (i <= _childrenNo && _headObj.style.display != 'inline')
    	{
    		_headObj.style.display = 'inline';
    	}
    	else if (i > _childrenNo && _headObj.style.display != 'none')
    	{
	   		_headObj.style.display = 'none';    	
    	}
    }
}

_today = new Date();
_months = {'Jan' : 0, 'Feb' : 1, 'Mar' : 2, 'Apr' : 3, 'May' : 4, 'Jun' : 5, 'Jul' : 6, 'Aug' : 7, 'Sep' : 8, 'Oct' : 9, 'Nov' : 10, 'Dec' : 11};

function ValidateSearch()
{
    var _result = '';
    
    if ((!$('form-city').value) || ($('form-city').value == 0))
        _result += 'Destination city is required.\n';
    
    var _checkIn = $('form-check_in').value.replace(/[a-zA-Z]{3}/, _months[$('form-check_in').value.match(/[a-zA-Z]{3}/)]).split('-');
    if (!$('form-check_in').value.match(/\d{2}\-[a-zA-Z]{3}\-\d{4}/))
        _result += 'Check-in date is required.\n';    
    
    if (Date.UTC(_checkIn[2], _checkIn[1], _checkIn[0]) < Date.UTC(_today.getFullYear(), _today.getMonth(), _today.getDate()))
        _result += 'Check-in date must be a future date.\n';        
        
    var _checkOut = $('form-check_out').value.replace(/[a-zA-Z]{3}/, _months[$('form-check_out').value.match(/[a-zA-Z]{3}/)]).split('-');
    if (!$('form-check_out').value.match(/\d{2}\-[a-zA-Z]{3}\-\d{4}/))
        _result += 'Check-out date is required.\n';            
    
    if (Date.UTC(_checkOut[2], _checkOut[1], _checkOut[0]) < Date.UTC(_checkIn[2], _checkIn[1], _checkIn[0]))
        _result += 'Check-out date must be later than check-in date.\n';                
        
    if (_result.length)
        return _result;
    else
        return;
}


function ShowSplashScreen()
{
	// hide scrollbar
	if (document.body)
		document.body.style.overflow = 'hidden';
	else if (document.documentElement)
		document.documentElement.overflow = 'hidden';
	
	var flash = document.getElementsByTagName('embed')
	
	for (var i = 0; i < flash.length; i++) 
	{ 
	        flash[i].style.display = 'none';
	}
	
	flash = document.getElementsByTagName('object')
    
    for (var i = 0; i < flash.length; i++) 
    { 
            flash[i].style.display = 'none';
    }
    
    var select = document.getElementsByTagName('select')
    
    for (var i = 0; i < select.length; i++) 
    { 
            select[i].style.display = 'none';
    }
	
	// get scroll info
	scrOfY = 0;
	scrOfX = 0;
    if( typeof( window.pageYOffset ) == 'number' ) {
        //Netscape compliant
        scrOfY = window.pageYOffset;
        scrOfX = window.pageXOffset;
    }
    else {
        if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
            //DOM compliant
            scrOfY = document.body.scrollTop;
            scrOfX = document.body.scrollLeft;
        }
        else {
            if( document.documentElement &&
              ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
                //IE6 standards compliant mode
                scrOfY = document.documentElement.scrollTop;
                scrOfX = document.documentElement.scrollLeft;
            }
        }
    }

	// get window size
	var windowWidth, windowHeight;
	if (self.innerHeight) {
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { 
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}
		
	// prepare values
	if ($('form-cityname')) // hotel page
		formCityName = $('form-cityname').value;
	else // homepage + destinations
		formCityName = $('form-city').options[$('form-city').selectedIndex].text;
		
	// prepare hotel value
	if ($('form-hotel_id'))
	{
		if (($('form-hotelname')) && ($('form-hotel_id').value > 0))
			formHotelName = "the " + $('form-hotelname').value;
		else
		{
			formHotelName = 'hotels';
			$('form-hotel_id').value = null;
		}
	}
	else
	{
		formHotelName = 'hotels';
	}
	
	// prepare attraction value
	formAttractionName = null;
	if ($('form-attraction_id'))
	{
		if (($('form-attraction_name')) && ($('form-attraction_id').value > 0))
			formAttractionName = " near " + $('form-attraction_name').value;
		else
		{
			formAttractionName = null;
		}	
	}

		
	$('SplashScreen_CityName').innerHTML = formCityName;
	if ($('SplashScreen_HotelName'))
		$('SplashScreen_HotelName').innerHTML = formHotelName;
	
	if (formAttractionName)
		$('SplashScreen_CityName').innerHTML = formCityName + formAttractionName;
		
	var dateFrom = $('form-check_in').value;
	dateFrom = dateFrom.replace("-2008", "");
	var dateTo = $('form-check_out').value;
	dateTo = dateTo.replace("-2008", "");
	$('SplashScreen_FromDate').innerHTML = dateFrom.replace("-", " ");
	$('SplashScreen_ToDate').innerHTML = dateTo.replace("-", " ");
	
	// show splash page
	$('SplashScreenContainer');		
	$('SplashScreenContainer').style.top = scrOfY+"px";
	$('SplashScreenContainer').style.display = 'block';	
}


function getParams()
{
	params = 'class=SearchResultsAjax';
	params += '&cityId='+$('form-city').value;
	params += '&check_in='+$('form-check_in').value;
	params += '&check_out='+$('form-check_out').value;
	if ($('form-hotel_id'))
	{
		params += '&hotel_id='+$('form-hotel_id').value;
	}
	
	if ($('form-attraction_id'))
	{
		params += '&attraction_id='+$('form-attraction_id').value;
	}
	
	var i;
	for (i=1; i <= $('form-number_of_rooms').value; i++)
    {
		var adultsNumber = $('form-adult_rooms_' + i).value;
		var childsNumber = $('form-child_rooms_' + i).value;
		
		params += '&rooms['+i+'][adult]=' + adultsNumber;
		params += '&rooms['+i+'][child]=' + childsNumber;
		
		if (adultsNumber == 2 
		   && childsNumber == 0)
		{
		      params += '&rooms['+i+'][bed_type]=' + $('form-bed_type_' + i).value;
		}
		
		var n;
		
		for (n = 1; n <= $('form-child_rooms_'+i).value; n++)
		{
			params += '&rooms['+i+'][childAge]['+n+']='+$('form-child_age_'+i+'_'+n).value;
		}
	}
	
	return params;
}


function yeego_search()
{
    if (_result = ValidateSearch())
    {
        alert(_result);
        return;
    }
	
    ShowSplashScreen();  

	params = getParams();

	// launch search
	searchFrame = createIframe('search-iframe');
	searchFrame.src = 'AjaxService.php?'+params+'&action=Search';
	
	if (!HTTPObj)
		createHTTPObj();
	
	if (HTTPObj.RPCType == 'iframe2')
		params += "&jscallback=1";
	else
		params += "&jscallback=0";

	do_rpc('AjaxService.php?'+params+'&action=CountResults', 'form-submit', '', redirect);			

}


function counter()
{
	pe.stop();
			
	params = getParams();
			
	if (!HTTPObj)
		createHTTPObj();
			
    // define callback type
	if (HTTPObj.RPCType == 'iframe2')
		params += "&jscallback=1";
	else
		params += "&jscallback=0";
		
	do_rpc('AjaxService.php?'+params+'&action=CountResults', 'form-submit', '', redirect);
}


function redirect()
{
    if (HTTPObj.readyState == 4 || HTTPObj.readyState == "complete") 
    {
        if (HTTPObj.status == 200) 
        {
            var searchData = HTTPObj.responseText.split('|');

            if (searchData[0] > 0 || searchData[1] == 1)
            {
                $('form').submit();
            }
            else
            {
                pe = new PeriodicalExecuter(counter, 0.5);
                
                if (searchData[1] == -1)
                {
                    // search error.. - stop interval!
                    pe.stop();
                }
            }
        }
    }
}

function SetStates(i_CountryId)
{
    if (!i_CountryId) i_CountryId = '';

    _params  = '&params[country_id]=' + i_CountryId;

    PrintAjaxField_form_state('SystemStatesAjaxField', _params);
}

function SetCities(i_CountryId, i_StateId)
{
	if ((i_CountryId == null) && (i_StateId == null))
	{
		// if run without any value - then by default show cities for country
		i_CountryId = $('form-country').value;	
	}

    if (!i_CountryId) i_CountryId = '';
    if (!i_StateId) i_StateId = '';

    _params  = '&params[country_id]=' + i_CountryId;
    _params += '&params[state_id]=' + i_StateId;
    
    PrintAjaxField_form_city('SystemCitiesAjaxField', _params);
}

function CheckIfBeedingFieldShouldBeDispalyed(domSelectObject)
{
    var prototypeSelectObject = $(domSelectObject);
     
    if (prototypeSelectObject.up().next('div').down('select').value != 0)
    {
        return;
    }
    
    var bedType;
    if (prototypeSelectObject.value == 2
        && (bedType = prototypeSelectObject.up().up().next('.hidden-element')))
    {
        return bedType.removeClassName('hidden-element').addClassName('showed-element');
    }
    
    if (bedType = prototypeSelectObject.up().up().next('.showed-element'))
    {
        bedType.removeClassName('showed-element').addClassName('hidden-element');
    }
}


function GetSearchRoomDiv(_room)
{
    _contentTemplate = document.getElementById('GetSearchRoomDiv_template').innerHTML;
    return _contentTemplate.toString().replace(/template/g, _room);
}

function GetChildAgeRoomDiv(_room)
{
    _contentTemplatePrepend     = '<div class="form_row">'
                                    + '<div class="children_age_room_no">'
                                        + '<div class="form_3_100b"><strong>Room #template</strong></div>'
                                    + '</div>'
                                    + '<div class="children_age_room_options">';
    
    _contentTemplateMain        = '<div class="form_3_100">' + document.getElementById('GetChildAgeRoomDiv_template').innerHTML + '</div>';
    
    _contentTemplateAppend      = '</div></div>';

    return _contentTemplatePrepend.replace("template", _room)
            + _contentTemplateMain.replace(/template/g, _room + '_1').replace(/#ChildNo/g, 1)
            + _contentTemplateMain.replace(/template/g, _room + '_2').replace(/#ChildNo/g, 2)
            + _contentTemplateMain.replace(/template/g, _room + '_3').replace(/#ChildNo/g, 3)
            + _contentTemplateMain.replace(/template/g, _room + '_4').replace(/#ChildNo/g, 4)
            + _contentTemplateMain.replace(/template/g, _room + '_5').replace(/#ChildNo/g, 5)
            + _contentTemplateAppend;
}

_monthsNames = {0 : 'Jan', 1 : 'Feb', 2 : 'Mar', 3 : 'Apr', 4 : 'May', 5 : 'Jun', 6 : 'Jul', 7 : 'Aug', 8 : 'Sep', 9 : 'Oct', 10 : 'Nov', 11 : 'Dec'}; 

function AttractionFormSubmit()
{
	if (!$('form-check_in').value.match(/\d{2}\-[a-zA-Z]{3}\-\d{4}/))
	{
		d = new Date();
		d.setDate(d.getDate() + 7);
		
		checkInDay = d.getDate();
		if (checkInDay < 10) checkInDay = '0' + checkInDay;
		$('form-check_in').value = checkInDay + '-' + _monthsNames[d.getMonth()] + '-' + d.getFullYear();
		
		d.setDate(d.getDate() + 1);
		checkOutDay = d.getDate();
		if (checkOutDay < 10) checkOutDay = '0' + checkOutDay;
		$('form-check_out').value = checkOutDay + '-' + _monthsNames[d.getMonth()] + '-' + d.getFullYear();
	}
}