(function(){var ui={settings:{remainingInvites:20,autoCloseTimer:4000,dropDownSideMenu:{overrideClick:true},dropDownMenu:{doDropDown:true},prettyUsers:{selector:".prettyUsers",separator:",",listParentElement:"ul",listParentClass:"prettyUsersList",listChildTemplate:'<li rel=":value">:value</li>'},characterCounter:{maxCharacters:255,messageRemaining:"characters remaining",selector:".charCounter"},selectors:{clearOnFocus:"input.clearOnFocus",closeStatusMessages:".message a.close",autoCloseStatusMessages:".auto-close",passwordStrengthMeter:".strengthMeter",dropDownMenu:[".main-menu","#languages"],dropDownSideMenu:[".side-menu h2 a"]},urls:{suggestUserName:"#",logout:""},googleAnalyticsVar:""},usernameRequested:false,heartbeatInterval:null,heartbeatMaxSecond:900,heartbeatSeconds:0,userCookieData:null,init:function(){var me=this;$(document).ready(function(){me.dropDownMenu();me.dropDownSideMenu();me.setUserBox();me.clearOnFocus();me.closeStatusMessages();me.prettyUsers();me.characterCounter();me.bindStrengthMeter();me.setInputClasses();window.setTimeout(function(){me.heartbeat();},5000);me.bossKeyCapture();me.bindOnSubmitForms();$.nyroModalSettings({bgColor:"#fff",width:609,height:320,minWidth:250,minHeight:180,closeSelector:".closeNyro",closeButton:"",zIndexStart:1200});$(window).load(function(){window.setTimeout(function(){me.checkLocale();},1500);}); me.setGoogleAnalyticsVar();});this._cache={};},preloadImages:function(){var args_len=arguments.length;for(var i=args_len;i--;){var cacheImage=document.createElement("img");cacheImage.src=arguments[i];cache.push(cacheImage);}},heartbeat:function(){var userObj=this.readUserCookie();if(userObj.userID!==null){var url="/v"+SE.version+"/heartbeat.php";$.ajax({type:"POST",url:url,data:{uid:userObj.userID}});if(this.heartbeatInterval===null){var me=this;this.heartbeatInterval=window.setInterval(function(){me.heartbeatSeconds+=10;if(me.heartbeatMaxSecond>me.heartbeatSeconds){me.heartbeat.call(me);}else{window.clearInterval(me.heartbeatInterval);}},10000);}}},logout:function(){$.ajax({type:"POST",url:this.settings.urls.logout,success:function(){}});},readUserCookie:function(){if(this.userCookieData===null){$.Jookie.Initialise("user",0,false);var userObj={};var list=["uid","un","a","eid","msg","of","ch","my","cr","t","o"];var listFull=["userID","username","avatar","experienceID","messages","onlineFriends","challenges","money","credits","type","isOnline"];var i=0,l=0;for(i=0,l=list.length;i<l;i++){try{userObj[listFull[i]]=$.Jookie.Get("user",list[i]);}catch(e){userObj[listFull[i]]=null;}}this.userCookieData=userObj;}return this.userCookieData;},dropDownMenu:function(){var selectors=this.settings.selectors.dropDownMenu;if(typeof selectors!=="object"){selectors=[selectors];}if(this.settings.dropDownMenu.doDropDown){for(var i=0,l=selectors.length;i<l;i++){var children=$(selectors[i]).children();$(children).each(function(){var uls=$(this).find("ul");if(uls.length>0){$(this).bind("mouseenter",function(){$(this).find("ul").show();});$(this).bind("mouseleave",function(){$(this).find("ul").hide();});}});}}},dropDownSideMenu:function(){var selectors=this.settings.selectors.dropDownSideMenu;if(typeof selectors!=="object"){selectors=[selectors];}if(this.settings.dropDownSideMenu.overrideClick){for(var i=0,l=selectors.length;i<l;i++){var children=$(selectors[i]);$(children).each(function(){$(this).bind("click",function(){if(!$(this).parent().parent().hasClass("active")){$(this).parent().parent().find("ul").toggle();$(this).toggleClass("open");}return false;});});}}},clearOnFocus:function(){$(this.settings.selectors.clearOnFocus).bind("focus blur",function(e){if(e.type=="blur"&&this.value==""){this.value=this.defaultValue;}else{if(e.type=="focus"&&this.value==this.defaultValue){this.value="";}}});return this;},setUserBox:function(){var me=this;var userObj=this.readUserCookie();$("#visitor").hide();$("#active-user").hide();$("#registered-user").hide();$("#login-below").hide();if(userObj.username!==null&&typeof userObj.username!="undefined"&&userObj.isOnline){var box=null;var boxID=null;var prefix="";if(userObj.type=="r"){prefix="registered";}else{if(userObj.type=="a"){prefix="active";}}boxID=prefix+"-user";box=$("#"+boxID);var i,l=0;if(box!==null){var html=box.html();if(html===null){return;}var listFull=["userID","username","avatar","experienceID","messages","onlineFriends","challenges","money","credits","type","isOnline"];var bHasUnreadMessages=false;var bHasChallenges=false;for(i=0,l=listFull.length;i<l;i++){var repString="\\:"+listFull[i];var myregexp=new RegExp(repString,"g");var txt=userObj[listFull[i]];if(listFull[i]=="username"){txt=this.truncateWord(txt,12);}else{if(listFull[i]=="messages"){if(parseInt(txt,10)>0){bHasUnreadMessages=true;}}else{if(listFull[i]=="challenges"){if(parseInt(txt,10)>0){bHasChallenges=true;}}}}html=html.replace(myregexp,txt);}box.html(html);if(bHasUnreadMessages){$("#active-user li.inbox").addClass("has-unread");$("#registered-user span.messages").addClass("has-unread");}if(bHasChallenges){$("#"+prefix+"ChallengeOverview").show();$("#"+prefix+"ChallengeCreate").hide();me.fadeInAndOut("#"+prefix+"ChallengeOverview a");}else{$("#"+prefix+"ChallengeOverview").hide();$("#"+prefix+"ChallengeCreate").show();}box.toggle();var avatarObj=$("#avatar-"+boxID);avatarObj.show();var fullPath=avatarObj.html();fullPath=fullPath.substr(0,fullPath.lastIndexOf("/")+1);fullPath+=userObj.avatar+"&p=1";var urlParts=fullPath.split("?");var queryStr=urlParts[1];var params=queryStr.split("&");i=params.length;var flashvars={};var tmp=null;while(i--){tmp=params[i].split("=");flashvars[tmp[0]]=tmp[1];}params={};params.wmode="transparent";var attributes={};swfobject.embedSWF(urlParts[0],"avatar-"+boxID,"50","50","9.0.0",false,flashvars,params,attributes);}}else{if(userObj.type=="l"){$("#visitor").hide();$("#login-below").show();}else{$("#visitor").show();}}$(".user-panel").css("position","static");$(".user-panel").css("top","0px");return this;},truncateWord:function(value,maxChars){maxChars=parseInt(maxChars,10);if(value.length>maxChars){value=value.substr(0,maxChars)+"..";}return value;},closeStatusMessages:function(){var me=this;$(this.settings.selectors.closeStatusMessages).bind("click",function(e){e.preventDefault();me._closeMessage.call(this);return false;});return this;},_closeMessage:function(){var me=this;if($(me).get(0).nodeName.toLowerCase()=="a"){me=$(me).parent();}$(me).fadeOut(1000);},autoCloseStatusMessages:function(){var lib=this;$(this.settings.selectors.autoCloseStatusMessages).each(function(){var me=this;window.setTimeout(function(){lib._closeMessage.call(me);},lib.settings.autoCloseTimer);});return this;},autoShowHideStatusMessage:function(id){var box=$("#"+id);if(box){box.fadeIn(1000);var me=this;window.setTimeout(function(){me._closeMessage.call(box);},me.settings.autoCloseTimer+1000);}return this;},setInputClasses:function(){if(jQuery.browser.msie){$("input").each(function(){var me=this;var type=me.type;type=type.charAt(0).toUpperCase()+type.substr(1);$(me).addClass("input"+type);});}return this;},setButtonClicked:function(obj,hidden_id){var re=new RegExp(/\[(.*)\]/);var name=obj.name;var matches=name.match(re);if(matches){name=matches[1];}var obj2=document.getElementById(hidden_id);var obs=document.getElementsByName(obj2.name);for(var i=0,l=obs.length;i<l;i++){if(obs[i].form==obj.form){obs[i].value=name;}}},checkDependentCheckboxes:function(selMainCB){var selDependent="[name='"+$(selMainCB).val()+"[]']";$(selMainCB).click(function(){var isChecked=$(this).get(0).checked;$(selDependent).each(function(){$(this).get(0).checked=isChecked;});});},appendNewAddress:function(selTable,selButton,arrOtherSelectors,callback){if(typeof this._cache.tplAppendNewAddress=="undefined"){var children=$(selTable).find("tbody").children();var tmpDiv=document.createElement("div");$(tmpDiv).append($(children[0]));this._cache.tplAppendNewAddress=$(tmpDiv).html();this._cache.idAppendNewAddress=0;}var me=this;$(selTable).find("[type='checkbox']").each(function(){me.checkDependentCheckboxes("#"+$(this).attr("id"));});$($(selButton).get(0).form).bind("submit",function(e){e.preventDefault();if(me.settings.remainingInvites>0){var other={};for(var i=0,l=arrOtherSelectors.length;i<l;i++){var elID=$(arrOtherSelectors[i]).attr("id");var elValue=$(arrOtherSelectors[i]).val();var arrValues=elValue.split(",");other[elID]=[];for(var j=0,jl=arrValues.length;j<jl;j++){var continueHandling=true;var id=me._cache.idAppendNewAddress++;var appString=me._cache.tplAppendNewAddress.replace(/\:id/g,id);var tmpValue=arrValues[j].replace(/^\s+|\s+$/g,"");other[elID].push(tmpValue);var repString="\\:"+elID;var myregexp=new RegExp(repString,"g");if(tmpValue.length>0){appString=appString.replace(myregexp,tmpValue);}else{continueHandling=false;}if(continueHandling){me.autoShowHideStatusMessage("messageNewEmailAdded");$(selTable).find("tbody").html($(selTable).find("tbody").html()+appString);$(selTable).find("[type='checkbox']").each(function(){$(this).get(0).checked=true;});$(selTable).show();$(selButton).get(0).form.reset();if(typeof callback=="function"){callback(other);}me.settings.remainingInvites--;if(me.settings.remainingInvites===0){var form=$(this).get(0).form;$(form).hide();}}}}}return false;});},prettyUsers:function(){var me=this;$(me.settings.prettyUsers.selector).each(function(){var hidden=document.createElement("input");$(hidden).attr("type","hidden");$(hidden).attr("name",$(this).attr("name"));$(hidden).val($(this).val());$(this).val("");$(hidden).attr("id",$(this).attr("id")+"_list");$(this).parent().append($(hidden));var pEl=document.createElement(me.settings.prettyUsers.listParentElement);$(pEl).addClass(me.settings.prettyUsers.listParentClass);$(this).parent().append($(pEl));var curNames=$(hidden).val();if(curNames!==""){curNames=curNames.split(me.settings.prettyUsers.separator);}else{curNames=[];}for(var i=0,l=curNames.length;i<l;i++){me._prettyUsersAppendToList.call(me,curNames[i],pEl,hidden);}$(this).bind("keypress",function(e){if(e.keyCode==13||String.fromCharCode(e.charCode)==me.settings.prettyUsers.separator){e.preventDefault();if($(this).val()!=""){var curNames=$(hidden).val();if(curNames!==""){curNames=curNames.split(me.settings.prettyUsers.separator);}else{curNames=[];}curNames.push($(this).val());$(hidden).val(curNames.join(me.settings.prettyUsers.separator));me._prettyUsersAppendToList.call(me,$(this).val(),pEl,hidden);$(this).val("");}return false;}});});},_prettyUsersAppendToList:function(username,pEl,hidden){var me=this;var listElement=me.settings.prettyUsers.listChildTemplate.replace(/\:value/g,username);$(pEl).html($(pEl).html()+listElement);$(pEl).children().each(function(){$(this).bind("click",function(e){var username=$(this).attr("rel");var curNames=$(hidden).val();curNames=curNames.split(me.settings.prettyUsers.separator);var key=$.inArray(username,curNames);curNames.splice(key,1);$(hidden).val(curNames.join(me.settings.prettyUsers.separator));var el=$(this);el.remove();});});},characterCounter:function(elSelector,maxCharacters){if(typeof elSelector=="undefined"){elSelector=this.settings.characterCounter.selector;}if(typeof maxCharacters=="undefined"){maxCharacters=this.settings.characterCounter.maxCharacters;}var me=this;$(elSelector).each(function(){var container=document.createElement("div");$(container).addClass("charsRemainingContainer");var charContainer=document.createElement("span");$(charContainer).addClass("charsRemaining");$(charContainer).attr("rel",maxCharacters);var msg=document.createElement("span");$(msg).html(me.settings.characterCounter.messageRemaining);var stringlength=$(this).val().length;var remaining=maxCharacters-stringlength;$(charContainer).html(remaining);$(container).append($(charContainer)).append($(msg));$(this).after($(container));$(this).bind("keyup",function(e){$(charContainer).html($(charContainer).attr("rel")*1-$(this).val().length);});});},bindStrengthMeter:function(){$(this.settings.selectors.passwordStrengthMeter).bind("keyup",function(e){SE.ui.checkPassword(this);});},checkPassword:function(field){var password=field.value;var prefix=field.id;var oScorebar=document.getElementById(prefix+"Scorebar");var oScore=document.getElementById(prefix+"Score");var oComplexity=document.getElementById(prefix+"Complexity");var nScore=0,nLength=0,nAlphaUC=0,nAlphaLC=0,nNumber=0,nSymbol=0,nMidChar=0,nRequirements=0,nRepChar=0,nConsecAlphaUC=0,nConsecAlphaLC=0,nConsecNumber=0,nConsecSymbol=0,nConsecCharType=0,nSeqAlpha=0,nSeqNumber=0,nSeqChar=0,nReqChar=0;var nMultMidChar=2,nMultConsecAlphaUC=2,nMultConsecAlphaLC=2,nMultConsecNumber=2;var nMultSeqAlpha=3,nMultSeqNumber=3;var nMultLength=4,nMultNumber=4;var nMultSymbol=6;var nTmpAlphaUC="",nTmpAlphaLC="",nTmpNumber="",nTmpSymbol="";var sAlphas="abcdefghijklmnopqrstuvwxyz";var sNumerics="01234567890";var sComplexity="Too Short";var nMinPwdLen=8;if(password){nScore=parseInt(password.length*nMultLength,10);nLength=password.length;var arrPwd=password.replace(/\s+/g,"").split(/\s*/);var arrPwdLen=arrPwd.length;for(var a=0;a<arrPwdLen;a++){if(arrPwd[a].match(new RegExp(/[A-Z]/g))){if(nTmpAlphaUC!==""){if((nTmpAlphaUC+1)==a){nConsecAlphaUC++;nConsecCharType++;}}nTmpAlphaUC=a;nAlphaUC++;}else{if(arrPwd[a].match(new RegExp(/[a-z]/g))){if(nTmpAlphaLC!==""){if((nTmpAlphaLC+1)==a){nConsecAlphaLC++;nConsecCharType++;}}nTmpAlphaLC=a;nAlphaLC++;}else{if(arrPwd[a].match(new RegExp(/[0-9]/g))){if(a>0&&a<(arrPwdLen-1)){nMidChar++;}if(nTmpNumber!==""){if((nTmpNumber+1)==a){nConsecNumber++;nConsecCharType++;}}nTmpNumber=a;nNumber++;}else{if(arrPwd[a].match(new RegExp(/[^a-zA-Z0-9_]/g))){if(a>0&&a<(arrPwdLen-1)){nMidChar++;}if(nTmpSymbol!==""){if((nTmpSymbol+1)==a){nConsecSymbol++;nConsecCharType++;}}nTmpSymbol=a;nSymbol++;}}}}for(var b=0;b<arrPwdLen;b++){if(arrPwd[a].toLowerCase()==arrPwd[b].toLowerCase()&&a!=b){nRepChar++;}}}var s=0;var i=0;var sFwd="",sRev="";for(s=0;s<23;s++){sFwd=sAlphas.substring(s,parseInt(s+3,10));sRev="";i=sFwd.length;while(i--){sRev+=sFwd.charAt(i);}if(password.toLowerCase().indexOf(sFwd)!=-1||password.toLowerCase().indexOf(sRev)!=-1){nSeqAlpha++;nSeqChar++;}}for(s=0;s<8;s++){sFwd=sNumerics.substring(s,parseInt(s+3,10));sRev="";i=sFwd.length;while(i--){sRev+=sFwd.charAt(i);}if(password.toLowerCase().indexOf(sFwd)!=-1||password.toLowerCase().indexOf(sRev)!=-1){nSeqNumber++;nSeqChar++;}}if(nAlphaUC>0&&nAlphaUC<nLength){nScore=parseInt(nScore+((nLength-nAlphaUC)*2),10);}if(nAlphaLC>0&&nAlphaLC<nLength){nScore=parseInt(nScore+((nLength-nAlphaLC)*2),10);}if(nNumber>0&&nNumber<nLength){nScore=parseInt(nScore+(nNumber*nMultNumber),10);}if(nSymbol>0){nScore=parseInt(nScore+(nSymbol*nMultSymbol),10);}if(nMidChar>0){nScore=parseInt(nScore+(nMidChar*nMultMidChar),10);}if((nAlphaLC>0||nAlphaUC>0)&&nSymbol===0&&nNumber===0){nScore=parseInt(nScore-nLength,10);}if(nAlphaLC===0&&nAlphaUC===0&&nSymbol===0&&nNumber>0){nScore=parseInt(nScore-nLength,10);}if(nConsecAlphaUC>0){nScore=parseInt(nScore-(nConsecAlphaUC*nMultConsecAlphaUC),10);}if(nConsecAlphaLC>0){nScore=parseInt(nScore-(nConsecAlphaLC*nMultConsecAlphaLC),10);}if(nConsecNumber>0){nScore=parseInt(nScore-(nConsecNumber*nMultConsecNumber),10);}if(nSeqAlpha>0){nScore=parseInt(nScore-(nSeqAlpha*nMultSeqAlpha),10);}if(nSeqNumber>0){nScore=parseInt(nScore-(nSeqNumber*nMultSeqNumber),10);}nRequirements=nReqChar;var nMinReqChars=0;if(password.length>=nMinPwdLen){nMinReqChars=3;}else{nMinReqChars=4;}if(nRequirements>nMinReqChars){nScore=parseInt(nScore+(nRequirements*2),10);}if(nScore>100){nScore=100;}else{if(nScore<0){nScore=0;}}if(nScore>=0&&nScore<20){sComplexity="Very Weak";}else{if(nScore>=20&&nScore<40){sComplexity="Weak";}else{if(nScore>=40&&nScore<60){sComplexity="Good";}else{if(nScore>=60&&nScore<80){sComplexity="Strong";}else{if(nScore>=80&&nScore<=100){sComplexity="Very Strong";}}}}}oScorebar.style.backgroundPosition="-"+parseInt(nScore*4,10)+"px 0px";oScore.innerHTML=nScore+"%";oComplexity.innerHTML=sComplexity;}else{oScore.innerHTML=nScore+"%";oComplexity.innerHTML=sComplexity;oScorebar.style.backgroundPosition="0px 0px";}},bossKeyCapture:function(){var me=this;$(document).keydown(function(event){if(event.keyCode==19){me.switchBossMode();}});},switchBossMode:function(){var bossMode=$("#bossMode");if(bossMode.length===0){var style="z-index:1500; top:0px; left:0px; width:100%; height:100%;border:0;";window.scroll(0,0);if(!($.browser.msie&&$.browser.version<=6)){style+=" position:absolute;";}$("#gameContainer").css("visibility","hidden");$("body").prepend('<iframe id="bossMode" border="0" scrolling="no" src="/index/boss/" style="'+style+'"></iframe>');}else{$("#gameContainer").css("visibility","visible");bossMode.remove();}},switchSoundMode:function(flag){SE.core.savePreferences("soundEnabled",flag);},bindSuggestUsername:function(fields){var me=this;var emailObj=$("#"+fields.eid);emailObj.bind("keyup",function(e){var results=this.value.match(/(.*?)@/);if(results){if(!me.usernameRequested){var postData={};postData.email=this.value;me.usernameRequested=true;$.ajax({type:"POST",url:me.settings.urls.suggestUserName,data:postData,dataType:"json",success:function(response){if(response!==null){$("#"+fields.uid).val(response);}}});}}else{me.usernameRequested=false;}});},bindOnSubmitForms:function(){$("form").each(function(){var form=$(this);var buttonClicked=form.find("input[id$='buttonClicked']");var button=form.find("button[type='submit']:first");if(buttonClicked.length==1&&button.length==1){button=button[0];form.bind("submit",function(){if(buttonClicked.val()==""){SE.ui.setButtonClicked(button,buttonClicked.attr("id"));}});}});},setGoogleAnalyticsVar:function(){var userState="visitor";var data=this.readUserCookie();if(typeof data.isOnline=="boolean"&&data.isOnline){userState="user";}try{pageTracker._setVar(userState);}catch(err){}},checkLocale:function(){var locale=this.readCookie("locale");if(locale===null){$.nyroModalManual({content:$("#chooseLocale").html(),width:270,height:210});}},fadeInAndOut:function(selector){this.fadeOut(selector);},fadeIn:function(selector){var me=this;$(selector).fadeTo(650,1,function(){me.fadeOut(selector);});},fadeOut:function(selector){var me=this;$(selector).delay(650).fadeTo(650,0.3,function(){me.fadeIn(selector);});},setLocale:function(locale){this.createCookie("locale",locale,30);return this;},bindNyroModalOnAnchor:function(selector){$(selector).click(function(e){e.preventDefault();var href=this.href;var contentID=href.substr(href.indexOf("#"));$.nyroModalManual({content:$(contentID).html()});return false;});},getPeriodOverview:function(el){var obj=$(el);var url=obj.attr("rel")+"/period/"+obj.val();window.location=url;},getRootDomain:function(){var domain=document.domain;var parts=domain.split(".");var tmp=[parts.pop(),parts.pop()];tmp.reverse();return"."+tmp.join(".");},createCookie:function(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString();}else{var expires="";}document.cookie=name+"="+value+expires+"; path=/; domain="+this.getRootDomain();return this;},readCookie:function(name){var nameEQ=name+"=";var ca=document.cookie.split(";");for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==" "){c=c.substring(1,c.length);}if(c.indexOf(nameEQ)==0){return c.substring(nameEQ.length,c.length);}}return null;},eraseCookie:function(name){createCookie(name,"",-1);return this;}};SE.extend("ui",ui);})();