var reservationFolder = "servlets";
var outputDiv = "reservationDiv";
Event.observe(window, 'load', init, false);

function init(){
    
	new Ajax.Request(reservationFolder + "/reservation/get/", {
		method: 'get',
		onSuccess: function(transport) {
			
			if (transport.status == 200) {

				$(outputDiv).update(transport.responseText);
			}
			else {
			
				$(outputDiv).update('<p style="color: red;">Problem communicating with the server! Please repeat the action.</p>');
			}
		}
	});
}

	
function getRegistrationForm() {
		
	new Ajax.Request(reservationFolder + "/reservation/get/", {
		method: 'get',
		onSuccess: function(transport) {
			
			if (transport.status == 200) {

				$(outputDiv).update(transport.responseText);
			}
			else {
			
				$(outputDiv).update('<p style="color: red;">Problem communicating with the server! Please repeat the action.</p>');
			}
		}
	});
}


function $RF(el, radioGroup) { 

    if($(el).type && $(el).type.toLowerCase() == 'radio') { 

        var radioGroup = $(el).name; 

       var el = $(el).form; 

    } else if ($(el).tagName.toLowerCase() != 'form') { 

        return false; 

    } 

 

    var checked = $(el).getInputs('radio', radioGroup).find( 

        function(re) {return re.checked;} 

    ); 

   return (checked) ? $F(checked) : null; 

}  
	
function validateForm(formElem) {
	
	formElem = $(formElem);

	var hotel = $RF(formElem, "radioHotel");
	var name = formElem.down('input[name=name]').getValue();
	var phone = formElem.down('input[name=phone]').getValue();
	var email = formElem.down('input[name=email]').getValue();
	var verificationCode = formElem.down('input[name=verificationCode]').getValue();
	
	var arrivalDate;
	var departureDate;
	var roomType1;
	var roomType2;
	var additionalMeal;
	
	if(hotel != "Palas") {
	
		arrivalDate = $('arrivaldate1').getValue();
		departureDate = $('departuredate1').getValue();
		roomType1 = $('roomtype11').getValue();
		roomType2 = $('roomtype12').getValue();
		additionalMeal = $('additionalmeal1').getValue();
	}
	else {
	
		arrivalDate = $('arrivaldate2').getValue();
		departureDate = $('departuredate2').getValue();
		roomType1 = $('roomtype21').getValue();
		roomType2 = $('roomtype22').getValue();
		additionalMeal = $('additionalmeal2').getValue();
	}
	
	var errMsg = "";
	
	if(hotel.empty() || name.empty() || arrivalDate.empty() || departureDate.empty() || phone.empty() || email.empty() || roomType1.empty() || additionalMeal.empty() ) {
			
		errMsg += '<p>You must enter or select the required fields!(*)</p>\n';
	}
	
	
	phoneFilter = /^\+\d{1,3}\s\d{1,3}\s\d{4,7}$/;
	if(!phone.empty() && !phoneFilter.test(phone)) {
		errMsg += '<p>The phone number you entered is not valid!</p>\n';
	}
	
	var emailFilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if(!email.empty() && !emailFilter.test(email)) {
		errMsg += '<p>The email you entered is not valid!</p>\n';
	}
	
	
	if(verificationCode.empty()) {
	
		errMsg += '<p>You must enter a verification code!</p>\n';
	}
	
	return errMsg;
}

function submitReservation(e) {
	
	formElem = Event.element(e);
	formElem.disabled = true;
	$('submit').disabled = true;

	Event.stop(e);
	
	var responseText = $('responseText');
	
	errMsg = validateForm(formElem);
	
	if(!errMsg.empty()) {
		responseText.update(errMsg);
		formElem.disabled = false;
		$('submit').disabled = false;
		return;
	}
		
	var params = formElem.serialize(true);
			
	new Ajax.Request(reservationFolder + "/reservation/submit/", {
		method: 'post',
		parameters: params,
		onSuccess: function(transport) {
			
			if (transport.status == 200) {
				$(outputDiv).update(transport.responseText);
			}
			else {
				responseText.update('<p style="color: red;">Problem communicating with the server! Please repeat the action.</p>');
			}
			formElem.disabled = false;
			$('submit').disabled = false;
		}
	});
}

function enableHotel(hotel) {

	if(hotel == "Palas") {
		
		$('arrivaldate1').disabled = true;
		$('departuredate1').disabled = true;
		$('roomtype11').disabled = true;
		$('roomtype12').disabled = true;
		$('additionalmeal1').disabled = true;
		
		$('arrivaldate2').disabled = false;
		$('departuredate2').disabled = false;
		$('roomtype21').disabled = false;
		$('roomtype22').disabled = false;
		$('additionalmeal2').disabled = false;
	}
	else {
	
		$('arrivaldate1').disabled = false;
		$('departuredate1').disabled = false;
		$('roomtype11').disabled = false;
		$('roomtype12').disabled = false;
		$('additionalmeal1').disabled = false;
		
		$('arrivaldate2').disabled = true;
		$('departuredate2').disabled = true;
		$('roomtype21').disabled = true;
		$('roomtype22').disabled = true;
		$('additionalmeal2').disabled = true;
	}
}

function selectHotel(e) {

	hotel = Event.element(e).getValue();
	
	enableHotel(hotel);
}
