/***
Code to support http://markmail.org.
Copyright 2007-2009 Mark Logic Corporation.  All Rights Reserved.
Version: 1267492188
***/

var mm={};mm.globals={};mm.generalAjaxError=function(){alert("Oops, looks like we're having some trouble on our end. But rest assured that we're looking into the problem so try again somewhere down the road.");};mm.init=function(){mm.ieVersion=mm.getInternetExplorerVersion();mm.layer=new mm.Overflow();mm.logger=new mm.Logging();var res=mm.parseURL(window.location.pathname+window.location.search);mm.url=res.url;mm.view=res.view;mm.help=new mm.Help();mm.user=new mm.User();mm.help.connect();mm.user.connect();if(mm.view==="message"){var refer=mm.getSearchEngineRefer();if(refer.engine){mm.refer={};mm.refer.engine=refer.engine;if(!mm.url.q){mm.url.q=refer.q;}}}
if(mm.view==="search"||mm.view==="message"){canvasInit();}
else if(mm.view==="home"){mm.home=new mm.Home();mm.home.setFocus();mm.home.displayGraph();}
else if(mm.view==="list"){mm.home=new mm.Home();mm.home.setFocus();if(mm.url.list){mm.home.displayGraph("list:"+mm.url.list);}
else{mm.home.displayGraph();}}
else if(mm.view==="sethomepage"){mm.setmgr=new mm.Sets.Manager();}
else if(mm.view==="accountprofile"){mm.profile=new mm.Profile.Manager();}
else if(mm.view==="manageDomainAccess"){mm.access=new mm.ManageAccess.Domains();}
else if(mm.view==="manageListAccess"){mm.access=new mm.ManageAccess.Lists();}
else if(mm.view==="manageUserAccess"){mm.access=new mm.ManageAccess.User();}
mm.setFooterLocation();};mm.cleanup=function(){try{if(mm.view==="search"||mm.view==="message"&&message){message.stopTimer();}}
catch(error){}
if(mm.profile){mm.profile.disconnect();}};mm.getSearchEngineRefer=function(){var ret={};var ref=document.referrer;if(ref){var refer=mm.parseURL(ref);var params=MochiKit.Base.parseQueryString(ref.substring(ref.indexOf("?")+1));if(refer.domain.match("^www.google..*")&&refer.path.match("^/search")){ret.engine="google";if(params.q){ret.q=params.q;}}
else if(refer.domain.match("search.yahoo.com$")&&refer.path.match("^/search")){ret.engine="yahoo";if(params.p){ret.q=params.p;}}
else if(refer.domain.match("ask.com$")&&refer.path.match("^/web")){ret.engine="ask";if(params.q){ret.q=params.q;}}
else if(refer.domain.match("search.live.com$")&&refer.path.match("^/results.aspx")){ret.engine="msn";if(params.q){ret.q=params.q;}}}
return ret;};mm.setFooterLocation=function(overrideDims){if(mm.view==="search"||mm.view==="message"){return;}
windowDims=MochiKit.Style.getViewportDimensions();var main=MochiKit.DOM.getElement("main");var footerDims=MochiKit.Style.getElementDimensions("footer");var mainPos=MochiKit.Style.getElementPosition(main);var spaceToWorkWith=windowDims.h-Math.ceil(mainPos.y)-footerDims.h;if(!mm.origMainDims){mm.origMainDims=MochiKit.Style.getElementDimensions(main);}
if(overrideDims&&overrideDims.h&&overrideDims.w){mm.origMainDims=overrideDims;}
if(spaceToWorkWith>=mm.origMainDims.h){main.style.height=spaceToWorkWith+"px";}
else{main.style.height="";}};mm.parseURL=function(url){var results={};var bits;var domain;var port;if(url.match("^http:\/\/")||url.match("^https:\/\/")){bits=url.split("/");var domainPort=bits[2].split(":");domain=domainPort[0];port=domainPort[1];bits=bits.slice(3);url="/"+bits.join("/");results.path=url;}
var index=url.indexOf("?");var path=url;var search="";if(index!==-1){path=url.substring(0,index);search=url.substring(index+1);}
results.url=MochiKit.Base.parseQueryString(search,true);if(results.url.q){results.url.q=results.url.q.join(" ");}
if(path.match("^\/search\/")){var queryBit=path.replace(/^\/search\//,"");if(queryBit){if(results.url.q){results.url.q=decodeURIComponent(queryBit).replace(/\+/g," ")+" "+results.url.q;}
else{results.url.q=decodeURIComponent(queryBit).replace(/\+/g," ");}}
results.view="search";}
else if(path.match("^\/list\/")){var queryBit=path.replace(/^\/list\//,"");if(queryBit){results.url.list=queryBit;}
results.view="list";}
else if(path.match("^\/browse")){bits=path.split("/");results.url.list=bits[2];if(bits[3]){var yearMonth=bits[3].split("-");results.url.year=yearMonth[0];results.url.month=yearMonth[1];}
results.view="browse";}
else if(path.match("^\/message\/")||path.match("^\/thread\/")){if(!results.url.id){bits=path.split("/");results.url.id=bits[2];}
results.view="message";}
else if(path==="/"||path.match("^\/index.xqy")){results.view="home";}
else if(path.match("^\/~")){results.view="sethomepage";}
else if(path.match("^\/account\/profile.xqy")){results.view="accountprofile";}
else if(path.match("^\/manage\/domain\/")){results.view="manageDomainAccess";}
else if(path.match("^\/manage\/list\/")){results.view="manageListAccess";}
else if(path.match("^\/manage\/user\/")){results.view="manageUserAccess";}
if(!results.url.q){results.url.q="";}
if(results.url.id){results.url.id=String(results.url.id);}
if(domain){results.domain=domain;}
if(port){results.port=port;}
return results;};mm.submitUrchin=function(){var trackingUrl="/unexpectedpagename";};mm.writeListGraph=function(id,width,height,query,callback){var element=MochiKit.DOM.getElement(id);element.style.visibility="hidden";try{element.innerHTML="If you had Flash installed you'd see a nice graph here.";}
catch(e){}
var flashvars={"xml_file":"/graph.xqy?width="+width};if(callback){flashvars.dateChangeCallback=callback;}
var attributes={"id":id,"name":id};var params={"bgcolor":"#ffffff","quality":"high","wmode":"transparent"};if(query){flashvars.xml_file=MochiKit.Base.urlEncode("/graph.xqy?width="+width+"&q="+MochiKit.Base.urlEncode(query));}
if(mm.version){swfUrl="/swf/bar_"+mm.version+".swf";}
else{swfUrl="/swf/bar.swf";}
swfobject.embedSWF(swfUrl,id,width+"",height+"","6.0.0",undefined,flashvars,params,attributes);element.style.visibility="visible";};mm.getHTTPSDomain=function(){if(window.location.protocol==="http:"){return"http://"+window.location.hostname;}
else{return"https://"+window.location.hostname;}};mm.Help=function(){var helpWindow=new mm.Overlay("help");this.connect=function(element){if(element){MochiKit.Signal.connect(element,"onclick",this,"open");}
else{var helpElements=MochiKit.DOM.getElementsByTagAndClassName(undefined,"help");for(var i=0;i<helpElements.length;i+=1){MochiKit.Signal.connect(helpElements[i],"onclick",this,"open");}}};this.open=function(e){var dontPush=MochiKit.DOM.hasElementClass(e.src(),"dontpush");helpWindow.open(function(){var section=e.src().id;if(!section){var classes=e.src().className.split(" ");for(var i=0;i<classes.length;i+=1){if(classes[i].match("^section-")){section=classes[i].replace("section-","");}}}
var req=MochiKit.Async.loadJSONDoc("/help.xqy",{"section":section,"mode":"json"});req.addCallback(function(json){helpWindow.setBodyFromString(json.section.content);helpWindow.setTitleFromString(json.section.title);var helpContent=helpWindow.getBodyElement();var helpInHelp=MochiKit.DOM.getElementsByTagAndClassName(undefined,"help",helpContent);for(var i=0;i<=helpInHelp.length;i+=1){mm.help.connect(helpInHelp[i]);}});},dontPush);};this.close=function(){helpWindow.close();};this.isOpen=function(){return helpWindow.isOpen();};};mm.InlineHelp=function(title,values){var originalTitle=undefined;if(title){originalTitle=title.innerHTML;}
var originalValues=values.innerHTML;this.display=function(section,callback){var req=MochiKit.Async.loadJSONDoc("/help.xqy",{"section":section,"mode":"json"});req.addCallback(function(json){if(title){title.innerHTML=json.section.title;}
values.innerHTML=json.section.content;if(callback){callback.call();}});};this.revert=function(){if(title){title.innerHTML=originalTitle;}
values.innerHTML=originalValues;};};mm.User=function(){var that=this;var userWindow=new mm.Overlay("user");var loginElements=[];var signupElements=[];var forgotPasswdElements=[];var logoutElements=[];var reauthElements=[];var usernameElements=[];this.connect=function(element,action){var i;var userElements=[];if(element){userElements.push(element);}
else{userElements=MochiKit.DOM.getElementsByTagAndClassName("span","userctl");}
for(i=0;i<userElements.length;i+=1){if(MochiKit.DOM.hasElementClass(userElements[i],"login")||action==="login"){MochiKit.Signal.connect(userElements[i],"onclick",this,"login");if(!element){loginElements.push(userElements[i]);}
if(MochiKit.DOM.hasElementClass(userElements[i],"open")){MochiKit.Signal.signal(userElements[i],"onclick");MochiKit.DOM.removeElementClass(userElements[i],"open");}}
else if(MochiKit.DOM.hasElementClass(userElements[i],"signup")||action==="signup"){MochiKit.Signal.connect(userElements[i],"onclick",this,"signup");if(!element){signupElements.push(userElements[i]);}}
else if(MochiKit.DOM.hasElementClass(userElements[i],"forgotpwd")||action==="forgotpwd"){MochiKit.Signal.connect(userElements[i],"onclick",this,"forgotPassword");if(!element){forgotPasswdElements.push(userElements[i]);}}
else if(MochiKit.DOM.hasElementClass(userElements[i],"logout")||action==="logout"){MochiKit.Signal.connect(userElements[i],"onclick",this,"logout");if(!element){logoutElements.push(userElements[i]);}}
else if(MochiKit.DOM.hasElementClass(userElements[i],"reauth")||action==="reauth"){MochiKit.Signal.connect(userElements[i],"onclick",this,"reauth");if(!element){reauthElements.push(userElements[i]);}}}
var elements=MochiKit.DOM.getElementsByTagAndClassName("a","username");for(i=0;i<elements.length;i+=1){usernameElements.push(elements[i]);}};this.close=function(){userWindow.close();};this.isOpen=function(){return userWindow.isOpen();};this.signup=function(e){var dontPush=MochiKit.DOM.hasElementClass(e.src(),"dontpush");userWindow.open(function(){var req=MochiKit.Async.loadJSONDoc("/account/register.xqy",{"mode":"json"});req.addCallback(renderSignupForm);req.addErrback(function(obj){MochiKit.Logging.log(obj);});},dontPush);};this.forgotPassword=function(e){var dontPush=MochiKit.DOM.hasElementClass(e.src(),"dontpush");userWindow.open(function(){var req=MochiKit.Async.loadJSONDoc("/account/forgot-password.xqy",{"mode":"json"});req.addCallback(renderForgotPasswordForm);req.addErrback(function(obj){MochiKit.Logging.log(obj);});},dontPush);};this.login=function(e){var dontPush=MochiKit.DOM.hasElementClass(e.src(),"dontpush");userWindow.open(function(){var req=MochiKit.Async.loadJSONDoc(mm.getHTTPSDomain()+"/account/login.xqy",{"mode":"json"});req.addCallback(function(json){renderLoginForm(json,e);});req.addErrback(function(obj){MochiKit.Logging.log(obj);});},dontPush);};this.reauth=function(e){var dontPush=MochiKit.DOM.hasElementClass(e.src(),"dontpush");};this.logout=function(){var req=MochiKit.Async.loadJSONDoc("/account/logout.xqy",{"mode":"json"});req.addCallback(function(json){if(json.logout.status==="success"){setAsLoggedOut();window.location="/";}
else{alert(json.logout.error);}});req.addErrback(function(obj){MochiKit.Logging.log(obj);});};this.setNewNickname=function(newNickname){for(var i=0;i<usernameElements.length;i+=1){usernameElements[i].innerHTML=newNickname;}};var renderSignupForm=function(json){userWindow.setBodyFromString(json.register.content);userWindow.setTitleFromString("Sign Up");var formDiv=userWindow.getBodyElement();var form=MochiKit.DOM.getFirstElementByTagAndClassName("form",undefined,formDiv);var email=MochiKit.DOM.getFirstElementByTagAndClassName("input","email",formDiv);if(form){email.focus();MochiKit.Signal.connect(form,"onsubmit",function(){var req=MochiKit.Async.loadJSONDoc("/account/register.xqy",{"mode":"json","email":email.value});req.addCallback(renderSignupForm);req.addErrback(function(obj){MochiKit.Logging.log(obj);});});MochiKit.Signal.connect(form,"onreset",that,"close");}
else if(json.register.status==="success"){window.setTimeout(function(){that.close();},15000);}
var closeButton=MochiKit.DOM.getFirstElementByTagAndClassName("input","close",formDiv);if(closeButton){MochiKit.Signal.connect(closeButton,"onclick",that,"close");}
var signupLink=MochiKit.DOM.getFirstElementByTagAndClassName("span","login",formDiv);if(signupLink){that.connect(signupLink,"login");}
var forgotPasswordLink=MochiKit.DOM.getFirstElementByTagAndClassName("span","forgotpwd",formDiv);if(forgotPasswordLink){that.connect(forgotPasswordLink,"forgotpwd");}};var renderForgotPasswordForm=function(json){userWindow.setBodyFromString(json.reply.content);userWindow.setTitleFromString("Forgot My Password");var formDiv=userWindow.getBodyElement();var form=MochiKit.DOM.getFirstElementByTagAndClassName("form",undefined,formDiv);var login=MochiKit.DOM.getFirstElementByTagAndClassName("input","login",formDiv);if(form){login.focus();MochiKit.Signal.connect(form,"onsubmit",function(){var req=MochiKit.Async.loadJSONDoc("/account/forgot-password.xqy",{"mode":"json","login":login.value});req.addCallback(renderForgotPasswordForm);req.addErrback(function(obj){MochiKit.Logging.log(obj);});});MochiKit.Signal.connect(form,"onreset",that,"close");}
else if(json.reply.status==="success"){var closeButton=MochiKit.DOM.getFirstElementByTagAndClassName("input","close",formDiv);MochiKit.Signal.connect(closeButton,"onclick",that,"close");window.setTimeout(function(){that.close();},15000);}};var renderLoginForm=function(json,e){userWindow.setBodyFromString(json.login.content);userWindow.setTitleFromString("Sign In");var formDiv=userWindow.getBodyElement();var form=MochiKit.DOM.getFirstElementByTagAndClassName("form",undefined,formDiv);var login=MochiKit.DOM.getFirstElementByTagAndClassName("input","login",formDiv);var pwd=MochiKit.DOM.getFirstElementByTagAndClassName("input","pwd",formDiv);var leaveLoggedIn=MochiKit.DOM.getFirstElementByTagAndClassName("input","leaveLoggedIn",formDiv);if(form){pwd.value="";if(login.value){pwd.focus();}
else{login.focus();}
MochiKit.Signal.connect(form,"onsubmit",function(){var req=MochiKit.Async.loadJSONDoc(mm.getHTTPSDomain()+"/account/login.xqy",{"mode":"json","login":login.value,"pwd":pwd.value,"leaveLoggedIn":leaveLoggedIn.checked,"submit":"Sign In"});req.addCallback(function(json){renderLoginForm(json,e);});req.addErrback(function(obj){MochiKit.Logging.log(obj);});});MochiKit.Signal.connect(form,"onreset",that,"close");var explain=MochiKit.DOM.getFirstElementByTagAndClassName("a","explain",form);MochiKit.Signal.connect(explain,"onclick",function(){var help=new mm.InlineHelp(userWindow.getTitleElement(),userWindow.getBodyElement());help.display("rememberme",function(){var revert=MochiKit.DOM.getFirstElementByTagAndClassName("span","revert",userWindow.getBodyElement());MochiKit.Signal.connect(revert,"onclick",function(){renderLoginForm(json,e);});});});var forgotID=MochiKit.DOM.getFirstElementByTagAndClassName("a","forgotid",form);MochiKit.Signal.connect(forgotID,"onclick",function(){var help=new mm.InlineHelp(userWindow.getTitleElement(),userWindow.getBodyElement());help.display("forgotid",function(){var revert=MochiKit.DOM.getFirstElementByTagAndClassName("span","revert",userWindow.getBodyElement());MochiKit.Signal.connect(revert,"onclick",function(){renderLoginForm(json,e);});});});var signupLink=MochiKit.DOM.getFirstElementByTagAndClassName("a","signup",form);that.connect(signupLink,"signup");var forgotPasswordLink=MochiKit.DOM.getFirstElementByTagAndClassName("a","forgotpwd",form);that.connect(forgotPasswordLink,"forgotpwd");}
else if(json.login.status==="success"){setAsLoggedIn(json.login.displayname);that.close();if(MochiKit.DOM.hasElementClass(e.src(),"refresh")){window.location.reload(true);}
else{MochiKit.Signal.signal(window,"onlogin",json);if(e.src&&!MochiKit.DOM.hasElementClass(e.src(),"userctl")){MochiKit.Signal.signal(e.src(),"onclick");}}}};var setAsLoggedIn=function(displayname){var i;for(i=0;i<loginElements.length;i+=1){loginElements[i].parentNode.style.display="none";}
for(i=0;i<logoutElements.length;i+=1){logoutElements[i].parentNode.style.display="inline";}
that.setNewNickname(displayname);};var setAsLoggedOut=function(){var i;for(i=0;i<loginElements.length;i+=1){loginElements[i].parentNode.style.display="inline";}
for(i=0;i<logoutElements.length;i+=1){logoutElements[i].parentNode.style.display="none";}};};mm.Overflow=function(){var registeredObjects={};var stateStack=[];this.register=function(name,obj){registeredObjects[name]=obj;};this.push=function(newEvent,ignore){var curState={};for(var i in registeredObjects){var hideThis=true;if(typeof(ignore)==="object"&&ignore.length){for(var j=0;j<ignore.length;j+=1){if(i===ignore[j]){hideThis=false;}}}
if(registeredObjects[i].isOverflowHidden){curState[i]=registeredObjects[i].isOverflowHidden();if(registeredObjects[i]!==newEvent&&hideThis){registeredObjects[i].hideOverflow();}
else{registeredObjects[i].showOverflow();}}}
stateStack.push(curState);};this.pop=function(){var restoreState=stateStack.pop();for(var i in restoreState){if(registeredObjects[i].showOverflow&&registeredObjects[i].hideOverflow){if(restoreState[i]===false){registeredObjects[i].showOverflow();}
else{registeredObjects[i].hideOverflow();}}}};};mm.Logging=function(){var history={};this.logEvent=function(section,eventType,values,variableValues){if(!variableValues){variableValues={};}
if(!(history[eventType]&&history[eventType][values])){var url="/log/"+section+"/"+eventType+"/"+values;try{var req=MochiKit.Async.doSimpleXMLHttpRequest(url,variableValues);req.addCallback(function(){});}
catch(e){}
if(history[eventType]){history[eventType][values]=true;}
else{var temp={};temp[values]=true;history[eventType]=temp;}}};};mm.Home=function(){var graph=MochiKit.DOM.getElement("dateschild");var queryBox=MochiKit.DOM.getElement("querybox");var whatsNew=MochiKit.DOM.getElement("whatsnew");var overflowHidden=false;var searching=true;var dateConstraint="";this.showOverflow=function(){graph.style.visibility="visible";overflowHidden=false;};this.hideOverflow=function(){graph.style.visibility="hidden";this.blur();overflowHidden=true;};this.isOverflowHidden=function(){return overflowHidden;};this.setFocus=function(){queryBox.focus();searching=true;};this.blur=function(){queryBox.blur();searching=false;};this.displayGraph=function(query){mm.writeListGraph("dateschild",620,205,query,"mm.home.setDateRange");graph=MochiKit.DOM.getElement("dateschild");};this.submit=function(){var query="";if(dateConstraint!==""){query=queryBox.value+" "+dateConstraint;}
else{query=queryBox.value;}
if(mm.url.list){query+=" list:"+mm.url.list;}
window.location="/search/?q="+MochiKit.Base.urlEncode(query);};this.setDateRange=function(dateString){dateConstraint=dateString;};var handleKeyStroke=function(event){if(searching){return;}
var keys=[];keys[27]="escape";if(keys[event.key().code]){switch(event.key().code){case 27:if(mm.help&&mm.help.isOpen()){mm.help.close();}
if(mm.user&&mm.user.isOpen()){mm.user.close();}
break;}}};MochiKit.Signal.connect(document,"onkeydown",handleKeyStroke);MochiKit.Signal.connect(queryBox,"onfocus",function(){searching=true;});MochiKit.Signal.connect(queryBox,"onblur",function(){searching=false;});mm.writeOutBlogFeed(whatsNew);mm.layer.register("graph",this);};mm.Overlay=function(name){var background=MochiKit.DOM.DIV({"id":name+"bg"});var body=MochiKit.DOM.DIV({"id":name});var values=MochiKit.DOM.DIV({"class":"values"});var title=MochiKit.DOM.SPAN({"id":name+"title"},"");var isOpen=false;this.open=function(render,dontPush){MochiKit.DOM.replaceChildNodes(values,MochiKit.DOM.IMG({"class":"overlayspinner","src":"/images/loading.gif"}));if(render){render.call();}
background.style.display="block";body.style.display="block";isOpen=true;values.scrollTop=0;if(!dontPush){mm.layer.push(this);}};this.close=function(){title.innerHTML="";background.style.display="none";body.style.display="none";mm.layer.pop();isOpen=false;};this.isOpen=function(){return isOpen;};this.setTitleFromString=function(titleString){title.innerHTML=titleString;};this.setTitleFromElement=function(titleElement){MochiKit.DOM.replaceChildNodes(title,titleElement);};this.getTitleElement=function(){return title;};this.setBodyFromString=function(bodyString){values.innerHTML=bodyString;};this.setBodyFromElement=function(bodyElement){MochiKit.DOM.replaceChildNodes(values,bodyElement);};this.getBodyElement=function(){return values;};var closeLink=MochiKit.DOM.IMG({"src":"/images/close.gif"});var container=MochiKit.DOM.DIV({"class":"container"},MochiKit.DOM.DIV({"class":"label"},closeLink,title),values);MochiKit.DOM.appendChildNodes(document.body,background);MochiKit.DOM.appendChildNodes(document.body,MochiKit.DOM.appendChildNodes(body,MochiKit.DOM.TABLE({"class":"pos"},MochiKit.DOM.TBODY({},MochiKit.DOM.TR({},MochiKit.DOM.TD({},container))))));MochiKit.Signal.connect(closeLink,"onclick",this,"close");mm.layer.register(name,this);};mm.EditableText=function(element,script,params,editable,callback){var editing=false;var submit;var cancel;var errorHolder=undefined;if(editable===undefined){editable=true;}
var editText=function(){if(editing){return;}
MochiKit.DOM.addElementClass(element,"editing");MochiKit.Signal.signal(element,"onedit");editing=true;var origText=element.innerHTML;var input=MochiKit.DOM.INPUT({"type":"text","class":"input text","value":origText});submit=MochiKit.DOM.INPUT({"type":"submit","class":"button save","value":""});cancel=MochiKit.DOM.INPUT({"type":"submit","class":"button cancel","value":""});MochiKit.DOM.replaceChildNodes(element,input);MochiKit.DOM.insertSiblingNodesAfter(element,submit,cancel);MochiKit.Signal.connect(submit,"onclick",function(){saveText(input.value);});MochiKit.Signal.connect(cancel,"onclick",function(){setText(origText);});input.focus();};var saveText=function(newText){params.text=newText;params.mode="json";var req=MochiKit.Async.loadJSONDoc(script,params);req.addCallback(function(json){if(json.reply.status==="ok"){setText(newText);if(callback){callback.call(this,json);}}
else{var oldErrors=MochiKit.DOM.getElementsByTagAndClassName("div","seriousWarning",element.parentNode);for(var i=0;i<oldErrors.length;i+=1){MochiKit.DOM.removeElement(oldErrors[i]);}
errorHolder=MochiKit.DOM.DIV({"class":"seriousWarning"});errorHolder.innerHTML=json.reply.errors;MochiKit.DOM.insertSiblingNodesAfter(element,errorHolder);}});req.addErrback(mm.generalAjaxError);};var setText=function(newText){MochiKit.DOM.removeElementClass(element,"editing");element.innerHTML=newText;MochiKit.DOM.removeElement(submit);MochiKit.DOM.removeElement(cancel);editing=false;if(errorHolder){MochiKit.DOM.removeElement(errorHolder);}};if(editable){MochiKit.Signal.connect(element,"onclick",editText);}
else{MochiKit.DOM.removeElementClass(element,"editable");}};mm.SelectboxText=function(element,script,configuration,editable,callback){var editing=false;var select;var cancel;var edit=function(){if(editing){return;}
MochiKit.DOM.addElementClass(element,"editing");MochiKit.Signal.signal(element,"onedit");editing=true;var origText=element.innerHTML;var options=[];for(var i=0;i<configuration.options.length;i+=1){var attribs={"value":configuration.options[i].value};if(configuration.options[i].optiontext===origText){attribs.selected="selected";}
options.push(MochiKit.DOM.OPTION(attribs,configuration.options[i].optiontext));}
select=MochiKit.DOM.SELECT({},options);cancel=MochiKit.DOM.INPUT({"type":"submit","class":"button cancel","value":""});MochiKit.DOM.replaceChildNodes(element,select);MochiKit.DOM.insertSiblingNodesAfter(element,cancel);MochiKit.Signal.connect(select,"onchange",function(){var optionText=origText;for(var i=0;i<options.length;i+=1){if(options[i].selected){optionText=options[i].innerHTML;}}
save(select.value,optionText);});MochiKit.Signal.connect(cancel,"onclick",function(){set(origText);});};var save=function(value,text){configuration.params.text=value;configuration.params.mode="json";var req=MochiKit.Async.loadJSONDoc(script,configuration.params);req.addCallback(function(){set(text);if(callback){callback.call();}});req.addErrback(mm.generalAjaxError);};var set=function(newText){MochiKit.DOM.removeElementClass(element,"editing");element.innerHTML=newText;MochiKit.DOM.removeElement(cancel);editing=false;};if(editable){MochiKit.Signal.connect(element,"onclick",edit);}
else{MochiKit.DOM.removeElementClass(element,"editable");}};mm.Actions=function(container){var that=this;var isOpen=false;var isMoving=false;var RememberValue=function(input){var origValue=input.value;MochiKit.Signal.connect(input,"onblur",function(){input.value=origValue;});};this.toggle=function(){if(isOpen){that.close();}
else{that.open();}};this.opened=function(){return isOpen;}
this.close=function(){if(isMoving){return false;}
isMoving=true;MochiKit.Visual.blindUp(container,{duration:0.2,afterFinish:function(){isMoving=false;MochiKit.Signal.signal(container,"onclosed");}});isOpen=false;mm.globals.captureKeys=true;_gaq.push(['_trackEvent',"menu","close actions"]);};this.open=function(){if(isMoving){return false;}
container.style.visibility="hidden";container.style.display="block";isMoving=true;MochiKit.Visual.blindDown(container,{duration:0.2,beforeStart:function(){container.style.display="none";container.style.visibility="visible";},afterFinish:function(){isMoving=false;MochiKit.Signal.signal(container,"onopened");}});isOpen=true;_gaq.push(['_trackEvent',"menu","open actions"]);};this.createSet=function(e,type,queryParams){if(e.src().nextSibling&&e.src().nextSibling.className===type+"set"){MochiKit.DOM.removeElement(type+"setform");return;}
if(!queryParams){queryParams={};}
mm.globals.captureKeys=false;var name=MochiKit.DOM.INPUT({"type":"text","name":"name","class":"text"});var desc=MochiKit.DOM.INPUT({"type":"text","name":"desc","class":"text"});var visBox=MochiKit.DOM.INPUT({"type":"checkbox","name":"visibility","value":"public","checked":"checked"});var save=MochiKit.DOM.INPUT({"type":"submit","value":"","class":"button save"});var cancel=MochiKit.DOM.INPUT({"type":"reset","value":"","class":"button cancel"});var errorRow=MochiKit.DOM.TD({"colspan":"2"});var descAttribs={};if(type!=="create"){descAttribs.style="display: none";}
var form=MochiKit.DOM.FORM({"id":type+"setform","class":type+"set","onsubmit":"return false;"},MochiKit.DOM.TABLE({},MochiKit.DOM.TBODY({},MochiKit.DOM.TR({},errorRow),MochiKit.DOM.TR({},MochiKit.DOM.TH({},"Name:"),MochiKit.DOM.TD({},name)),MochiKit.DOM.TR(descAttribs,MochiKit.DOM.TH({},"Description:"),MochiKit.DOM.TD({},desc)),MochiKit.DOM.TR({},MochiKit.DOM.TH({},"Shared:"),MochiKit.DOM.TD({},visBox)),MochiKit.DOM.TR({},MochiKit.DOM.TD({"class":"right"},save),MochiKit.DOM.TD({},cancel)))));MochiKit.DOM.insertSiblingNodesAfter(e.src(),form);name.focus();MochiKit.Signal.connect(cancel,"onclick",function(){MochiKit.DOM.removeElement(form);});MochiKit.Signal.connect(form,"onsubmit",function(){errorRow.innerHTML="";var visibility="public";if(visBox.checked===false){visibility="private";}
queryParams.name=name.value;queryParams.visibility=visibility;queryParams.type=type;queryParams.mode="json";if(type==="create"){queryParams.desc=desc.value;}
var req=MochiKit.Async.loadJSONDoc("/sets/create-set.xqy",queryParams);req.addCallback(function(json){if(json.reply.status==="ok"){var prevSibling=form.previousSibling;MochiKit.DOM.removeElement(form);var message;if(type==="create"){message=MochiKit.DOM.SPAN({}," - Your set has been created");}
else if(type==="adopt"){message=MochiKit.DOM.SPAN({}," - This set has been adopted");}
else if(type==="copy"){message=MochiKit.DOM.SPAN({}," - This set has been copied");}
MochiKit.DOM.insertSiblingNodesAfter(prevSibling,message);MochiKit.Visual.fade(message,{"duration":0.5,"delay":2});window.setTimeout(function(){MochiKit.DOM.removeElement(message);},3000);mm.globals.captureKeys=true;}
else{errorRow.innerHTML=json.reply.errors;}});});};this.addQueryToSet=function(e,type,setName,query,queryParams){if(e.src().nextSibling&&e.src().nextSibling.className==="modifyset"){MochiKit.DOM.removeElement("modifysetform-"+type);return;}
else if(e.src().nextSibling&&e.src().nextSibling.className==="modifyset spinner"){return;}
var spinner=MochiKit.DOM.DIV({"class":"modifyset spinner"},MochiKit.DOM.IMG({"src":"/images/loading.gif"}));MochiKit.DOM.insertSiblingNodesAfter(e.src(),spinner);if(!queryParams){queryParams={};}
var listArgs={"mode":"json"};if(setName){listArgs.ignore=setName;}
var setListReq=MochiKit.Async.loadJSONDoc("/sets/set-list.xqy",listArgs);setListReq.addCallback(function(json){MochiKit.DOM.removeElement(spinner);var owner=json.reply.owner;var setNames=[];for(var i=0;i<json.reply.sets.set.length;i+=1){setNames.push(MochiKit.DOM.OPTION({"value":json.reply.sets.set[i].name},json.reply.sets.set[i].displayName));}
var select=MochiKit.DOM.SELECT({},setNames);var save=MochiKit.DOM.INPUT({"type":"submit","value":"","class":"button save"});var cancel=MochiKit.DOM.INPUT({"type":"reset","value":"","class":"button cancel"});var errorRow=MochiKit.DOM.TD({"colspan":"2"});var form=MochiKit.DOM.FORM({"id":"modifysetform-"+type,"class":"modifyset","onsubmit":"return false;"},MochiKit.DOM.TABLE({},MochiKit.DOM.TBODY({},MochiKit.DOM.TR({},errorRow),MochiKit.DOM.TR({},MochiKit.DOM.TH({},"Add to set:"),MochiKit.DOM.TD({},select)),MochiKit.DOM.TR({},MochiKit.DOM.TD({"class":"right"},save),MochiKit.DOM.TD({},cancel)))));MochiKit.DOM.insertSiblingNodesAfter(e.src(),form);MochiKit.Signal.connect(cancel,"onclick",function(){MochiKit.DOM.removeElement(form);});MochiKit.Signal.connect(form,"onsubmit",function(){errorRow.innerHTML="";queryParams.owner=owner;queryParams.name=select.value;queryParams.q=query;queryParams.type=type;queryParams.mode="json";var req=MochiKit.Async.loadJSONDoc("/sets/add-query.xqy",queryParams);req.addCallback(function(json){if(json.reply.status==="ok"){var prevSibling=form.previousSibling;MochiKit.DOM.removeElement(form);var message=MochiKit.DOM.SPAN({}," - Query added to the set");MochiKit.DOM.insertSiblingNodesAfter(prevSibling,message);MochiKit.Visual.fade(message,{"duration":0.5,"delay":2});window.setTimeout(function(){MochiKit.DOM.removeElement(message);},3000);}
else{errorRow.innerHTML=json.reply.errors;}});});});};this.tellAFriend=function(e,requestArgs){if(e.src().nextSibling&&e.src().nextSibling.className==="tellafriend"){MochiKit.DOM.removeElement("tellafriendform");return;}
else if(e.src().nextSibling&&e.src().nextSibling.className==="tellafriend spinner"){return;}
var spinner=MochiKit.DOM.DIV({"class":"tellafriend spinner"},MochiKit.DOM.IMG({"src":"/images/loading.gif"}));MochiKit.DOM.insertSiblingNodesAfter(e.src(),spinner);var args=requestArgs;args.task="boilerplate";args.mode="json";var setListReq=MochiKit.Async.loadJSONDoc("/sets/tell-someone.xqy",args);setListReq.addCallback(function(json){MochiKit.DOM.removeElement(spinner);var to=MochiKit.DOM.INPUT({"type":"text","class":"to text"});var message=MochiKit.DOM.TEXTAREA({},json.reply.data.message);var send=MochiKit.DOM.INPUT({"type":"submit","value":"","class":"button email"});var cancel=MochiKit.DOM.INPUT({"type":"reset","value":"","class":"button cancel"});var errorRow=MochiKit.DOM.TD({"colspan":"2","class":"seriousWarning"});var form=MochiKit.DOM.FORM({"id":"tellafriendform","class":"tellafriend","onsubmit":"return false;"},MochiKit.DOM.TABLE({"class":"tellfriend"},MochiKit.DOM.TBODY({},MochiKit.DOM.TR({},errorRow),MochiKit.DOM.TR({},MochiKit.DOM.TH({},"From:"),json.reply.data.from),MochiKit.DOM.TR({},MochiKit.DOM.TH({},"To:"),MochiKit.DOM.TD({},to)),MochiKit.DOM.TR({},MochiKit.DOM.TH({"class":"message"},"Message:"),MochiKit.DOM.TD({},message)),MochiKit.DOM.TR({},MochiKit.DOM.TD({"class":"buttons","colspan":"2"},send,cancel)))));MochiKit.DOM.insertSiblingNodesAfter(e.src(),form);to.focus();MochiKit.Signal.connect(cancel,"onclick",function(){MochiKit.DOM.removeElement(form);});MochiKit.Signal.connect(form,"onsubmit",function(){errorRow.innerHTML="";var args=requestArgs;args.addresses=to.value;args.message=message.value;args.task="sendmail";args.mode="json";var req=MochiKit.Async.loadJSONDoc("/sets/tell-someone.xqy",args);req.addCallback(function(json){if(json.reply.status==="ok"){var prevSibling=form.previousSibling;MochiKit.DOM.removeElement(form);var message=MochiKit.DOM.SPAN({}," - Your message has been sent");MochiKit.DOM.insertSiblingNodesAfter(prevSibling,message);MochiKit.Visual.fade(message,{"duration":0.5,"delay":2});window.setTimeout(function(){MochiKit.DOM.removeElement(message);},3000);}
else{errorRow.innerHTML=json.reply.errors;}});});});};this.deleteSet=function(e,setName){if(e.src().nextSibling&&e.src().nextSibling.className==="deleteset"){MochiKit.DOM.removeElement("deletesetform");return;}
else if(e.src().nextSibling&&e.src().nextSibling.className==="deleteset spinner"){return;}
var spinner=MochiKit.DOM.DIV({"class":"deleteset spinner"},MochiKit.DOM.IMG({"src":"/images/loading.gif"}));MochiKit.DOM.insertSiblingNodesAfter(e.src(),spinner);var setListReq=MochiKit.Async.loadJSONDoc("/sets/delete-check.xqy",{"name":setName,"mode":"json"});setListReq.addCallback(function(json){MochiKit.DOM.removeElement(spinner);var message=MochiKit.DOM.TD({"colspan":"2"});message.innerHTML=json.reply.content;var del=MochiKit.DOM.INPUT({"type":"submit","value":"","class":"button delete"});var cancel=MochiKit.DOM.INPUT({"type":"reset","value":"","class":"button cancel"});var errorRow=MochiKit.DOM.TD({"colspan":"2"});var form=MochiKit.DOM.FORM({"id":"deletesetform","class":"deleteset","onsubmit":"return false;"},MochiKit.DOM.TABLE({},MochiKit.DOM.TBODY({},MochiKit.DOM.TR({},errorRow),MochiKit.DOM.TR({},message),MochiKit.DOM.TR({},MochiKit.DOM.TD({"class":"right"},del),MochiKit.DOM.TD({},cancel)))));MochiKit.DOM.insertSiblingNodesAfter(e.src(),form);MochiKit.Signal.connect(cancel,"onclick",function(){MochiKit.DOM.removeElement(form);});MochiKit.Signal.connect(form,"onsubmit",function(){errorRow.innerHTML="";var req=MochiKit.Async.loadJSONDoc("/sets/delete.xqy",{"name":setName,"mode":"json"});req.addCallback(function(json){if(json.reply.status==="ok"){window.location="/account/profile.xqy";}
else{errorRow.innerHTML=json.reply.errors;}});});});};var connect=function(){var reminders=MochiKit.DOM.getElementsByTagAndClassName("input","remember",container);for(var i=0;i<reminders.length;i+=1){var throwaway=new RememberValue(reminders[i]);MochiKit.Signal.connect(reminders[i],"onfocus",function(e){e.src().select();});MochiKit.Signal.connect(reminders[i],"onclick",function(e){e.src().select();});}};var disconnect=function(){var reminders=MochiKit.DOM.getElementsByTagAndClassName("input","remember",container);for(var i=0;i<reminders.length;i+=1){MochiKit.Signal.disconnectAll(reminders[i]);}};connect();};mm.Guide=function(guideLink){var that=this;var container=MochiKit.DOM.getFirstParentByTagAndClassName(guideLink,undefined,"guidecontainer");var editableItems=MochiKit.DOM.getElementsByTagAndClassName(undefined,"editable",container);var pulsators=[]
var pulsating=false;var open=function(){if(pulsating){return;}
pulsators=[];for(var i=0;i<editableItems.length;i+=1){if(MochiKit.DOM.hasElementClass(editableItems[i],"editing")){continue;}
var pulsator=MochiKit.Visual.pulsate(editableItems[i],{"duration":6,"from":0.3,"beforeStart":function(el){el.element.style.backgroundColor="#fdf5e6";MochiKit.DOM.addElementClass(el.element,"mklink");pulsating=true;},"afterFinish":function(el){el.element.style.backgroundColor="";MochiKit.DOM.removeElementClass(el.element,"mklink");pulsating=false;}});MochiKit.Signal.connect(editableItems[i],"onedit",stopPulsating);pulsators.push(pulsator);}};var stopPulsating=function(){for(var i=0;i<pulsators.length;i+=1){pulsators[i].cancel();pulsators[i].element.style.backgroundColor="";MochiKit.DOM.removeElementClass(pulsators[i].element,"mklink");MochiKit.Visual.Opacity(pulsators[i].element);}
pulsating=false;};MochiKit.Signal.connect(guideLink,"onclick",open);};mm.writeOutBlogFeed=function(element,callback){var req=MochiKit.Async.doSimpleXMLHttpRequest("/blogfeed.xqy");req.addCallback(function(resp){element.innerHTML=resp.responseText;if(callback){callback.call();}});};mm.getInternetExplorerVersion=function(){var rv=-1;if(navigator.appName==='Microsoft Internet Explorer'){var ua=navigator.userAgent;var re=new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");if(re.exec(ua)!==null){rv=parseFloat(RegExp.$1);}}
return rv;};if(!Object.prototype.toJSONString){Array.prototype.toJSONString=function(w){var a=[],i,l=this.length,v;for(i=0;i<l;i+=1){v=this[i];switch(typeof v){case'object':if(v){if(typeof v.toJSONString==='function'){a.push(v.toJSONString(w));}}else{a.push('null');}
break;case'string':case'number':case'boolean':a.push(v.toJSONString());}}
return'['+a.join(',')+']';};Boolean.prototype.toJSONString=function(){return String(this);};Date.prototype.toJSONString=function(){function f(n){return n<10?'0'+n:n;}
return'"'+this.getUTCFullYear()+'-'+
f(this.getUTCMonth()+1)+'-'+
f(this.getUTCDate())+'T'+
f(this.getUTCHours())+':'+
f(this.getUTCMinutes())+':'+
f(this.getUTCSeconds())+'Z"';};Number.prototype.toJSONString=function(){return isFinite(this)?String(this):'null';};Object.prototype.toJSONString=function(w){var a=[],k,i,v;if(w){for(i=0;i<w.length;i+=1){k=w[i];if(typeof k==='string'){v=this[k];switch(typeof v){case'object':if(v){if(typeof v.toJSONString==='function'){a.push(k.toJSONString()+':'+
v.toJSONString(w));}}else{a.push(k.toJSONString()+':null');}
break;case'string':case'number':case'boolean':a.push(k.toJSONString()+':'+v.toJSONString());}}}}else{for(k in this){if(typeof k==='string'&&Object.prototype.hasOwnProperty.apply(this,[k])){v=this[k];switch(typeof v){case'object':if(v){if(typeof v.toJSONString==='function'){a.push(k.toJSONString()+':'+
v.toJSONString());}}else{a.push(k.toJSONString()+':null');}
break;case'string':case'number':case'boolean':a.push(k.toJSONString()+':'+v.toJSONString());}}}}
return'{'+a.join(',')+'}';};(function(s){var m={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};s.parseJSON=function(filter){var j;function walk(k,v){var i;if(v&&typeof v==='object'){for(i in v){if(Object.prototype.hasOwnProperty.apply(v,[i])){v[i]=walk(i,v[i]);}}}
return filter(k,v);}
if(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/.test(this.replace(/\\./g,'@').replace(/"[^"\\\n\r]*"/g,''))){j=eval('('+this+')');return typeof filter==='function'?walk('',j):j;}
throw new SyntaxError('parseJSON');};s.toJSONString=function(){if(/["\\\x00-\x1f]/.test(this)){return'"'+this.replace(/[\x00-\x1f\\"]/g,function(a){var c=m[a];if(c){return c;}
c=a.charCodeAt();return'\\u00'+
Math.floor(c/16).toString(16)+
(c%16).toString(16);})+'"';}
return'"'+this+'"';};})(String.prototype);}
mm.installSearchEnginePlugin=function(pluginname){var name="";var baseDir=document.location.href;var skipFirstSlash=baseDir.indexOf('//')+2;baseDir=baseDir.substring(0,baseDir.indexOf('/',skipFirstSlash)+1);name=baseDir+"BrowserPlugins/"+pluginname;if(window.external&&("AddSearchProvider"in window.external)){window.external.AddSearchProvider(name+".xml");}
else if(window.sidebar&&("addSearchEngine"in window.sidebar)){window.sidebar.addSearchEngine(name+".src","http://markmail.org/images/search-white.gif","MarkMail Email Search Plugin","");}
else{alert("Sorry, you'll need to upgrade to a search engine which supports OpenSearch plugins.");}}
MochiKit.Signal.connect(window,"onload",mm,"init");MochiKit.Signal.connect(window,"onbeforeunload",mm,"cleanup");MochiKit.Signal.connect(window,"onresize",mm,"setFooterLocation");