/* Support Page Javascript */

/* prevent conflict with scriptaculous, prototype */
jQuery.noConflict();





/* Initial Page Loader */
jQuery(document).ready(function()
{
	repaint();			// page refresh
	eventSetting();		// load all user events
});





/* User Event Settings */
function eventSetting()
{
	/* === Browser Resize Refresh === */
	jQuery(window).bind("resize", repaint);
	
	/* === Clear Button Event === */
	jQuery("#clearbtn").bind("click", function()
	{
		// for all select, input, textarea
		jQuery(".main").find(":input").val("");		// clear value
		resetErr();									// hide all error values
	});
	
	/* === Send Button Event === */
	jQuery("#sendbtn").bind("click", sendHelp);
	
	jQuery(".helpbtn").bind("mouseover mouseout", function() 
	{
		var src = jQuery(this).attr("src");
		var dot	= src.lastIndexOf(".");
		var ext	= src.substring(dot, src.length);
		var src = src.substring(0, dot);
		var ovr	= src.lastIndexOf("_over");

		if (src.lastIndexOf("_over") < 0)
			jQuery(this).attr("src", (src + "_over" + ext));
		else
			jQuery(this).attr("src", (src.substring(0, ovr) + ext));
	});
}





/* page refresh */
function repaint()
{
	common.alignContent();				// align content panel and title
}





/* Hide and clear error and status */
function resetErr()
{
	jQuery(".status").hide();							// hide status panel
	jQuery(".main").find(".error").text("").hide();		// hide and clear all error panel
}





/* send out help as email */
function sendHelp()
{
	var name 	= jQuery("input[name=name]");			// name of user
	var contact	= jQuery("input[name=contact]");		// contact no.
	var email	= jQuery("input[name=email]");			// user email
	var desc	= jQuery("textarea[name=description]");	// enquiry
	
	// validate the required fields
	function validate()
	{
		// check for empty field and prompt error
		function isBlank(elemt, errmsg)
		{
			if (elemt.val().length < 1)
				elemt.nextAll(".error").eq(0).text(errmsg +" must be filled.").show();
		}
		
		// validate fields
		resetErr();		// hide all status and error
		isBlank(name, "Contact Name");
		isBlank(contact, "Contact No.");	
		isBlank(email, "Email");
		isBlank(desc, "Enquiry");
		
		// check if all error panel has error prompt to verify error check pass
		for (var a=0; a<jQuery(".main").find(".error").length; a++)
		{
			if (jQuery(".main").find(".error").eq(a).text().length > 0)
				return false;
		}
		return true;
	}
	
	// pass validation
	if (validate())
	{
		jQuery.ajax(
		{
			type		: "POST",								// post method
			async		: false,								//
			url			: "ajax/contactus.php",					// server url fo retrieval
			data		: 
			{
				"name"		:	name.val(),						// query string
				"contact"	:	contact.val(),
				"email"		:	email.val(),
				"content"	:	desc.val()
			},
			beforeSend	: function()							// before message send out
			{
				// fade in loading screen
				common.alignLoader();
			},
			datatype	: "json",								// return type
			success		: function(xhr)							// successful receive data
			{
				var json = (typeof xhr == "object") ? xhr :  eval("(" + xhr + ")");
				
				var nameerr 	= json.name;			// <name>
				var conterr		= json.contact;			// <contact>
				var emailerr	= json.email;			// <email>
				var descerr		= json.content;			// <content>
				var mailerr		= json.mail;			// <mail>
				
				// check xml result and prompt error
				function isValid(elemt, err, errmsg)
				{
					if (err == "invalid")
						elemt.nextAll(".error:first").text(errmsg +" must be a valid one.").show();	
				}
				
				// validate xml result
				isValid(name, nameerr, "Contact Name");
				isValid(contact, conterr, "Contact No.");
				isValid(email, emailerr, "Email");
				isValid(desc, descerr, "Enquiry");
				
				// only if mail is send, status will be show
				if (json.mail != null)
				{
					mailerr = json.mail;	// <mail>
					
					// prompt fail or success if email sent
					if (mailerr == "success")
						jQuery(".status").text("Your enquiry has been sent out successfully. We will response to you shortly.").css({ borderColor : "#00ff00", color : "#00ff00" }).show();
					else
						jQuery(".status").text("Your enquiry has been failed to send out. Please try again.").css({ borderColor : "#ff0000", color : "#ff0000" }).show();
						
					jQuery(".main").find(":input").val("");
				}
				
				// hide loading screen
				jQuery("#loading").stop(false, true).fadeOut("normal");
			}
		});
	}
}