﻿//Ready
$(document).ready(function() {
    new $("").Order({ id: 'order', step: (getRequest('step')) ? parseInt(getRequest('step')) : 1 });
    adjustMain();
});

jQuery.fn.Order = function (config) {

    //参数
    config = jQuery.extend({

        id: null,     //ID
        step: 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;

    requireField = function (type, o) {
        if (type == 0)
            return requireField_lgoin(o);
        else if (type == 1)
            return requireField_reg(o);
        else if (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 = /^([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";
        var log_pwd_error = "Input you password";

        if (o.value.match(eval(o.id))) {
            $('#' + o.id + '_tip').html(check_ok).removeClass('error').addClass('accept');
            return true;
        }
        else {
            $('#' + o.id + '_tip').html(eval(o.id + '_error')).removeClass('accept').addClass('error');
            $('#' + o.id).focus();
        }
        return false;
    }

    requireField_reg = function (o) {
        //regx
        var reg_firstname = /^\S+$/;
        var reg_lastname = /^\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 right E-mail";
        var reg_password_error = "Input password";
        var reg_repassword_error = "Input password again";
        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) {
    }


    //submit 0:login 1:reg
    function validate(type) {
        biaozhi[type] = true;
        $("#dvTabs_sub_" + (type) + " input[needValidate='true'] ,#dvTabs_sub_" + (type) + " select[needValidate='true']").each(function (i) {
            if (!requireField(type, this))
                biaozhi[type] = false;
        });
        return biaozhi[type];
    }


    //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('the email has already reged.').removeClass('accept').addClass('error');
            reg_mail_valid = false;
        }
        $('#regSubmit').attr('disabled', '');
    }

    setCountry = function (v) {
        if (v == null) v = "";
        $('select[objname="reg_country"]').val(v);
    };

    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;
    }
    //------Step 1 start ---------
    initStep1 = function () {

        //if logined
        if ($.cookie('ptg_user_info_login')) {
            var itms = str2json($.cookie('ptg_user_info_login'));
            $('#log_email').val(itms.email);
        }

        //event
        $("input[needValidate='true'],select[needValidate='true']").blur(function () {
            if (this.id == 'reg_mail') return;
        });

        $('#reg_mail').blur(function () {
            $('#regSubmit').attr('disabled', 'true');
            $.getJSON("../getAjaxData.aspx?r=" + Math.random(), { func: 'Check', email: this.value }, processValidateEmail);
        });

        $('#reg_repassword,#reg_password').blur(function () {
            requireField(1, this); checkTwoPwdSame();
        });

        $('select[objname="reg_country"]').change(function () {
            requireField(1, this);
        });

        $('#reg_refer').change(function () {
            if ($('#reg_refer').val().Trim() != "") {
                $('#regSubmit').attr('disabled', 'true');
                $.getJSON("../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("../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(0)) {
                setLoading(true);
                $.getJSON("../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);
                        window.location.href = "Order.aspx?step=2"; //getRequest("ReturnUrl");
                    }
                    else {
                        alert("Login failed!\r\nCheck your email or password...");
                        $('#log_pwd').focus();
                    }

                    setLoading(false);
                });
            }
            return false;
        });

        $('#regSubmit').click(function () {
            var btn = $(this);
            if (validate(1)) {
                setLoading(true);
                $.getJSON("../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);
                        window.location.href = "Order.aspx?step=2";
                    }
                    else {
                        alert("Reg failed!\r\nCheck your input...");
                        btn.removeAttr('disabled');
                    }
                    setLoading(false);
                });
            }
            return false;
        });

        //visible
        if ($.cookie('ptg_user_info_login') != null) {
            $('#dvTabs_sub_2').hide();
            $('#dvTabs_sub_1').hide();

            $('#lnkOtherMehtod').click(function () {
                $('#dvTabs_sub_2').toggle();
                $('#dvTabs_sub_1').toggle();
                adjustMain();
            }).show();
        }

        //customer come
        userFrom(setCountry);

        $('#log_email').focus();
    };

    //------Step 1 End ---------



    //------Step 2 ---------

    var preid = 'ctl00_ctl00_BaseContentPlace_FromContentPlace_';
    var prename = 'ctl00$ctl00$BaseContentPlace$FromContentPlace$';

    function payType() {
        var payment = GetServerObj("paymentType", "name");
        var paymentNo = document.getElementById("paymentNo");
        var expireDate = document.getElementById("expireDate");
        if (payment[0].checked) {
            paymentNo.innerHTML = "<span class='red'>*</span>Credit Card No"
            //GetServerObj("payNo").value = "";
            expireDate.style.display = "block";
        }
        else {
            paymentNo.innerHTML = "<span class='red'>*</span>Purchase order No";
            expireDate.style.display = "none";
            //GetServerObj("creditExp").value = "";
            //GetServerObj("payNo").value = "";
        }
    }
    function checkOrderForm() {
        var institution = GetServerObj("institution");
        var phone = GetServerObj("phone");
        var payment = GetServerObj("paymentType", "name");
        var creditExp = GetServerObj("creditExp");
        var payNo = GetServerObj("payNo");
        var vatNo = GetServerObj("vatNo");

        var shipAddress = GetServerObj("shipAddress1");
        var shipCity = GetServerObj("shipCity");
        var shipProvince = GetServerObj("shipProvince");
        var shipZip = GetServerObj("shipZip");
        var shipCountry = GetServerObj("shipCountry");
        var billAddress = GetServerObj("billAddress1");
        var billCity = GetServerObj("billCity");
        var billProvince = GetServerObj("billProvince");
        var billZip = GetServerObj("billZip");

        var region = GetServerObj("hidCountryRegion");
        var fedxAcc = GetServerObj("fedxAcc");

        if (institution.value == "") { alert("Please input your Institution"); institution.focus(); return false; }
        if (phone.value == "") { alert("Please input your phone number"); phone.focus(); return false; }
        if (payment[0].checked) {
            if (payNo.value == "") { alert("Please input your credit card number"); payNo.focus(); return false; }
            if (creditExp.value == "") { alert("Please input your credit card expired date"); creditExp.focus(); return false; }
        }
        if (payment[1].checked && payNo.value == "") { alert("Please input your purchase nubmer"); payNo.focus(); return false; }
        if (region.value == "0" && vatNo.value == "") { alert("Please input your VAT No."); vatNo.focus(); return false; }
        if (fedxAcc && fedxAcc.value == "") { alert("Please input your Fedx Account."); fedxAcc.focus(); return false; }

        if (shipAddress.value == "") { alert("please input your shipping address"); shipAddress.focus(); return false; }
        if (shipCity.value == "") { alert("please input your shipping City"); shipCity.focus(); return false; }
        if (shipProvince.value == "") { alert("Please input your shipping state/province"); shipProvince.focus(); return false; }
        if (shipZip.value == "") { alert("Please input your shipping zip/postal code"); shipZip.focus(); return false; }
        //if (shipCountry.value == "") { alert("Please input your shipping Country"); shipCountry.focus(); return false; }
        if ($('select[objname="country"]').val() == "") { alert("Please input your shipping Country"); $('select[objname="country"]').focus(); return false; }
        if (billAddress.value == "") { alert("please input your billing address"); billAddress.focus(); return false; }
        if (billCity.value == "") { alert("please input your billing City"); billCity.focus(); return false; }
        if (billProvince.value == "") { alert("Please input your billing state/province"); billProvince.focus(); return false; }
        if (billZip.value == "") { alert("Please input your billing zip/postal code"); billZip.focus(); return false; }


        return true;
    }

    function bill() {
        var billCheck = document.getElementById("billAddressCheck");
        if (billCheck.checked) {
            GetServerObj("billAddress1").value = GetServerObj("shipAddress1").value;
            GetServerObj("billAddress2").value = GetServerObj("shipAddress2").value;
            GetServerObj("billAddress3").value = GetServerObj("shipAddress3").value;
            GetServerObj("billCity").value = GetServerObj("shipCity").value;
            GetServerObj("billProvince").value = GetServerObj("shipProvince").value;
            GetServerObj("billZip").value = GetServerObj("shipZip").value;
        }
        else {
            GetServerObj("billAddress1").value = GetServerObj("billAddress2").value = GetServerObj("billAddress3").value = "";
            GetServerObj("billCity").value = "";
            GetServerObj("billProvince").value = "";
            GetServerObj("billZip").value = "";
        }
    }

    function GetServerObj(id, by) {
        if (by == "name")
            return document.getElementsByName(prename + id);

        return document.getElementById(preid + id);
    }
    //del free sample
    function delFreeSampleBtnEvent() {
        $('.delfree').click(function () {
            var catNo = $(this).attr('name');
            optCart(catNo, 'del', 0, -1);
            //refresh
            window.location.href = window.location.href;
        });
    }
    //catNo,opration(add,del),willNum(final num),incNum(increment),callback
    function optCart(catNo, opt, willNum, incNum, cback) {
        $.MiniCart({ catNo: catNo, country: $('select[objname="country"]').val(), dowhat: opt, incNum: (incNum) ? incNum : 0, callback: (cback) ? cback : null });
    }

    function applyDisCode() {
        var code = $('#txtDisCode').val().Trim();
        if (code == '') {
            alert('Invalid promotion code');
            $('#txtDisCode').focus();
            return;
        }
        setLoading(true);
        var t = GetServerObj('hidTotalPrice');
        var f = GetServerObj('hidShipfee');
        $.getJSON("../Handler/ShopCartHandler.ashx?r=" + Math.random(),
            { func: 'GetDisOff', param: 'disCode=' + code + '|t=' + parseFloat(t.value) + '|f=' + parseFloat(f.value) },
            function (res) {
                if (res.dis < 0) {
                    if (res.res == -2)
                        alert(' Expired Promotion Code !');
                    else if (res.res == -3)
                        alert("This promotion code has been applied.");
                    else
                        alert("Invalid Promotion Code ");
                    $('#txtDisCode').focus();
                }
                else {
                    setDisCode(code, res);
                    setDiscountTxt(res.dis, res.sum);
                }

                if (res.dis == 0) {
                    alert('This promotion code can not apply to this order !');
                    $('#txtDisCode').focus();
                }
                setLoading(false);
            });
    }

    function setDisCode(code, res) {
        var c = $('#txtDisCode');
        if (code) {
            $(c).addClass('codedis').attr('readonly', true);
            $('#btnApplyDisCode').hide();
            $('#btnModifyDisCode').show().click(function () { setDisCode(false, res); });
            GetServerObj('hidDisCode').value = c.attr('t') + "|" + c.val().Trim() + "|" + res.dis;
        }
        else {
            $(c).removeClass('codedis').removeAttr('readonly');
            $('#btnApplyDisCode').show();
            $('#btnModifyDisCode').hide();
            var dis = parseFloat($('#' + preid + "hidDiscount").val()).format('#.00'); //(0).format('#.00')
            setDiscountTxt(dis, (parseFloat(res.dis) + parseFloat(res.sum)-dis).format('#.00'));
            GetServerObj('hidDisCode').value = "";
        }
    }
    function setDiscountTxt(dis, sum) {
        $('.proChkDisOff').text(dis);
        $('.proChkEndPrice').text(sum);
    }

    initStep2 = function () {
        $('select[objname="country"]').attr("disabled", "false");
        //event
        $('#' + preid + 'qorderstep2_next').click(function () { var t = Step2NextCheck(); if (t) return checkOrderForm(); else return t; });
        $('#mail').blur(function () {
            if ($(this).val() != '' && !/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test($(this).val())) {
                alert('Wrong email format');
                $(this).focus().select();
            }
        });

        $(GetServerObj('paymentType', 'name')).click(function () { payType(); });

        $('#billAddressCheck').click(function () { bill(); })

        //discount
        $('#btnApplyDisCode').click(function () { applyDisCode(); })

        delFreeSampleBtnEvent();

        //if has free sample need to delete, alert
        if ($('.delfree').length > 0) delFreeAlert();

        if ($('#txtDisCode').length > 0 && $('#txtDisCode').val() != '') applyDisCode();


        GetServerObj("institution").focus(); adjustMain();
    }

    //------Step 2 End---------

    //------Step 3 ---------
    initStep3 = function () {
        $('#divOrderNext').hide();
        $('input[obj="qorderstep3"]').click(function () {
            $('#divOrderNext').css('top', $(this).position().top).css('left', $(this).position().left).show(); return true;
        });
        GetServerObj("qorderstep3_next").focus();
    }
    //------Step 3 End---------

    //------Step 4 ---------
    initStep4 = function () {

    }
    //------Step 4 End---------

    start = function () {

        $('#formstep1,#formstep2').submit(function () { return false; });
        eval("initStep" + config.step + "()");
        adjustMain();
    }

    start();
};


function Step2NextCheck() {
    //if has free sample need to delete, alert
    if ($('.delfree').length > 0) { delFreeAlert(); return false; }
    return true;
}
function delFreeAlert() {
    alert('Delete those free samples with line-through, because having no enough stock or had applied once!');
}
