	var myFormValidator;
	var inlineValidator;
	
	window.addEvent('domready', function(){
		
		//Form Validation
		FormValidator.add('postal', {
		  errorMsg: "Please enter postal code in format 'X#X #X#'",
		  test: function(element) {
			if (element.get('value').length == 6 && element.get('value').search(/^[a-zA-Z]\d[a-zA-Z]\d[a-zA-Z]\d$/) != -1) return true;
			else if (element.get('value').length == 7 && element.get('value').search(/^[a-zA-Z]\d[a-zA-Z](-|\s)\d[a-zA-Z]\d$/) != -1) return true;
			else return false;
		  }
		});
		FormValidator.add('phone', {
		  errorMsg: "Please enter a 10 digit phone number",
		  test: function(element) {
			var stripped = element.get('value').replace(/[\(\)\.\-\ ]/g, '');    

			if (element.get('value') == "") {
		        return false;
		    } else if (isNaN(parseInt(stripped))) {
		        return false;
		    } else if (!(stripped.length == 10)) {
		        return false;
		    } else {
				return true;
			}
		  }
		});
		
		myFormValidator = new FormValidator(document.getElementById('myForm'));
		inlineValidator = new FormValidator.Inline('myForm');
		
		// Variable that holds the effects.
		//var fx = new Fx.Tween( 'loading' );
		//fx.set('opacity', 0);
		// Hides the loading div, and shows the el div for
		// a period of four seconds.
		/*var showHide = function( el ){
			fx.set('opacity', 0);
			fx.start(0,1);
			(function(){ fx.start(1,0); }).delay( 4000 );
		}*/
		
		
		// Listen for click events on the submit button.
		document.getElementById('myForm').addEvent( 'submit', function(e){
			// Stops the submission of the form.
			e.stop();
			
			//fx.start('opacity', 0,1 );
			document.getElementById('loading').style.display = "block";
			this.set('send', {
				onComplete: function(response) {
					if(response.match("successfully")){
						document.getElementById('fail').style.display = "none";
						document.getElementById('success').style.display = "block";
						document.getElementById('formContainer').style.display = "none";
						document.getElementById('services').style.display = "none";
					}else{
						document.getElementById('fail').style.display = "block";
						document.getElementById('success').style.display = "none";
					}
				}
			});
			
			//Validate and Send the form.
			if (myFormValidator.validate()) {
					this.send();
			}
			document.getElementById('loading').style.display = "none";
		});//form addEvent
	});//window addEvent
	
	window.addEvent('load', function() {
		new DatePicker('.date_time', { pickerClass: 'datepicker_jqui', timePicker: true, format: 'd-m-Y @ H:i', positionOffset: {x:0, y:0}});
	});
	
	var service_type = "";
	var action = "";
	function selectServiceBooking(type){
		service_type = type;
		//document.getElementById('options').style.display = "block";
		document.getElementById('fail').style.display = "none";
		//document.getElementById('formContainer').style.display = "none";
		
		myFormValidator.reset();
		inlineValidator.reset();
		clearFields();
		
		showForm('booking');
		
		/*if(type == "bin"){
			document.getElementById('estimate_link').style.display = "block";
			document.getElementById('booking_link').style.display = "block";
		}else if(type == "hand"){
			document.getElementById('estimate_link').style.display = "block";
			document.getElementById('booking_link').style.display = "none";
		}*/
	}
	function selectServiceEstimate(type){
		service_type = type;
		//document.getElementById('options').style.display = "block";
		document.getElementById('fail').style.display = "none";
		//document.getElementById('formContainer').style.display = "none";
		
		myFormValidator.reset();
		inlineValidator.reset();
		clearFields();
		
		showForm('estimate');
		
		/*if(type == "bin"){
			document.getElementById('estimate_link').style.display = "block";
			document.getElementById('booking_link').style.display = "block";
		}else if(type == "hand"){
			document.getElementById('estimate_link').style.display = "block";
			document.getElementById('booking_link').style.display = "none";
		}*/
	}
	
	function clearFields(){
		document.getElementById('firstname').value = "";
		document.getElementById('lastname').value = "";
		document.getElementById('company').value = "";
		document.getElementById('address').value = "";
		document.getElementById('city').value = "";
		document.getElementById('postal').value = "";
		document.getElementById('phone').value = "";
		document.getElementById('email').value = "";
		document.getElementById('instructions').value = "";
	}
	
	function showForm(type){
		action = type;
		
		document.getElementById('formContainer').style.display = "block";
		document.getElementById('onsite').style.display = "none";
		document.getElementById('date').style.display = "none";
		
		if(service_type == "hand" && action == "estimate"){
			document.getElementById('onsite').style.display = "none";
			document.getElementById('date').style.display = "none";
			document.getElementById('form_type').value = "hand_loading_estimate";
			document.getElementById('formHeader').innerHTML = "Junk Removal <span>Estimate</span>";
		}
		else if(service_type == "hand" && action == "booking"){
			document.getElementById('onsite').style.display = "";
			document.getElementById('date').style.display = "";
			document.getElementById('form_type').value = "hand_loading_booking";
			document.getElementById('formHeader').innerHTML = "Junk Removal <span>Booking</span>";
		}
		else if(service_type == "bin" && action == "estimate"){
			//document.getElementById('form_container').style.display = "block";
			document.getElementById('onsite').style.display = "none";
			document.getElementById('date').style.display = "none";
			document.getElementById('form_type').value = "bin_rental_estimate";
			document.getElementById('formHeader').innerHTML = "Dumpster Rental <span>Estimate</span>";
		}
		else if(service_type == "bin" && action == "booking"){
			document.getElementById('onsite').style.display = '';
			document.getElementById('date').style.display = '';
			document.getElementById('form_type').value = "bin_rental_booking";
			document.getElementById('formHeader').innerHTML = "Dumpster Rental <span>Booking</span>";
		}
		
	}
	