﻿var requestData = "";

window.addEvent('domready', function() {
	    request.command = "VehicleTypes";
	    request.send({ 'data': "c=VehicleTypes" + "&time=" + new Date() });	
});

function RetrieveVehicles(vehicleType)
{
   request.command = "Vehicles";
   requestData = vehicleType;
   request.send({ 'data': "c=Vehicles" + "&" +requestData + "&time=" + new Date() });	 
}

function RetrieveRates(vehicle)
{
   request.command = "Rates";
   requestData = vehicle;
   request.send({ 'data': "c=Rates" + "&" +requestData + "&time=" + new Date() });	 
}


var request = new Request.JSON({
	url: "Requests/ReservationRequest.aspx",
	autoCancel: true,
	method: 'get',
	headers: { "Content-type": "application/json" },
	secure: true
});

request.addEvent('onComplete', function(jsonObject, responseText) {
	switch(this.command) {
	    case "Reservation":
	    	$('FormRequest').setStyle('display', responseText != "ok" ? 'block' : 'none');	
	        $('Waiting').setStyle('display', 'none');
	        $('Success').setStyle('display', responseText == "ok" ? 'block' : 'none');
	        $('Failed').setStyle('display', responseText == "ok" ? 'none' : 'block');	
	        break;
	    case "VehicleTypes": 
	            $("VehicleTypeContainer").set('html', responseText);
	            break;
	    case "Vehicles": 
	            if (Browser.Engine.trident) {
	                $("Vehicle").outerHTML = '<select id="Vehicle" name="Vehicle" onchange="RetrieveRates(this.value)">' + responseText + '</select>';
	            } else {
	                $("Vehicle").set('html', responseText);
	            }
	             $("Rate").empty();
	            break;
	   case "Rates": 
	            if (Browser.Engine.trident) {
	                $("Rate").outerHTML = '<select id="Rate" name="Rate">' + responseText + '</select>';
	            } else {
	                $("Rate").set('html', responseText);
	            }
	            break;
	    default:break; 
	}
});

var validationIds = new Array(
		"Title",
		"FirstName",
		"LastName",
		"Email",
		"Fax",
		"Phone",
		"Country",
		"Vehicle",
		"VehicleType",
		"Rate",
		"PickupTime",
		"PickupDate",
		"DropoffDate",
		"DropoffTime",
		"RequestType",
		"Query"
    );

var validationPatterns = new Array(
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		""
    );    
    
var fieldExceptions = /Title|Fax|Country|Query/;   

function SendRequest() {

	var invalidFields = 0;
	requestData = "";

	validationIds.each(function(item, index, array) {

		var velement = $(item);
		
		// alert(" " + velement + " " + velement.id + " " + velement.get('id'));

		if (velement && !item.match(fieldExceptions)) {

			var valid = false;
			var textbox = velement.get('tag').match(/input|textarea/);
			valid = textbox ? (velement.value != '') : (velement.value != "" && velement.value > -1);

			if (valid && validationPatterns[index]) {
				valid = velement.value.match(validationPatterns[index]);
			}

			invalidFields += valid ? 0 : 1;

			var label = velement.getParent().getElement('label');
			if (label) {
				label.setStyle('color', valid ? '#ccc' : '#cc0000');
			}

		}

		if (velement) {
			requestData += "&" + item + "=" + velement.value;
		}

	});

	try {
		requestData += "&VehicleType=" + $$('input[name=VehicleType]').filter(function(item, index) { return item.checked })[0].get('value');
	} catch (ex) {

	}

	$('Invalid').setStyle('display', invalidFields > 0 ? 'block' : 'none');

	if (invalidFields == 0) {	
		$('Waiting').setStyle('display', 'block');
		$('FormRequest').setStyle('display', 'none');
		request.command = "Reservation";
		request.send({ 'data': "c=Reservation" + requestData + "&time=" + new Date() });		
	} else {
	
	}



}

