//表单基本验证
var verifyConfig_Normal = [
    {ID: "username", Initialize: "由字母a～z、数字、横线，长度为4～14个英文字符，不能为纯数字，一旦设定则不可更改", Container: "info_username", Required: "请输入用户名!", MinLength: 4, MaxLength: 14, Safe: true },
	{ID:"nickname", Initialize:"长度为4～12个中英文字符", Container:"info_nickname", Required:"请输入昵称!" ,MinLength:4, MaxLength:12, Safe2:true },
    {ID:"pwd", Initialize:"限用英文字母、数字和下划线，英文字母区分大小写，密码长度为6－16位", Container:"info_pwd",  Required:"请输入密码!", MinLength:6, MaxLength:16},
    {ID:"conpwd", Initialize:"限用英文字母、数字和下划线，英文字母区分大小写，密码长度为6－16位", Container:"info_pwd", Required:"请输入确认密码!", EqualTo:"pwd", EqualToInfo:"两次输入的密码不一致!", MinLength:6, MaxLength:16},
    {ID:"email", Initialize:"用户取回密码的认证邮箱，请填写您的常用邮箱", Container:"info_email", Required:"请输入保密邮箱!", Email:"邮箱地址不正确，请重新输入!"},
    {ID:"answer", Initialize:"答案长度6～30位，字母区分大小写，一个汉字占两位，用于修复帐号密码", Container:"info_answer", MinLength:6, MaxLength:30}
];

//医生扩展验证json
var verifyConfig_Doctor = [
    {ID:"name_doctor", Initialize:"请填写您的真实姓名，以便通过审核", Container:"info_name_doctor", Required:"请输入真实姓名!"},
    {ID:"hospital_doctor", Initialize:"请填写医院全称", Container:"info_hospital_doctor", Required:"请输入医院全称"},
    {ID:"keshi_doctor", Initialize:"请选择专业科室", Container:"info_keshi_doctor", Required:"请选择专业科室"},
    {ID:"specialty_doctor", Initialize:"请输入专业介绍", Container:"info_specialty_doctor", Required:"请输入专业介绍"},
    {ID:"bio_doctor", Initialize:"请填写您的个人简介，字数在500字以内", Container:"info_bio_doctor", Required:"请输入个人简介", MinLength:0, MaxLength:500},
    {ID:"society_doctor", Initialize:"300字以内", Container:"info_society_doctor",  MaxLength:300},
    {ID:"auditphone_doctor", Initialize:"请输入资料审核电话", Container:"info_auditphone_doctor", Required:"请输入资料审核电话"}
];

//药店扩展验证json
var verifyConfig_Drugstore = [
    {ID:"name_Drugstore", Initialize:"请填写药店全称", Container:"info_name_Drugstore", Required:"请填写药店全称"},
    {ID:"subRegion_Drugstore", Initialize:"请选择所在地区", Container:"info_subRegion_Drugstore", Required:"请选择所在地区"},
    {ID:"phone_Drugstore", Initialize:"请填写联系电话", Container:"info_phone_Drugstore", Required:"请填写联系电话"},
    {ID:"linkman_Drugstore", Initialize:"请填写联系人", Container:"info_linkman_Drugstore", Required:"请填写联系人"},
    {ID:"tel_Drugstore", Initialize:"请填写联系人电话", Container:"info_tel_Drugstore", Required:"请填写联系人电话"},
    {ID:"email_Drugstore", Initialize:"请填写电子邮箱", Container:"info_email_Drugstore", Required:"请填写电子邮箱", Email:"邮箱地址不正确，请重新输入!"},
    {ID:"address_Drugstore", Initialize:"请填写药店地址", Container:"info_address_Drugstore", Required:"请填写药店地址"},
    {ID:"businessScope_Drugstore", Initialize:"请填写经营范围", Container:"info_businessScope_Drugstore", Required:"请填写经营范围"},
    {ID:"yyzz_Drugstore", Initialize:"请上传药店营业执照", Container:"info_yyzz_Drugstore", Required:"请上传药店营业执照"},
    {ID:"jyxkz_Drugstore", Initialize:"请上传药品经营许可证", Container:"info_jyxkz_Drugstore", Required:"请上传药品经营许可证"},
    {ID:"jyzlglgfrz_Drugstore", Initialize:"请上传药品经营质量管理规范认证", Container:"info_jyzlglgfrz_Drugstore", Required:"请上传药品经营质量管理规范认证"}
];

//药企扩展验证json
var verifyConfig_DrugFactory = [
    {ID:"name_DrugFactory", Initialize:"请填写药企全称", Container:"info_name_DrugFactory", Required:"请填写药企全称"},
    {ID:"subRegion_DrugFactory", Initialize:"请选择所在地区", Container:"info_subRegion_DrugFactory", Required:"请选择所在地区"},
    {ID:"phone_DrugFactory", Initialize:"请填写联系电话", Container:"info_phone_DrugFactory", Required:"请填写联系电话"},
    {ID:"linkman_DrugFactory", Initialize:"请填写联系人", Container:"info_linkman_DrugFactory", Required:"请填写联系人"},
    {ID:"tel_DrugFactory", Initialize:"请填写联系人电话", Container:"info_tel_DrugFactory", Required:"请填写联系人电话"},
    {ID:"email_DrugFactory", Initialize:"请填写电子邮箱", Container:"info_email_DrugFactory", Required:"请填写电子邮箱", Email:"邮箱地址不正确，请重新输入!"},
    {ID:"corpAddress_DrugFactory", Initialize:"请填写药厂地址", Container:"info_corpAddress_DrugFactory", Required:"请填写药厂地址"},
    {ID:"postCode_DrugFactory", Initialize:"请填写邮政编码", Container:"info_postCode_DrugFactory", Required:"请填写邮政编码"},
    {ID:"yyzz_DrugFactory", Initialize:"请上传药品生产企业的营业执照副本复印件", Container:"info_yyzz_DrugFactory", Required:"请上传药品生产企业的营业执照副本复印件"},
    {ID:"scxk_DrugFactory", Initialize:"请上传药品生产企业生产许可证复印件", Container:"info_scxk_DrugFactory", Required:"请上传药品生产企业生产许可证复印件"},
    {ID:"iso_DrugFactory", Initialize:"请上传ISO9000质量管理体系认证证书", Container:"info_iso_DrugFactory", Required:"请上传ISO9000质量管理体系认证证书"},
    {ID:"zcpj_DrugFactory", Initialize:"请上传产品的生产批件复印件", Container:"info_zcpj_DrugFactory", Required:"请上传产品的生产批件复印件"},
    {ID:"gmp_DrugFactory", Initialize:"请上传国家GMP认证复印件", Container:"info_gmp_DrugFactory", Required:"请上传国家GMP认证复印件"}
    
];

//医院扩展验证json
var verifyConfig_Hospital = [
    {ID:"name_hospital", Initialize:"请填写完整名称", Container:"info_name_hospital", Required:"请填写完整名称"},
    {ID:"hospitalType_hospital", Initialize:"请选择医院性质", Container:"info_hospitalType_hospital", Required:"请选择医院性质"},
    {ID:"grade_hospital", Initialize:"请选择医院等级", Container:"info_grade_hospital", Required:"请选择医院等级"},
    {ID:"leixing_hospital", Initialize:"请选择医院类型", Container:" info_leixing_hospital", Required:"请选择医院类型"},
    {ID:"subRegion_hospital", Initialize:"请选择所在地区", Container:"info_subRegion_hospital", Required:"请选择所在地区"},
    {ID:"address_hospital", Initialize:"请填写联系地址", Container:"info_address_hospital", Required:"请填写联系地址"},
    {ID:"postalCode_hospital", Initialize:"请填写邮政编码", Container:"info_postalCode_hospital", Required:"请填写邮政编码"},
    {ID:"zyxkz_hospital", Initialize:"如果上传医疗机构执业许可证，将会更快通过审核", Container:"info_zyxkz_hospital", Required:"请上传医疗机构执业许可证"},
    {ID:"name_registerInfo_hospital", Initialize:"请填写真实姓名", Container:"info_name_registerInfo_hospital", Required:"请填写真实姓名"},
    {ID:"phone_registerInfo_hospital", Initialize:"请填写您的办公电话或分机，以便核实您的身份", Container:"info_phone_registerInfo_hospital", Required:"请填写您的办公电话或分机，以便核实您的身份"},
    {ID:"time_registerInfo_hospital", Initialize:"请填写何时可以联系到您，如周一上午", Container:"info_time_registerInfo_hospital", Required:"请填写何时可以联系到您，如周一上午"},
    {ID:"email_registerInfo_hospital", Initialize:"请填写常用邮箱", Container:"info_email_registerInfo_hospital", Required:"请填写常用邮箱", Email:"邮箱地址不正确，请重新输入!"}
];

//表单验证json
var verifyConfig = [];

$(document).ready(function(){
    hideExtendInfo();
    bindEvent();

    //根据typeid显示对应的块
    var typeid = $('#typeid').val();
    if(typeid == 1)         //普通网友
        $('#rdNormal').click();
    else if(typeid == 2)  //医院
        $('#rdHospital').click();
    else if(typeid == 3)  //医生
        $('#rdDoctor').click();
    else if(typeid == 4)  //药店
        $('#rdDrugstore').click();
    else if(typeid == 5)  //药企
        $('#rdDrugFactory').click();
    else
        $('#rdNormal').click();
});

function hideExtendInfo(){
    $('#divDoctor').hide();
    $('#divDrugFactory').hide();
    $('#divDrugstore').hide();
    $('#divHospital').hide();
}

//绑定控件事件
function bindEvent(){
    $('#rdNormal').bind("click", function(){
        $('#type').val('1');
        hideExtendInfo();
        verifyConfig = [];
        $.each(verifyConfig_Normal, function(i, obj){ verifyConfig.push(obj)});
        $('#otherUserType').val('');
    });
    
    $('#rdDoctor').bind("click", function(){
        $('#type').val('3');
        hideExtendInfo();
        $('#divDoctor').show();
        verifyConfig = [];
        $.each(verifyConfig_Normal, function(i, obj){ verifyConfig.push(obj)});
        $.each(verifyConfig_Doctor, function(i, obj){ verifyConfig.push(obj)});
        $('#otherUserType').val('');
    });
    
    $('#rdDrugstore').bind("click", function(){
        $('#type').val('4');
        hideExtendInfo();
        $('#divDrugstore').show();
        verifyConfig = [];
        $.each(verifyConfig_Normal, function(i, obj){ verifyConfig.push(obj)});
        $.each(verifyConfig_Drugstore, function(i, obj){ verifyConfig.push(obj)});
        $('#otherUserType').val('');
    });
    
    $('#rdDrugFactory').bind("click", function(){
        $('#type').val('5');
        hideExtendInfo();
        $('#divDrugFactory').show();
        verifyConfig = [];
        $.each(verifyConfig_Normal, function(i, obj){ verifyConfig.push(obj)});
        $.each(verifyConfig_DrugFactory, function(i, obj){ verifyConfig.push(obj)});
        $('#otherUserType').val('');
    });
    
    $('#rdHospital').bind("click", function(){
        $('#type').val('2');
        hideExtendInfo();
        $('#divHospital').show();
        verifyConfig = [];
        $.each(verifyConfig_Normal, function(i, obj){ verifyConfig.push(obj)});
        $.each(verifyConfig_Hospital, function(i, obj){ verifyConfig.push(obj)});
        $('#otherUserType').val('');
    });
    
    $('#question').change(function(){
        if($('#question').val() == '我的自定义问题'){
            $('#myQuestion').show();
            $('#myQuestion').focus();
        } else {
            $('#myQuestion').val('');
            $('#myQuestion').hide();
        }
    });
    
    $('#region_hospital').change(function(){
        getSubRegion('subRegion_hospital', this.value);
    });
    
    $('#region_Drugstore').change(function(){
        getSubRegion('subRegion_Drugstore', this.value);
    });
    
    $('#region_DrugFactory').change(function(){
        getSubRegion('subRegion_DrugFactory', this.value);
    });
    
    $('#otherUserType').change(function(){
        if(!isEmpty(this.value)){
            hideExtendInfo();
            $('#rdNormal')[0].checked = false;
            $('#rdDoctor')[0].checked = false;
            $('#rdHospital')[0].checked = false;
            $('#rdDrugstore')[0].checked = false;
            $('#rdDrugFactory')[0].checked = false;
            $('#type').val(this.value);
            verifyConfig = [];
            $.each(verifyConfig_Normal, function(i, obj){ verifyConfig.push(obj)});
        }
    });

    $('input').each(function(i, obj) {
        $(this).focus(function() {
            $(this).css('background-color', 'rgb(204, 255, 153)');
        });

        $(this).blur(function() {
            $(this).css('background-color', '');
            if (singleVerify(obj)) {
                if (obj.id == 'username')
                    verifyUsername();

                if (obj.id == 'nickname')
                    verifyNickname();
            }
        });
    });
    
    $('#frm').submit(function(){
        if(!verify()){
            alert('请根据上面的提示信息，把资料补充完整');
            return false;
        }
            
//        if(!verifyUsername()){
//            alert('请根据上面的提示信息，把资料补充完整');
//            return false;
//       }
            
       if(!$('#cbAgree').attr('checked')){
            $('#info_cbAgree').show();
            return false;
        }
        else{
            $('#info_cbAgree').hide();
        }
    });
}

function getSubRegion(subid, value){
    $.ajax({
        type: "GET",
        url: "/Other/GetSubRegion.aspx",
        data: "tag=document.getElementById('"+subid+"')&region="+ escape(value),
        async:false,
        success: function(html){
            try{
                eval(html);
            } catch(e) {}
        }
    });
}

function verifyUsername(){
    var ispass = false;
    
    $('#info_username').css("color", "green");
    $('#info_username').html('正在检测用户名合法性，请稍候... ...');

    $.ajax({
        type: "POST",
        url: "UserService.asmx/CheckUserNameJsOn",
        data: "userName="+encodeURIComponent($('#username').val()),
        dataType:"html",
        async:false,
        success: function(json){
            var regExp = />([{][^<]{0,}[}])</;
            regExp.exec(json);
            json = RegExp.$1;
            json = eval("("+json+")");
            if(json.Success){
                $('#info_username').removeAttr("style");
                $('#info_username').html('恭喜，您可以使用注册名：<font color="green">' + $('#username').val() + '</font>');
                ispass = true;
            } else {
                $('#info_username').css("color", "red");
                $('#info_username').css("font-weight", "bold");
                $('#info_username').html(json.Info);
            }
        }
    }); 
    return ispass;
}

function verifyNickname() {
    var ispass = false;

    $('#info_nickname').css("color", "green");
    $('#info_nickname').html('正在检测昵称合法性，请稍候... ...');

    $.ajax({
        type: "POST",
        url: "UserService.asmx/CheckNickName",
        data: "nickName=" + escape($('#nickname').val()),
        dataType: "html",
        async: false,
        success: function(json) {
            var regExp = />([{][^<]{0,}[}])</;
            regExp.exec(json);
            json = RegExp.$1;
            json = eval("(" + json + ")");
            if (json.Success) {
                $('#info_nickname').removeAttr("style");
                $('#info_nickname').html('恭喜，您可以使用昵称：<font color="green">' + $('#nickname').val() + '</font>');
                ispass = true;
            } else {
                $('#info_nickname').css("color", "red");
                $('#info_nickname').css("font-weight", "bold");
                $('#info_nickname').html(json.Info);
            }
        }
    });
    return ispass;
}

//表单验证
function verify(){
    //是否验证完成
    var isPassVerify = true;
    
    $.each(verifyConfig, function(i, obj){
        var input = $('#' + obj.ID);
        var err =$('#' + obj.Container);

        //是否有必需项的验证
        if(obj.Required){
            if(isEmpty(input.val())){
                isPassVerify = false;
                err.html(obj.Required);        
                err.css("color","red"); 
                err.css("font-weight", "bold");
                
                return true;
            }
            else{
                err.html(obj.Initialize);
                err.removeAttr("style"); 
            }
        }
        
        //是否有安全字符串的验证(非中文)
        if(obj.Safe){
            if(!isSafeStr(input.val())){
                isPassVerify = false;
                err.html("只允许包含英文,数字及横线");
                err.css("color","red"); 
                err.css("font-weight", "bold");
                
                return true;
            }
            else{
                err.html(obj.Initialize);
                err.removeAttr("style"); 
            }
        }

        //是否有安全字符串的验证(中文)
        if (obj.Safe2) {
            if (!isSafeStr2(input.val())) {
                isPassVerify = false;
                err.html("只允许包含中文英文,数字及下划线");
                err.css("color", "red");
                err.css("font-weight", "bold");

                return true;
            }
            else {
                err.html(obj.Initialize);
                err.removeAttr("style");
            }
        }
        
        //是否有比较两个值的验证
        if(obj.EqualTo){
            if($('#'+obj.EqualTo).val() != input.val()){
                isPassVerify = false;
                err.html(obj.EqualToInfo);        
                err.css("color","red"); 
                err.css("font-weight", "bold");
                
                return true;
            }
            else{
                err.html(obj.Initialize);
                err.removeAttr("style"); 
            }
        }
        
        //是否有Email格式的验证
        if(obj.Email){
            if(!(/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/.test(input.val()))){
                isPassVerify = false;
                err.html(obj.Email);        
                err.css("color","red"); 
                err.css("font-weight", "bold");
                
                return true;
            }
            else{
                err.html(obj.Initialize);
                err.removeAttr("style"); 
            }
        }
        
        //是否有最小长度的验证
        if(obj.MinLength){
            if(!obj.Required && input.val().length == 0){
                err.html(obj.Initialize);
                err.removeAttr("style"); 
                return true;
            }
                
            if( getLength(input.val()) < obj.MinLength){
                 isPassVerify = false;
                err.html("长度为"+obj.MinLength+"－"+obj.MaxLength+"位字符");        
                err.css("color","red"); 
                err.css("font-weight", "bold");
                
                return true;
            }
            else{ 
                err.html(obj.Initialize);
                err.removeAttr("style"); 
            }
        }
        
        //是否有最大长度的验证
        if(obj.MaxLength){
            if(getLength(input.val()) > obj.MaxLength){
                isPassVerify = false;
                err.html("最大长度为"+obj.MaxLength+"位字符");        
                err.css("color","red"); 
                err.css("font-weight", "bold");
                
                return true;
            }
            else{
                err.html(obj.Initialize);
                err.removeAttr("style"); 
            }
        }
    });
    
    return isPassVerify;
}

function singleVerify(o){
    //是否验证完成
    var isPassVerify = true;
    $.each(verifyConfig, function(i, obj){
        if(obj.ID == o.id){
            var input = $('#' + obj.ID);
            var err =$('#' + obj.Container);
            //是否有必需项的验证
            if(obj.Required){
                if(isEmpty(input.val())){
                    isPassVerify = false;
                    err.html(obj.Required);        
                    err.css("color","red"); 
                    err.css("font-weight", "bold");
                    return true;
                }
                else{
                    err.html(obj.Initialize);
                    err.removeAttr("style"); 
                }
            }
                
            //是否有安全字符串的验证
            if(obj.Safe){
                if(!isSafeStr(input.val())){
                    isPassVerify = false;
                    err.html("只允许包含英文,数字及横线，且以字母数字开头");
                    err.css("color","red"); 
                    err.css("font-weight", "bold");
                    return true;
                }
                else{
                    err.html(obj.Initialize);
                    err.removeAttr("style"); 
                }
            }

            //是否有安全字符串的验证
            if (obj.Safe2) {
                if (!isSafeStr2(input.val())) {
                    isPassVerify = false;
                    err.html("只允许包含中文英文,数字及下划线");
                    err.css("color", "red");
                    err.css("font-weight", "bold");
                    return true;
                }
                else {
                    err.html(obj.Initialize);
                    err.removeAttr("style");
                }
            }
                
            //是否有比较两个值的验证
            else if(obj.EqualTo){
                if($('#'+obj.EqualTo).val() != input.val()){
                    isPassVerify = false;
                    err.html(obj.EqualToInfo);        
                    err.css("color","red"); 
                    err.css("font-weight", "bold");
                    return true;
                }
                else{
                    err.html(obj.Initialize);
                    err.removeAttr("style"); 
                }
            }
                
            //是否有Email格式的验证
            if(obj.Email){
                if(!(/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/.test(input.val()))){
                    isPassVerify = false;
                    err.html(obj.Email);        
                    err.css("color","red"); 
                    err.css("font-weight", "bold");
                    return true;
                }
                else{
                    err.html(obj.Initialize);
                    err.removeAttr("style"); 
                }
            }
                
            //是否有最小长度的验证
            if(obj.MinLength){
                if(!obj.Required && input.val().length == 0){
                    err.html(obj.Initialize);
                    err.removeAttr("style"); 
                    return true;
                }
                    
                if( getLength(input.val()) < obj.MinLength){
                     isPassVerify = false;
                    err.html("长度为"+obj.MinLength+"－"+obj.MaxLength+"位字符");        
                    err.css("color","red"); 
                    err.css("font-weight", "bold");
                    return true;
                }
                else{ 
                    err.html(obj.Initialize);
                    err.removeAttr("style"); 
                }
            }
                
            //是否有最大长度的验证
            if(obj.MaxLength){
                if(getLength(input.val()) > obj.MaxLength){
                    isPassVerify = false;
                    err.html("最大长度为"+obj.MaxLength+"位字符");
                    err.css("color","red"); 
                    err.css("font-weight", "bold");
                    return true;
                }
                else{
                    err.html(obj.Initialize);
                    err.removeAttr("style"); 
                }
            }
            
            return false;
        }
    });
    return isPassVerify;
}

//字符串是否为空值
function isEmpty(msg){
    if(msg == null || msg == "")
    {
        return true;
    }
    return false;
}

//返回字符串长度(中文为2个字符)
function getLength(str){
    var   len   =   0;   
    for(i=0;i<str.length;i++){   
    if(str.charCodeAt(i)>256)
        len   +=   2; 
    else   
        len++;
    }
    return len;
}


//是否为安全代码(只包含英文,数字及横线)
function isSafeStr(str){
    return /^[a-zA-Z0-9]+[a-zA-Z0-9-]*[a-zA-Z0-9]+$/.test(str);
}

//是否为安全代码(只包含中文,英文,数字及下划线)
function isSafeStr2(str){
    return /^[\u4E00-\u9FA5a-zA-Z0-9_]*$/.test(str);
}