/* Copyright (c) 2006-2007, Apple Inc. All rights reserved. */
/* Compressed JavaScript. Do not modify. */


/* wikiserver_api.js */

Class.createWithSharedInstance=function(inOptInstanceShortcutName){var cls=null;cls=Class.create();cls.sharedInstance=function(){if(!cls['_sharedInstance'])cls['_sharedInstance']=new cls();return cls['_sharedInstance'];}
if(inOptInstanceShortcutName)window[inOptInstanceShortcutName]=cls.sharedInstance;return cls;}
var NotificationPublisher=Class.createWithSharedInstance('publisher');NotificationPublisher.prototype={initialize:function(){this.mSubcribers=[];},publish:function(inMessage,inObject,inUserInfo){return this.mSubcribers.collect(function(subscriber){var m=subscriber.message||inMessage;var o=subscriber.obj||inObject;if(m==inMessage&&o==inObject){subscriber.callback(inMessage,inObject,inUserInfo);return true;}
return false;}).length>0;},subscribe:function(inCallback,inMessage,inObject){this.mSubcribers.push({callback:inCallback,message:inMessage,obj:inObject});},unsubscribe:function(inCallback,inMessage,inObject){this.mSubcribers=this.mSubcribers.reject(function(subscriber){return(subscriber.callback==inCallback&&subscriber.message==inMessage&&subscriber.obj==inObject);});}}
var AppleCollaborationServer=Class.createWithSharedInstance('server');AppleCollaborationServer.prototype={mCookieExpireDays:14,initialize:function(inOptionalURL){this.mPlainTextLogin=getMetaTagValue('apple_use_plaintext_login');this.url=fixSiteRelativeURLForIE(inOptionalURL||'/RPC2');this.getSessionIDFromCookie();this.setTimezoneCookie();Object.extend(this,{wiki:new CollaborationService(this,'wiki',['getSidebarEntries','filterText']),weblog:new CollaborationService(this,'weblog'),calendar:new CollaborationService(this,'calendar'),mailinglist:new CollaborationService(this,'mailinglist'),versions:new CollaborationService(this,'versions'),search:new CollaborationService(this,'search'),settings:new CollaborationService(this,'settings',['getSettings','setSettings','manageTags']),tags:new CollaborationService(this,'tags'),preferences:new CollaborationService(this,'preferences',['getUsersRelevantTags','getUsersRecentPages']),whitepages:new CollaborationService(this,'whitepages')});},login:function(inCallback,inUsername,inPassword,inOptAuthorizePath,inOptPersistent){var checkSuccess=function(q,r){if(r.success){this.rememberSessionID(r.session_id,inOptPersistent);if(inCallback)inCallback();publisher().publish('AUTHENTICATED',this);if(r.accessLevel&&r.accessLevel!='none'){publisher().publish('AUTHORIZED',this,{action:r.accessLevel,path:(inOptAuthorizePath||''),persistent:(inOptPersistent==true)});}}
else{this.rememberSessionID('unauthenticated');var caught=publisher().publish('AUTHENTICATION_FAILED',this,inUsername);if(!caught)alert('Uncaught authentication failure for user: '+inUsername);}}
var performLoginRequest=function(){var method=this.mPlainTextLogin?'login':'digestLogin';var args=this.mPlainTextLogin?[inUsername,inPassword]:[digestResponse(inUsername,inPassword,this.mCachedChallenge)];this.mCachedChallenge=null;if(inOptAuthorizePath)args.push(inOptAuthorizePath);if(inOptAuthorizePath&&inOptPersistent)args.push(true);var req=new XMLRPCServiceRequest(this,method,checkSuccess.bind(this),args);}.bind(this);if(this.mCachedChallenge){performLoginRequest();}
else{this.cacheDigestChallenge(performLoginRequest);}},checkSessionAuthorization:function(inCallback,inOptAction,inOptPath){var action=inOptAction||'write';var authorizedCallback=function(){var userInfo={};if(inOptAction)userInfo['action']=inOptAction;if(inOptPath)userInfo['path']=inOptPath;publisher().publish('AUTHORIZED',this,userInfo);if(inCallback&&inCallback.constructor==Array)inCallback[0]();else if(inCallback)inCallback();}
var callback=authorizedCallback;if(inCallback&&inCallback.constructor==Array){callback=[authorizedCallback,inCallback[1]];}
if(inOptPath)return new XMLRPCRequest(this,'checkSessionAuthorization',callback,action,inOptPath);return new XMLRPCRequest(this,'checkSessionAuthorization',callback,action);},logout:function(inCallback){var logoutCallback=function(){this.rememberSessionID('unauthenticated');if(inCallback)inCallback();publisher().publish('LOGGED_OUT',this,{reload:true});}
return new XMLRPCRequest(this,'logout',logoutCallback.bind(this));},getUploadProgress:function(inCallback,inUploadID){return new XMLRPCRequest(this,'getUploadProgress',inCallback,inUploadID);},adminKickServer:function(inCallback){return new XMLRPCRequest(this,'adminKickServer',inCallback);},groupsForSession:function(inCallback){return new XMLRPCRequest(this,'groupsForSession',inCallback);},cacheDigestChallenge:function(inCallback){if(this.mPlainTextLogin){if(inCallback)inCallback();return true;}
var callback=function(q,r){if(r.success){alert('Got a session id already: '+r.session_id);}
else{this.mCachedChallenge=r.challenge;if(inCallback)inCallback();}}
var req=new XMLRPCRequest(this,'digestLogin',callback.bind(this));},isSavingSomething:function(){return XMLRPCRequest.allRequests&&XMLRPCRequest.allRequests.detect(function(r){return r.required&&(!r.responseObj)});},getNextUploadID:function(){var uploadID=Math.floor(Math.random()*1000000);document.cookie='uploadID='+uploadID+'; path=/';return uploadID;},getSessionIDFromCookie:function(){var results=document.cookie.match('sessionID=([^;]+)');if(results){if((this.sessionID=='unauthenticated')&&(results[1]!='unauthenticated')&&window.gNotifier)gNotifier.print('loggedIn');this.sessionID=results[1];}
else{this.sessionID='unauthenticated';document.cookie='sessionID=unauthenticated; path=/';}},rememberSessionID:function(inSessionID,inOptPersistent){this.sessionID=inSessionID;var expireString='';if(inOptPersistent){var expireDate=new Date();expireDate.setDate(expireDate.getDate()+this.mCookieExpireDays);expireString='; expires='+expireDate.toGMTString();}
document.cookie='sessionID='+inSessionID+'; path=/'+expireString;},setTimezoneCookie:function(){var dt=new Date();var offset=dt.getTimezoneOffset()/(-60);dt.setFullYear(dt.getFullYear()+2);document.cookie='utcOffset='+offset+'; expires='+dt.toGMTString()+'; path=/';}}
var CollaborationService=Class.create();CollaborationService.prototype={mBaseMethods:['getEntries','getEntryWithUID','addEntry','updateEntry','deleteEntry','permanentlyDeleteEntry','undeleteEntry','addTagToEntry','removeTagFromEntry','removeVersionFromEntry','OLDgetEntries'],initialize:function(inParent,inServiceName,inOptMethods){this.mParent=inParent;this.mServiceName=inServiceName;$A(this.mBaseMethods).concat(inOptMethods||[]).each(function(methodName){this[methodName]=function(){var args=$A(arguments);var cb=args.splice(0,1)[0];return new XMLRPCServiceRequest(this.mParent,this.mServiceName+'.'+methodName,cb,args);}.bind(this);}.bind(this));}}
var CollabUID=Class.createWithSharedInstance('uid');CollabUID.prototype={mMetaTagName:'apple_collab_uid',initialize:function(inOptValue){this.setValue(inOptValue||getMetaTagValue(this.mMetaTagName)||'');},setValue:function(inValue){var splitValue=inValue.split('/');while(splitValue.length<4)splitValue.push('');this.mValue=inValue;this.mOwnerType=splitValue[0];this.mOwnerName=splitValue[1];this.mService=splitValue[2];this.mItemName=splitValue[3];this.mBasePath=this.mOwnerType+'/'+this.mOwnerName;this.mBaseLocation='/'+this.mBasePath+'/';this.mBaseLocation=this.mBaseLocation.replace('//','/');this.mParentPath=this.mBasePath+'/'+this.mService;this.mParentLocation='/'+this.mParentPath+'/';},toString:function(){return this.mValue;}}
function getMetaTagValue(inTagName){var matchingTag=$A(d.getElementsByTagName('META')).detect(function(tag){return(tag.name==inTagName);});return(matchingTag?matchingTag.content:null);}
function padNumberStr(theNumber,digits){var padder=((arguments.length>2)?arguments[2]:'0');var theString="";theString+=theNumber;for(var i=0;i<(digits-theString.length);i++){theString=padder+theString;}
return theString;}
function dateObjToISO8601(inDateObj,inOptMakeGMT){var dt=new Date(inDateObj.getTime());if(inOptMakeGMT)dt.setHours(dt.getHours()-(dt.getTimezoneOffset()/(-60)));var iso_string='';iso_string+=dt.getFullYear()
+padNumberStr(dt.getMonth()+1,2)
+padNumberStr(dt.getDate(),2)
+'T'
+padNumberStr(dt.getHours(),2)
+padNumberStr(dt.getMinutes(),2)
+padNumberStr(dt.getSeconds(),2)
+'Z';return iso_string;}
function fixSiteRelativeURLForIE(inURLString){if(!document.all||inURLString.indexOf('/')!=0)return inURLString;return window.location.protocol+'//'+window.location.host+inURLString;}
function _ucs4Ordinal(ch){var ucs4Ordinal="";ucs4Ordinal+=String.fromCharCode(240|(ch>>18));ucs4Ordinal+=String.fromCharCode(127|((ch>>12)&63));ucs4Ordinal+=String.fromCharCode(127|((ch>>6)&63));ucs4Ordinal+=String.fromCharCode(127|(ch&63));return ucs4Ordinal;}
function utf8Encode(string){var utf8Text="";for(var i=0;i<string.length;i++){var ch=string.charCodeAt(i);if(ch<128){utf8Text+=String.fromCharCode(ch);}
else if((ch>127)&&(ch<2048)){utf8Text+=String.fromCharCode(192|(ch>>6));utf8Text+=String.fromCharCode(128|(ch&63));}
else{if(ch<65536){if((55296<=ch)&&(ch<=57343)&&i!=string.length){var ch2=string.charCodeAt(i+1);if((56320<=ch2)&&(ch2<57343)){ch=((ch-55296)<<10|(ch2-56320))+65536;i++;utf8Text+=_ucs4Ordinal(ch);}}
utf8Text+=String.fromCharCode(224|(ch>>12));utf8Text+=String.fromCharCode(128|((ch>>6)&63));utf8Text+=String.fromCharCode(128|(ch&63));continue;}
utf8Text+=_ucs4Ordinal(ch);}}
return utf8Text;}
function digestResponse(username,password,challenge){var HA1=new Array(username,challenge.realm,password);HA1=utf8Encode(HA1.join(':'));HA1=hex_md5(HA1,HA1.length+chrsz);HA2="POST:/RPC2";HA2=hex_md5(HA2,HA2.length+chrsz);var response=new Array(HA1,challenge.nonce,HA2);response=response.join(':');response=hex_md5(response,response.length+chrsz);var responseObj={realm:challenge.realm,username:username,response:response,nonce:challenge.nonce,opaque:challenge.opaque,algorithm:challenge.algorithm,qop:challenge.qop,uri:'/RPC2',nc:'00000001'};return responseObj;}
var XMLRPCMessage=Class.create();XMLRPCMessage.prototype={initialize:function(methodname){this.method=methodname||'system.listMethods';this.params=$A([]);},addParameter:function(data){if(arguments.length==0)return false;this.params.push(data);},xml:function(){return'<?xml version="1.0"?>\n<methodCall>\n<methodName>'+this.method+'</methodName>\n<params>\n'+this.params.collect(function(param){var s=new XMLRPCSerializer(param);return'<param>\n<value>'+s.xml()+'</value>\n</param>\n';}).join('')+'</params>\n</methodCall>\n';}}
var XMLRPCSerializer=Class.create();XMLRPCSerializer.prototype={initialize:function(inData){this.mData=inData;},xml:function(){var type=(''+typeof(this.mData)).toLowerCase();if(this['_'+type])return this['_'+type]();return'';},_array:function(){return'<array><data>\n'+$A(this.mData).collect(function(cur){var s=new XMLRPCSerializer(cur);return'<value>'+s.xml()+'</value>\n';}.bind(this)).join('')+'</data></array>\n';},_boolean:function(){return'<boolean>'+(this.mData?1:0)+'</boolean>';},_date:function(){return'<dateTime.iso8601>'+dateObjToISO8601(this.mData)+'</dateTime.iso8601>';},_function:function(){return'';},_number:function(){if(Math.round(this.mData)==this.mData)return'<i4>'+this.mData+'</i4>';return'<double>'+this.mData+'</double>';},_object:function(){var con=this.mData.constructor;if(con==Date)return this._date();if(con==Array)return this._array();return this._struct();},_string:function(){var strVal=this.mData.escapeHTML();try{var rx=new RegExp('[\\ca\\cb\\cc\\cd\\ce\\cf\\cg\\ch\\ck\\cl\\cn\\co\\cp\\cq\\cr\\cs\\ct\\cu\\cv\\cw\\cx\\cy\\cz\\c_]','g');if(IEFixes.isIE)rx=new RegExp('[\\ca\\cb\\cc\\cd\\ce\\cf\\cg\\ch\\ck\\cl\\cn\\co\\cp\\cq\\cr\\cs\\ct\\cu\\cv\\cw\\cx\\cy\\cz]','g');if(!('a'.match(/[\ca]/)))strVal=strVal.replace(rx,'');}
catch(e){}
return'<string>'+strVal+'</string>';},_struct:function(){return'<struct>\n'+$H(this.mData).collect(function(cur){var s=new XMLRPCSerializer(cur.value);return'<member>\n<name>'+cur.key.escapeHTML()+'</name>\n<value>'+s.xml()+'</value>\n</member>\n';}.bind(this)).join('')+'</struct>\n';}}
var XMLRPCRequest=Class.create();XMLRPCRequest.prototype={initialize:function(inServerObj,inMethodNameStr,inCallback){this.setupRequest(inServerObj,inMethodNameStr,inCallback);for(var i=3;i<arguments.length;i++){if(arguments[i]!=null)this.requestMessageObj.addParameter(arguments[i]);}
this.sendRequest();},setupRequest:function(inServerObj,inMethodNameStr,inCallback){if(inCallback.constructor==Array){this.callbackFunction=inCallback[0];this.errorFunction=inCallback[1];}
else{this.callbackFunction=inCallback;}
this.serverObj=inServerObj;this.methodNameStr=inMethodNameStr;this.requestMessageObj=new XMLRPCMessage(inMethodNameStr);this.ajaxSocketObj=null;if(inServerObj.sessionID&&(inMethodNameStr!='login')&&(inMethodNameStr!='digestLogin'))this.requestMessageObj.addParameter(inServerObj.sessionID);},sendRequest:function(){if(!XMLRPCRequest.allRequests)XMLRPCRequest.allRequests=$A([]);XMLRPCRequest.allRequests.push(this);this.ajaxSocketObj=new Ajax.Request(this.serverObj.url,{method:'post',postBody:this.requestMessageObj.xml(),onComplete:this.handleCompleted.bind(this),asynchronous:true});},makeRequired:function(){this.required=true;return this;},handleCompleted:function(inTransportObj){if(inTransportObj.status==200){this.responseObj=new XMLRPCResponse(inTransportObj);if(this.responseObj.deserializedResponse.faultCode&&this.responseObj.deserializedResponse.faultString){this.handleError(this,this.responseObj.deserializedResponse.faultCode,this.responseObj.deserializedResponse.faultString);}
else{if(this.callbackFunction)this.callbackFunction(this,this.responseObj.deserializedResponse);}}
else{this.handleError(this,inTransportObj.status,inTransportObj.statusText);}
XMLRPCRequest.allRequests=XMLRPCRequest.allRequests.without(this);},handleError:function(inRequestObj,inFaultCode,inFaultString){if(this.errorFunction){this.errorFunction(inRequestObj,inFaultCode,inFaultString);}
else if(inFaultCode==2){if(this.serverObj.sessionID!='unauthenticated'&&this.requestMessageObj.params.length>0&&this.requestMessageObj.params[0]==this.serverObj.sessionID){this.serverObj.sessionID='unauthenticated';document.cookie='sessionID=unauthenticated; path=/';this.requestMessageObj.params[0]=this.serverObj.sessionID;this.sendRequest();publisher().publish('LOGGED_OUT',this,{reload:false});}
else{var caught=publisher().publish('BAD_SESSION_ID',this);if(!caught)alert('Uncaught error from server: bad session ID');}}
else if(inFaultCode==3){var caught=publisher().publish('AUTHORIZATION_FAILED',this);if(!caught)alert('Uncaught error from server: unauthorized');}
else{var caught=publisher().publish('MISC_SERVER_ERROR',this,{faultCode:inFaultCode,faultString:inFaultString});if(!caught)alert('Uncaught error from server: '+inFaultString+' ('+inFaultCode+')');}},toString:function(){return this.requestMessageObj.xml();}}
var XMLRPCServiceRequest=Class.create();Object.extend(Object.extend(XMLRPCServiceRequest.prototype,XMLRPCRequest.prototype),{initialize:function(inServerObj,inMethodNameStr,inCallback,inOptArgumentsArray){this.setupRequest(inServerObj,inMethodNameStr,inCallback);$A(inOptArgumentsArray||[]).each(function(arg){this.requestMessageObj.addParameter(arg);}.bind(this));this.sendRequest();}});var XMLRPCResponse=Class.create();XMLRPCResponse.prototype={initialize:function(inTransportObj){var returnedValueNode=inTransportObj.responseXML.getElementsByTagName('value').item(0).firstChild;this.responseText=inTransportObj.responseText;this.deserializedResponse=this.deserializeNode(returnedValueNode);},deserializeNode:function(inNode){switch(inNode.nodeName.toLowerCase()){case"#text":return inNode.nodeValue;break;case"string":return $A(inNode.childNodes).inject('',function(str,node){return(node.nodeName.toLowerCase()=="#text"?str+node.nodeValue:str);});break;case"i4":case"int":return parseInt(inNode.firstChild.nodeValue);break;case"double":return parseFloat(inNode.firstChild.nodeValue);break;case"dateTime.iso8601":return createDateObjFromISO8601(inNode.firstChild.nodeValue);break;case"struct":return this.deserializeStructNode(inNode);break;case"array":return this.deserializeArrayNode(inNode.getElementsByTagName('data').item(0));break;case"boolean":return(inNode.firstChild.nodeValue=="1");break;}},deserializeStructNode:function(inNode){var deserializedStruct=new Object();var childNodesLength=inNode.childNodes.length;for(var i=0;i<childNodesLength;i++){var currentChildNode=inNode.childNodes[i];if(currentChildNode.nodeName=='member'){var currentKeyStr=currentChildNode.getElementsByTagName('name').item(0).firstChild.nodeValue;var currentValueNode=currentChildNode.getElementsByTagName('value').item(0).firstChild;var currentValue=this.deserializeNode(currentValueNode);deserializedStruct[currentKeyStr]=currentValue;}}
return deserializedStruct;},deserializeArrayNode:function(inNode){var deserializedArray=new Array();var childNodesLength=inNode.childNodes.length;for(var i=0;i<childNodesLength;i++){var currentChildNode=inNode.childNodes[i];if(!document.all)Element.cleanWhitespace(currentChildNode);if(currentChildNode.nodeName=='value'){var currentValueNode=currentChildNode.firstChild;var currentValue=this.deserializeNode(currentValueNode);deserializedArray[deserializedArray.length]=currentValue;}}
return deserializedArray;},toString:function(){return this.responseText;}}
if(window.loaded)loaded('wikiserver_api.js');

/* locUtils.js */

Loc.getTimeRangeDisplayString=function(inStartDate,inDuration){if(inDuration.days>0&&inDuration.hours==0&&inDuration.minutes==0){var str=inStartDate.formatDate(Loc.dateFormats.mediumDate);if(inDuration.days>1){var endDate=getEndDateUsingDuration(inStartDate,inDuration);endDate.setDate(endDate.getDate()-1);str+=' - '+endDate.formatDate(Loc.dateFormats.mediumDate);}
return str;}
var time_string=Loc.getLocalizedHourKey(inStartDate.getHours(),inStartDate.getMinutes());var endDate=getEndDateUsingDuration(inStartDate,inDuration);return inStartDate.formatDate(Loc.dateFormats.mediumDate)+'; '+time_string+' - '+Loc.getLocalizedHourKey(endDate.getHours(),endDate.getMinutes());}
Loc.getDurationDisplayString=function(inDuration){var daysString='';var hoursString='';var minutesString='';var andString='';if(inDuration.days&&inDuration.days>0){var pluralString=Loc.durationFormats[inDuration.days>1?'days':'day'];daysString=String.format(Loc.durationFormats.daysFormat,{days:inDuration.days,pluralString:pluralString});}
var hours=0;if(inDuration.hours>0||inDuration.minutes>0){if(inDuration.hours>0){var pluralString=Loc.durationFormats[inDuration.hours>1?'hours':'hour'];hoursString=String.format(Loc.durationFormats.hoursFormat,{hours:inDuration.hours,pluralString:pluralString});}
if(inDuration.minutes>0){var pluralString=Loc.durationFormats[inDuration.minutes>1?'minutes':'minute'];minutesString=String.format(Loc.durationFormats.minutesFormat,{minutes:inDuration.minutes,pluralString:pluralString});}
if((inDuration.minutes>0)&&((inDuration.hours>0)||(inDuration.days>0))){andString=Loc.durationFormats['and'];}}
var subStrs={daysString:daysString,minutesString:minutesString,hoursString:hoursString};subStrs['and']=andString;return String.format(Loc.durationFormats.mainFormat,subStrs);}
Loc.getLongDateString=function(inDateObj){return inDateObj.formatDate(Loc.dateFormats.mediumDateAndShortTime);}
Loc.getExtraLongDateString=function(inDateObj){return inDateObj.formatDate(Loc.dateFormats.longDateAndLongTime);}
Loc.getDateString=function(inDateObj){return inDateObj.formatDate(Loc.dateFormats.mediumDate);}
Loc.getTimeString=function(inDateObj){return inDateObj.formatDate(Loc.dateFormats.hourAndMinutes);}
Loc.getLocalizedHourKey=function(inHours,inOptMinutes){var dt=new Date();dt.setHours(inHours);dt.setMinutes(inOptMinutes||0);return dt.formatDate(Loc.dateFormats[(inOptMinutes&&inOptMinutes>0)?'hourAndMinutes':'hour']);}
if(window.loaded)loaded('locUtils.js');

/* widgets.js */

var requiredUIRevision='20080215.ja01';var d=document||'';var gAnimate=true;var gDoubleClickDelay=300;var gBasePath='/';if(!window.gDebug)gDebug=false;function loggedIn(sessionID){dialogManager().mOKCallback();}
var IEFixes={isIE:(document.all&&!(/Opera/.test(navigator.userAgent))?true:false),isIE7:document.all&&/MSIE 7/.test(navigator.userAgent),isIE6:document.all&&/MSIE 6/.test(navigator.userAgent),mDirectXImages:document.all&&/MSIE (5\.5)|[6789]/.test(navigator.userAgent)&&navigator.platform=="Win32",mBlankSrc:"url(/collaboration/images/blank.gif)",alphaBackground:function(inElement){if(!IEFixes.mDirectXImages)return false;var elm=$(inElement);if(!elm)return false;var src=elm.currentStyle.backgroundImage;if(!src)return false;src=src.replace(/url\("(.+)"\)/,"$1");elm.style.backgroundImage=IEFixes.mBlankSrc;elm.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+src+"', sizingMethod='scale')";return true;},alphaImage:function(inElement,inImageSrc){var elm=$(inElement);if(IEFixes.mDirectXImages&&elm){theElement.src=IEFixes.mBlankSrc;theElement.runtimeStyle.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+inImageSrc+"',sizingMethod='scale')";}}}
if(IEFixes.isIE6){try{document.execCommand("BackgroundImageCache",false,true);}catch(err){}}
var SafariFixes={isMobileSafari:/ AppleWebKit\/.+Mobile\//.test(navigator.userAgent),isWebKit:/WebKit/.test(navigator.userAgent),isTigerSafari:(/WebKit\/\d+/.test(navigator.userAgent)&&(parseInt(navigator.userAgent.match(/WebKit\/(\d+)/)[1])<420))}
var MozillaFixes={isGecko:/Gecko\/\d*/.test(navigator.userAgent),isGecko1_9:/Gecko\/\d*/.test(navigator.userAgent)&&/rv:1.9/.test(navigator.userAgent)}
var OperaFixes={isOpera:/Opera/.test(navigator.userAgent)}
var CommentUID=Class.createWithSharedInstance();Object.extend(Object.extend(CommentUID.prototype,CollabUID.prototype),{mMetaTagName:'apple_collab_comment_uid'});var ServerUI=Class.createWithSharedInstance('serverui');ServerUI.prototype={initialize:function(){bindEventListeners(this,['handleLogoutButtonClick']);publisher().subscribe(this.handleBadSessionID.bind(this),'BAD_SESSION_ID');publisher().subscribe(this.handleAuthenticationFailed.bind(this),'AUTHENTICATION_FAILED');publisher().subscribe(this.handleAuthenticated.bind(this),'AUTHENTICATED');publisher().subscribe(this.handleAuthorizationFailed.bind(this),'AUTHORIZATION_FAILED');publisher().subscribe(this.handleAuthorized.bind(this),'AUTHORIZED');publisher().subscribe(this.handleLoggedOut.bind(this),'LOGGED_OUT');publisher().subscribe(this.handleServerError.bind(this),'MISC_SERVER_ERROR');$$('#logout_button a').each(function(elm){elm.onclick=this.handleLogoutButtonClick;if(Element.firstNodeValue(elm)==Loc.login&&server().sessionID!='unauthenticated'){server().sessionID='unauthenticated';document.cookie='sessionID=unauthenticated; path=/';this.setCachedLevel(0);}}.bind(this));var serverUIRevision=getMetaTagValue('apple_required_ui_revision');if(serverUIRevision&&requiredUIRevision!=serverUIRevision){alert(Loc.incorrectRevision+'\nClient: '+requiredUIRevision+'\nServer: '+serverUIRevision);}
if(gDebug){dialogManager().drawDialog('debug_dialog',[{label:'Request',contents:'<pre id="debug_dialog_request" style="width:600px;height:180px;overflow:scroll;border:1px solid gray">'},{label:'Response',contents:'<pre id="debug_dialog_response" style="width:600px;height:180px;overflow:scroll;border:1px solid gray">'}],'Continue');}},ensureLogin:function(inCallback,inOptLevel,inOptSilent,inOptAlwaysLogin){this.mCheckingLevel=inOptLevel||'write';this.mSilent=inOptSilent;this.mSuccessCallback=inCallback;this.mFailureCallback=null;if(inCallback&&inCallback.constructor==Array){this.mSuccessCallback=inCallback[0];this.mFailureCallback=inCallback[1];}
if(this.getCachedLevel()>=this.getLevelInt(this.mCheckingLevel)&&(!inOptAlwaysLogin)){if(this.mSuccessCallback)this.mSuccessCallback();return true;}
else{blur();if(server().sessionID&&(server().sessionID!='')&&(!inOptAlwaysLogin)){if(!this.mSilent)dialogManager().showProgressMessage('login_progress');var callback=inCallback;if(this.mSilent&&callback&&callback.constructor!=Array){callback=[callback,invalidate];}
server().checkSessionAuthorization(callback,this.mCheckingLevel,uid().mBasePath);}
else if(this.mSilent){if(this.mFailureCallback)this.mFailureCallback();}
else{this.showLoginDialog();}}
return false;},testForCookies:function(){d.cookie='cookies=1; path='+uid().mBaseLocation;if(d.cookie&&d.cookie.match(/cookies=1/))return true;alert(Loc.no_cookies);return false;},showLoginDialog:function(inOptFocusField){if(!this.testForCookies())return false;var thirdPartyAuth=getMetaTagValue('apple_third_party_auth');if(!thirdPartyAuth)server().cacheDigestChallenge();if(!this.mAuthDialog){this.mAuthDialog=dialogManager().drawDialog('login_dialog',[{label:'login_dialog_username',contents:'<input type="text" id="login_dialog_username">'},{label:'login_dialog_password',contents:'<input type="password" id="login_dialog_password">'},{label:'',contents:'<input type="checkbox" id="login_dialog_persistent"><label for="login_dialog_persistent">'+(Loc['login_dialog_persistent']||'')+'</label>'}],'login_dialog_ok');if(thirdPartyAuth){var authFrameInfo=thirdPartyAuth.match(/^(.+)#(\d+)x(\d+)$/);var authFrameSrc=authFrameInfo?authFrameInfo[1]:thirdPartyAuth;var authFrameStyle=authFrameInfo?'width:'+authFrameInfo[2]+'px;height:'+authFrameInfo[3]+'px':'';var authFrame='<iframe id="third_party_auth" src='+authFrameSrc+' style="'+authFrameStyle+'"></iframe>';replaceElementContents(this.mAuthDialog,authFrame,true);}}
var loginSuccessCallback=function(){server().checkSessionAuthorization(this.mSuccessCallback,this.mCheckingLevel,uid().mBasePath);}
var cancelCallback=function(){dialogManager().hide();if(this.mFailureCallback)this.mFailureCallback();}
var okCallback=function(){if(thirdPartyAuth){loginSuccessCallback();}
else{server().login(loginSuccessCallback.bind(this),$F('login_dialog_username'),$F('login_dialog_password'),uid().mBasePath,$('login_dialog_persistent').checked);$('login_dialog_password').value='';}}
dialogManager().show(this.mAuthDialog,cancelCallback,okCallback.bind(this),null,true,inOptFocusField);},logout:function(){dialogManager().showProgressMessage('logout_progress');server().logout();return false;},getLevelInt:function(inStr){return['-','read','write','admin'].indexOf(inStr);},getCachedLevel:function(){var results=d.cookie.match(/acl_cache=(\d+)/);return(results?parseInt(results[1]):0);},setCachedLevel:function(inLevel){d.cookie='acl_cache='+inLevel+'; path='+uid().mBaseLocation;},handleBadSessionID:function(inMessage,inObject,inUserInfo){dialogManager().hideProgressMessage();this.setCachedLevel(0);this.showLoginDialog();},handleAuthenticationFailed:function(inMessage,inObject,inUserInfo){this.setCachedLevel(0);this.showLoginDialog('login_dialog_password');dialogManager().shakeDialog();},handleAuthenticated:function(inMessage,inObject,inUserInfo){this.setCachedLevel(0);$$('#logout_button a').each(function(elm){replaceElementContents(elm,Loc.logout);}.bind(this));},handleAuthorizationFailed:function(inMessage,inObject,inUserInfo){dialogManager().hideProgressMessage();this.setCachedLevel(0);if(inObject.methodNameStr!='checkSessionAuthorization'){this.mPendingRequest=inObject;}
if(this.mSilent){if(this.mFailureCallback)this.mFailureCallback();}
else{this.showLoginDialog();}},handleAuthorized:function(inMessage,inObject,inUserInfo){var level=this.getLevelInt(inUserInfo.action||'write');this.setCachedLevel(Math.max(level,this.getCachedLevel()));if(this.mAuthDialog)dialogManager().hide(this.mAuthDialog);dialogManager().hideProgressMessage();if(this.mPendingRequest){var req=this.mPendingRequest;this.mPendingRequest=null;req.requestMessageObj.params[0]=server().sessionID;req.sendRequest();}},handleLoggedOut:function(inMessage,inObject,inUserInfo){this.setCachedLevel(0);dialogManager().hide();if(inUserInfo.reload){gNotifier.printAtPage('loggedOut');}
else{gNotifier.print('session_expired');$$('#logout_button a').each(function(elm){replaceElementContents(elm,Loc.login);}.bind(this));}},handleServerError:function(inMessage,inObject,inUserInfo){if(dialogManager())dialogManager().hide();if(inUserInfo.faultCode==0||inUserInfo.faultCode==503){alert(String.format(Loc.noserver_error_format,{hostname:window.location.hostname}));return true;}
else if(inUserInfo.faultCode==410){alert(Loc.noparse_error);return true;}
var errorStr=Loc.error_from_server+' '+inUserInfo.faultString.split('\n')[0]+" ("+inUserInfo.faultCode+")";if(window.unitTestHandler)unitTestHandler.errorFromJS_(errorStr);if(gDebug&&(!this.mDebugInfo)){replaceElementContents('debug_dialog_request',inObject.requestMessageObj.xml());replaceElementContents('debug_dialog_response',(inObject.responseObj?inUserInfo.faultString:'No response.'));var callback=function(){alert(errorStr);}
dialogManager().show('debug_dialog',null,callback);}
else{alert(errorStr);}},handleLogoutButtonClick:function(inEvent){if(server().sessionID=='unauthenticated'){var loginCallback=function(){gNotifier.print('loggedIn');}
this.ensureLogin(loginCallback,['read','read','write','admin','admin'][this.getCachedLevel()],false,true);}
else{this.logout();}
return false;}}
var InlineDeleteButton=Class.create();InlineDeleteButton.prototype={initialize:function(inParent,inCallback){bindEventListeners(this,['handleParentHover','handleParentOut','handleButtonClick']);this.mParent=$(inParent);this.mCallback=inCallback;observeEvents(this,this.mParent,{mouseover:'handleParentHover',mouseout:'handleParentOut'});},show:function(){if(!this.mElement){this.mElement=Builder.node('a',{href:'#',className:'inline_delete_button',style:'display:none',title:Loc.tags_remove_tag_dialog_ok},Loc.tags_remove_tag_dialog_ok);this.mElement.onclick=this.handleButtonClick;d.body.appendChild(this.mElement);observeEvents(this,this.mElement,{mouseover:'handleParentHover',mouseout:'handleParentOut'});}
Position.clone(this.mParent,this.mElement,{setWidth:false,setHeight:false,offsetLeft:(-9),offsetTop:(-10)});Element.show(this.mElement);Element.addClassName(this.mParent,'inlinedeletefocus');},hide:function(){Element.hide(this.mElement);Element.removeClassName(this.mParent,'inlinedeletefocus');},handleParentHover:function(inEvent){if(this.mTimer){clearTimeout(this.mTimer);delete this.mTimer;}
this.show();},handleParentOut:function(inEvent){if(this.mTimer){clearTimeout(this.mTimer);delete this.mTimer;}
this.mTimer=setTimeout(this.hide.bind(this),200);},handleButtonClick:function(inEvent){if(!InlineDeleteButton.mConfirmDialog){InlineDeleteButton.mConfirmDialog=dialogManager().drawDialog('tags_remove_tag_dialog',['tags_remove_tag_dialog_description'],'tags_remove_tag_dialog_ok');}
targetedDialogManager().show(InlineDeleteButton.mConfirmDialog,null,this.handleConfirmDialogOK.bind(this),this.mParent);return false;},handleConfirmDialogOK:function(){var callback=function(){this.hide(false);if(this.mCallback)this.mCallback(this.mParent);}
gPoofManager.showOverElement(this.mParent,callback.bind(this));},destroy:function(){Event.stopObserving(this.mParent,'mouseover',this.handleParentHover);Event.stopObserving(this.mParent,'mouseout',this.handleParentOut);if(this.mElement){Event.stopObserving(this.mElement,'mouseover',this.handleParentHover);Event.stopObserving(this.mElement,'mouseout',this.handleParentOut);}}}
var Tagger=Class.create();Tagger.prototype={initialize:function(inParent){bindEventListeners(this,['handleExpanderClick','handleInputFocus','handleInputBlur','handleMouseDownInTag','handleMouseMove','handleMouseUp']);this.mParent=$(inParent);if(!this.mParent)return false;this.mElement=this.mParent.down('ul');if(!this.mElement)return false;if(!IEFixes.isIE){Element.cleanWhitespace(this.mParent);Element.cleanWhitespace(this.mElement);}
if(arguments.length>2)Object.extend(this,arguments[2]);$A(this.mParent.getElementsByTagName('a')).each(function(node){this.addTag(node.firstChild.nodeValue);}.bind(this));this.draw();this.mTagSearchField=new TagSearchField(this.mInput,{mClickedItemCallback:this.selectedSearchItem.bind(this)});},draw:function(){if(!this.mElement){this.mParent.appendChild(Builder.node('h3',{},[Loc.tags_label]));this.mElement=Builder.node('ul',{className:'taglist'});this.mParent.appendChild(this.mElement);}
if(!this.mInputExpander){this.mInputExpander=Builder.node('a',{href:'#',className:'next_tag_expander'},[Loc.tags_addtag_hint]);this.mParent.appendChild(this.mInputExpander);this.mInputExpander.onclick=this.handleExpanderClick;}
if(!this.mInput){this.mInput=Builder.node('input',{id:'next_tag',title:Loc.tags_addtag_hint,type:'text',className:'text',style:'display:none',maxLength:'70'});if(SafariFixes.isWebKit)$(this.mInput).setStyle({position:'relative',top:'0',left:'0'});this.mParent.appendChild(this.mInput);observeEvents(this,this.mInput,{focus:'handleInputFocus',blur:'handleInputBlur'});this.mInputHinter=new HintedTextField('next_tag',Loc.tags_addtag_hint);}
if(!this.mDragHandle){this.mDragHandle=Builder.node('div',{className:'bvr-tagdraghandle',style:'position:absolute;top:0;left:0;z-index:100;display:none;fontSize:0.8em;background:#dedede'},['-']);d.body.appendChild(this.mDragHandle);}},addTag:function(inTagName,sendToServer){inTagName=inTagName.replace(/^\s+/,'').replace(/\s+$/,'').replace(/\s{2,}/g,' ').toLowerCase();var elm=this.getTags().elements[inTagName];if(elm){sendToServer=false;}
else{elm=Builder.node('li',[Builder.node('a',{href:uid().mBaseLocation+'search/?tag='+encodeURIComponent(inTagName)},[inTagName])]);this.mElement.appendChild(elm);if(this.mEditMode)this.mDeleteButtons.push(new InlineDeleteButton(elm,this.handleDeleteButtonClick.bind(this)));}
if(sendToServer){this.mRequest=server()[uid().mService].addTagToEntry(function(){gNotifier.print('tag_added')},uid().mValue,inTagName);}
elm.firstChild.onmousedown=this.handleMouseDownInTag;elm.firstChild.title=Loc.tag_tooltip;var recentTags=[];var tagCookieMatch=d.cookie.match('recentTags=([^;]+)');if(tagCookieMatch)recentTags=tagCookieMatch[1].split(',').slice(0,9);recentTags=recentTags.reject(function(t){return t==inTagName});recentTags.unshift(inTagName);var expireDate=new Date();expireDate.setMonth(expireDate.getMonth()+6);d.cookie='recentTags='+recentTags.join(',')+'; path='+uid().mBaseLocation+'; expires='+expireDate.toGMTString();return elm;},handleDeleteButtonClick:function(inElement){this.removeTag(inElement.firstChild.firstChild.nodeValue,inElement);},removeTag:function(inTagName,inOptTagElement){var elm=inOptTagElement||this.getTags().elements[inTagName];if(elm){var removeTagFromServer=function(){server()[uid().mService].removeTagFromEntry(invalidate,uid().mValue,inTagName);};serverui().ensureLogin(removeTagFromServer.bind(this));Element.remove(elm);}},hasTag:function(inTag){return(this.getTags().elements[inTag]?true:false);},getTags:function(){var tags=[];tags.elements={};if(this.mElement)$A(this.mElement.childNodes).each(function(node){var tagName='-';if(!node.firstChild.firstChild){node.firstChild.appendChild(d.createTextNode(tagName));}
else{tagName=node.firstChild.firstChild.nodeValue;}
tags.push(tagName);tags.elements[tagName]=node;});return tags;},switchToDisplay:function(){if(!this.mElement)return false;var tagName=this.mInputHinter.getValue();if(tagName!='')this.addTag(tagName,true);this.mInputHinter.setValue('');this.mDeleteButtons.each(function(button){button.mParent.getElementsByTagName('a').item(0).onclick='';button.destroy();}.bind(this));delete this.mDeleteButtons;Element.hide(this.mInput);Element.show(this.mInputExpander);this.mEditMode=false;},switchToEditor:function(){if(!this.mElement)return false;if(!this.mDeleteButtons)this.mDeleteButtons=[];var tags=this.getTags();tags.each(function(tag){this.mDeleteButtons.push(new InlineDeleteButton(tags.elements[tag],this.handleDeleteButtonClick.bind(this)));tags.elements[tag].getElementsByTagName('a').item(0).onclick=invalidate;}.bind(this));Element.hide(this.mInputExpander);Element.show(this.mInput);this.mEditMode=true;},handleExpanderClick:function(inEvent){Element.hide(this.mInputExpander);Element.show(this.mInput);this.mInput.focus();return false;},handleInputFocus:function(inEvent){this.mInput.style.visibility='visible';var afterFinish=function(){this.mInput.focus();this.mTagSearchField.runQuery();}
serverui().ensureLogin(afterFinish.bind(this));},handleInputBlur:function(inEvent){this.mInput.style.visibility='';var tagName=this.mInputHinter.getValue();if(!this.mEditMode){Element.hide(this.mInput);Element.show(this.mInputExpander);}},selectedSearchItem:function(){if(this.mInput.value!=''){var tagName=this.mInput.value;this.addTag(tagName,true);this.mInput.value='';Element.addClassName(this.mElement,'focused_page_tags');Element.removeClassName(this.mElement,'page_tags');}},handleMouseDownInTag:function(inEvent){Event.stop(inEvent);this.mDraggingTag=Event.findElement(inEvent,'a');var table=this.mDraggingTag.parentNode;this.mDragStartOffset=new Array(Event.pointerX(inEvent)-Element.getLeft(this.mDraggingTag),Event.pointerY(inEvent)-Element.getTop(this.mDraggingTag));Position.clone(table,this.mDragHandle);Element.setStyle(this.mDragHandle,{display:(Element.getStyle(this.mDraggingTag,'display')||'block'),textAlign:(Element.getStyle(this.mDraggingTag,'text-align')||'center'),margin:(Element.getStyle(this.mDraggingTag,'margin')||''),padding:(Element.getStyle(this.mDraggingTag,'padding')||''),color:(Element.getStyle(this.mDraggingTag,'color')||''),backgroundColor:(Element.getStyle(this.mDraggingTag,'background-color')||''),fontFamily:(Element.getStyle(this.mDraggingTag,'font-family')||''),fontSize:(Element.getStyle(this.mDraggingTag,'font-size')||'1em')});this.mDragHandle.firstChild.nodeValue=this.mDraggingTag.firstChild.nodeValue;Element.show(this.mDragHandle);table.style.opacity='0.01';observeEvents(this,d,{mousemove:'handleMouseMove',mouseup:'handleMouseUp'});return false;},handleMouseMove:function(inEvent){Element.setStyle(this.mDragHandle,{left:Event.pointerX(inEvent)-this.mDragStartOffset[0]+'px',top:Event.pointerY(inEvent)-this.mDragStartOffset[1]+'px'});},handleMouseUp:function(inEvent){Event.stopObserving(d,'mousemove',this.handleMouseMove);Event.stopObserving(d,'mouseup',this.handleMouseUp);var table=this.mDraggingTag.parentNode;var tagName=this.mDraggingTag.firstChild.nodeValue;table.style.opacity='';if(Position.within(this.mParent,Event.pointerX(inEvent),Event.pointerY(inEvent))){Element.hide(this.mDragHandle);if(!this.mEditMode)location.href=this.mDraggingTag.href;}
else{this.removeTag(tagName,table);var afterFinish=function(){Element.hide(this.mDragHandle);}
gPoofManager.showOverElement(this.mDragHandle,afterFinish.bind(this));}}}
var Notifier=Class.create();Notifier.prototype={initialize:function(){bindEventListeners(this,['handleMouseDown']);this.mTimeout=8000;this.mElement=Builder.node('div',{id:'system_message',style:(IEFixes.isIE6?"position:absolute;top:0;float:right;filter:alpha(opacity='70');display:none":'display:none')});d.body.appendChild(this.mElement);if(arguments.length>0)Object.extend(this,arguments[0]);var results=d.cookie.match(/notify=([^;]+)/);if(results){var callback=function(){this.mTimer=null;this.print(results[1]);}
this.mTimer=setTimeout(callback.bind(this),1000);d.cookie='notify=; path=/';}},print:function(inStr){inStr=((Loc&&Loc[inStr])?Loc[inStr]:inStr);removeAllChildNodes(this.mElement);this.mElement.appendChild(d.createTextNode(inStr));if(gAnimate){if(this.mEffect)this.mEffect.cancel();this.mEffect=new Effect.Appear(this.mElement);}
else{Element.show(this.mElement);}
if(this.mTimer)clearTimeout(this.mTimer);this.mTimer=setTimeout(this.hide.bind(this),this.mTimeout);observeEvents(this,d,{mousedown:'handleMouseDown'});if(window.unitTestHandler)unitTestHandler.messageFromJS_(inStr);},printAtPage:function(inStr,inPage){d.cookie='notify='+inStr+'; path=/';if(inPage){if(SafariFixes.isWebKit){var a=Builder.node('a',{href:inPage,display:'none'});d.body.appendChild(a);var evt=document.createEvent('MouseEvents');evt.initEvent('click',true,true);a.dispatchEvent(evt);}
else{location.href=inPage;}}
else{location.reload(true);}},hide:function(){var inFade=(arguments.length>0?arguments[0]:gAnimate);Event.stopObserving(d,'mousedown',this.handleMouseDown);if(this.mEffect)this.mEffect.cancel();if(inFade){this.mEffect=new Effect.Fade(this.mElement);}
else{Element.hide(this.mElement);}
this.mTimer=null;},handleMouseDown:function(e){if(this.mTimer)clearTimeout(this.mTimer);this.hide(false);}}
var TooltipManager=Class.create();TooltipManager.prototype={mShowTimeout:2000,mHideTimeout:20000,mEnabled:true,initialize:function(){bindEventListeners(this,['handleMouseDown','handleMouseOver','handleMouseOut']);},show:function(inElement,inValues){this.mElement=$(inElement);var prefix=this.mElement.id+'_';this.mPopulatedKeys=[];for(var key in inValues){if($(prefix+key)){this.mPopulatedKeys.push(prefix+key);replaceElementContents(prefix+key,inValues[key]);}}
this.mElement.style.visibility='hidden';Element.show(inElement);var leftPos=Math.min(this.mPos[0],windowSize()[0]-this.mElement.offsetWidth-8);var topPos=Math.min(this.mPos[1],windowSize()[1]-this.mElement.offsetHeight-8);Element.hide(inElement);Element.setStyle(inElement,{left:leftPos+'px',top:topPos+'px',visibility:''});this.mEffect=new Effect.Appear(inElement,{duration:0.5});if(this.mTimer)clearTimeout(this.mTimer);this.mTimer=setTimeout(this.hide.bind(this),this.mHideTimeout);observeEvents(this,d,{mousedown:'handleMouseDown'});},hide:function(){var afterFinish=function(){this.mPopulatedKeys.each(function(key){replaceElementContents(key,"\u00A0");});}.bind(this);var inFade=(arguments.length>0?arguments[0]:gAnimate);Event.stopObserving(d,'mousedown',this.handleMouseDown);if(this.mActiveElement)Event.stopObserving(this.mActiveElement,'mouseout',this.handleMouseOut);this.mActiveElement=null;if(this.mEffect)this.mEffect.cancel();if(inFade&&this.mElement){this.mEffect=new Effect.Fade(this.mElement,{from:0.9,afterFinish:afterFinish});}
else if(this.mElement){Element.hide(this.mElement);afterFinish();}
if(this.mTimer)clearTimeout(this.mTimer);this.mTimer=null;},handleMouseDown:function(e){this.mActiveElement=null;if(this.mTimer)clearTimeout(this.mTimer);this.hide(false)},handleMouseOver:function(e){if(this.mEnabled){this.mPos=new Array(Event.pointerX(e)+2,Event.pointerY(e)+10);this.mActiveElement=Event.element(e);if(this.mTimer)clearTimeout(this.mTimer);this.mTimer=setTimeout(this.getValues.bind(this),this.mShowTimeout);observeEvents(this,this.mActiveElement,{mouseout:'handleMouseOut'});}},handleMouseOut:function(e){if(this.mTimer)clearTimeout(this.mTimer);try{this.hide(false)}
catch(e){}},observe:function(inElement){observeEvents(this,inElement,{mouseover:'handleMouseOver'});},stopObserving:function(inElement){if(this.mActiveElement==inElement){this.hide(false);if(this.mTimer)clearTimeout(this.mTimer);this.mTimer=null;this.mActiveElement=null;}
Event.stopObserving(inElement,'mouseover',this.handleMouseOver);},getValues:function(){if(this.mActiveElement&&this.mActiveElement.tooltipValues){this.show(this.mActiveElement.tooltipElement,this.mActiveElement.tooltipValues);}
else if(this.mActiveElement&&this.mActiveElement.tooltipCallback){this.mActiveElement.tooltipCallback(this.mActiveElement);}}}
var PopupManager=Class.create();PopupManager.prototype={mHideDelay:350,mShowDuration:0,mHideDuration:0.2,initialize:function(){bindEventListeners(this,['handleMouseOut','handleMouseOver','handleWindowClick','handleKeyboardFocus']);if(arguments.length>0)Object.extend(this,arguments[0]);},show:function(inParent,inElement,inOptOffset,inFade){var offsetLeft=0;var offsetTop=inOptOffset||0;if(inOptOffset&&inOptOffset.constructor==Array){offsetLeft=inOptOffset[0];offsetTop=inOptOffset[1];}
var inFade=(arguments.length>3?arguments[3]:gAnimate);this.hide(false);this.clearTimer();this.mActiveParent=$(inParent);this.mActiveElement=$(inElement);if(this.mActiveParent){this.mActiveElement.style.position='absolute';var cloneOptions={setWidth:false,setHeight:false,offsetLeft:offsetLeft,offsetTop:offsetTop};Position.clone(this.mActiveParent,this.mActiveElement,cloneOptions);Element.addClassName(this.mActiveParent,'active');}
this.mActiveElement.style.opacity='';if(IEFixes.isIE)this.mActiveElement.style.filter='';Event.observe(this.mActiveParent,'mouseout',this.handleMouseOut);Event.observe(this.mActiveElement,'mouseout',this.handleMouseOut);Event.observe(this.mActiveParent,'mouseover',this.handleMouseOver);Event.observe(this.mActiveElement,'mouseover',this.handleMouseOver);if(inFade){Element.hide(this.mActiveElement);if(this.mEffect)this.mEffect.cancel();this.mEffect=new Effect.Appear(this.mActiveElement,{duration:this.mShowDuration});}
else{Element.show(this.mActiveElement);}
Event.observe(d.body.firstChild,'mousedown',this.handleWindowClick);},createPopupElement:function(inOptClassName,inOptID){var sClassName='popup';if(inOptClassName)sClassName+=' '+inOptClassName;var elm=Builder.node('ul',{className:sClassName,style:'display:none'});if(inOptID)elm.id=inOptID;d.body.appendChild(elm);return elm;},itemWithTitle:function(inPopup,inTitle,inOptHref,inOptCallback,inOptRel){var a=Builder.node('a',{className:'popuplink',title:'',href:inOptHref||'javascript:void(0);'},[inTitle]);if(inOptRel)a.setAttribute('rel',inOptRel);if(inOptCallback)a.onclick=inOptCallback;var elm=Builder.node('li',[a]);inPopup.appendChild(elm);return a;},divider:function(inPopup){var li=Builder.node('li',{className:'popupDivider'},'\u00A0');inPopup.appendChild(li);return li;},hide:function(){if(this.mEffect)this.mEffect.cancel();if(this.mActiveElement){var inFade=(arguments.length>0?arguments[0]:gAnimate);Event.stopObserving(this.mActiveParent,'mouseout',this.handleMouseOut);Event.stopObserving(this.mActiveElement,'mouseout',this.handleMouseOut);Event.stopObserving(this.mActiveParent,'mouseover',this.handleMouseOver);Event.stopObserving(this.mActiveElement,'mouseover',this.handleMouseOver);if(inFade){this.mEffect=new Effect.Fade(this.mActiveElement,{duration:this.mHideDuration});}
else{Element.hide(this.mActiveElement);}
if(this.mChildManager)this.mChildManager.hide(inFade);Element.removeClassName(this.mActiveParent,'active');this.mActiveParent=null;this.mActiveElement=null;Event.stopObserving(d,'mousedown',this.handleWindowClick);}
$$('.popup').each(function(popupElm){popupElm.hide();});},handleMouseOut:function(inEvent){Event.stop(inEvent);this.setTimer();},handleMouseOver:function(inEvent){Event.stop(inEvent);this.clearTimer();},setTimer:function(inDelay){this.clearTimer();this.mTimer=setTimeout(this.handleTimerFired.bind(this),inDelay||this.mHideDelay);},clearTimer:function(){if(this.mTimer)clearTimeout(this.mTimer);this.mTimer=null;},handleTimerFired:function(){this.hide();},handleWindowClick:function(e){var elm=Event.element(e);if(elm&&Element.hasClassName(elm,'popuplink'))return true;this.setTimer(100);},handleKeyboardFocus:function(e){}}
var ModalDialogManager=Class.createWithSharedInstance('dialogManager');ModalDialogManager.prototype={mSlideFromElement:null,mProgressMessageDelay:700,initialize:function(){bindEventListeners(this,['handleKeyPress','handleCancelClick','handleOKClick']);if($('slideorigin')){this.mSlideFromElement=$('slideorigin');}else{this.mSlideFromElement=Builder.node('div',{id:'slideorigin',className:'slideorigin'});if($$('.contentsbody')[0]&&$$('.main')[0])$$('.contentsbody')[0].insertBefore(this.mSlideFromElement,$$('.main')[0]);else d.body.appendChild(this.mSlideFromElement);}
if($('dialog_mask')){this.mMaskWidget=$('dialog_mask');}else{this.mMaskWidget=Builder.node('div',{id:'dialog_mask',style:(IEFixes.isIE6?"position:absolute;top:0;left:0;width:100%;filter:alpha(opacity='50');display:none":'display:none')});d.body.appendChild(this.mMaskWidget);}
if(arguments.length>0)Object.extend(this,arguments[0]);},drawDialog:function(inID,inFields,inOKTitle,inOptFormAction){var tbody=Builder.node('tbody');var dialog=Builder.node('div',{id:inID,className:'dialog',style:'display:none'},[Builder.node('form',{id:inID+'_form',method:(inOptFormAction?'post':'get'),action:inOptFormAction||'#',enctype:(inOptFormAction?'multipart/form-data':'application/x-www-form-urlencoded'),target:(inOptFormAction?'image_upload_iframe':'_self')},[Builder.node('table',[Builder.node('thead',[Builder.node('tr',[Builder.node('td',{colSpan:'2'},(Loc[inID+'_header']||''))])]),tbody])])]);inFields.each(function(field,index){var td=Builder.node('td');var label=Builder.node('label',(Loc[field.label]||field.label));if(field.contents){tbody.appendChild(Builder.node('tr',[Builder.node('th',label),td]));replaceElementContents(td,field.contents,true);var inputs=td.getElementsByTagName('input');if(inputs.length)label.setAttribute('for',inputs.item(0).getAttribute('id'));}
else{td.colSpan='2';tbody.appendChild(Builder.node('tr',[td]));replaceElementContents(td,Loc[field]||field);}});tbody.appendChild(Builder.node('tr',[Builder.node('td',{colSpan:'2',className:'form_buttons'},[Builder.node('div',{className:'submit'},[Builder.node('input',{type:'submit',className:'primaryaction',id:inID+'_ok',value:(Loc[inOKTitle]||inOKTitle),name:'ok_button'}),Builder.node('input',{type:'button',className:'secondaryaction',id:inID+'_cancel',value:Loc.cancel,name:'cancel_button'})])])]));d.body.appendChild(dialog);if(!inOptFormAction)$(inID+'_form').onsubmit=invalidate;return dialog;},focus:function(){if(this.mFocusField){$(this.mFocusField).activate();}
else{var inputs=this.mActiveElement.getElementsByTagName('input');$A(inputs).detect(function(elm){if(elm.type&&elm.focus&&(elm.type.toLowerCase()=='text'||elm.type.toLowerCase()=='search')&&(!Element.hasClassName(elm,'search_field'))&&(!elm.disabled)){$(elm).activate();return true;}
return false;});}
if(window.unitTestHandler)unitTestHandler.messageFromJS_('dialog');},prepareToShow:function(inElement,inCancelCallback,inOKCallback,inOptSlideFrom,inOptShowSpinner,inOptFocusField,inOptAllowSubmission){this.hide();this.mShowSpinner=inOptShowSpinner;this.mFocusField=$(inOptFocusField);this.mAllowSubmission=inOptAllowSubmission;inOptSlideFrom=inOptSlideFrom||this.mSlideFromElement;this.mActiveParent=(inOptSlideFrom?$(inOptSlideFrom):null);if(this.mTimer){clearTimeout(this.mTimer);delete this.mTimer;}
this.mActiveElement=$(inElement);this.mCancelCallback=inCancelCallback;this.mOKCallback=inOKCallback;if(IEFixes.isIE6)this.mMaskWidget.style.height=(windowSize()[1]+d.body.scrollTop)+'px';Element.show(this.mMaskWidget);},finishShowing:function(){this.mCancelElement=$(this.mActiveElement.id+'_cancel');if(this.mCancelElement){Event.observe(this.mCancelElement,'click',this.handleCancelClick);}
Event.observe(d,'keypress',this.handleKeyPress);this.mFormElement=$(this.mActiveElement.id+'_form');if(this.mFormElement){if(SafariFixes.isWebKit&&(this.mFormElement.enctype=='multipart/form-data')&&$(this.mActiveElement.id+'_ok')){$(this.mActiveElement.id+'_ok').type='button';this.mObservingInfo={elm:this.mActiveElement.id+'_ok',evt:'click'};Event.observe(this.mActiveElement.id+'_ok','click',this.handleOKClick);}
else{this.mObservingInfo={elm:this.mFormElement,evt:'submit'};Event.observe(this.mFormElement,'submit',this.handleOKClick);}}
if(this.mCancelElement)this.mCancelElement.disabled=false;if($(this.mActiveElement.id+'_ok'))$(this.mActiveElement.id+'_ok').disabled=false;},show:function(inElement,inCancelCallback,inOKCallback,inOptSlideFrom,inOptShowSpinner,inOptFocusField,inOptAllowSubmission){this.prepareToShow(inElement,inCancelCallback,inOKCallback,inOptSlideFrom,inOptShowSpinner,inOptFocusField,inOptAllowSubmission);if(this.mActiveParent&&(inElement!=this.mProgressElement)){window.scrollTo(0,0);this.mActiveElement.style.height='';Element.setStyle(this.mActiveParent,{position:'relative',zIndex:'504'});Element.addClassName(this.mActiveParent,'dialog_parent');this.mActiveElement.style.visibility='hidden';Element.show(this.mActiveElement);var cloneOptions={setWidth:false,setHeight:false,offsetLeft:(this.mActiveParent.offsetWidth/2)-(this.mActiveElement.offsetWidth/2),offsetTop:Element.getHeight(this.mActiveParent)};Position.clone(this.mActiveParent,this.mActiveElement,cloneOptions);}
else{this.mActiveElement.style.visibility='hidden';Element.show(this.mActiveElement);var elementBounds=offsetBoundsForDiv(this.mActiveElement);var leftd=((window.innerWidth||d.body.offsetWidth)/2)-(elementBounds[2]/2);var topd=((window.innerHeight||d.documentElement.offsetHeight)/2)-(elementBounds[3]/2);topd=topd/2;leftd=Math.max(leftd,0);topd=Math.max(topd,0)+d.body.scrollTop;this.mActiveElement.style.left=leftd+'px';this.mActiveElement.style.top=topd+'px';}
if(MozillaFixes.isGecko)this.mActiveElement.style.position='fixed';Element.hide(this.mActiveElement);this.mActiveElement.style.visibility='visible';this.mEffect=new Effect.Appear(this.mActiveElement,{duration:0.3,afterFinish:this.focus.bind(this)});if(IEFixes.isIE){Element.setStyle(this.mMaskWidget,{width:d.body.offsetWidth+'px',height:d.documentElement.offsetHeight+'px'});}
this.finishShowing();},showProgressMessage:function(inMessage,inOptShowProgressBar,inOptCancelCallback){dialogManager().showingProgressMessage=true;if(!this.mProgressElement){this.mProgressElement=Builder.node('div',{className:'dialog progress_text',id:'progress_message',style:'display:none'});d.body.appendChild(this.mProgressElement);}
replaceElementContents(this.mProgressElement,(Loc[inMessage]||inMessage));if(inOptShowProgressBar){this.mProgressBar=Builder.node('div',{className:'progress_bar'},[Builder.node('div',{style:'width:0'},"\u00A0")]);replaceElementContents(this.mProgressElement,Builder.node('table',[Builder.node('tbody',[Builder.node('tr',[Builder.node('td',[Loc[inMessage]||inMessage]),Builder.node('td',[this.mProgressBar]),Builder.node('input',{type:'button',id:'progress_dialog_cancel',value:Loc.cancel,name:'cancel_button'})])])]));if(inOptCancelCallback)$('progress_dialog_cancel').onclick=inOptCancelCallback;}
this.hide(null,true);this.mTimer=setTimeout(function(){this.show(this.mProgressElement)}.bind(this),this.mProgressMessageDelay);delete dialogManager().showingProgressMessage;},hide:function(inOptElement,inPerformFakeHide){if(!this.mTargeted)targetedDialogManager().hide(inOptElement,inPerformFakeHide);if(this.mObservingInfo){Event.stopObserving(this.mObservingInfo.elm,this.mObservingInfo.evt,this.handleOKClick);delete this.mObservingInfo;}
if(SafariFixes.isWebKit&&this.mProgressElement&&(this.mActiveElement==this.mProgressElement)){$$('div.dialog').each(function(dialogDiv){if(dialogDiv.style.visibility=='hidden'){Element.hide(dialogDiv);dialogDiv.style.visibility='';}});}
if(inOptElement&&(this.mActiveElement!=inOptElement))return false;if(this.mTimer){clearTimeout(this.mTimer);delete this.mTimer;}
Event.stopObserving(d,'keypress',this.handleKeyPress);if(this.mCancelElement){if(this.mShowSpinner)this.mCancelElement.disabled=false;Event.stopObserving(this.mCancelElement,'click',this.handleCancelClick);delete this.mCancelElement;}
if(this.mShowSpinner){$(this.mActiveElement.id+'_ok').disabled=false;$A(this.mActiveElement.getElementsByClassName('dialog_progress_row')).invoke('removeClassName','dialog_progress_row');this.mShowSpinner=false;}
if(this.mActiveElement){if(this.mEffect)this.mEffect.cancel();var elementForm=$(this.mActiveElement).down('form');if(SafariFixes.isWebKit&&dialogManager().showingProgressMessage&&elementForm&&elementForm.method=='post'){this.mActiveElement.style.visibility='hidden';}
else{Element.hide(this.mActiveElement);}
Element.hide(this.mMaskWidget);delete this.mActiveElement;}
if(this.mActiveParent){Element.setStyle(this.mActiveParent,{position:'',zIndex:''});Element.removeClassName(this.mActiveParent,'dialog_parent');}},shakeDialog:function(){var element=$(this.mActiveElement);element=$(element);var oldStyle={left:element.getStyle('left')};return new Effect.Move(element,{x:10,y:0,duration:0.05,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-20,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:20,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-20,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:20,y:0,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-10,y:0,duration:0.05,afterFinishInternal:function(effect){effect.element.setStyle(oldStyle);}})}})}})}})}})}});},hideProgressMessage:function(){if(this.mTimer){clearTimeout(this.mTimer);delete this.mTimer;}
if(this.mActiveElement==this.mProgressElement)this.hide();},handleKeyPress:function(inEvent){if(inEvent.keyCode==Event.KEY_ESC){this.handleCancelClick(inEvent);}},handleCancelClick:function(inEvent){this.hide();if(this.mCancelCallback)this.mCancelCallback();},handleOKClick:function(inEvent){var elm=Event.element(inEvent);if(!this.mAllowSubmission)Event.stop(inEvent);if(elm&&elm.type&&elm.form&&(elm.type=='button')&&this.mAllowSubmission)elm.form.submit();if(this.mShowSpinner){if(this.mCancelElement)this.mCancelElement.disabled=true;$(this.mActiveElement.id+'_ok').disabled=true;$A(this.mActiveElement.getElementsByClassName('form_buttons')).invoke('addClassName','dialog_progress_row');}
else{this.hide();}
if(this.mOKCallback)this.mOKCallback();if(!this.mAllowSubmission)return false;}}
var TargetedDialogManager=Class.createWithSharedInstance('targetedDialogManager');Object.extend(Object.extend(TargetedDialogManager.prototype,ModalDialogManager.prototype),{mTargeted:true,show:function(inElement,inCancelCallback,inOKCallback,inSlideFrom,inOptShowSpinner,inOptFocusField,inOptAllowSubmission){this.prepareToShow(inElement,inCancelCallback,inOKCallback,inSlideFrom,inOptShowSpinner,inOptFocusField,inOptAllowSubmission);Element.addClassName(this.mActiveElement,'targeted_dialog');if(MozillaFixes.isGecko)this.mActiveElement.style.position='fixed';this.mActiveElement.style.visibility='hidden';Element.show(this.mActiveElement);Element.setStyle(this.mActiveElement,{width:'',height:''});var origSize=Element.getInvisibleSize(this.mActiveElement);if(IEFixes.isIE&&$('toolbars')&&Element.descendantOf(inSlideFrom,'toolbars'))Position.absolutize('toolbars');Position.clone(inSlideFrom,this.mActiveElement);if(IEFixes.isIE&&$('toolbars')&&Element.descendantOf(inSlideFrom,'toolbars'))Position.relativize('toolbars');var clonedSize=Element.getInvisibleSize(this.mActiveElement);Element.setStyle(this.mActiveElement,{width:Math.min(origSize[0],clonedSize[0])+'px',height:Math.min(origSize[1],clonedSize[1])+'px'});var diffs=[this.mActiveElement.offsetWidth-parseInt(this.mActiveElement.style.width),this.mActiveElement.offsetHeight-parseInt(this.mActiveElement.style.height)];origSize[0]-=diffs[0];origSize[1]-=diffs[1];Element.hide(this.mActiveElement);this.mActiveElement.style.visibility='';var leftOffset1='';var leftOffset2='';if(parseInt(this.mActiveElement.style.left)>(windowSize()[0]/2)){this.mActiveElement.style.left=(parseInt(this.mActiveElement.style.left)-6)+'px';var leftOffset=parseInt(this.mActiveElement.style.left)+parseInt(this.mActiveElement.style.width)-origSize[0]-diffs[0]-diffs[0];leftOffset1='left:'+(leftOffset-13)+'px;';leftOffset2='left:'+leftOffset+'px;';}
else{this.mActiveElement.style.left=(parseInt(this.mActiveElement.style.left)+6)+'px';}
var topOffset1='';var topOffset2='';if(parseInt(this.mActiveElement.style.top)>(windowSize()[1]/2)){this.mActiveElement.style.top=(parseInt(this.mActiveElement.style.top)-6)+'px';var topOffset=parseInt(this.mActiveElement.style.top)+parseInt(this.mActiveElement.style.height)-origSize[1]-diffs[1];topOffset1='top:'+(topOffset-13)+'px;';topOffset2='top:'+topOffset+'px;';}
else{this.mActiveElement.style.top=(parseInt(this.mActiveElement.style.top)+6)+'px';}
Element.show(this.mActiveElement);this.mEffect=new Effect.Morph(inElement,{style:leftOffset1+topOffset1+'width:'+(origSize[0]+13)+'px;height:'+(origSize[1]+13)+'px',duration:0.14,afterFinish:function(eff){new Effect.Morph(eff.element,{style:leftOffset2+topOffset2+'width:'+origSize[0]+'px;height:'+origSize[1]+'px',duration:0.08,afterFinish:function(eff){eff.element.style.width='';eff.element.style.height='';this.focus();}.bind(this)});}.bind(this)});this.finishShowing();}});var ButtonBarWidget=Class.create();ButtonBarWidget.prototype={mSelectedIndex:0,initialize:function(inParentElm,inParentClassName,inChildClassNames){bindEventListeners(this,['handleClickedButton']);this.mChildClassNames=inChildClassNames;if(arguments.length>3)Object.extend(this,arguments[3]);this.mButtons=inChildClassNames.collect(function(className,i){var a=Builder.node('a',{href:'#',title:(Loc[className]||'')},["\u00A0"]);a.onclick=this.handleClickedButton;return Builder.node('li',{className:className},[a]);}.bind(this));this.mElement=Builder.node('ul',{className:inParentClassName},this.mButtons);$(inParentElm).appendChild(this.mElement);this.setSelectedIndex(this.mSelectedIndex);},handleClickedButton:function(inEvent){var elm=Event.findElement(inEvent,'li');this.setSelectedIndex(this.mButtons.indexOf(elm));return false;},getSelectedIndex:function(){return this.mSelectedIndex;},setSelectedIndex:function(inIndex){this.mSelectedIndex=inIndex;this.mButtons.each(function(elm,i){if(i==inIndex)Element.addClassName($(elm).down(),'selected');else Element.removeClassName($(elm).down(),'selected');}.bind(this));}}
var Paginator=Class.create();Paginator.prototype={initialize:function(inParentElm){bindEventListeners(this,['handleClickPopupHandle']);this.mEntriesPerPage=getMetaTagValue('apple_collab_how_many');if(this.mEntriesPerPage)this.mEntriesPerPage=parseInt(this.mEntriesPerPage);this.mTotalEntries=getMetaTagValue('apple_collab_entry_count');if(this.mTotalEntries)this.mTotalEntries=parseInt(this.mTotalEntries);var startIndexMatch=location.search.match(/startIndex=(\d+)/);this.mCurrentStartIndex=startIndexMatch?startIndexMatch[1]:0;if(this.mCurrentStartIndex)this.mCurrentStartIndex=parseInt(this.mCurrentStartIndex);var url=location.href.replace(/startIndex=\d*&*/,'').replace(/\?*&*$/,'');if(url.match(/\?/)){url+='&startIndex=';}
else{url+='?startIndex=';}
var lastEntry=Math.min(this.mCurrentStartIndex+this.mEntriesPerPage,this.mTotalEntries);this.mPreviousURL=url+Math.max(this.mCurrentStartIndex-this.mEntriesPerPage,0);this.mNextURL=url+Math.min(this.mCurrentStartIndex+this.mEntriesPerPage,this.mTotalEntries-1);if(lastEntry==this.mTotalEntries)this.mNextURL='#';this.mPopup=gPopupManager.createPopupElement('paginatorpopup');for(var i=0;i<this.mTotalEntries;i+=this.mEntriesPerPage){var pLastEntry=Math.min(i+this.mEntriesPerPage,this.mTotalEntries);var displayString=String.format(Loc.paginator_popup_item_format,{firstEntry:i+1,lastEntry:pLastEntry});gPopupManager.itemWithTitle(this.mPopup,displayString,url+i);}
var displayString=String.format(Loc.paginator_picker_format,{firstEntry:this.mCurrentStartIndex+1,lastEntry:lastEntry,totalEntries:this.mTotalEntries});var prevPageButton=Builder.node('a',{className:'paginator_prev'},'←');if(this.mCurrentStartIndex!=0&&this.mPreviousURL!='#'){prevPageButton.setAttribute('href',this.mPreviousURL);prevPageButton.setAttribute('title',Loc['paginator_previous']);}else{Element.addClassName(prevPageButton,'disabled');}
this.mPopupHandle=Builder.node('a',{className:'paginator_choose'},displayString);this.mPopupHandle.onclick=this.handleClickPopupHandle;var nextPageButton=Builder.node('a',{className:'paginator_next'},'→');if(this.mNextURL!='#'){nextPageButton.setAttribute('href',this.mNextURL);nextPageButton.setAttribute('title',Loc['paginator_next']);}else{Element.addClassName(nextPageButton,'disabled');}
this.mElement=Builder.node('div',{className:'paginator'},[Builder.node('ul',[Builder.node('li',{'class':'first'},[prevPageButton]),Builder.node('li',{'class':'middle'},[this.mPopupHandle]),Builder.node('li',{'class':'last'},[nextPageButton])])]);if(this.mTotalEntries<1)Element.hide(this.mElement);$(inParentElm).appendChild(this.mElement);},handleClickPopupHandle:function(inEvent){Event.stop(inEvent);gPopupManager.show(this.mPopupHandle,this.mPopup,(Element.getInvisibleHeight(this.mPopup)+Element.getInvisibleHeight(this.mPopupHandle))*(-1)-12);return false;}}
var LowScriptPaginator=Class.createWithSharedInstance('paginator');Object.extend(Object.extend(LowScriptPaginator.prototype,Paginator.prototype),{initialize:function(){this.mPopupHandle=$('paginator_choose');bindEventListeners(this,['handleClickPopupHandle']);$$('#paginator li.disabled a').each(function(a){a.onclick=invalidate;});this.mEntriesPerPage=getMetaTagValue('apple_collab_how_many');if(this.mEntriesPerPage)this.mEntriesPerPage=parseInt(this.mEntriesPerPage);this.mTotalEntries=getMetaTagValue('apple_collab_entry_count');if(this.mTotalEntries)this.mTotalEntries=parseInt(this.mTotalEntries);var url=location.href.replace(/startIndex=\d*&*/,'').replace(/\?*&*$/,'');if(url.match(/\?/)){url+='&startIndex=';}
else{url+='?startIndex=';}
this.mPopup=gPopupManager.createPopupElement();for(var i=0;i<this.mTotalEntries;i+=this.mEntriesPerPage){var pLastEntry=Math.min(i+this.mEntriesPerPage,this.mTotalEntries);var displayString=String.format(Loc.paginator_popup_item_format,{firstEntry:i+1,lastEntry:pLastEntry});gPopupManager.itemWithTitle(this.mPopup,displayString,url+i);}
Event.observe(this.mPopupHandle,'click',this.handleClickPopupHandle);}});var PoofManager=Class.create();PoofManager.prototype={mFrameDelay:100,mWidth:42,mHeight:52,initialize:function(){this.mElement=Builder.node('div',{id:'poof',style:'display:none'},["\u00A0"]);d.body.appendChild(this.mElement);if(arguments.length>0)Object.extend(this,arguments[0]);},showOverElement:function(inElement,inOptFinishedFunc){if(!inElement)return null;var elm=$(inElement);if(!elm)return null;Position.clone(elm,this.mElement,{setWidth:false,setHeight:false,offsetLeft:(elm.offsetWidth/2)-(this.mWidth/2),offsetTop:(elm.offsetHeight/2)-(this.mHeight/2)});this.showAtPoint(null,inOptFinishedFunc);},showAtPoint:function(inPoint,inOptFinishedFunc){if(window.unitTestHandler)unitTestHandler.messageFromJS_('poof');this.mFinishedFunc=inOptFinishedFunc;Element.setStyle(this.mElement,{backgroundPosition:'0px 0px',display:''});if(inPoint)Element.setStyle(this.mElement,{left:inPoint[0]+'px',top:inPoint[1]+'px'});this.mCurrentFrame=0;if(this.mTimer)clearTimeout(this.mTimer);this.mTimer=setTimeout(this.handleTimerFired.bind(this),this.mFrameDelay);},handleTimerFired:function(){if(this.mCurrentFrame<4){this.mCurrentFrame++;var x=this.mCurrentFrame*this.mWidth*(-1);this.mElement.style.backgroundPosition=x+'px 0px';this.mTimer=setTimeout(this.handleTimerFired.bind(this),this.mFrameDelay);}
else{Element.hide(this.mElement);if(this.mFinishedFunc)this.mFinishedFunc();delete this.mTimer;}}}
var ImageThumbnailManager=Class.create();ImageThumbnailManager.prototype={mImageThumbnails:[],initialize:function(){this.findThumbnails();},findThumbnails:function(){var thumbnailImages=d.getElementsByTagName('img');for(var i=0;i<thumbnailImages.length;i++){var currentImage=thumbnailImages[i];if(Element.hasClassName(currentImage,'thumbnail')){this.mImageThumbnails.push(new ImageThumbnail(currentImage));}}},prepareForEditing:function(){this.mImageThumbnails.each(function(thumb){thumb.destroy();});this.mImageThumbnails=[];}}
var ImageThumbnail=Class.create();ImageThumbnail.prototype={initialize:function(inImage){bindEventListeners(this,['handleShowClick']);this.mImage=$(inImage);parentElm=this.mImage.parentNode;var sizeAnchorMatch=null;this.mFullSrc=this.mImage.getAttribute('longdesc')||this.mImage.getAttribute('name')||this.mImage.getAttribute('alt')||this.mImage.getAttribute('src');if(this.mFullSrc)sizeAnchorMatch=this.mFullSrc.match(/#(\d+)x(\d+)$/);if(sizeAnchorMatch)this.mEndSize=[parseInt(sizeAnchorMatch[1]),parseInt(sizeAnchorMatch[2])];var cell=Builder.node('td');var fullsizeLink=Builder.node('div',{className:'fullsize_link'});this.mTable=Builder.node('table',{className:this.mImage.className,cellspacing:'0',cellpadding:'4'},[Builder.node('tbody',[Builder.node('tr',[cell]),Builder.node('tr',[Builder.node('td',[fullsizeLink,this.mImage.getAttribute('title')||Loc.image_thumbnail_caption])])])]);parentElm.insertBefore(this.mTable,this.mImage);Element.remove(this.mImage);Element.removeClassName(this.mImage,'thumbnail');cell.appendChild(this.mImage);Event.observe(fullsizeLink,'mousedown',this.handleShowClick);Event.observe(this.mImage,'mousedown',this.handleShowClick);if(this.mImage.getAttribute('title')&&this.mImage.getAttribute('title')!=''&&(!this.mImage.getAttribute('alt')||this.mImage.getAttribute('alt')==''))this.mImage.setAttribute('alt',this.mImage.getAttribute('title'));},destroy:function(){this.mImage.className=this.mTable.className;Element.remove(this.mImage);this.mTable.parentNode.insertBefore(this.mImage,this.mTable);Element.remove(this.mTable);Event.stopObserving(this.mImage,'mousedown',this.handleShowClick);this.mImage.name=this.mFullSrc;},handleShowClick:function(inEvent){if(!this.mEndSize)this.mEndSize=windowSize();var w=window.open(this.mFullSrc,'applewikiimg'+server().getNextUploadID(),'status=0,toolbar=0,resizable=1,scrollbars=1,width='+this.mEndSize[0]+',height='+this.mEndSize[1]);w.moveTo(0,0);}}
var DatePicker=Class.create();DatePicker.prototype={mSelectWeek:false,mAllowMonthMode:false,mPositionPicker:true,mPositionAbove:false,mAlwaysShowPicker:false,mTodayString:null,mShowChanges:true,initialize:function(inChooseWidget){bindEventListeners(this,['clickedChooseWidget','clickedPrevWidget','clickedNextWidget','clickedDate','clickedPopup','clickedUpButton','clickedTodayButton','clickedDownButton','clickedWindow','clickedMonthLink']);this.drawDatePicker();this.mChooseWidget=$(inChooseWidget);this.mSelectedDate=new Date();this.mTodaySelected=true;this.mStartIndex=parseInt(getMetaTagValue('apple_collab_start_index')||'0');this.mEntryCount=parseInt(getMetaTagValue('apple_collab_entry_count')||'0');if(arguments.length>1)Object.extend(this,arguments[1]);if(this.mAllowMonthMode){var monthLink=this.mTableBody.getElementsByTagName('a').item(0);monthLink.href='#';monthLink.onclick=this.clickedMonthLink;}
$A(this.mTableBody.childNodes.item(1).getElementsByTagName('td')).each(function(elm,i){replaceElementContents(elm,Loc.shortWeekdays[i]);});this.mShownDateElement=this.mTableBody.getElementsByTagName('a').item(0).firstChild;Event.observe(this.mChooseWidget,'click',this.clickedChooseWidget);Event.observe(this.mUpButton,'click',this.clickedUpButton);Event.observe(this.mTodayButton,'click',this.clickedTodayButton);Event.observe(this.mDownButton,'click',this.clickedDownButton);if(this.mPrevWidget){this.mPrevWidget=$(this.mPrevWidget);this.clickedPrevWidget=this.clickedPrevWidget.bindAsEventListener(this);Event.observe(this.mPrevWidget,'mousedown',this.clickedPrevWidget);this.mPrevWidget.onselectstart=invalidate;}
if(this.mNextWidget){this.mNextWidget=$(this.mNextWidget);this.clickedNextWidget=this.clickedNextWidget.bindAsEventListener(this);Event.observe(this.mNextWidget,'mousedown',this.clickedNextWidget);this.mNextWidget.onselectstart=invalidate;}
this.updateFromSelection();this.mElement.onselectstart=invalidate;this.mChooseWidget.onselectstart=invalidate;if(this.mAlwaysShowPicker)this.show();},drawDatePicker:function(){this.mTableBody=Builder.node('tbody',[Builder.node('tr',[Builder.node('td',{colSpan:'7'},[Builder.node('a',"\u00A0")])])]);for(var row=0;row<7;row++){var tr=Builder.node('tr');for(var col=0;col<7;col++){tr.appendChild(Builder.node('td',"\u00A0"));}
this.mTableBody.appendChild(tr);}
this.mUpButton=Builder.node('td',{id:'date_up_button',title:Loc.tooltips.prev_button_month},"\u00A0");this.mTodayButton=Builder.node('td',{id:'date_today_button',title:Loc.tooltips.current_button},"\u00A0");this.mDownButton=Builder.node('td',{id:'date_down_button',title:Loc.tooltips.next_button_month},"\u00A0");this.mElement=Builder.node('div',{id:'date_picker',className:'datepicker',style:'display:none'},[Builder.node('table',{id:'date_picker_buttons',className:'datepickerbuttons'},[Builder.node('tbody',[Builder.node('tr',[this.mUpButton,this.mTodayButton,this.mDownButton])])]),Builder.node('table',{id:'date_picker_calendar_table',className:'datepickerbody'},[this.mTableBody])]);if(IEFixes.isIE)this.mElement.style.backgroundPosition='4px 0';d.body.appendChild(this.mElement);},getSelectedRange:function(){var startDate=new Date(this.mSelectedDate.getTime());if(this.mMonthMode)startDate.setDate(1);else if(this.mSelectWeek)startDate.setDate(startDate.getDate()-startDate.getDay());var endDate=new Date(startDate.getTime());if(this.mMonthMode){endDate.setMonth(endDate.getMonth()+1);endDate.setDate(0);}
else if(this.mSelectWeek)endDate.setDate(endDate.getDate()+6);startDate.setHours(0);startDate.setMinutes(0);startDate.setSeconds(0);endDate.setHours(23);endDate.setMinutes(59);endDate.setSeconds(59);return new Array(startDate,endDate);},isTodaySelected:function(){if(this.mTodaySelected&&parseInt(dateObjToISO8601(this.mSelectedDate))!=parseInt(dateObjToISO8601(new Date()))){this.mTodaySelected=false;}
return this.mTodaySelected;},updateShownDate:function(){this.mShownDateElement.nodeValue=this.mShownDate.formatDate(Loc.dateFormats.monthAndYear);var now=new Date();var date=new Date(this.mShownDate.getTime());date.setDate(1);date.setDate(date.getDate()-date.getDay());for(var week=0;week<6;week++){var row=this.mTableBody.childNodes.item(week+2);for(var day=0;day<7;day++){var cell=row.childNodes.item(day);if(compareDateWeeks(this.mSelectedDate,date)&&(this.mSelectWeek||(this.mSelectedDate.getDate()==date.getDate()))&&(this.mSelectedDate.getMonth()==this.mShownDate.getMonth())){Element.addClassName(cell,'date_picker_current_week');}
else{Element.removeClassName(cell,'date_picker_current_week');}
if(date.getMonth()==this.mShownDate.getMonth()){Event.observe(cell,'mousedown',this.clickedDate);cell.firstChild.nodeValue=padNumberStr(date.getDate(),2,' ');cell.style.cursor='pointer';if((this.mSelectWeek||(!Element.hasClassName(cell,'date_picker_current_week')))&&(compareDateWeeks(date,now)&&(date.getDate()==now.getDate()))){Element.removeClassName(cell,'date_picker_current_week');cell.id='date_picker_today';}
else{cell.id=null;}}
else{Event.stopObserving(cell,'mousedown',this.clickedDate);cell.firstChild.nodeValue=' ';cell.style.cursor=null;}
date.setDate(date.getDate()+1);}}},updateFromSelection:function(inAlwaysShow){var range=this.getSelectedRange();var s='';if(this.mTodayString&&this.isTodaySelected()){s=Loc[this.mTodayString]||this.mTodayString;if(this.mStartIndex){s+=' ('+this.mStartIndex+' - '+(this.mStartIndex+this.mEntryCount)+')';}}
else if(this.mMonthMode){s=this.mSelectedDate.formatDate(Loc.dateFormats.monthAndYear);if(this.mPrevWidget)this.mPrevWidget.title=Loc.tooltips.prev_button_month;if(this.mNextWidget)this.mNextWidget.title=Loc.tooltips.next_button_month;}
else{s=range[0].formatDate(Loc.dateFormats.mediumDate);if((range[0].getMonth()!=range[1].getMonth())||(range[0].getDate()!=range[1].getDate())){s+=' - '+range[1].formatDate(Loc.dateFormats.mediumDate);}
if(this.mPrevWidget)this.mPrevWidget.title=Loc.tooltips.prev_button_week;if(this.mNextWidget)this.mNextWidget.title=Loc.tooltips.next_button_week;}
if(inAlwaysShow||this.mShowChanges){replaceElementContents(this.mChooseWidget,s);}
this.mShownDate=new Date(this.mSelectedDate.getTime());this.updateShownDate();this.hide();this.publish();},publish:function(){if(this.mSubscribers){for(var i=0;i<this.mSubscribers.length;i++){var currentFunction=this.mSubscribers[i];currentFunction();}}},subscribe:function(inFunction){if(!this.mSubscribers)this.mSubscribers=new Array();this.mSubscribers.push(inFunction);},show:function(){if(!this.mShown){this.mShownDate=new Date(this.mSelectedDate.getTime());this.mShownDate.setDate(1);this.updateShownDate();if(this.mEffect){this.mEffect.cancel();this.mEffect=null;}
if(this.mMonthMode){if(!this.mMonthPopup){this.mMonthPopup=Object.extend(gPopupManager.createPopupElement(),{id:'date_month_popup'});}
$$('#date_month_popup li').invoke('remove');var currentDate=new Date(this.mShownDate.getTime());currentDate.setDate(1);currentDate.setMonth(currentDate.getMonth()-6);for(var i=0;i<12;i++){gPopupManager.itemWithTitle(this.mMonthPopup,currentDate.formatDate(Loc.dateFormats.monthAndYear),'#'+dateObjToISO8601(currentDate),this.clickedMonthLink);currentDate.setMonth(currentDate.getMonth()+1);}
gPopupManager.show(this.mChooseWidget,this.mMonthPopup,Element.getInvisibleHeight(this.mMonthPopup)*(-1),true);}
else{this.mShown=true;this.mElement.style.visibility='hidden';Element.show(this.mElement);if(this.mPositionPicker){var offsetTop=Element.getHeight(this.mChooseWidget)-4;if(this.mPositionAbove){offsetTop=(Element.getHeight(this.mElement)-12)*(-1);}
var cloneOptions={setWidth:false,setHeight:false,offsetLeft:(this.mChooseWidget.offsetWidth-this.mElement.offsetWidth)/2,offsetTop:offsetTop};Position.clone(this.mChooseWidget,this.mElement,cloneOptions);}
Element.hide(this.mElement);this.mElement.style.visibility='';Event.observe(this.mElement,'mousedown',this.clickedPopup);Event.observe(d,'mousedown',this.clickedWindow);this.mEffect=Effect.Appear(this.mElement,{duration:0.3});}}},hide:function(){if(this.mShown&&(!this.mAlwaysShowPicker)){if(this.mEffect){this.mEffect.cancel();this.mEffect=null;}
Event.stopObserving(this.mElement,'mousedown',this.clickedPopup);Event.stopObserving(d,'mousedown',this.clickedWindow);this.mShown=false;Element.hide(this.mElement);}},clickedMonthLink:function(e){var elm=Event.element(e);if(elm.hasClassName('popuplink')){this.mSelectedDate=createDateObjFromISO8601(elm.href.match(/#(\d{8})/)[1]);}
else{this.mSelectedDate=new Date(this.mShownDate.getTime());}
this.mMonthMode=true;this.updateFromSelection();return false;},clickedChooseWidget:function(e){Event.stop(e);if(this.mShown)this.hide();else this.show();},clickedPrevWidget:function(e){Event.stop(e);if(this.mMonthMode){this.mSelectedDate.setDate(1);this.mSelectedDate.setMonth(this.mSelectedDate.getMonth()-1);}
else{var amt=this.mSelectWeek?7:1;this.mSelectedDate.setDate(this.mSelectedDate.getDate()-amt);}
this.updateFromSelection();return false;},clickedNextWidget:function(e){Event.stop(e);if(this.mMonthMode){this.mSelectedDate.setDate(1);this.mSelectedDate.setMonth(this.mSelectedDate.getMonth()+1);}
else{var amt=this.mSelectWeek?7:1;this.mSelectedDate.setDate(this.mSelectedDate.getDate()+amt);}
this.updateFromSelection();return false;},clickedUpButton:function(e){if(this.mShownDate.getMonth()==0){this.mShownDate.setMonth(11);this.mShownDate.setFullYear(this.mShownDate.getFullYear()-1);}
else this.mShownDate.setMonth(this.mShownDate.getMonth()-1);this.updateShownDate();},clickedTodayButton:function(e){this.mTodaySelected=true;this.mSelectedDate=new Date();this.mMonthMode=false;this.updateFromSelection();return false;},clickedDownButton:function(e){this.mShownDate.setMonth(this.mShownDate.getMonth()+1);this.updateShownDate();},clickedDate:function(e){this.hide();this.mShownDate.setDate(parseInt(Event.element(e).firstChild.nodeValue));this.mSelectedDate=new Date(this.mShownDate.getTime());this.mMonthMode=false;this.updateFromSelection();},clickedPopup:function(e){Event.stop(e);},clickedWindow:function(e){if((!IEFixes.isIE)||(Event.element(e)!=this.mChooseWidget))this.hide();}}
var HintedTextField=Class.create();HintedTextField.prototype={initialize:function(inElement,inHintStr){bindEventListeners(this,['handleFocus','handleBlur']);this.mElement=$(inElement);this.mHintStr=inHintStr;if(!this.getFocusState())this.addHint();observeEvents(this,this.mElement,{focus:'handleFocus',blur:'handleBlur'});},addHint:function(){if(this.mElement.value==''){Element.addClassName(this.mElement,'hinted');this.mElement.value=Loc[this.mHintStr]||this.mHintStr;}},getFocusState:function(){if(window.getSelection){var sel=window.getSelection();if(!sel)return false;if(MozillaFixes.isGecko1_9)return false;if(MozillaFixes.isGecko1_9&&sel.getRangeAt&&sel.getRangeAt(0))sel.getRangeAt(0).intersectsNode=function(node){var nodeRange=d.createRange();try{nodeRange.selectNode(node);}
catch(e){nodeRange.selectNodeContents(node);}
return((sel.getRangeAt(0).compareBoundaryPoints(Range.END_TO_START,nodeRange)==-1)&&(sel.getRangeAt(0).compareBoundaryPoints(Range.START_TO_END,nodeRange)==1));}
else if(MozillaFixes.isGecko1_9){return false;}
return(Element.descendantOf(this.mElement,sel.anchorNode)||(sel.rangeCount>0&&sel.getRangeAt(0).intersectsNode(this.mElement)));}
else if(d.selection&&d.selection.createRange){var rng=d.selection.createRange();if(!rng)return false;return(rng.parentElement()==this.mElement);}
return false;},getValue:function(){return(Element.hasClassName(this.mElement,'hinted')?'':this.mElement.value);},setValue:function(inValue){Element.removeClassName(this.mElement,'hinted');this.mElement.value=inValue;this.addHint();},handleFocus:function(inEvent){if(Element.hasClassName(this.mElement,'hinted')){this.mElement.value='';Element.removeClassName(this.mElement,'hinted');}},handleBlur:function(inEvent){this.addHint();}}
var SearchFieldBase=Class.create();SearchFieldBase.prototype={mClickedItemCallback:null,mStartedItemSearchCallback:null,mSearchCancelledCallback:null,mResultTable:null,mPositionResults:true,mHeaderElement:null,mMinQueryChars:1,mInterval:500,mNumberOfEntries:20,mSortKey:null,mTrapTabs:true,mShowPlaceholderStrings:false,initialize:function(inSearchField){bindEventListeners(this,['handleSafariSearch','handleKeypress','handleChanged','mousedOverUser','mousedOutUser','clickedUser']);this.mSearchField=$(inSearchField);if(arguments.length>1)Object.extend(this,arguments[1]);if(!this.mResultTable){this.mResultTable=Builder.node('table',{className:'search_field_results',style:'display:none'},[Builder.node('tbody')]);d.body.appendChild(this.mResultTable);}
this.mIsReallyTable=(this.mResultTable.nodeName.toLowerCase()=='table');observeEvents(this,this.mSearchField,{keypress:'handleKeypress',change:'handleChanged'});if(SafariFixes.isWebKit&&(this.mSearchField.type=='search'))Event.observe(this.mSearchField,'search',this.handleSafariSearch);},handleSafariSearch:function(e){if(Event.element(e).value=='')this.runQuery();},handleKeypress:function(e){switch(e.keyCode){case Event.KEY_DOWN:this.suggestSibling('nextSibling');Event.stop(e);break;case Event.KEY_UP:this.suggestSibling('previousSibling');Event.stop(e);break;case Event.KEY_TAB:case 188:Element.hide(this.mResultTable);if(e.keyCode==Event.KEY_TAB&&this.mSearchField.value=='')return true;this.handleChanged(e);if(e.keyCode==188||this.mTrapTabs)Event.stop(e);break;case Event.KEY_ESC:Element.hide(this.mResultTable);this.mSearchField.value='';break;default:if(!this.mTimer)this.mTimer=setTimeout(this.runQuery.bind(this),this.mInterval);}},handleChanged:function(e){Element.hide(this.mResultTable);if(this.mSearchField.value!=''){this.selectSuggestedUID();}},suggestSibling:function(inKey){var elm=$(this.mResultTable.id+'_'+(this.mSuggestedUID||''));if(elm&&elm.parentNode[inKey]){this.suggestUID(elm.parentNode[inKey].firstChild.dataSource.uid);}
else if((!elm)&&this.mRows&&this.mRows.length>0){this.suggestUID(this.mRows[0].uid);}},suggestUID:function(inUID){Element.removeClassName(this.mResultTable.id+'_'+this.mSuggestedUID,'suggested');this.mSuggestedUID=inUID;if(inUID)Element.addClassName(this.mResultTable.id+'_'+inUID,'suggested');},selectSuggestedUID:function(){this.mChosenUID=this.mSuggestedUID;if(this.mChosenUID){var chosenElm=$(this.mResultTable.id+'_'+this.mChosenUID);this.mChosenDataSource=chosenElm.dataSource;if(this.mPositionResults){Element.hide(this.mResultTable);this.mSearchField.value=chosenElm.firstChild.nodeValue;}
if(this.mClickedItemCallback)this.mClickedItemCallback(this.mChosenUID,this.mChosenDataSource.url);}
else if(!Element.hasClassName(this.mSearchField,'hinted')){if(this.mClickedItemCallback)this.mClickedItemCallback($F(this.mSearchField));}
if(this.mTimer){clearTimeout(this.mTimer);this.mTimer=null;}},mousedOverUser:function(e){this.suggestUID(Event.findElement(e,(this.mIsReallyTable?'td':'a')).dataSource.uid);},mousedOutUser:function(e){},clickedUser:function(e){this.suggestUID(Event.findElement(e,(this.mIsReallyTable?'td':'a')).dataSource.uid);this.selectSuggestedUID();},constructQuery:function(inSearchString){},runQuery:function(){if($F(this.mSearchField)!=this.mLastQuery){this.mSuggestedUID=null;this.mRows=new Array();this.draw();if(this.mShowPlaceholderStrings){replaceElementContents(this.mResultTable,Builder.node('li',{className:'search_placeholder busy_field'},[Builder.node('a',{href:'#',onclick:invalidate},Loc.link_popup_searching_progress)]));}
if(this.mPrefetch||($F(this.mSearchField).length>=this.mMinQueryChars)){Element.addClassName(this.mSearchField,'busy_field');if(this.mStartedItemSearchCallback)this.mStartedItemSearchCallback();this.constructQuery($F(this.mSearchField));}
else{this.mTimer=null;if(this.mSearchCancelledCallback)this.mSearchCancelledCallback();}}
else{this.mTimer=null;}
this.mLastQuery=$F(this.mSearchField);},gotSearchResult:function(inRequestObj,inResponseObj){this.mRows=inResponseObj;if(this.mSortKey)Array.sortArrayUsingKey(this.mRows,this.mSortKey);if(this.mPrefetch&&(!this.mCachedRows)){this.mCachedRows=inResponseObj;Element.removeClassName(this.mSearchField,'busy_field');}
else{this.draw();}
this.mTimer=null;this.runQuery();if(this.mSearchResultCallback)this.mSearchResultCallback(inResponseObj);},handleError:function(inFaultCode,inFaultString){this.mTimer=null;},getDisplayString:function(inRow){},updatePosition:function(){if(this.mPositionResults){var cloneOptions={setHeight:false,offsetTop:Element.getHeight(this.mSearchField)};Position.clone(this.mSearchField,this.mResultTable,cloneOptions);}},draw:function(){this.updatePosition();if(this.mPositionResults)Element.hide(this.mResultTable);if(this.mHeaderElement)Element.hide(this.mHeaderElement);removeAllChildNodes(this.mIsReallyTable?this.mResultTable.firstChild:this.mResultTable);this.mSuggestedUID=null;if(this.mShowPlaceholderStrings&&(this.mRows.length==0)){this.mResultTable.appendChild(Builder.node('li',[Builder.node('a',{href:'#',onclick:invalidate,className:'search_placeholder'},$F('no_results_str'))]));}
this.mRows.each(function(row){row.displayString=this.getDisplayString(row);if(row.displayString!=''){if(this.mPositionResults)Element.show(this.mResultTable);if(this.mHeaderElement)Element.show(this.mHeaderElement);var currentCell=Builder.node((this.mIsReallyTable?'td':'a'),{id:this.mResultTable.id+'_'+row.uid});currentCell.style.cursor='pointer';currentCell.dataSource=row;this.drawCell(currentCell);if(this.mIsReallyTable){this.mResultTable.firstChild.appendChild(Builder.node('tr',[currentCell]));}
else{currentCell.href='/'+row.uid+'/';this.mResultTable.appendChild(Builder.node('li',[currentCell]));}
observeEvents(this,currentCell,{click:'clickedUser',mouseover:'mousedOverUser',mouseout:'mousedOutUser'});}}.bind(this));Element.removeClassName(this.mSearchField,'busy_field');},drawCell:function(inCell){replaceElementContents(inCell,inCell.dataSource.displayString);}}
var TagSearchField=Class.create();Object.extend(Object.extend(TagSearchField.prototype,SearchFieldBase.prototype),{mInterval:10,mPrefetch:true,mSortKey:'uid',getDisplayString:function(inRow){return inRow.uid;},constructQuery:function(inSearchString){if(this.mCachedRows){if(inSearchString.length>0){var searchExp=new RegExp('^'+inSearchString,'i');this.mRows=this.mCachedRows.findAll(function(row){return searchExp.test(row.uid);});}
else{this.mRows=[];}
this.draw();this.mTimer=null;}
else{return server().tags.getEntries([this.gotSearchResult.bind(this),this.handleError.bind(this)],uid().mBasePath);}}});var SearchPopup=Class.create();SearchPopup.prototype={mMaxTags:10,initialize:function(){bindEventListeners(this,['handleSearchButtonClick','handleItemSelect','handleMouseDown']);this.mParentElement=$('linkSearch').down('a');this.mElement=$('linkSearch').down('div');if(SafariFixes.isTigerSafari)return true;Event.observe(this.mParentElement,'click',this.handleSearchButtonClick);Event.observe(this.mElement.down('form'),'submit',this.handleItemSelect);if(MozillaFixes.isGecko)$('search_field').setAttribute('autocomplete','off');this.draw();setTimeout(this.getRelevantTags.bind(this),500);publisher().subscribe(this.getRelevantTags.bind(this),'AUTHENTICATED');},draw:function(inOptTags){tags=inOptTags||[];var tagCookieMatch=d.cookie.match('recentTags=([^;]+)');if(tagCookieMatch&&(tags.length<this.mMaxTags)){var recentTags=tagCookieMatch[1].split(',');tags=tags.concat(recentTags).uniq().slice(0,this.mMaxTags);}
tags.sort();if(!this.mHeaderElement){this.mHeaderElement=Builder.node('h2',Loc.search_recent_tags);this.mElement.appendChild(this.mHeaderElement);}
if(!this.mResultsContainer){this.mResultsContainer=Builder.node('div',{className:'search_popup_results'});this.mElement.appendChild(this.mResultsContainer);}
if(!this.mQuickSearchField){this.mResultTable=Builder.node('ul',{id:'quick_search_field_results',style:'display:none'},[Builder.node('li',[Builder.node('a',{href:'#',onclick:invalidate,className:'search_placeholder busy_field'},Loc.link_popup_searching_progress)])]);this.mResultsContainer.appendChild(this.mResultTable);this.mQuickSearchField=new QuickSearchField('search_field',{mResultTable:this.mResultTable,mClickedItemCallback:this.handleQuickSearchClick.bind(this),mStartedItemSearchCallback:this.handleQuickSearchStarted.bind(this),mSearchCancelledCallback:this.handleQuickSearchCancelled.bind(this),mSearchResultCallback:this.handleQuickSearchResults.bind(this),mPositionResults:false,mShowPlaceholderStrings:true});}
if(this.mLinkListElement){$A(this.mLinkListElement.getElementsByTagName('a')).each(function(a){Event.stopObserving(a,'click',this.handleItemSelect);}.bind(this));$(this.mLinkListElement).remove();}
this.mLinkListElement=Builder.node('ul');if(tags.length>0){var searchURI=uid().mBaseLocation+'search/';tags.each(function(tag){var href=searchURI+encodeURIComponent(tag).replace(/\%20/g,'+')+'?sort=modifiedDate&howMany=10&sortDirection=reverse&tag='+encodeURIComponent(tag).replace(/\%20/g,'+');this.mLinkListElement.appendChild(Builder.node('li',[Builder.node('a',{href:href},tag)]));}.bind(this));this.mLinkListElement.appendChild(Builder.node('li',{className:'linkPopupSplitter'}));}
this.mLinkListElement.appendChild(Builder.node('li',[Builder.node('a',{href:uid().mBaseLocation+'tags/'},Loc.tags_all_item)]));this.mLinkListElement.appendChild(Builder.node('li',[Builder.node('a',{href:uid().mBaseLocation+'search/',className:'tagsRecentsItem'},Loc.tags_recents_item)]));this.mResultsContainer.appendChild(this.mLinkListElement);$A(this.mLinkListElement.getElementsByTagName('a')).each(function(a){Event.observe(a,'click',this.handleItemSelect);}.bind(this));},handleSearchButtonClick:function(inEvent){Event.stop(inEvent);this.mParentElement.toggleClassName('search_header_icon');this.mParentElement.toggleClassName('search_header_icon_selected');this.mElement.toggle();if(this.mElement.visible()){if(MozillaFixes.isGecko)this.mElement.setStyle({width:(this.mElement.offsetWidth+4)+'px',overflowX:'hidden',overflowY:'auto'});this.mElement.down('input').focus();Event.observe(d.body,'mousedown',this.handleMouseDown);}
else{Event.stopObserving(d.body,'mousedown',this.handleMouseDown);if(MozillaFixes.isGecko)this.mElement.setStyle({width:'',overflowX:'',overflowY:''});}},handleQuickSearchCancelled:function(){replaceElementContents(this.mHeaderElement,Loc.search_recent_tags);Element.hide(this.mResultTable);Element.show(this.mLinkListElement);},handleQuickSearchResults:function(){Element.show(this.mResultTable);if(SafariFixes.isWebKit)Element.forceReflow(this.mResultsContainer);},handleQuickSearchStarted:function(){replaceElementContents(this.mHeaderElement,Loc.search_quicksearch);Element.hide(this.mLinkListElement);Element.show(this.mResultTable);},handleQuickSearchClick:function(inUID,inURL){if(inURL)location.href=inURL;else if(inUID&&inUID.match(/^[^\/]+\/[^\/]+\/[^\/]+\/[^\/]+$/))location.href='/'+inUID+'/';},handleItemSelect:function(inEvent){this.hide();if(this.mQuickSearchField&&this.mQuickSearchField.mSuggestedUID){Event.stop(inEvent);return false;}},handleMouseDown:function(inEvent){var pos=[Event.pointerX(inEvent),Event.pointerY(inEvent)];if((!Position.within(this.mElement,pos[0],pos[1]))&&(!Position.within(this.mParentElement,pos[0],pos[1]))){this.hide();}},hide:function(){this.mParentElement.addClassName('search_header_icon');this.mParentElement.removeClassName('search_header_icon_selected');this.mElement.hide();Event.stopObserving(d.body,'mousedown',this.handleMouseDown);},getRelevantTags:function(){server().preferences.getUsersRelevantTags([this.gotRelevantTags.bind(this),invalidate],uid().mBasePath);},gotRelevantTags:function(inRequestObj,inResponseObj){this.draw(inResponseObj);}}
var QuickSearchField=Class.create();Object.extend(Object.extend(QuickSearchField.prototype,SearchFieldBase.prototype),{getDisplayString:function(inRow){return inRow.title;},constructQuery:function(inSearchString){if(this.mQueryStartCallback)this.mQueryingCallback();var query={q:[inSearchString],sortDirection:'forward',sort:['title'],fields:['title'],kind:['wiki','weblog','mailingList'],howMany:12};return server().search.getEntries([this.gotSearchResult.bind(this),this.handleError.bind(this)],uid().mBasePath,query,['title','uid','url']);}});var ViewSprings=Class.create();ViewSprings.prototype={initialize:function(inElement,inOptCallback,inOptOtherElement){this.handleWindowResize=this.handleWindowResize.bindAsEventListener(this);this.mElement=$(inElement);this.mCallback=inOptCallback;if(inOptOtherElement)this.mOtherElement=$(inOptOtherElement);this.boing();Event.observe(window,'resize',this.handleWindowResize);},boing:function(){var h=this.mOtherElement?Math.max(this.mElement.offsetHeight,this.mOtherElement.offsetHeight):this.mElement.offsetHeight;h=windowSize()[1]-(d.body.offsetHeight-h);h-=16;Element.setOffsetHeight(this.mElement,h);if(this.mCallback)this.mCallback(this);},handleWindowResize:function(inEvent){this.boing();},destroy:function(){Event.stopObserving(window,'resize',this.handleWindowResize);}}
var BlockSpacer=Class.create();BlockSpacer.prototype={initialize:function(inElement,inParent,inOptVertical){this.mElement=$(inElement);this.mParent=inParent.mElement?inParent:$(inParent);this.mVertical=inOptVertical;Element.cleanWhitespace(this.mElement);this.space();},space:function(){if(!this.mElement.offsetParent||(IEFixes.isIE&&this.mElement.offsetWidth==0&&this.mElement.offsetHeight==0)){return false;}
if(this.mParent.mElement){if(!this.mParent.mSpacedBlocks){return false;}
if(this.mVertical){Element.setOffsetHeight(this.mElement,this.mParent.mElement.offsetHeight);}
else{Element.setOffsetWidth(this.mElement,this.mParent.mElement.offsetWidth);}
var nodes=$A(this.mParent.mElement.childNodes);if(nodes.length!=this.mParent.mElement.childNodes.length)return false;$A(this.mElement.childNodes).each(function(elm,i){if(nodes[i]){if(this.mVertical){Element.setOffsetHeight(elm,nodes[i].offsetHeight);}
else{Element.setOffsetWidth(elm,nodes[i].offsetWidth);}}}.bind(this));return true;}
if(!this.mSpacedBlocks){this.mSpacedBlocks=[];this.mSkippedBlocks=[];$A(this.mElement.childNodes).each(function(elm){if(elm.className&&Element.hasClassName(elm,'use_content_size')){this.mSkippedBlocks.push(elm);}
else if(elm.nodeName.toLowerCase()=='li'||elm.nodeName.toLowerCase()=='div'){this.mSpacedBlocks.push(elm);}}.bind(this));}
var pos=0;if(this.mVertical){pos=Element.getTop(this.mElement,this.mParent);}
else{pos=Element.getLeft(this.mElement,this.mParent);}
var parentSize=this.mParent[this.mVertical?'offsetHeight':'offsetWidth'];var totalSize=parentSize-pos;this.mElement.style[this.mVertical?'height':'width']=(totalSize+2)+'px';this.mSkippedBlocks.each(function(elm){totalSize-=elm[this.mVertical?'offsetHeight':'offsetWidth'];}.bind(this));var columnSize=Math.floor(totalSize/this.mSpacedBlocks.length);var remainder=totalSize%this.mSpacedBlocks.length;var r=remainder;this.mSpacedBlocks.each(function(elm){var w=columnSize;if(r>0){w++;r--;}
if(this.mVertical){Element.setOffsetHeight(elm,w);}
else{Element.setOffsetWidth(elm,w);}}.bind(this));return true;}}
var SizeObserver=Class.create();SizeObserver.prototype=Object.extend(new Abstract.TimedObserver(),{getValue:function(){return this.element.offsetHeight;}});var SplitView=Class.create();SplitView.prototype={mMaintainTotalHeight:false,mMinimumHeight:80,initialize:function(inElement){bindEventListeners(this,['handleMouseDown','handleMouseMove','handleMouseUp']);this.mElement=$(inElement);Element.cleanWhitespace(this.mElement);var nodes=this.mElement.childNodes;if(nodes.length>2)this.mViews=new Array(nodes.item(0),nodes.item(2));this.mSplitter=nodes.item(1);if(arguments.length>1)Object.extend(this,arguments[1]);Event.observe(this.mSplitter,'mousedown',this.handleMouseDown);this.mElement.onselectstart=invalidate;},handleMouseDown:function(e){this.mInitialHeight=parseInt(this.mViews[0].style.height);this.mInitialPos=e.clientY;observeEvents(this,d,{mousemove:'handleMouseMove',mouseup:'handleMouseUp'});Event.stop(e);if(this.mStartCallback)this.mStartCallback();},handleMouseMove:function(e){var height=this.mInitialHeight-this.mInitialPos+e.clientY;height=Math.max(height,this.mMinimumHeight);if(this.mMaintainTotalHeight){var delta=height-parseInt(this.mViews[0].style.height);var otherHeight=parseInt(this.mViews[1].style.height)-delta;if(otherHeight<this.mMinimumHeight){delta=this.mMinimumHeight-otherHeight;height-=delta;otherHeight+=delta;}
this.mViews[1].style.height=otherHeight+'px';}
this.mViews[0].style.height=height+'px';if(this.mDuringCallback)this.mDuringCallback(height);},handleMouseUp:function(e){Event.stopObserving(d,'mousemove',this.handleMouseMove);Event.stopObserving(d,'mouseup',this.handleMouseUp);if(this.mEndCallback)this.mEndCallback();}}
Effect.ResizeBy=Class.create();Object.extend(Object.extend(Effect.ResizeBy.prototype,Effect.Base.prototype),{initialize:function(element,toWidth,toHeight){this.element=$(element);var bounds=styleBoundsForDiv(this.element)||offsetBoundsForDiv(this.element);this.originalWidth=bounds[2];this.originalHeight=bounds[3];this.toWidth=toWidth;this.toHeight=toHeight;this.start(arguments[3]);},update:function(position){var widthd=this.toWidth*position+this.originalWidth;this.element.style.width=widthd+'px';if(this.toHeight){var heightd=this.toHeight*position+this.originalHeight;this.element.style.height=heightd+'px';}}});var CommentManager=Class.create();CommentManager.prototype={initialize:function(inComments,inFormDiv){this.isModerationPage=(inComments=='moderation'?true:false);this.mComments=$(inComments);if(!this.mComments)return;if(IEFixes.isIE)this.mComments.style.zoom='1';this.mCommentsList=this.mComments.down('div');if(!this.mCommentsList)return;this.allowComments=(getMetaTagValue('apple_allowComments')=="True");this.allowUnauthenticatedComments=(getMetaTagValue('apple_allowUnauthenticatedComments')=="True");this.allowUnmoderatedComments=(getMetaTagValue('apple_allowUnmoderatedComments')=="True");this.allowUnmoderatedUnauthenticatedComments=(getMetaTagValue('apple_allowUnmoderatedUnauthenticatedComments')=="True");publisher().subscribe(this.handleAuthenticated.bind(this),'AUTHENTICATED');if(arguments.length>1)Object.extend(this,arguments[1]);bindEventListeners(this,['handleDeleteComment','handleApproveComment','handleActivateComment','handleDeactivateComment']);if(!this.isModerationPage){bindEventListeners(this,['handleSubmit','handleButtonClick','handleCancelClick','handleKeyPress','showForm','verifyShowForm']);this.drawShowCommentDiv();}
this.enableDeleteLinks();this.enableApproveLinks();},setActiveComment:function(inEvent){var target=inEvent.target||inEvent.srcElement;var href=target.getAttribute('href');var iIndex=href.indexOf('/groups/');if(iIndex==-1)iIndex=href.indexOf('/users/');this.currentCommentUID=href.substring(iIndex+1,href.lastIndexOf('/'));this.htmlCommentUID=this.currentCommentUID.replace(/\//g,'_');this.comment=$('comment_'+this.htmlCommentUID);},enableDeleteLinks:function(){var elms=d.getElementsByClassName('bvr-deletecomment');for(var i=0,c=elms.length;i<c;i++){var elm=elms[i];Event.observe(elm,'click',this.handleDeleteComment,true);Event.observe(elm,'mouseover',this.handleActivateComment,true);Event.observe(elm,'mouseout',this.handleDeactivateComment,true);Event.observe(elm,'focus',this.handleActivateComment,true);Event.observe(elm,'blur',this.handleDeactivateComment,true);}},enableApproveLinks:function(){var elms=d.getElementsByClassName('bvr-approvecomment');for(var i=0,c=elms.length;i<c;i++){var elm=elms[i];Event.observe(elm,'click',this.handleApproveComment,true);Event.observe(elm,'mouseover',this.handleActivateComment,true);Event.observe(elm,'mouseout',this.handleDeactivateComment,true);Event.observe(elm,'focus',this.handleActivateComment,true);Event.observe(elm,'blur',this.handleDeactivateComment,true);}},handleActivateComment:function(inEvent){Event.stop(inEvent);this.setActiveComment(inEvent);Element.addClassName(this.comment,'activecomment');},handleAuthenticated:function(){dialogManager().showProgressMessage('settings_getting_progress');Element.reload(this.mCommentsList,this.handleCommentsUpdated.bind(this));},handleCommentsUpdated:function(){this.enableDeleteLinks();this.enableApproveLinks();dialogManager().hide();},handleDeactivateComment:function(inEvent){Event.stop(inEvent);if(!this.comment)this.setActiveComment(inEvent);Element.removeClassName(this.comment,'activecomment');},handleDeleteComment:function(inEvent){Event.stop(inEvent);this.setActiveComment(inEvent);if(confirm(Loc.comment_delete_confirm_pre+this.comment.getElementsByTagName('span').item(0).getAttribute('title')+Loc.comment_delete_confirm_post)){this.deleteComment();}},handleApproveComment:function(inEvent){Event.stop(inEvent);if(!this.comment)this.setActiveComment(inEvent);this.approveComment();},deleteComment:function(inEvent){dialogManager().showProgressMessage('comment_delete_progress');var req=new XMLRPCRequest(server(),'discussion.deleteDiscussionEntry',this.handleDeleteEntryResponse.bind(this),this.currentCommentUID).makeRequired();},approveComment:function(inEvent){dialogManager().showProgressMessage('comment_approve_progress');var req=new XMLRPCRequest(server(),'discussion.approveDiscussionEntry',this.handleApproveEntryResponse.bind(this),this.currentCommentUID).makeRequired();},handleDeleteEntryResponse:function(inRequestObj,inResponseObj){dialogManager().hide();gNotifier.print('comment_deleted_message');Effect.BlindUp($('comment_'+this.htmlCommentUID),{duration:0.4,afterFinish:afterFinishDelete});},handleApproveEntryResponse:function(inRequestObj,inResponseObj){dialogManager().hide();gNotifier.print('comment_approved_message');var commentID='comment_'+this.htmlCommentUID;var comment=$(commentID);if(!comment)return;Element.removeClassName(comment,'unmoderatedcomment');var moderatedMessage=$$('#'+commentID+' p.unmoderatedcomment');if(moderatedMessage.length)Effect.BlindUp(moderatedMessage[0],{duration:0.2,afterFinish:afterFinishDelete});var approveLink=$$('#'+commentID+' a.bvr-approvecomment');if(approveLink.length)Element.hide(approveLink[0]);if(this.isModerationPage)Effect.BlindUp(comment,{duration:0.4,afterFinish:afterFinishDelete});},drawShowCommentDiv:function(){if(!this.allowComments)return;var sSubmit=Loc.comment_form_show;this.mShowCommentFormLink=Builder.node('a',{type:'link',href:'#',className:'showcommentformlink',title:sSubmit},[Builder.node('span',{className:'icon'}),Builder.node('span',{className:'text'},[sSubmit])]);this.mShowCommentFormDiv=Builder.node('div',{id:'showcomments',className:'showcomments',style:'display:none;'},[this.mShowCommentFormLink]);Event.observe(this.mShowCommentFormLink,'click',this.verifyShowForm);this.mComments.appendChild(this.mShowCommentFormDiv);if(IEFixes.isIE){Element.show(this.mShowCommentFormDiv);this.mShowCommentFormDiv.style.zoom='1';}else{Effect.BlindDown(this.mShowCommentFormDiv,{duration:0.2,afterFinish:afterFinishShow});}},verifyShowForm:function(inEvent){Event.stop(inEvent);if(!this.mForm)this.drawCommentForm();if(this.allowUnauthenticatedComments){if(d.cookie.match(/sessionID/)&&!d.cookie.match(/sessionID=unauthenticated/))this.handleLoggedInForCommenting();this.showForm();}else{serverui().ensureLogin(this.showForm,'read',false,(d.cookie.match(/sessionID=unauthenticated/)));}},showForm:function(){Effect.BlindDown(this.mForm,{duration:0.2,afterFinish:function(effect){afterFinishShow(effect);this.focusForm()}.bind(this)});Effect.Fade(this.mShowCommentFormDiv,{duration:0.15,afterFinish:afterFinishHide});new Effect.ScrollTo(this.mForm,{duration:0.2});},handleEnsureLoginForCommenting:function(inEvent){Event.stop(inEvent);serverui().ensureLogin(this.handleLoggedInForCommenting.bind(this),'read',false,true);},handleLoggedInForCommenting:function(){this.mFocusField='comment_form_body';this.focusForm();Element.hide($('comment_form_author_label'));this.hideModeratedMessage();},hideModeratedMessage:function(){this.moderated=false;if(!this.allowUnmoderatedUnauthenticatedComments&&server().sessionID=='unauthenticated')this.moderated=true;if(!this.allowUnmoderatedComments&&server().sessionID!='unauthenticated')this.moderated=true;if(!this.moderated)Element.hide(this.mModeratedMessage);var adminAccessCallback=function(){Element.hide(this.mModeratedMessage);}
serverui().ensureLogin(adminAccessCallback.bind(this),'admin',true);},drawCommentForm:function(){var sName=Loc.comment_form_author;var sSubject=Loc.comment_form_subject;var sBody=Loc.comment_form_body;var sSubmit=Loc.comment_form_submit;var sCancel=Loc.comment_form_cancel;this.commentLoginLink=Builder.node('a',{href:'#'},[Loc.comment_form_login]);this.mAuthorElm=Builder.node('label',{className:'text',id:'comment_form_author_label','for':'comment_form_author',style:'display:none;'},[Builder.node('span',{className:'label'},[sName,' ',this.commentLoginLink]),Builder.node('input',{type:'text',title:sName,className:'text',id:'comment_form_author'}),Builder.node('br')]);Event.observe(this.commentLoginLink,'click',this.handleEnsureLoginForCommenting.bind(this));this.mModeratedMessage=Builder.node('p',{className:'unmoderatedcomment'},Loc['comment_moderated']);this.mSubmit=Builder.node('input',{type:'submit',value:sSubmit,className:'primaryaction',id:'comment_form_submit'});this.mCancel=Builder.node('input',{type:'button',value:sCancel,className:'secondaryaction',id:'comment_form_cancel'});this.mForm=Builder.node('form',{method:'get',action:'#',className:'comment_form',style:'display:none;'},[Builder.node('div',{className:'form'},[this.mAuthorElm,Builder.node('label',{className:'textarea','for':'comment_form_body'},[Builder.node('span',{className:'label'},[sBody]),Builder.node('textarea',{rows:'5',cols:'40',title:sBody,className:'textarea',id:'comment_form_body'}),Builder.node('br')]),this.mModeratedMessage,Builder.node('div',{className:'submit'},[this.mSubmit,this.mCancel])])]);Event.observe(this.mForm,'submit',this.handleSubmit);Event.observe(this.mForm,'keypress',this.handleKeyPress);Event.observe(this.mSubmit,'click',this.handleButtonClick);Event.observe(this.mCancel,'click',this.handleCancelClick);this.mFocusField='comment_form_body';if(this.allowUnauthenticatedComments){if(!d.cookie.match(/sessionID/)||d.cookie.match(/sessionID=unauthenticated/)){this.mFocusField='comment_form_author';Element.show(this.mAuthorElm);}}
this.hideModeratedMessage();this.mComments.insertBefore(this.mForm,this.mShowCommentFormDiv);},drawNewComment:function(inResponseObj){var commentObj=inResponseObj;if(!commentObj)return;this.mComment=new Object();this.moderated=((!this.allowUnmoderatedComments&&serverui().getCachedLevel()<=2)||(commentObj.unauthenticated&&!this.allowUnmoderatedUnauthenticatedComments));var oTime=createDateObjFromISO8601(commentObj.isoTime,true);this.mComment.dateElm=Builder.node('span',{className:'datetime'},[Loc['today']+' '+Loc.getTimeString(oTime)]);this.mComment.bodyElm=Builder.node('div',{className:'contents contentscommentbody'});var sDelete=Loc.comment_delete+commentObj.subject;this.mComment.deleteElm='';if(!commentObj.unauthenticated){this.mComment.deleteElm=Builder.node('a',{href:('/'+commentObj.uid+'/_delete'),className:'deletecomment bvr-deletecomment'},[sDelete]);}
this.className='comment';this.mComment.moderateElm='';if(this.moderated){this.className+=' unmoderatedcomment';this.mComment.moderateElm=Builder.node('p',{className:'unmoderatedcomment'},Loc['comment_moderated']);}
var sImgPath='/users/'+commentObj.author+'/icon.jpg';var sAuth='';if(commentObj.unauthenticated){sImgPath='/collaboration/images/unauthenticated.jpg';sAuth=(Loc['unauthenticated']||' (unauthenticated)');}
this.htmlCommentUID=commentObj.uid.substring(commentObj.uid.indexOf('groups/'),commentObj.uid.length).replace(/\//g,'_');this.mComment.elm=Builder.node('div',{id:('comment_'+this.htmlCommentUID),className:this.className,style:'display:none;'},[Builder.node('h4',{},[Builder.node('span',{className:'author',title:(commentObj.author+sAuth)},[commentObj.author,sAuth,Builder.node('img',{src:sImgPath,alt:'',className:'icon',width:'32',height:'32'})]),Builder.node('div',{className:'extras'},[this.mComment.dateElm])]),Builder.node('div',{className:'commentbody'},[Builder.node('div',{className:'start startcommentbody'},[Builder.node('span')]),this.mComment.bodyElm,Builder.node('div',{className:'end endcommentbody'},[Builder.node('span')])]),this.mComment.moderateElm,this.mComment.deleteElm]);this.mCommentsList.appendChild(this.mComment.elm);this.mComment.bodyElm.innerHTML=commentObj.content;if(!commentObj.unauthenticated){Event.observe(this.mComment.deleteElm,'click',this.handleDeleteComment,true);Event.observe(this.mComment.deleteElm,'mouseover',this.handleActivateComment,true);Event.observe(this.mComment.deleteElm,'mouseout',this.handleDeactivateComment,true);Event.observe(this.mComment.deleteElm,'focus',this.handleActivateComment,true);Event.observe(this.mComment.deleteElm,'blur',this.handleDeactivateComment,true);}
Effect.BlindDown(this.mComment.elm,{duration:0.2,afterFinish:afterFinishShow});},handleSubmit:function(inEvent){Event.stop(inEvent);},handleButtonClick:function(inEvent){Event.stop(inEvent);var oBody=this.mForm.comment_form_body;if(!$F(oBody)){oBody.focus();new Effect.Highlight(oBody,{duration:2,endcolor:'#ffffff'});}else{this.postComment();}},handleCancelClick:function(inEvent){Event.stop(inEvent);Effect.BlindUp(this.mForm,{duration:0.2,afterFinish:afterFinishHide});Effect.Appear(this.mShowCommentFormDiv,{duration:0.15,afterFinish:afterFinishShow});this.mTimer=setTimeout(this.focusToggle.bind(this),210);},handleKeyPress:function(inEvent){if(inEvent.keyCode==Event.KEY_ESC){this.handleCancelClick(inEvent);}},postComment:function(){dialogManager().showProgressMessage('comment_add_progress');var req=new XMLRPCRequest(server(),'discussion.addDiscussionEntry',this.handleCommentEntryResponse.bind(this),getMetaTagValue('apple_collab_comment_uid'),{'author':$F(this.mForm.comment_form_author),'subject':'','content':$F(this.mForm.comment_form_body),'parent':getMetaTagValue('apple_collab_uid')}).makeRequired();},handleCommentEntryResponse:function(inRequestObj,inResponseObj){dialogManager().hide();gNotifier.print('comment_added_message');this.drawNewComment(inResponseObj);Effect.BlindUp(this.mForm,{duration:0.2,afterFinish:afterFinishHide});Effect.Appear(this.mShowCommentFormDiv,{duration:0.15,afterFinish:afterFinishShow});this.mForm.reset();this.mTimer=setTimeout(this.focusComment.bind(this),210);},focusForm:function(){if($(this.mFocusField))$(this.mFocusField).focus();},focusToggle:function(){this.mShowCommentFormLink.focus();},focusComment:function(){this.mComment.elm.setAttribute('tabindex','-1');this.mComment.elm.style.outline='none';this.mComment.elm.focus();}};var Tabset=Class.create();Tabset.prototype={initialize:function(){if(arguments.length>0)Object.extend(this,arguments[0]);this.tabs=[];this.selectedPanel=null;this.selectedTrigger=null;bindEventListeners(this,['handleClick']);},addTab:function(inID,inLabel,inTabContentNode){this.tabs.push({id:inID,label:inLabel,node:inTabContentNode})},getTabset:function(){var tabsNode=Builder.node('ul');var tabContainerNode=Builder.node('div',{className:'tabpanels'});var tabsetNode=Builder.node('div',{className:'tabgroup'},[Builder.node('div',{className:'tabs'},[tabsNode]),tabContainerNode])
for(var i=0,c=this.tabs.length;i<c;i++){var tab=this.tabs[i];var trigger=Builder.node('a',{href:('#'+tab.id)},[tab.label]);var panel=tab.node;panel.setAttribute('id',tab.id);Element.addClassName(panel,'tabpanel');tabsNode.appendChild(Builder.node('li',{},[trigger]));if(c==1)trigger.style.visibility='hidden';Event.observe(trigger,'click',this.handleClick);tabContainerNode.appendChild(panel);if(!i){this.selectTab(trigger,panel);Element.addClassName(trigger,'first');}else if(i==c-1){Element.addClassName(trigger,'last');}}
return tabsetNode;},handleClick:function(inEvent){Event.stop(inEvent);var trigger=Event.element(inEvent);var panel=$(trigger.getAttribute('href').replace('#',''));this.selectTab(trigger,panel);},selectTab:function(inTrigger,inPanel){inTrigger.blur();inPanel.focus();if(this.selectedTrigger==inTrigger)return;Element.removeClassName(this.selectedTrigger,'selected');Element.removeClassName(this.selectedPanel,'tabpanelselected');Element.addClassName(inTrigger,'selected');Element.addClassName(inPanel,'tabpanelselected');this.selectedTrigger=inTrigger;this.selectedPanel=inPanel;}};Object.extend(Element,{getLeft:function(inElement,inOptParent){var parent=inOptParent?$(inOptParent):null;var currentNode=$(inElement);var currentLeft=0;while(currentNode){currentLeft+=currentNode.offsetLeft;currentNode=currentNode.offsetParent;if(parent&&currentNode==parent){currentNode=null;}
if(currentNode&&!IEFixes.isIE&&currentNode.nodeName.toLowerCase()=='body'){currentNode=null;}}
return currentLeft;},getTop:function(inElement,inOptParent){var parent=inOptParent?$(inOptParent):null;var currentNode=$(inElement);var currentTop=0;while(currentNode){currentTop+=currentNode.offsetTop;currentNode=currentNode.offsetParent;if(parent&&currentNode==parent){currentNode=null;}
if(currentNode&&!IEFixes.isIE&&currentNode.nodeName.toLowerCase()=='body'){currentNode=null;}}
return currentTop;},setOffsetHeight:function(element,height){element=$(element);if(height){element.style.height=height+'px';}
else{height=parseInt(element.style.height);}
var actual=Element.getHeight(element);element.style.height=(height-(actual-height))+'px';},setOffsetWidth:function(element,width){element=$(element);if(width){element.style.width=width+'px';}
else{width=parseInt(element.style.width);}
var actual=element.offsetWidth;element.style.width=(width-(actual-width))+'px';},getInvisibleSize:function(inElement){var elm=$(inElement);if(Element.visible(inElement))return[elm.offsetWidth,Element.getHeight(inElement)];elm.style.visibility='hidden';Element.show(elm);var width=elm.offsetWidth;var height=Element.getHeight(elm);Element.hide(elm);elm.style.visibility='';return[width,height];},getInvisibleHeight:function(inElement){return Element.getInvisibleSize(inElement)[1];},isChild:function(inChildElement,inParentElement){return Element.descendantOf(inChildElement,inParentElement);},firstNodeValue:function(inElement){var elm=$(inElement);if(elm&&elm.firstChild)return elm.firstChild.nodeValue||'';return'';},unwrap:function(inChildElm,inSelector,inTagBuilderCallback,inOptParentElm){inChildElm=$(inChildElm);var parentElm=inOptParentElm||inChildElm.up(inSelector);if(parentElm){var ancestor=$A(parentElm.childNodes).detect(function(elm){return(elm==inChildElm||inChildElm.descendantOf(elm));});if(ancestor&&ancestor.previousSibling){var subelm=inTagBuilderCallback();while(ancestor.previousSibling){var sibling=ancestor.previousSibling;Element.remove(sibling);insertAtBeginning(sibling,subelm);}
insertAtBeginning(subelm,parentElm);}
if(ancestor&&ancestor.nextSibling){var subelm=inTagBuilderCallback();while(ancestor.nextSibling){var sibling=ancestor.nextSibling;Element.remove(sibling);subelm.appendChild(sibling);}
parentElm.appendChild(subelm);}
if(ancestor!=inChildElm){Element.unwrap(inChildElm,inSelector,inTagBuilderCallback,ancestor);}
if(!inOptParentElm){promoteElementChildren(parentElm);promoteElementChildren(inChildElm);}}},reload:function(inElement,inCallback){var elm=$(inElement);if(!elm||!elm.id){inCallback(false);return false;}
var reloadFrame=Builder.node('iframe',{name:'element_reload_'+server().getNextUploadID(),style:'position:absolute;top:0;left:0;width:1px;height:1px;visibility:hidden',src:'about:blank'});d.body.appendChild(reloadFrame);var frameWindow=reloadFrame.contentWindow;var maybeLoadedCallback=function(){if(frameWindow.document&&frameWindow.document.body){var requestPath=window.location.pathname;if(IEFixes.isIE){requestPath=requestPath+(requestPath.match(/\?/)?'&':'?')+'queryUID='+server().getNextUploadID();}
var req=new Ajax.Request(requestPath,{method:'get',onSuccess:function(inTransport){var bodyTextMatch=inTransport.responseText.replace(/[\r\n]/gm,'').match(/<body[^>]*>(.+)<\/body>/);if(bodyTextMatch){frameWindow.document.body.innerHTML=bodyTextMatch[1];var replacementElement=frameWindow.document.getElementById(elm.id);if(replacementElement){elm.update(replacementElement.innerHTML);inCallback(true);}
else{inCallback(false);}}
else{inCallback(false);}
Element.remove(reloadFrame);}});}
else{setTimeout(maybeLoadedCallback,100);}}
setTimeout(maybeLoadedCallback,100);},enableLinkIfAvailable:function(inElement,inOptSearchFor){var elm=$(inElement);var href=elm.getAttribute('href');Element.addClassName(inElement,'disabled');elm.setAttribute('href','#');var req=new Ajax.Request(href,{onSuccess:function(transport){if((!inOptSearchFor)||(transport.responseText.indexOf(inOptSearchFor)>=0)){Element.removeClassName(elm,'disabled');elm.setAttribute('href',href);}}});},forceReflow:function(inElement){var elm=$(inElement);if(elm&&elm.style){Element.hide(elm);setTimeout(function(){Element.show(elm)},1);}},formatElementDateContents:function(inElement,inOptIsGMT){var elm=$(inElement);var d=createDateObjFromISO8601(Element.firstNodeValue(elm),inOptIsGMT);if(d)replaceElementContents(elm,Loc.getLongDateString(d));}});Object.extend(Array,{sortArrayUsingKey:function(inArray,inKey){var sortCallback=function(a,b){if(!(a[inKey]))return 0;if(a[inKey]>b[inKey])return 1;else if(a[inKey]<b[inKey])return-1;return 0;}
return inArray.sort(sortCallback);},syncKeyedArrayWithRows:function(inKeyedArray,inRows){var syncStatus={deletedRows:[],updatedRows:[],addedRows:[]};var rowIndex=new Object();inRows.each(function(row){if(row.uid)rowIndex[row.uid]=row;});$H(inKeyedArray).each(function(row){if((!rowIndex[row.key])&&(row.key!='-')){syncStatus.deletedRows.push(row.value);delete inKeyedArray[row.key];}});$H(rowIndex).each(function(row){if(row.value.uid&&inKeyedArray[row.key]){syncStatus.updatedRows.push(row.value);Object.extend(inKeyedArray[row.key],row.value);}
else if(row.value.uid){syncStatus.addedRows.push(row.value);inKeyedArray[row.key]=Object.extend({uid:row.key},row.value);}});return syncStatus;}});Object.extend(String,{append:function(inOrig,inNew){var delimiter=arguments.length>2?arguments[2]:' ';if(inNew){if(inOrig!='')inOrig+=delimiter;inOrig+=inNew;}
return inOrig;},format:function(inFormatStr,inDictionary){return $H(inDictionary).inject(inFormatStr,function(str,cur){var r=new RegExp('%\\('+cur.key+'\\)[sdig]','i');return str.replace(r,cur.value);});}});Object.extend(Form,{getIntValue:function(inFieldElement){var val=parseInt($(inFieldElement).value);return(isNaN(val)?0:val);}});Object.extend(Form.Element.Serializers,{textarea:function(element){return Element.hasClassName('hinted')?'':element.value;}});function debug_message(inString){if(window.gDebug&&window.console){window.console.log(inString);}}
function bindEventListeners(inParentObj,inFnNameArray){inFnNameArray.each(function(f){inParentObj[f]=inParentObj[f].bindAsEventListener(inParentObj);});}
function observeEvents(inParentObj,inElement,inFnNameArray,inOptStopObserving){var elm=$(inElement);$H(inFnNameArray).each(function(handler){if(inOptStopObserving)Event.stopObserving(elm,handler.key,inParentObj[handler.value]);else Event.observe(elm,handler.key,inParentObj[handler.value]);});}
function stopObservingEvents(inParentObj,inElement,inFnNameArray){observeEvents(inParentObj,inElement,inFnNameArray,true);}
function yCoordinateForHours(hours,height){return(hours*height)/23;}
function hoursForYCoordinate(y,height){return(23*y)/height;}
function windowSize(){return[(window.innerWidth||(d.documentElement.clientWidth>0?d.documentElement.clientWidth:d.body.clientWidth)),(window.innerHeight||(d.documentElement.clientHeight>0?d.documentElement.clientHeight:d.body.clientHeight))];}
function boundsForDiv(theDiv){return offsetBoundsForDiv(theDiv);}
function offsetBoundsForDiv(theDiv){return new Array(Element.getLeft(theDiv),Element.getTop(theDiv),theDiv.offsetWidth,theDiv.offsetHeight);}
function styleBoundsForDiv(theDiv){var s=theDiv.style;if(s.left&&s.top&&s.width&&s.height){return new Array(parseFloat(s.left),parseFloat(s.top),parseFloat(s.width),parseFloat(s.height));}
return null;}
function localizeDocument(inOptParentElement){var parentElement=inOptParentElement?$(inOptParentElement):d;if(parentElement)$A(parentElement.getElementsByClassName('loc')).each(function(elm){if(elm.firstChild&&elm.firstChild.nodeValue){var localized=Loc[elm.firstChild.nodeValue];if(localized){replaceElementContents(elm,localized);Element.removeClassName(elm,'loc');}}});$H(Loc.tooltips).each(function(child){var elm=$(child.key);if(elm)elm.title=child.value;});localizeTimes(parentElement);}
function localizeTimes(inOptParentElement){var parentElement=inOptParentElement?$(inOptParentElement):d;if(parentElement)$A(parentElement.getElementsByClassName('datetime')).each(function(elm){if(elm.firstChild&&elm.firstChild.nodeValue){var localized=createDateObjFromISO8601(elm.firstChild.nodeValue)
if(localized){replaceElementContents(elm,Loc.getLongDateString(localized));if(elm&&!elm.getAttribute('title'))elm.setAttribute('title',Loc.getExtraLongDateString(localized));Element.removeClassName(elm,'loc');}}});}
function removeAllChildNodes(inParent){inParent=$(inParent);while(inParent.childNodes.length>0){inParent.removeChild(inParent.firstChild);}}
function replaceElementContents(inElement,inStringOrObj,inEvaluate){var elm=$(inElement);if(typeof inStringOrObj=='string'&&inEvaluate){elm.innerHTML=inStringOrObj;}
else{removeAllChildNodes(elm);elm.appendChild(typeof inStringOrObj=='string'?elm.ownerDocument.createTextNode(inStringOrObj):inStringOrObj);}}
function promoteElementChildren(inParent){while(inParent.childNodes.length>0){var currentChild=inParent.firstChild;inParent.removeChild(currentChild);inParent.parentNode.insertBefore(currentChild,inParent);}
inParent.parentNode.removeChild(inParent);}
function changeNodeName(inElement,inNodeName){var elm=$(inElement);var node=elm.ownerDocument.createElement(inNodeName);$A(elm.childNodes).each(function(child){elm.removeChild(child);node.appendChild(child);});elm.parentNode.insertBefore(node,elm);Element.remove(elm);return node;}
function insertAtBeginning(inElement,inParentElement){var elm=$(inParentElement);if(elm.childNodes.length>0)elm.insertBefore($(inElement),elm.firstChild);else elm.appendChild($(inElement));}
function insertAfter(inElement,inSibling){var elm=$(inElement);var sibling=$(inSibling);var nextSibling=sibling.nextSibling;if(nextSibling)nextSibling.parentNode.insertBefore(elm,nextSibling);else sibling.parentNode.appendChild(inElement);}
function getReturnValueObj(theXMLDocument){return theXMLDocument.getElementsByTagName('value').item(0).firstChild;}
function compareDateWeeks(){var dates=new Array();for(i=0;i<2;i++){var date=new Date(arguments[i].getTime());date.setDate(date.getDate()-date.getDay());dates.push(date);}
return((dates[0].getYear()==dates[1].getYear())&&(dates[0].getMonth()==dates[1].getMonth())&&(dates[0].getDate()==dates[1].getDate()));}
function getEndDateUsingDuration(inDate,inDuration){var dt=new Date(inDate.getTime());if(inDuration.days)dt.setDate(dt.getDate()+inDuration.days);if(inDuration.hours)dt.setHours(dt.getHours()+inDuration.hours);if(inDuration.minutes)dt.setMinutes(dt.getMinutes()+inDuration.minutes);if(inDuration.seconds)dt.setMinutes(dt.getSeconds()+inDuration.seconds);return dt;}
function durationFromISO8601(inISOString){if(!inISOString)return null;var dt=inISOString.match(/^P([^T]*)T?(.*)$/);if(!dt)return null;var duration=new Object();['years','months','days','hours','minutes','seconds'].each(function(key,i){var mat=dt[Math.floor(i/3)+1].match("([0-9]+)"+key.charAt(0).toUpperCase());duration[key]=mat?parseInt(mat[1]):0;});return duration;}
function durationToISO8601(inDuration){var str='P';if(inDuration.years>0)str+=padNumberStr(inDuration.years,4)+'Y';if(inDuration.months>0)str+=padNumberStr(inDuration.months,2)+'M';if(inDuration.days>0)str+=padNumberStr(inDuration.days,2)+'D';str+='T';if(inDuration.hours>0)str+=padNumberStr(inDuration.hours,2)+'H';if(inDuration.minutes>0)str+=padNumberStr(inDuration.minutes,2)+'M';if(inDuration.seconds>0)str+=padNumberStr(inDuration.seconds,2)+'S';return str;}
function hoursForDuration(inDuration){var hours=inDuration.hours||0;if(inDuration.minutes)hours+=(inDuration.minutes/60);return(hours==0?null:hours);}
function dateObjToURLString(inDateObj){return''+padNumberStr(inDateObj.getFullYear(),4)
+'-'+padNumberStr(inDateObj.getMonth()+1,2)
+'-'+padNumberStr(inDateObj.getDate(),2)}
function createDateObjFromISO8601(inISOString,inOptIsGMT){if(!inISOString)return null;var str=inISOString.match(/[Tt]/)?inISOString:inISOString+'T000000Z';var d=str.match(/(\d{4})-?(\d{2})-?(\d{2})\s*[Tt]?(\d{2}):?(\d{2}):?(\d{2})/);if(!d)return null;var dt=new Date(d[1],d[2]-1,d[3],d[4],d[5],d[6]);if(inOptIsGMT)dt.setHours(dt.getHours()-(dt.getTimezoneOffset()/60));return dt;}
function createDateFromXMLDateValue(theXMLObj){if(theXMLObj){var startDateStr=theXMLObj.firstChild.firstChild.nodeValue;return createDateObjFromISO8601(startDateStr);}
return null;}
function createStringFromXMLStringValue(theXMLObj){if(theXMLObj){return theXMLObj.firstChild.nodeValue;}
return null;}
function createIntFromXMLIntValue(theXMLObj){if(theXMLObj){return parseInt(theXMLObj.firstChild.firstChild.nodeValue);}
return null;}
function invalidate(){return false;}
function blur(){try{var anchors=$A(d.getElementsByTagName('a'));if(anchors.length){var firstLink=anchors.detect(function(elm){return elm.href});firstLink.focus();firstLink.blur();}}
catch(e){}}
function afterFinishShow(effect){effect.element.style.height='';Element.show(effect.element);}
function afterFinishHide(effect){effect.element.style.height='';Element.hide(effect.element);}
function afterFinishDelete(effect){effect.element.style.height='';Element.remove(effect.element);}
Object.extend(String.prototype,{trim:function(){return this.toString().replace(/^[\s\t\n\r]*|[\s\t\n\r]*$/g,'');}});if(window.loaded)loaded('widgets.js');