/* Copyright (c) 2011 Synology Inc. All rights reserved. */

Ext.ns("SYNO.SDS");Ext.data.Connection.prototype.timeout=120000;Ext.form.BasicForm.prototype.timeout=120;SYNO.SDS.ModalWindow=Ext.extend(Ext.Window,{constructor:function(a){var b=Ext.apply(a||{},{modal:true,closable:false});SYNO.SDS.ModalWindow.superclass.constructor.call(this,b)}});Ext.override(Ext.Container,{getMsgBox:function(){return SYNO.SDS.MessageBox}});SYNO.SDS.AppInstance={};Ext.apply(SYNO.SDS.AppInstance,{getUserSettings:function(a){return SYNO.SDS.UserSettings.getProperty("SYNO.SDS.App.FileStation3",a)},setUserSettings:function(a,b){return SYNO.SDS.UserSettings.setProperty("SYNO.SDS.App.FileStation3",a,b)}});Ext.override(Ext.Component,{getTaskRunner:function(){if(!this.taskRunner){this.taskRunner=new SYNO.SDS.TaskRunner();this.addManagedComponent(this.taskRunner)}return this.taskRunner},addTask:function(a){return this.getTaskRunner().createTask(a)},addAjaxTask:function(a){return this.getTaskRunner().createAjaxTask(a)},getTask:function(a){if(!this.taskRunner){return null}return this.taskRunner.getTask(a)},removeTask:function(b){var a=this.getTask(b);if(a){a.remove()}return a},addManagedComponent:function(a){this.components=this.components||[];this.components.push(a);return a},removeManagedComponent:function(a){this.components=this.components||[];this.components.remove(a);return a},beforeDestroy:function(){this.taskRunner=null;this.components=this.components||[];for(var a=0;a<this.components.length;++a){try{this.components[a].destroy()}catch(b){if(Ext.isDefined(SYNO.SDS.JSDebug)){SYNO.Debug(this.id+" sub-components["+a+"] destroy failed.");SYNO.Debug(this.components[a]);throw b}}}delete this.components}});Ext.WindowMgr.zseed=20000;Ext.menu.Menu.prototype.zIndex=30000;SYNOFILESTATION_LOGINDIALOG=function(b){Ext.apply(this,b||{});var a=this.init();var c={modal:true,width:450,height:350,shadow:true,minWidth:370,minHeight:300,closable:false,collapsible:false,constrain:true,plain:true,title:g_LoginTitle,layout:"fit",items:a,buttons:[{id:"login-btn",text:g_Submit,scope:this,handler:this.onClickSubmit}],keys:[{key:[10,13],fn:this.onClickSubmit,scope:this}],listeners:{afterlayout:{fn:this.onAfterLayout,scope:this,single:true},show:{fn:function(){var d=Ext.getDom("login_username");(function(){d.focus()}).createDelegate().defer(600)},scope:this},beforeshow:{fn:this.reset,scope:this}}};SYNOFILESTATION_LOGINDIALOG.superclass.constructor.call(this,c)};Ext.extend(SYNOFILESTATION_LOGINDIALOG,Ext.Window,{form:null,messageContainer:null,text_field_username:null,text_field_password:null,photo_url:null,init:function(){this.messageContainer=new Ext.form.DisplayField({style:"margin-bottom: 20px; font-size: 12px",hideLabel:true,autoScroll:false,value:g_LoginDesc,disableKeyFilter:true});this.text_field_username=new Ext.form.TextField({tabIndex:1,fieldLabel:g_LoginAccount,name:"username",allowBlank:false,width:170,validateOnBlur:true,validationEvent:"blur",el:"login_username",disableKeyFilter:true});this.text_field_password=new Ext.form.TextField({tabIndex:2,fieldLabel:g_LoginPasswd,name:"passwd",inputType:"password",width:170,validateOnBlur:true,validationEvent:"blur",el:"login_passwd",disableKeyFilter:true});Ext.fly("sds-login-dialog-form").dom.removeAttribute("style");this.form=new Ext.form.FormPanel({applyTo:"sds-login-dialog-form",standardSubmit:true,title:g_Login,url:"login.cgi",method:"POST",labelWidth:100,labelAlign:"right",buttonAlign:"right",trackResetOnLoad:true,width:300,defaluts:{autoScroll:false},formId:"login-form",bodyCfg:{onsubmit:"return true;",target:"login_iframe",action:"login.cgi"},border:false,bodyStyle:"padding: 20px",items:[this.messageContainer,this.text_field_username,this.text_field_password,{id:"login_submit",xtype:"field",hideLabel:true,name:"login_submit",autoCreate:{tag:"input",type:"submit",style:"position: absolute; top: -10000px; left: -10000px;",tabindex:"-1"}},{id:"login_action",name:"action",xtype:"hidden",value:"login"},{xtype:"hidden",name:SYNO.Encryption.CipherKey}]});return this.form},onAfterLayout:function(){this.btnLogin=Ext.getCmp("login-btn");this.mon(this.form.form.el,"submit",this.onSubmit,this)},onSubmit:function(){var a=this.form.form.findField("username"),c=this.form.form.findField("passwd"),e=SYNO.Encryption.CipherKey,d="",b=this.form.form.findField(e),f={};f[a.getName()]=a.getValue();f[c.getName()]=c.getValue();f=SYNO.Encryption.EncryptParam(f);d=f[e]||"";b.setValue(d);this.initIFrameEvent();this.setFormDisabled(true,!!d)},setFormDisabled:function(c,d){var a=this.form.form.findField("username"),b=this.form.form.findField("passwd");this.btnLogin.setDisabled(c);a.setReadOnly(c);b.setReadOnly(c);if(!c||d){a.setDisabled(c);b.setDisabled(c)}},initIFrameEvent:function(){var a=this;if(a.iframe){return}a.iframe=Ext.get("login_iframe");if(Ext.isIE){a.iframe.dom.onreadystatechange=function(){if("complete"!==this.readyState&&"loaded"!==this.readyState){return}a.onCallback()}}else{a.iframe.dom.onload=function(){a.onCallback()}}},reset:function(){this.form.form.reset();var a=this.messageContainer.getEl();a.setWidth(a.getWidth());a.dom.innerHTML="<font size='+1'>"+g_WelcomeMsg+"</br></font>"+g_LoginDesc},onClickSubmit:function(){if(this.form.form.isValid()){Ext.getDom("login_submit").click()}},onCallback:function(){var a=this.messageContainer.getEl();this.setFormDisabled(false);try{var c=Ext.decode(this.iframe.dom.contentWindow.document.body.innerHTML);if(c.success=="login_error"){a.dom.innerHTML="<font size='+1'>"+g_WelcomeMsg+"</br></font><font color='#FF0000'>"+g_LoginError+"</font><br>"+g_LoginDesc}else{if(c.success=="disable_account"){a.dom.innerHTML="<font size='+1'>"+g_WelcomeMsg+"</br></font><font color='#FF0000'>"+g_LoginAccDis+"</font><br>"+g_LoginDesc}else{if(c.success=="error_guest"){a.dom.innerHTML="<font size='+1'>"+g_WelcomeMsg+"</br></font><font color='#FF0000'>"+g_LoginGuestErr+"</font><br>"+g_LoginDesc}else{if(c.success=="error_noprivilege"){a.dom.innerHTML="<font size='+1'>"+g_WelcomeMsg+"</br></font><font color='#FF0000'>"+g_LoginPriErr+"</font><br>"+g_LoginDesc}else{if(c.success=="error_systemfull"){a.dom.innerHTML="<font size='+1'>"+g_WelcomeMsg+"</br></font><font color='#FF0000'>"+g_LoginSysFull+"</font><br>"+g_LoginDesc}else{window.location="/index.cgi";this.close()}}}}}}catch(b){a.dom.innerHTML="<font size='+1'>"+g_WelcomeMsg+"</br></font><font color='#FF0000'>"+g_LoginPriErr+"</font><br>"+g_LoginDesc}},show_dialog:function(){this.show()}});
