var Traction={};function _get_url_param(a,b){return(document.fm)?document.fm[a].value:b}Traction.DigestState=Class.create();Traction.DigestState.prototype={hour:-1,minute:-1,frequencyCode:-1,enabled:true,initialize:function(b,d,a,c){this.hour=b;this.minute=d;this.frequencyCode=a;this.enabled=c},getHour:function(){if(this.hour==0){return 12}if(this.hour>12){return(this.hour-12)}return this.hour},getAMPM:function(){if(this.hour>=12){return"PM"}return"AM"},serialize:function(a){var c=(typeof(a)=="number")?(a+"_"):"";var b=c+"hours="+this.hour+","+c+"minutes="+this.minute+","+c+"enabled="+(this.enabled?"true":"false")+","+c+"digestFreq="+this.frequencyCode;return b}};Traction.UserDigestState=Class.create();Traction.UserDigestState.prototype=Object.extend(new Traction.DigestState(),{initialize:function(b,f,a,d,c,e){this.hour=b;this.minute=f;this.frequencyCode=a;this.enabled=d;this.email=c;this.styleCode=e},serialize:function(a){var c=(typeof(a)=="number")?(a+"_"):"";var b=c+"hours="+this.hour+","+c+"minutes="+this.minute+","+c+"enabled="+(this.enabled?"true":"false")+","+c+"digestFreq="+this.frequencyCode+","+c+"digestEmails="+this.email+","+c+"digestHtmls="+this.styleCode;return b}});Traction.InternetAddress=Class.create();Traction.InternetAddress.prototype={ip:null,notes:null,valid:true,removed:false,initialize:function(c,a,b){this.ip=c;this.notes=a;this.valid=b},serialize:function(a){var c=(typeof(a)=="number")?(a+"_"):"";var b=c+"addr="+this.ip+","+c+"notes="+this.notes+",";return b}};Traction.MailAliasRule=Class.create();Traction.MailAliasRule.prototype={recipient:null,labelProjectName:null,labelName:null,removed:false,initialize:function(c,b,a){this.recipient=c;this.labelProjectName=b;this.labelName=a},serialize:function(a){var c=(typeof(a)=="number")?(a+"_"):"";var b=c+"project="+this.labelProjectName+","+c+"type=topic,"+c+"value="+this.labelName+",";return b}};Traction.MailHeaderMatcher=Class.create();Traction.MailHeaderMatcher.prototype={header:null,match:null,labelProjectName:null,labelName:null,removed:false,initialize:function(d,b,c,a){this.header=d;this.match=b;this.labelProjectName=c;this.labelName=a},serialize:function(a){var c=(typeof(a)=="number")?(a+"_"):"";var b=c+"header="+this.header+","+c+"match="+this.match+","+c+"label.project="+this.labelProjectName+","+c+"label.type=topic,"+c+"label.value="+this.labelName+",";return b}};Traction.Permission={RECLASSIFY:"R",COMMENT:"C",EDIT:"c",DELETE:"X",RENAME:"n",LOCK:"k",VERSION:"V",CANCEL_CHECKOUT:"y",CANCEL_LOCK:"Y",STEAL_LOCK:"Z"};Traction.PermissionSet=Class.create();Traction.PermissionSet.prototype={initialize:function(a){this.permstr=a},has:function(a){return(this.permstr!=null&&this.permstr.indexOf(a)!=-1)}};Traction.Permissions={initialize:function(){},map:new Array(),store:function(b,a){var c=a;if(typeof c=="string"){c=new Traction.PermissionSet(c)}this.map[b]=c},get:function(a){return this.map[a]},has:function(b,c){var a=this.get(b);return(a&&a!=null&&a.has(c))}};Traction.ProjectTemplateInfo=Class.create();Traction.ProjectTemplateInfo.prototype={name:null,displayName:null,description:null,hasSettings:false,editable:false,initialize:function(c,a,e,b,d){this.name=c;this.displayName=a;this.description=e;this.hasSettings=b;this.editable=d}};Traction.StandardMailEntryRoutingRule=Class.create();Traction.StandardMailEntryRoutingRule.prototype={header:null,regex:null,project:null,removed:false,initialize:function(c,a,b){this.header=c;this.regex=a;this.project=b},serialize:function(a){var c=(typeof(a)=="number")?(a+"_"):"";var b=c+"header="+this.header+","+c+"regex="+this.regex+","+c+"project="+this.project;return b}};Traction.ID=Class.create();Traction.ID.parse=function(c){if(c==null){c=""}else{c=c.trim()}c=decode_url_parameter(c);Debug.println("Traction.ID.parse( ",c," )");var d=new RegExp("^([^\\s\\\"_\\?,\\.!#;:@\\$%\\^&\\*=~/\\\\\\|\\(\\)\\[\\]\\{\\}\\'`<>\\+\\-]*[^\\s\\\"_\\?,\\.!#;:@\\$%\\^&\\*=~/\\\\\\|\\(\\)\\[\\]\\{\\}\\'`<>\\+\\-0-9])(\\d+)((\\.|@)(\\d+)|(\\$)(.+))?$");var b=new RegExp("^(@(\\d+)|\\$(.+))$");var a=b.exec(c);if(a!=null){if(typeof(a[2])!="undefined"){return new Traction.ID("",Traction.ID.CURRENT_ENTRY,"@",a[2])}else{return new Traction.ID("",Traction.ID.CURRENT_ENTRY,"$",a[3])}}else{a=d.exec(c);if(a!=null){if(typeof(a[3])!="undefined"){if(typeof(a[4])!="undefined"){return new Traction.ID(a[1],a[2],a[4],a[5])}else{return new Traction.ID(a[1],a[2],a[6],a[7])}}else{return new Traction.ID(a[1],a[2])}}else{return null}}};Traction.ID.prototype={initialize:function(c,a,b,d){this.project=c;this.entry=a;this.id=(typeof(d)=="undefined")?Traction.ID.NO_ITEM:d;this.separator=(typeof(b)=="undefined")?((this.id==Traction.ID.NO_ITEM)?"":"."):b},debug:function(){Debug.println("project="+this.project+" entry="+this.entry+" id="+this.id+" sep="+this.separator+" str="+this.toString())},toString:function(){return this.project+((this.entry!=Traction.ID.CURRENT_ENTRY)?this.entry:"")+this.separator+((this.id!=Traction.ID.NO_ITEM)?this.id:"")},removeItem:function(){return new Traction.ID(this.project,this.entry)}};Traction.ID.CURRENT_ENTRY=-1;Traction.ID.NO_ITEM=-1;Traction.ID.test=function(){Traction.ID.parse("Woohoo43").debug();Traction.ID.parse("Woohoo43.00").debug();Traction.ID.parse("Woohoo43.03").debug();Traction.ID.parse("Woohoo43$important").debug();Traction.ID.parse("Woohoo43$7").debug();Traction.ID.parse("Woohoo43@2").debug();Traction.ID.parse("notatractionid").debug()};if(!String.prototype.endsWith){String.prototype.endsWith=function(a){return this.length>=a.length&&this.substring(this.length-a.length)==a}}if(!String.prototype.startsWith){String.prototype.startsWith=function(a){return this.length>=a.length&&this.substring(0,a.length)==a}}if(!String.prototype.trim){String.prototype.trim=function(){return new String(this).replace(/^\s+/,"").replace(/\s+$/,"")}}if(!String.prototype.ltrim){String.prototype.ltrim=function(){return new String(this).replace(/^\s+/,"")}}if(!String.prototype.rtrim){String.prototype.rtrim=function(){return new String(this).replace(/\s+$/,"")}}if(!String.prototype.caseInsensitiveCompare){String.prototype.caseInsensitiveCompare=function(d){var e=this.toLowerCase();var c=(d!=null)?d.toLowerCase():null;return(al==bl)?0:(al");return c}}if(!String.prototype.escape_commas){String.prototype.escape_commas=function(){var b=new RegExp("\\\\","g");var c=this.replace(b,"\\\\");var a=new RegExp(",","g");c=c.replace(a,"\\,");return c}}if(!String.prototype.escape_forattribute){String.prototype.escape_forattribute=function(){var d=new RegExp('"',"g");var c=this.replace(d,""");var a=new RegExp("<","g");c=c.replace(a,"<");var b=new RegExp(">","g");c=c.replace(b,">");return c}}if(!String.prototype.escape_char){String.prototype.escape_char=function(e){var b=new RegExp("\\\\","g");var d=this.replace(b,"\\\\");var a=new RegExp(e,"g");d=d.replace(a,"\\"+e);return d}}if(!String.prototype.unescape_char){String.prototype.unescape_char=function(e){var a=new RegExp("\\\\"+e,"g");var d=this.replace(a,e);var b=new RegExp("\\\\\\\\","g");d=d.replace(b,"\\");return d}}if(!String.prototype.escape_singlequotes){String.prototype.escape_singlequotes=function(){return this.escape_char("'")}}if(!String.prototype.unescape_singlequotes){String.prototype.unescape_singlequotes=function(){return this.unescape_char("'")}}if(!String.prototype.encode_url){String.prototype.encode_url=function(){try{return encodeURI(this)}catch(a){return escape(this)}}}if(!String.prototype.decode_url){String.prototype.decode_url=function(){try{return decodeURI(this)}catch(a){return unescape(this)}}}if(!String.prototype.encode_url_parameter){String.prototype.encode_url_parameter=function(){try{return encodeURIComponent(this)}catch(a){return escape(this)}}}if(!String.prototype.decode_url_parameter){String.prototype.decode_url_parameter=function(){try{return decodeURIComponent(this)}catch(a){return unescape(this)}}}Traction.StringUtil={replaceClassName:function(c,f,b){var e=(c!=null)?c.className:null;if(e==null){return}var d=" "+e+" ";var a=new RegExp("\\s+"+f+"\\s+","g");d=d.replace(a," "+b+" ").trim();c.className=d},nopx:function(a){return parseInt(a.replace("px",""))},px:function(a){return a+"px"}};var Rect=Class.create();Rect.copy=function(a){return new Rect(a.x,a.y,a.w,a.h)};Rect.prototype={initialize:function(a,d,b,c){this.x=a;this.y=d;this.w=b;this.h=c},isPointInside:function(a,b){return(this.x<=a&&a<=this.x+this.w&&this.y<=b&&b<=this.y+this.h)},isMouseInside:function(a){var b=Util.getMousePosition(a);return this.isPointInside(b.x,b.y)},equals:function(a){return(this.x==a.x&&this.y==a.y&&this.w==a.w&&this.h==a.h)},x2:function(){return this.x+this.w},y2:function(){return this.y+this.h},print:function(){return"("+this.x+","+this.y+")["+this.w+","+this.h+"]"}};var Util={};Util.getMousePosition=function(a){if(a==null){return{x:-1,y:-1}}if(a.pageX||a.pageY){return{x:a.pageX,y:a.pageY}}else{if(document.documentElement&&(document.documentElement.scrollLeft||document.documentElement.scrollTop)){return{x:a.clientX+document.documentElement.scrollLeft,y:a.clientY+document.documentElement.scrollTop}}else{return{x:a.clientX+document.body.scrollLeft,y:a.clientY+document.body.scrollTop}}}};Util.getElementBounds=function(b){var a=b;if(b!=null&&b.tagName=="TR"){a=b.firstChild;while(a.tagName!="TD"){a=a.nextSibling}}return new Rect(getleft(b),gettop(a),outer_width(b),outer_height(a))};Util.getViewportBounds=function(){if(window.innerWidth){var a=window.innerWidth;var b=window.innerHeight;if(window.scrollMaxX){b-=20}if(window.scrollMaxY){a-=20}return new Rect(window.pageXOffset,window.pageYOffset,a,b)}else{if(document.documentElement&&document.documentElement.clientWidth){return new Rect(document.documentElement.scrollLeft,document.documentElement.scrollTop,document.documentElement.clientWidth,document.documentElement.clientHeight)}else{return new Rect(document.body.scrollLeft,document.body.scrollTop,document.body.clientWidth,document.body.clientHeight)}}};Util.getDocumentBounds=function(){if(document.documentElement&&document.documentElement.clientWidth){return new Rect(0,0,document.documentElement.scrollWidth,document.documentElement.scrollHeight)}else{return new Rect(0,0,document.body.scrollWidth,document.body.scrollHeight)}};Util.cvtToRelativeCoords=function(e,d){var a=Util.getElementBounds(e);var c=nopx(e.style.left);var b=nopx(e.style.top);return{x:d.x+(c-a.x),y:d.y+(b-a.y)}};Util.keepInBounds=function(c,b){var a=Rect.copy(c);if(c.x2()>b.x2()){a.x-=(c.x2()-b.x2())}if(c.y2()>b.y2()){a.y-=(c.y2()-b.y2())}return a};Util.getServerRelativeURL=function(b){var a=b;var d=b.indexOf("//");if(d!=-1){var c=b.indexOf("/",d+2);if(c!=-1){a=b.substring(c)}}return a};Util.hasStylesheet=function(b){b=Util.getServerRelativeURL(b);var c=document.styleSheets;for(var a=0;a255)?255:this.r);this.g=(this.g<0||isNaN(this.g))?0:((this.g>255)?255:this.g);this.b=(this.b<0||isNaN(this.b))?0:((this.b>255)?255:this.b);this.toRGB=function(){return"rgb("+this.r+", "+this.g+", "+this.b+")"};this.toHex=function(){var k=this.r.toString(16);var j=this.g.toString(16);var i=this.b.toString(16);if(k.length==1){k="0"+k}if(j.length==1){j="0"+j}if(i.length==1){i="0"+i}return"#"+k+j+i};this.getHelpXML=function(){var m=new Array();for(var o=0;o "+s.toRGB()+" -> "+s.toHex());q.appendChild(u);q.appendChild(k);p.appendChild(q)}catch(r){}}return p}};Util.getRGBFromString=function(b){var a=new Util.ColorParser(b);if(a.ok){return[a.r,a.g,a.b]}else{return null}};Util.EditApps={Word:{name:"Word.Application",failKey:"cfi_direct_open_failure_message_msword",failText:"Could not open Microsoft Word. Microsoft Word may not be installed on your system, or you may need to change your Internet Explorer security settings to allow execution of ActiveX controls.",open:function(b,a){b.Visible=true;b.Documents.Open(a)}},Excel:{name:"Excel.Application",failKey:"cfi_direct_open_failure_message_msexcel",failText:"Could not open Microsoft Excel. Microsoft Excel may not be installed on your system, or you may need to change your Internet Explorer security settings to allow execution of ActiveX controls.",open:function(b,a){b.Visible=true;b.Workbooks.Open(a)}},Powerpoint:{name:"PowerPoint.Application",failKey:"cfi_direct_open_failure_message_mspowerpoint",failText:"Could not open Microsoft PowerPoint. Microsoft PowerPoint may not be installed on your system, or you may need to change your Internet Explorer security settings to allow execution of ActiveX controls.",open:function(b,a){b.Visible=true;b.Presentations.Open(a)}}};Util.editDocument=function(f,b){var d,a=false;try{d=new ActiveXObject(f.name);if(d!=null){f.open(d,b)}else{a=true}}catch(c){a=true}if(a){if(confirm(i18n(f.failKey,f.failText))){showClientSecuritySettingsHelp()}}};Util.Cookie=Class.create();Util.Cookie.getCookie=function(a,f){var e=a+"=";var c=document.cookie.split(";");for(var b=0;b0){this.current+=this.options.step;this.timer=setTimeout(this.fade.bind(this),this.options.delay);return}this.setOpacity(this.current);this.current+=this.options.step;this.timer=setTimeout(this.fade.bind(this),this.options.interval)}},isFinished:function(){return((this.options.step<0)?this.current<=this.options.finish:this.current>=this.options.finish)},isVisible:function(){return(this.elements[0].style.visibility=="visible")},setVisibility:function(a){for(var b=0;bthis.bounds.h?this.bounds.h:a)-this.options.arrowHeight);this.downarrow.style.left=px(this.bounds.x);this.uparrow.style.width=px(this.bounds.w);this.downarrow.style.width=px(this.bounds.w);this.setOffset(0)},isTopVisible:function(){return(this.offset==0)},isBottomVisible:function(){return(this.offset+this.height>=this.bounds.h)},getOffset:function(){return this.offset},setOffset:function(a){if(a<0){a=0}if(this.height>this.bounds.h){a=0;this.element.style.clip="rect(0px,"+this.bounds.w+"px,"+this.bounds.h+"px,0px)"}else{if(a>this.bounds.h-this.height){a=this.bounds.h-this.height}this.element.style.clip="rect("+a+"px,"+this.bounds.w+"px,"+(this.height+a)+"px,0px)";this.element.style.top=px(this.bounds.y-a)}this.offset=a;this.style_visibility(this.uparrow,this.upmain,!this.isTopVisible());this.style_visibility(this.downarrow,this.downmain,!this.isBottomVisible())},scroll:function(a){this.direction=a;this.scroll_()},scroll_:function(){if(this.timer){clearTimeout(this.timer)}this.setOffset(this.getOffset()+(this.direction*this.options.step));if(this.direction>0){if(this.isBottomVisible()){return}}else{if(this.isTopVisible()){return}}this.timer2=setTimeout(this.scroll_wakeup_.bind(this),1)},scroll_wakeup_:function(){this.timer=setTimeout(this.scroll_.bind(this),this.options.interval)},stop:function(){if(this.timer2){clearTimeout(this.timer2)}if(this.timer){clearTimeout(this.timer)}},onClick:function(a){this.wasOnClick=true;this.stop();this.setOffset(this.getOffset()+(this.direction*(this.height-2*this.options.arrowHeight-15)));return false},onHoverUp:function(a){if(this.wasOnClick){return}this.style_hover(this.upmain);this.scroll(-1*(a.shiftKey?3:1));if(this.options.onHover!=null){this.options.onHover(a)}},onHoverDown:function(a){if(this.wasOnClick){return}this.style_hover(this.downmain);this.scroll(1*(a.shiftKey?3:1));if(this.options.onHover!=null){this.options.onHover(a)}},onUnhoverUp:function(a){this.wasOnClick=false;this.style_unhover(this.upmain);this.stop();if(this.options.onUnhover!=null){this.options.onUnhover(a)}},onUnhoverDown:function(a){this.wasOnClick=false;this.style_unhover(this.downmain);this.stop();if(this.options.onUnhover!=null){this.options.onUnhover(a)}}};Traction.SubMenu=Class.create();Traction.SubMenu.prototype={initialize:function(a){this.setOptions(a);this.unlock()},setOptions:function(a){this.options=Object.extend({isSubMenu:false,parentMenu:null,menuItem:null,name:"untitled",styler:Traction.DefaultMenuStyle},a||{})},build:function(items){this.items=items;var isFirstTime=(this.div==null);if(isFirstTime){this.div=document.createElement("DIV");var styleropts=this.options.styler.options;with(this.div){style.position="absolute";style.zIndex=100;style.display="block";style.backgroundColor=styleropts.menu_background_color;style.padding="0px";style.fontFamily="Arial, Helvetica, sans-serif;";style.fontSize="8pt"}this.divA=document.createElement("DIV");this.div2=document.createElement("DIV");this.div.appendChild(this.divA);this.divA.appendChild(this.div2);this.setOnLeftSide(false)}else{this.div2.innerHTML="";this.table=null;this.tbody=null}for(var i=0;ic.h){f=c.y+4}else{var a=f+e.h-c.y2();if(a>0){f-=a}}var d=(e.x+e.w)-(c.x+c.w);if(d>0){b-=d}this.set_position(b,f,c.h-6);this.fader.show()},showAlignRight:function(a,c){var b=Util.getElementBounds(this.div);this.show(a-b.w+2,c)},set_position:function(x,y,maxHeight){with(this.div){style.left=px(x);style.top=px(y);this.scroller.updatePosition(maxHeight)}},onmouseout:function(){this.isMouseOver=false;if(!this.locked){this.hideTimer=setTimeout(this.hide.bind(this),200)}},onmouseover:function(){this.isMouseOver=true;if(this.options.parentMenu!=null){this.options.parentMenu.lock()}if(this.options.menuItem!=null){this.options.menuItem.style_on()}if(this.hideTimer){clearTimeout(this.hideTimer)}this.fader.reset()},lock:function(a){this.locked=true},unlock:function(a,b){var b=b||this.isMouseOver;if(a&&a!=null){b=Util.getElementBounds(this.div).isMouseInside(a)}if(this.locked&&!b){this.locked=false;this.hide()}this.locked=false},isVisible:function(){return this.fader!=null&&this.fader.isVisible()},execute:function(d,e,c){var f="";for(var b=0;b=c){this.menu.setOnLeftSide(false);this.menu.show(e.x+e.w-d,e.y+1)}else{this.menu.setOnLeftSide(true);this.menu.showAlignRight(e.x-1,e.y)}},unhover:function(a){this.style_off();this._SubItem_unhover()},_SubItem_unhover:function(a){if(this.menu!=null){this.menu.hide()}},execute:function(a){this.hover(a)}});var AjaxItemCache=new Array();Traction.AjaxItem=Class.create();Traction.AjaxItem.prototype=Object.extend(new Traction.SubItem(),{style_setup:function(){this.styler.style_ajaxitem_setup(this)},style_on:function(){this.styler.style_ajaxitem_on(this)},style_off:function(){this.styler.style_ajaxitem_off(this)},hover:function(b){this.style_on();if(this.ajaxInProgress){return}var c={event:b};if(this.items!=null){this._SubItem_hover(b)}else{var a=AjaxItemCache[this.poststring()];if(a){this.ajaxInProgress=true;this.done(a,c)}else{this.ajaxInProgress=true;this.xmlrpc=xmlpost_async(FORM_ACTION_READ_WRITE,this.poststring(),this.progress,false,this.done.bind(this),c,-1)}}},poststring:function(){alert("override poststring() in AjaxItem subclass");var a="";a=fm_append(a,"type=ajaxrpc");a=fm_append(a,"method=hello");return a},unhover:function(a){this.style_off();this._SubItem_unhover(a);if(this.ajaxInProgress&&this.xmlrpc&&(this.xmlrpc.readyState==0||this.xmlrpc.readyState==1)){xmlprogress(-1,this.progress);this.xmlrpc.abort();this.items=null;this.ajaxInProgress=false}this.ajaxInProgress=false},done:function(b,a){AjaxItemCache[this.poststring()]=b;if(b){this.items=this.getItems(b,a);if(this.ajaxInProgress){this._SubItem_hover(a.event)}}this.ajaxInProgress=false},getItems:function(b,a){alert("override getItems() in AjaxItem subclass")}});Traction.LabelCache={};Traction.LabelCache.getLabels=function(f,g,d,c){var b="";b=fm_append(b,"type=ajaxrpc");b=fm_append(b,"method=GetLabelsWithIcons");b=fm_append(b,"p0="+f);if(c){b=fm_append(b,"p1="+c)}var e={callback:g,state:d,poststring:b,project:f};var a=AjaxItemCache[b];if(a){this.getLabels_done(a,e)}else{xmlpost_async(FORM_ACTION_READ_WRITE,b,null,false,this.getLabels_done.bind(this),e,-1)}};Traction.LabelCache.getLabels_done=function(responseText,state){if(responseText){AjaxItemCache[state.poststring]=responseText;var responseArray=eval(responseText);var labelArray=new Array();for(var i=0;i0){a+=" "}a+=c[b].getRapidSelectorFormat()}return a}else{return c}}},execute:function(d,c){if(this.requireConfirmation){var a="";if(document.fm.type&&document.fm.type.value){a="&origtype="+document.fm.type.value}var b="";b+="&addlabels="+encode_url_parameter(this.addLabels);b+="&remlabels="+encode_url_parameter(this.remLabels);b+="&curitem="+decode_url_parameter(curItem);b+=a;openDialog("reclassifydialog","modern_insertlabel_window","",b,DIALOG_FLAG_MULTIPLE_WINDOWS)}else{var f="";f=fm_append(f,"type=ajaxrpc");f=fm_append(f,"method=reclassify");f=fm_append(f,"proj="+_get_url_param("proj","*"));f=fm_append(f,"p0="+encode_url_parameter(this.remLabels));f=fm_append(f,"p1="+encode_url_parameter(this.addLabels));f=fm_append(f,"curitem="+curItem);var e={menuItem:c,curItem:curItem};xmlpost_async(FORM_ACTION_READ_WRITE,f,null,true,this.done.bind(this),e)}if(itemMenu!=null){itemMenu.hide();itemMenu.clearCache()}},done:function(b,a){labels_refresh(b,[encode_url_parameter(a.curItem),this.failed.bind(this)]);if(typeof(removeAfterExecute)!="undefined"&&removeAfterExecute!=null){a.menuItem.remove()}},failed:function(){alert(i18n("contextmenu_action_generic_failure_message","Sorry, but the operation failed."))}});Traction.RemoveLabel=Class.create();Traction.RemoveLabel.prototype=Object.extend(new Traction.AbstractAction(),{initialize:function(a){this.label=a},execute:function(b,a){var d="";d=fm_append(d,"type=ajaxrpc");d=fm_append(d,"method=reclassify");d=fm_append(d,"p0="+this.label);d=fm_append(d,"curitem="+curItem);var c={menuItem:a,curItem:curItem};xmlpost_async(FORM_ACTION_READ_WRITE,d,null,true,this.done.bind(this),c);if(itemMenu!=null){itemMenu.hide();itemMenu.clearCache()}},done:function(b,a){labels_refresh(b,[encode_url_parameter(a.curItem),this.failed.bind(this)]);a.menuItem.remove()},failed:function(){alert(i18n("contextmenu_action_generic_failure_message","Sorry, but the operation failed."))}});Traction.StatusChange=Class.create();Traction.StatusChange.exec=function(a,b,c,d){var e=new Traction.StatusChange(a,b,d);e.execute(null,null,d)};Traction.StatusChange.prototype=Object.extend(new Traction.AbstractAction(),{initialize:function(a,b,c){this.targets=this.normalize(b);this.operationName=a;this.triggerElement=c;Debug.println(this.operationName+" ["+this.targets+"]")},normalize:function(a){if(a==null){return""}else{if(a instanceof Array){var b="";for(var c=0;c0){b+=","}b+=a}return b}else{return a}}},execute:function(b,a){var d="";d=fm_append(d,"type=ajaxrpc");d=fm_append(d,"method=changeStatus");d=fm_append(d,"p0="+this.operationName);d=fm_append(d,"entryid="+encode_url_parameter(this.targets));var c={menuItem:a,curItem:curItem};xmlpost_async(FORM_ACTION_READ_WRITE,d,null,true,this.done.bind(this),c);if(itemMenu!=null){itemMenu.hide();itemMenu.clearCache()}},done:function(responseText,state){var data;eval("data = "+responseText);if(!data.success){var errorMessage=data.errorMessage;switch(data.errorType){case"namingConflict":if(data.canSeeName&&data.editActionURL!=null){if(confirm(errorMessage+"\n\n"+i18n("changestatus_fix_naming_conflict_confirmation_message","You can edit the article to fix the naming conflict.\n\nClick OK if you want to edit the article now.\nClick Cancel otherwise."))){document.location.href=data.editActionURL}}break;default:alert(errorMessage)}}else{if(this.targets.indexOf(",")==-1&&this.triggerElement!=null){var tid=Traction.ID.parse(this.targets);var poststring="";poststring=fm_append(poststring,"type=entrycontrols_");poststring=fm_append(poststring,"proj="+encode_url_parameter(tid.project));poststring=fm_append(poststring,"rec="+tid.entry);poststring=fm_append(poststring,"operation="+this.operationName);xmlpost_async(FORM_ACTION_READ_ONLY,poststring,null,true,this.updateEntryControls.bind(this))}else{}}},updateEntryControls:function(a){var b=this.triggerElement;while(b!=null){if(b.nodeName.toLowerCase()=="div"&&b.className.indexOf("entrycontrols")>=0){b=b.parentNode;break}b=b.parentNode}b.innerHTML=a},failed:function(){alert(i18n("contextmenu_action_generic_failure_message","Sorry, but the operation failed."))}});var Events={MouseMove:"mousemove",MouseDown:"mousedown",MouseUp:"mouseup",MouseOver:"mouseover",MouseOut:"mouseout",ContextMenu:"contextmenu",Click:"click",Submit:"submit",Resize:"resize",Change:"change",Focus:"focus",Drag:"drag",DragStart:"dragstart",DragInit:"draginit",DragMove:"dragmove",DragEnd:"dragend",Load:"load",Unload:"unload",SelectStart:"selectstart",KeyPress:"keypress",KeyUp:"keyup",KeyDown:"keydown",DOMchanged:"_domchanged",attach:function(d,a,c,b){this.insert(-1,d,a,c,b)},attachCustom:function(a,c,b){this.attach(null,a,c,b)},kill:function(b,a){if(b==null){b=window}b["on"+a]=function(){return false};b[a+"_Handlers"]=null},cancel:function(a){if(a){if(a.stopPropagation){a.stopPropagation()}a.cancelBubble=true}},insert:function(c,f,b,e,d){if(f==null){f=window}var a=f[b+"_Handlers"];if(a==null){a=new Events.Handlers();f[b+"_Handlers"]=a;if(f.addEventListener){f.addEventListener(b,a.dispatch.bindAsEventListener(a),false)}else{if(f.attachEvent){f.attachEvent("on"+b,a.dispatch.bindAsEventListener(a))}else{f["on"+b]=a.dispatch.bindAsEventListener(a)}}}a.insert(c,e,d)},fire:function(d,b,c){if(d==null){d=window}var a=d[b+"_Handlers"];if(a!=null){a.dispatch(c)}},fireCustom:function(a){this.fire(null,a,null)}};Events.Handlers=Class.create();Events.Handlers.prototype={initialize:function(){this.handlers=new Array()},insert:function(a,d,c){var e=c.bindAsEventListener(d);if(a==-1||a>=this.handlers.length){this.handlers.push(e)}else{for(var b=this.handlers.length;b>a;b--){this.handlers[b]=this.handlers[b-1]}this.handlers[a]=e}},dispatch:function(c){var a=true;for(var b=0;b=0){e[f.substring(0,a)]=f.substring(a+1)}else{e[f]=""}}}return e},map2value:function(b){var a="";if(b){for(key in b){if(key=="extend"){continue}if(a!=""){a+=","}a+=escape_char(key+"="+b[key],",")}}return a}};Date.prototype.formatDate=function(k,c){var b=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var l=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];var h=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var g=["January","February","March","April","May","June","July","August","September","October","November","December"];var j={a:function(){return a.getHours()>11?"pm":"am"},A:function(){return(this.a().toUpperCase())},B:function(){var n=(a.getTimezoneOffset()+60)*60;var i=(a.getHours()*3600)+(a.getMinutes()*60)+a.getSeconds()+n;var m=Math.floor(i/86.4);if(m>1000){m-=1000}if(m<0){m+=1000}if((String(m)).length==1){m="00"+m}if((String(m)).length==2){m="0"+m}return m},c:function(){return(this.Y()+"-"+this.m()+"-"+this.d()+"T"+this.h()+":"+this.i()+":"+this.s()+this.P())},d:function(){var i=String(this.j());return(i.length==1?"0"+i:i)},D:function(){return l[a.getDay()]},F:function(){return g[a.getMonth()]},g:function(){return a.getHours()>12?a.getHours()-12:a.getHours()},G:function(){return a.getHours()},h:function(){var i=String(this.g());return(i.length==1?"0"+i:i)},H:function(){var i=String(this.G());return(i.length==1?"0"+i:i)},i:function(){var i=String(a.getMinutes());return(i.length==1?"0"+i:i)},I:function(){var i=new Date("January 1 "+this.Y()+" 00:00:00");return(i.getTimezoneOffset()==a.getTimezoneOffset()?0:1)},j:function(){return a.getDate()},l:function(){return b[a.getDay()]},L:function(){var i=this.Y();if((i%4==0&&i%100!=0)||(i%4==0&&i%100==0&&i%400==0)){return 1}else{return 0}},m:function(){var i=String(this.n());return(i.length==1?"0"+i:i)},M:function(){return h[a.getMonth()]},n:function(){return a.getMonth()+1},N:function(){var i=this.w();return(i==0?7:i)},O:function(){var o=Math.abs(a.getTimezoneOffset());var n=String(Math.floor(o/60));var i=String(o%60);n.length==1?n="0"+n:1;i.length==1?i="0"+i:1;return a.getTimezoneOffset()<0?"+"+n+i:"-"+n+i},P:function(){var i=this.O();return(i.substr(0,3)+":"+i.substr(3,2))},r:function(){var i;i=this.D()+", "+this.d()+" "+this.M()+" "+this.Y()+" "+this.H()+":"+this.i()+":"+this.s()+" "+this.O();return i},s:function(){var i=String(a.getSeconds());return(i.length==1?"0"+i:i)},S:function(){switch(a.getDate()){case 1:return("st");case 2:return("nd");case 3:return("rd");case 21:return("st");case 22:return("nd");case 23:return("rd");case 31:return("st");default:return("th")}},t:function(){var i=[null,31,28,31,30,31,30,31,31,30,31,30,31];if(this.L()==1&&this.n()==2){return 29}return i[this.n()]},U:function(){return Math.round(a.getTime()/1000)},w:function(){return a.getDay()},W:function(){var o=this.N();var m=this.z();var i=364+this.L()-m;if(i<=2&&o<=(3-i)){return 1}if(m<=2&&o>=5){return new Date(this.Y()-1,11,31).formatDate("W")}var n=new Date(this.Y(),0,1).getDay();n=n!=0?n-1:6;if(n<=3){return(1+Math.floor((m+n)/7))}else{return(1+Math.floor((m-(7-n))/7))}},y:function(){var i=String(this.Y());return i.substring(i.length-2,i.length)},Y:function(){if(a.getFullYear){var m=new Date("January 1 2001 00:00:00 +0000");var i=m.getFullYear();if(i==2001){return a.getFullYear()}}var i=a.getYear();var n=i%100;n+=(n<38)?2000:1900;return n},z:function(){var i=new Date("January 1 "+this.Y()+" 00:00:00");var m=a.getTime()-i.getTime();return Math.floor(m/1000/60/60/24)},Z:function(){return(a.getTimezoneOffset()*-60)}};function e(i){if(j[i]!=undefined){return j[i]()}else{return i}}var a;if(c){var a=new Date(c)}else{var a=this}var d=k.split("");var f=0;while(f=e;d--){var h=getParentByName(this.columns[d],"SPAN");h.parentNode.removeChild(h);Debug.println("Removed ",this.columns[d].id,"'s containing SPAN.")}this.columns.length=e;if(this.options.onChooseFile!=null){this.options.onChooseFile(f.value)}Debug.println("Retrieving directory listing or file preview for selected value '",f.value,"'.");var a=FORM_ACTION_READ_ONLY+"?type=findercolumn_&root="+encode_url_parameter(this.options.rootDirectory)+"&url="+encode_url_parameter(c.value)+"&fileListName="+encode_url_parameter(this.options.listIDRoot)+"&columnID="+(parseInt(c.name.substring(this.options.listIDRoot.length),10)+1);this.request=xmlget_async(a,this.options.throbberImage,(this.options.throbberImage==null),this.onChooseFile_wakeup.bind(this),[b,e,f.value],-1)},onChooseFile_wakeup:function(g,b){var a=b[0];var d=b[1];var c=b[2];var e=this;setTimeout(function(){e.addColumn.bind(e)(g,e.options.listIDRoot+d,a,c)},100)},jumpTo:function(a){var b=document.getElementById(this.options.listIDRoot+a);if(b!=null){Debug.println("Jumping to list ",a);b.focus()}},eatEvent:function(a){Debug.println("eating "+a);if(a.stopPropagation){a.stopPropagation()}a.cancelBubble=true;return false},onKeyDown:function(b){Debug.println("onKeyDown");var a=keyCode2(b);switch(a){case 37:case 39:this.lastKeyWasLeftArrow=(a==37);this.lastKeyWasRightArrow=(a==39);if(b.stopPropagation){b.stopPropagation()}b.cancelBubble=true;return false;default:return true}},onKeyUp:function(b){Debug.println("onKeyUp");var a=keyCode2(b);switch(a){case 37:case 39:if(b.stopPropagation){b.stopPropagation()}b.cancelBubble=true;return false;default:return true}},onKeyPress:function(d){Debug.println("onKeyPress");var c=keyCode2(d);var a=(typeof(d.target)=="undefined")?d.srcElement:d.target;var b=parseInt(a.name.substring(this.options.listIDRoot.length),10);if(c==37){this.jumpTo(b-1);if(d.stopPropagation){d.stopPropagation()}d.cancelBubble=true;this.lastKeyWasLeftArrow=false;this.lastKeyWasRightArrow=false;return false}else{if(c==39){this.jumpTo(b+1);if(d.stopPropagation){d.stopPropagation()}d.cancelBubble=true;this.lastKeyWasLeftArrow=false;this.lastKeyWasRightArrow=false;return false}}return true}};Util.PingServer=Class.create();Util.PingServer.STATUS_UNKNOWN=-1;Util.PingServer.STATUS_UNREACHABLE=0;Util.PingServer.STATUS_ONLINE=1;Util.PingServer.prototype={throbber:null,throbberState:null,statusArea:null,delay:1000,maxAttempts:1,failedPingCallbackFunction:null,finalCallbackFunction:null,finalCallbackArgs:null,skipWarnings:false,lastPingTime:0,attempts:0,serverStatus:Util.PingServer.STATUS_UNKNOWN,initialize:function(h,e,c,b,f,d,a,g){this.throbber=h;this.statusArea=e;this.delay=c;this.maxAttempts=b;this.skipWarnings=f;this.failedPingCallbackFunction=d;this.finalCallbackFunction=a;this.finalCallbackArgs=g},reset:function(){this.attempts=0;this.lastPingTime=0;this.serverStatus=Util.PingServer.STATUS_UNKNOWN},start:function(){this.startThrobber();if(this.statusArea!=null){this.statusArea.innerHTML=""}this.reset();this.pingServer()},saveThrobberSource:function(){if(this.throbber.src.indexOf("/images/loading_on.gif")!=-1){this.throbberState=this.throbber.src.replace("_on","_off");return null}this.throbberState=this.throbber.src;return"/images/loading_on.gif"},stopThrobber:function(){if(this.throbber==null){return}this.throbber.src=this.throbberState},startThrobber:function(){if(this.throbber==null){return}var a=this.saveThrobberSource();if(a!=null){this.throbber.src=a}},pingServer:function(){var a=(new Date()).getTime()-this.lastPingTime;if(a\+\-]+$/)){a.type=Util.FindExpressionParser.Token.TYPE_OPERATOR}else{if(!a.text.match(/[ \"?\,\.!#;:@$%^&*\=\~\/\\|\(\)\[\]\{\}\'\`\<\>\+\-]+/)){a.type=Util.FindExpressionParser.Token.TYPE_OPERATOR}}}switch(this.lastToken.type){case Util.FindExpressionParser.Token.TYPE_BEGINNING_OF_INPUT:if(a.type==Util.FindExpressionParser.Token.TYPE_LPAREN){this.openParens++;c.startExpression()}else{throw ('Left parenthesis required to begin expression. Instead found "'+a.text+'".')}break;case Util.FindExpressionParser.Token.TYPE_LPAREN:if(a.type==Util.FindExpressionParser.Token.TYPE_OPERATOR){c.addOperator(a)}else{throw ('Operator token required after left parenthesis to begin prefix expression. Instead found "'+a.text+'".')}break;case Util.FindExpressionParser.Token.TYPE_OPERATOR:if(a.type==Util.FindExpressionParser.Token.TYPE_OPERAND){c.addOperand(a)}else{if(a.type==Util.FindExpressionParser.Token.TYPE_LPAREN){this.openParens++;c.startExpression()}else{throw ('Operand token required after operator token. Instead found "'+a.text+'"')}}break;case Util.FindExpressionParser.Token.TYPE_OPERAND:if(a.type==Util.FindExpressionParser.Token.TYPE_OPERAND){c.addOperand(a)}else{if(a.type==Util.FindExpressionParser.Token.TYPE_LPAREN){this.openParens++;c.startExpression()}else{if(a.type==Util.FindExpressionParser.Token.TYPE_RPAREN){this.openParens--;c.endExpression()}else{throw ('Another operand token or parenthesis token required after operator token. Instead found "'+a.text+"\" after '"+this.lastToken.text+"'..")}}}break;case Util.FindExpressionParser.Token.TYPE_RPAREN:if(a.type==Util.FindExpressionParser.Token.TYPE_LPAREN){if(this.openParens>=1){this.openParens++;c.startExpression()}else{throw ("Final right parenthesis came too soon.")}}else{if(a.type==Util.FindExpressionParser.Token.TYPE_RPAREN){if(this.openParens>0){this.openParens--;c.endExpression()}else{throw ("Found unbalanced right parenthesis.")}}else{if(a.type==Util.FindExpressionParser.Token.TYPE_OPERAND){c.addOperand(a)}else{if(a.type==Util.FindExpressionParser.Token.TYPE_END_OF_INPUT){if(this.openParens>0){throw ("Found unbalanced left parenthesis (end of input came too soon).")}}else{throw ('Another operand token or another parenthesis token required after right parenthesis. Instead found "'+a.text+'".')}}}}break}this.lastToken=a}}catch(b){this.inUse=false;Debug.println(b);throw b}this.inUse=false;return c}};Util.FindExpressionParser.Tokenizer=Class.create();Util.FindExpressionParser.Tokenizer.prototype={inputString:"",scanPosition:-1,len:0,_next:null,initialize:function(a){Debug.println('Tokenizing "',a,'"');this._next=new Util.FindExpressionParser.Token("(beginning of input)",Util.FindExpressionParser.Token.TYPE_BEGINNING_OF_INPUT);this.scanPosition=0;this.len=(a!=null)?a.length:0;this.inputString=a},nextToken:function(){var a=this._next;this._findNextToken();return a},_findNextToken:function(){var d=false;while(!d&&this.scanPosition';if(!this.exactEntry&&canReclassify){mid+=''+i18n("hovermenu_label_link_text","label")+" • "}if(!this.exactEntry&&canComment){mid+=''+i18n("hovermenu_comment_link_text","comment")+" • "}if(canEdit){mid+="'+i18n("hovermenu_edit_link_text","edit")+" • "}mid+=''+i18n("hovermenu_more_link_text","more")+'';mid+='';this.parts.middle.innerHTML=mid;with(this.parts.middle){style.fontFamily="Arial";style.fontSize="7pt";style.color="#fff"}},build_parts:function(){this.parts.top.innerHTML='
';this.parts.right.innerHTML='';this.parts.bottom.innerHTML='
';this.parts.left.innerHTML='';this.create_middle();this.tr=this.parts.top.getElementsByTagName("IMG")[3];this.br=this.parts.bottom.getElementsByTagName("IMG")[3];this.trtd=this.parts.top.getElementsByTagName("TD")[2];this.brtd=this.parts.bottom.getElementsByTagName("TD")[2];with(this.parts.right){style.border="solid #ccc";style.borderWidth="0px 2px 0px 1px";style.backgroundColor="#eee";style.cursor=ua("css_cursor_property_pointer_value","pointer");title=i18n("contextmenu_dropdown_title_tip","Show Menu")}with(this.parts.left){style.borderLeft="2px solid #ccc"}with(this.parts.itemid){style.zIndex=19;style.backgroundColor="transparent";style.fontFamily="Arial";style.fontSize="7pt";style.color="#999"}if(this.isValid()){with(this.parts){right.onmouseover=this.menuTabHover.bindAsEventListener(this);right.onmouseout=this.menuTabUnhover.bindAsEventListener(this);right.onclick=this.menuTabClick.bindAsEventListener(this);right.oncontextmenu=this.menuTabClick.bindAsEventListener(this)}this.fader=new Traction.Fader([this.parts.top,this.parts.right,this.parts.bottom,this.parts.left],{start:0,finish:100,step:5,nofade:[this.parts.itemid,this.parts.middle]})}},style_part:function(div){with(div){style.zIndex=20;style.visibility="hidden";style.display="";style.position="absolute"}return div},isMouseInside:function(a){return rect.isMouseInside(a)},setBounds:function(a){if(!this.rect.equals(a)){this.rect=a;this.fader.reset()}},setItemId:function(a,b){if(typeof(b)!="undefined"){this.exactEntry=b}if(this.itemid!=a){this.itemid=a;this.create_middle()}},isVisible:function(){return(this.parts.top.style.visibility!="hidden")},hide:function(){this.fader.reset();with(this.parts){top.style.visibility="hidden";right.style.visibility="hidden";bottom.style.visibility="hidden";middle.style.visibility="hidden";left.style.visibility="hidden";itemid.style.visibility="hidden"}},getMargins:function(){return{top:-4,right:1,bottom:-4,left:4}},getThicks:function(){return{top:6,right:9,bottom:6,left:2}},getItemIdExtra:function(){return 0},getExtraPx:function(){return 0},show:function(event){var top=this.rect.y;var left=this.rect.x;var width=this.rect.w;var height=this.rect.h;var margin=this.getMargins();var thick=this.getThicks();var selwidth=width+margin.left+margin.right+thick.left+thick.right+3;var selheight=height+margin.top+margin.bottom;var idstr="";var entrystr="";if(this.itemid!=null){var period=this.itemid.lastIndexOf(".");idstr=(period!=-1)?this.itemid.substring(period+1):"00";entrystr=(period!=-1)?this.itemid.substring(0,period):this.itemid}Debug.println(": "+left+","+top+" ("+width+"x"+height+") ["+idstr+"]");this.style_tab_unhover();with(this.parts.top){style.left=px(left-margin.left-thick.left);style.top=px(top-thick.top-margin.top);style.width=px(selwidth);style.height=px(thick.top)}this.size_table_(this.parts.top,6,selwidth,thick);with(this.parts.bottom){style.left=px(left-margin.left-thick.left);style.top=px(top+height+margin.bottom);style.width=px(selwidth);style.height=px(thick.bottom)}var midbounds=Util.getElementBounds(this.parts.middle);this.size_table_(this.parts.bottom,6,selwidth,thick);with(this.parts.right){style.left=px(left+width+margin.right+this.getExtraPx());style.top=px(top-margin.top);style.width=px(thick.right);style.height=px(selheight)}with(this.parts.left){style.left=px(left-margin.left-thick.left);style.top=px(top-margin.top);style.width=px(thick.left);style.height=px(selheight)}with(this.parts.middle){style.left=px(left+(width/2)-(midbounds.w/2));Debug.println("checking for "+entrystr+"c");if(idstr=="00"&&document.getElementById(entrystr.toLowerCase()+"c")==null){style.top=px(top-(midbounds.h/2)-1)}else{style.top=px(top+height-(midbounds.h/2)+1)}}if(idstr!=""){if(idstr=="00"){this.parts.itemid.innerHTML=""}else{this.parts.itemid.innerHTML=''+idstr+""}var itemid_bounds=Util.getElementBounds(this.parts.itemid);with(this.parts.itemid){style.left=px(left+width-itemid_bounds.w+1+this.getItemIdExtra());style.top=px(top+height-itemid_bounds.h+1)}}this.fader.fade()},size_table_:function(g,e,d,f){var a=g.getElementsByTagName("TABLE");if(a.length>0){var c=a[0].getElementsByTagName("TR");if(c.length>0){var b=c[0].getElementsByTagName("TD");if(b.length==4){b[0].style.width=px(e);b[1].style.width=px(d-2*e);b[2].style.width=px(f.right-e+2);b[3].style.width=px(e);b[0].style.height=px(e-2);b[1].style.height=px(e-2);b[2].style.height=px(e-2);b[3].style.height=px(e-2)}}}},menuTabHover:function(a){this.style_tab_hover(a);if(this.options.onMenuTabHover){this.options.onMenuTabHover(a)}},menuTabUnhover:function(a){this.style_tab_unhover(a);if(this.options.onMenuTabUnhover){this.options.onMenuTabUnhover(a)}},style_tab_hover:function(event){with(this.parts.right){style.backgroundColor="#ffeec2"}this.tr.src="/images/tr_h.gif";this.br.src="/images/br_h.gif";this.trtd.style.backgroundColor="#ffeec2";this.brtd.style.backgroundColor="#ffeec2"},style_tab_unhover:function(event){with(this.parts.right){style.backgroundColor="#eee"}this.tr.src="/images/tr.gif";this.br.src="/images/br.gif";this.trtd.style.backgroundColor="#eee";this.brtd.style.backgroundColor="#eee"},menuTabClick:function(a){if(this.options.onMenuTabClick){this.options.onMenuTabClick(a);return false}else{return true}}};Traction.ItemHoverLeft=Class.create();Traction.ItemHoverLeft.prototype=Object.extend(new Traction.ItemHoverRight(),{build_parts:function(){this.parts.top.innerHTML='
';this.parts.right.innerHTML='';this.parts.bottom.innerHTML='
';this.parts.left.innerHTML='';this.create_middle();this.tr=this.parts.top.getElementsByTagName("IMG")[0];this.br=this.parts.bottom.getElementsByTagName("IMG")[0];this.trtd=this.parts.top.getElementsByTagName("TD")[1];this.brtd=this.parts.bottom.getElementsByTagName("TD")[1];with(this.parts.left){style.border="solid #ccc";style.borderWidth="0px 1px 0px 2px";style.backgroundColor="#eee";style.cursor=ua("css_cursor_property_pointer_value","pointer");title=i18n("contextmenu_dropdown_title_tip","Show Menu")}with(this.parts.right){style.borderRight="2px solid #ccc"}with(this.parts.itemid){style.zIndex=19;style.backgroundColor="transparent";style.fontFamily="Arial";style.fontSize="7pt";style.color="#999"}if(this.isValid()){with(this.parts){left.onmouseover=this.menuTabHover.bindAsEventListener(this);left.onmouseout=this.menuTabUnhover.bindAsEventListener(this);left.onclick=this.menuTabClick.bindAsEventListener(this);left.oncontextmenu=this.menuTabClick.bindAsEventListener(this)}this.fader=new Traction.Fader([this.parts.top,this.parts.right,this.parts.bottom,this.parts.left],{start:0,finish:100,step:5,nofade:[this.parts.itemid,this.parts.middle]})}},getMargins:function(){return{top:-4,right:4,bottom:-4,left:5}},getThicks:function(){return{top:6,right:2,bottom:6,left:9}},getItemIdExtra:function(){return 5},getExtraPx:function(){return 1},size_table_:function(g,e,d,f){var a=g.getElementsByTagName("TABLE");if(a.length>0){var c=a[0].getElementsByTagName("TR");if(c.length>0){var b=c[0].getElementsByTagName("TD");if(b.length==4){b[0].style.width=px(e);b[1].style.width=px(f.left-e+2);b[2].style.width=px(d-2*e);b[3].style.width=px(e);b[0].style.height=px(e-2);b[1].style.height=px(e-2);b[2].style.height=px(e-2);b[3].style.height=px(e-2)}}}},style_tab_hover:function(event){with(this.parts.left){style.backgroundColor="#ffeec2"}this.tr.src="/images/tl_h1.gif";this.br.src="/images/bl_h1.gif";this.trtd.style.backgroundColor="#ffeec2";this.brtd.style.backgroundColor="#ffeec2"},style_tab_unhover:function(event){with(this.parts.left){style.backgroundColor="#eee"}this.tr.src="/images/tl1.gif";this.br.src="/images/bl1.gif";this.trtd.style.backgroundColor="#eee";this.brtd.style.backgroundColor="#eee"}});Traction.ItemMenu=Class.create();Traction.ItemMenu.prototype={didSetupUnhover:false,initialize:function(a){this.setOptions(a)},bindUnhover:function(b){var a=$(b);if(a&&a!=null){Events.attach(a,Events.MouseOver,this,this.unhover)}},setupUnhover:function(){if(!this.didSetupUnhover){this.bindUnhover("left");this.bindUnhover("right");this.bindUnhover("middletop");this.didSetupUnhover=true}},setOptions:function(a){this.options=Object.extend({showHover:1,effects:1,styler:Traction.DefaultMenuStyle},a||{});if(this.options.effects==0){Traction.Fader.disabled=true;Traction.ZoomExpander.disabled=true}switch(this.options.showHover){case -1:this.selector=new Traction.ItemHoverLeft({onMenuTabClick:this.showMenu.bind(this)});break;case 0:this.selector=null;break;default:case 1:this.selector=new Traction.ItemHoverRight({onMenuTabClick:this.showMenu.bind(this)});break;case 2:this.selector=new Traction.ItemHoverNone({});break}Events.attach(window,Events.Resize,this,this.onresize);Events.attachCustom(Events.DOMchanged,this,this.ondomchange)},setFocus:function(b,c,a){if(b!=null){this.item=b;this.elm=c;this.bounds=a}else{this.item=null;this.elm=null;this.bounds=null}},ondomchange:function(a){if(this.selector!=null&&this.item!=null&&this.elm!=null){this.hide()}},onresize:function(a){if(this.selector!=null&&this.selector.isVisible()&&this.item!=null&&this.elm!=null){this.bounds=this.compute_bounds_rect_(this.item,this.elm);this.show(a)}},hover:function(c,b,e,d){var a=this.compute_bounds_rect_(b,e);if(a.isMouseInside(c)){this.setFocus(b,e,a);this.show(c,d);if(c.stopPropagation){c.stopPropagation()}c.cancelBubble=true;return false}else{Debug.println("Mouse not inside, ignoring hover event");this.unhover()}return true},unhover:function(){this.setFocus(null);this.hide()},isTitleItem:function(a){return a.endsWith(".00")},compute_bounds_rect_:function(z,k){var y=k;var q=0;var f=0;var t=0;var r=0;var a=false;var w=Util.getElementBounds(k);if(y.tagName=="SPAN"){d=y;r=outer_height(d)}else{if(y.tagName=="DIV"&&y.className=="commentdetails"){var o=y;d=getParentByName(y,"TD");var l=Util.getElementBounds(d);r=l.h;if(o.nextSibling){var u=Util.getElementBounds(o);r-=((l.y+l.h)-(u.y+u.h))}}else{if(k.tagName=="TR"){if(y==null){Debug.println("Couldn't find element to focus.");return}var d=y.getElementsByTagName("TD")[0];var g=null;if(d!=null&&d.className.startsWith("searchhit")){var n=getParentByName(d,"TABLE");var A=n.getElementsByTagName("TR");y=A[0];g=A[A.length-1];d=y.getElementsByTagName("TD")[0]}}else{a=true;d=y;r=outer_height(d)}}}Debug.println(d);q=gettop(d);f=getleft(d);t=outer_width(d);if(this.isTitleItem(z)){q+=1;if(d.className=="smallPortletEntry"){}else{if(d.className.endsWith("PortletEntryTitle")){if(d.className=="mediumPortletEntryTitle"){}else{var n=getParentByName(d,"TABLE");var A=n.getElementsByTagName("TR");var v;for(v=0;v0){var c=a[0].getElementsByTagName("TR");if(c.length>0){var b=c[0].getElementsByTagName("TD");if(b.length==4){b[0].style.width=px(e);b[1].style.width="";b[2].style.width="";b[3].style.width=px(e);b[0].style.height=px(e-2);b[1].style.height=px(e-2);b[2].style.height=px(e-2);b[3].style.height=px(e-2)}}}},style_tab_hover:function(a){},style_tab_unhover:function(a){}});Traction.ActionItem=Class.create();Traction.ActionItem.prototype=Object.extend(new Traction.AbstractItem(),{initialize:function(a,b,c){this.label=a;this.icon=b;this.action=c;if(this.icon==""){this.icon=null}},style_setup:function(){this.styler.style_action_setup(this)},style_on:function(){this.styler.style_action_on(this)},style_off:function(){this.styler.style_action_off(this)},execute:function(a){this.action.execute(a,this)}});Traction.RecentItems=Class.create();Traction.RecentItems.prototype={COOKIE_NAME:"recent",MAX_LABELS:7,MAX_PROJECTS:5,MAX_COLLECTIONS:5,MAX_SECTIONS:5,initialize:function(){this.load()},addProject:function(a){this.add(this.projects,a,this.MAX_PROJECTS)},addLabel:function(c,a,b){this.add(this.labels,{p:c,ln:a,i:(b=="undefined")?null:b},this.MAX_LABELS)},addSection:function(e,d,c,a,b){this.add(this.sections,{p:e,g:d,s:c,a:a,c:b?"1":"0"},this.MAX_SECTIONS)},addCollection:function(a){this.add(this.collections,a,this.MAX_COLLECTIONS)},add:function(b,f,a){for(var e=0;e0;e--){b[e]=b[e-1]}b[0]=f},itemequals:function(a,b){if(typeof a=="string"){return a==b}else{for(property in a){if(a[property]!=b[property]){return false}}return true}},getProjects:function(){return this.projects},getLabels:function(){return this.labels},getCollections:function(){return this.collections},getSections:function(){return this.sections},load:function(){var a=Util.Cookie.getCookie(this.COOKIE_NAME,true);if(a!=null){this.decode(a.value)}if(this.projects==null){this.projects=new Array()}if(this.labels==null){this.labels=new Array()}if(this.collections==null){this.collections=new Array()}if(this.sections==null){this.sections=new Array()}},save:function(){var a=new Util.Cookie(this.COOKIE_NAME,this.encode(),true);a.savePermanent()},encode:function(){var d="{p:[";for(var b=0;b0){this.items.push(new Traction.LabelItem(i18n("contextmenu_recent_labels_heading","Recent Labels")));for(var b=0;b0){this.items.push(new Traction.LabelItem(i18n("contextmenu_recent_projects_heading","Recent Projects")));for(var b=0;b0){this.items.push(new Traction.LabelItem(i18n("contextmenu_recent_sections_heading","Recent Sections")));for(var b=0;b0){this.items.push(new Traction.LabelItem(i18n("contextmenu_recent_projects_heading","Recent Projects")));for(var b=0;b0){ret[i]=new Traction.SubItem(groupname,null,groupitems)}}}}return ret}});Traction.CollectAdd=Class.create();Traction.CollectAdd.prototype=Object.extend(new Traction.SubItem(),{initialize:function(a,b,c,d){this.SubItem_initialize(a,b,null);this.isItem=c;this.currentCollection=d},execute:function(a){this.hover(a)},hover:function(d){this.styler.style_subitem_on(this);this.items=new Array();if(this.hasCurrentProjectReclassify){var b=Traction.ID.parse(decode_url_parameter(curItem));if(b!=null){this.items.push(new Traction.AddLabelsProject(b.project))}}var c=recent.getCollections();if(c.length>0){this.items.push(new Traction.LabelItem(i18n("contextmenu_recent_projects_heading","Recent Projects")));for(var a=0;a0){this.items.push(new Traction.LabelItem(i18n("contextmenu_recent_collections_heading","Recent Collections")));for(var a=0;a0){a=Traction.Edit.Dialogs.Attachments.attachmentData[Traction.Edit.Dialogs.Attachments.attachmentIDs[Traction.Edit.Dialogs.Attachments.attachmentIDs.length-1]].number+1;if(a");return}var a=FORM_ACTION_READ_ONLY+"?type=atomsnippet_";Debug.println("Retrieving atomsnippet_ for named page ",document.fm.name.value.trim()," in scope ",document.fm.proj.options[document.fm.proj.selectedIndex].text,"...");a+="&name="+encode_url_parameter(document.fm.name.value.trim())+"&proj="+encode_url_parameter(document.fm.proj.value.substring(2));xmlget_async(a,null,true,Traction.Edit.Dialogs.ChooseName.getTractionAtomPreview_wakeup.bind(this))},getTractionAtomPreview_wakeup:function(c){var b;var a=c.indexOf("