/**
/* ajax modul action 
*/
function ajax(url, params, method, onSuccessFunction)
{
	if (!params) var params = new Object();
	if (!method) var method = 'get';
	
	activateProcessingIcon();
	
	new Ajax.Request(url, {
				 				method:method,
								parameters:params,
								onSuccess: onAjaxSuccess.bind(null, onSuccessFunction)
					 		}
						);
}

function onAjaxSuccess(runFunction, transport)
{
	runFunction(transport);
	deactivateProcessingIcon();
}

var processingIconActive = false;
function activateProcessingIcon()
{
	processingIconActive = true;
	updateProcessingIconPosition();
	$('processing_icon').show();
}

function deactivateProcessingIcon()
{
	processingIconActive = false;
	$('processing_icon').hide();
}

function observeMouseMove()
{
	$('body').observe('mousemove', onMouseMove);	
}

var mouseX;
var mouseY;
function onMouseMove(e)
{
	mouseX = Event.pointerY(e) + 10;
	mouseY = Event.pointerX(e) + 15;
	if(processingIconActive)
	{
		updateProcessingIconPosition();
	}

}
function updateProcessingIconPosition()
{
	$('processing_icon').style.top = mouseX + "px";
	$('processing_icon').style.left = mouseY + "px";
}

/**
 * Custom ajax functions
 */
function bookApartment(submit)
{
	responseReturned = false;
	$('order_calculation_holder').hide();
	$('order_processing').show();
	var params = $('order_form').serialize(true);
	if(submit == true)
	{
		params['order[submit]'] = true;
	}
	ajax("/bookapartment", params, "post", onSuccessBookApartment);
}

function onSuccessBookApartment(transport)
{
	responseReturned = true;
	$('apartment_booking_content').update(transport.responseText);	
	runAutoFunctions();
}

function getCalendar(month, year)
{
	ajax('/availability-calendar/' + month + "/" + year, null, null, onSuccessGetCalendar);
}

function redrawCalendar()
{
	ajax('/availability-calendar', null, null, onSuccessGetCalendar);
}

function getCalendarWithSelection(day1, day2)
{
	var params = new Object;
	params.selectionBegin = day1;
	params.selectionEnd = day2;
	ajax('/availability-calendar-selection', params, null, onSuccessGetCalendar);
}


function onSuccessGetCalendar(transport)
{
	$('availability_calendar').update(transport.responseText);	
	runAutoFunctions();
}

function changeCheckInDays(month)
{
	var day = $F('check_in_day');
	ajax('/get-month-days/' + month + "-" + day, null, null, onSuccesschangeCheckInDays);
}


function changeCheckOutDays(month)
{
	var day = $F('check_out_day');
	ajax('/get-month-days/' + month + "-" + day, null, null, onSuccesschangeCheckOutDays);
}


function onSuccesschangeCheckInDays(transport)
{
	$('check_in_day').update(transport.responseText);	
}

function onSuccesschangeCheckOutDays(transport)
{
	$('check_out_day').update(transport.responseText);	
}


	

