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

mm.Profile={};mm.Profile.constants={};mm.Profile.Manager=function(){var that=this;var rightColumn=MochiKit.DOM.getElement("rightcolumn");var personSection=MochiKit.DOM.getElement("person");var detailsSection=MochiKit.DOM.getElement("details");var displaySettings=MochiKit.DOM.getElement("displaysettings");var sets=MochiKit.DOM.getElementsByTagAndClassName("div","set",rightColumn);var explainSetsButton=MochiKit.DOM.getElement("explainsets");var explainPrivateButton=MochiKit.DOM.getElement("explainprivate");var explainSetsContainer=MochiKit.DOM.getElement("explanatory");var explainPrivateContainer=MochiKit.DOM.getElement("explainprivatecontent");var setActions=[];var changePassword=undefined;var emailAddressManager=undefined;this.toggleSetExplaination=function(){if(MochiKit.DOM.hasElementClass(explainSetsContainer,"dispnone")){MochiKit.DOM.removeElementClass(explainSetsContainer,"dispnone");}
else{MochiKit.DOM.addElementClass(explainSetsContainer,"dispnone");}};this.togglePrivateExplaination=function(){if(MochiKit.DOM.hasElementClass(explainPrivateContainer,"dispnone")){MochiKit.DOM.removeElementClass(explainPrivateContainer,"dispnone");}
else{MochiKit.DOM.addElementClass(explainPrivateContainer,"dispnone");}};var setVisibility=function(e){var visibility="private";if(e.src().checked){visibility="public";}
var req=MochiKit.Async.loadJSONDoc("/sets/set-visibility.xqy",{"name":e.src().name,"value":visibility,"mode":"json"});req.addCallback(function(json){if(json.reply.status==="ok"){var container=MochiKit.DOM.getFirstParentByTagAndClassName(e.src(),"div","set");if(json.reply.visibility==="public"){MochiKit.Signal.signal(container,"onsetpublic");}
else{MochiKit.Signal.signal(container,"onsetprivate");}}});req.addErrback(mm.generalAjaxError);};var connect=function(){for(var i=0;i<sets.length;i+=1){var setActionsButton=MochiKit.DOM.getFirstElementByTagAndClassName("td","actions",sets[i]);var setActionsContainer=MochiKit.DOM.getFirstElementByTagAndClassName("div","setactions",sets[i]);var setVisibilityBox=MochiKit.DOM.getFirstElementByTagAndClassName("input","visibility",sets[i]);var setName=MochiKit.DOM.getFirstElementByTagAndClassName("a","setname",sets[i]);var setBits=setName.href.split("/");setName=setBits[setBits.length-1];var actions=new mm.Profile.Actions(setActionsContainer,setName);MochiKit.Signal.connect(setActionsButton,"onclick",actions,"toggle");setActions.push(actions);MochiKit.Signal.connect(setVisibilityBox,"onclick",setVisibility);}
MochiKit.Signal.connect(explainSetsButton,"onclick",that,"toggleSetExplaination");MochiKit.Signal.connect(explainPrivateButton,"onclick",that,"togglePrivateExplaination");var name=MochiKit.DOM.getFirstElementByTagAndClassName("span","name",personSection);mm.EditableText(name,"/account/set-info.xqy",{"field":"name"});var dateFormat=MochiKit.DOM.getFirstElementByTagAndClassName("span","dateformat",displaySettings);mm.SelectboxText(dateFormat,"/account/set-info.xqy",{"params":{"field":"dateformat"},"options":dateFormats},true);var timeFormat=MochiKit.DOM.getFirstElementByTagAndClassName("span","timeformat",displaySettings);mm.SelectboxText(timeFormat,"/account/set-info.xqy",{"params":{"field":"timeformat"},"options":timeFormats},true);var guides=MochiKit.DOM.getElementsByTagAndClassName("span","guide");for(var i=0;i<guides.length;i+=1){var foo=new mm.Guide(guides[i]);}};this.disconnect=function(){for(var i=0;i<sets.length;i+=1){var setActionsButton=MochiKit.DOM.getFirstElementByTagAndClassName("td","actions",sets[i]);var setVisibilityBox=MochiKit.DOM.getFirstElementByTagAndClassName("input","visibility",sets[i]);MochiKit.Signal.disconnectAll(setActionsButton);MochiKit.Signal.disconnectAll(setVisibilityBox);}
MochiKit.Signal.disconnectAll(explainSetsButton);MochiKit.Signal.disconnectAll(explainPrivateButton);for(var i=0;i<setActions.length;i+=1){setActions[i].disconnect();}
changePassword.disconnect();emailAddressManager.disconnect();};connect();emailAddressManager=new mm.Profile.EmailAddresses();changePassword=new mm.Profile.ChangePassword();};mm.Profile.ChangePassword=function(){var that=this;var container=MochiKit.DOM.getElement("passwdbox");var toggleLink=MochiKit.DOM.getFirstElementByTagAndClassName("span","passwd",container);var formContainer=MochiKit.DOM.getElement("passwdform");var form=MochiKit.DOM.getFirstElementByTagAndClassName("form",null,formContainer);var oldPassword=MochiKit.DOM.getFirstElementByTagAndClassName("input","oldpasswd",formContainer);var password1=MochiKit.DOM.getFirstElementByTagAndClassName("input","passwd1",formContainer);var password2=MochiKit.DOM.getFirstElementByTagAndClassName("input","passwd2",formContainer);var cancelButton=MochiKit.DOM.getFirstElementByTagAndClassName("input","cancel",formContainer);var errorContainer=MochiKit.DOM.getFirstElementByTagAndClassName("div","seriousWarning",container);this.toggle=function(){if(MochiKit.DOM.hasElementClass(formContainer,"dispnone")){this.open();}
else{this.close();}};this.open=function(){form.style.display="block";MochiKit.DOM.removeElementClass(formContainer,"dispnone");oldPassword.focus();};this.close=function(){MochiKit.DOM.addElementClass(formContainer,"dispnone");MochiKit.DOM.addElementClass(errorContainer,"dispnone");errorContainer.innerHTML="";oldPassword.value="";password1.value="";password2.value="";};var savePassword=function(){var error;if(oldPassword.value.length===0){error="You must supply your current password";}
else if(password1.value!==password2.value){error="Passwords don't match";}
else if(password1.value.length<6){error="Passwords must be at least 6 characters";}
if(error){errorContainer.innerHTML=error;MochiKit.DOM.removeElementClass(errorContainer,"dispnone");}
else{var req=MochiKit.Async.loadJSONDoc("/account/set-info.xqy",{"field":"password","oldpasswd":oldPassword.value,"text":password1.value,"mode":"json"});req.addCallback(function(json){if(json.reply.status==="ok"){errorContainer.innerHTML="<div style='text-align: center; color:black;'>Your password has been changed</div>";MochiKit.DOM.removeElementClass(errorContainer,"dispnone");form.style.display="none";window.setTimeout(function(){that.close();},3000);}
else{errorContainer.innerHTML=json.reply.errors;MochiKit.DOM.removeElementClass(errorContainer,"dispnone");}});req.addErrback(mm.generalAjaxError);}};var connect=function(){MochiKit.Signal.connect(toggleLink,"onclick",that,"toggle");MochiKit.Signal.connect(cancelButton,"onclick",that,"close");MochiKit.Signal.connect(form,"onsubmit",savePassword);};this.disconnect=function(){MochiKit.Signal.disconnectAll(toggleLink);MochiKit.Signal.disconnectAll(cancelButton);MochiKit.Signal.disconnectAll(form);};connect();};mm.Profile.EmailAddresses=function(){var that=this;var container=MochiKit.DOM.getElement("emails");var errorHolder;var addEmailLink;var addEmailContainer;var addEmailForm;var addEmailSelect;var addEmailInput;var addEmailSubmit;var addEmailCancel;var emailActions=[];var EmailActions=function(emailContainer,address){var that=this;mm.Actions.call(this,emailContainer);var type;if(MochiKit.DOM.hasElementClass(emailContainer.parentNode,"retired")){type="historical";}
else if(MochiKit.DOM.hasElementClass(emailContainer.parentNode,"secondary")){type="secondary";}
else if(MochiKit.DOM.hasElementClass(emailContainer.parentNode,"primary")){type="primary";}
var deleteLink=MochiKit.DOM.getFirstElementByTagAndClassName("li","delete",emailContainer);var resendLink=MochiKit.DOM.getFirstElementByTagAndClassName("li","resend",emailContainer);var cancelLink=MochiKit.DOM.getFirstElementByTagAndClassName("li","cancel",emailContainer);var promoteLink=MochiKit.DOM.getFirstElementByTagAndClassName("li","promote",emailContainer);this.disconnect=function(){MochiKit.Signal.disconnectAll(deleteLink);MochiKit.Signal.disconnectAll(resendLink);MochiKit.Signal.disconnectAll(cancelLink);MochiKit.Signal.disconnectAll(promoteLink);};var deleteAddress=function(e){performAction("delete");};var resendAddress=function(e){performAction("resend");};var cancelAddress=function(e){performAction("cancel");};var promoteAddress=function(e){performAction("promote");};var performAction=function(task){var req=MochiKit.Async.loadJSONDoc("/account/modify-address.xqy",{"type":type,"task":task,"address":address,"mode":"json"});req.addCallback(function(json){if(json.reply.status==="ok"){that.disconnect();container.innerHTML=json.reply.content;fetchElements();connect();}
else{}});req.addErrback(mm.generalAjaxError);};var connectActions=function(){if(deleteLink){MochiKit.Signal.connect(deleteLink,"onclick",deleteAddress);}
if(resendLink){MochiKit.Signal.connect(resendLink,"onclick",resendAddress);}
if(cancelLink){MochiKit.Signal.connect(cancelLink,"onclick",cancelAddress);}
if(promoteLink){MochiKit.Signal.connect(promoteLink,"onclick",promoteAddress);}};connectActions();};EmailActions.prototype=new mm.Actions();EmailActions.prototype.constructor=EmailActions;this.toggleAddAddress=function(){if(MochiKit.DOM.hasElementClass(addEmailContainer,"dispnone")){this.openAddAddress();}
else{this.closeAddAddress();}};this.openAddAddress=function(){MochiKit.DOM.removeElementClass(addEmailContainer,"dispnone");addEmailInput.focus();};this.closeAddAddress=function(){MochiKit.DOM.addElementClass(addEmailContainer,"dispnone");addEmailInput.value="";};this.addAddress=function(){var req=MochiKit.Async.loadJSONDoc("/account/modify-address.xqy",{"type":addEmailSelect.value,"task":"add","address":addEmailInput.value,"mode":"json"});req.addCallback(function(json){if(json.reply.status==="ok"){that.disconnect();container.innerHTML=json.reply.content;fetchElements();connect();}
else{outputError(json.reply.errors);}});req.addErrback(mm.generalAjaxError);};var outputError=function(message){errorHolder.innerHTML=message;MochiKit.DOM.removeElementClass(errorHolder,"dispnone");window.setTimeout(function(){MochiKit.DOM.addElementClass(errorHolder,"dispnone");},5000);};var fetchElements=function(){errorHolder=MochiKit.DOM.getFirstElementByTagAndClassName("div","seriousWarning",container);addEmailLink=MochiKit.DOM.getFirstElementByTagAndClassName("a","addaddress",container);addEmailContainer=MochiKit.DOM.getFirstElementByTagAndClassName("div","addaddress",container);addEmailForm=MochiKit.DOM.getFirstElementByTagAndClassName("form",null,addEmailContainer);addEmailSelect=MochiKit.DOM.getFirstElementByTagAndClassName("select",null,addEmailContainer);addEmailInput=MochiKit.DOM.getFirstElementByTagAndClassName("input","input",addEmailContainer);addEmailSubmit=MochiKit.DOM.getFirstElementByTagAndClassName("input","add",addEmailContainer);addEmailCancel=MochiKit.DOM.getFirstElementByTagAndClassName("input","cancel",addEmailContainer);};var connect=function(){MochiKit.Signal.connect(addEmailLink,"onclick",that,"toggleAddAddress");MochiKit.Signal.connect(addEmailCancel,"onclick",that,"closeAddAddress");MochiKit.Signal.connect(addEmailForm,"onsubmit",that,"addAddress");var addressSections;emailActions=[];var actionsContainer;var address;addressSections=MochiKit.DOM.getElementsByTagAndClassName("div","address",container);for(var i=0;i<addressSections.length;i+=1){actionsContainer=MochiKit.DOM.getFirstElementByTagAndClassName("div","emailactions",addressSections[i]);address=MochiKit.DOM.getFirstElementByTagAndClassName("span","address",addressSections[i]);var action=new EmailActions(actionsContainer,address.innerHTML);MochiKit.Signal.connect(address,"onclick",action,"toggle");emailActions.push(action);}};this.disconnect=function(){MochiKit.Signal.disconnectAll(addEmailLink);MochiKit.Signal.disconnectAll(addEmailCancel);MochiKit.Signal.disconnectAll(addEmailForm);for(var i=0;i<emailActions.length;i+=1){emailActions[i].disconnect();}};fetchElements();connect();};mm.Profile.Actions=function(container,setName){var that=this;var setQuery="set:"+mm.Profile.constants.owner+"/"+setName;mm.Actions.call(this,container);var setLinkCopy=MochiKit.DOM.getFirstElementByTagAndClassName("a","setlinkcopy",container);var setLinkInclude=MochiKit.DOM.getFirstElementByTagAndClassName("a","setlinkinc",container);var setLinkExclude=MochiKit.DOM.getFirstElementByTagAndClassName("a","setlinkexc",container);var setLinkDelete=MochiKit.DOM.getFirstElementByTagAndClassName("a","setlinkdel",container);var setTellAFriend=MochiKit.DOM.getFirstElementByTagAndClassName("a","tellfriend",container);var atomLink=MochiKit.DOM.getFirstElementByTagAndClassName("a","atom",container);var closeButton=MochiKit.DOM.getFirstElementByTagAndClassName("div","close",container);this.disconnect=function(){MochiKit.Signal.disconnectAll(setLinkCopy);MochiKit.Signal.disconnectAll(setLinkDelete);MochiKit.Signal.disconnectAll(setTellAFriend);MochiKit.Signal.disconnectAll(setLinkInclude);MochiKit.Signal.disconnectAll(setLinkExclude);MochiKit.Signal.disconnectAll(setContainer);MochiKit.Signal.disconnectAll(container)
MochiKit.Signal.disconnectAll(closeButton);};var connect=function(){MochiKit.Signal.connect(setLinkCopy,"onclick",function(e){that.createSet(e,"copy",{"origowner":mm.Profile.constants.owner,"origname":setName});});MochiKit.Signal.connect(setLinkDelete,"onclick",function(e){that.deleteSet(e,setName);});MochiKit.Signal.connect(setTellAFriend,"onclick",function(e){that.tellAFriend(e,{"owner":mm.Profile.constants.owner,"name":setName});});MochiKit.Signal.connect(setLinkInclude,"onclick",function(e){that.addQueryToSet(e,"include",setName,setQuery);});MochiKit.Signal.connect(setLinkExclude,"onclick",function(e){that.addQueryToSet(e,"exclude",setName,setQuery);});};var madePublic=function(e){setTellAFriend.parentNode.parentNode.style.display="";atomLink.parentNode.parentNode.style.display="";};var madePrivate=function(e){setTellAFriend.parentNode.parentNode.style.display="none";atomLink.parentNode.parentNode.style.display="none";};var setContainer=MochiKit.DOM.getFirstParentByTagAndClassName(container,"div","set");MochiKit.Signal.connect(setContainer,"onsetpublic",madePublic);MochiKit.Signal.connect(setContainer,"onsetprivate",madePrivate);MochiKit.Signal.connect(container,"onopened",function(){mm.setFooterLocation(MochiKit.Style.getElementDimensions("main"));});MochiKit.Signal.connect(container,"onclosed",function(){mm.setFooterLocation(MochiKit.Style.getElementDimensions("main"));});MochiKit.Signal.connect(closeButton,"onclick",that,"close");connect();};mm.Profile.Actions.prototype=new mm.Actions();mm.Profile.Actions.prototype.constructor=mm.Profile.Actions;