//Calendar starts from this month;
var currentMonth = 0;
//Count of months to display
var showMonths = 3;
var calendar = false;
var calendarCount;
var currentRequest = null;
var _dateSet = false;
var _imagePath = '/scripts/hal/img/';

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++){
		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 >= (12-showMonths)) return;
	showMonth(currentMonth+1);
}
function showPrev(){
	if (currentMonth <= 0 ) 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');// Toll Free Number 866-456-4252.');
		return false;
	}
	if ( $('selStart') )	$('selStart').value = selStart;
	if ( $('selEnd') ) 	$('selEnd').value = selEnd;
	if ( $('totalRent') )  $('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 ;
	if ( !selEnd ){
	    nights = Math.max(parseInt($('book_nights').value, 10), minNights);
	    selEnd = selStart + nights - 1;
	}  else{
	    nights = selEnd - selStart + 1;

    	if (selStart > selEnd)
    	{
    		checkIn = selEnd;
    		nights = selStart - selEnd + 1;
    		if ( nights > maxNights ){
    		    nights = maxNights;
    		} else if ( nights < minNights ){
    		    nights = minNights;
    		}
    		selEnd = selStart - nights + 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;
	}

	showMonth(Math.floor(newSelStart/30)-1);
	getTotalRent();
	updateDropdown();
}

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

	$('book_nights').value = nights;
	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;
	}

	showMonth(Math.floor(newSelStart/30)-1);
	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()
{
	$('next_book_button').addClassName('inactive');
	if (currentRequest) currentRequest.abort();
	if (($("calendar").getElementsByClassName("booked_selected").length >1) || ($("calendar").getElementsByClassName("past_selected").length >0)) {
		$('total_rent').innerHTML = '<span style="color:red;font-size:12px;">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 = '';
		}
		$('next_book_button').removeClassName('inactive');
		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;font-size:12px;">Min Stay is '+minNights+' Nights</span>';
		$('next_book_button').removeClassName('inactive');
		return;
	}

	var params =
	{
		action: 'get_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();
	$('total_rent').innerHTML = '<img src="/img/progress.gif" width="16" height="16" alt="Loading" style="border:none" /><br clear="all" />';

	currentRequest = new Ajax.Request(ajaxServlet, {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 getTotalRent()
{
		if (currentRequest) currentRequest.abort();

		if (($("calendar").getElementsByClassName("booked_selected").length >0) || ($("calendar").getElementsByClassName("past_selected").length >0)) {
				$('total_rent').innerHTML = '<span style="color: red">Invalid selection</span>';
				return;
		}

		var form_nights = $("calendar").getElementsByClassName("avail_selected").length-1;

		var minNights = 3;
		var maxNights = 28;
	var nights = parseInt($("book_nights").value,10);

	if ( nights < minNights) {
		$('total_rent').innerHTML = '<span style="color: red">Min Stay is '+minNights+' Nights</span>';
		return;
	}
	if ( nights > maxNights ){
				$('total_rent').innerHTML = '<span style="color: red">Max Stay is '+maxNights+' Nights</span>';
				return;
	}

	resetTotalRent();

		var params =
		{
				action:'get_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);

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

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

/*
function onGetTotalRent(req)
{
	$('next_book_button').removeClassName('inactive');
	if ($('total_rent')) {
		var responseJS = req.responseText.evalJSON();
		if (!responseJS.success) {
			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 = responseJS.text;
		}  else {
			//alert(req.responseText);
			$('total_rent').innerHTML = '$'+responseJS.text;
			$('total').value = responseJS.text;
			//$('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')) {
				$('villa-details-totalRent').value = totalRent;
				$('villa-details-total').value = totalRent;
				$('villa-details-date').style.display = 'block';
				dates = $('book_check_in').value.split('/');
				formatedDate = monthNames[dates[0]]+' '+dates[1]+', '+dates[2];
				$('villa-details-date').innerHTML = '<b>Arrival date:</b>' + formatedDate;
//				$('villa-details-cost').innerHTML = '<b>Price:</b>$'+totalRent;

				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;
			}
		}
	}
}
*/

function onGetTotalRent(req)
{
		if (!req.responseText)
		{
				$('total_rent').innerHTML = '<span style="color: red">Invalid selection</span>';
		}
		else
		{
		resetTotalRent();

				totalRentISI = req.responseText;

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

				params = $H(params);

				currentRequest = new Ajax.Request('/book.php', {method:'get', parameters: params.toQueryString(), onComplete:onGetTotalRentSpecial});
		}

}

function doBack() {
	var check_in = $('book_check_in').value;
	var nights = $('book_nights').value;
	var f = $('backForm');
	var inp = document.createElement('input');
	inp.setAttribute('type','hidden');
	inp.setAttribute('name','check_in');
	inp.setAttribute('value',check_in);
	f.appendChild(inp);
	inp = document.createElement('input');
	inp.setAttribute('type','hidden');
	inp.setAttribute('name','nights');
	inp.setAttribute('value',nights);
	f.appendChild(inp);
	f.submit();
}

function onGetTotalRentSpecial(req) {
		if (!req.responseText)
		{
				$('total_rent').innerHTML = '<span style="color: red">Invalid selection</span>';
		}
		else
		{
				totalRentSpecial = req.responseText;

		resetTotalRent();

				if (totalRentSpecial > 0) {
						var params =
						{
								action:'get_special_description',
								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);

						currentRequest = new Ajax.Request('/book.php', {method:'get', parameters: params.toQueryString(), onComplete:onGetSpecialDescription});
				} else {
						$('total_rent').innerHTML = '<span style="color: green">$'+totalRentISI+'</span>'
						+ '<a href="javascript:void(0);" onclick="showDetails(this, $F(document.forms.book1.prop_id))" class="href_details">Details</a>';
						$('next_btn').title = 'Next step';
						totalRent = totalRentISI;
				}
		}
}


function onGetSpecialDescription(req) {
	specialDescriptions = '';
	$('total_rent').innerHTML = "Loading...";

	/*$('total_rent').innerHTML = '<span style="color: green"><strike style="color: #000000;">$'+totalRentISI+'</strike> $'+totalRentSpecial+'&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="showDetails(this, $F(document.forms.book1.prop_id))" class="href_details" style="color: green;">Details</a></span>' + specialDescriptions;*/
	$('total_rent').innerHTML = '<span style="color: green"><strike style="color: #000000;">$'+totalRentISI+'</strike> <br/>$'+totalRentSpecial+'&nbsp;&nbsp;&nbsp;<a href="javascript:void(0);" onclick="showDetails(this, $F(document.forms.book1.prop_id))" class="href_details" style="color: green;">Details</a></span>' + specialDescriptions;
	totalRent = totalRentSpecial;
}

var priceDetail;
var priceElem;

function showDetails(element, propId){
	priceElem = element;
	if ($("priceDetail")) {
		closeDetails()
	}
	priceDetail = document.createElement('div');
	priceDetail.id = 'priceDetail';
	priceDetail.innerHTML = '<img src="/images/loading.gif" width="100" height="20" alt="Loading" style="border:none" /><br clear="all" />';
	element.parentNode.appendChild(priceDetail);
	var params =    {
			action:'get_full_rent_samsdev',
			prop_id: propId,
			check_in: $F('book_check_in'),
			nights: $F('book_nights')
	};
	params = $H(params);
	currentRequest = new Ajax.Request('/book.php',	{
		method:'post',
		parameters: params.toQueryString(),
		onComplete: function (originalRequest)
		{
			priceDetail.innerHTML = originalRequest.responseText + '<br clear=all /><a href="javascript:void(0);" onclick="closeDetails()">Close</a>';
		}
	});
}

function closeDetails(){
	$("priceDetail").remove();
}

