function tabberObj(_6b6){var arg;this.div=null;this.classMain="tabber";this.classMainLive="tabberlive";this.classTab="tabbertab";this.classTabDefault="tabbertabdefault";this.classNav="tabbernav";this.classTabHide="tabbertabhide";this.classNavActive="tabberactive";this.titleElements=["h2","h3","h4","h5","h6"];this.titleElementsStripHTML=true;this.removeTitle=true;this.addLinkId=false;this.linkIdFormat="<tabberid>nav<tabnumberone>";for(arg in _6b6){this[arg]=_6b6[arg];}this.REclassMain=new RegExp("\\b"+this.classMain+"\\b","gi");this.REclassMainLive=new RegExp("\\b"+this.classMainLive+"\\b","gi");this.REclassTab=new RegExp("\\b"+this.classTab+"\\b","gi");this.REclassTabDefault=new RegExp("\\b"+this.classTabDefault+"\\b","gi");this.REclassTabHide=new RegExp("\\b"+this.classTabHide+"\\b","gi");this.tabs=new Array();if(this.div){this.init(this.div);this.div=null;}}tabberObj.prototype.init=function(e){var _6b9,i,i2,t,defaultTab=0,DOM_ul,DOM_li,DOM_a,aId,headingElement;if(!document.getElementsByTagName){return false;}if(e.id){this.id=e.id;}this.tabs.length=0;_6b9=e.childNodes;for(i=0;i<_6b9.length;i++){if(_6b9[i].className&&_6b9[i].className.match(this.REclassTab)){t=new Object();t.div=_6b9[i];this.tabs[this.tabs.length]=t;if(_6b9[i].className.match(this.REclassTabDefault)){defaultTab=this.tabs.length-1;}}}DOM_ul=document.createElement("ul");DOM_ul.className=this.classNav;for(i=0;i<this.tabs.length;i++){t=this.tabs[i];t.headingText=t.div.title;if(this.removeTitle){t.div.title="";}if(!t.headingText){for(i2=0;i2<this.titleElements.length;i2++){headingElement=t.div.getElementsByTagName(this.titleElements[i2])[0];if(headingElement){t.headingText=headingElement.innerHTML;if(this.titleElementsStripHTML){t.headingText.replace(/<br>/gi," ");t.headingText=t.headingText.replace(/<[^>]+>/g,"");}break;}}}if(!t.headingText){t.headingText=i+1;}DOM_li=document.createElement("li");if(typeof (this.applyNavOnAnchor)!="undefined"&&this.applyNavOnAnchor!=null&&this.applyNavOnAnchor){DOM_li.onclick=this.navClick;DOM_li.tabber=this;DOM_li.tabberIndex=i;}t.li=DOM_li;DOM_a=document.createElement("a");DOM_a.appendChild(document.createTextNode(t.headingText));DOM_a.href="javascript:void(null);";DOM_a.title=t.headingText;if(t.headingText=="HashTags"){DOM_li.onclick=this.listhashtags;}DOM_a.tabber=this;DOM_a.tabberIndex=i;if(this.addLinkId&&this.linkIdFormat){aId=this.linkIdFormat;aId=aId.replace(/<tabberid>/gi,this.id);aId=aId.replace(/<tabnumberzero>/gi,i);aId=aId.replace(/<tabnumberone>/gi,i+1);aId=aId.replace(/<tabtitle>/gi,t.headingText.replace(/[^a-zA-Z0-9\-]/gi,""));DOM_a.id=aId;}DOM_li.appendChild(DOM_a);DOM_ul.appendChild(DOM_li);}if(typeof (this.navBlock)!="undefined"&&this.navBlock!=null){document.getElementById(this.navBlock).appendChild(DOM_ul);}else{e.insertBefore(DOM_ul,e.firstChild);}e.className=e.className.replace(this.REclassMain,this.classMainLive);this.tabShow(defaultTab);if(typeof this.onLoad=="function"){this.onLoad({tabber:this});}return this;};tabberObj.prototype.navClick=function(_6ba){var rVal,a,self,tabberIndex,onClickArgs;a=this;if(!a.tabber){return false;}self=a.tabber;tabberIndex=a.tabberIndex;a.blur();if(typeof self.onClick=="function"){onClickArgs={"tabber":self,"index":tabberIndex,"event":_6ba};if(!_6ba){onClickArgs.event=window.event;}rVal=self.onClick(onClickArgs);if(rVal===false){return false;}}self.tabShow(tabberIndex);return false;};tabberObj.prototype.tabHideAll=function(){var i;for(i=0;i<this.tabs.length;i++){this.tabHide(i);}};tabberObj.prototype.tabHide=function(_6bd){var div;if(!this.tabs[_6bd]){return false;}div=this.tabs[_6bd].div;if(!div.className.match(this.REclassTabHide)){div.className+=" "+this.classTabHide;}this.navClearActive(_6bd);return this;};tabberObj.prototype.tabShow=function(_6bf){var div;if(!this.tabs[_6bf]){return false;}this.tabHideAll();div=this.tabs[_6bf].div;div.className=div.className.replace(this.REclassTabHide,"");this.navSetActive(_6bf);if(typeof this.onTabDisplay=="function"){this.onTabDisplay({"tabber":this,"index":_6bf});}return this;};tabberObj.prototype.navSetActive=function(_6c1){this.tabs[_6c1].li.className=this.classNavActive;return this;};tabberObj.prototype.navClearActive=function(_6c2){this.tabs[_6c2].li.className="";return this;};tabberObj.prototype.getActiveTabName=function(){for(i=0;i<this.tabs.length;i++){if(this.tabs[i].li.className=="tabberactive"){return this.tabs[i].li.getElementsByTagName("a")[0].childNodes[0].nodeValue;}}};tabberObj.prototype.getTab=function(_6c3){for(i=0;i<this.tabs.length;i++){if(this.tabs[i].li.getElementsByTagName("a")[0].childNodes[0].nodeValue==_6c3){return this.tabs[i].div;}}};tabberObj.prototype.getTabNav=function(_6c4){for(i=0;i<this.tabs.length;i++){if(this.tabs[i].li.getElementsByTagName("a")[0].childNodes[0].nodeValue==_6c4){return this.tabs[i].li;}}};tabberObj.prototype.getActiveTab=function(){for(i=0;i<this.tabs.length;i++){if(this.tabs[i].li.className=="tabberactive"){return this.tabs[i].div;}}};tabberObj.prototype.getActiveTabIndex=function(){for(i=0;i<this.tabs.length;i++){if(this.tabs[i].li.className=="tabberactive"){return i;}}return -1;};function tabberAutomatic(_6c5){var _6c6,divs,i;if(!_6c5){_6c5={};}_6c6=new tabberObj(_6c5);divs=document.getElementsByTagName("div");for(i=0;i<divs.length;i++){if(divs[i].className&&divs[i].className.match(_6c6.REclassMain)){_6c5.div=divs[i];divs[i].tabber=new tabberObj(_6c5);}}return this;}function tabberAutomaticOnLoad(_6c7){var _6c8;if(!_6c7){_6c7={};}_6c8=window.onload;if(typeof window.onload!="function"){window.onload=function(){tabberAutomatic(_6c7);};}else{window.onload=function(){_6c8();tabberAutomatic(_6c7);};}}if(typeof tabberOptions=="undefined"){tabberAutomaticOnLoad();}else{if(!tabberOptions["manualStartup"]){tabberAutomaticOnLoad(tabberOptions);}}tabberObj.prototype.listhashtags=function(_6c9){window.location="/hashtag/manageHashTag.action";};
tangler.manager.Scroller=function(_265,_266){this.oArgs=_266||{};var _267="LI";var _268=this;this.UP=-1;this.DOWN=1;this.slidingConf={easing:"easeOut",duration:0.45,callback:function(){this.parent.afterScrolling();}};this.initialized=false;this.scrollSet=Ext.get(_265);this.container=this.scrollSet.select("div.scrollArea").elements[0];this.scrollElement=this.scrollSet.select("div.scrollContent").elements[0];this.tabber=tangler.util.Options.getOptionalArgument("tabber",_266,null);this.listItems=[];this.alphabetIndexdTabs=tangler.util.Options.getOptionalArgument("alphabetIndexdTabs",_266,[]);this.indexer=Ext.get(tangler.util.Options.getOptionalArgument("indexer",_266,null));this.onScroll=_266.onScroll;this.onBufferExhausted=_266.onBufferExhausted;this._lastScrollTop=0;this.scrollOffSet=0;this.upButton=this.scrollSet.select("div.up").elements[0];this.downButton=this.scrollSet.select("div.down").elements[0];this.defaultHeight=0;this.afterScrolling=function(){this.checkAndDisable();this.fireEvent("scrolled");this.checkAndFireBufferExhaustion();};this.checkAndFireBufferExhaustion=function(){if(this.container.scrollTop>this._lastScrollTop){var _269=this.container.scrollHeight;var _26a=Math.abs(this.container.clientHeight*0.2);var pos=this.container.scrollTop+this.container.clientHeight;if((pos+_26a)>=_269){this.fireEvent("bufferExhausted");}}_lastScrollTop=this.container.scrollTop;};this.checkAndDisable=function(){var _26c=this.findElementToShow();var _26d=false;var _26e=false;if(this.listItems.length<=_26c.visibleItemsCount){this.disableScroller(this.UP);this.disableScroller(this.DOWN);return;}if(_26c.uBound.index==0&&_26c.lBound.index==_26c.visibleItemsCount&&_26c.lBound.index!=-1){this.disableScroller(this.UP);_26d=true;}if(_26c.lBound.index==-1){this.disableScroller(this.DOWN);_26e=true;}if(!_26d){this.enableScroller(this.UP);}if(!_26e){this.enableScroller(this.DOWN);}};this.disableScroller=function(_26f){if(_26f==this.UP){Ext.get(this.upButton).addClass("scrollerDisabled");}else{Ext.get(this.downButton).addClass("scrollerDisabled");}};this.enableScroller=function(_270){if(_270==this.UP){Ext.get(this.upButton).removeClass("scrollerDisabled");}else{Ext.get(this.downButton).removeClass("scrollerDisabled");}};this.findElementToShow=function(){var _271={uBound:{index:-1,item:null},lBound:{index:-1,item:null},visibleItemsCount:0};var _272=Ext.get(this.container);var _273=0;var _274=this.listItems.length;var _275=0;for(var i=0;i<this.listItems.length;i++){var _277=Ext.get(this.listItems[i]);var _278=_277.getOffsetsTo(_272)[1]+_277.getHeight();if(_278<0){_273=i+1;}else{if(_278>_272.getHeight()){_274=i;_271.lBound={index:i,item:_277};break;}}}_275=Math.abs(_274-_273);var _279=_273-_275;_271.visibleItemsCount=_275;_279=_279>-1?_279:0;_271.uBound={index:_279,item:Ext.get(this.listItems[_279])};return _271;};this.scrollIntoView=function(_27a){var c=Ext.getDom(this.container);var _27c=Ext.get(_27a);var el=_27c.dom;var o=_27c.getOffsetsTo(c),l=o[0]+c.scrollLeft,t=o[1]+c.scrollTop,b=t+el.offsetHeight,r=l+el.offsetWidth;var ch=c.clientHeight;var ct=parseInt(c.scrollTop,10);var cl=parseInt(c.scrollLeft,10);var cb=ct+ch;var cr=cl+c.clientWidth;Ext.get(c).parent=this;if(el.offsetHeight>ch||t<ct){Ext.get(c).scrollTo("top",t,this.slidingConf);}else{if(b>cb){var y=b-_27c.getHeight();Ext.get(c).scrollTo("top",y,this.slidingConf);}}c.scrollTop=c.scrollTop;};this.scrollToIndex=function(){var _285=arguments[2].letter;var _286=null;var _287="div[title="+_285+"]";_286=Ext.get(tabber.getActiveTab()).select(_287).elements;if(_286!=null&&_286.length>0){this.scrollIntoView(_286[0].parentNode);}};this.reset=function(){this.listItems=new Array();var _288=[];if(this.tabber!=null){this.listItems=Ext.get(tabber.getActiveTab()).select(_267).elements;if(this.alphabetIndexdTabs.contains(tabber.getActiveTabName())){if(this.oArgs.indicesForTabs&&this.oArgs.indicesForTabs[this.tabber.getActiveTabName()]){_288=this.oArgs.indicesForTabs[this.tabber.getActiveTabName()];}else{var _289=Ext.get(tabber.getActiveTab()).select(_267+" div.letterIndex").elements;for(var i=0;i<_289.length;i++){_288.push(_289[i].title);}}this.initIndexer(_288);this.toggleIndexer(true);}}else{this.listItems=Ext.get(this.scrollElement).select(_267).elements;}if(this.listItems.length>0){this.scrollIntoView(this.listItems[0]);}if(_288.length==0){this.toggleIndexer(false);}this.checkAndDisable();};this.checkForNewEntries=function(){this.listItems=Ext.get(tabber.getActiveTab()).select(_267).elements;};this.initIndexer=function(_28b){tangler.util.Element.removeChildNodes(this.indexer);var _28c="ABCDEFGHIJKLMNOPQRSTUVWXYZ";var _28d=new Array();for(var i=0;i<_28c.length;i++){var li=null;var _290=_28c.charAt(i);if(_28b.contains(_290)){var href=tangler.util.Element.createNode("a",{attributes:[["href","javascript:void(null);"]],children:[document.createTextNode(_290)]});tangler.util.Element.getEl(href).on({"click":{fn:this.scrollToIndex,scope:this,letter:_290}});li=tangler.util.Element.createNode("li",{children:[href]});}else{li=tangler.util.Element.createNode("li",{children:[document.createTextNode(_290)]});}_28d.push(li);}var ul=tangler.util.Element.createNode("ul",{children:_28d});if(this.indexer!=null){this.indexer.dom.appendChild(ul);}else{alert("No indexer element defined!");}};this.toggleIndexer=function(show){if(this.indexer==null){return;}if(show&&!this.indexer.isVisible()){this.indexer.slideIn("l",{easing:"easeOut",duration:0.35});}else{if(!show&&this.indexer.isVisible()){this.indexer.slideOut("l",{easing:"easeOut",duration:0.35});}}};this.init=function(){this.initialized=true;var _294=this;Ext.get(this.upButton).on({"click":{fn:_294.scrollUp,scope:_294}});Ext.get(this.downButton).on({"click":{fn:_294.scrollDown,scope:_294}});this.observeEvents();this.checkAndDisable();};this.scrollUp=function(){this.scroll(this.UP);};this.scrollDown=function(){this.scroll(this.DOWN);};this.scroll=function(_295){var _296=this.findElementToShow();if(_295==this.UP&&_296.uBound.item!=null){this.scrollIntoView(_296.uBound.item);}else{if(_295==this.DOWN&&_296.lBound.item!=null){this.scrollIntoView(_296.lBound.item);}}};this.tabberClicked=function(){new Ext.util.DelayedTask(function(){this.reset();},this).delay(50);};this.getStatus=function(){var _297=this.findElementToShow();var list=Ext.get(tabber.getActiveTab()).select("UL").elements[0];if(list.length==0){list=Ext.get(tabber.getActiveTab()).select("OL").elements[0];}var _299=Ext.get(list).select("LI").elements.length;var _29a=_297.lBound.index==-1?_299:_297.lBound.index;var _29b=_29a-_297.visibleItemsCount+1;var _29c={list:list,totalItems:_299,uIndex:_29b,lIndex:_29a,scrollContent:this.scrollElement,scrollContainer:this.container};if(this.tabber!=null){_29c.activeTab=this.tabber.getActiveTabName();}return _29c;};if(typeof (tabber)!="undefined"){this.tabber=tabber;this.listItems=Ext.get(tabber.getActiveTab()).select(_267).elements;if(this.alphabetIndexdTabs.contains(tabber.getActiveTabName())){if(this.oArgs.indicesForTabs&&this.oArgs.indicesForTabs[this.tabber.getActiveTabName()]){activeList=this.oArgs.indicesForTabs[this.tabber.getActiveTabName()];}else{var _29d=Ext.get(tabber.getActiveTab()).select(_267+" div.letterIndex").elements;for(var i=0;i<_29d.length;i++){activeList.push(_29d[i].title);}}this.initIndexer(activeList);}}else{this.listItems=Ext.get(this.scrollElement).select(_267).elements;}if(this.tabber!=null){this.tabber.referer=this;this.tabber.clickFunction=this.tabber.onClick;this.tabber.onClick=function(){this.clickFunction();this.referer.tabberClicked();};}this.init();};Ext.extend(tangler.manager.Scroller,Ext.util.Observable,{observeEvents:function(){this.addEvents({"scrolled":true});this.addEvents({"bufferExhausted":true});if(this.onScroll!=null&&typeof (this.onScroll)!="undefined"){this.on("scrolled",this.onScroll);}if(this.onBufferExhausted!=null&&typeof (this.onBufferExhausted)!="undefined"){this.on("bufferExhausted",this.onBufferExhausted,this);}}});
tangler.widget.WindowWrapper=function(_e5){this._defaultWidth=550;this._defaultHeight=350;this._defaultRefreshOnClose=true;var _e6=tangler.util.Options.getOptionalArgument("width",_e5,this._defaultWidth);var _e7=tangler.util.Options.getOptionalArgument("height",_e5,this._defaultHeight);var _e8=tangler.util.Options.getOptionalArgument("closable",_e5,false);this._url=tangler.util.Options.getOptionalArgument("url",_e5,"");this._title=tangler.util.Options.getOptionalArgument("title",_e5);this._iframe=null;this._loading=tangler.util.Element.createLoadingElement("iframeLoading");this._loading.style.zIndex=1000;this._template=new Ext.Template("<div id=\"iframeDialog\" style=\"visibility:hidden;position:absolute;top:0;\">","\t<div id=\"dlgIFrame\" class=\"x-window-body\">","\t\t<iframe id=\"centerFrame\" name=\"centerFrame\" frameborder=\"no\" style=\"border:0px none;\" scrolling=\"no\" src=\"{url}\" width=\"100%\" height=\"100%\"><div class=\"loader\"><p>","       Loading...","       </p></div></iframe>","\t</div>","</div>");this._template.append(document.body,{url:this._url});if(Ext.isIE){window.frames["centerFrame"].location.href=this._url;}this._window=new tangler.widget.DialogWrapper("iframeDialog",{autoDestroy:false,resizable:false,draggable:false,width:_e6,height:_e7,autoCreate:true,closable:_e8});};tangler.widget.WindowWrapper.prototype={showWindow:function(_e9){var _ea=tangler.util.Options.getOptionalArgument("refreshOnClose",_e9,this._defaultRefreshOnClose);var _eb=tangler.util.Options.getOptionalArgument("destroyFunction",_e9,null);if(_ea){_eb=tangler.info.Page.refreshPage;}if(_eb!=null){this._window.addListener("hide",_eb);}this._window.setTitle(this._title);this._window.showDialog();},onIFrameLoaded:function(_ec){return function(){var w=tangler.util.Element.getEl(_ec);w.select("div").elements[0].style.display="none";w.select("div").elements[0].style.zIndex=0;w.select("iframe").elements[0].style.visibility="visible";w.select("iframe").elements[0].style.zIndex=1000;};},closeWindow:function(){tangler.util.Element.removeChildNodes("dlgIFrame");this._window.hide();},closeAndDestroy:function(){tangler.util.Element.removeChildNodes("dlgIFrame");this._window.closeAndDestroy(true);this._window=null;},destroy:function(){this._window.destroy(true);},resize:function(_ee,_ef){this._window.setContentSize(_ee,_ef);},destroyFunctionHandler:function(_f0,_f1){return function(_f2,win){if(win==_f0){_f1();}};}};tangler.widget.DialogWrapper=function(_f4,_f5){Ext.useShims=true;this._dialogId=_f4;this._dialog=null;var _f6=tangler.util.Options.getOptionalArgument("width",_f5,500);var _f7=tangler.util.Options.getOptionalArgument("height",_f5,300);var _f8=tangler.util.Options.getOptionalArgument("minWidth",_f5,300);var _f9=tangler.util.Options.getOptionalArgument("minHeight",_f5,300);var _fa=tangler.util.Options.getOptionalArgument("underlay",_f5,"none");var _fb=tangler.util.Options.getOptionalArgument("resizable",_f5,true);var _fc=tangler.util.Options.getOptionalArgument("draggable",_f5,true);var _fd=tangler.util.Options.getOptionalArgument("modal",_f5,true);var _fe=tangler.util.Options.getOptionalArgument("closable",_f5,false);var _ff=tangler.util.Options.getOptionalArgument("BasicDialog",_f5,true);var _100=tangler.util.Options.getOptionalArgument("autoCreate",_f5,false);var _101=tangler.util.Options.getOptionalArgument("autoHeight",_f5,false);var _102=tangler.util.Options.getOptionalArgument("shadow",_f5,true);var _103=tangler.util.Options.getOptionalArgument("acceptLabel",_f5,null);var _104=tangler.util.Options.getOptionalArgument("declineLabel",_f5,null);var _105=tangler.util.Options.getOptionalArgument("acceptFunction",_f5,null);var _106=tangler.util.Options.getOptionalArgument("declineFunction",_f5,null);var _107=tangler.util.Options.getOptionalArgument("defaultFocus",_f5,null);if(_103){if(_105==null){alert("Please set acceptFunction");return;}}if(_104){if(_106==null){alert("Please set declineFunction");return;}}var _108=tangler.util.Helper.getBrowserSize();if(_f6>_108.width){_f6=_108.width-50;}if(_f7>_108.height){_f7=_108.height-50;}var _109=null;var _10a=[];if(_103){_10a[0]={text:_103,handler:_105,id:"acceptButton"};}if(_104){_10a[1]={text:_104,handler:_106,id:"declineButton"};}if(_107&&_107==_103){_109="acceptButton";}else{if(_107&&_107==_104){_109="declineButton";}}if(!_107){this._dialog=new Ext.Window({applyTo:_f4,width:_f6,height:_f7,minWidth:_f8,minHeight:_f9,constraintoviewport:true,underlay:_fa,resizable:false,draggable:false,modal:_fd,shim:true,collapsible:false,closable:_fe,fixedCenter:true,autoHeight:_101,shadow:_102,buttons:_10a});}else{this._dialog=new Ext.Window({applyTo:_f4,width:_f6,height:_f7,minWidth:_f8,minHeight:_f9,constraintoviewport:true,underlay:_fa,resizable:false,draggable:false,modal:_fd,shim:true,collapsible:false,closable:_fe,fixedCenter:true,autoHeight:_101,shadow:_102,buttons:_10a,defaultButton:_109});}if(_103){this._dialog.addButton({text:_103,handler:_105});}if(_104){this._dialog.addButton({text:_104,handler:_106});}this._dialog.anchorTo(document.body,"c-c?");this._dialog.on("show",function(id){var div=tangler.util.Element.getEl(id.el);div.setStyle("overflow","auto");var text=div.select(".ext-mb-textarea",true);if(!text.item(0)){text=div.select(".ext-mb-text",true);}if(text.item(0)){text.item(0).dom.select();}},this._dialogId);};tangler.widget.DialogWrapper.prototype={getDialog:function(){return this._dialog;},setContentSize:function(_10e,_10f){if(this._dialog==null){return;}this._dialog.resizeTo(_10e,_10f);this._dialog.setContentSize(_10e,_10f);this._dialog.center();},showDialog:function(_110){if(this._dialog==null){return;}var elem=tangler.util.Options.getOptionalArgument("element",_110);var _112=tangler.util.Options.getOptionalArgument("anchor",_110,"");if(elem){this._dialog.alignTo(elem,_112);}var _113=tangler.util.Helper.getBrowserSize();if(this._dialog.maximumWidth>_113.width){this._dialog.maximumWidth=(_113.width-50);}this._dialog.show();},isVisible:function(){return (this._dialog!=null&&this._dialog.isVisible());},closeAndDestroy:function(_114){if(this._dialog==null){return;}this._dialog.hide();this._dialog.destroy(_114);},destroy:function(_115){this._dialog.destroy(_115);},hide:function(){if(this._dialog==null){return;}this._dialog.hide();},addListener:function(_116,fn,_118){if(this._dialog==null){return;}this._dialog.on(_116,fn,this,_118);},setTitle:function(_119){if(this._dialog==null){return;}this._dialog.setTitle(_119);}};
tangler.manager.AutoFillTextBox=function(){var _773=new Array();var _774="Please enter a value";var _775="text";var _776="inactiveField";var _777=false;function help(){alert("AutoFillTextBox prompts the users to enter a valid value into the text fields.");}function initAndAssignEvents(_778){var _779=Ext.get(_778.id);if(tangler.util.StringUtil.isEmpty(_779.dom.value)){if(!tangler.util.StringUtil.isEmpty(_779.dom.title)){_779.dom.value=_779.dom.title;}else{if(!tangler.util.StringUtil.isEmpty(_778.value)){_779.dom.value=_778.value;}else{alert("Please provide a title or a default init-value for the edit box - '"+_778.id+"'");return;}}}_779.addClass(_776);_779.on("focus",function(){var _77a=_778.value;if(tangler.util.StringUtil.isEmpty(_77a)&&!tangler.util.StringUtil.isEmpty(arguments[1].title)){_77a=arguments[1].title;}else{_77a=_774;}onFocus(_77a,arguments[1]);},_778.value,_774,{preventDefault:true});_779.on("blur",function(){var _77b=_778.value;if(tangler.util.StringUtil.isEmpty(_77b)&&!tangler.util.StringUtil.isEmpty(arguments[1].title)){_77b=arguments[1].title;}else{_77b=_774;}onBlur(_77b,arguments[1]);},_778.value,_774,{preventDefault:true});}function onFocus(_77c,_77d){if(_77d.value==_77c){_77d.value="";}Ext.get(_77d).removeClass(_776);}function onBlur(_77e,_77f){if(_77f.value==""){_77f.value=_77e;Ext.get(_77f).addClass(_776);}}return {init:function(_780){_775=tangler.util.Options.getOptionalArgument("classNormal",_780,"text");_776=tangler.util.Options.getOptionalArgument("inactiveClass",_780,"inactiveField");_777=tangler.util.Options.getOptionalArgument("removeTitle",_780,false);var _781=tangler.util.Options.getOptionalArgument("editboxes",_780,null);if(_781!=null){for(var i=0;i<_781.length;i++){var node=_781[i];_773.push(node);initAndAssignEvents(node);}}}};}();
tangler.domain.TopicElementFlyweight=function(){var _68a=null;var _68b=null;var _68c=null;var _68d=null;var _68e=null;var _68f=false;var _690=tangler.util.Element;var _691=tangler.util.Options;var _692=new Ext.Template("<div id=\"{id}\" class=\"listBox\">","<div class=\"listBoxDetails\">","<div class=\"avatar\">","<a href=\"{authorURL}\"><img src=\"{avatarURL}\"/></a>","</div>","<div class=\"listBoxSubDetails\">","<div class=\"listBoxSubDetailTitle\">","<a class=\"listTopicName\" href=\"{topicURL}\">{topicName}</a>","</div>","<div class=\"listBoxSubDetailSubTitle\">","By: <span><a href=\"{authorURL}\">{authorScreenName}</a></span> - {sincePeriod}","</div>","</div>","<a href=\"{topicURL}\" class=\"topicView\">View</a>","</div>","<span style=\"visibility: hidden; display: none;\" class=\"topicData\">{topicData}</span>","<div class=\"listBoxClose\"/>","</div>");_692.compile();function createTopicElement(_693){var id=tangler.util.Options.getOptionalArgument("id",_693);if(id==null){id=_68a.globalId;}var _695=tangler.util.Options.getOptionalArgument("name",_693);if(_695==null){_695=_68a.name;}_695=tangler.util.Helper.escapeHtml(_695);var _696=tangler.util.Options.getOptionalArgument("onclick",_693,"");var _697=tangler.util.Options.getOptionalArgument("url",_693,"#");var _698="";var _699="";var _69a="";var _69b="";var _69c="";var _69d="#";var _69e="";var _69f="";var _6a0="";if(_68a){var _6a1=_68a.group.shortName?_68a.group.shortName:("id-"+_68a.group.globalId);_697=tangler.util.Options.getOptionalArgument("url",_693,tangler.info.Page.wrapContextUrl("/conversation/"+id));_698=tangler.domain.TopicElementFlyweight.getTopicLastAction();_699=tangler.util.compare.isDateEqual(_68a.lastModified,_68a.created)?0:1;_69a=tangler.util.formatter.formatElapsedDate(_698);_69b=tangler.util.formatter.formatDateTime(_698);_6a0=tangler.util.formatter.showAbstractTime(_698)+" ago";_69d=tangler.info.Page.wrapContextUrl("/user/"+_68a.author.screenName);_69c=tangler.util.Helper.escapeHtml(_68a.author.screenName);if(_68a.author.avatar==null){_69e="/images/defaulticons/contact_36.png";}else{_69e=tangler.util.Avatar.getAvatarUrl(_68a.author.avatar,{height:36,width:36,avatarType:"user"});}}var li=_690.createNode("li");var div=_692.append(li,{id:"rt-"+id,avatarURL:_69e,topicURL:_697,topicName:_695,authorURL:_69d,authorScreenName:_69c,sincePeriod:_6a0,topicData:_69b});return li;}function processTopicElementRequest(_6a4){var _6a5=tangler.util.Options.getOptionalArgument("fromCreate",_6a4,false);var _6a6=tangler.util.Options.getOptionalArgument("topicClickCallback",_6a4,null);var _6a7=tangler.info.Page.wrapContextUrl("/forum/"+_68a.group.globalId+"/topic/"+_68a.globalId);return createTopicElement({onclick:_6a6});}return {setContext:function(_6a8,_6a9){_68a=_6a8;_68c=_6a9;},setContextTopicId:function(_6aa){_68e=_6aa;},getTopicLastAction:function(){return (_68d&&_68d.maxLastModifiedMessage)?_68d.maxLastModifiedMessage:_68a.lastModified;},addOrUpdateTopic:function(_6ab){var _6ac=_691.getOptionalArgument("prefix",_6ab,"rt-");var _6ad=_690.getEl(_6ac+_68a.globalId);if(_6ad){tangler.domain.TopicElementFlyweight.updateTopic(_6ab);return 0;}else{tangler.domain.TopicElementFlyweight.addTopic(_6ab);return 1;}},addTopic:function(_6ae){var _6af=processTopicElementRequest(_6ae);var dom=tangler.util.Options.getOptionalArgument("dom",_6ae,null);var _6b1=tangler.util.Options.getOptionalArgument("insertFirst",_6ae,false);if(_6b1){var _6b2=Ext.get(_690.getEl(dom.select("li").elements[0])).dom;_690.insertBefore(dom,_6af,_6b2);}else{dom.appendChild(_6af);}},updateTopic:function(_6b3){var _6b4=processTopicElementRequest(_6b3);var _6b5=_690.getEl("tList-"+_68a.globalId);_6b5.dom.parentNode.parentNode.replaceChild(_6b4,_6b5.dom.parentNode);if(tangler.info.Session.getTopicId()==_68a.globalId){tangler.util.Helper.setSelectedLink("topicList","tList-"+_68a.globalId);}},isElementDeleted:function(){return (_68c!=null&&_68c.operation=="DELETE");},isElementModified:function(){return (_68c!=null&&_68c.operation=="MODIFY");}};}();
tangler.manager.TopicList=function(){var _2b=null;var _2c=tangler.util.Element;var _2d=tangler.util.Options;var _2e=tangler.manager.GroupState;var _2f=tangler.view.TopicLifecycleConvertor;var _30=tangler.domain.TopicElementFlyweight;var _31=null;var _32=null;var _33=null;var _34=false;var _35=false;var _36=false;var _37=0;var _38=0;var _39=0;var _3a=null;var _3b=new Ext.Template("<div>TEST</div>");var _3c=function(){_3c.superclass.constructor.call(this);_2b=this;this.addEvents({"topicClicked":true});};Ext.extend(_3c,Ext.util.Observable,{getBodyTemplate:function(){return _topicListItemTemplate;},init:function(_3d){var _3e=tangler.util.Options.getOptionalArgument("topicList",_3d);_33=_2c.getEl(_3e);_36=true;},setTopicActiveDate:function(_3f,_40){if(_3f==_2e.getTopicToOpen()){return;}if(_31==null||tangler.util.compare.isDateLesser(_40,_31)){_31=_40;}if(_32==null||tangler.util.compare.isDateGreater(_40,_32)){_32=_40;}},loadRecentTopics:function(_41){var _42=_41.callback;if(typeof (_42)!="undefined"&&_42!=null){_3a=_42;}DWRTopicHandler.getRecentTopicsBucket(null,{callback:_2b._addTopicFromBucket,timeout:20000,errorHandler:_2b._getNewTopicsBucketError});},removeTopic:function(_43){var _44=_2c.getEl(_43);if(_44!=null){_2c.getEl(_44.dom.parentNode).remove();}else{return;}var ul=_2c.getEl("topicList").select("ul").elements[0];if(_2c.getEl(ul).select("li").elements.length==0){return false;}_2b._decrementTopicCount();return true;},onTopicListScrolled:function(){if(_33==null){return;}if(_35){return;}if(_33.dom.scrollTop>_39){_35=true;var _46=_33.dom.scrollHeight;var _47=Math.abs(_33.dom.clientHeight*0.2);var pos=_33.dom.scrollTop+_33.dom.clientHeight;if((pos+_47)>=_46){_2c.getEl("topicListFooter").dom.innerHTML=RETRIEVING_TOPICS;_2c.showElement("topicListFooter");DWRGroupHandler.getGroupTopicBucket(tangler.info.Session.getForumId(),null,_31,{callback:_2b._addTopicFromBucket,timeout:20000,errorHandler:_2b._getGroupTopicBucketError});}else{_35=false;}}_39=_33.dom.scrollTop;},onTopicClicked:function(){if(_2c.getEl("tList-new")!=null){return;}_2c.removeChildNodes("topicMessageList");_30.setContext();_30.createTemporaryNewTopic();_2b.fireEvent("topicCreateClicked");},onTopicEvent:function(_49){_2b._addOrUpdateTopic(_49.detail,{dom:_33,insertFirst:true});},_onShortPoll:function(){if(!tangler.info.Session.getSecurity().isAuthenticated()){return;}if(_32){DWRGroupHandler.updateTopicBucket(tangler.info.Session.getGroupId(),_32,{callback:_2b._updateTopicBucket});}},_updateTopicBucket:function(_4a){var dom=document.createDocumentFragment();Ext.each(_4a,function(_4c,_4d,_4e){_2b._addOrUpdateTopic(_4c,{dom:dom});});var ul=_33.select("ul").elements[0];var _50=_2c.getEl(ul).select("li").elements;if(_50==null||_50.length==0){ul.appendChild(dom);}else{ul.insertBefore(dom,_50[0]);}},_incrementTopicCount:function(){_38=_2e.getTopicCount()+1;_2e.setTopicCount(_38);var _51=_2c.getEl("topicListContainer").select("ul").elements[0];var _52=_2c.getEl(_51).select("li").elements.length;_2b._setDisplayedTopicCount(_52);},_decrementTopicCount:function(){_38=_2e.getTopicCount()-1;if(_38<0){_38=0;}_2e.setTopicCount(_38);var _53=_2c.getEl("topicListContainer").select("ul").elements[0];if(_53){var _54=_2c.getEl(_53).select("li").elements.length;_2b._setDisplayedTopicCount(_54);}else{_2b._setDisplayedTopicCount(0);}},_addOrUpdateTopic:function(_55,_56){var dom=_2d.getOptionalArgument("dom",_56,null);var _58=_2d.getOptionalArgument("insertFirst",_56,false);_30.setContext(_55.topicDetail,null);_30.addOrUpdateTopic({topicClickCallback:"tangler.manager.TopicList.onTopicSelected",dom:dom,insertFirst:_58});},_addTopicFromBucket:function(_59){if(!_34){_34=true;if(_59.length==0){return;}}Ext.each(_59,function(_5a,_5b,_5c){_2b._addOrUpdateTopic(_5a,{dom:_33});});if(_3a!=null){_3a();}return;},_getGroupTopicBucketError:function(_5d){_retreivingTopics=false;var _5e=_2c.getEl("topicListContainer").select("ul").elements[0];var _5f=_2c.getEl(_5e).select("li").elements.length;if(_5f>0){_2b._setDisplayedTopicCount(_5f);}else{_2c.getEl("topicListFooter").dom.innerHTML="<a href='#' onclick='tangler.manager.TopicList.loadTopicList();return false;'>"+RETRY+"</a>";}},_getNewTopicsBucketError:function(_60){_retreivingTopics=false;var _61=_2c.getEl("recentConversationsList").select("li").elements;var _62=_61.length;if(_62>0){_2b._setDisplayedTopicCount(_62);}else{_2c.getEl("loader-element").dom.innerHTML="<a href='javascript:void(null);' onclick='tangler.manager.TopicList.loadRecentTopics({});return false;'>Retry</a>";}},_setDisplayedTopicCount:function(_63){_37=_63;if(_63==0){_2c.getEl("topicListFooter").dom.innerHTML="";}else{var _64=SHOWING_TOPICS.replace("{0}",_37).replace("{1}",_2e.getTopicCount());_2c.getEl("topicListFooter").dom.innerHTML=_64;}_2c.showElement("topicListFooter");},_setTopicSelected:function(_65){_2b.removeTopic("new");_2b._setTopicMessageCount(_65,0);_2b._scrollToTopic(_65);_2e.setTopicIdViewed(_65);tangler.util.Helper.setSelectedLink("topicList","tList-"+_65);},_setTopicMessageCount:function(_66,_67){var _68=_2c.getEl("topicUnreadCount-"+_66);if(_2c.getEl("tList-"+_66)!=null){if(_2c.getEl("tList-"+_66).dom.className.indexOf("selected")!=-1){return;}var _69=_2c.getEl("tList-"+_66).dom.className.indexOf("selected")!=-1?"selected":"";if(_67>0){_69=_69+" newmessage";}_2c.getEl("tList-"+_66).dom.className=_69;}if(_68){_2c.removeChildNodes("topicUnreadCount-"+_66);if(_67>0){_68.dom.appendChild(document.createTextNode(" ("+_67+")"));}}},_clearAllWatchedTopics:function(){var _6a=_2c.getEl("topicList");if(_6a==null){return;}var ul=_6a.select("ul").elements[0];var _6c=_2c.getEl(ul).select("li").elements;Ext.each(_6c,function(_6d,_6e,_6f){var a=_2c.getEl(_6d).select("a").elements[0];var sp=new Array();sp=a.id.split("tList-");_30.setContextTopicId(sp[1]);_30.toggleWatchedStar(false);});},_onGroupWatchedChanged:function(_72){_2b._clearAllWatchedTopics();},_onTopicWatchedChanged:function(_73){_30.setContextTopicId(tangler.info.Session.getTopicId());if(!_2e.getGroupWatched()||!_2e.getGroupSubscribed()){_30.toggleWatchedStar(_2e.getTopicWatched());}else{_30.toggleWatchedStar(false);}},_scrollToTopic:function(_74){tangler.util.Helper.scrollElementTo("tList-"+_74,"topicList");}});return new _3c();}();
tangler.manager.HomePage=function(){var _6d5=tangler.util.Options;var _6d6=tangler.manager.TopicList;var _6d7=tangler.util.Element;var _6d8=tangler.manager.Comms;var _6d9=tangler.info.Page;var _6da=tangler.util.Helper;var _6db;var _6dc;var _6dd;var _6de;var _6df=false;var _6e0=false;var _6e1=null;var _6e2=0;var _6e3=new Ext.Template("X");function renderNewTopics(){var _6e4="recentConversations";var el=createNewTopicsSection(_6e4,"New Conversations");var _6e6=_6d7.getEl(_6de);if(!_6e6){return;}Ext.get(el).insertAfter(_6e6);_6d6.init({topicList:_6e4+"List"});_6e0=true;}function createNewTopicsSection(_6e7,_6e8){var _6e9=_6d7.createNode("div",{attributes:[["id","loading-dlg"],["class","inline-dlg"]],children:[_6d7.createNode("div",{attributes:[["id","loader-element"]]})]});var div=_6d7.createNode("div",{attributes:[["id",_6e7],["title",_6e8]],children:[_6e9,_6d7.createNode("ul",{attributes:[["id",_6e7+"List"],["class","listBoxList"]]})]});div.className="tabbertab tabbertabhide";return div;}function onNewTopicsClicked(){if(!_6df){if(_6e1==null){_6e1=_6d7.getEl("loading-dlg");}_6d7.getEl("loader-element").appendChild(_6d7.createLoadingElement());_6d6.loadRecentTopics({callback:tangler.manager.HomePage.afterTopicsLoaded});_6d8.longHeartbeat();_6df=true;}}function getId(id,_6ec){var sp=new Array();sp=id.split(_6ec+"-");return sp[1];}function onTopicClicked(_6ee){return function(){tangler.manager.TopicList.onTopicSelected(_6ee);};}return {initHomeLayout:function(_6ef){_6d9.setView(tangler.info.ViewType.Welcome);Ext.QuickTips.init();_6de=_6d5.getOptionalArgument("insertAfter",_6ef,"theBuzz");_6e2=tangler.util.Options.getOptionalArgument("topicCount",_6ef,0);_6db=_6d5.getOptionalArgument("initialTabView",_6ef,"newtopics");if(_6db=="newtopics"){activate="New Conversations";}if(_6db=="buzz"){activate="The Buzz";}if(_6db=="friends"){activate="My Friends";}if(_6db=="groupies"){activate="My Groupies";}},showNewTopics:function(){if(!_6e0){renderNewTopics();}onNewTopicsClicked();},afterTopicsLoaded:function(){_6e1.remove();ellipsiseTopics();},onTabInit:function(){},onTabClicked:function(_6f0){_6f0.getActiveTabIndex();}};}();
tangler.manager.Conversations=function(){var _663=null;var _664=tangler.util.Element;var _665=tangler.util.Options;var _666=false;var _667="yyyy-MM-dd HH:mm:ss";var _668=new Ext.Template("<div id=\"ft-{topicGId}\" class=\"listBox\">","\t<div class=\"listBoxDetails\">","\t\t<div class=\"listBoxSubDetails\">","\t\t\t<div class=\"listBoxSubDetailTitle\">","\t\t\t\t<a class=\"listTopicName\" href=\"/conversation/{topicGId}\">{topicName}</a>","\t\t\t</div>","\t\t\t<div class=\"listBoxSubDetailSubTitle\">","\t\t\t  {topicSummary}","\t\t    </div>","\t    </div>","\t\t<a href=\"/conversation/{topicGId}\" class=\"topicView\">View</a>","\t</div>","   <span class=\"topicData\" style=\"visibility:hidden;display:none\">{topicData}</span>","\t<div class=\"listBoxClose\"/>","</div>");var _669=new Ext.Template("<div id=\"rt-{topicGId}\" class=\"listBox\">","       <div class=\"listBoxDetails\">","\t\t\t<div class=\"avatar\">","\t\t\t\t<a href=\"/user/{author}\">","\t\t\t\t\t<img src=\"{avatarUrl}\"/>","\t\t\t\t</a>","\t\t\t</div>","\t\t\t<div class=\"listBoxSubDetails\">","\t\t\t\t<div class=\"listBoxSubDetailTitle\">","\t\t\t\t\t<a class=\"listTopicName\" href=\"/conversation/{topicGId}\">{topicName}</a>","\t\t\t\t</div>","\t\t\t\t<div class=\"listBoxSubDetailSubTitle\">","\t\t\t\t\tBy:","\t\t\t\t\t<span>","\t\t\t\t\t\t<a href=\"/user/{author}\">{author}</a>","\t\t\t\t\t</span>","\t\t\t\t\t- {createdOn} ago","\t\t\t\t</div>","\t\t\t</div>","\t\t\t<a href=\"/conversation/{topicGId}\" class=\"topicView\">View</a>","\t\t</div>","\t\t<span style=\"visibility: hidden; display: none;\" class=\"topicData\">{topicCreateDate}</span>","\t\t<div class=\"listBoxClose\"/>","</div>");_668.compile();_669.compile();var _66a=function(){_66a.superclass.constructor.call(this);_663=this;};Ext.extend(_66a,Ext.util.Observable,{newConversationsFetched:function(_66b,_66c){for(var i=0;i<_66b.length;i++){var _66e=_66b[i].topicDetail.globalId;var _66f=tangler.util.Avatar.getAvatarUrl(_66b[i].topicDetail.author.avatar,{height:36,width:36,avatarType:"user"});var _670=_66b[i].topicDetail.name;var _671=_66b[i].topicDetail.author.screenName;var _672=tangler.util.formatter.showAbstractTime(_66b[i].topicDetail.created);var _673=formatDate(_66b[i].topicDetail.created,_667);var li=tangler.util.Element.createNode("li");_669.append(li,{topicGId:_66e,avatarUrl:_66f,topicName:_670,author:_671,createdOn:_672,topicCreateDate:_673});tangler.util.Element.getEl("recentConversationList").dom.appendChild(li);}document.getElementById("scrollStatusMsg").innerHTML="";_66c.checkForNewEntries();_66c.checkAndDisable();},newConversationsFetchedError:function(data){document.getElementById("scrollStatusMsg").innerHTML="";},myConversationsFetched:function(_676,_677){var _678=_676.list;for(var i=0;i<_678.length;i++){var _67a=_678[i].topicDetail.globalId;var _67b=_678[i].topicDetail.name;var _676="";if(_678[i].totalMessages==0){_676="No messages posted";}else{_676="Last msg: "+"<span>"+tangler.util.formatter.showAbstractTime(_678[i].lastMessagePosted)+"</span>"+" - Total msgs: "+"<span>"+_678[i].totalMessages+"</span>"+" - Contributors: "+"<span>"+_678[i].contributors+"</span>";}var _67c=formatDate(_678[i].topicDetail.created,_667);var _67d=_678[i].topicDetail.author.screenName;var _67e=tangler.util.formatter.showAbstractTime(_678[i].topicDetail.created);var _67f=formatDate(_678[i].topicDetail.created,_667);var li=tangler.util.Element.createNode("li");_668.append(li,{topicGId:_67a,topicName:_67b,topicSummary:_676,topicData:_67f});tangler.util.Element.getEl("conversationList").dom.appendChild(li);}document.getElementById("scrollStatusMsg").innerHTML="";_677.checkForNewEntries();_677.checkAndDisable();},myConversationsFetchedError:function(data){document.getElementById("scrollStatusMsg").innerHTML="";},fetchContents:function(_682,_683){var _684=_683.tabber.getActiveTabName();var _685=Ext.get(_683.tabber.getActiveTab()).select("span.topicData").elements;var _686=new Date();if(_685.length>0){var _687=_685[_685.length-1].innerHTML;_686=new Date(getDateFromFormat(_687,_667));}if(_684=="Conversations"){document.getElementById("scrollStatusMsg").innerHTML="fetching more topics...";DWRUserHandler.getUserConversationsBefore(_682,_686,{callback:function(_688){_663.myConversationsFetched(_688,_683);},errorHandler:_663.myConversationsFetchedError});}else{if(_684=="New Conversations"){document.getElementById("scrollStatusMsg").innerHTML="fetching more topics...";DWRTopicHandler.getRecentTopicsBucket(_686,{callback:function(_689){_663.newConversationsFetched(_689,_683);},errorHandler:_663.newConversationsFetchedError});}}}});return new _66a();}();
function hookEvent(element, eventName, callback)
{
  if(typeof(element) == "string")
    element = document.getElementById(element);
  if(element == null)
    return;
  if(element.addEventListener)
  {
    element.addEventListener(eventName, callback, false);
  }
  else if(element.attachEvent)
    element.attachEvent("on" + eventName, callback);
}

function unhookEvent(element, eventName, callback)
{
  if(typeof(element) == "string")
    element = document.getElementById(element);
  if(element == null)
    return;
  if(element.removeEventListener)
    element.removeEventListener(eventName, callback, false);
  else if(element.detachEvent)
    element.detachEvent("on" + eventName, callback);
}

function getEventTarget(e)
{
  e = e ? e : window.event;
  return e.target ? e.target : e.srcElement;
}

function cancelEvent(e)
{
  e = e ? e : window.event;
  if(e.stopPropagation)
    e.stopPropagation();
  if(e.preventDefault)
    e.preventDefault();
  e.cancelBubble = true;
  e.cancel = true;
  e.returnValue = false;
  return false;
}

function SpinControlAcceleration(increment, milliseconds)
{
  increment = parseFloat(increment);
  if(isNaN(increment) || increment < 0)
    increment = 0;
  
  milliseconds = parseInt(milliseconds);
  if(isNaN(milliseconds) || milliseconds < 0)
    milliseconds = 0;
    
  this.GetIncrement = function()
  { return increment; }
  
  this.GetMilliseconds = function()
  { return milliseconds; }    
}

function SpinControlAccelerationCollection()
{
  var _array = new Array();
  
  this.GetCount = function()
  { return _array.length; }
  
  this.GetIndex = function(index)
  {
    if(index < 0 || index >= _array.length)
      return null;
    
    return _array[index];
  }
  
  this.RemoveIndex = function(index)
  {
    if(index < 0 || index >= _array.length)
      return;
     
    newArray = new Array(); 
    for(var i=0; i<_array.length; i++)
    {
      if(i == index)
        continue;
      newArray.push(_array[i]);
    }
    _array = newArray;
  }
  
  this.Clear = function()
  {
    _array = new Array();
  }
  
  this.Add = function(spa)
  {
    if(spa.constructor != SpinControlAcceleration)
      return;
      
    if(_array.length == 0)
    {
      _array.push(spa);
      return;
    }
    
    var newSec = spa.GetMilliseconds();
    if(newSec > _array[_array.length-1].GetMilliseconds())
    { 
      _array.push(spa);
      return;
    }
    
    var added = false;
    var newArray = new Array();    
    var indexSec;
    for(var i=0; i<_array.length; i++)
    {
      if(added)
      {
        newArray.push(_array[i]);
      }
      else 
      {
        indexSec = _array[i].GetMilliseconds();
        if(indexSec < newSec)
        {
          newArray.push(_array[i]);        
        }
        else if(indexSec == newSec)
        {
          newArray.push(spa);
          added = true;
        }
        else
        {
          newArray.push(_array[i]);
          newArray.push(spa);
          added = true;
        }
      }
    }
    _array = newArray;
    return;     
  }
}

function SpinControl()
{
  var _this = this;
  
  var _accelerationCollection = new SpinControlAccelerationCollection();
  var _callbackArray = new Array();
  var _currentValue = 1;
  var _maximumVal = 100;
  var _minimumVal = 0;
  var _increment = 1;
  var _width = 50;
  
  var _running = 0;
  var _interval = -1;  
  var _timeStart = 0;
  
  var _bodyEventHooked = false;
  
  var _container = document.createElement("DIV");
  _container.className = 'spinContainer';
  
  var _leftEdge = document.createElement("DIV");
  _leftEdge.className = 'spinLeftRightEdge';
  _leftEdge.style.left = '0px';
  
  var _bottomEdge = document.createElement("DIV");
  _bottomEdge.className = 'spinTopBottomEdge';
  _bottomEdge.style.top = '19px';
  
  var _topEdge = document.createElement("DIV");
  _topEdge.className = 'spinTopBottomEdge';
  _topEdge.style.top = '0px';
  
  var _rightEdge = document.createElement("DIV");
  _rightEdge.className = 'spinLeftRightEdge';
  _rightEdge.style.right = '0px';
  
  var _textBox = document.createElement("INPUT");
  _textBox.type = 'hidden';
  _textBox.className = 'spinInput';
  _textBox.value = _currentValue;
  
  var _upButton = document.createElement("DIV");
  _upButton.className = 'spinUpBtn';
  
  var _downButton = document.createElement("DIV");
  _downButton.className = 'spinDownBtn';
  
  /*
   * Because IE 6 and lower don't support the transparent png background 
   * mask that we use for the buttons.
   * So we use a regular old gif instead.
   * This means that, sadly, the button coloring does not work in IE6 and lower.
   */
  var canChangeBtnColors = true;
  if(document.body.filters)
  {
    var arVersion = navigator.appVersion.split("MSIE");
    var version = parseFloat(arVersion[1]);
    if(version < 7)
    {
      canChangeBtnColors = false;
      _downButton.style.backgroundImage = 'url(spin_control_buttons.gif)';
      _upButton.style.backgroundImage = 'url(spin_control_buttons.gif)';
      _downButton.style.backgroundColor = '#FFFFFF';
      _upButton.style.backgroundColor = '#FFFFFF';
    }
  }
  
  _container.appendChild(_leftEdge);
  _container.appendChild(_bottomEdge);
  _container.appendChild(_topEdge);
  _container.appendChild(_rightEdge);
  _container.appendChild(_textBox);
  _container.appendChild(_upButton);
  _container.appendChild(_downButton);  
  
  function Run()
  {
    if(_running == 0)
      return;
    
    var elapsed = new Date().getTime() - _timeStart;
    var inc = _increment;
    
    if(_accelerationCollection.GetCount() != 0)
    {
      inc = 0;
      for(var i = 0; i<_accelerationCollection.GetCount(); i++)
      {
        if(elapsed < _accelerationCollection.GetIndex(i).GetMilliseconds())
          break;
        
        inc = _accelerationCollection.GetIndex(i).GetIncrement();
      }    
    }
    else if(elapsed < 600)
    {
      return;
    }
    
    DoChange(inc);
  }
  
  function CancelRunning()
  {
    _running = 0;
    if(_interval != -1)
    {
      clearInterval(_interval);
      _interval = -1;
    }
  }
  
  function DoChange(inc)
  {
    var newVal = _currentValue + inc * _running;
    UpdateCurrentValue(newVal);
  }
  
  function StartRunning(newState)
  {
    if(_running != 0)
      CancelRunning();

    _running = newState;
  
    DoChange(_increment);
    
    _timeStart = new Date().getTime();
    _interval = setInterval(Run, 150);
  }
  
  function UpdateCurrentValue(newVal)
  {
    /*if(newVal <_minimumVal)
      newVal = _minimumVal;
    if(newVal > _maximumVal)
      newVal = _maximumVal;*/
  
    newVal = Math.round(1000*newVal)/1000;
    
    if(newVal < _textBox.value)
    	scroller.scrollDown();
    else
    	scroller.scrollUp();
    
    _textBox.value = newVal;
    if(newVal == _currentValue)
      return;
    
    _currentValue = newVal;
    
    for(var i=0; i<_callbackArray.length; i++)
      _callbackArray[i](_this, _currentValue);
  }
  
  function UpPress(e)
  {
    _upButton.className = 'spinUpBtnPress';
    _downButton.className = 'spinDownBtn';
    StartRunning(1);
    _textBox.focus();
    return cancelEvent(e);
  }
  
  function DownPress(e)
  {
    _upButton.className = 'spinUpBtn';
    _downButton.className = 'spinDownBtnPress';
    StartRunning(-1);
    _textBox.focus();
    return cancelEvent(e);
  }
 
  function UpHover(e)
  {
    if(!_bodyEventHooked)
      hookEvent(document.body, 'mouseover', ClearBtns);
      
    _upButton.className = 'spinUpBtnHover';
    _downButton.className = 'spinDownBtn';
    CancelRunning();
    return cancelEvent(e);
  }
  
  function DownHover(e)
  {
    if(!_bodyEventHooked)
      hookEvent(document.body, 'mouseover', ClearBtns);
      
    _upButton.className = 'spinUpBtn';
    _downButton.className = 'spinDownBtnHover';
    CancelRunning();
    return cancelEvent(e);
  }
  
  function ClearBtns(e)
  {
    var target = getEventTarget(e);
    if(target == _upButton || target == _downButton)
      return;
    _upButton.className = 'spinUpBtn';
    _downButton.className = 'spinDownBtn';
    CancelRunning();
    
    if(_bodyEventHooked)
    {
      unhookEvent(document.body, 'mouseover', ClearBtns);
      _bodyEventHooked = false;
    }
    return cancelEvent(e);
  }
  
  function BoxChange()
  {
    var val = parseFloat(_textBox.value);
    if(isNaN(val))
      val = _currentValue;
    
    UpdateCurrentValue(val);
  }
  
  function MouseWheel(e)
  {
    e = e ? e : window.event;
    var movement = e.detail ? e.detail / -3 : e.wheelDelta/120;
    UpdateCurrentValue(_currentValue + _increment * movement);
    return cancelEvent(e);
  }
  
  function TextFocused(e)
  {
    hookEvent(window, 'DOMMouseScroll', MouseWheel);
    hookEvent(document, 'mousewheel', MouseWheel);
    return cancelEvent(e);
  }
  
  function TextBlur(e)
  {
    unhookEvent(window, 'DOMMouseScroll', MouseWheel);
    unhookEvent(document, 'mousewheel', MouseWheel);
    return cancelEvent(e);
  }
  
  this.StartListening = function()
  {
    hookEvent(document.getElementById('scrollSet'), 'mouseover', TextFocused);
    document.getElementById('scrollSet').onmouseout = function(){
    	unhookEvent(window, 'DOMMouseScroll', MouseWheel);
    	unhookEvent(document, 'mousewheel', MouseWheel);
    }
  }
   
  this.StopListening = function()
  {
    unhookEvent(_upButton, 'mousedown', UpPress); 
    unhookEvent(_upButton, 'mouseup', UpHover);
    unhookEvent(_upButton, 'mouseover', UpHover);
    
    unhookEvent(_downButton, 'mousedown', DownPress); 
    unhookEvent(_downButton, 'mouseup', DownHover);
    unhookEvent(_downButton, 'mouseover', DownHover);
    
    unhookEvent(_textBox, 'change', BoxChange);
    unhookEvent(_textBox, 'focus', TextFocused);
    unhookEvent(_textBox, 'blur', TextBlur);
    
    
    if(_bodyEventHooked)
    {
      unhookEvent(document.body, 'mouseover', ClearBtns);
      _bodyEventHooked = false;
    }
  }
  
  this.SetMaxValue = function(value)
  {
     value = parseFloat(value);
     if(isNaN(value))
       value = 1;
     _maximumVal = value;
       
    UpdateCurrentValue(_currentValue);
  }
   
  this.SetMinValue = function(value)
  {
     value = parseFloat(value);
     if(isNaN(value))
       value = 0;
     _minimumVal = value;
     
    UpdateCurrentValue(_currentValue);
  }
  
  this.SetCurrentValue = function(value)
  {
    value = parseFloat(value);
    if(isNaN(value))
      value = 0;
     
    UpdateCurrentValue(value);
  }
  
  this.SetWidth = function(value)
  {
    value = parseInt(value);
    if(isNaN(value) || value < 25)
      value = 25;
      
    _width = value;
    
    _container.style.width = _width + 'px';
    _bottomEdge.style.width = (_width - 1) + 'px';
    _topEdge.style.width = (_width - 1) + 'px';
    _textBox.style.width = (_width - 20) + 'px';  
  }
  
  this.SetIncrement = function(value)
  {
    value = parseFloat(value);
    if(isNaN(value))
      value = 0;
    if(value < 0)
      value = -value;
    
    _increment = value;
  }
  
  this.SetBackgroundColor = function(color)
  {
    _container.style.backgroundColor = color;
    _textBox.style.backgroundColor = color;
  }
  
  this.SetButtonColor = function(color)
  {
    if(!canChangeBtnColors)
      return;
      
    _upButton.style.backgroundColor = color;
    _downButton.style.backgroundColor = color;
  }
  
  this.SetFontColor = function(color)
  {
    _textBox.style.color = color;
  }
  
  this.SetBorderColor = function(color)
  {
    _topEdge.style.backgroundColor = color;
    _bottomEdge.style.backgroundColor = color;
    _leftEdge.style.backgroundColor = color;
    _rightEdge.style.backgroundColor = color;
  }
  
  this.AttachValueChangedListener = function(listener)
  {
    for(var i=0; i<_callbackArray.length; i++)
      if(_callbackArray[i] == listener)
        return;
        
    _callbackArray.push(listener);  
  }
  
  this.DetachValueChangedListener = function(listener)
  {
    newArray = new Array();
    for(var i=0; i<_callbackArray.length; i++)
      if(_callbackArray[i] != listener)
        newArray.push(_callbackArray[i]);
        
    _callbackArray = newArray;  
  }

  this.GetContainer = function()
  { return _container; }

  this.GetCurrentValue = function()
  { return _currentValue; }

  this.GetMaxValue = function()
  { return _maximumVal; }
   
  this.GetMinValue = function()
  { return _minimumVal; }
   
  this.GetWidth = function()
  { return _width; }
  
  this.GetIncrement = function()
  { return _increment; }
  
  this.GetAccelerationCollection = function()
  { return _accelerationCollection; }
  
  _this.SetWidth(_width);
}
