//var blockAuto = true; //ddd
var rs_selectedResult = 0;
var rs_request = null;
var rs_stateFilter = 'ALL';
var rs_countryFilter = 'ALL';
var rs_petFilter = 'NO';
if ( !isdefined (rs_bookingFilter) ) var rs_bookingFilter = false;
var rs_fiveRooms = '';
var rs_groupBooking = true;
if ( !isdefined ( rs_cname ) ) var rs_cname = 'http://hotel.hotelsinbologna.info';
if ( !isdefined ( rs_numCalendars ) ) var rs_numCalendars = 1;
if ( !isdefined ( rs_airportFilter ) ) var rs_airportFilter = 'YES';
if ( !isdefined ( rs_popUp ) ) var rs_popUp = true;
if ( !isdefined ( rs_backend ) ) var rs_backend = false;
if ( !isdefined ( blockAuto ) ) var blockAuto = false;
if ( !isdefined ( vcidVal ) ) var vcidVal = 28948;

if ( rs_backend )
    rs_cname = '';
if ( !isdefined ( rs_autocompleteSource ) ) var rs_autocompleteSource = rs_cname + '/inc/json_autocomplete.php';
var rightNow = new Date();
var today = new Date( rightNow.getFullYear(), rightNow.getMonth(), rightNow.getDate() );
var maxDate = new Date (today.getFullYear() + 1, today.getMonth(), today.getDate() - 1);
var daysInMonth = [31,daysInFeb(today.getFullYear()),31,30,31,30,31,31,30,31,30,31];
var fullMonthNames = ['January','February','March','April','May','June','July','August','September','October','November','December'];
var shortMonthNames = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];

if ( !rs_backend )
    $('head').append('<link rel="stylesheet" type="text/css" href="' + rs_cname + '/inc/getCSS.php?refid=' + rs_refID + '&num=' + rs_numCalendars + '" title="default" />');

function isdefined( variable )
{
    return (typeof(variable) == "undefined")?  false: true;
}

function getForm ( element )
{
    return '#' + ($(element).parents('form').attr('id'));
}

function getDaysInMonth ( month, year )
{
	if ( month == 1 )
		return daysInFeb(year);
	else
		return daysInMonth[month];
}

function loadRefData ()
{
    $.getJSON(rs_cname + '/inc/json_refData.php?refid=' + rs_refID + '&jsoncallback=?', function(data) {
        var xml = data.data[0].html;
        rs_stateFilter = ((/<stateFilter>[\s]*([^\s]*)[\s]*<\/stateFilter>/.exec(xml))[1]);
        if ( rs_stateFilter == '' )
            rs_stateFilter = 'ALL';
        rs_countryFilter = ((/<countryFilter>[\s]*([^\s]*)[\s]*<\/countryFilter>/.exec(xml))[1]);
        if ( rs_countryFilter == '' )
            rs_countryFilter = 'ALL';
        rs_petFilter = ((/<petFilter>[\s]*([^\s]*)[\s]*<\/petFilter>/.exec(xml))[1]);
        if ( rs_petFilter == 'true' )
            rs_petFilter = 'YES';
        else
            rs_petFilter = 'NO';
        if ( !rs_bookingFilter )
        {
            rs_bookingFilter = ((/<bookingFilter>[\s]*([^\s]*)[\s]*<\/bookingFilter>/.exec(xml))[1]);
            if ( rs_bookingFilter == 'true' )
                rs_bookingFilter = 'YES';
            else
                rs_bookingFilter = 'NO';
        }
        rs_fiveRooms = ((/<fiveRoomURL>[\s]*([^\s]*)[\s]*<\/fiveRoomURL>/.exec(xml))[1]);
        rs_groupBooking = ((/<groupBookingMode>[\s]*([^\s]*)[\s]*<\/groupBookingMode>/.exec(xml))[1]);
        if ( parseInt(rs_groupBooking, 10) == 2 )
            rs_groupBooking = false;
        else
            rs_groupBooking = true;
        rs_cname = ((/<cName>[\s]*([^\s]*)[\s]*<\/cName>/.exec(xml))[1]);
        if ( rs_cname == '' )
            rs_cname = 'http://hotel.hotelsinbologna.info/';
        else
            rs_cname = 'http://' + rs_cname.replace('http://','');
        if ( rs_backend )
            rs_cname = '';
    });
}

function rs_killRequest ()
{
    if ( rs_request != null )
    {
        rs_request.abort();
        rs_request = null;
    }

}


function rs_runAutocomplete ( query, container )
{
    $('.rs_autocomplete', container).css('background', '#FFF url(' + rs_cname + '/img/loader.gif) no-repeat right 2px');
    rs_request = $.getJSON(rs_autocompleteSource + "?airFilter=" + rs_airportFilter + "&stateFilter=" + rs_stateFilter + "&countryFilter=" + rs_countryFilter + "&petFilter=" + rs_petFilter + "&bookingFilter=" + rs_bookingFilter +  "&query=" + query + "&jsoncallback=?",
        function(data)
        {
            rs_request = null;
            if ( data.data[0].html.indexOf('li') != -1 )
            {
                $('.rs_autocomplete_results', container).html('<div class="rs_autocomplete_resultsContent">' + data.data[0].html + '</div>')
                $('.rs_autocomplete_results', container).show();
                $('.rs_autocomplete_resultsContent', container).bgiframe();
                $('.rs_autocomplete', container).css('background-image', 'none');

                $('.rs_autocomplete_results li', container).click ( function() { rs_setResult(($(this).attr('class').split(' ').slice(0)).toString().split('_').slice(-1).toString().split(',').slice(0, 1).toString(), container);  } );
                $('.rs_autocomplete_results li', container).mouseover ( function() { rs_setSelected($(this).attr('class').split('_').slice(-1).toString().split(' ').slice(0,1).toString(), container);  } );

                rs_setSelected(0, container);
            }
            else
            {
                $('.rs_autocomplete', container).css('background-image', 'none');
            }
            rs_killRequest();
        }
    );
}

function rs_setResult ( result, container )
{
    $('.rs_autocomplete_results', container).hide();
    $('.rs_autocomplete', container).val ( $('.rs_autocomplete_results .result_' + result + ' .cleanName', container).text() );
    $('.rs_autocomplete_cityid', container).val ( $('.rs_autocomplete_results .result_' + result, container ).attr('id') );
    $(container).attr('action', rs_cname + '/city/?');
    var resultType = $('.rs_autocomplete_results .result_' + result, container ).attr('class').split(' ').slice(0,1);
    if ( resultType == 'region' )
    {
        if ( !$('input[name=rs_rid]', container).length )
            $(container).append("<input type='hidden' name='rs_rid' class='rs_autocomplete_regionid'/>");
        $('input[name=rs_rid]', container).val( $('.rs_autocomplete_results .result_' + result, container ).attr('id') );
    }
    else
        $('input[name=rs_rid]', container).val('');
    if ( resultType == 'airport' )
    {
        if ( !$('input[name=rs_lmark]', container).length )
            $(container).append("<input type='hidden' name='rs_lmark' class='rs_autocomplete_landmark'/>");
        $('input[name=rs_lmark]', container).val( 'air' + $('.rs_autocomplete_results .result_' + result + ' .cleanName', container).text() );
    }
    else if ( $('input[name=rs_lmark]', container).css('display') == 'none' )
        $('input[name=rs_lmark]', container).val('');

    rs_killRequest();
}

function rs_blankResult ( container )
{
    $('.rs_autocomplete', container).css('background-image', 'none');
    $('.rs_autocomplete_results', container).hide();
    $(container).attr('action', rs_cname + '/search/?');
	$('input[name=rs_cid]', container).val ('');
	if ( $('input[name=rs_lmark]', container).css('display') == 'none' )
    	$('input[name=rs_lmark]', container).val('');
    $('input[name=rs_rid]', container).val('');
}

function rs_setSelected ( selected, container )
{
    if ( selected == $('.rs_autocomplete_results li', container).length )
        selected = 0;

    if ( selected == -1 )
        selected = $('.rs_autocomplete_results li', container).length - 1;

    rs_selectedResult = selected;

    $('.rs_autocomplete_results .selected', container).removeClass('selected');
    $('.rs_autocomplete_results .result_' + selected, container).addClass('selected');

    rs_killRequest();
}

function rs_performSearch ( container )
{

    if ( $('input[name=rs_hid]', container).length && $('input[name=rs_hid]', container).val() != '' )
    {
        $(container).attr('action', rs_cname + '/hotel/?');
    }
    else if ( ($('input[name=rs_cid]', container).length && $('input[name=rs_cid]', container).val() != '') || ($('input[name=rs_rid]', container).length && $('input[name=rs_rid]', container).val() != '') )
    {
        $(container).attr('action', rs_cname + '/city/?');
    }
    else if ( !$('input[name=rs_hid]', container).length )
    {
        var search = $('.rs_autocomplete', container).val().replace(/[^a-zA-Z0-9]+/g,'');
        if ( search == ""  )
        {
            alert ( "Please enter a city to search for." );
            $('.rs_autocomplete', container).focus();
            return false;
        }
    }

    if ( $('select[name=rs_rooms]', container).length && $('select[name=rs_rooms]', container).val() >= 5 && $('select[name=rs_rooms]', container).val() <= 8 )
    {
        if ( rs_groupBooking )
        {
            if ( rs_popUp )
                rs_doPop ( $('input[name=rs_city]', container).val() );

            if ( rs_fiveRooms != '' )
                window.location.href = rs_fiveRooms;
            else
                window.location.href = "http://hotelsbycity.hotelplanner.com/Search/Index.cfm?City=" + $('input[name=rs_city]', container).val() + "&InDate=" + $('input[name=rs_chk_in]', container).val() + "&Outdate=" + $('input[name=rs_chk_out]', container).val() + "&NumRooms=" + $('select[name=rs_rooms]', container).val() + "&sc=HBC" + $('input[name=refid]', container).val();
        }
        else
        {
            alert ( "Sorry, we only allow reservations betwen 1 and 4 rooms" );
        }

        return false;
    }
    else if ( $('select[name=rs_rooms]', container).length && $('select[name=rs_rooms]', container).val() > 8 )
    {
        if ( rs_groupBooking )
        {
            if ( rs_popUp )
                rs_doPop ( $('input[name=rs_city]', container).val() );

            if ( rs_fiveRooms != '' )
                window.location.href = rs_fiveRooms;
            else
                window.location.href = "http://hotelsbycity.hotelplanner.com/GroupForm.cfm?City=" + $('input[name=rs_city]', container).val() + "&InDate=" + $('input[name=rs_chk_in]', container).val() + "&Outdate=" + $('input[name=rs_chk_out]', container).val() + "&NumRooms=" + $('select[name=rs_rooms]', container).val() + "&sc=HBC" + $('input[name=refid]', container).val();
        }
        else
        {
            alert ( "Sorry, we only allow reservations betwen 1 and 4 rooms" );
        }

        return false;
    }
    else if ( $('.rs_chk_in', container).val() != 'mm/dd/yyyy' && $('.rs_chk_out', container).val() != 'mm/dd/yyyy' && (((stringToDate($('.rs_chk_out', container).val()) - stringToDate($('.rs_chk_in', container).val()))/86400000) > 21) )
    {
        if ( rs_groupBooking )
        {
            if ( rs_popUp )
                rs_doPop ( $('input[name=rs_city]', container).val() );

            if ( rs_fiveRooms != '' )
                window.location.href = rs_fiveRooms;
            else
                window.location.href = "http://hotelsbycity.hotelplanner.com/Search/Index.cfm?City=" + $('input[name=rs_city]', container).val() + "&InDate=" + $('input[name=rs_chk_in]', container).val() + "&Outdate=" + $('input[name=rs_chk_out]', container).val() + "&NumRooms=" + $('select[name=rs_rooms]', container).val() + "&sc=HBC" + $('input[name=refid]', container).val();
        }
        else
        {
            alert ( "Sorry, reservations have a maximum length of 21 days");
        }

        return false;
    }

    if ( rs_popUp )
        rs_doPop ( $('input[name=rs_city]', container).val() );

    if ( $('input[name=rs_hid]', container).length && $('input[name=rs_hid]', container).val() != '' )
        $('.hotelButton', container).attr('value','Checking...').css('background','#8AB531 url(' + rs_cname + '/img/load_trans.gif) no-repeat 87px 4px').css('width','107px').css('text-align','left');
    else
        $('.rs_search', container).attr('value','Searching...').css('background','#8AB531 url(' + rs_cname + '/img/load_trans.gif) no-repeat 87px 4px').css('width','107px').css('text-align','left');
		
	if($("div.amenity_filter").length)
	{
		var rs_facil = "";
		var chk_box_cntr = $("div.amenity_filter");
		$("input:checkbox:checked", chk_box_cntr).each(function()
		{
			rs_facil += this.id + "^";
		});	
		$('input[name=rs_facil]', container).attr('value', rs_facil);
	}

    //$.getJSON( rs_cname + "/inc/trackJSON.php?path=searches&data=front^" + escape($(container).attr('action') + 'rs_city=' + $('input[name=rs_city]', container).val() + '&rs_cid=' + $('input[name=rs_cid]', container).val() + '&rs_rid=' + $('input[name=rs_rid]', container).val() + '&rs_lmark=' + $('input[name=rs_lmark]', container).val() + '&rs_hid=' + $('input[name=rs_hid]', container).val() + '&rs_chk_in=' + $('input[name=rs_chk_in]', container).val() + '&rs_chk_out=' + $('input[name=rs_chk_out]', container).val() ) + "&jsoncallback=?", function(data){  } );
    //$(container).submit();
    document.getElementById(container).submit();
    return false;
}

function rs_doPop ( popVal )
{
    if ( rs_checkPop() )
    {

        var page = "http://www.hotelsbycity.com/hotels/pop_up.php?key=" + popVal + "&vcid=" + vcidVal + "&skip_tig=true";
        var windowprops = "resizable=1,scrollbars=1,menubar=1,location=1,toolbar=1,titlebar=1,width=680,height=510, top=50, left=50";
        newWindow = window.open(page, 'HBCPop', windowprops);
		newWindow.blur();
		//open a temp window and close it to avoid popUnder becomes popUp on newer browser
		var temp=newWindow.open("about:blank");
		temp.close();
        
		
    }
}

function rs_checkPop()
{
    var oldTime = rs_readCookie("lastHBCPop");
    var rightNow = new Date();

    if ( oldTime == null )
    {
        rs_createCookie( "lastHBCPop", rightNow.getTime(), 0 );
        return ( true );
    }
    else
    {
        if ( (parseInt(oldTime) + (4 * 60 * 60 * 60 )) > (parseInt(rightNow.getTime())) )
        {
            return ( false );
        }
        else
        {
            rs_createCookie( "lastHBCPop", rightNow.getTime(), 0 );
            return ( true );
        }
    }
}

function rs_testCookie ()
{
	rs_createCookie('rs_tc', '12345', 1);
	return ( rs_readCookie ( 'rs_tc' ) );
}

function rs_createCookie(name,value,days)
{
    if (days)
    {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function rs_readCookie(name)
{
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++)
    {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

$(document).ready(
    function()
    {
        loadRefData();

        $('.rs_autocomplete').keydown (
            function(event)
            {
            	if ( !(isdefined(blockAuto) && blockAuto) )
            	{
            		if ( event.keyCode != 16 )	//Shift
                		rs_killRequest();

	                if ( event.keyCode == 13 )  //Enter
	                {
	                    if ( $('.rs_autocomplete_results', getForm(this)).css('display') == 'block' )
	                    {
	                        rs_setResult ( rs_selectedResult, getForm(this) );
	                        return false;   //Blocks the form submission
	                    }
	                    else
	                        return true;    //This causes the form to submit
	                }
	                else if ( event.keyCode == 9 )  //Tab
	                {
	                    if ( $('.rs_autocomplete_results', getForm(this)).css('display') == 'block' )
	                        rs_setResult ( rs_selectedResult, getForm(this) );
	                }
	                else if ( event.keyCode == 8 && $('.rs_autocomplete', getForm(this)).val().length < 3 ) //Tab or backspace
	                    rs_blankResult(getForm(this));
				}
				else
				{
					rs_blankResult(getForm(this));
				}
            }
        );

        $('.rs_autocomplete').keyup (
            function(event)
            {
            	if ( !(isdefined(blockAuto) && blockAuto) )
            	{
	                if ( event.keyCode != 16 )	//Shift
                		rs_killRequest();

	                if ( event.keyCode == 40 )  // Up
	                    rs_setSelected ( rs_selectedResult + 1, getForm(this) );
	                else if ( event.keyCode == 38 ) //Down
	                    rs_setSelected ( rs_selectedResult - 1, getForm(this) );
	                else if ( event.keyCode == 27 ) //Escape
	                    rs_blankResult( getForm(this) );
	                else if ( $('.rs_autocomplete', getForm(this)).val().length >= 3 && ((event.keyCode >= 65 && event.keyCode <= 90) || event.keyCode == 8) ) //A-Z and backspace
	                    rs_runAutocomplete( $('.rs_autocomplete', getForm(this)).val(), getForm(this) );
	                else if ( $('.rs_autocomplete', getForm(this)).val().length < 3 )
	                    rs_blankResult(getForm(this));
				}
				else
				{
					rs_blankResult(getForm(this));
				}
            }
        );

        $(document).click (
            function(e)
            {
                var $clicked=$(e.target);
                if ( $('.rs_autocomplete_results').css('display') == 'block' && !( $clicked.parents().is('.rs_autocomplete_results') || $clicked.is('.rs_autocomplete') ) )
                {
                    rs_blankResult(getForm($('.rs_autocomplete_results:visible')));
                }
                else if ( ( $('.rs_calendar_in').css('display') == 'block' || $('.rs_calendar_out').css('display') == 'block' ) &&!(($clicked.is('.rs_search'))||($clicked.parents().is('.rs_calendar')) || ($clicked.parents().is('.calendarButtons')) || ($clicked.is('.rs_chk_in')) || ($clicked.is('.rs_chk_out')) || ($clicked.is('.rs_calendar_show'))) )
                {
                    $('.rs_calendar').hide();
                }
            }
        );
    }
);


function printMonths (minDate, drawDate, maxDate, drawBlank)
{
    var result = '';
    var year = minDate.getFullYear();
    var printDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);

    if ( drawBlank )
    {
        result = '<option>Month</option><option>&nbsp;</option>';
    }

    while ( printDate <= maxDate )
    {
        result += '<option';
        if ( printDate.getMonth() == drawDate.getMonth() && printDate.getFullYear() == drawDate.getFullYear() && drawBlank == false )
            result += ' selected=SELECTED';
        result += ' value="' + printDate.getMonth() + '-' + printDate.getFullYear() + '">' + shortMonthNames[printDate.getMonth()] + ' `' + printDate.getFullYear().toString().slice(2,4) + '</option>';
        printDate.setMonth( printDate.getMonth() + 1);
    }

    return result;
}

function daysInFeb( year )
{
    if ( new Date(year,1,29).getDate()==29 )
        return 29;
    else
        return 28;
}

function stringToDate ( string )
{
    var splitted = string.split("/");
    if ( splitted[0] == 'mm' || splitted[0] == null || splitted[0] == '' )
        return today;
    else
        return new Date ( splitted[2], splitted[0]-1, splitted[1] );
}

function drawPrev ( month, year, type, container )
{
    var drawDate = new Date ( year, month, 1 );
    drawDate.setMonth ( drawDate.getMonth() -  1 );
	if ( type == 'rs_calendar_in' )
        drawCalendar ( drawDate, today, stringToDate($('.rs_chk_in', container).val()), stringToDate($('.rs_chk_out', container).val()), type, true, container );
    else
        drawCalendar ( drawDate, stringToDate($('.rs_chk_in', container).val()), stringToDate($('.rs_chk_in', container).val()), stringToDate($('.rs_chk_out', container).val()), type, true, container );
}

function drawNext ( month, year, type, container )
{
    var drawDate = new Date ( year, month, 1 );
    drawDate.setMonth ( drawDate.getMonth() + 1 );
    if ( type == 'rs_calendar_in' )
        drawCalendar ( drawDate, today, stringToDate($('.rs_chk_in', container).val()), stringToDate($('.rs_chk_out', container).val()), type, true, container );
    else
        drawCalendar ( drawDate, stringToDate($('.rs_chk_in', container).val()), stringToDate($('.rs_chk_in', container).val()), stringToDate($('.rs_chk_out', container).val()), type, true, container );
}

function setDay ( day, type, container )
{
    if ( type == 'rs_calendar_in' )
    {
        var chk_in = stringToDate($('.rs_chk_in', container).val());
        setDate ( chk_in.getFullYear(), chk_in.getMonth(), day, 'rs_calendar_in', container );
    }
    else
    {
        var chk_out = stringToDate($('.rs_chk_out', container).val());
        setDate ( chk_out.getFullYear(), chk_out.getMonth(), day, 'rs_calendar_out', container );
    }
}

function setMonth ( month, type, container )
{
    if ( month.length == 1 )
    {
        if ( type == 'rs_calendar_in' )
            $('.rs_chk_in_month', container).val(0);
        else
            $('.rs_chk_out_month', container).val(0);
        return false;
    }

    var newMonth = month.split('-')[0];
    var newYear = month.split('-')[1];
    if ( type == 'rs_calendar_in' )
        setDate ( newYear, newMonth, 1, 'rs_calendar_in', container );
    else
        setDate ( newYear, newMonth, 1, 'rs_calendar_out', container );
}

function setDate ( year, month, day, type, container )
{
    $('.rs_calendar').hide();

    var chk_in = stringToDate($('.rs_chk_in', container).val());
    var chk_out = stringToDate($('.rs_chk_out', container).val());

    if ( type == 'rs_calendar_in' )
    {
        var chk_in = new Date ( year, month, day );
        if ( chk_in < today )
            chk_in = new Date ( today.getFullYear(), today.getMonth(), today.getDate() );
        if ( stringToDate($('.rs_chk_out', container).val()) <= chk_in )
        {
            var chk_out = new Date ( chk_in.getFullYear(), chk_in.getMonth(), chk_in.getDate() );
            chk_out.setDate ( chk_out.getDate() + 1 );
        }

        $('.rs_chk_in', container).val( (chk_in.getMonth()+1) + '/' + chk_in.getDate() + '/' + chk_in.getFullYear() );
        $('.rs_chk_out', container).val( (chk_out.getMonth()+1) + '/' + chk_out.getDate() + '/' + chk_out.getFullYear() );

        drawCalendar ( chk_out, chk_in, chk_out, chk_in, 'rs_calendar_out', false, container );
        drawCalendar ( chk_in, today, chk_in, chk_out, type, false, container );
    }
    else
    {
        var chk_out = new Date ( year, month, day );
        if ( chk_in < today )
            chk_in = new Date ( today.getFullYear(), today.getMonth(), today.getDate() );
        if ( chk_out <= chk_in )
        {
            chk_out = new Date ( chk_in.getFullYear(), chk_in.getMonth(), chk_in.getDate() );
            chk_out.setDate ( chk_out.getDate() + 1 );
        }

        $('.rs_chk_in', container).val( (chk_in.getMonth()+1) + '/' + chk_in.getDate() + '/' + chk_in.getFullYear() );
        $('.rs_chk_out', container).val( (chk_out.getMonth()+1) + '/' + chk_out.getDate() + '/' + chk_out.getFullYear() );

        drawCalendar ( chk_out, chk_in, chk_out, chk_in, type, false, container );
        drawCalendar ( chk_in, today, chk_in, chk_out, 'rs_calendar_in', false, container );
    }
}

function printDays ( drawDate, minDate, maxDate, drawBlank )
{
    var result = '';
    var printDate = new Date ( drawDate.getFullYear(), drawDate.getMonth(), 1 );
    if ( drawBlank )
    {
        result = '<option>Day</option>';
        return result;
    }

    for (var i = 1; i <= getDaysInMonth(drawDate.getMonth(), drawDate.getFullYear()); i ++)
    {
        printDate.setDate(i);
        if ( printDate <= maxDate && printDate >= minDate )
        {
            result += '<option value=\'' + i + '\'';
            if ( printDate.toDateString() == drawDate.toDateString() && drawBlank == false )
                result += ' selected=SELECTED';
            result += '>' + i + '</option>';
        }
    }

    return result;
}

function drawCalendar ( drawDate, minDate, date, otherDate, type, skipSelect, container )
{
    var html = '<div class="rs_calendarBody"><div class="closerBar"><span onclick="$(\'.rs_calendar\').hide();" class="closeSquare">x</span><div class="clear"></div></div>';
    var daysLeftInWeek = 7;
    var weeksToPrint = 6;

    if ( type == 'rs_calendar_out' )
    {
        minDate = new Date ( minDate.getFullYear(), minDate.getMonth(), (minDate.getDate() + 1) );
        if ( minDate.getMonth() != drawDate.getMonth() && drawDate.getMonth() == today.getMonth() && drawDate.getFullYear() == today.getFullYear() && $('.rs_chk_in', container).val() == 'mm/dd/yyyy' && $('.rs_chk_out', container).val() == 'mm/dd/yyyy'  )
        {
        	drawDate = new Date ( minDate.getFullYear(), minDate.getMonth(), minDate.getDate() );
		}
	}

    var buttonsHMTL = '';
    if (!(drawDate.getFullYear() == maxDate.getFullYear() && drawDate.getMonth() == maxDate.getMonth()))
        buttonsHMTL += "<span class='calendarNext' onclick='drawNext(" + drawDate.getMonth() + ", " + drawDate.getFullYear() + ", \"" + type + "\",\"" + container + "\"); return false;'></span>";
    if (!(drawDate.getFullYear() == minDate.getFullYear() && drawDate.getMonth() == minDate.getMonth()) && (drawDate.getFullYear() == maxDate.getFullYear() && drawDate.getMonth() == maxDate.getMonth()))
        buttonsHMTL += "<span class='calendarPrev' style='margin-right:21px' onclick='drawPrev(" + drawDate.getMonth() + ", " + drawDate.getFullYear() + ", \"" + type + "\",\"" + container + "\"); return false;'></span>";
    else if (!(drawDate.getFullYear() == minDate.getFullYear() && drawDate.getMonth() == minDate.getMonth()))
    {
    	if ( !((type == 'rs_calendar_out') && (drawDate.getFullYear() == minDate.getFullYear()) && (drawDate.getMonth()-1 == minDate.getMonth()) && (getDaysInMonth(minDate.getMonth(), minDate.getFullYear()) == minDate.getDate())) )
        	buttonsHMTL += "<span class='calendarPrev' onclick='drawPrev(" + drawDate.getMonth() + ", " + drawDate.getFullYear() + ", \"" + type + "\",\"" + container + "\"); return false;'></span>";
	}

    if ( skipSelect == false )
    {
        if ( type == 'rs_calendar_in' )
        {
            if ( $('.rs_chk_in', container).val() == 'mm/dd/yyyy' )
            {
                $('.rs_chk_in_month', container).html( printMonths(minDate, drawDate, maxDate, true) );
                $('.rs_chk_in_day', container).html( printDays(drawDate, minDate, maxDate, true) );
            }
            else
            {
                $('.rs_chk_in_month', container).html( printMonths(minDate, drawDate, maxDate, false) );
                $('.rs_chk_in_day', container).html( printDays(drawDate, minDate, maxDate, false) );
            }
        }
        else
        {
            if ( $('.rs_chk_out', container).val() == 'mm/dd/yyyy' )
            {
                $('.rs_chk_out_month', container).html( printMonths(minDate, drawDate, maxDate, true) );
                $('.rs_chk_out_day', container).html( printDays(drawDate, minDate, maxDate, true) );
            }
            else
            {
                $('.rs_chk_out_month', container).html( printMonths(minDate, drawDate, maxDate, false) );
                $('.rs_chk_out_day', container).html( printDays(drawDate, minDate, maxDate, false) );
            }
        }
    }


    drawDate = new Date (drawDate.getFullYear(), drawDate.getMonth() - 1, 1);

    for ( var counter=0; counter<rs_numCalendars; counter++ )
    {
        drawDate = new Date (drawDate.getFullYear(), drawDate.getMonth() + 1, 1);

        html += "<table ";
        if ( (rs_numCalendars-1) == counter )
        {
            html += "style='float: right; margin-right: 4px;' ";
        }

        html += "cellspacing=0 cellpadding=0 border=0><tr class='topRow'><td colspan=7>";
        if ( counter == 0 )
            html += "<select onchange='updateCalendar($(this).val(), \"" + type + "\",\"" + container + "\");'>" + printMonths(minDate, drawDate, maxDate, false) + "</select>";
        if ( counter != 0 )
            html += "<span class='calendarTitle'>" + fullMonthNames[drawDate.getMonth()] + " " + drawDate.getFullYear() + "</span>";
        if ( counter == (rs_numCalendars-1) )
        {
            html += "<span class='calendarButtons'>";
            html += buttonsHMTL;
            html += "</span>";
        }
        html += "</td></tr><tr class='weekRow'><th>sun</th><th>mon</th><th>tue</th><th>wed</th><th>thu</th><th>fri</th><th>sat</th></tr><tr>";

        daysLeftInWeek = 7;
        weeksToPrint = 6;

        html += printBlanks ( new Date(drawDate.getFullYear(), drawDate.getMonth(), 1).getDay() );
        daysLeftInWeek -= new Date(drawDate.getFullYear(), drawDate.getMonth(), 1).getDay();

        for (var i=1; i<=getDaysInMonth(drawDate.getMonth(), drawDate.getFullYear()); i++)
        {
            var printingDate = new Date ( drawDate.getFullYear(), drawDate.getMonth(), i );
            var clickAdd = 'onclick="setDate(' + drawDate.getFullYear() + ', ' + drawDate.getMonth() + ', ' + i + ', \'' + type + '\',\'' + container + '\'); return false;"';
            if ( printingDate.toDateString() == date.toDateString() && date.toDateString() != otherDate.toDateString() )
                html += '<td class="dateSquare currDate" ' + clickAdd + '><span>' + i + '</span></td>';
            else if ( printingDate.toDateString() == otherDate.toDateString() && date.toDateString() != otherDate.toDateString() )
            {
                if ( type == 'rs_calendar_out' )
                    html += '<td class="dateSquare otherDate"><span>' + i + '</span></td>';
                else
                    html += '<td class="dateSquare otherDate" ' + clickAdd + '><span>' + i + '</span></td>';
            }
            else if ( printingDate < minDate || printingDate > maxDate )
            {
                html += '<td class="dateSquare disabledDate"><span>' + i + '</span></td>';
            }
            else if ( (printingDate > date && printingDate < otherDate) || (printingDate < date && printingDate > otherDate) )
            {
                html += '<td class="dateSquare betweenDate" ' + clickAdd + '><span>' + i + '</span></td>';
            }
            else
                html += '<td class="dateSquare" ' + clickAdd + '><span>' + i + '</span></td>';
            daysLeftInWeek --;
            if ( daysLeftInWeek == 0 )
            {
                html = html + '</tr><tr>';
                daysLeftInWeek = 7;
                weeksToPrint --;
            }
        }

        if ( daysLeftInWeek != 7 )
        {
            html += printBlanks ( daysLeftInWeek ) + '</tr>';
            weeksToPrint --;
        }

        for ( var i=weeksToPrint; i>0; i-- )
            html += '<tr>' + printBlanks ( 7 ) + '</tr>';

        html += '</table>';
    }

    $('.' + type + '', container).html ( html + '</div>' );
}

function updateCalendar ( drawVal, type, container )
{
    var chk_in = stringToDate( $('.rs_chk_in', container).val() );
    var chk_out = stringToDate( $('.rs_chk_out', container).val() );
    if ( type == 'rs_calendar_in' )
        drawCalendar ( new Date(drawVal.split('-')[1],drawVal.split('-')[0],1), today, chk_in, chk_out, type, true, container );
    else
        drawCalendar ( new Date(drawVal.split('-')[1],drawVal.split('-')[0],1), chk_in, chk_out, chk_in, type, true, container );
}

function printBlanks ( count )
{
    var result = "";
    for ( var i=1; i<=count; i++ )
        result += "<td class='dateSquare blank'>&nbsp;</td>";
    return result;
}

$(document).ready (
    function()
    {
        $('.rs_calendar').each ( function ()
        {
            var container = getForm (this);
            var chk_in = stringToDate( $('.rs_chk_in', container).val() );
            var chk_out = stringToDate( $('.rs_chk_out', container).val() );
            drawCalendar ( chk_in, today, chk_in, chk_out, 'rs_calendar_in', false, container );
            var tmpDate = chk_out;
            //tmpDate.setDate(tmpDate.getDate() + 1);
            drawCalendar ( tmpDate, chk_in, chk_out, chk_in, 'rs_calendar_out', false, container );
        });


        $('.rs_chk_in_show').click ( function() { $('.rs_calendar').hide(); $('.rs_calendar_in', getForm(this)).show(); $('.rs_calendar_in .rs_calendarBody', getForm(this)).bgiframe(); } );
        $('.rs_chk_out_show').click ( function() { $('.rs_calendar').hide(); $('.rs_calendar_out', getForm(this)).show(); $('.rs_calendar_out .rs_calendarBody', getForm(this)).bgiframe(); } );
        $('.rs_chk_in').click ( function() { $('.rs_calendar').hide(); $('.rs_calendar_in', getForm(this)).show(); $('.rs_calendar_in .rs_calendarBody', getForm(this)).bgiframe(); } );
        $('.rs_chk_out').click ( function() { $('.rs_calendar').hide(); $('.rs_calendar_out', getForm(this)).show(); $('.rs_calendar_out .rs_calendarBody', getForm(this)).bgiframe(); } );
        $('.rs_calendar .closeSquare').click ( function() { $('.rs_calendar').hide(); } );
    }
);






function GetXmlHttpObject(){
    var xmlHttp=null;
    try{xmlHttp=new XMLHttpRequest();}
    catch (e){
        try{xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}
        catch (e){xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}
    }
    return xmlHttp;
};






var xmlHttp;
function rs_Cal(type, val, chkd, rule, aux, cust){
    if(rule=="first"){
        document.getElementById("rs_cal_"+type).innerHTML='<iframe frameborder="0" scrolling="no" src="/hbc_lib/inc/blank.php" id="rs_cal_iframe" style="height:191px"></iframe><div id="rs_cal" style="height:184px"><p style="padding:80px 0 0 0; margin:0; text-align:center; float:none;">loading calendar, please wait...</p></div>';
    }
    xmlHttp=GetXmlHttpObject();
var arr_type = new Array();
arr_type = type.split('_');
var type_aux = "";
    if (arr_type[0]=="in"){ if (arr_type[1]==null) type_aux="out"; else type_aux="out_"+arr_type[1];}
    if (arr_type[0]=="out"){ if (arr_type[1]==null) type_aux="in"; else type_aux="in_"+arr_type[1];}
    document.getElementById('rs_cal_'+type_aux).innerHTML='';
    var url="/hbc_lib/rscal/rscal.php";
    url=url+"?type="+type+"&val="+val+"&chkd="+chkd+"&aux="+aux+"&cust="+cust;
    url=url+"&sid="+Math.random();
    xmlHttp.onreadystatechange=stateChanged_cal;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
    function stateChanged_cal() {
        if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
            document.getElementById("rs_cal_"+type).innerHTML=xmlHttp.responseText;
        };
    };

};


function tog_box(type){
    if (document.getElementById(type).style.display=='none'){show(type);}else{hide(type);}
}
