/*
Created 09/27/09										
Questions/Comments: jorenrapini@gmail.com						
COPYRIGHT NOTICE		
Copyright 2009 Joren Rapini
*/

$(document).ready(function(){
	// Place ID's of all required fields here.
	required = ["venue", "type_of_event", "name", "nric", "gender", "postalcode", "street1", "street2", "street3", "phone1", "phone2"];
	// If using an ID other than #email or #error then replace it here
	errornotice = $("#error");
	email = $("#email");
	// The text to show up within a field when it is incorrect
	emptyerror = "";
	no = $('#postalcode');
	
	$("#freeform").submit(function(){	
		//Validate required fields
		
		for (i=0;i<required.length;i++) {
			var input = $('#'+required[i]);
			input.next("p.error-message").remove();
			if ((input.val() == "") || (input.val() == emptyerror)) {
				input.addClass("needsfilled");
				input.val(emptyerror);
				$("<p />").text("required").addClass("error-message").insertAfter(input);
				errornotice.fadeIn(750);
			} else {
				input.removeClass("needsfilled");
				input.next("p.error-message").remove();
			}
		}
		
		var container = $($("input[name=gender]").get(1)).parents("li");
		container.find("p.error-message").remove();
		if(!$("input[name=gender]").is(":checked")) {
			var errorObj = $("<p />").text("required").addClass("error-message");
			errorObj.appendTo(container);
		} else {
			container.find("p.error-message").remove();
		}
		
		var check = $("#termcheck");
		check.parents('.terms').prev("p.error-message-alternate").remove();
		if(!$("#termcheck").is(":checked")) {
			var errorObj = $("<p />").text("Please tick on the agreement before proceed.").addClass("error-message-alternate");
			errorObj.insertBefore(check.parents('.terms'));
		} else {
			check.parents('.terms').prev("p.error-message-alternate").remove();
		}
		
		
		// Validate the e-mail.
		email.next("p.error-message").remove();
		if (email.val().length == 0){
			email.addClass("needsfilled");
			email.val(emptyerror);
			$("<p />").text("required").addClass("error-message").insertAfter(email);
		} else {
		if (!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(email.val())) {
			
			$("<p />").text("wrong format").addClass("error-message").insertAfter(email);
		} else {
			email.removeClass("needsfilled");
			email.next("p.error-message").remove();
		}
		}

		no.next("p.error-message").remove();
		if (no.val().length == 0){
			no.addClass("needsfilled");
			no.val(emptyerror);
			$("<p />").text("required").addClass("error-message").insertAfter(no);
		} else {
		if (!/^[-0-9]*$/.test(no.val())) {
			
			$("<p />").text("wrong format").addClass("error-message").insertAfter(no);
		} else {
			no.removeClass("needsfilled");
			no.next("p.error-message").remove();
		}
		}

		//if any inputs on the page have the class 'needsfilled' the form will not submit
		if ($(":input").hasClass("needsfilled") || $("p").hasClass("error-message")) {
			return false;
		} else {
			errornotice.hide();
			return true;
		}
	});
	
	// Clears any fields in the form when the user clicks on them
	$(":input").focus(function(){		
	   if ($(this).hasClass("needsfilled") ) {
			$(this).val("");
			$(this).removeClass("needsfilled");
	   }
	});
});	

