function errorShow(error)
{
    $('#error_message').html( error );
    $('#error_obj').fadeIn();
    $('#notice_obj').fadeOut('fast');

	book_animate('error_message');
	book_color(true);
}

function xSelect(o_id)
{
    if(deny === 0)
    {
        return errorShow( deny_text );
    }
    
    if (first==1)
    {
    	if ( o_id == s_id )
    	{
    		book_color(true);
    		first = 0;
    		return;
    	}
    	
        var tdays=Math.abs(eval(o_id-s_id))/(60*60*24);
		tdays = Math.floor(tdays);

        if (tdays<min_bl && min_bl>0)
            errorShow( min_bl_text.replace('[min]', '<span class="daySize">'+min_bl+'</span>') )
        else if (tdays>max_bl && max_bl>0)
            errorShow( max_bl_text.replace('[max]', '<span class="daySize">'+max_bl+'</span>') )
        else
        {
            if (s_id>o_id)
            {
                var result = bUpdate(o_id, s_id, '-');
                var start_book = date(bookingDateFormat.replace(/%/g, '').replace('b', 'M'), o_id);
                var end_book = date(bookingDateFormat.replace(/%/g, '').replace('b', 'M'), s_id);
                db_start = o_id;
                db_end = s_id;
            }
            else
            {
                var result = bUpdate(o_id, s_id, '+');
                var start_book = date(bookingDateFormat.replace(/%/g, '').replace('b', 'M'), s_id);
                var end_book = date(bookingDateFormat.replace(/%/g, '').replace('b', 'M'), o_id);
                db_start = s_id;
                db_end = o_id;
            }
            
            if(result === true)
            {
            	var html = '<table class="listing_group">';
            	html += '<tr><td><div class="field">'+booking_checkin+':</div></td><td><div class="value">' + start_book+'</div></td></tr>';
            	html += '<tr><td><div class="field">'+booking_checkout+':</div></td><td><div class="value">'+end_book + '</div></td></tr>';
            	html += '<tr><td><div class="field">'+booking_nights+':</div></td><td><div class="value">'+tdays+'</div></td></tr>';
            	html += '<tr><td><div class="field">'+booking_amount+':</div></td><td><div class="value">'+defCurrency+' '+total_cost+'</div></td></tr>';
            	html += '</table>';
                $(message_obj).html(html);
                $('#book_price').html('Nights: <b>'+tdays+'</b> total cost: '+defCurrency+' '+total_cost);
                $('#nextStep').fadeIn();
                $('#booking_message_obj').fadeIn();
            }
            else
                errorShow( already_booked_text );
        }
        first=0;
    }
    else
    {
        if (s_id>0)
            s_id=cur_id;
        
        book_color(true);
        bUpdate(o_id);
        $('#nextStep').fadeOut('fast');
        $('#booking_message_obj').fadeOut('fast');
        
        first=1;
        s_id=o_id;
        cur_id=o_id;
    }
}

function bUpdate(o_id, s_id, mod)
{
    if (first==1)
    {
        var tdays=Math.abs(eval(o_id-s_id))/(60*60*24);
		tdays = Math.floor(tdays);

        var tdate = s_id;

        for (var i=0; i<tdays; i++)
        {
			tdate = eval( tdate + mod + 86400);

            if( $(day_prefix + tdate).hasClass('booked') || $(day_prefix + tdate).hasClass('prbooked') )
                return false;
            selected[index] = tdate;
            index++;
        }
        book_color(); // Paint calendar
    }
    else
    {
        $(message_obj).html('');
        $('#error_obj').fadeOut('fast');
        $(day_prefix + o_id).addClass('daySelect');
        $('#ufvalid input, #ufvalid textarea').removeClass('error-input');
        $('div#step_2').slideUp('fast');
        selected[index] = o_id;
        index++;
    }
    return true;
}

function book_color(erase,st)
{
    var iteration = 1;
    var calc = 0;
    
    for ( var id = 0; id < selected.length; id++ )
    {
        if ( erase === true )
            $(day_prefix + selected[id]).removeClass('daySelect');
        else
            $(day_prefix + selected[id]).addClass('daySelect');
        
        if( first == 1 )
        {   
            /* listing rate range */   
            for( var idR in usRange )
            {
                if( selected[id] >= usRange[idR][0] && selected[id] <= usRange[idR][1] )
                {
                    if( iteration != selected.length )
                    {
                        total_cost += parseInt( usRange[idR][2].split('|')[0] );
                        calc++;
                    }
                }
            }
        }        
        iteration++;
    }
    
    if( first == 1 )
        total_cost += ( ( selected.length - 1 ) - calc) * defPrice;
    
    if ( erase === true )
    {
        selected = [];
        index = 0;
        total_cost = 0
    }
    if ( st === true )
    {
        if ( selected[0] != '' )
            $(day_prefix + selected[0]).addClass('daySelect');
    }
}

function paintUserBook()
{
    for (id in usBook)
    {
        var pr = '';
        var status_b = usBook[id][0];
        var st_b = usBook[id][1];
        var en_b = usBook[id][2];
        var tdays=Math.abs(eval(en_b-st_b))/(60*60*24);
		tdays = Math.floor(tdays);
        var tdate = st_b;

        for (var i=0; i<=tdays; i++)
        {
            if(i != 0)
                tdate = eval(tdate) + 86400;
                
            if(status_b == 'process')
                pr = 'pr';
            else
                pr = '';
                
            if(i == 0)
            {
                $(day_prefix + tdate).addClass(pr+'checkin');
                if( $(day_prefix + tdate).hasClass(pr+'checkout') )
                {
                    $(day_prefix + tdate).removeClass().addClass(pr+'booked');
                }
                else if( $(day_prefix + tdate).hasClass('checkout') )
                {
                    $(day_prefix + tdate).removeClass().addClass('bprcheckin');
                }
            }
            else if (i == tdays)
            {
                $(day_prefix + tdate).addClass(pr+'checkout');
                if( $(day_prefix + tdate).hasClass(pr+'checkin') )
                {
                    $(day_prefix + tdate).removeClass().addClass(pr+'booked');
                }
                else if( $(day_prefix + tdate).hasClass('checkin') )
                {
                    $(day_prefix + tdate).removeClass().addClass('bprcheckout');
                }
            }
            else
            {
                $(day_prefix + tdate).removeClass().addClass(pr+'booked');            
            }
        }
    }
}

function book_animate(anchor)
{
    var yScroll;
    if (self.pageYOffset)
        yScroll = self.pageYOffset;
    else if (document.documentElement && document.documentElement.scrollTop) 
        yScroll = document.documentElement.scrollTop;// Explorer 6 Strict
    else if (document.body)
        yScroll = document.body.scrollTop;// all other Explorers
    
    var pos = $('#'+anchor).position();

    $('html, body').stop();

    if ( yScroll > pos.top )
    {
    	if ( anchor == 'error_message' )
    	{
        	$('html, body').animate({scrollTop:pos.top-40}, 'slow');
    	}
    	else
    	{
    		$('html, body').animate({scrollTop:pos.top}, 'slow');
    	}
    }
}

function cangeDates(mode)
{
	booking_mask('set');
	$('#calendar_load').stop().animate({opacity: 0.4});
    xajax_getDates(listing_id, mode);    
}

var booking_mask = function(mode){
	
	var booking_calendar_width = $('#booking_calendar').width();
	var booking_calendar_height = $('#calendar_map').height();
	
	if ( mode == 'set' )
		$('#calendar_load').css({height: booking_calendar_height, width: booking_calendar_width, marginTop: -booking_calendar_height});
	else if ( mode == 'reset' )
		$('#calendar_load').css({height: 0, width: 0});
}

