// Copyright 2008 Cloud Engines

if(!CE)var CE={};if(!CE.rTimer){CE.rTimer=function(func,timeout){return window.setTimeout(func,timeout);};CE.uTimer=function(tid){return window.clearTimeout(tid);};CE.rInterval=function(func,timeout){return window.setInterval(func,timeout);};CE.cInterval=function(tid){return window.clearInterval(tid);};}
if(!CE.dce){CE.$=function(n){if(typeof(n)=='string'){return document.getElementById(n);}else{return n;}}
CE.dce=function(t,i,c){var el=document.createElement(t);if(t=='a')el.href='#';if(i)el.id=i;if(c)el.className=c;return el;};CE.dca=function(oc,i,c){var a=CE.dce('a',i,c);if(oc)CE.CEU.attachEvent(a,'click',oc);return a;};CE.dci=function(u,i,c,a){var im=CE.dce('img',i,c);im.border='0';if(a)im.alt=a;if(u)im.src=u;return im;};CE.dcib=function(i,c,a){return CE.dci(CE.STRTAB.lookup('imgbase')+'blank.gif',i,c,a);};CE.dctn=function(t){return document.createTextNode(t);};CE.rac=function(e){var f=CE.$(e);if(f){while(e.hasChildNodes()){var c=e.firstChild;e.removeChild(c);}}};CE.trims=function(s,l,r){if(s){if(s.length>l){if(r){s="..."+s.substr(s.length-l);}else{s=s.substr(0,l)+"...";}}}
return s;};}
if(!CE.aCN){CE.lCN=function(el){var cnl;if(el.className){cnl=el.className.split(' ');}else{cnl=[];}
return cnl;};CE.irCN=function(el,cn,cnl){if(cnl===undefined||cnl===null){cnl=CE.lCN(el);}
for(var i=0;i<cnl.length;i++){if(cnl[i]==cn){cnl.splice(i,1);i--;}}
return cnl;};CE.hCN=function(e,cn){var r=false;var el=CE.$(e);if(el){var cnl=CE.lCN(el,cn);for(var i=0;i<cnl.length;i++){if(cnl[i]==cn){r=true;break;}}}
return r;};CE.aCN=function(e,cn){var el=CE.$(e);if(el){var cnl=CE.irCN(el,cn);cnl[cnl.length]=cn;el.className=cnl.join(' ');}}
CE.rCN=function(e,cn){var el=CE.$(e);if(el){var cnl=CE.irCN(el,cn);el.className=cnl.join(' ');}};CE.tCN=function(e,cn){var el=CE.$(e);if(el){var cnl=CE.lCN(el,cn);var found=false;for(var i=0;i<cnl.length;i++){if(cnl[i]==cn){cnl.splice(i,1);i--;found=true;}}
if(!found){cnl[cnl.length]=cn;}
el.className=cnl.join(' ');}};}
CE.STRTAB=new function(){var that=this;this.ltable={};this.locale='default';this.load=function(locale,src){};function rawLookup(key,a1,a2,a3,a4,a5){if(that.locale in that.ltable){var tbl=that.ltable[that.locale];if(key in tbl){return tbl[key];}else{CE.CEDBG.println("CEU: ERROR: Locale '"+that.locale+"' does not define string '"+key+"'");}}else{CE.CEDBG.println("CEU: ERROR: Locale '"+that.locale+"' not defined");}
var m='---{'+key;if(a1!==undefined){m+='(%1';if(a2){m+=',%2';}
if(a3){m+=',%3';}
if(a4){m+=',%4';}
if(a5){m+=',%5';}
m+=')';}
return m+'}---';}
this.lookup=function(key,a1,a2,a3,a4,a5){var m=rawLookup(key,a1,a2,a3,a4,a5);if(a1!==undefined){m=m.replace(/%1/g,a1);}
if(a2!==undefined){m=m.replace(/%2/g,a2);}
if(a3!==undefined){m=m.replace(/%3/g,a3);}
if(a4!==undefined){m=m.replace(/%4/g,a4);}
if(a5!==undefined){m=m.replace(/%5/g,a5);}
return m;};this.lookupdb=function(key,a1,a2,a3,a4,a5){if(key.substr(0,9)=='%%SQI18N:'){return that.lookup(key.substr(9),a1,a2,a3,a4,a5);}else{return key;}};this.lookupel=function(key,a1,a2,a3,a4,a5){return that.lookupeldoc(document,key,a1,a2,a3,a4,a5);};this.lookupeldoc=function(doc,key,a1,a2,a3,a4,a5){var m=rawLookup(key,a1,a2,a3,a4,a5);var s=m.split('%');var sl=s.length;if(sl<=1){return doc.createTextNode(m);}else{var a=[a1,a2,a3,a4,a5];var i;var span=doc.createElement('span');span.appendChild(doc.createTextNode(s[0]));for(i=1;i<sl;i++){var ai=parseInt(s[i].substring(0,1));if(isNaN(ai)){span.appendChild(doc.createTextNode(s[i]));}else{ai--;var av=a[ai];if(typeof(av)=='function'){av=av();}
if(typeof(av)=='object'){span.appendChild(a[ai]);}else if(av){span.appendChild(doc.createTextNode(av));}else{span.appendChild(doc.createTextNode('--(A'+(ai+1)+')--'));}
var r=s[i].substring(1);if(r){span.appendChild(doc.createTextNode(r));}}}
return span;}};}();CE.CEU=new function(){var that=this;var emailregex=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".\"))@(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,})$/;var __lasteid=0;var __ehandlers={};this.user=null;this.svc=null;function emsg(e,m,a1,a2,a3,a4,a5){var el=CE.CEU.$(e);if(el){CE.rac(el);el.appendChild(CE.STRTAB.lookupel(m,a1,a2,a3,a4,a5));}
el=null;}
function getval(x){var e;if(typeof(x)==='string'){e=x;}else{e=x.value;}
return e.replace(/^\s*(.*?)\s*$/,"$1");}
function onGetUserSuccess(r,data){if(r&&r.user){var loc=r.user.locale;that.user=r.user;that.checkUserLocale(loc);if(data){if(data[0]){var usernameel=CE.$(data[0]);if(usernameel){CE.rac(usernameel);usernameel.appendChild(document.createTextNode(r.user.screenname));}
usernameel=null;}
if(data[1]){var useropsel=CE.$(data[1]);if(useropsel){CE.rac(useropsel);}
useropsel=null;}
if(typeof(data[2])=='function'){data[2]('success',that.user);}}}else{onGetUserFailure(r,data);}}
function onGetUserFailure(r,data){CE.CEDBG.println('CEU: Failed to get user object: '+r);if(data){if(typeof(data[2])=='function'){return data[2]('failure');}}
that.logoutUser(data);}
function onForgotPasswordSuccess(r,data){if(r){if(data){if(data[0]){var el=CE.$(data[0]);if(el){CE.rac(el);}
el=null;}
if(typeof(data[1])=='function'){return data[1]('success',that.user);}}}}
function onForgotPasswordFailure(r,data){var reason=null;if(r&&r['HB-EXCEPTION']){reason=r['HB-EXCEPTION'];}
CE.CEDBG.println('CEU: Failed to login user: '+r);if(data){if(data[0]){emsg(data[0],'ceu.pwresetfail');}
if(typeof(data[1])=='function'){return data[1]('failure',reason);}}}
function onLoginUserSuccess(r,data){if(r&&r.user){that.user=r.user
if(r.valtoken){var ma='';if(data&&data[2]){if(data[2].checked){var date=new Date();date.setTime(date.getTime()+(14*24*60*60*1000));ma=";expires="+date.toGMTString();}}
var ck='valtoken='+r.valtoken+ma+';path=/';CE.CEDBG.println("CEu: Login success: -- Cookie set for: "+ck);document.cookie=ck;}
if(r.user.locale&&CE.LOCALES)
that.checkUserLocale(r.user.locale);if(data){if(data[0]){var el=CE.$(data[0]);if(el){CE.rac(el);}
el=null;}
if(typeof(data[1])=='function'){return data[1]('success',that.user,r.albumid);}}}}
function onLoginUserFailure(r,data){var reason=null;if(r&&r['HB-EXCEPTION']){reason=r['HB-EXCEPTION'];}
if(reason.ecode==811){window.location.replace("almost.html");return;}
CE.CEDBG.println('CEU: Failed to login user: '+r);if(data){if(data[0]){emsg(data[0],'ceu.loginfail');}
if(typeof(data[1])=='function'){return data[1]('failure',reason);}}}
function onNewUserDeviceSuccess(r,data){window.location.replace("almost.html");return;if(r&&r.user){that.user=r.user
if(r.valtoken){var ma='';var ck='valtoken='+r.valtoken+ma+';path=/';CE.CEDBG.println("CEU: New User success: -- Cookie set for: "+ck);document.cookie=ck;}
if(data){if(data[0]){var el=CE.$(data[0]);if(el){CE.rac(el);}
el=null;}
if(typeof(data[1])=='function'){return data[1]('success',that.user);}}}}
function onNewUserDeviceFailure(r,data){var reason=null;if(r&&r['HB-EXCEPTION']){reason=r['HB-EXCEPTION'];}
CE.CEDBG.println('CEU: Failed to create user (with device): '+r);if(data){if(data[0]){if(reason){if(reason.ecode==801){var a=document.createElement("a");a.href=CE.STRTAB.lookup('helpurl');a.target="_blank";a.appendChild(CE.STRTAB.lookupel('view.clickspace'));emsg(data[0],"ceu.nodevicehelp",a);}else{var string=that.errorstrings[""+reason.ecode];if(string){var a=document.createElement("a");a.appendChild(CE.STRTAB.lookupel("ceu.clickhere"));a.href='#';emsg(data[0],string,a);}else{emsg(data[0],'ceu.rpcexcept',reason.ecode,reason.message);}}}else{emsg(data[0],'ceu.newuserdevfail',CE.CEDBG.serialize(r));}
if(typeof(data[1])=='function'){return data[1]('failure',reason);}}}}
function dispatchEvent(event){var e=event||window.event;var tel;if(e.target){tel=that.$(e.target);}else{tel=that.$(e.srcElement);}
if(tel.nodeType==3){if(tel.parentNode){tel=that.$(tel.parentNode);}}
while(tel&&typeof(tel.__EID)==='undefined'&&tel.parentNode){tel=that.$(tel.parentNode);}
if(tel){var h=__ehandlers[tel.__EID+'_'+e.type];if(!h){h=__ehandlers[tel.__EID];}
if(typeof(h)!=='undefined'){this.__EH=h.onEvent;var ret=this.__EH(h,e,tel);this.__EH=null;return ret;}}else{CE.CEDBG.println('CEU: Failed to get target of event!');}}
function kpEnterHelper(p,e,t){var k;k=e.keyCode;if(k==13){if(typeof(p.eobj)==='function'){p.eobj();}else{p.eobj.onEvent(p.eobj);}}}
function iteratetabs(tabobjs,tabpfx,panepfx,match,callback)
{var i;var foundone=false;for(i=tabobjs.length-1;i>=0;i--){var tabobj=tabobjs[i];var tabname=tabobjs[i];if(tabobj&&typeof(tabobj)=="object"){tabname=tabobj.name;}else{tabobj=null;}
var tab=document.getElementById(tabpfx+tabname);var pane=null;if(panepfx!=null){pane=document.getElementById(panepfx+tabname);}
if(tab!=null){if(typeof(callback)=="function"){callback(tabobj,tabname,tab,pane,(match==tabname));}
if(match==tabname){foundone=true;}}}
return foundone;}
this.$=function(n){return CE.$(n);}
this.getCookie=function(n){var ca=document.cookie.split(';');var i;for(i=0;i<ca.length;i++){var c=ca[i];c=c.replace(" ","");if(c.indexOf(n+'=')===0){return c.substring((n+'=').length,c.length);}}
return null;}
this.setCookieTemp=function(n,v){document.cookie=n+'='+v+';path=/';};this.getValtoken=function(){return this.getCookie("valtoken");}
this.isLoggedIn=function(){if(this.getValtoken()){return true;}
return false;}
this.validateEmail=function(e){if(!e){return false;}
if(emailregex.test(e)){return true;}else{CE.CEDBG.println('CEU:   +++ Invalid Email "'+e+'" '+emailregex);return false;}}
this.errorstrings={"606":"ceu.usererror","801":"ceu.nodevice","806":"ceu.alreadyreg","810":"ceu.userexists"};this.notifyError=function(data,ctx,a1,a2,a3,a4,a5){var pane=document.createElement('div');switch(ctx){case null:case undefined:case'MSG':CE.rac(pane);if(typeof(data)=='object'){pane.appendChild(data);}else{pane.appendChild(document.createTextNode(data));}
break;case'RPC':var reason=null;if(data&&data['HB-EXCEPTION']){reason=data['HB-EXCEPTION'];}
if(reason){var errstr=that.errorstrings[""+reason.ecode];if(errstr){emsg(pane,errstr,a1);}else{emsg(pane,"ceu.rpcexcept",reason.ecode,reason.message,a1);}}else{emsg(pane,'ceu.rpcerror',CE.CEDBG.serialize(data),a1);}
break;default:emsg(pane,'ceu.unknownerror',CE.CEDBG.serialize(ctx),CE.CEDBG.serialize(data));break;}
var dlg=new CE.CEU.Dialog(CE.STRTAB.lookup('ceu.error.title'),pane,[{name:'ok',label:CE.STRTAB.lookup('button.ok')}]);dlg.show();dlg=null;}
this.getCalendarDate=function(aDate){var m=aDate.getMonth();var mn=CE.STRTAB.lookup('ceu.month'+m);var d=aDate.getDate();var y=aDate.getYear();if(y<1000){y=y+1900;}
return CE.STRTAB.lookup('ceu.datefmt',mn,d,y);}
this.getDateFromString=function(aString){}
this.trimstring=function(string,maxchars){return CE.trims(string,maxchars-3);}
this.shallowCopy=function(obj){var copy={};for(var i in obj){copy[i]=obj[i];}
return copy;}
this.attachEvent=function(element,type,eobj){if(typeof(eobj.__EID)==='undefined'){if(typeof(element.__EID)==='undefined'){eobj.__EID=''+(++__lasteid);}else{eobj.__EID=element.__EID;}}
if(typeof(__ehandlers[eobj.__EID+'_'+type])==='undefined')
__ehandlers[eobj.__EID+'_'+type]=eobj;element.__EID=eobj.__EID;element['on'+type]=dispatchEvent;}
this.releaseEvent=function(element,type,eobj){if(eobj&&typeof(eobj.__EID)!=='undefined'){try{delete __ehandlers[eobj.__EID+'_'+type];}catch(e){};__ehandlers[eobj.__EID+'_'+type]=null;try{delete eobj.__EID;}catch(e){};}
if(element&&typeof(element.__EID)!=='undefined'){try{delete __ehandlers[element.__EID+'_'+type];}catch(e){};__ehandlers[element.__EID+'_'+type]=null;try{delete element.__EID;}catch(e){};element['on'+type]=null;}};this.releaseAllEvents=function(element,type,removeel,cb){var doit=false;element=CE.$(element);if(element){doit=true;if(cb)doit=cb(element);if(doit)this.releaseEvent(element,type,null);if(element.hasChildNodes()){var children=element.childNodes;for(var i=children.length-1;i>=0;i--){var e=children[i];var r=true;if(e.nodeType==1){r=this.releaseAllEvents(e,type,removeel,cb);if(removeel&&r){element.removeChild(e);}}else{if(removeel&&doit){element.removeChild(e);}}}}}
return doit;};this.attachEnterPressedEvent=function(element,eobj){this.attachEvent(element,'keydown',{onEvent:kpEnterHelper,eobj:eobj});};this.showpane=function(tabobjs,tabpfx,panepfx,match,args){var except=null;var ihidit=null;var numhid=0;var numsel=0;iteratetabs(tabobjs,tabpfx,panepfx,match,function(to,tn,t,p,dm){if(!dm){if(p===null||p.className!='hidden'){numsel++;var hideit=true;if(typeof(to.can_hide)=='function'){hideit=to.can_hide(t,p,match,args);}
if(hideit){t.className='';if(p!=null){p.className='hidden';}
if(typeof(to.notify_hide)=='function'){to.notify_hide(t,p,args);}
ihidit=tn;numhid++;}else{CE.CEDBG.println('CEU: CanHide returned false "'+t.id+'"');}}}});if(numsel<=0||numhid>0){var numshown=0;var numfound=0;iteratetabs(tabobjs,tabpfx,panepfx,match,function(to,tn,t,p,dm){if(dm){if(p==null||p.className=='hidden'){numfound++;var showit=true;if(typeof(to.can_show)=='function'){showit=to.can_show(t,p,args);}
if(showit){t.className='selected';if(p!=null){p.className='visible';window.setTimeout(function(){p.className='visible';},0);}
if(typeof(to.notify_show)=='function'){to.notify_show(t,p,args);}
try{urchinTracker(match);}catch(e){}
numshown++;}}}
return 0;});if(numshown>0){}else{if(numfound>0){}else{CE.CEDBG.println('CEU: No Nav Item "'+tabpfx+match+'" not showable!');}
if(ihidit){CE.CEDBG.println('CEU: Returning to old tab "'+ihidit+'" because show failed!');sqh_show(tabobjs,tabpfx,panepfx,ihidit,null);}}}
if(except){throw except;}
return false;};this.getAbsPos=function(el){if(el.getBoundingClientRect){var rect=el.getBoundingClientRect();return{x:rect.left,y:rect.top};}else{var bo=document.getBoxObjectFor(el);return{x:bo.x,y:bo.y};}};this.init=function(){CE.CEU.user=null;if(!CE.CEU.svc){CE.CEU.svc=new CE.CERPC();}
var l=that.getSearchParam("locale");if(l){l=that.getLocale(l);if(l){that.switchToLocale(l);}}};this.getSearchParam=function(name,decode){var ret=null;if(window.location.search){var idx=window.location.search.indexOf("?"+name+"=");if(idx==-1){idx=window.location.search.indexOf("&"+name+"=");}
if(idx!=-1){ret=window.location.search.slice(idx+name.length+2);idx=ret.indexOf("&");if(idx!=-1){ret=ret.slice(0,idx);}}}
if(ret&&decode)
return decodeURIComponent(ret);else
return ret;};this.logoutUser=function(data){CE.CEDBG.println("CEU: Logging out user");CE.CEU.user=null;var date=new Date();var domain="";var dparts=window.location.host.split(".");if(dparts.length==3){domain=";domain="+"."+dparts[1]+"."+dparts[2];}
date.setTime(date.getTime()+((-1)*24*60*60*1000));var ck='valtoken=;expires='+date.toGMTString()+';path=/';CE.CEDBG.println("CEU: Logout: -- Cookie set for: "+ck);document.cookie=ck;if(domain){ck='valtoken=;expires='+date.toGMTString()+domain+';path=/';document.cookie=ck;}
if(data){if(data[0]){var usernameel=CE.$(data[0]);if(usernameel){CE.rac(usernameel);}
usernameel=null;}
if(data[1]){var useropsel=CE.$(data[1]);if(useropsel){CE.rac(useropsel);}
useropsel=null;}
if(typeof(data[2])=='function'){data[2]('logout');}else if(data[2]){window.location.replace(data[2]);}}};this.isExperimental=function(){return(CE.CEU.user&&CE.CEU.user.flags&&CE.CEU.user.flags.indexOf("experimental")!=-1);};this.getUser=function(usernamedomel,useropsdomel,require){CE.CEU.svc.getUser(onGetUserSuccess,onGetUserFailure,[usernamedomel,useropsdomel,require]);};this.loginUser=function(email,pw,errordomel,cb,remember){var e;var p;var el=CE.$(errordomel);if(el){CE.rac(el);}
el=null;e=getval(email);p=getval(pw);if(!e||e==""||!p||p==""){emsg(errordomel,'ceu.reqarg');}else if(!that.validateEmail(e)){emsg(errordomel,'ceu.invalidemail');}else{CE.CEU.svc.loginUser(e,p,onLoginUserSuccess,onLoginUserFailure,[errordomel,cb,remember]);}};this.forgotPassword=function(email,errordomel,cb){var e;var el=CE.$(errordomel);if(el){CE.rac(el);}
el=null;e=getval(email);if(!e||e==""){emsg(errordomel,'ceu.reqarg');}else if(!that.validateEmail(e)){emsg(errordomel,'ceu.invalidemail');}else{CE.CEU.svc.asyncRPC("POST","initiatePasswordReset",["email",e],onForgotPasswordSuccess,onForgotPasswordFailure,[errordomel,cb]);}};function onUpdatePasswordFailure(r,data){var reason=null;if(r&&r['HB-EXCEPTION']){reason=r['HB-EXCEPTION'];}
if(reason&&reason.ecode&&reason.ecode=="606"){if(data[0]){var a=document.createElement("a");a.innerHTML=CE.STRTAB.lookup("ceu.clickhere");a.href='forgot.html';emsg(data[0],"ceu.reseterror",a);}}else{onLoginUserFailure(r,data);}
if(data.cbf)
data.cbf();}
this.updatePassword=function(pwtoken,shtoken,pw1,pw2,errordomel,cb,cbf){var e;var p;var p2;var el=CE.$(errordomel);if(el){CE.rac(el);}
el=null;p=getval(pw1);p2=getval(pw2);if(((!pwtoken||pwtoken=="")&&(!shtoken||shtoken==""))||!p||p==""){emsg(errordomel,'ceu.reqarg');if(cbf)cbf();}else if(p!=p2){emsg(errordomel,'ceu.pwmatch');if(cbf)cbf();}else{var args=[];if(pwtoken){args.push("passtoken");args.push(pwtoken);}else if(shtoken){args.push("sharetoken");args.push(shtoken);}
args.push("password");args.push(p);CE.CEU.svc.asyncRPC("POST","updatePassword",args,onLoginUserSuccess,onUpdatePasswordFailure,[errordomel,cb,cbf]);}};this.getLocale=function(localeid){if(!localeid||!CE.LOCALES)
return null;for(var i=0;i<CE.LOCALES.length;i++){if(CE.LOCALES[i].id==localeid){return CE.LOCALES[i];}}
return null;}
function switchToLocale(locale){if(locale==null)return;var a=CE.CEU.$("celocaledisplay");if(a){CE.rac(a);a.appendChild(CE.dctn('('+locale.name));if(locale.beta&&eval(locale.beta)){var beta=CE.dce('span',null,'cebetatag');beta.appendChild(CE.dctn(' beta'));a.appendChild(beta)}
a.appendChild(CE.dctn(')'));}
locale=locale.path;var pa=window.location.pathname.split("/");var pn="";if(pa.length>2){if(pa[1]==locale){return;}
for(var i=2;i<pa.length;i++){pn+="/"+pa[i];}}else if(locale==""){return;}else if(pa.length>1){for(var i=1;i<pa.length;i++){pn+="/"+pa[i];}}
if(locale!=""){pn="/"+locale+pn;}
window.location.replace(pn+window.location.search);}
this.switchToLocale=function(l){return switchToLocale(l);}
function onUpdateUserLocaleSuccess(r,l){updateLocaleCookie(l.id);switchToLocale(l);}
function updateLocaleCookie(locale){var date=new Date();if(locale){date.setTime(date.getTime()+(14*24*60*60*1000));ma=";expires="+date.toGMTString();var ck="locale="+locale+ma+";path=/";document.cookie=ck;}else{date.setTime(date.getTime()+((-1)*24*60*60*1000));var ck='locale=;expires='+date.toGMTString()+';path=/';document.cookie=ck;}}
function updateUserLocale(ev){if(that.getCookie("locale")==ev.locale.id){if(ev.dialog){ev.dialog.hide();ev.dialog=null;}
return false;}
if(that.getValtoken()){if(ev&&ev.locale){CE.CEU.svc.asyncRPC("POST","updateUser",["locale",ev.locale.id],onUpdateUserLocaleSuccess,null,ev.locale);}}else{updateLocaleCookie(ev.locale.id);switchToLocale(ev.locale);}
return false;}
this.populateLocaleList=function(elid,clsname,showcur,dlg){var curLocale=that.getCookie("locale");if(!curLocale)
curLocale='';var el=CE.CEU.$(elid);if(el){for(var i=0;i<CE.LOCALES.length;i++){if(CE.LOCALES[i].name&&(CE.LOCALES[i].experimental!='1'||CE.CEU.isExperimental())){var useClass=clsname;if(showcur&&((curLocale==CE.LOCALES[i].id)||(curLocale==''&&i==0)))
useClass+=' '+'bold';var spn=CE.dce('span',null,useClass);var a=CE.dca({onEvent:updateUserLocale,locale:CE.LOCALES[i],dialog:dlg});a.appendChild(CE.dctn(CE.LOCALES[i].name));spn.appendChild(a)
if(CE.LOCALES[i].beta&&eval(CE.LOCALES[i].beta)){var beta=CE.dce('span',null,'cebetatag');beta.appendChild(CE.dctn(' beta'));spn.appendChild(beta)}
el.appendChild(spn)}}}}
this.checkUserLocale=function(localeid){var l=that.getLocale(localeid);if(l){updateLocaleCookie(localeid);switchToLocale(l);}}
this.ensureCurrentLocale=function(){var localeid=that.getCookie("locale");if(localeid){var l=that.getLocale(localeid);if(l){switchToLocale(l);}}}
this.newUserDevice=function(email,pw,pw2,devid,errordomel,cb){var e;var p;var p2;var d;var el=CE.$(errordomel);if(el){CE.rac(el);}
el=null;e=getval(email);p=getval(pw);p2=getval(pw2);d=getval(devid);d=d.toUpperCase();if(!e||e==""||!p||p==""||!p2||p2==""||!d||d==""){emsg(errordomel,'ceu.reqarg');}else if(!that.validateEmail(e)){emsg(errordomel,'ceu.invalidemail');}else if(p!=p2){emsg(errordomel,'ceu.pwmatch');}else{CE.CEU.svc.asyncRPC('POST','createUserDevice',['email',e,'password',p,'devtoken',d,"domain",window.location.hostname],onNewUserDeviceSuccess,onNewUserDeviceFailure,[errordomel,cb]);}}
this.showInputDialog=function(title,message,inputcls,inputid,inputtype,btntext,cb,dflt){var root=CE.dce("div");var cnt=CE.dce("div");var sd=CE.dce("div","","label");root.appendChild(cnt);sd.appendChild(CE.dctn(CE.STRTAB.lookup(message)));cnt.appendChild(sd);sd=CE.dce("div","ceinputdlg_error","dlgerr");cnt.appendChild(sd);sd=CE.dce("div");var input=CE.dce("input",inputid,inputcls+" extramarginbottom");input.type=inputtype;if(dflt)input.value=dflt;sd.appendChild(input);cnt.appendChild(sd);var dlg=new CE.CEU.Dialog(CE.STRTAB.lookup(title),root,[{name:'reg',label:CE.STRTAB.lookup(btntext),callback:cb},{name:'cancel',label:CE.STRTAB.lookup('ceui.cancel')}],null,false,"widish");dlg.show();CE.$(inputid).focus();CE.CEU.attachEnterPressedEvent(CE.$(inputid),function(){if(cb())dlg.hide();});}
this.showMultiInputDialog=function(title,inputs,btntext,cb){var root=CE.dce("div");var cnt=CE.dce("div");var sd=CE.dce("div","ceinputdlg_error","dlgerr");cnt.appendChild(sd);for(var i=0;i<inputs.length;++i){if(inputs[i].inputtype=='div'){cnt.appendChild(inputs[i].div);}else{sd=CE.dce("div","","label");root.appendChild(cnt);sd.appendChild(CE.dctn(CE.STRTAB.lookup(inputs[i].message)));if(inputs[i].twoline){cnt.appendChild(sd);sd=CE.dce("div");}
var input=CE.dce("input",inputs[i].inputid,inputs[i].inputcls+" extramarginbottom");input.type=inputs[i].inputtype;if(inputs[i].dflt){if(inputs[i].inputtype!='checkbox'){input.value=inputs[i].dflt;}}
sd.appendChild(input);if(inputs[i].dflt&&inputs[i].inputtype=='checkbox'){if(inputs[i].lnk){var lnk=CE.dca({onEvent:function(eh){window.open(eh.lnk);return false;},lnk:inputs[i].lnk},"","extramarginbottom");lnk.appendChild(CE.dctn(inputs[i].dflt));sd.appendChild(CE.dctn(' '));sd.appendChild(lnk);}else{var spn=CE.dce("span","","extramarginbottom");spn.appendChild(CE.dctn(' '+inputs[i].dflt));sd.appendChild(spn);}}
cnt.appendChild(sd);}}
var dlg=new CE.CEU.Dialog(CE.STRTAB.lookup(title),root,[{name:'reg',label:CE.STRTAB.lookup(btntext),callback:cb},{name:'cancel',label:CE.STRTAB.lookup('ceui.cancel')}],null,false,"widish");dlg.show();var focused=false;for(var i=0;i<inputs.length;++i){if(inputs[i].inputtype!='div'){CE.CEU.attachEnterPressedEvent(CE.$(inputs[i].inputid),function(){if(cb())dlg.hide();});if(!focused){CE.$(inputs[i].inputid).focus();focused=true;}}}
return dlg;}
this.xmlEncode=function(text)
{var result=text;var amp=/&/gi;var gt=/>/gi;var lt=/</gi;var quot=/"/gi;var apos=/'/gi;var helpemacs=/"/gi;var xml_gt="&#62;";var xml_lt="&#38;#60;";var xml_amp="&#38;#38;";var xml_quot="&#34;";var xml_apos="&#39;";result=result.replace(amp,xml_amp);result=result.replace(quot,xml_quot);result=result.replace(lt,xml_lt);result=result.replace(gt,xml_gt);result=result.replace(apos,xml_apos);return result;}
this.getFlashMovieElement=function(movieName){if(navigator.appName.indexOf("Microsoft")!=-1){return window[movieName];}else{return document[movieName];}};this.getFlashVersion=function(){var version=[0,0,0];if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){version=x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split(".")}}else{var axo=null;try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");version=[6,0,21];axo.AllowScriptAccess="always";}catch(e){if(version[0]==6){axo=null;return version;}}}
if(axo!=null){version=axo.GetVariable("$version").split(" ")[1].split(",");}
axo=null;}
return version;}
this.getFlashUpgradeHTML=function(){var div=CE.dce('div');div.className='flashupgrade';var a=CE.dce('a');a.className='sq';a.href=CE.STRTAB.lookup('flashurl');a.appendChild(CE.STRTAB.lookupel('getithere'));div.appendChild(CE.STRTAB.lookupel('flashupgrade',a));return div;}
this.padInt=function(n,len){s=n.toString();if(s.length<len){s=('0000000000'+n.toString()).slice(-len);}
return s;}}();CE.CEU.Dialog=function(header,message,buttonlist,doSetFocus,noclose,extraclass,ech,quickClose){var that=this;var hidediv,dlghldr,dlgdiv,hdrdiv,hdrmsg,msgdiv,btndiv,btnafter,shown=false;var buttons=[];var focushelper=doSetFocus;var hdrclear=null;function onButtonClick(btn){if(btn.callback==undefined){that.hide();}else{if(btn.callback(btn.name)){that.hide();}}}
hidediv=document.createElement('div');hidediv.className="CEUDialog_hide";var padNum=CE.CEU.$('CEUDialog_hide_div')?2:0;hidediv.id="CEUDialog_hide_div"+(padNum?padNum:'');if(padNum)
hidediv.style.zIndex=100+padNum;if(quickClose){hidediv.onclick=function(){that.hide();return false;};}
dlghldr=document.createElement('div');if(ech){dlghldr.className="CEUDialog_holder "+ech;}else{dlghldr.className="CEUDialog_holder";}
dlgdiv=document.createElement('div');if(extraclass){dlgdiv.className="CEUDialog "+extraclass;}else{dlgdiv.className="CEUDialog";}
if(padNum)
dlgdiv.style.zIndex=101+padNum;dlghldr.appendChild(dlgdiv);var hdredge=CE.dce('div',null,'CEUDialog_hdredge');hdredge.appendChild(CE.dci(CE.STRTAB.lookup('imgbase')+'dialog-edge-topleft.png',null,'CEUDialog_topleft'));hdredge.appendChild(CE.dce('div',null,'CEUDialog_top'));hdredge.appendChild(CE.dci(CE.STRTAB.lookup('imgbase')+'dialog-edge-topright.png',null,'CEUDialog_topright'));dlgdiv.appendChild(hdredge);var dlginner=CE.dce('div',null,'CEUDialog_inner');dlgdiv.appendChild(dlginner);hdrdiv=document.createElement('div');hdrdiv.className='CEUDialog_hdr';if(!noclose){hdrclear=document.createElement('a');hdrclear.className='CEUDialog_hdrbutton';hdrclear.href='#';(function(h,t){h.onclick=function(){t.hide();return false;}})(hdrclear,that);var im=document.createElement('img');im.src=CE.STRTAB.lookup('imgbase')+'dialog-close-x.png';im.alt=CE.STRTAB.lookup('ceu.close');hdrclear.appendChild(im);im=null;hdrdiv.appendChild(hdrclear);}
hdrmsg=document.createElement('h3');hdrdiv.appendChild(hdrmsg);dlginner.appendChild(hdrdiv);var hdrsep=CE.dce('div',null,'CEUDialog_hdrsep');dlginner.appendChild(hdrsep);el=document.createElement('div');el.className='CEUDialog_msg';msgdiv=document.createElement('div');el.appendChild(msgdiv);dlginner.appendChild(el);el=null;btndiv=document.createElement('div');btndiv.className='CEUDialog_btn';btnafter=document.createElement('div');btnafter.className='afterclear';btndiv.appendChild(btnafter);dlginner.appendChild(btndiv);this.onhide=null;this.addButton=function(bname,blabel,bcallback){if(blabel==undefined)blabel=bname;var bel=document.createElement('a');bel.className='cebutton';bel.href='#';var bspan=document.createElement('span');bel.appendChild(bspan);var btxt=document.createTextNode(blabel);bspan.appendChild(btxt);var b={name:bname,label:blabel,callback:bcallback,element:bel};buttons.push(b);bel.onclick=function(){onButtonClick(b);return false;};if(btnafter){btndiv.insertBefore(bel,btnafter);}else{btndiv.appendChild(bel);}}
this.removeButton=function(bname){for(i=0;i<buttons.length;i++){if(buttons[i]['name']==bname){if(btndiv)btndiv.removeChild(buttons[i].element);buttons.splice(i,1);break;}}}
if(typeof(buttonlist)=='string'){this.addButton(buttonlist);}else if(buttonlist){for(i=0;i<buttonlist.length;i++){if(typeof(buttonlist[i])=='object'){this.addButton(buttonlist[i].name,buttonlist[i].label,buttonlist[i].callback);}else{this.addButton(buttonlist[i]);}}}
this.setHeader=function(header){hdrmsg.innerHTML=header;}
this.setHeader(header);this.setMessage=function(message){CE.rac(msgdiv);if(typeof(message)=='string'){msgdiv.appendChild(document.createTextNode(message));}else if(message){msgdiv.appendChild(message);}}
this.setMessage(message);this.isShowing=function(){return shown;}
this.show=function(){if(!shown){shown=true;document.body.appendChild(hidediv);document.body.appendChild(dlghldr);dlgdiv.style.left=Math.floor(hidediv.offsetWidth/2-dlgdiv.offsetWidth/2)+'px';dlgdiv.style.top=Math.floor(hidediv.offsetHeight/2-dlgdiv.offsetHeight/2)+'px';if(typeof(focushelper)=='function'){focushelper();}else{if(hdrclear){hdrclear.focus();}}}}
this.hide=function(){if(shown){if(that.onhide){if(typeof that.onhide=='function'){that.onhide(that);}}
document.body.removeChild(dlghldr);document.body.removeChild(hidediv);shown=false;}}
this.destroy=function(){this.hide();for(i=0;i<buttons.length;i++){buttons[i].element.onclick=null;buttons[i].element=null;}
focushelper=null;buttons=null;btndiv=null;msgdiv=null;hdrmsg=null;hdrdiv=null;dlgdiv=null;dlghldr=null;hidediv=null;}};var dateFormat=function(){var token=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,timezone=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,timezoneClip=/[^-+\dA-Z]/g,pad=function(val,len){val=String(val);len=len||2;while(val.length<len)val="0"+val;return val;};return function(date,mask,utc){var dF=dateFormat;if(arguments.length==1&&Object.prototype.toString.call(date)=="[object String]"&&!/\d/.test(date)){mask=date;date=undefined;}
date=date?new Date(date):new Date;if(isNaN(date))throw SyntaxError("invalid date");mask=String(dF.masks[mask]||mask||dF.masks["default"]);if(mask.slice(0,4)=="UTC:"){mask=mask.slice(4);utc=true;}
var _=utc?"getUTC":"get",d=date[_+"Date"](),D=date[_+"Day"](),m=date[_+"Month"](),y=date[_+"FullYear"](),H=date[_+"Hours"](),M=date[_+"Minutes"](),s=date[_+"Seconds"](),L=date[_+"Milliseconds"](),o=utc?0:date.getTimezoneOffset(),flags={d:d,dd:pad(d),ddd:CE.STRTAB.lookup('ceu.day'+D),dddd:CE.STRTAB.lookup('ceu.dayfull'+D),m:m+1,mm:pad(m+1),mmm:CE.STRTAB.lookup('ceu.month'+m),mmmm:CE.STRTAB.lookup('ceu.monthfull'+m),yy:String(y).slice(2),yyyy:y,h:H%12||12,hh:pad(H%12||12),H:H,HH:pad(H),M:M,MM:pad(M),s:s,ss:pad(s),l:pad(L,3),L:pad(L>99?Math.round(L/10):L),t:H<12?"a":"p",tt:H<12?"am":"pm",T:H<12?"A":"P",TT:H<12?"AM":"PM",Z:utc?"UTC":(String(date).match(timezone)||[""]).pop().replace(timezoneClip,""),o:(o>0?"-":"+")+pad(Math.floor(Math.abs(o)/60)*100+Math.abs(o)%60,4),S:["th","st","nd","rd"][d%10>3?0:(d%100-d%10!=10)*d%10]};return mask.replace(token,function($0){return $0 in flags?flags[$0]:$0.slice(1,$0.length-1);});};}();dateFormat.masks={"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"};Date.prototype.format=function(mask,utc){return dateFormat(this,mask,utc);};if(!Array.prototype.indexOf){Array.prototype.indexOf=function(elt){var len=this.length>>>0;var from=Number(arguments[1])||0;from=(from<0)?Math.ceil(from):Math.floor(from);if(from<0)
from+=len;for(;from<len;from++){if(from in this&&this[from]===elt)
return from;}
return-1;};}