﻿$(document).ready(function(){
    
    jQuery.validator.addMethod("validUsername", function(value, element, param) {
	    var usernameRe = /^[a-zA-Z_][a-zA-Z_0-9]{3,14}$/;
	    if(usernameRe.test(value)){
		    return true;
	    }
	    return false;
    });
    
    
    $("form:eq(0)").validate({
        errorElement : "span",
	    errorElementClass : "err",
	    errorClass : "inpe",
		rules: {
	        txtSLoginName : {
					required : true,
					rangelength : [4,15]
				},
		    txtSLoginPass : {
		            required : true
		    },
		    txtRUsername : {
					required : true,
					rangelength : [4,15],
					validUsername : true,
					remote: '/checkusername'
				},
			txtFirstName: {
			        required : true,
			        rangelength : [1,20]
			},
			txtLastName : {
			        required : true,
			        rangelength : [1,20]
			},			        
		    txtREmail : {
		            required : true,
		            email : true,
		            remote: '/checkemail'
		    },
			txtRPassword : {
			        required : true
			   },
			txtRConfirmPassword : {
			        required : true,
			        equalTo : "#txtRPassword"
			   },
		},
	    messages: {
		    txtSLoginName : {
		            required : 'Please input your username.',
				    rangelength : "Your username should have 8 characters at least."
		    },
		    txtSLoginPass : { 
			     required : 'Please input your password.'
			},
		    txtRUsername : {
				required : 'Please input your username.',
				rangelength : 'Your username should have 4-15 characters.',
				validUsername :'You username can only contain characters a-z A-z 0-9 _.' ,
				remote : 'Your username has been registered.'
			},
			txtRPassword : { 
			    required :'Please input your password.'
			},
			txtFirstName : {
			    required : 'Please input your first name.',
			    rangelength : 'Your first name should be less than 20 characters.'
			},
			txtLastName : {
			    required : 'Please input your last name.',
			    rangelength : 'Your last name should be less than 20 characters.'
			},
			txtRConfirmPassword : {
			    required: "Please retype your password.",
			    equalTo : "Please input same password again."
			},		    
			txtREmail : {
			    required : 'Please input your email.' ,
			    email : 'Please input a valid email.',
			    remote : 'Your email is taken.'
			}
		}
	});
	
	$.jAutoSubmit($("#txtSLoginName,#txtSLoginPass"), $("#btnSignIn"));
	$("#btnSignIn").click(function(){
        var bRet = $("#txtSLoginName").valid();
        bRet = $("#txtSLoginPass").valid() && bRet;
        if(bRet){
            $.post("/login",{username: $("#txtSLoginName").val(),password: hex_md5($("#txtSLoginPass").val()), IsZendesk : isZendesk , timestamp : timestamp, return_to : return_to,  rememberMe: $("#cbRememberMe").attr('checked')},function(data){
                eval("ret = " + data);                
                if(ret.ret == 0){
                       if(ret.url.length > 0){
                           window.location.href = ret.url;
                       }else{
                           if(LoginBackUrl.length > 0){
                                window.location.href = LoginBackUrl;
                           }else{
                                window.location.href = gLangPrefix + "/my-account/order-status";
                           }
                       }
                }else{
                    //alert(ret.msg);
                    $("#divSignIn").show();
                    $("#txtSLoginPass")[0].focus();
                    $("#txtSLoginPass").addClass('inpe');
                    setTimeout(function(){ $("#divSignIn").hide(); }, 3000);
                }
                
            });
        }
        return false;
    });
    
    
    $("#btnSignUp").click(function(){
        var bRet = $("#txtRUsername").valid();
        bRet = $("#txtREmail").valid() && bRet;
        bRet = $("#txtFirstName").valid() && bRet;
        bRet = $("#txtLastName").valid() && bRet;
        bRet = $("#txtRPassword").valid() && bRet;
        bRet = $("#txtRConfirmPassword").valid() && bRet;
        if(bRet){
            $.post("/register", { txtRUsername : $("#txtRUsername").val(), 
                                    txtREmail : $("#txtREmail").val(),
                                    txtFirstName : $("#txtFirstName").val(),
                                    txtLastName : $("#txtLastName").val(),                                    
                                    txtRPassword : hex_md5($("#txtRPassword").val()),
                                    IsZendesk : isZendesk , timestamp : timestamp, return_to : return_to,
                                }, function( data){
                                    eval("var ret = " + data);
                                    if(ret.ret == 0){
                                        if(ret.url.length > 0){
                                           window.location.href = ret.url;
                                        }else{
                                            if(LoginBackUrl.length > 0){
                                                    window.location.href = LoginBackUrl;
                                               }else{
                                                    window.location.href = "/my-account";
                                               }
                                         }
                                    }else{
                                        alert(ret.msg);
                                    }
                                });
        }
        return false;
        
    });
});
