/* Login Page JS */

/* initial page loader */
jQuery(document).ready(function()
{
	eventSetting2();		// load user events
});





/* user event settings */
function eventSetting2()
{
	/* === username input field event === */
	jQuery("input[name=username]").bind("load focus keyup mousedown", labelfocus).bind("blur", labelblur);
	
	/* === password input field event === */
	jQuery("input[name=password]").bind("load focus keyup mousedown", labelfocus).bind("blur", labelblur);
	
	/* === submit button event === */
	jQuery("img.loginbtn").bind("click", login);	// rollover, click on submit button
	
	jQuery(":input").bind("keypress", function(event)
	{
		if (event.keyCode == 13)	// enter key
		{
			var usr = jQuery("input[name=username]").val().length;
			var pwd = jQuery("input[name=password]").val().length;
			
			if ((usr > 0) && (pwd > 0))
				login();
		}
	});
}





/* on focus label for hint */
function labelfocus()
{
	var label = jQuery(this).parent().prev();	// login label element
	
	// input field empty
	if (jQuery(this).val().length < 1)
	{
		jQuery(this).css({ border : "1px groove #dedede", background : "#ccffff" });		// change border
	}
	else
	{
		jQuery(this).css({ border : "1px groove #dedede", background : "#ccffff" });		// change border
	}
}





/* on blur label for hint */
function labelblur()
{
	var label = jQuery(this).parent().prev();	// login label element
	
	// input field empty
	if (jQuery(this).val().length < 1)
	{
		jQuery(this).css({ border : "1px groove #000000", background : "transparent" });	// unset border
	}
	else
	{
		jQuery(this).css({ border : "1px groove #dedede", background : "#ccffff" });		// change border
	}
}





/* when login do what */
function login()
{
	var name	= jQuery("input[name=username]");		// username
	var pwd		= jQuery("input[name=password]");		// psssword
	var salt	= jQuery("input[name=salt]");			// salt
	var check	= jQuery("input[name=remember]");		// remember username
	var rem		= (check.is(":checked")) ? 1 : 0;
	
	/* === form validation === */
	function validate()
	{
		var err = 0;
		
		// username empty
		if (name.val().length < 1)
		{
			name.css("border", "3px groove #ff0000");
			err++;
		}
		
		// password empty
		if (pwd.val().length < 1)
		{
			pwd.css("border", "3px groove #ff0000");
			err++;
		}
		
		// got error
		if (err > 0)
		{
			jQuery("#error").show().text("Please filled in the required field(s).");
			return false;
		}
		return true;
	}
	
	// reset all form fields
	function clear()
	{
		name.css({ border : "1px groove #000000", background : "transparent" }).val("");		// username
		pwd.css({ border : "1px groove #000000", background : "transparent" }).val("");		// password
		jQuery("label.login").show().css("color", "#000000");										// label hint show
	}
	
	/* Align Loading Screen */

	function alignLoader()
	{
		jQuery("#loading").stop(false, true).fadeIn("normal");
		
		var winsize = {	h:jQuery("#loading").height(), w:jQuery("#loading").width() };	// browser size
		var size	= { h:jQuery("#loader").height(), w:jQuery("#loader").width() };			// loader size
		
		jQuery("#loader").css({ "left":((winsize.w - size.w) / 2) +"px", "top":((winsize.h - size.h) / 2) +"px"});
	}

	// validate pass
	if (validate())
	{
		if (navigator.cookieEnabled == 0)	// cookie not enabled
		{
			// prompt error
			jQuery("#error").show().text("Please enable cookie for login.");
			repaint();
			return;
		}
		
		// authenication protocol
		pwd.val( jQuery.fn.sha1hash(pwd.val()) );
		pwd.val( jQuery.fn.sha1hash(pwd.val().substr(0, 20) + salt.val() + pwd.val().substr(19, 20)) );
		
		/* === login === */
		jQuery.ajax(
		{
			type		:	"post",							// post method
			async		:	false,							// must receive data before process end
			url			:	"ajax/login.php",				// send url
			data		:	{								// send parameters
								"name"	:	name.val(),
								"pwd"	:	pwd.val(),
								"rem"	:	rem
							},
			datatype	:	"text",							// receiving type
			beforeSend	:	function()						// before send function
			{
				clear();								// reset form fields
				alignLoader();
			},
			error		:	function()						// error function
			{
				jQuery("#error").show().text("Login Failed!");	// prompt login failed
				jQuery("#loading").stop(false, true).hide();	// hide loading screen
			},
			success		:	function(text)					// success function
			{
				// verification successful
				if (text == "true")
				{
					jQuery("form[name=loginform]").submit();	// redirect to login home
				}
				else
				{
					jQuery("input[name=salt]").val(text);			// set new salt value
					jQuery("#error").show().text("Login Failed!");	// prompt login failed
					jQuery("#loading").stop(false, true).hide();	// hide loading screen
				}
			}
		});
	}
	repaint();
}