/* === Login Problem Solution Page Javascript === */

/* prevent conflict with scriptaculous, prototype */
jQuery.noConflict();




/* Initial Page Loader */
jQuery(document).ready(function()
{
	eventSetting();						// load all user events
});





/* User Event Settings */
function eventSetting()
{
	/* === All Radio Buttons Event === */
	jQuery(":radio").bind("click", function()	// click event
	{
		// side scrolling div
		var scroller = jQuery(".body").find(".scroller");
		
		switch(jQuery(this).val())	// radio button value
		{
			case "password":
				// set show display and reset scroll
				scroller.eq(0).show().scrollLeft(0);	// forgot password
				scroller.eq(1).hide().scrollLeft(0);	// forgot username
				
				// all input fields in forgot username
				scroller.eq(1).find(":input").val("");	// set them empty
				
				jQuery("input[name=answer2]").parent().parent().prev().find("strong").text("");		// remove security question from forgot username
				resetError();	// clear all error prompt
				break;
				
			case "username":
				// set show display and reset scroll
				scroller.eq(0).hide().scrollLeft(0);	// forgot password
				scroller.eq(1).show().scrollLeft(0);	// forgot username
				
				// all input fields in forgot password
				scroller.eq(0).find(":input").val("");	// set them empty
				
				jQuery("input[name=answer1]").parent().parent().prev().find("strong").text("");		// remove security question from forgot password
				resetError();	// clear all error prompt
				break;
		}
	});
	
	/* === All Next Buttons Event === */
	jQuery(".next").bind("click", function()	// click
	{
		var i = 0;	// interval
		var l = 0;	// current scroll
		
		switch(jQuery(this).parent().parent().parent().find(":input").attr("name"))		// the same table first input field name
		{
			case "username":
			case "email":
				if (retrieveQuestion())		// retrieve security question
				{
					i = jQuery(this).parents("li").next().offset().left - jQuery(this).parents("li").offset().left;		// interval
					l = jQuery(this).parents(".scroller").scrollLeft();		// current scroll
					
					jQuery(this).parents(".scroller").stop(false, true).animate({ "scrollLeft":(i + l) }, 500);	// animate scroll effect
				}
				break;
				
			default:
				validateAnswer();	// verify answer
				break;
		}
	});
	
	/* === All Previous Buttons Event === */
	jQuery(".prev").bind("click", function()	// click
	{
		var i = jQuery(this).parents("li").offset().left - jQuery(this).parents("li").prev().offset().left;		// interval
		var l = jQuery(this).parents(".scroller").scrollLeft();		// current scroll
		
		jQuery(this).parents(".scroller").stop(false, true).animate({ "scrollLeft":(i - l) }, 500);	// animate scroll effect
	});
	
	/* === All input fields Event === */
	jQuery(":input").bind("keypress", function(event)	// keypress
	{
		if (event.keyCode == 9)		// tab key
			return false;	// disable tab
	});
}






/* reset all error prompt */
function resetError()
{
	jQuery(".error").text("").hide();	// clear and hide error
}





/* Retrieve Security Question */
function retrieveQuestion()
{
	var forgot	= jQuery("input[name=forgot]:checked");		// selected forgot radio button
	var name	= jQuery("input[name=username]");			// username
	var email	= jQuery("input[name=email]"); 				// email
	
	resetError();	// clear all error prompt
	
	jQuery.ajax(
	{
		type		: "POST",							// post method
		async		: false,							// asyncronisize
		url			: "ajax/loginprob.php",				// server url fo retrieval
		data		: 
		{
			"type"	:	"getquestion",					// post query
			"name"	:	name.val(),
			"email"	:	email.val()
		},
		datatype	: "text",							// return type
		success		: function(text)
		{
			if (text == "")		// question is empty
			{
				// error prompt
				if (forgot.val() == "password")
					name.parent().find(".error").text("Username is invalid").show();
				else
					email.parent().find(".error").text("Email is invalid").show();
			}
			else
			{
				// error prompt
				if (forgot.val() == "password")
					jQuery(".member").eq(1).find("strong").text(text);
				else
					jQuery(".member").eq(3).find("strong").text(text);
			}
		}
	});
	
	// all error prompt
	for (var a=0; a<jQuery(".body").find(".error").length; a++)
	{
		if (jQuery(".body").find(".error").eq(a).text() != "")
			return false;
	}
	return true;
}





/*  */
function validateAnswer()
{
	var forgot	= jQuery("input[name=forgot]:checked");		// selected forgot radio button
	var name	= jQuery("input[name=username]");			// username
	var email	= jQuery("input[name=email]"); 				// email
	var ans		= (forgot.val() == "password") ? jQuery("input[name=answer1]") : jQuery("input[name=answer2]");		// answer
	
	resetError();	// clear all error prompt
	
	jQuery.ajax(
	{
		type		: "POST",							// post method
		async		: false,							// asyncronisize
		url			: "ajax/loginprob.php",				// server url fo retrieval
		data		: 
		{
			"type"		:	"getanswer",					// post query
			"name"		:	name.val(),
			"email"		:	email.val(),
			"answer"	:	ans.val()
		},
		beforeSend	: function()
		{
			// fade in loading screen
			common.alignLoader();
		},
		datatype	: "text",							// return type
		success		: function(text)
		{
			if (text == "true")		// check successfully
				jQuery("form").submit();	// send form
			else
				ans.parent().find(".error").text("Answer is incorrect.").show();	// incorrect answer
		}
	});
}