﻿//Ready
$(document).ready(function() {
    new $("#dvLoginMain").LoginForm({ id: 'dvLoginMain' });
});


jQuery.fn.LoginForm = function(config) {

    //参数
    config = jQuery.extend({

        id: null,     //ID
        type: 0, //0,1,2,
        callback: function() { return false; } //回调函数

    }, config || {});

    //checl flag
    var biaozhi = new Array();
    var reg_mail_valid = true;
    var reg_reff_valid = true;
    var reg_reffcid_valid = true;

    requireField = function(o) {
        if (config.type == 0)
            return requireField_lgoin(o);
        else if (config.type == 1)
            return requireField_reg(o);
        else if (config.type == 2)
            return requireField_forget(o);
    };

    requireField_lgoin = function(o) {
        //regx
        var your_num = /^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+/;
        var log_email = /^\S+$/; // /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+/;
        var log_pwd = /^\S+$/;

        //error
        var check_ok = "";
        var log_email_error = "Input correct email/P-PLUS ID";
        var log_pwd_error = "Input your password";
        var tip = $('#' + o.id + '_tip');
        if (o.value.match(eval(o.id))) {
            tip.html(check_ok).removeClass('error').addClass('accept');
            return true;
        }
        else {
            tip.removeClass('accept').addClass('error');
            eval('tip.html(' + o.id + '_error);');
        }
        return false;
    }

    requireField_reg = function(o) {
        //regx
        var your_num = /^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+/;
        var log_email = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+/;
        var log_pwd = /^\S+$/;
        var reg_firstname = /^[A-Za-z][A-Za-z\s]+$/;
        var reg_lastname = /^[A-Za-z][A-Za-z\s]+$/;
        var reg_mail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+/;
        var reg_password = /^\S+$/;
        var reg_repassword = /^\S+$/;
        var reg_country = /.+/; //^\S+$/;
        var reg_refer = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+/;
        var reg_refer_cid = /^\S+$/;

        //error
        var check_ok = "";
        var reg_firstname_error = "Input your firstname";
        var reg_lastname_error = "Input your lastname";
        var reg_mail_error = "Input valid email address";
        var reg_password_error = "Input password";
        var reg_repassword_error = "Passwords do not match";
        var reg_country_error = "Select country";
        var reg_refer_error = 'Wrong email format.';
        var reg_refer_cid_error = 'Input referrer\'s P-PLUS ID';

        var objid = o.id;
        if (objid.indexOf('reg_country') > 0) { objid = 'reg_country'; }

        if (objid == 'reg_mail') {
            if (!reg_mail_valid && $('#reg_mail').val() != '') return false;
        }

        if (objid == 'reg_refer') {
            if ($('#reg_refer').val() == "")
                return true;
            return reg_reff_valid;
        }
        if (objid == 'reg_refer_cid') {
            if ($('#reg_refer').val() == "") {
                $('#reg_refer_cid').val('');
                return true;
            }
        }

        if (o.value.match(eval(objid))) {
            $('#' + objid + '_tip').html(check_ok).removeClass('error').addClass('accept');

            if (objid == 'reg_repassword') {
                return checkTwoPwdSame();
            }

            return true;
        }
        else {
            $('#' + objid + '_tip').html(eval(objid + '_error')).removeClass('accept').addClass('error');
        }

        return false;
    }

    requireField_forget = function(o) {
        //regx
        var fgt_email = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+/;
        var check_ok = "";
        var fgt_email_error = "Wrong E-mail format";

        var objid = o.id;
        if (o.value.match(eval(objid))) {
            $('#' + objid + '_tip').html(check_ok).removeClass('error').addClass('accept');
            return true;
        }
        else {
            $('#' + objid + '_tip').html(eval(objid + '_error')).removeClass('accept').addClass('error');
        }
        return false;
    }

    //submit
    function validate() {
        biaozhi[config.type] = true;
        $(".subTab input[needValidate='true'] ,.subTab select[needValidate='true']").each(function(i) {
            if (!requireField(this)) biaozhi[config.type] = false;
        });
        return biaozhi[config.type];
    }

    checkTwoPwdSame = function() {

        if ($('#reg_repassword').val() != '' && $('#reg_password').val() != '') {
            if ($('#reg_repassword').val() != $('#reg_password').val()) {
                $('#reg_repassword_tip').html('Entered passwords differ!').removeClass('accept').addClass('error');
                return false;
            }
            else {
                $('#reg_repassword_tip').html('').removeClass('error').addClass('accept');
                return true;
            }
        }
        return false;
    }

    //ajax
    function processValidateEmail(data) {
        if (data.exist.toLowerCase() == "false") {
            $('#reg_mail_tip').html('').removeClass('error').addClass('accept');
            reg_mail_valid = true;
        }
        else {
            $('#reg_mail_tip').html('This email address has already been registered.(<a href="Login.aspx?type=2">find password</a>)').removeClass('accept').addClass('error');
            reg_mail_valid = false;
        }
        $('#regSubmit').attr('disabled', '');
    }

    init = function() {

        //showN
        config.type = (getRequest("type")) ? parseInt(getRequest("type")) - 1 : 0;
        showTab(config.type);

        //tabs
        //$("#dvTabs").Tabs({ id: 'dvTabs', showN: config.type, callback: tabloaded });

        //event
        $("input[needValidate='true'],select[needValidate='true']").blur(function() {
            if (this.id == 'reg_mail') return;
            if (requireField(this)) {
            }
        });

        $('#reg_mail').blur(function() {
            $('#regSubmit').attr('disabled', 'true');
            $.getJSON("../Pages/getAjaxData.aspx?r=" + Math.random(), { func: 'Check', email: this.value }, processValidateEmail);
        });

        $('#reg_repassword,#reg_password').blur(function() {
            requireField(this); checkTwoPwdSame();
        });

        $('select[objname="reg_country"]').change(function() {
            requireField(this);
        });

        //customer come
        userFrom(setCountry);


        $('#reg_refer').change(function() {
            if ($('#reg_refer').val().Trim() != "") {
                $('#regSubmit').attr('disabled', 'true');
                $.getJSON("../Pages/getAjaxData.aspx?r=" + Math.random(), { func: 'Refer', email: this.value }, function(res) {
                    if (res.exist.toLowerCase() == "true") {
                        $('#reg_refer_tip').html('').removeClass('error').addClass('accept');
                        reg_reff_valid = true;
                    }
                    else {
                        $('#reg_refer_tip').html('The referrer is non-existent').removeClass('accept').addClass('error');
                        reg_reff_valid = false;
                    }
                    $('#regSubmit').attr('disabled', '');
                });
            }
            else {
                $('#reg_refer_tip').html('').removeClass('error').removeClass('accept');
                reg_reff_valid = true;
            }
        });
        $('#reg_refer_cid').blur(function() {
            if ($('#reg_refer').val().Trim() != "" && $('#reg_refer_cid').val().Trim() != "") {
                $('#regSubmit').attr('disabled', 'true');
                $.getJSON("../Pages/getAjaxData.aspx?r=" + Math.random(), { func: 'Refer', email: $('#reg_refer').val(), cid: this.value }, function(res) {
                    if (res.exist.toLowerCase() == "true") {
                        $('#reg_refer_cid_tip').html('').removeClass('error').addClass('accept');
                        reg_reffcid_valid = true;
                    }
                    else {
                        $('#reg_refer_cid_tip').html('Wrong referrer\'s cid').removeClass('accept').addClass('error');
                        reg_reffcid_valid = false;
                    }
                    $('#regSubmit').attr('disabled', '');
                });
            }
            else if ($('#reg_refer').val().Trim() != "" && $('#reg_refer_cid').val().Trim() == "") {
                $('#reg_refer_cid_tip').html('Input referrer\'s P-PLUS ID').removeClass('accept').addClass('error');
                reg_reffcid_valid = false;
            }
            else {
                $('#reg_refer_cid').val('');
                $('#reg_refer_cid_tip').html('').removeClass('error').removeClass('accept');
                reg_reffcid_valid = true;
            }
        });

        $('#logSubmit').click(function() {
            if (validate()) {
                setLoading(true);
                $.getJSON("../Pages/getAjaxData.aspx?r=" + Math.random(), { func: 'Login', email: $('#log_email').val(), pwd: $('#log_pwd').val() }, function(res) {
                    if (res.login == "OK") {
                        $.cookie('ptg_user_info_login', json2str(res), SYSTEM_CONFIG.CookieOpt);
                        if (getRequest("ReturnUrl") != null)
                            window.location.href = getRequest("ReturnUrl");
                        else
                            window.location.href = "../Default.aspx";
                    }
                    else {
                        alert("Login failed!\r\nCheck your email or password...");
                    }

                    setLoading(false);
                });
            }
        });

        $('#regSubmit').click(function() {
            var btn = $(this);
            if (validate()) {
                btn.attr('disabled', 'true');
                setLoading(true);
                $.getJSON("../Pages/getAjaxData.aspx?r=" + Math.random(), { func: 'Reg', fn: $('#reg_firstname').val(),
                    ln: $('#reg_lastname').val(), email: $('#reg_mail').val(), pwd: $('#reg_password').val(), ct: $('select[objname="reg_country"]').val(), ref: $('#reg_refer').val()
                }, function(res) {
                    if (res == "ERR2") {
                        alert("System error!");
                        btn.removeAttr('disabled');
                    }
                    else if (res.login == "OK") {
                        $.cookie('ptg_user_info_login', json2str(res), SYSTEM_CONFIG.CookieOpt);
                        if (getRequest("ReturnUrl") != null)
                            window.location.href = getRequest("ReturnUrl");
                        else
                            window.location.href = "MemberMag.aspx";
                    }
                    else {
                        alert("Reg failed!\r\nCheck your input...");
                        btn.removeAttr('disabled');
                    }
                    setLoading(false);
                });
            }
        });

        $('#fgtSubmit').click(function() {
            var btn = $(this);
            if (validate()) {
                btn.attr('disabled', 'true');
                setLoading(true);
                $.getJSON("../Pages/getAjaxData.aspx?r=" + Math.random(), { func: 'Forget', email: $('#fgt_email').val() }, function(res) {
                    if (res.result == "ERROR") {
                        alert("System error!");
                    }
                    else {
                        alert('Email has been sent successfully!');
                        if (getRequest("ReturnUrl") != null)
                            window.location.href = getRequest("ReturnUrl");
                        else
                            window.location.href = "../Default.aspx";
                    }
                    btn.removeAttr('disabled');
                    setLoading(false);
                });
            }
        });

        //forget password
        $("#lnkForget").click(function() { gototab(2); });

        //enter press
        $('.subTab :text,.subTab :password').keypress(function(e) {
            var ck = e ? e.keyCode : e.which;
            if (ck == 13) {
                if (config.type == 0) {
                    $('#logSubmit').click(); return false;
                }
                else if (config.type == 1) {
                    $('#regSubmit').click(); return false;
                }
                else if (config.type == 2) {
                    $('#fgtSubmit').click(); return false;
                }
            }
            return true;
        });
    };

    setCountry = function(v) {
        if (v == null) v = "";
        $('select[objname="reg_country"]').val(v);
    };
    showTab = function(t) {
        var tabs = $("#dvTabs li");
        tabs.each(function(i) {
            $(this).removeClass("tabs-selected").click(function() {
                gototab(i);
            });
        });
        tabs.eq(t).addClass("tabs-selected");
        adjustMain();
    };
    gototab = function(i) {
        var u = "Login.aspx?type=" + (i + 1);
        if (getRequest("ReturnUrl")) u = u + "&ReturnUrl=" + getRequest("ReturnUrl");
        window.location = u;
    };
    
    init();
};

