/* Js for , Version=1777282873 */
 v.lang = {"confirmDelete":"\u60a8\u786e\u5b9a\u8981\u6267\u884c\u5220\u9664\u64cd\u4f5c\u5417\uff1f","deleteing":"\u5220\u9664\u4e2d","doing":"\u5904\u7406\u4e2d","loading":"\u52a0\u8f7d\u4e2d","updating":"\u66f4\u65b0\u4e2d...","timeout":"\u7f51\u7edc\u8d85\u65f6,\u8bf7\u91cd\u8bd5","errorThrown":"<h4>\u6267\u884c\u51fa\u9519\uff1a<\/h4>","continueShopping":"\u7ee7\u7eed\u8d2d\u7269","required":"\u5fc5\u586b","back":"\u8fd4\u56de","continue":"\u7ee7\u7eed","importTip":"\u53ea\u5bfc\u5165\u4e3b\u9898\u7684\u98ce\u683c\u548c\u6837\u5f0f","fullImportTip":"\u5c06\u4f1a\u5bfc\u5165\u6d4b\u8bd5\u6570\u636e\u4ee5\u53ca\u66ff\u6362\u7ad9\u70b9\u6587\u7ae0\u3001\u4ea7\u54c1\u7b49\u6570\u636e"};;v.agreement = "close";;
$().ready(function()
{
    $('a.btn-oauth').each(function()
    {
        fingerprint = getFingerprint();
        $(this).attr('href', $(this).attr('href').replace('fingerprintval', fingerprint) )
    })
});
;
$(function() {
    let pwd1 = $('#password1');
    let pwd2 = $('#password2');
    let account = $('#account');
    let $membertype = $('#membertype');
    
    // 定义各会员类型需要验证的字段（包括radio、select、input等）
    const requiredFields = {
        '个人会员': {
            'realname': '真实姓名',
            'idnumber': '身份证号'
        },
        '企业会员': {
            'company_name': '企业名称',
            'registered_capital': '注册资本',
            'registered_time': '注册时间',
            'employee_number': '企业员工数量',
            'company_type': '企业类型',      // radio
            'company_nature': '企业性质',    // select
            'company_area': '所属地区',
            'company_address': '具体地址',
            'legal_person': '企业法人',
            'credit_code': '统一社会信用代码',
            'company_realname': '联系人',
            'company_mobile': '联系电话',
            'company_email': '联系人邮箱',
            'company_wechat': '联系人微信',
            'company_Department': '联系人所属部门',
            'company_phone': '固定电话',
            'product_type': '产品类别',      // radio
            'profession': '感兴趣的专业领域',
            'company_profile': '企业基本情况介绍'
        },
        '事业单位': {
            'institution_name': '单位名称',
            'company_area': '所属地区',
            'institutio_person': '企业法人',
            'institutio_code': '统一社会信用代码',
            'unit_level': '单位等级',        // radio
            'bed_number': '床位数',
            'institutio_realname': '联系人',
            'institutio_mobile': '联系电话',
            'institutio_email': '联系人邮箱',
            'institutio_wechat': '联系人微信',
            'institutio_Department': '联系人所属部门',
            'institutio_phone': '单位固定电话'
        },
        '患者会员': {
            'patient_name': '患者姓名',
            'patient_idcard': '身份证号',
            'illness_desc': '病情描述'
        }
    };
    
    // 获取字段值（支持input、select、radio、textarea）
    function getFieldValue(fieldName) {
        let $element = $(`[name="${fieldName}"]`);
        if ($element.length === 0) return '';
        
        // 处理radio类型
        if ($element.is(':radio')) {
            return $element.filter(':checked').val() || '';
        }
        // 处理select、input、textarea
        return $element.val() || '';
    }
    
    // 高亮显示错误字段
    function highlightError(fieldName, memberType) {
        let $element = $(`[name="${fieldName}"]`);
        let $formGroup = $element.closest('.form-group');
        
        // 添加错误样式
        $formGroup.addClass('has-error');
        
        // 获取字段标签
        let fieldLabel = requiredFields[memberType] ? requiredFields[memberType][fieldName] : fieldName;
        
        // 对于radio，需要特殊处理错误提示位置
        if ($element.is(':radio')) {
            $formGroup.find('.radio-error-tip').remove();
            let $errorTip = $('<span class="radio-error-tip text-danger" style="display:block; margin-top:5px; font-size:12px;">请选择' + fieldLabel + '</span>');
            $formGroup.find('.col-sm-10').append($errorTip);
        } else {
            // 对于input、select、textarea，检查是否已有错误提示，避免重复添加
            if ($formGroup.find('.help-block.text-danger').length === 0) {
                // 获取输入框本身或在其后面添加提示
                let $input = $element.is('select') ? $element : $element;
                
                // 如果输入框有父级col-sm-10，在其内部添加提示
                let $parent = $formGroup.find('.col-sm-10');
                if ($parent.length) {
                    let $errorTip = $('<span class="help-block text-danger" style="font-size:12px;">' + fieldLabel + '不能为空</span>');
                    $parent.append($errorTip);
                } else {
                    // 否则在输入框后面添加提示
                    let $errorTip = $('<span class="help-block text-danger" style="font-size:12px;">' + fieldLabel + '不能为空</span>');
                    $input.after($errorTip);
                }
            }
        }
    }
    
    // 清除单个字段的错误提示
    function clearFieldError(fieldName) {
        let $element = $(`[name="${fieldName}"]`);
        let $formGroup = $element.closest('.form-group');
        
        // 清除错误样式
        $formGroup.removeClass('has-error');
        
        // 清除radio的错误提示
        $formGroup.find('.radio-error-tip').remove();
        
        // 清除input/select/textarea的错误提示
        $formGroup.find('.help-block.text-danger').remove();
    }
    
    // 清除所有错误高亮
    function clearAllErrors() {
        $('.form-group').removeClass('has-error');
        $('.radio-error-tip').remove();
        $('.help-block.text-danger').remove();
    }
    
    // 滚动到指定元素
    function scrollToElement($element) {
        if ($element.length) {
            $('html, body').animate({
                scrollTop: $element.offset().top - 100
            }, 300);
            if (!$element.is(':radio')) {
                $element.focus();
            }
        }
    }
    
    // 实时验证单个字段（输入时触发）
    function validateFieldRealTime(fieldName, memberType) {
        let fieldValue = getFieldValue(fieldName);
        let $element = $(`[name="${fieldName}"]`);
        
        if (!fieldValue || fieldValue.trim() === '') {
            // 字段为空，显示错误
            if (!$element.closest('.form-group').hasClass('has-error')) {
                highlightError(fieldName, memberType);
            }
            return false;
        } else {
            // 字段有值，清除错误
            clearFieldError(fieldName);
            return true;
        }
    }
    
    // 按顺序验证所有字段（提交时使用）
    function validateAllFields(memberType) {
        let fields = requiredFields[memberType];
        if (!fields) return true;
        
        for (let fieldName in fields) {
            let fieldValue = getFieldValue(fieldName);
            let $element = $(`[name="${fieldName}"]`);
            
            if (!fieldValue || fieldValue.trim() === '') {
                highlightError(fieldName, memberType);
                scrollToElement($element);
                return false;
            }
        }
        return true;
    }
    
    // 为所有需要验证的字段绑定实时验证事件
    function bindRealTimeValidation(memberType) {
        let fields = requiredFields[memberType];
        if (!fields) return;
        
        for (let fieldName in fields) {
            let $element = $(`[name="${fieldName}"]`);
            if ($element.length) {
                // 移除原有的事件，避免重复绑定
                $element.off('input change realtime');
                // 绑定输入事件（input、textarea）
                $element.on('input', function() {
                    validateFieldRealTime(fieldName, memberType);
                });
                // 绑定change事件（select、radio）
                $element.on('change', function() {
                    validateFieldRealTime(fieldName, memberType);
                });
            }
        }
    }
    
    // 提交时验证
    $('#ajaxForm').on('submit', function(e) {
        let memberType = $membertype.val();
        
        // 清除之前的错误
        clearAllErrors();
        
        // 1. 验证账号（让框架自己的验证处理，不做干预）
        if (!account.val().trim()) {
            return;
        }
        
        // 2. 验证密码
        if (!pwd1.val()) {
            return;
        }
        
        // 3. 验证确认密码
        if (!pwd2.val()) {
            return;
        }
        
        // 4. 验证密码一致性
        if (pwd1.val() !== pwd2.val()) {
            return;
        }
        
        // 5. 按顺序验证各会员类型的必填字段（包括radio、select、input）
        if (!validateAllFields(memberType)) {
            e.preventDefault();
            e.stopImmediatePropagation();
            return false;
        }
    });
    
    // 切换会员类型时的处理
    function onMemberTypeChange() {
        let memberType = $membertype.val();
        
        // 清除所有错误
        clearAllErrors();
        
        // 切换显示对应的字段区域
        $('.member-fields').hide();
        $('.member-fields.' + memberType).show();
        
        // 绑定实时验证事件
        bindRealTimeValidation(memberType);
    }
    
    // 监听会员类型切换
    $membertype.on('change', onMemberTypeChange);
    
    // 页面加载时执行一次
    onMemberTypeChange();
    
    // 关闭框架冲突校验
    if ($.fn.form) {
        $('#ajaxForm').form('destroy');
    }
});
;
$(function() {
    let pwd1 = $('#password1');
    let pwd2 = $('#password2');
    let account = $('#account');

    // 提交时：人工校验（唯一不会锁死、不会残留的方案）
    $('#ajaxForm').on('submit', function(e) {

        // 1. 先校验账号（系统原有逻辑不变）
        if (!account.val().trim()) {
            alert('请输入会员账号');
            account.focus();
            e.preventDefault();
            return false;
        }

        // 2. 密码不能为空
        if (!pwd1.val()) {
            alert('请输入密码');
            pwd1.focus();
            e.preventDefault();
            return false;
        }
        if (!pwd2.val()) {
            alert('请输入确认密码');
            pwd2.focus();
            e.preventDefault();
            return false;
        }

        // 3. 密码必须一致（弹窗提示 + 光标定位）
        if (pwd1.val() !== pwd2.val()) {
            alert('两次密码输入不一致');
            pwd1.focus();
            pwd1.select();
            e.preventDefault();
            return false;
        }
    });

    // 切换会员字段
    $('#membertype').change(function() {
        $('.member-fields').hide();
        $('.member-fields.' + $(this).val()).show();
    }).change();

    // 关闭框架冲突校验
    if ($.fn.form) {
        $('#ajaxForm').form('destroy');
    }
});
;
document.addEventListener('DOMContentLoaded', function() {
  var select = document.getElementById('membertype');
  if (!select) return;

  function switchMemberFields(selectedType) {
    var allFields = document.querySelectorAll('.member-fields');
    allFields.forEach(field => field.style.display = 'none');
    var target = document.querySelector('.member-fields.' + selectedType);
    if (target) target.style.display = 'block';
  }

  select.addEventListener('change', function() {
    switchMemberFields(this.value);
  });

  switchMemberFields(select.value);
});
;$(function()
{
    if(v.agreement == 'open')
    {
        $('#submit').attr('disabled', true);

        $('input[name=agreement]').change(function()
        {
            if($('input[name=agreement]').prop('checked'))
            {
                $('#submit').attr('disabled', false);
            }
            if(!$('input[name=agreement]').prop('checked'))
            {
                $('#submit').attr('disabled', true);
            }
        });
    }
});

;
var hash = window.location.hash.substring(1);
var browserLanguage = navigator.language || navigator.userLanguage; 
var resolution      = screen.availWidth + ' X ' + screen.availHeight;
$.get(createLink('log', 'record', "hash=" + hash), {browserLanguage:browserLanguage, resolution:resolution});
