
var EnLogin=Class.create({initialize:function(k,lForm,err_fn,notice_fn,succ_fn){this.ver=1;this.key=k;this.loginerr=err_fn;this.noticefn=notice_fn;if(succ_fn)this.succfn=succ_fn;this.loginCounter=0;this.loginLimit=5;this.loginapi='/login/login_api.php';this.loginForm=lForm;$j(this.loginForm).submit($j.proxy(this.doEventLogin,this));var href=new String(window.location.href);this.para={};try{this.para=href.toQueryParams();delete this.para[href];}catch(e){}
if(this.para.rpasswd&&this.para.encypt)
{this.paraAuth=true;$(this.loginForm.password).observe('click',this.monPasswordInput.bindAsEventListener(this));$(this.loginForm.password).observe('keydown',this.monKeyboardPassInput.bindAsEventListener(this));}
this.para.ver=this.ver;},setPreLoginFn:function(cb_fn)
{this.preLoginFn=cb_fn;},doEventLogin:function(event)
{event.preventDefault();var c=true,lForm=this.loginForm;if(this.preLoginFn)c=this.preLoginFn(lForm);if(!c)return;this.doLogin(lForm);return false;},doLogin:function(lForm)
{var passwd=$F(lForm['password']);this.para.email=$F(lForm['email']);if(!this.para.email||this.para.email=="邮箱/手机号/其他用户名")
{this.noticefn('请输入用户账号');lForm['email'].focus();return;}
if(!passwd)
{this.noticefn('请输入密码');lForm['password'].focus();return;}
if(!this.paraAuth)
{this.para.rpasswd=this.enp(passwd);this.para.encypt=this.key;}
var extra_input=['code','url','remember','rcode','rpkey','diarykey','invisible_mode'];for(var i=0;i<extra_input.length;i++)
{var s=extra_input[i];if(lForm[s])
{var input_val=$F(lForm[s]);if(input_val)
{this.para[s]=input_val;}}}
this.loginCounter++;new Ajax.Request(this.loginapi,{method:'post',onSuccess:this.procLogin.bind(this),onException:this.connectionError.bind(this),onFailure:this.serverError.bind(this),postBody:Object.toQueryString(this.para)});$('btn_dl').disable();},procLogin:function(resp)
{var obj=resp.responseJSON;if(obj.loc)
{if(this.succfn)
{this.succfn(obj.loc);}
else
{window.location=obj.loc;}}
else if(obj.encryptKey)
{this.key=obj.encryptKey;if(this.loginCounter>this.loginLimit)
{this.systemHalt();return;}
this.doLogin(this.loginForm);}
else if(obj.errno)
{this.loginerr(this.para,obj.errno);}
$('btn_dl').enable();},monPasswordInput:function(evt)
{if(this.paraAuth)
{this.paraAuth=false;delete this.para.rpasswd;delete this.para.encypt;}
if(this.loginForm.password.value.length>0)
{this.loginForm.password.value='';}
$(this.loginForm.password).stopObserving('click');},monKeyboardPassInput:function(evt)
{if(this.paraAuth)
{this.paraAuth=false;delete this.para.rpasswd;delete this.para.encypt;}
$(this.loginForm.password).stopObserving('keydown');},connectionError:function(resp)
{$('btn_dl').enable();this.systemHalt();},serverError:function(resp)
{$('btn_dl').enable();this.systemHalt();},systemHalt:function()
{},f:function(s,x,y,z)
{switch(s){case 0:return(x&y)^(~x&z);case 1:return x^y^z;case 2:return(x&y)^(x&z)^(y&z);case 3:return x^y^z;}},rotl:function(x,n)
{return(x<<n)|(x>>>(32-n));},tohs:function(str)
{var s="",v;for(var i=7;i>=0;i--){v=(str>>>(i*4))&0xf;s+=v.toString(16);}
return s;},h:function(msg)
{var K=[0x5a827999,0x6ed9eba1,0x8f1bbcdc,0xca62c1d6];msg+=String.fromCharCode(0x80);var l=msg.length/4+2;var N=Math.ceil(l/16);var M=new Array(N);for(var i=0;i<N;i++){M[i]=new Array(16);for(var j=0;j<16;j++){M[i][j]=(msg.charCodeAt(i*64+j*4)<<24)|(msg.charCodeAt(i*64+j*4+1)<<16)|(msg.charCodeAt(i*64+j*4+2)<<8)|(msg.charCodeAt(i*64+j*4+3));}}
M[N-1][14]=((msg.length-1)*8)/Math.pow(2,32);M[N-1][14]=Math.floor(M[N-1][14])
M[N-1][15]=((msg.length-1)*8)&0xffffffff;var H0=0x67452301;var H1=0xefcdab89;var H2=0x98badcfe;var H3=0x10325476;var H4=0xc3d2e1f0;var W=new Array(80);var a,b,c,d,e;for(var i=0;i<N;i++){for(var t=0;t<16;t++)W[t]=M[i][t];for(var t=16;t<80;t++)W[t]=this.rotl(W[t-3]^W[t-8]^W[t-14]^W[t-16],1);a=H0;b=H1;c=H2;d=H3;e=H4;for(var t=0;t<80;t++){var s=Math.floor(t/20);var T=(this.rotl(a,5)+this.f(s,b,c,d)+e+K[s]+W[t])&0xffffffff;e=d;d=c;c=this.rotl(b,30);b=a;a=T;}
H0=(H0+a)&0xffffffff;H1=(H1+b)&0xffffffff;H2=(H2+c)&0xffffffff;H3=(H3+d)&0xffffffff;H4=(H4+e)&0xffffffff;}
return this.tohs(H0)+this.tohs(H1)+this.tohs(H2)+this.tohs(H3)+this.tohs(H4);},bh:function(ar)
{var charHex=new Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');var str="";var len=ar.length;for(var i=0,tmp=len<<2;i<tmp;i++)
{str+=charHex[((ar[i>>2]>>(((i&3)<<3)+4))&0xF)]+
charHex[((ar[i>>2]>>((i&3)<<3))&0xF)];}
return str;},sl:function(s,w)
{var len=s.length;var v=[];for(var i=0;i<len;i+=4){v[i>>2]=s.charCodeAt(i)|s.charCodeAt(i+1)<<8|s.charCodeAt(i+2)<<16|s.charCodeAt(i+3)<<24;}
if(w){v[v.length]=len;}
return v;},en:function(p)
{if(p==""){return"";}
var v=this.sl(p,true);var k=this.sl(this.key,false);if(k.length<4){k.length=4;}
var n=v.length-1;var z=v[n],y=v[0],de=2654435769;var mx,e,p,q=Math.floor(6+52/(n+1)),sum=0;while(0<q--){sum=sum+de&0xffffffff;e=sum>>>2&3;for(p=0;p<n;p++){y=v[p+1];mx=(z>>>5^y<<2)+(y>>>3^z<<4)^(sum^y)+(k[p&3^e]^z);z=v[p]=v[p]+mx&0xffffffff;}
y=v[0];mx=(z>>>5^y<<2)+(y>>>3^z<<4)^(sum^y)+(k[p&3^e]^z);z=v[n]=v[n]+mx&0xffffffff;}
return this.bh(v);},uen:function(str){str=(str+'').toString();return encodeURIComponent(str).replace(/!/g,'%21').replace(/'/g,'%27').replace(/\(/g,'%28').replace(/\)/g,'%29').replace(/\*/g,'%2A').replace(/%20/g,'+').replace(/~/g,'%7E');},enp:function(p)
{return this.h(this.en(this.uen(p)));}});var EnFormLogin=Class.create(EnLogin,{doEventLogin:function(event)
{var lForm=event.target;if(this.preLoginFn)
{var ret=this.preLoginFn(lForm);if(ret==false)
{event.preventDefault();return false;}}
var fields=['encypt','rpasswd','ver'];for(var i=0;i<fields.length;i++)
{var el=fields[i];if(!lForm[el])
{lForm.appendChild(new Element('input',{'type':'hidden','name':el}))}}
if(!this.paraAuth)
{lForm.encypt.value=this.key;lForm.rpasswd.value=this.enp(lForm.password.value);}
else
{lForm.encypt.value=this.para.encypt;lForm.rpasswd.value=this.para.rpasswd;}
lForm.ver.value=this.ver;lForm.password.value=new Array(lForm.password.value.length+1).join('*');return true;}});(function(window){var
window=window,PreLogin={loginForm:null,preEmailCookie:null,input:null,container:null,rmIcon:null,isLite:false,removeIconHTML:'<span id="rm_pc" style="position:absolute; right: 2px; *right:4px; padding:3px; top: 3px; display:none; background-color:#ffffff"><a href="#" title="清除" tabindex="-1" style="background: url(\'http://img1.kaixin001.com.cn/i/del_preaccount.gif\') no-repeat 0 -13px #ffffff; display: inline-block; height: 13px; width: 13px; margin:0;"></a></span>'};PreLogin.init=function(loginForm,emailInput,preEmailCookie){this.isLite=emailInput.parentNode===loginForm?true:false;this.loginForm=loginForm;this.preEmailCookie=preEmailCookie;this.input=$j(emailInput);this.container=this.isLite?$j(loginForm):$j(emailInput.parentNode.parentNode);if(this.isLite||this.container.get(0).tagName.toLowerCase()==='div'){this.initRmIcon();this.initInput();}};PreLogin.initRmIcon=function(){var
rmIcon=this.createRmIcon(),rmTrigger=rmIcon.children('a'),self=this;rmTrigger.mouseover(function(){$j(this).css('backgroundPosition','0 0');}).mouseout(function(){$j(this).css('backgroundPosition','0 -13px');}).click(function(e){self.removePreAccount(e);});};PreLogin.createRmIcon=function(){var iconHTMLObj=$j(this.removeIconHTML);this.container.css('position','relative');iconHTMLObj.appendTo(this.container);if(this.isLite){iconHTMLObj.css('right','7px');}
this.rmIcon=iconHTMLObj;return iconHTMLObj;};PreLogin.removePreAccount=function(e){if(this.input.val()===this.preEmailCookie){this.input.val('');}
this.rmIcon.hide();this.loginForm.password.value='';this.input.unbind('focus');this.input.unbind('blur');this.input.unbind('keyup');this.input.focus();setCookie('_preemail','',0,'/',Kx.Env.domain);if(e){e.preventDefault();e.stopPropagation();}};PreLogin.initInput=function(){var rmIcon=this.rmIcon,self=this;this.input.val(this.preEmailCookie);this.input.focus(function(){rmIcon.show();}).blur(function(){setTimeout(function(){rmIcon.hide();},280);}).keyup(function(){if(this.value!==self.preEmailCookie){self.removePreAccount();}});this.loginForm.password.focus();};$j(document).ready(function(){var emailInput,loginForm=document.loginform,emailCookie=getCookie('_email'),preEmailCookie=getCookie('_preemail');if(loginForm)emailInput=loginForm['email'];if(loginForm&&emailInput&&preEmailCookie&&!emailCookie){setTimeout(function(){PreLogin.init(loginForm,emailInput,preEmailCookie);},80);}});})(window);
