(function(){
    var path = '/', validImgPath = path + 'Consumer/CValidateCode.ashx', LinkPath = 'http://www.duolaiding.com/';
    var v = {success:'login-v-success',error:'login-v-error',note:'login-v-note',loading:'login-v-loading',none:'login-v-none'};
    var IsSameLocation = true;
    try{top.location.href}catch(e){IsSameLocation = false;}
    function setParentTarget(obj){obj.find('a[href^="http://"]').attr('target','_top');}
    function Login(){
        this.title = '您还没有登录，请先登录！';
        this.uid = {text:'您注册的手机或电子邮箱：',maxLength:50};
        this.pwd = {text:'密码：',maxLength:20};
        this.valid = {text:'验证码：',maxLength:4};
        this.member = '一个月内免登录';
        this.isMemebr = true;
    }
    function HLogin(){
        this.title = '您还没有登录，请先登录！';
        this.uid = {text:'账号：',maxLength:25};
        this.pwd = {text:'密码：',maxLength:20};
        this.valid = {text:'验证码：',maxLength:4};
    }
    function Register(){
        this.title = '填写您的账户信息：带“<span class="red">*</span>”为必填信息';
        this.uid = {text:'<span class="red">*</span>手机或邮箱：',maxLength:50};
        this.name = {text:'<span class="red">*</span>昵称：',maxLength:20};
        this.pwd = {text:'<span class="red">*</span>密码：',maxLength:20};
        this.rePwd = {text:'<span class="red">*</span>再输入一次密码：',maxLength:20};
        this.valid = {text:'<span class="red">*</span>验证码：',maxLength:4};
        this.mValid = {text:'<span class="red">*</span>手机验证码：',maxLength:5};
        this.note = '';
        this.ServiceHtml = '<a href="/About/CServiceTerms.html" target="_blank">点击阅读多来订服务条款</a>';
    }
    function GetBackPwd(){
        this.title = '请输入您的手机号码或电子邮箱地址，系统将密码发送到您注册的手机（邮箱）！';
        this.uid = {text:'<span class="red">*</span>您注册的手机或电子邮箱：',maxLength:50};
        this.valid = {text:'<span class="red">*</span>验证码：',maxLength:4};
    }
    function GetHPwd(){
        this.title = '<b>忘记密码了？</b><br />';
        this.title += '请输入您在多来订注册时的账号和联系方式中填写的手机号码（或电子邮箱），提交后系统将密码发送至您的手机（或电子邮箱）<br />';
        this.title += '<b style="color:#FF7300;">特别提示：</b>如果你不知道或忘记了账号、联系方式怎么办！别急！请拨打<b>多来订客服电话：';
        this.title += '4006-527-577</b>，即可免费找回店铺账号和密码，然后登录多来订商家后台管理您的店铺！';
        this.uid = {text:'<span class="red">*</span>账号：',maxLength:25};
        this.member = {text:'<span class="red">*</span>联系人手机或电子邮箱：',maxLength:50};
        this.valid = {text:'<span class="red">*</span>验证码：',maxLength:4};
    }
    function getValidImg(){
        var img = '<img class="login-CodeImg" src="' + validImgPath + '?' + Math.random() + '" alt="点击刷新验证码"';
        return img += ' onclick="javascript:this.src=\'' + validImgPath + '?\'+Math.random();" />';
    }
    function getLoginHtml(){
        var html = new StringBuffer(), login = new Login();
        html.add('<div class="table-title">' + login.title + '</div><form id="frm_login" action="" method="post" autocomplete="off">');
        html.add('<div class="table-tr"><div class="table-th">' + login.uid.text + '</div><div class="table-td">');
        html.add('<input type="text" id="login-uid" class="login-Text1" maxlength="' + login.uid.maxLength + '" /></div>');
        html.add('<div class="table-msg" id="login-uid-tip"></div></div><div class="table-tr"><div class="table-th">' + login.pwd.text + '</div>');
        html.add('<div class="table-td"><input type="password" id="login-pwd" class="login-Text1" maxlength="' + login.pwd.maxLength + '" /></div>');
        html.add('<div class="table-msg" id="login-pwd-tip"></div></div><div class="table-tr"><div class="table-th">' + login.valid.text + '</div>');
        html.add('<div class="table-td"><input type="text" id="login-valid" class="login-Text2" maxlength="' + login.valid.maxLength + '" />&nbsp;');
        html.add(getValidImg() + '</div><div class="table-msg" id="login-valid-tip"></div></div><div class="table-tr"><div class="table-th">&nbsp;</div>');
        html.add('<div class="table-td"><label for="login-member"><input type="checkbox" id="login-member" ' + (login.isMemebr?'checked="checked"':'') + ' />');
        html.add(login.member + '</label>&nbsp;&nbsp;<a href="javascript:du.getpwd();">找回密码</a></div></div><div class="login-hack"></div><div class="table-center">');
        html.add('<input type="submit" value="登 录" class="login-button" />&nbsp;<input type="button" id="login-cancel" value="取 消" class="login-button" /></div></form>');
        return html.toString();
    }
    function getHotelLogin(){
        var html = new StringBuffer(), login = new HLogin();
        html.add('<div class="table-title">' + login.title + '</div><form id="frm_h_login" action="" method="post" autocomplete="off">');
        html.add('<div class="table-tr"><div class="table-th">' + login.uid.text + '</div><div class="table-td">');
        html.add('<input type="text" id="login-h-uid" class="login-Text1" maxlength="' + login.uid.maxLength + '" /></div>');
        html.add('<div class="table-msg" id="login-h-uid-tip"></div></div><div class="table-tr"><div class="table-th">' + login.pwd.text + '</div>');
        html.add('<div class="table-td"><input type="password" id="login-h-pwd" class="login-Text1" maxlength="' + login.pwd.maxLength + '" /></div>');
        html.add('<div class="table-msg" id="login-h-pwd-tip"></div></div><div class="table-tr"><div class="table-th">' + login.valid.text + '</div>');
        html.add('<div class="table-td"><input type="text" id="login-h-valid" class="login-Text2" maxlength="' + login.valid.maxLength + '" />&nbsp;');
        html.add(getValidImg() + '</div><div class="table-msg" id="login-h-valid-tip"></div></div><div class="login-hack"></div><div class="table-center">');
        html.add('<input type="submit" value="登 录" class="login-button" />&nbsp;<input type="button" id="login-h-cancel" value="取 消" class="login-button" /></div></form>');
        return html.toString();
    }
    function getRegHtml(){
        var html = new StringBuffer(), reg = new Register();
        html.add('<div class="table-title">' + reg.title + '</div><form id="frm_register" action="" method="post" autocomplete="off">');
        html.add('<div class="table-tr"><div class="table-th">' + reg.uid.text + '</div>');
        html.add('<div class="table-td"><input type="text" id="reg-uid" class="login-Text1" maxlength="' + reg.uid.maxLength + '" /></div>');
        html.add('<div class="table-msg" id="reg-uid-tip"></div></div><div class="table-tr"><div class="table-th">' + reg.name.text + '</div>');
        html.add('<div class="table-td"><input type="text" id="reg-name" class="login-Text1" maxlength="' + reg.name.maxLength + '" /></div>');
        html.add('<div class="table-msg" id="reg-name-tip"></div></div><div class="table-tr"><div class="table-th">' + reg.pwd.text + '</div>');
        html.add('<div class="table-td"><input type="password" id="reg-pwd" class="login-Text1" maxlength="' + reg.pwd.maxLength + '" /></div>');
        html.add('<div class="table-msg" id="reg-pwd-tip"></div></div><div class="table-tr"><div class="table-th">' + reg.rePwd.text + '</div>');
        html.add('<div class="table-td"><input type="password" id="reg-repwd" class="login-Text1" maxlength="' + reg.rePwd.maxLength + '" /></div>');
        html.add('<div class="table-msg" id="reg-repwd-tip"></div></div><div class="table-tr" id="valid_email"><div class="table-th">' + reg.valid.text + '</div>');
        html.add('<div class="table-td"><input type="text" id="reg-valid" class="login-Text2" maxlength="' + reg.valid.maxLength + '" />&nbsp;');
        html.add(getValidImg() + '</div><div class="table-msg" id="reg-valid-tip"></div></div><div class="table-tr" id="valid_mobile" style="display:none;"><div class="table-th">');
        html.add(reg.mValid.text + '</div><div class="table-td"><input type="text" id="reg-mValid" class="login-Text2" maxlength="' + reg.mValid.maxLength + '" />&nbsp;');
        html.add('<a id="reg-query-code" href="javascript:" title="点击此链接">获取手机验证码</a></div>');
        html.add('<div class="table-msg" id="reg-mValid-tip"></div></div><div class="login-hack"></div><div class="table-note">' + reg.note + '</div>');
        html.add('<div class="table-center">' + reg.ServiceHtml + '</div><div class="table-center"><input type="submit" value="注 册" class="login-button" /></div></form>');
        return html.toString();
    }
    function getPwdHtml(){
        var html = new StringBuffer(), pwd = new GetBackPwd();
        html.add('<div class="table-title" style="text-align:left;">' + pwd.title + '</div><form id="frm_getpwd" action="" method="post" autocomplete="off">');
        html.add('<div class="table-tr"><div class="table-th">' + pwd.uid.text + '</div>');
        html.add('<div class="table-td"><input type="text" id="get-uid" class="login-Text1" maxlength="' + pwd.uid.maxLength + '" /></div>');
        html.add('<div class="table-msg" id="get-uid-tip"></div></div><div class="table-tr"><div class="table-th">' + pwd.valid.text + '</div>');
        html.add('<div class="table-td"><input type="text" id="get-valid" class="login-Text2" maxlength="' + pwd.valid.maxLength + '" />&nbsp;');
        html.add(getValidImg() + '</div><div class="table-msg" id="get-valid-tip"></div></div><div class="login-hack"></div>');
        html.add('<div class="table-center"><input type="submit" value="提 交" class="login-button" /></div></form>');
        return html.toString();
    }
    function getHotelPwd(){
        var html = new StringBuffer(), pwd = new GetHPwd();
        html.add('<div class="table-title" style="text-align:left;">' + pwd.title + '</div><form id="frm_h_getpwd" action="" method="post" autocomplete="off">');
        html.add('<div class="table-tr"><div class="table-th">' + pwd.uid.text + '</div>');
        html.add('<div class="table-td"><input type="text" id="get-h-uid" class="login-Text1" maxlength="' + pwd.uid.maxLength + '" /></div>');
        html.add('<div class="table-msg" id="get-h-uid-tip"></div></div><div class="table-tr"><div class="table-th">' + pwd.member.text + '</div>');
        html.add('<div class="table-td"><input type="text" id="get-h-member" class="login-Text1" maxlength="' + pwd.member.maxLength + '" /></div>')
        html.add('<div class="table-msg" id="get-h-member-tip"></div></div><div class="table-tr"><div class="table-th">' + pwd.valid.text + '</div>');
        html.add('<div class="table-td"><input type="text" id="get-h-valid" class="login-Text2" maxlength="' + pwd.valid.maxLength + '" />&nbsp;');
        html.add(getValidImg() + '</div><div class="table-msg" id="get-h-valid-tip"></div></div><div class="login-hack"></div>');
        html.add('<div class="table-center"><input type="submit" value="提 交" class="login-button" /></div></form>');
        return html.toString();
    }
    var IsIE6 = navigator.userAgent.indexOf('MSIE 6.0') > -1, IsIE = !+'\v1';
    var regx_uid = /^1(3|4|5|8)[0-9]{9}$|^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
    var regx_h_uid = /[A-Za-z0-9]{4,}/ ,regx_name = /^([\u4E00-\u9FA5\w]+)*$/;
    var regx_pwd = /^[a-zA-Z0-9!\@#\$%\^&\*]{4,20}$/;
    var regx_valid = /^[a-zA-Z]{4}$/, regx_mValid = /^[0-9]{5}$/;
    function IsMobile(mob){return /^1(3|5|8)[0-9]{9}$/.test(mob);}
    function RegxInfo(id,IsValidPwd,value,note,success,error,IsServerValid,ErrMsg){
        this.id = id;
        this.Msgid = id + '-tip';
        this.IsValidPwd = IsValidPwd;
        if(!IsValidPwd){this.value = value;}else{this.ValidBy = value;}
        this.note = note;
        this.success = success;
        this.error = error;
        if(IsServerValid){this.IsServerValid = IsServerValid;this.ServerValidError = ErrMsg;}
    }
    var loginValid = {'user':{'IsPass':[false,false,false],'regx':[
        new RegxInfo('#login-uid',false,regx_uid,'','','错误的手机号码或邮箱地址！'),
        new RegxInfo('#login-pwd',false,regx_pwd,'','','密码不能为空且由6-20个字母和数字组成！'),
        new RegxInfo('#login-valid',false,regx_valid,'','','错误，验证码为四位字母组合！')
    ]},'hotel':{'IsPass':[false,false,false],'regx':[
        new RegxInfo('#login-h-uid',false,regx_h_uid,'','','错误的账号！'),
        new RegxInfo('#login-h-pwd',false,regx_pwd,'','','密码不能为空且由6-20个字母和数字组成！'),
        new RegxInfo('#login-h-valid',false,regx_valid,'','','错误，验证码为四位字母组合！')
    ]}};
    var note = '请使用手机号码或邮箱地址注册，仅用于免费获取验证码信息，多来订不会向第三方公开您的联系方式。<br />';
    note += '<span style="color:orange;">若使用邮箱注册，建议使用QQ邮箱获取信息可以更加方便</span>';
    var regValid = {'user':{'IsPass':[false,false,false,false,false,false],'IsRegMobile':false,'IsCanReg':false,'regx':[
        new RegxInfo('#reg-uid',false,regx_uid,note,'可以注册','您输入的不是手机号码或邮箱地址','uid','手机或邮箱已存在，请重新输入！'),
        new RegxInfo('#reg-name',false,regx_name,'请输入您的昵称，不能包含特殊符号','可以注册','昵称不能包含特殊符号，请重新输入','name','该昵称已存在，请重新输入！'),
        new RegxInfo('#reg-pwd',false,regx_pwd,'密码由6-20个字母(区分大小写)和数字组成','','密码含有不允许字符，请重新输入！'),
        new RegxInfo('#reg-repwd',true,'#reg-pwd','请再输入一次您的密码','','两次输入密码不符，请重新输入！'),
        new RegxInfo('#reg-valid',false,regx_valid,'请抄写右边图片上的字母','','错误，验证码为四位字母组合'),
        new RegxInfo('#reg-mValid',false,regx_mValid,'请输入您手机上接收到的短信验证码','','错误，手机验证码为五位数字组合')
    ]}};
    var getValid = {'user':{'IsPass':[false,false],'regx':[
        new RegxInfo('#get-uid',false,regx_uid,'请输入您注册的手机号码或邮箱地址','','您输入的不是手机号码或邮箱地址'),
        new RegxInfo('#get-valid',false,regx_valid,'请抄写右边图片上的字母','','错误，验证码为四位字母组合')
    ]},'hotel':{'IsPass':[false,false,false],'regx':[
        new RegxInfo('#get-h-uid',false,regx_h_uid,'请输入您的账号','','您输入的账号错误'),
        new RegxInfo('#get-h-member',false,regx_uid,'请输入您注册时输入的联系方式（手机号码或电子邮箱）','','您输入的不是手机号码或邮箱地址'),
        new RegxInfo('#get-h-valid',false,regx_valid,'请抄写右边图片上的字母','','错误，验证码为四位字母组合')
    ]}};
    function StrToObj(str){return (new Function('return ' + str))();}
    function ServerPost(d,fn){
        var _query = path + 'aspx/ajaxpage.aspx?' + Math.random();
        $.ajax({type:'post',data:d,url:_query,success:function(s){if(fn){s = StrToObj(s);fn.call(null,s);}},error:function(e){alert(x)}});
    }
    function ChangeClass(obj,cls){for(i in v){obj.removeClass(v[i]);}if(cls){obj.addClass(cls);}}
    function login_blur($i,$msg,$this,t){
        var val = this.value, r = null;
        if(!t){t = 'user';}
        if(val == ''){ChangeClass($msg.html('不能为空！'),v.error);loginValid[t].IsPass[$i] = false;return;}
        loginValid[t].IsPass[$i] = r = $this.value.test(val);
        ChangeClass($msg.html(r?$this.success:$this.error),r?v.none:v.error);
    }
    function register_blur($i,$msg,$this,t){
        if(!t){t = 'user'}
        var valid_mobile = pannel[t].register.bdy.find('div#valid_mobile'), valid_email = pannel[t].register.bdy.find('div#valid_email');
        var val = this.value, r = null;
        if(val == ''){ChangeClass($msg.html('不能为空！'),v.error);regValid[t].IsPass[$i] = false;return;}
        if($this.IsValidPwd){var rePwd = $($this.ValidBy).val();r = (val == rePwd);}else{r = $this.value.test(val);}
        regValid[t].IsPass[$i] = r;
        ChangeClass($msg.html(r?$this.success:$this.error),r?v.success:v.error);
        if(!r){return;}
        if($this.IsServerValid){
            if($this.IsServerValid == 'uid'){
                var d = 'type=cregtestuid&uid=' + val;
                if(regValid[t].IsRegMobile = IsMobile(val)){valid_mobile.show();valid_email.hide();}
                else{valid_mobile.hide();valid_email.show();}
            }else if($this.IsServerValid == 'name'){var d = 'type=cregtestname&nick=' + escape(val);}
            ChangeClass($msg.html('正在验证中...'),v.loading);
            ServerPost(d,function(s){
                regValid[t].IsPass[$i] = regValid[t].IsCanReg = (s.id == 0);
                ChangeClass($msg.html(regValid[t].IsCanReg?$this.success:$this.ServerValidError),regValid[t].IsCanReg?v.success:v.error);
            });
        }
    }
    function getpwd_blur($i,$msg,$this,t){
        var val = this.value, r = null;
        if(!t){t = 'user';}
        if(val == ''){ChangeClass($msg.html('不能为空！'),v.error);getValid[t].IsPass[$i] = false;return;}
        getValid[t].IsPass[$i] = r = $this.value.test(val);
        ChangeClass($msg.html(r?$this.success:$this.error),r?v.success:v.error);
    }
    var initValid = {'user':{
        'login':function(){
            $(loginValid.user.regx).each(function(i,_this){
                var msg = $(_this.Msgid);
                $(_this.id).blur(function(){login_blur.call(this,i,msg,_this,'user')})
                .focus(function(){ChangeClass(msg.html(_this.note),v.none);}).keypress(function(e){
                    if(e.keyCode == 13){login_blur.call(this,i,msg,_this,'user');}
                });
            });
        },
        'register':function(){
            var IsQueryCode = false;
            $(regValid.user.regx).each(function(i,_this){
                var msg = $(_this.Msgid);
                $(_this.id).blur(function(){register_blur.call(this,i,msg,_this,'user')})
                .focus(function(){ChangeClass(msg.html(_this.note),v.note);}).keypress(function(e){
                    if(e.keyCode == 13){register_blur.call(this,i,msg,_this,'user');}
                });
            });
            pannel.user.register.bdy.find('a#reg-query-code').click(function(){//获取手机验证码
                if(regValid.user.IsRegMobile && !regValid.user.IsCanReg){alert('该号码已注册，如果您忘记密码，请使用找回密码');return;}
                if(!IsQueryCode){
                    var sMob = pannel.user.register.bdy.find('input#reg-uid').val();
                    if(IsMobile(sMob)){
                        ServerPost('type=sendmobcode&mob=' + sMob,function(s){if(s.id==0){IsQueryCode = true;}alert(s.msg);});
                    }else{alert('你输入的【' + sMob + '】不是有效手机号码');}
                }else{alert('手机验证码已发送，请耐心等待...');}
            });
        },
        'getpwd':function(){
            $(getValid.user.regx).each(function(i,_this){
                var msg = $(_this.Msgid);
                $(_this.id).blur(function(){getpwd_blur.call(this,i,msg,_this,'user')})
                .focus(function(){ChangeClass(msg.html(_this.note),v.note);}).keypress(function(e){
                    if(e.keyCode == 13){getpwd_blur.call(this,i,msg,_this,'user');}
                });
            });
        }
    },'hotel':{
        'login':function(){
            $(loginValid.hotel.regx).each(function(i,_this){
                var msg = $(_this.Msgid);
                $(_this.id).blur(function(){login_blur.call(this,i,msg,_this,'hotel')})
                .focus(function(){ChangeClass(msg.html(_this.note),v.none);}).keypress(function(e){
                    if(e.keyCode == 13){login_blur.call(this,i,msg,_this,'hotel');}
                });
            });
        },
        'getpwd':function(){
            $(getValid.hotel.regx).each(function(i,_this){
                var msg = $(_this.Msgid);
                $(_this.id).blur(function(){getpwd_blur.call(this,i,msg,_this,'hotel')})
                .focus(function(){ChangeClass(msg.html(_this.note),v.note);}).keypress(function(e){
                    if(e.keyCode == 13){getpwd_blur.call(this,i,msg,_this,'hotel');}
                });
            });
        }
    }};
    var pUser = null, _sid = 'div#span_user', pHotel = null, _hid = 'div#span_hotel';
    var $fun = {
        'user':{'load':null,'login':null,'logout':null,'register':null,'getpwd':null},
        'hotel':{'load':null,'login':null,'logout':null,'getpwd':null}
    };
    var $fun_temp = {
        'user':{'load':null,'login':null,'logout':null,'register':null,'getpwd':null},
        'hotel':{'load':null,'login':null,'logout':null,'getpwd':null}
    };
    var ConInfo = {IsLogin:false,Info:{'uid':0,'name':'','nick':'','mobile':'','photo':'','e':[0,''],'c':[0,''],'ddb':0,'money':0,'news':0}};
    var Hotel = {IsLogin:false,Info:{}};
    var $format = {
        'user':{login_html:'',logout_html:'',_login_html:'',_logout_html:'',html_data:{}},
        'hotel':{login_html:'',logout_html:'',_login_html:'',_logout_html:'',html_data:{}}
    };
    $format.user.html_data.path = $format.hotel.html_data.path = LinkPath;
    $format.user.html_data.login = 'du.login()';
    $format.user.html_data.logout = 'du.logout()';
    $format.user.html_data.register = 'du.register()';
    $format.user.html_data.getpwd = 'du.getpwd()';
    $format.hotel.html_data.login = 'dh.login()';
    $format.hotel.html_data.logout = 'dh.logout()';
    $format.user.html_data.getpwd = 'dh.getpwd()';
    var default_format = {'user':{'login':'','logout':''},'hotel':{'login':'','logout':''}};
    default_format.user.login = '你好，{nick}！<if>|&nbsp;<a href="{path}Consumer/myMailBox.aspx">新消息：{news}</a>';
    default_format.user.login += '&nbsp;<end>|&nbsp;积分：{ddb}&nbsp;|&nbsp;<a href="{path}Consumer/Default.aspx">';
    default_format.user.login += '进入我的多来订</a>&nbsp;|&nbsp;<a href="javascript:{logout};">退出</a>';
    default_format.user.logout = '<a href="javascript:{login};">登录/注册</a>';
    default_format.hotel.login = '你好，{name}！<if>|&nbsp;<a href="{path}Hotel/Main.aspx?lid=myMailBox">新消息：{news}</a>';
    default_format.hotel.login += '&nbsp;<end>|&nbsp;<a href="{path}Hotel/Main.aspx">';
    default_format.hotel.login += '管理我的店铺</a>&nbsp;|&nbsp;<a href="javascript:{logout};">退出</a>';
    default_format.hotel.logout = '<a href="javascript:{login};">店铺管理</a>';
    function format_html(str,t){
        if(!t){t = 'user';}
        var s1 = str.indexOf('<if>'), s2 = str.indexOf('<end>');
        if(s1 > -1 && s2 > -1 && s2 > s1){
            if($format[t].html_data['news'] == 0){str = str.substring(0,s1) + str.substring(s2 + 5);}
            else{str = str.replace(/<(if|end)>/gi,"");}
        }
        return str.replace(/\{(\w+)\}/g,function(a,b){return $format[t].html_data[b]||'';});
    }
    function format_html_data(d,t){
        if(!t || t == 'user'){
            $format.user.html_data.id = d.uid;
            $format.user.html_data.name = d.name;
            $format.user.html_data.nick = d.nick;
            $format.user.html_data.mobile = d.mobile;
            $format.user.html_data.photo = d.photo;
            $format.user.html_data.gx = d.e[0];
            $format.user.html_data.gx_note = d.e[1];
            $format.user.html_data.dj = d.c[0];
            $format.user.html_data.dj_note = d.c[1];
            $format.user.html_data.ddb = d.ddb;
            $format.user.html_data.money = d.money;
            $format.user.html_data.news = d.news;
        }else{
            $format.hotel.html_data.id = d.hid;
            $format.hotel.html_data.name = d.name;
            if(!d.isGroup){
                $format.hotel.html_data.news = d.news;
                $format.hotel.html_data.city = d.city;
                $format.hotel.html_data.tag = d.tag;
                $format.hotel.html_data.pm = d.pm;
            }else{$format.hotel.html_data.isGroup=true,$format.hotel.html_data.news = 0;}
        }
    }
    function format_html_login(t){
        if(!t){t = 'user';}
        var str = $format[t].login_html || default_format[t].login;
        return $format[t]._login_html = format_html(str,t);
    }
    function format_html_logout(t){
        if(!t){t = 'user';}
        var str = $format[t].logout_html || default_format[t].logout;
        return $format[t]._logout_html = format_html(str,t);
    }
    function EvalFun(fn,temp){function Evl(f){if(typeof(f) == 'function'){f();}}if(temp){Evl(temp);temp = null;}else if(fn){Evl(fn);}}
    function UserLoad(){
        ServerPost('type=cload',function(s){
            if(s.id == 0){
                ConInfo.IsLogin = true, ConInfo.Info = s, format_html_data(s,'user');
                var str = $format.user._login_html || format_html_login('user');
                if(!pUser){pUser = $(_sid);}
                pUser.html(str);
                if(!IsSameLocation){setParentTarget(pUser);}
            }
            EvalFun($fun.user.load,$fun_temp.user.load);
        });
    }
    function HotelLoad(){
        ServerPost('type=hload',function(s){
            if(s.id == 0){
                Hotel.IsLogin = true, Hotel.Info = s, format_html_data(s,'hotel');
                var str = $format.hotel._login_html || format_html_login('hotel');
                if(!pHotel){pHotel = $(_hid);}
                pHotel.html(str);
                if(!IsSameLocation){setParentTarget(pHotel);}
            }
            EvalFun($fun.hotel.load,$fun_temp.hotel.load);
        });
    }
    function doLogin(){
        var IsPass = true;
        pannel.user.login.bdy.find('input:submit').focus();
        $(loginValid.user.IsPass).each(function(i,m){IsPass = IsPass && m;});
        if(IsPass){
            var uid = pannel.user.login.bdy.find('input#login-uid').val(), pwd = pannel.user.login.bdy.find('input#login-pwd').val();
            var code = pannel.user.login.bdy.find('input#login-valid').val(), IsRember = pannel.user.login.bdy.find('input#login-member').attr('checked');
            var d = 'type=clogin&uid=' + uid + '&pwd=' + pwd + '&code=' + code + '&ck=' + (IsRember?'1':'0');
            ServerPost(d,function(s){
                if(s.id == 0){
                    ConInfo.IsLogin = true, ConInfo.Info = s, format_html_data(s);
                    var str = $format.user._login_html || format_html_login('user');
                    if(!pUser){pUser = $(_sid);}
                    pUser.html(str);
                    if(!IsSameLocation){setParentTarget(pUser);}
                    CloseP('user');
                    EvalFun($fun.user.login,$fun_temp.user.login);
                }else{alert(s.msg);}
            });
        }else{alert('登录信息填写不完整，不能执行操作！');}
        return false;
    }
    function RefreshLoginInfo(o){
        if(o){for(var i in o){$format.user.html_data[i] = o[i];}}
        pUser.html(format_html_login('user'));
    }
    function doLogout(){
        EvalFun($fun.user.logout,$fun_temp.user.logout);
        ConInfo.IsLogin = false, ConInfo.Info = {};
        var str = $format.user._logout_html || format_html_logout('user');
        pUser.html(str);
        ServerPost('type=clogout');
    }
    function doHLogin(){
        var IsPass = true;
        pannel.hotel.login.bdy.find('input:submit').focus();
        $(loginValid.hotel.IsPass).each(function(i,m){IsPass = IsPass && m;});
        if(IsPass){
            var uid = pannel.hotel.login.bdy.find('input#login-h-uid').val(), pwd = pannel.hotel.login.bdy.find('input#login-h-pwd').val();
            var code = pannel.hotel.login.bdy.find('input#login-h-valid').val();
            var d = 'type=hlogin&uid=' + uid + '&pwd=' + pwd + '&code=' + code;
            ServerPost(d,function(s){
                if(s.id == 0){
                    Hotel.IsLogin = true, Hotel.Info = s, format_html_data(s,'hotel');
                    var str = $format.hotel._login_html || format_html_login('hotel');
                    if(!pHotel){pHotel = $(_hid);}
                    pHotel.html(str);
                    if(!IsSameLocation){setParentTarget(pHotel);}
                    CloseP('hotel');
                    EvalFun($fun.hotel.login,$fun_temp.hotel.login);
                }else{alert(s.msg);}
            });
        }else{alert('登录信息填写不完整，不能执行操作！');}
        return false;
    }
    function doHLogout(){
        EvalFun($fun.hotel.logout,$fun_temp.hotel.logout);
        Hotel.IsLogin = false, Hotel.Info = {};
        var str = $format.hotel._logout_html || format_html_logout('hotel');
        pHotel.html(str);
        ServerPost('type=hlogout');
    }
    function doRegister(){
        var IsPass = true, last = regValid.user.IsPass.length - 1, IsRegMobile = regValid.user.IsRegMobile;
        pannel.user.register.bdy.find('input:submit').focus();
        $(regValid.user.IsPass).each(function(i,m){
            if(i == last - 1){IsPass = IsPass && (IsRegMobile || m);}
            else if(i == last){IsPass = IsPass && (!IsRegMobile || m);}
            else{IsPass = IsPass && m;}
        });
        if(IsPass){
            if(!regValid.user.IsCanReg){alert('该号码已注册，如果您忘记密码，请使用找回密码');return false;}
            var uid = pannel.user.register.bdy.find('input#reg-uid').val(), name = pannel.user.register.bdy.find('input#reg-name').val();
            var pwd = pannel.user.register.bdy.find('input#reg-pwd').val(), code = pannel.user.register.bdy.find('input#reg-valid').val();
            var mCode = pannel.user.register.bdy.find('input#reg-mValid').val();
            var d = 'type=creg&uid=' + uid + '&nick=' + escape(name) + '&pwd=' + pwd + '&code=' + (IsRegMobile?mCode:code);
            ServerPost(d,function(s){alert(s.msg);EvalFun($fun.user.register,$fun_temp.user.register);if(s.id == 0){init('login');du.SetUID(uid);}});
        }else{alert('注册信息填写不完整，不能执行操作！');}
        return false;
    }
    function doGetPwd(){
        var IsPass = true;
        pannel.user.getpwd.bdy.find('input:submit').focus();
        $(getValid.user.IsPass).each(function(i,m){IsPass = IsPass && m;});
        if(IsPass){
            var uid = pannel.user.getpwd.bdy.find('input#get-uid').val(), code = pannel.user.getpwd.bdy.find('input#get-valid').val();
            var IsMob = IsMobile(uid), d = 'type=cgetpwd&uid=' + uid + '&code=' + code;
            ServerPost(d,function(s){
                alert(s.msg);
                if(s.id == 0){EvalFun($fun.user.getpwd,$fun_temp.user.getpwd);init('login');}
                else{pannel.user.getpwd.bdy.find('img.login-CodeImg').attr('src',validImgPath + '?' + Math.random());}
            });
        }else{alert('找回密码信息填写不完整，不能执行操作！');}
        return false;
    }
    function doHGetPwd(){
        var IsPass = true;
        pannel.hotel.getpwd.bdy.find('input:submit').focus();
        $(getValid.hotel.IsPass).each(function(i,m){IsPass = IsPass && m;});
        if(IsPass){
            var uid = pannel.hotel.getpwd.bdy.find('input#get-h-uid').val(), code = pannel.user.getpwd.bdy.find('input#get-h-valid').val();
            var meb = pannel.hotel.getpwd.bdy.find('input#get-h-member').val();
            var IsMob = IsMobile(uid), d = 'type=hgetpwd&uid=' + uid + '&meb=' + meb + '&code=' + code;
            ServerPost(d,function(s){
                alert(s.msg);
                if(s.id == 0){EvalFun($fun.hotel.getpwd,$fun_temp.hotel.getpwd);init('login','hotel');}
                else{pannel.hotel.getpwd.bdy.find('img.login-CodeImg').attr('src',validImgPath + '?' + Math.random());}
            });
        }else{alert('找回密码信息填写不完整，不能执行操作！');}
        return false;
    }
    function Margin(body){
        var left = parseInt(body.css('marginLeft')), right = parseInt(body.css('marginRight'));
        var top = parseInt(body.css('marginTop')), bottom = parseInt(body.css('marginBottom'));
        left = left?left:0, top = top?top:0, right = right?right:0, bottom = bottom?bottom:0;
        return {'left':left,'top':top,'right':right,'bottom':bottom};
    }
    function CreateMask(){
        var div = $('<div class="login-mask-div" style="background-color:#999999;filter:alpha(opacity=10);opacity:0.1;display:none;"></div>');
        var body = $('body'), IsShow = true, mb = Margin(body), frm = null;
        body.append(div);
        if(IsIE6){
            frm = $('<iframe style="position:absolute;top:0px;left:0px;border:0;background-color:#FFFFFF;filter:alpha(opacity=0);opacity:0;z-index:8888;display:none;" src="about:blank"></iframe>');
            body.append(frm);
        }
        function ReSize(){
            if(!IsShow){return;}
            var width = body.width() + mb.left + mb.right, height = body.height() + mb.top + mb.bottom;
            div.css({'width':width,'height':height});
            if(IsIE6){frm.css({'width':width,'height':height});}
        }
        ReSize();
        IsShow = false;
        $(window).resize(ReSize);
        function show(){IsShow = true;div.show();if(IsIE6){frm.show();}}
        function hide(){IsShow = false;div.hide();if(IsIE6){frm.hide();}}
        return {'show':show,'hide':hide};
    }
    function CreatePannel(t){
        var body = $('body'), html = new StringBuffer();
        var login = null, getpwd = null, oo = null;
        if(!t || t == 'user'){
            var pDiv = $('<div class="login-pannel" style="display:none;"></div>');
            html.add('<div class="login-tab"><span id="tab-lgn" class="login-tab-item one"></span>');
            html.add('<span id="tab-reg" class="login-tab-item two-off"></span><span id="tab-get" class="login-tab-item three-off"></span>');
            html.add('</div><div class="login-close"></div><div class="login-hack"></div><div class="login-body"><div class="login-body-t">');
            html.add('<div id="bdy-lgn"></div><div id="bdy-reg" style="display:none;"></div><div id="bdy-get" style="display:none;"></div>');
            html.add('</div><div class="login-body-b"></div></div>');
            body.append(pDiv);
            pDiv.html(html.toString());
            login = {'tab':pDiv.find('span#tab-lgn'),'bdy':pDiv.find('div#bdy-lgn'),'IsInited':false};
            var register = {'tab':pDiv.find('span#tab-reg'),'bdy':pDiv.find('div#bdy-reg'),'IsInited':false};
            getpwd = {'tab':pDiv.find('span#tab-get'),'bdy':pDiv.find('div#bdy-get'),'IsInited':false};
            oo = {'obj':pDiv,'marginTop':parseInt(pDiv.css('marginTop')),'login':login,'register':register,'getpwd':getpwd,'close':pDiv.find('div.login-close')};
            login.tab.click(function(){init('login');});
            register.tab.click(function(){init('register');});
            getpwd.tab.click(function(){init('getpwd');});
        }else{
            var pDiv = $('<div class="login-h-pannel" style="display:none;"></div>');
            html.add('<div class="login-tab"><span id="tab-h-lgn" class="login-tab-item one"></span>');
            html.add('<span id="tab-h-get" class="login-tab-item three-off"></span>');
            html.add('</div><div class="login-close"></div><div class="login-hack"></div><div class="login-body"><div class="login-body-t">');
            html.add('<div id="bdy-h-lgn"></div><div id="bdy-h-get" style="display:none;"></div>');
            html.add('</div><div class="login-body-b"></div></div>');
            body.append(pDiv);
            pDiv.html(html.toString());
            login = {'tab':pDiv.find('span#tab-h-lgn'),'bdy':pDiv.find('div#bdy-h-lgn'),'IsInited':false};
            getpwd = {'tab':pDiv.find('span#tab-h-get'),'bdy':pDiv.find('div#bdy-h-get'),'IsInited':false};
            oo = {'obj':pDiv,'marginTop':parseInt(pDiv.css('marginTop')),'login':login,'getpwd':getpwd,'close':pDiv.find('div.login-close')};
            login.tab.click(function(){init('login','hotel');});
            getpwd.tab.click(function(){init('getpwd','hotel');});
        }
        return oo;
    }
    //info = "login,register,getpwd"
    var nameToHtml = {
        'user':{'login':getLoginHtml,'register':getRegHtml,'getpwd':getPwdHtml},
        'hotel':{'login':getHotelLogin,'getpwd':getHotelPwd}
    };
    var nameToSubmit = {
        'user':{'login':doLogin,'register':doRegister,'getpwd':doGetPwd},
        'hotel':{'login':doHLogin,'getpwd':doHGetPwd}
    };
    var tabClass = [{'index':'login','on':'one','off':'one-off'},{'index':'register','on':'two','off':'two-off'},{'index':'getpwd','on':'three','off':'three-off'}];
    function ChangeTab(p,i){
        for(var j=0,l=tabClass.length;j<l;j++){
            if(i==tabClass[j].index){p[i].tab.removeClass(tabClass[j].off).addClass(tabClass[j].on);}else{
                if(p[tabClass[j].index]){
                    p[tabClass[j].index].tab.removeClass(tabClass[j].on).addClass(tabClass[j].off);
                    p[tabClass[j].index].bdy.hide();
                }
            }
        }
    }
    var mask = null, pannel = {'user':null,'hotel':null}, ScrollTimeoutID = {'user':null,'hotel':null}, IsScroll = {'user':false,'hotel':false};
    function ScrollPannel(t){
        if(!t){t = 'user';}
        var scrolltop = ($(window).scrollTop()||0) + pannel[t].marginTop;
        pannel[t].obj.css('marginTop',scrolltop);
        ScrollTimeoutID[t] = setTimeout(function(){ScrollPannel(t);},100);
        IsScroll[t] = true;
    }
    function CloseP(t){
        if(!t){t = 'user';}mask.hide();
        pannel[t].obj.hide().find('form').each(function(){this.reset();});
        if(pannel[t].login.IsInited){ChangeClass(pannel[t].login.bdy.find('div.table-msg').html(''));}
        if(pannel[t].register && pannel[t].register.IsInited){ChangeClass(pannel[t].register.bdy.find('div.table-msg').html(''));}
        if(pannel[t].getpwd.IsInited){ChangeClass(pannel[t].getpwd.bdy.find('div.table-msg').html(''));}
        if(IsIE6 && IsScroll[t]){clearTimeout(ScrollTimeoutID[t]);ScrollTimeoutID[t] = null;IsScroll[t] = false;}
    }
    function init(info,t){
        if(!t){t = 'user';}
        if(!pUser){pUser = $(_sid);}
        if(!mask){mask = CreateMask();}
        if(!pannel[t]){pannel[t] = CreatePannel(t);pannel[t].close.click(function(){CloseP(t);});}
        mask.show();
        if(pannel[t][info].IsInited){
            pannel[t][info].bdy.find('img.login-CodeImg').attr('src',validImgPath + '?' + Math.random());
            pannel[t][info].bdy.show();
        }else{
            var f = nameToHtml[t][info], html = f();
            pannel[t][info].bdy.html(html).show();
            initValid[t][info]();
            pannel[t][info].bdy.find('form').submit(nameToSubmit[t][info]);
            if(info == 'login'){
                var id = 'input#login-cancel';
                if(t=='hotel'){id = 'input#login-h-cancel';}
                pannel[t].login.bdy.find(id).click(function(){CloseP(t);});
            }
            pannel[t][info].IsInited = true;
        }
        if(info == 'getpwd'){set_getpwd_name(t)}
        pannel[t].obj.show();
        if(IsIE6 && !IsScroll[t]){ScrollPannel(t);}
        ChangeTab(pannel[t],info);
    }
    function set_getpwd_name(t){
        if(!pannel[t].login.IsInited){return;}
        var id = t == 'hotel'?'input#get-h-uid':'input#get-uid';
        var lid = t == 'hotel'?'input#login-h-uid':'input#login-uid';
        var name = pannel[t].login.bdy.find(lid).val();
        if(!name){return;}
        if(pannel[t].getpwd.IsInited){
            var l = pannel[t].getpwd.bdy.find(id).val(name);
            getpwd_blur.call(l.get(0),0,$(loginValid[t].regx[0].Msgid),loginValid[t].regx[0],t);
        }
    }
    window.du = {
        fn:$fun.user,Consumer:ConInfo,
        SetPath:function(p){$format.user.html_data.path = p;},
        SetID:function(id){pUser = $(id);return pUser;},
        SetUID:function(me){
            if(pannel.user.login.IsInited){
                var l = pannel.user.login.bdy.find('input#login-uid').val(me);
                login_blur.call(l.get(0),0,$(loginValid.user.regx[0].Msgid),loginValid.user.regx[0],'user');
            }
        },
        Refresh:function(o){RefreshLoginInfo(o)},
        set_login_format:function(str){$format.user.login_html = str;},
        set_logout_format:function(str){$format.user.logout_html = str;},
        format_html:function(str){if(!ConInfo.IsLogin){return null;}return format_html(str,'user');},
        Mask:function(){return mask||(mask = CreateMask());},
        load:function(f){if(f){$fun_temp.user.load = f;}UserLoad();},
        login:function(f){if(f){$fun_temp.user.login = f;}init('login');},
        logout:function(f){if(f){$fun_temp.user.logout = f;}doLogout();},
        register:function(f){if(f){$fun_temp.user.register = f;}init('register');},
        getpwd:function(f){if(f){$fun_temp.user.getpwd = f;}init('getpwd');}
    };
    window.dh = {
        fn:$fun.hotel,Hotel:Hotel,
        SetPath:function(p){$format.hotel.html_data.path = p;},
        SetID:function(id){pHotel = $(id);return pHotel;},
        SetUID:function(me){
            if(pannel.hotel.login.IsInited){
                var l = pannel.hotel.login.bdy.find('input#login-h-uid').val(me);
                login_blur.call(l.get(0),0,$(loginValid.hotel.regx[0].Msgid),loginValid.hotel.regx[0],'hotel');
            }
        },
        set_login_format:function(str){$format.hotel.login_html = str;},
        set_logout_format:function(str){$format.hotel.logout_html = str;},
        format_html:function(str){if(!Hotel.IsLogin){return null;}return format_html(str,'hotel');},
        load:function(f){if(f){$fun_temp.hotel.load = f;}HotelLoad();},
        login:function(f){if(f){$fun_temp.hotel.login = f;}init('login','hotel');},
        logout:function(f){if(f){$fun_temp.hotel.logout = f;}doHLogout();},
        getpwd:function(f){if(f){$fun_temp.hotel.getpwd = f;}init('getpwd','hotel');}
    };
})();
