
//	JS Document

var frmLogin = function () {
	
	var handleLogin = function() {
		$('.login-form').validate({
			errorElement: 'span', //default input error message container
			errorClass: 'help-block', // default input error message class
			focusInvalid: false, // do not focus the last invalid input
			rules: {
				txtPassword: {
					OneSpecialCharacter: true,
					OneLowercaseLetter: true,
					OneUppercaseLetter: true,
					OneNumber: true
				}
			},
			invalidHandler: function(event, validator) { //display error alert on form submit   
                $('.alert-danger', $('.login-form')).show();
            },
			highlight: function(element) { // hightlight error inputs
                $(element).closest('.form-group').addClass('has-error'); // set error class to the control group
            },
			success: function(label) {
                label.closest('.form-group').removeClass('has-error');
                label.remove();
            },
			errorPlacement: function(error, element) {
                error.insertAfter(element.closest('.input-icon'));
            },
			submitHandler: function(form) {
				login(); // form validation success, call ajax form submit
				return false;
            }
		});
		
		$('.login-form input').keypress(function(e) {
            if (e.which == 13) {
                if ($('.login-form').validate().form()) {
                    $('.login-form').submit(); //form validation success, call ajax form submit
                }
                return false;
            }
        });
	}

	var handleForgetPassword = function () {
		$('.forget-form').validate({
			errorElement: 'span', //default input error message container
			errorClass: 'help-block', // default input error message class
			focusInvalid: false, // do not focus the last invalid input
			ignore: "",
			rules: {
				txtEmail: {
					required: true,
				}
			},
			messages: {
				txtEmail: {
					required: "Username is required."
				}
			},
			invalidHandler: function (event, validator) { //display error alert on form submit
				
			},
			highlight: function (element) { // hightlight error inputs
				$(element)
				.closest('.form-group').addClass('has-error'); // set error class to the control group
			},
			success: function (label) {
				label.closest('.form-group').removeClass('has-error');
				label.remove();
			},
			errorPlacement: function (error, element) {
				error.insertAfter(element.closest('.input-icon'));
			},
			submitHandler: function (form) {
				forgotPassword();
				return false;
			}
		});
		
		jQuery('#forget-password').click(function () {
			jQuery('.login-form').hide();
			jQuery('.forget-form').show();
			jQuery('#txtEmail').focus();
		});
		
		jQuery('#back-btn').click(function () {
			jQuery('.login-form').show();
			jQuery('.forget-form').hide();
			jQuery('#txtUsername').focus();
		});
	}
	
	var forgotPassword = function () {
		
		var url = "../model/frmLogin.php";
		var data = $.param($("#form-2").serializeArray());
		
		ajaxRequest("POST", url, data, function (RecordSet) {
			
			if (RecordSet.ReturnStatus == "Ok") {
				
				showAlertDialog('Forgot Password', RecordSet.ReturnMessage, '', function () {
					window.location.href = 'frmLogin.php';
				});
				
			} else {
				
				showAlertDialog('Info', RecordSet.ReturnMessage, '', function () {
					$("#txtEmail").focus();
				});
			}
		});
	}
	
	var login = function () {
		
		var url = "../model/frmLogin.php";
		var data = $.param($("#form-1").serializeArray());
				
		ajaxRequest("POST", url, data, function (RecordSet) {
			
			if (RecordSet.ReturnStatus == "Ok") {
				
				if (trim(RecordSet.ReturnMessage) == "") {
					window.location.href = 'frmMain.php';
				} else {
					showAlertDialog('Message', RecordSet.ReturnMessage, '', function () {
						window.location.href = 'frmMain.php';
					}, 'Ok');
				}
				
			} else {
				
				showAlertDialog('Info', RecordSet.ReturnMessage, '', function () {
					$("#txtPassword").focus();
				});
			}
		});
	}

	var fxHandler = function (e) {
		
		var $this = $(this);
		var FieldId = $this.attr('id');
		var value = $this.val();
		var keyCode = (e.keyCode ? e.keyCode : e.which);
		
		if (keyCode == 9 || keyCode == 13 || keyCode == 113 || keyCode == 1) {
			
			if (FieldId == "txtUsername" && keyCode == 13 && (validateFields(FieldId))) {
				
				if ($("#txtPassword").val() == "") { $("#txtPassword").focus(); }
				else { $("#form-1").submit(); }
			
			} else if (FieldId == "txtPassword" && keyCode == 13 && (validateFields(FieldId))) {
				
				$("#form-1").submit();
			
			} else if (FieldId == "btn_login" && (keyCode == 13 || keyCode ==1 )) {
				
				$("#form-1").submit();
			}
		}
	}

	var validateFields = function (FieldId) {
		
		var form = $("#"+FieldId);
		form.validate();
		return form.valid();
	}

	return {
	//main function to initiate the module
		init: function () {
			
			handleLogin();
			handleForgetPassword();
			
			$('input').bind('keydown', fxHandler).bind('mouseup', fxHandler);
			$('select').bind('keydown', fxHandler).bind('mouseup', fxHandler);
			$('button').bind('keydown', fxHandler).bind('mouseup', fxHandler);
			
			$("#txtUsername").focus();
		}
	};
	
}();