
WebmailLogin=function(options)
{this.init(options);};WebmailLogin.prototype={init:function()
{var options=Object.extend({elmLogin:'email',elmPass:'password',elmSubmit:'btsubmit',elmForm:'implogin',elmError:'errorBox',elmCheckboxSSL:'checkboxssl',hostName:'http://mail.sapo.pt/login',staticHostName:'http://imgs.mail.sapo.pt/login',oldAction:'mail.sapo.pt',betaAction:'mail.sapo.pt',actionPath:'/imp/redirect.php',ldapCacheTimeout:3,errorMessages:false,imageLoading:'/imgs/loading.gif',imageSubmit:'/imgs/btnEntrar.gif',cookieName:'server',debug:false},arguments[0]||{});this.options=options;this.hostName=this.options.hostName;this.errorMessages=this.options.errorMessages;this.cookieName=this.options.cookieName;this.emailCached=false;this.actionURI=false;this.submitIt=false;this.loadingLayer=false;this.success=false;this.options.imageLoading=this.options.staticHostName+this.options.imageLoading;this.options.imageSubmit=this.options.staticHostName+this.options.imageSubmit;this.fileGetServer=this.hostName+'/getServer.php';this.fileLdapCache=this.hostName+'/ldapcache.php';this.fileAuth=this.hostName+'/auth.php';},setEvents:function()
{this.elmLogin=$(this.options.elmLogin);this.elmPass=$(this.options.elmPass);this.elmSubmit=$(this.options.elmSubmit);this.elmForm=document[this.options.elmForm];this.elmError=$(this.options.elmError);this.elmCheckboxSSL=$(this.options.elmCheckboxSSL);this.preloadLoading();this.unsetLoading();this.setFocus();},run:function()
{this.setEvents();},isForBeta:function()
{return true;},deleteCookie:function(cookieName)
{var expiresDate='Thu, 01-Jan-1970 00:00:01 GMT';document.cookie=cookieName+'=deleted;expires='+expiresDate+';path=/;';},getServer:function()
{if(this.validaMail()){this.debug('Esta no getServer');if(this.isForBeta()){this.debug('@@@@ BETA');var getServerOptions={method:'get',asynchronous:false,parameters:'login='+encodeURIComponent(this.elmLogin.value)+this.getQueryString(),onComplete:this.setLdapCache.bind(this)};new Ajax.Request(this.fileGetServer,getServerOptions);}else{this.debug('@@@@ OLD');this.elmForm.action=this.getOldAction()+this.options.actionPath;this.setLdapCache();}}},setLdapCache:function(obj)
{this.doAuth=true;this.emailCached=this.elmLogin.value;if(this.isForBeta()){var res=eval('['+obj.responseText+']')[0]||{};if(res.server&&res.server!=null&&typeof(res.server)!='undefined'){this.actionURI=res.server;}else{this.actionURI='http://'+this.options.betaAction;}}
this.debug('Esta no setLdapCache');this.debug('server-> '+this.actionURI);if(!this.submitIt){var email=this.elmLogin.value;var ldapCacheOptions={method:'get',parameters:'login='+encodeURIComponent(email),onSuccess:this.ldapCacheCallBack.bind(this)};this.ldapCacheAjaxRequest=new Ajax.Request(this.fileLdapCache,ldapCacheOptions);setTimeout(function(){this.ldapCacheAjaxRequest.transport.abort();}.bindObj(this),2000);}else{this.ldapCacheCallBack();}},ldapCacheCallBack:function(obj)
{if(!this.submitIt){var req=eval('['+obj.responseText+']')[0];if(req.status=='ok'){this.debug('Correu bem ldapcache');}else{this.debug('Correu MAL ldap cache');this.doAuth=false;this.messageToShow=req.message;}}else{this.submitIt=false;this.checkAuth();}},checkAuth:function()
{if(!this.doAuth){this.showMessage(this.messageToShow);this.success=false;return;}
this.debug('esta no checkAuth');var login=encodeURIComponent(this.elmLogin.value);var pass=encodeURIComponent(this.elmPass.value);this.setLoading();var authOptions={method:'post',asynchronous:false,postBody:'imapuser='+login+'&pass='+pass,onComplete:this.checkAuthCallBack.bind(this)};new Ajax.Request(this.fileAuth,authOptions);},checkAuthCallBack:function(obj)
{if(!obj||obj==null||typeof(obj)=='undefined'||obj.responseText.length==0){if(this.isForBeta()){this.elmForm.action=this.actionURI+this.options.actionPath;}else{this.elmForm.action=this.getOldAction(this.options.oldAction)+this.options.actionPath;}
this.success=true;return;}
var req=eval('['+obj.responseText+']')[0];if(req.status=='ok'&&obj!=null){this.debug('correu bem o AUTH ## '+this.isForBeta());if(this.isForBeta()){if(this.actionURI){this.elmForm.action=this.actionURI+this.options.actionPath;}else{this.submitIt=true;this.getServer();return;}}else{this.elmForm.action=this.getOldAction(this.options.oldAction)+this.options.actionPath;}
this.elmForm.logindata.value='';if(req.logindata&&typeof(req.logindata)!='undefined'&&req.logindata!=null){this.elmForm.logindata.value=req.logindata;}
this.deleteCookie(this.cookieName);this.elmLogin.disabled=false;this.elmPass.disabled=false;this.success=true;}else{this.messageToShow=req.message;this.showMessage(this.messageToShow);this.success=false;this.debug('Correu MAL o AUTH');}},redButton:function()
{this.success=true;},onButtonClick:function()
{if(this.elmLogin.value==''||this.elmPass.value==''){this.setFocus();return false;}
if(this.isCached()){this.debug('yes is cached');this.checkAuth();this.debug('*********** FINAL MESMO 1');return this.success;}else{this.debug('no is not cached');this.submitIt=true;this.getServer();this.debug('*********** FINAL MESMO 2');return this.success;}},showMessage:function(message)
{this.elmError.innerHTML=message;this.unsetLoading();this.backgroundAnim();},backgroundAnim:function()
{this.bgColorsStartColorRGB=255;this.bgColorsEndColorRGB=180;this.bgColorsIncrement=1;this.bgColorsCurRGB=this.bgColorsStartColorRGB;if(this.bgColorsSetIntInstance){clearInterval(this.bgColorsSetIntInstance);this.bgColorsSetIntInstance=false;}
this.bgColorsSetIntInstance=setInterval(function(){if(this.bgColorsCurRGB>this.bgColorsEndColorRGB){this.elmError.style.backgroundColor='rgb('+this.bgColorsCurRGB+', '+this.bgColorsCurRGB+', '+this.bgColorsCurRGB+')';this.bgColorsCurRGB-=this.bgColorsIncrement;}else{this.elmError.style.backgroundColor='transparent';clearInterval(this.bgColorsSetIntInstance);}}.bindObj(this),10);},isCached:function()
{if(this.emailCached){if(this.elmLogin.value==this.emailCached){return true;}}
return false;},setFocus:function()
{try{if(this.elmLogin.value==''){this.elmLogin.focus();}else if(this.elmPass.value==''){this.elmPass.focus();}}catch(e){}},onFocusPass:function()
{var email=this.elmLogin.value;if(this.emailCached!=email){this.getServer();}},validaMail:function()
{if(this.elmLogin.value!=''){return true;}else{return false;}},preloadLoading:function(){var img=new Image();img.src=this.options.imageLoading;return;img=window.document.createElement('img');img.className='preload';img.style.position='absolute';img.style.left='-1000px';img.src=this.options.imageLoading;img.onload=function(){this.parentNode.removeChild(this);};window.document.getElementsByTagName('body')[0].appendChild(img);},setLoading:function()
{this.elmSubmit.src=this.options.imageLoading;this.elmSubmit.disabled=true;this.elmLogin.disabled=true;this.elmPass.disabled=true;},unsetLoading:function()
{this.elmSubmit.src=this.options.imageSubmit;this.elmSubmit.disabled=false;this.elmLogin.disabled=false;this.elmPass.disabled=false;},getOldAction:function(url)
{return'http://'+url;},getQueryString:function()
{var uri=location.href;var hasQuery=/(.*)\?([^$]+)/;if(hasQuery.test(uri)){return'&'+uri.replace(/(.*)\?(.*)/,"$2");}else{return'';}},debug:function(txt)
{if(this.options.debug){$('debug').innerHTML+=txt+'<br />';}}};