// JavaScript Document

var addSelectOption = function(selectObj,myValue,myText) {
	// Add a new option to a given select object
	selectObj.options[selectObj.options.length] = new Option(myText,myValue);
}

var initArkianeForm = function() {
	Event.observe('arkiane_date','change',updateArkianeDuration);
	Event.observe('arkiane_date','keyup',updateArkianeDuration);
	Event.observe('arkiane_duree','change',updateArkianeForm);
	Event.observe('arkiane_duree','keyup',updateArkianeForm);
	Event.observe('arkiane_nbrpersonnes','change',updateArkianeForm);
	Event.observe('arkiane_nbrpersonnes','keyup',updateArkianeForm);
	Event.observe('arkiane_type','change',updateArkianeStanding);
	Event.observe('arkiane_type','keyup',updateArkianeStanding);
	Event.observe('reservation_arkiane','submit',checkArkianeForm);
}

var checkArkianeForm = function(evt) {
	if(!$('arkiane_ok_button').disabled) {
		if($('arkiane_standing').options.length == 0) {
			alert(msg_arkiane_no_results);
			evt.stop();
		}
		else {
			var formIsValid = true;
			if(!$('arkiane_date').getValue()) formIsValid = false;
			if(!$('arkiane_duree').getValue()) formIsValid = false;
			//if(!$('arkiane_nbrpersonnes')) formIsValid = false;
			//if(!$('arkiane_type').getValue()) formIsValid = false;
			if($('arkiane_standing').getValue() == null) formIsValid = false;
			if(!formIsValid) {
				alert(msg_arkiane_form_error);
				evt.stop();
			}
			else {
				$('arkiane_ok_button').disable(); // Prevent multiple form submit
				$('arkiane_ok_button').hide();
				$('arkiane_searching_results').show();
				document.fire("livebox:adjustpos");
			}
		}
	}
	else {
		evt.stop();
	}
}

var setArkianeFormVisibility = function(event, state) {
	if (!event) event = window.event;
	var relatedTarget = event.relatedTarget || (state ? event.fromElement : event.toElement);
	relatedTarget = $(relatedTarget);
	if(relatedTarget) {
		if (relatedTarget != this && !relatedTarget.descendantOf(this)) {
			$$('.reserver select').each(function(selObj) { selObj.setStyle({'visibility':(state ? 'hidden' : '')}); });
		}
	}
}

var updateArkianeStanding = function(evt) {
	var currentSelectedValue = $('arkiane_standing').getValue(); // Store the current selected value
	var completeHandler = function(transport) {
		$('arkiane_standing_loading').hide();
	}
	var successHandler = function(transport) {
		var json = transport.responseText.evalJSON(true);
		var arkiane_standing_select = $("arkiane_standing");
		var currentSelectedIndex = 0; // Default selected index
		if(json.length) {
			json.each(function(obj, index) { 
				addSelectOption(arkiane_standing_select, obj.crit_val, obj.crit_lib+" ("+obj.crit_nb+")"); 
				if(typeof currentSelectedValue != "undefined" && obj.crit_val == currentSelectedValue) currentSelectedIndex = index;
			}); // Add each option based on JSON object values and check for selected index
			$('arkiane_standing').enable();
			$('arkina_no_results').hide();
		}
		else {
			$('arkiane_standing').disable();
			$('arkina_no_results').show();
		}
		arkiane_standing_select.selectedIndex = currentSelectedIndex; // Revert the selected index
		('arkiane_standing_loading').hide();
	}	
	$('arkiane_standing').disable();
	$('arkiane_standing').options.length = 0; // Delete previous options
	$('arkiane_standing_loading').show();
	document.fire("livebox:adjustpos");
	new Ajax.Request(url_get_arkiane_critc, { parameters:{'arkiane_date':$('arkiane_date').getValue(), 'arkiane_duree':$('arkiane_duree').getValue(), 'arkiane_nbrpersonnes':$('arkiane_nbrpersonnes').getValue(), 'arkiane_type':$('arkiane_type').getValue(), 'lang':lang}, onSuccess:successHandler, onComplete:completeHandler });
}

var updateArkianeDuration = function(evt) {
	var currentSelectedValue = $('arkiane_duree').getValue(); // Store the current selected value
	var completeHandler = function(transport) {
		
	}
	var successHandler = function(transport) {	
		var json = transport.responseText.evalJSON(true);
		var arkiane_duration_select = $("arkiane_duree");
		var currentSelectedIndex = 0; // Default selected index
		if(json.length) {
			//console.log(json);
			json.each(function(obj, index) { 
				addSelectOption(arkiane_duration_select, obj.key, obj.value); 
				if(typeof currentSelectedValue != "undefined" && obj.key == currentSelectedValue) currentSelectedIndex = index+1;
			}); // Add each option based on JSON object values and check for selected index
		}
		arkiane_duration_select.selectedIndex = currentSelectedIndex; // Revert the selected index
		updateArkianeForm();
	}
	if($('arkiane_date').getValue() != arkiane_date_val)  {
		changed = true;
		arkiane_date_val = $('arkiane_date').getValue();
	}
	if($('arkiane_date').getValue() && changed) {
		$('arkiane_duree').options.length = 1; // Delete previous options except first
		$('arkiane_type').disable();
		$('arkiane_type').options.length = 1; // Delete previous options except first
		$('arkiane_standing').disable();
		$('arkiane_standing').options.length = 0; // Delete previous options
		arkiane_duree_val = "";
		//alert(url_get_arkiane_durations+" ===> "+$('arkiane_date').getValue()+" ===> TESTS");
		new Ajax.Request(url_get_arkiane_durations, { parameters:{'arkiane_date':$('arkiane_date').getValue(), 'lang':lang}, onSuccess:successHandler, onComplete:completeHandler });
	}

}

var updateArkianeForm = function(evt) {
	var currentSelectedValue = $('arkiane_type').getValue(); // Store the current selected value
	var completeHandler = function(transport) {
		$('arkiane_type_loading').hide();
	}
	var successHandler = function(transport) {
		var json = transport.responseText.evalJSON(true);
		var arkiane_type_select = $("arkiane_type");
		var currentSelectedIndex = 0; // Default selected index
		arkiane_type_select.options.length = 1; // Delete previous options except first
		if(json.length) {
			json.each(function(obj, index) { 
				addSelectOption(arkiane_type_select, obj.crit_val, obj.crit_lib+" ("+obj.crit_nb+")"); 
				if(typeof currentSelectedValue != "undefined" && obj.crit_val == currentSelectedValue) currentSelectedIndex = index+1;
			}); // Add each option based on JSON object values and check for selected index
			$('arkiane_type').enable();
			$('arkina_no_results').hide();
		}
		else {
			$('arkiane_type').disable();
			$('arkina_no_results').show();
		}
		arkiane_type_select.selectedIndex = currentSelectedIndex; // Revert the selected index
		$('arkiane_type_loading').hide();
		updateArkianeStanding();
	}
	//alert("updateArkianeForm");
	// Check fields integrity
	//if(!$('arkiane_duree').getValue().match(/^\d+$/)) $('arkiane_duree').value = "";
	//if(!$('arkiane_nbrpersonnes').getValue().match(/^\d+$/)) $('arkiane_nbrpersonnes').value = "";
	var changed = false;
	if($('arkiane_date').getValue() != arkiane_date_val)  {
		changed = true;
		arkiane_date_val = $('arkiane_date').getValue();
	}
	if($('arkiane_duree').getValue() != arkiane_duree_val)  {
		changed = true;
		arkiane_duree_val = $('arkiane_duree').getValue();
	}
	if($('arkiane_nbrpersonnes').getValue() != arkiane_nbrpersonnes_val)  {
		changed = true;
		arkiane_nbrpersonnes_val = $('arkiane_nbrpersonnes').getValue();
	}
	if($('arkiane_duree').getValue() && changed) {
		$('arkiane_type').disable();
		$('arkiane_type').options.length = 1; // Delete previous options except first
		$('arkiane_standing').disable();
		$('arkiane_standing').options.length = 0; // Delete previous options
		$('arkiane_type_loading').show();
		document.fire("livebox:adjustpos");
		new Ajax.Request(url_get_arkiane_lotc, { parameters:{'arkiane_date':$('arkiane_date').getValue(), 'arkiane_duree':$('arkiane_duree').getValue(), 'arkiane_nbrpersonnes':$('arkiane_nbrpersonnes').getValue(), 'lang':lang}, onSuccess:successHandler, onComplete:completeHandler });
	}
}
document.observe("dom:loaded",initArkianeForm);
