// frontend.js
// started: 2010-05-26

// enable ajax
var request = new ajax();
// ajax result
var result;
// effect-fader object for login_container
var loginFader = new fadeDiv("login_container");
// effect-fader object for main_work_container
var dateChooseFader = new fadeDiv("date_choose_container");
// effect-fader object for booking_container
var bookingFader = new fadeDiv("booking_container");
// effect-fader object for goodbye_container
var goodbyeFader = new fadeDiv("goodbye_container");
// create a calendar-object
var calendar = new calendarClass();
// simple count
var count;

function checkVoucher(tempCode) {
        if (tempCode.search(/^\d{4,}\/\d{4,}$/) != -1) {
		return(true);
	}
	return(false);
}

// login for frontend users
function loginFrontend() {
	// check if in both fields are filled correctly
	//if (document.getElementById("code_1_input").value.length >= 4 && document.getElementById("code_2_input").value.length >= 4) {
	// check if field is filled correctly
	if (checkVoucher(document.getElementById("code_1_input").value)) {
		// set a new ajax-action and load the packages
		currentAction = "login_frontend";
		// set parameters for a new ajax-request
		parameters = "action=login_frontend&code_1="+document.getElementById("code_1_input").value;
		//parameters+= "&code_2="+document.getElementById("code_2_input").value;
		// send the new request
		request.makePOSTRequest("php/request.php", parameters, "", "false", "frontend.js");
	} else {
		// not filled correctly
		alert("De ingegeven vouchercode is onjuist");
	}
}

// what happens if the frontenduser has chosen a date
function getOffer() {
	// first get the date from the input-box
	var thedate = document.getElementById("date_input").value;
	// we need to split thedate into it's pieces: day, month, year
	var splitdate = thedate.split("-");
	//alert(splitdate);
	// now we have an array ( splitdate => [0]->Day [1]->Month [2]->Year )
	// look for possible, first (!) bookable package via ajax-request
	currentAction = "get_offer";
	// set parameters for ajax-request
	parameters = "action=get_offer&day="+splitdate[0]+"&month="+splitdate[1]+"&year="+splitdate[2];
	// save the date in hidden fields
	document.getElementById("hidden_day").value = splitdate[0];
	document.getElementById("hidden_month").value = splitdate[1];
	document.getElementById("hidden_year").value = splitdate[2];
	// send the request
	request.makePOSTRequest("php/request.php", parameters, "", "false", "frontend.js");
}

// what happens if the frontenduser wants to book an valid offer?
function bookOffer() {
	// first check, if all fields are filled in
	var mustHave = "Volgende velden op invoer controleren, a.u.b.:\n\n";
	var isFault = false;
	// get gender
	if (document.getElementById("gender_input_male").checked) {
		document.getElementById("gender_input").value = "male";
	}
	if (document.getElementById("gender_input_female").checked) {
		document.getElementById("gender_input").value = "female";
	}
	//alert(document.getElementById("gender_input").value);
	// check if everything is filled in
	if (document.getElementById("gender_input").value == "") {
		mustHave+= "Geslacht\n";
		isFault = true;
	}
	if (document.getElementById("firstname_input").value == "") {
		mustHave+= "Voorletters\n";
		isFault = true;
	}
	if (document.getElementById("lastname_input").value == "") {
		mustHave+= "Achternaam\n";
		isFault = true;
	}
	if (document.getElementById("street_input").value == "") {
		mustHave+= "Straat\n";
		isFault = true;
	}
	if (document.getElementById("postcode_input").value == "") {
		mustHave+= "Postcode\n";
		isFault = true;
	}
	if (document.getElementById("residence_input").value == "") {
		mustHave+= "Woonplaats\n";
		isFault = true;
	}
	if (document.getElementById("telephone_input").value == "") {
		mustHave+= "Telefoon\n";
		isFault = true;
	}
	if (document.getElementById("email_input").value == "") {
		mustHave+= "E-mail\n";
		isFault = true;
	}
	// one or more field(s) is/are missing
	if (isFault) {
		alert(mustHave);
	} else {
		// proceed with booking...
		// set a new ajax-action and load the packages
		currentAction = "book_offer";
		// set parameters for a new ajax-request
		parameters = "action=book_offer&package_id="+document.getElementById("hidden_package_id").value+"&";
		parameters+= "day="+document.getElementById("hidden_day").value+"&";
		parameters+= "month="+document.getElementById("hidden_month").value+"&";
		parameters+= "year="+document.getElementById("hidden_year").value+"&";
		parameters+= "time="+document.getElementById("hidden_time").value+"&";
		parameters+= "gender="+document.getElementById("gender_input").value+"&";
		parameters+= "firstname="+document.getElementById("firstname_input").value+"&";
		parameters+= "lastname="+document.getElementById("lastname_input").value+"&";
		parameters+= "street="+document.getElementById("street_input").value+"&";
		parameters+= "postcode="+document.getElementById("postcode_input").value+"&";
		parameters+= "residence="+document.getElementById("residence_input").value+"&";
		parameters+= "telephone="+document.getElementById("telephone_input").value+"&";
		parameters+= "email="+document.getElementById("email_input").value+"&";
		parameters+= "code_1="+document.getElementById("code_1_input").value+"";
		//parameters+= "code_2="+document.getElementById("code_2_input").value;
		// send the request
		request.makePOSTRequest("php/request.php", parameters, "", "false", "frontend.js");		
	}
}

function backDate() {
		// fade this out
		bookingFader.fadeOut();
		// back to the date-choser
		dateChooseFader.fadeIn();
}

// what happens after a frontend-ajax-request?
// "result" comes from PHP
function ajaxdoneFrontend(result) {
	//alert(result);
	result = jsarray(result);
	//alert(dump(result));
	
	// if currentAction is login
	if (currentAction == "login_frontend") {
		loginFader.fadeOut();
		dateChooseFader.fadeIn();
		// successfull end of action
		return(true);
	}

	// if the frontenduser has chosen a date, we look for an offer
	if (currentAction == "get_offer") {
		// get the values from the hidden fields
		var hDay = document.getElementById("hidden_day").value;
		var hMonth = document.getElementById("hidden_month").value;
		var hYear = document.getElementById("hidden_year").value;
		// first check if the chosen date is in the future
		if (calendar.isFuture(hDay, hMonth, hYear)) {
			// check if there is any offer
			if (result["offer"]["package_id"]) {
				// save the package_id in the hidden field
				document.getElementById("hidden_package_id").value = result["offer"]["package_id"];
				// success, there is an offer, print it to screen
				var tempHTML;
				tempHTML = "De volgende tijd is beschikbaar: <b>";
				tempHTML+= result["offer"]["time_from_hour"]+":";
				tempHTML+= result["offer"]["time_from_minute"]+" tot ";
				tempHTML+= result["offer"]["time_to_hour"]+":";
				tempHTML+= result["offer"]["time_to_minute"]+"</b><br/>";
				tempHTML+= "</b><br />Om deze reservering te voltooien willen wij u vragen onderstaande gegevens in te vullen:";
				document.getElementById("booking_message").innerHTML = tempHTML;
				
				// also in an hidden input field
				document.getElementById("hidden_time").value = result["offer"]["time_from_hour"]+":";
				document.getElementById("hidden_time").value+= result["offer"]["time_from_minute"]+" tot ";
				document.getElementById("hidden_time").value+= result["offer"]["time_to_hour"]+":";
				document.getElementById("hidden_time").value+= result["offer"]["time_to_minute"];
				// enable book-button
				document.getElementById("book_button").disabled = false;
			} else {
				// there was no offer available for the date given
				document.getElementById("booking_message").innerHTML = "Sorry, er is geen offerte beschikbaar voor ";
				document.getElementById("booking_message").innerHTML+= "de door u gekozen datum.";
				// disable book-button
				document.getElementById("book_button").disabled = true;
			}
		} else {
			// this date is invalid, because it's set in the past
			document.getElementById("booking_message").innerHTML = "Sorry, de door u gekozen datum is niet geldig.";
			// disable book-button
			document.getElementById("book_button").disabled = true;
		}
		// at last let the div fade in...
		bookingFader.fadeIn();
		// and fade the dateChooser out...
		dateChooseFader.fadeOut();
		// successfull end of action
		return(true);
	}

	// if the booking has been sent to the server, here we receive the answer
	if (currentAction == "book_offer") {
		// set contents of goodbye-div with tempHTML
		var tempHTML;
		// possible values of result["booking"] are:
		// success, failure_availability, failure_email
		if (result["booking"] == "failure_availability") {
			// frontend-user waited to long to book, offer is not longer available
			// inform frontend-user
			document.getElementById("booking_message").innerHTML = "Sorry, de door u gekozen aankomstdatum is niet langer beschikbaar.";
			// disable book-button
			document.getElementById("book_button").disabled = true;
			// end of action
			return(true);
		} else {
			// booking was successfull.
			// fade out booking-div
			//bookingFader.fadeOut();
			// set output for goodbye_container
			tempHTML = "<table border='0' cellspacing='10' cellpadding='0' bgcolor='#ACB3C2' class='standard_table'>";
			tempHTML+= "<tr><td><p><b>Hartelijk dank voor uw aanvraag.</b><br />U zult spoedig een bevestiging van uw reservering ontvangen op het door u ingevulde e-mailadres.</p></td></tr>";
                        tempHTML+= "</table>";
			// set contents in goodbye_container
			document.getElementById("customer_container").innerHTML = tempHTML;
			// fade in goodbye-div
			goodbyeFader.fadeIn();
			// end of action
			return(true);
		}
		// end of action
		return(true);
	}

	// nothing to do (last action)
	return(false);
}

