//Calendar starts from this month;
var currentMonth = 1;
//Count of months to display
var showMonths = 3;
var calendar = false;
var calendarCount;
var currentRequest = null;
var _dateSet = false;

var selStart = 0;
var selEnd = 0;
var button = false;
var totalRent = 0;
// initail values
var minNights =3;
var maxNights = 28;
var calendarStart;

var lastDay = null;

var monthNames=new Array();
monthNames['01']="January";
monthNames['02']="February";
monthNames['03']="March";
monthNames['04']="April";
monthNames['05']="May";
monthNames['06']="June";
monthNames['07']="July";
monthNames['08']="August";
monthNames['09']="September";
monthNames['10']="October";
monthNames['11']="November";
monthNames['12']="December";

function showMonth(month){
	if (!month && month != 0) {
		month = currentMonth;
	}
	var months =  $('calendar').getElementsByClassName("month_cnt");
	for (cnt = 0; cnt < months.length; cnt++){
		months[cnt].style.display = "none";
		if ((cnt >= month-1) && (cnt<=month+1)) {
			months[cnt].style.display = "block";
		}
		/*
		if (cnt < month) {
			months[cnt].style.display = "none";
		} else if (cnt < month + showMonths) {
			months[cnt].style.display = "block";
		} else {
			months[cnt].style.display = "none";
		}
		*/
	}
	currentMonth = month;
}

function showNext(){
	if (currentMonth >= (24-showMonths)) return;
	showMonth(currentMonth+1);
}
function showPrev(){
	if (currentMonth <= 1 ) return;
	showMonth(currentMonth-1);
}

function clientsideValidate()
{
	if (totalRent == 0)
	{
		alert('Your selection is invalid or pricing is not available for this date range. Please choose another date or call our office.');
		return false;
	}
	$('selStart').value = selStart;
	$('selEnd').value = selEnd;
	$('totalRent').value = totalRent;
	$('book1').submit();
}

/*End of new functions*/


function cMouseDown(cell)
{
	if (!cell.id)
		return false;

	button = true;
	clearSelection();

	selStart = $num(cell.id);
	selEnd = selStart;

	cellSelect(cell.id);
	updateDropdown();
	resetTotalRent();

	return false;
}

function cMouseOver(cell)
{
	if (!button)
		return;

	var newSelEnd = $num(cell.id);
	var newSelEnd1 = newSelEnd;

	if (selStart <= selEnd)
	{
		if (newSelEnd > selEnd)
		{
			for (var i = selEnd; i <= newSelEnd; i++)
			{
				cellSelect('c'+i);
				selEnd = i;
				updateDropdown();

				if (getStayLength() >= maxNights)
					return;

				if (newSelEnd != newSelEnd1)
					return;
			}

		}
		else if (newSelEnd > selStart)
		{
			for (var i = selEnd; i > newSelEnd; i--)
			{
				cellDeselect('c'+i);
				selEnd = i;
				updateDropdown();

				if (newSelEnd != newSelEnd1)
					return;
			}
		}
		else
		{
			for (var i = selEnd; i >= selStart; i--)
			{
				cellDeselect('c'+i);
				selEnd = i;
				updateDropdown();

				if (newSelEnd != newSelEnd1)
					return;
			}

			for (var i = selStart; i >= newSelEnd; i--)
			{
				cellSelect('c'+i);
				selEnd = i;
				updateDropdown();

				if (getStayLength() >= maxNights)
					return;

				if (newSelEnd != newSelEnd1)
					return;
			}

		}
	}
	else
	{
		if (newSelEnd < selEnd)
		{

			for (var i = selEnd; i >= newSelEnd; i--)
			{
				cellSelect('c'+i);
				selEnd = i;
				updateDropdown();

				if (getStayLength() >= maxNights)
					return;

				if (newSelEnd != newSelEnd1)
					return;
			}
		}
		else if (newSelEnd < selStart)
		{
			for (var i = selEnd; i < newSelEnd; i++)
			{

				cellDeselect('c'+i);
				selEnd = i;
				updateDropdown();

				if (newSelEnd != newSelEnd1)
					return;
			}
		}
		else
		{
			for (var i = selEnd; i <= selStart; i++)
			{
				cellDeselect('c'+i);
				selEnd = i;
				updateDropdown();

				if (newSelEnd != newSelEnd1)
					return;
			}

			for (var i = selStart; i <= newSelEnd; i++)
			{
				cellSelect('c'+i);
				selEnd = i;
				updateDropdown()

				if (getStayLength() >= maxNights)
					return;

				if (newSelEnd != newSelEnd1)
					return;
			}
		}

	}
}

function cMouseUp()
{
		if (selEnd < selStart)
		{
				var tmp = selStart;
				selStart = selEnd;
				selEnd = tmp;
		}

		// recalculate selected nights
		var nights = 0;
		var tmp = $('calendar').select('td');
		if (tmp) {
			tmp.each( function(item) {
				if (item.className.match(/_selected$/)) {
					nights++;
				}
			});
		}
		$('book_nights').value = nights;
		updateCalendar();

		button = false;
		return false;
}


function clearSelection()
{
		if (selStart == null || selEnd == null)
				return;

		var i2 = selEnd;
		var i1 = selStart;

		if (selEnd < selStart)
		{
				var i1 = selEnd;
				var i2 = selStart;
		}

		for (var i = i1; i <= i2; i++)
				cellDeselect('c'+i);
}

function cellSelect(id)
{
		var e = $(id);
		if (!e)
				return;

		if (!e.className.match(/_selected$/))
				e.className += '_selected';
}

function cellDeselect(id)
{
		var e = $(id);
		if (!e)
				return;

		e.className = e.className.replace('_selected', '');
}

function updateDropdown()
{
	var checkIn = selStart;
	var nights = selEnd - selStart + 1;
	if (selStart > selEnd)
	{
		checkIn = selEnd;
		nights = selStart - selEnd + 1;
	}
	var dt1 = new Date(calendarStart);
	var dt2 = new Date(dt1.getFullYear(), dt1.getMonth(), dt1.getDate()+checkIn-1, 0, 0, 0, 0);
	var dt3 = new Date(dt2.getFullYear(), dt2.getMonth(), dt2.getDate()+nights, 0, 0, 0, 0);
	$('book_check_in').value = zDate(dt2.getMonth()+1)+'/'+zDate(dt2.getDate())+'/'+dt2.getFullYear();
	$('book_check_out').value = zDate(dt3.getMonth()+1)+'/'+zDate(dt3.getDate())+'/'+dt3.getFullYear();
	$('book_nights').value = nights;
}

function updateCalendar()
{
	var dt1 = new Date(calendarStart);
	var dt2 = new Date($('book_check_in').value);
	var newSelStart = Math.ceil((dt2 - dt1)/86400000)+1;

	var t = $('book_nights').value;
	var nights = $num(t);

	var newSelEnd = newSelStart + nights - 1;
	if ( !lastDay ){
	    lastDay = getLastDay();
    }
	if (newSelEnd > lastDay)
		newSelEnd = lastDay;

	clearSelection();
	selStart = newSelStart;
	for (var i = newSelStart; i <= newSelEnd; i++)
	{
		cellSelect('c'+i);
		selEnd = i;
	}
	var m = Math.floor(newSelStart/30)-1;
	showMonth(m<1?1:m);
	getTotalRent();
	updateDropdown();
}

/*function clientsideValidate()
{
		if (totalRent == 0)
		{
				alert('Your selection is invalid or pricing is not available for this date range. Please choose another date or call our office. Toll Free Number 866-456-4252.');
				return false;
		}
		$('selStart').value = selStart;
		$('selEnd').value = selEnd;
		$('totalRent').value = totalRent;
		return true;
}
*/
function $num(str, arr)
{
		var tmp = str.match(/[0-9]+/g);
		if (!tmp | !tmp.length)
				return null;

		var n = tmp.length;

		res = [];
		for (var i = 0; i < n; i++)
				res[i] = parseInt(tmp[i]);

		if (arr && n > 1)
				return res;

		return res[0];
}

function getLastDay()
{
		for (var i=1; !!$('c'+i); i++){}
		return i-1;
}

function getStayLength()
{
		if (selStart < selEnd)
				return selEnd - selStart + 1;
		else
				return selStart - selEnd + 1;
}

function getTotalRent()
{
	if (currentRequest) currentRequest.abort();
	if (($("calendar").getElementsByClassName("booked_selected").length >1) || ($("calendar").getElementsByClassName("past_selected").length >0)) {
		$('total_rent').innerHTML = '<span style="color: red">Invalid selection</span>';
		if ($('villa-details-date') && $('villa-details-cost')) {
			$('villa-details-date').style.display = 'none';
			$('villa-details-cost').style.display = 'none';
//			$('villa-details-link').style.display = 'none';
			$('villa-details-totalRent').value = '';
			$('villa-details-total').value = '';
		}
		return;
	}
	var form_nights = $("calendar").getElementsByClassName("avail_selected").length-1;

	if ( $("book_nights").value < minNights) {
		if ($('villa-details-date') && $('villa-details-cost')) {
			$('villa-details-date').style.display = 'none';
			$('villa-details-cost').style.display = 'none';
//			$('villa-details-link').style.display = 'none';
			$('villa-details-totalRent').value = '';
			$('villa-details-total').value = '';
		}
		$('total_rent').innerHTML = '<span style="color: red">Minimum Stay is '+minNights+' Nights</span>';
		return;
	}

	var params =
	{
		action: 'get_full_rent',
		prop_id: $F(document.forms.book1.prop_id),
		check_in: $F(document.forms.book1.book_check_in),
		nights: $F(document.forms.book1.book_nights)
	};

	params = $H(params);

	resetTotalRent();

	currentRequest = new Ajax.Request("/priceQuote.php", {method:'post', parameters: params.toQueryString(), onComplete:onGetTotalRent});

	if ($('villa-details-date') && $('villa-details-cost')) {
		$('villa-details-date').style.display = 'block';
		$('villa-details-cost').style.display = 'block';
//		$('villa-details-link').style.display = 'block';
	}
}

function resetTotalRent()
{
        $('total_rent').innerHTML = '<img src="/images/loading.gif" width="100" height="20" alt="Loading" style="border:none" />';
        totalRent = 0;
}


function onGetTotalRent(req)
{
	if ($('total_rent')) {
		if (!req.responseText || req.responseText == '0') {
			if ($('villa-details-date') && $('villa-details-cost')) {
				$('villa-details-date').style.display = 'none';
				$('villa-details-cost').style.display = 'none';
//				$('villa-details-link').style.display = 'none';
				$('villa-details-totalRent').value = '';
				$('villa-details-total').value = '';
			}
			$('total_rent').innerHTML = '<span style="color: red">Invalid selection</span>';
		}  else {
			//alert(req.responseText);
			$('total_rent').innerHTML = req.responseText; // '<span style="color: green">$'+req.responseText+'</span>';
			//$('next_btn').title = 'Next step';
			//totalRent = $F("rent"); 		//totalRent = $num(req.responseText);
			// get from response
			if ($('total')) {
				totalRent = parseFloat($('total').value);
			}
			if ($('villa-details-date') && $('villa-details-cost')) {

				zeroPadding = true;
				$('villa-details-totalRent').value = totalRent;
				$('villa-details-total').value = totalRent;
				$('villa-details-date').style.display = 'block';
				dates = $('book_check_in').value.split('/');
				formatedDate = monthNames[zDate(dates[0])]+' '+dates[1]+', '+dates[2];
				$('villa-details-date').innerHTML = '<b>Arrival date:</b>' + formatedDate;
//				$('villa-details-cost').innerHTML = '<b>Price:</b>$'+totalRent;
				zeroPadding = false;

				if ($('rent').value != $('fullRent').value) {
					$('villa-details-cost').innerHTML = '<b>Price:</b>'+'<strike>$'+$('fullRent').value+'</strike><br /><b>&nbsp;</b><font color="green">$'+$('rent').value+'</font>';
				} else {
					$('villa-details-cost').innerHTML = '<b>Price:</b>$'+$('rent').value;
				}
				$('villa-details-cost').style.display = 'block';
//				$('villa-details-link').style.display = 'block';
				$('villa-details-check_in').value = $('book_check_in').value;
				$('villa-details-nights').value = $('book_nights').value;
			}
		}
	}
}
