try {var ToolMan={events:function(){if(!ToolMan._eventsFactory)throw "ToolMan Events module isn't loaded";return ToolMan._eventsFactory;},css:function(){if(!ToolMan._cssFactory)throw "ToolMan CSS module isn't loaded";return ToolMan._cssFactory;},coordinates:function(){if(!ToolMan._coordinatesFactory)throw "ToolMan Coordinates module isn't loaded";return ToolMan._coordinatesFactory;},drag:function(){if(!ToolMan._dragFactory)throw "ToolMan Drag module isn't loaded";return ToolMan._dragFactory;},dragsort:function(){if(!ToolMan._dragsortFactory)throw "ToolMan DragSort module isn't loaded";return ToolMan._dragsortFactory;},rectangle:function(){if(!ToolMan._rectFactory)throw "ToolMan Rectangle module isn't loaded";return ToolMan._rectFactory;},helpers:function(){return ToolMan._helpers;},cookies:function(){if(!ToolMan._cookieOven)throw "ToolMan Cookie module isn't loaded";return ToolMan._cookieOven;},junkdrawer:function(){return ToolMan._junkdrawer;}};ToolMan._helpers={map:function(array,func){for(var i=0,n=array.length;i<n;i++){func(array[i]);}},mapApply:function(array,func,argArray){for(var i=0,n=array.length;i<n;i++){func.apply(array[i],argArray);}},nextItem:function(item,nodeName){if(item==null){return;}var next=item.nextSibling;while(next!=null){if(next.nodeName==nodeName){return next;}next=next.nextSibling;}return null;},previousItem:function(item,nodeName){var previous=item.previousSibling;while(previous!=null){if(previous.nodeName==nodeName){return previous;}previous=previous.previousSibling;}return null;},itemNumber:function(item){var number=0;var previous=item.previousSibling;while(previous!=null){number++;previous=previous.previousSibling;}return number;},moveBefore:function(item1,item2){item2.parentNode.insertBefore(item1,item2);},moveAfter:function(item1,item2){item2.parentNode.insertBefore(item1,item2?item2.nextSibling:null);}};ToolMan._junkdrawer={serializeList:function(list){var items=list.getElementsByTagName("li");var array=new Array();for(var i=0,n=items.length;i<n;i++){var item=items[i];array.push(ToolMan.junkdrawer()._identifier(item));}return array.join('|');},inspectListOrder:function(id){alert(ToolMan.junkdrawer().serializeList(document.getElementById(id)));},restoreListOrder:function(listID){var list=document.getElementById(listID);if(list==null)return;var cookie=ToolMan.cookies().get("list-"+listID);if(!cookie)return;var IDs=cookie.split('|');var items=ToolMan.junkdrawer()._itemsByID(list);for(var i=0,n=IDs.length;i<n;i++){var itemID=IDs[i];if(itemID in items){var item=items[itemID];list.removeChild(item);list.insertBefore(item,null);}}},_identifier:function(item){var trim=ToolMan.junkdrawer().trim;var identifier;identifier=trim(item.getAttribute("id"));if(identifier!=null&&identifier.length>0)return identifier;identifier=trim(item.getAttribute("itemID"));if(identifier!=null&&identifier.length>0)return identifier;return trim(item.innerHTML);},_itemsByID:function(list){var array=new Array();var items=list.getElementsByTagName('li');for(var i=0,n=items.length;i<n;i++){var item=items[i];array[ToolMan.junkdrawer()._identifier(item)]=item;}return array;},trim:function(text){if(text==null)return null;return text.replace(/^(\s+)?(.*\S)(\s+)?$/,'$2');}};ToolMan._cssFactory={readStyle:function(element,propName){if(element.style[propName]){return element.style[propName];}else if(element.currentStyle){var a=propName.split('-');var styleName=a[0];for(i=1;i<a.length;i++){styleName+=a[i].substring(0,1).toUpperCase()+a[i].substring(1);}return element.currentStyle[styleName];}else if(document.defaultView&&document.defaultView.getComputedStyle){var style=document.defaultView.getComputedStyle(element,null);if(!style){return null;}else{return style.getPropertyValue(propName);}}else{return null;}},getBoxOffset:function(element,position,boxName){var suffix=(boxName=='border')?'-width':'';var propName=boxName+'-'+position+suffix;var boxOffset=parseInt(this.readStyle(element,propName));boxOffset=boxOffset?boxOffset:0;return boxOffset;},getEdgeOffset:function(element,position,edgeName){var edgeOffset=0;switch(edgeName){case 'content':case 'inner':edgeOffset+=this.getBoxOffset(element,position,'padding');case 'padding':edgeOffset+=this.getBoxOffset(element,position,'border');case 'border':edgeOffset+=this.getBoxOffset(element,position,'margin');}return edgeOffset;},getCSSStyles:function(selector){selector=selector.toLowerCase();var styleArray=[];var sheets=document.styleSheets;if(sheets&&sheets.length>0){for(var sheetNum=0;sheetNum<sheets.length;sheetNum++){var sheet=sheets[sheetNum];var rules=sheet.cssRules?sheet.cssRules:sheet.rules;if(rules&&rules.length>0){for(var ruleNum=0;ruleNum<rules.length;ruleNum++){var rule=rules[ruleNum];var selectors=rule.selectorText.split(',');for(var selectorNum=0;selectorNum<selectors.length;selectorNum++){if(selectors[selectorNum].trim().toLowerCase()==selector){styleArray[styleArray.length]=rule.style;break;}}}}}}return styleArray;}};var _ElementUIDs={};var getElementUID=function(element){function getId(element,sufix){if(element.id){return element.id+(sufix==0?'':sufix);}else{return element.tagName+sufix;}};if(element==document){return 'document';}if(element.frames){return 'window';}var uid=element.uid;if(!uid){var count=0;uid=getId(element,count++);while(_ElementUIDs[uid]!=null){uid=getId(element,count++);}element.uid=uid;_ElementUIDs[uid]=element;}return uid;};ToolMan._eventsFactory={fix:function(event){try{if(!event){event=window.event;}if(event.target){if(event.target.nodeType==3){event.target=event.target.parentNode;}}else if(event.srcElement){event.target=event.srcElement;event.timeStamp=new Date();event.stopPropagation=function(){this.cancelBubble=true;};event.preventDefault=function(){this.returnValue=false;};}}catch(e){}return event;},register:function(element,type,func){if(!element|| !type|| !func){return;}this.addListener(element,type,func);},registerKey:function(element,type,keyString,func){keyString=keyString.toLowerCase();if(keyString.indexOf('space')> -1){var rKey=' ';}else{var rKey=keyString.slice(-1);}var rAlt=keyString.indexOf('alt')> -1;var rCtrl=keyString.indexOf('ctrl')> -1;var rShift=keyString.indexOf('shift')> -1;var rMeta=keyString.indexOf('meta')> -1;this.register(element,type,function(event){var nativeEvent=event.event;var eKey=String.fromCharCode(nativeEvent.keyCode).toLowerCase();var eAlt=nativeEvent.altKey;var eCtrl=nativeEvent.ctrlKey;var eShift=nativeEvent.shiftKey;var eMeta=nativeEvent.metaKey;if(eKey==rKey&&eAlt==rAlt&&eCtrl==rCtrl&&eShift==rShift&&eMeta==eMeta){return func(event);}});},unregister:function(element,type,func){if(!element|| !type|| !func){return;}if(element._listeners&&element._listeners[type]){element._listeners[type].deleteItem(func);}},unregisterElement:function(element){if(!element){return;}for(var type in element._listeners){element._listeners[type].clear();}var listeners=this.elementListeners;for(var i=0;i<listeners.length;i++){var item=listeners[i];if(item.element==element){this.deregisterWithElement(element,item.type,item.func);}}},isRegistered:function(element,type,func){var uid=getElementUID(element);if(!element|| !type|| !func|| !this.allListeners[uid]|| !this.allListeners[uid][type]|| !this.allListeners[uid][type].contains(func)){return false;}return true;},addListener:function(element,type,func){var uid=getElementUID(element);var elementListeners=this.allListeners[uid];var elementResponders=this.allResponders[uid];if(!elementListeners){elementListeners=this.allListeners[uid]={};elementResponders=this.allResponders[uid]={};}var listeners=elementListeners[type];if(!listeners){listeners=elementListeners[type]=new Array();var events=this;var responderElement=element;var responderType=type;switch(type){case 'resize':break;case 'mouseover':case 'mouseout':responderType='mousemove';case 'mousedown':case 'mouseup':case 'click':var typeResponder=elementResponders[responderType];if(!typeResponder){typeResponder=elementResponders[responderType]=this.registerWithElement(responderElement,responderType,function(event){events.addTarget(responderType,responderElement);});}break;default:if(elementResponders[responderType]){break;}var typeResponder=elementResponders[responderType];if(!typeResponder){typeResponder=elementResponders[responderType]=this.registerWithElement(responderElement,responderType,function(event){event=events._beginEvent(event);events.notifyListeners(responderElement,responderType);});}break;}}listeners[listeners.length]=func;},getListeners:function(element,type){var uid=getElementUID(element);var listeners=[];if(this.allListeners[uid]&&this.allListeners[uid][type]){listeners=this.allListeners[uid][type];}return listeners;},notifyListeners:function(element,type){var listeners=this.getListeners(element,type);if(listeners.length<1){return true;}var tmEvent=new TM_Event(this.currentEvent,type,element);for(var i=0;i<listeners.length;i++){listeners[i](tmEvent);if(!tmEvent.propagate){return false;}}return true;},reportListeners:function(listeners){var string='length='+listeners.length;for(var i=0;i<listeners.length;i++){string+='<br><br>'+i;string+='<br>'+listeners[i];}return string;},reportAllListeners:function(){var allListeners=this.allListeners;var string='allListeners';for(var uid in allListeners){string+='<br> uid='+uid;var elementListeners=allListeners[uid];for(var type in elementListeners){string+='<br> '+type+': '+this.reportListeners(elementListeners[type]);}}return string;},reportAllResponders:function(){var allResponders=this.allResponders;var string='allResponders:';for(var uid in allResponders){string+='<br> uid='+uid;var elementResponders=allResponders[uid];for(var type in elementResponders){string+='<br> '+type+': '+elementResponders[type];}}return string;},addTarget:function(type,target){var targetList=this.currentTargets[type];if(!targetList){targetList=this.currentTargets[type]=[];}targetList[targetList.length]=target;},getTargetList:function(type){var targetList=[];if(IS_IE&&type=='mousedown'&&this.previousTargets['mousemove']){targetList=this.previousTargets['mousemove'];}else if(this.currentTargets[type]){targetList=this.currentTargets[type];}return targetList;},getPreviousTargets:function(type){var previousTargets=this.previousTargets[type]?this.previousTargets[type]:[];return previousTargets;},reportCurrentTargets:function(){var currentTargets=this.currentTargets;var string='currentTargets';for(var type in currentTargets){string+='<br> type='+type+'<br> targetList='+currentTargets[type].length;}return string;},clearTargetList:function(type){if(!this._targets|| !this._targets[type]){return;}this._targets[type]=[];},registerWithElement:function(element,type,func){if(element.addEventListener){element.addEventListener(type,func,false);}else if(element.attachEvent){element.attachEvent('on'+type,func);}var listeners=this.elementListeners;var item={'element':element,'type':type,'func':func};listeners[listeners.length]=item;return func;},deregisterWithElement:function(element,type,func){if(element.removeEventListener){element.removeEventListener(type,func,false);}else if(element.detachEvent){element.detachEvent('on'+type,func)}var listeners=this.elementListeners;var item={'element':element,'type':type,'func':func};listeners.deleteItem(item,function(v1,v2){var c1=(v1.element==v2.element);var c2=(v1.type==v2.type);var c3=(v1.func==v2.func);return c1&&c2&&c3;});return func;},deregisterAllElements:function(){var listeners=this.elementListeners;if(!listeners){return;}var element=document.body;if(element.removeEventListener){for(var i=0;i<listeners.length;i++){var item=listeners[i];item.element.removeEventListener(item.type,item.func,false);}}else if(element.detachEvent){for(var i=0;i<listeners.length;i++){var item=listeners[i];item.element.detachEvent('on'+item.type,item.func);}}listeners.clear();},cleanUp:function(){this.deregisterAllElements();for(var uid in this.allResponders){var elementResponders=this.allResponders[uid];var responderElement=document.getElementById(uid);for(var responderType in elementResponders){var typeResponder=elementResponders[responderType];typeResponder=elementResponders[responderType]=null;}elementResponders=this.allResponders[uid]=null;var elementListeners=this.allListeners[uid];for(var type in elementResponders){var listeners=elementListeners[type];for(var i=0;listeners.length;i++){listeners[i]=null;}elementListeners=this.allListeners[uid]=null;}elementListeners=this.allListeners[uid]=null;}this.globalHandelers=null;},setup:function(){var events=this;this.currentTargets={};this.previousTargets={};this.allListeners={};this.allResponders={};this.elementListeners=[];var globalHandelers={};this.globalHandelers={};globalHandelers['unload']=this.registerWithElement(window,'load',function(event){events.initEvents();correctRect();events.notifyListeners(window,'load');});},initEvents:function(){if(this._initailised){return;}var events=this;var globalHandelers=this.globalHandelers;globalHandelers['mousemove']=this.registerWithElement(document,'mousemove',function(event){event=events._beginEvent(event);var moveTargetList=events.getTargetList('mousemove');var oldTargetList=events._oldMoveTargets?events._oldMoveTargets:[];var propagateMove=true;var propagateOver=true;var propagateOut=true;for(var i=0;i<moveTargetList.length;i++){var currentTarget=moveTargetList[i];var wasTarget=oldTargetList.deleteItem(currentTarget);if(!wasTarget&&propagateOver){propagateOver=events.notifyListeners(currentTarget,'mouseover');}if(propagateMove){propagateMove=events.notifyListeners(currentTarget,'mousemove');}}if(propagateMove){events.notifyListeners(document,'mousemove',event);}for(var i=0;i<oldTargetList.length;i++){var currentTarget=oldTargetList[i];if(!events.notifyListeners(currentTarget,'mouseout')){propagateOut=false;break;}}events._oldMoveTargets=moveTargetList;events.clearTargetList('mousemove');events._endEvent();});globalHandelers['mousedown']=this.registerWithElement(document,'mousedown',function(event){events._beginEvent(event);var downTargetList=events.getTargetList('mousedown');var propagateDown=true;for(var i=0;i<downTargetList.length;i++){var currentTarget=downTargetList[i];if(!events.notifyListeners(currentTarget,'mousedown',event)){propagateDown=false;break;}}if(propagateDown){events.notifyListeners(document,'mousedown',event);}events._endEvent();});globalHandelers['mouseup']=this.registerWithElement(document,'mouseup',function(event){events._beginEvent(event);var upTargetList=events.getTargetList('mouseup');var clickTargetList=events.getPreviousTargets('mousedown');var propagateUp=true;var propagateClick=true;var propagateUpOutside=true;for(var i=0;i<upTargetList.length;i++){currentTarget=upTargetList[i];if(!events.notifyListeners(currentTarget,'mouseup')){propagateUp=false;break;}}if(propagateUp){events.notifyListeners(document,'mouseup');}for(var i=0;i<clickTargetList.length;i++){var currentTarget=clickTargetList[i];if(upTargetList.contains(currentTarget)){if(propagateClick){propagateClick=events.notifyListeners(currentTarget,'click');}}else if(propagateUpOutside){propagateUpOutside=events.notifyListeners(currentTarget,'mouseupoutside');}}events.clearTargetList('mousedown');events.clearTargetList('mouseup');events._endEvent();});globalHandelers['keydown']=this.registerWithElement(document,'keydown',function(event){events._beginEvent(event);var targetList=events.getTargetList('keydown');for(var i=0;i<targetList.length;i++){var currentTarget=targetList[i];events.notifyListeners(currentTarget,'keydown',event);}events._endEvent();});globalHandelers['keyup']=this.registerWithElement(document,'keyup',function(event){events._beginEvent(event);var targetList=events.getTargetList('keyup');for(var i=0;i<targetList.length;i++){var currentTarget=targetList[i];if(!events.notifyListeners(currentTarget,'keyup',event)){break;}}events._endEvent();});globalHandelers['keypress']=this.registerWithElement(document,'keypress',function(event){events._beginEvent(event);var targetList=events.getTargetList('keypress');for(var i=0;i<targetList.length;i++){var currentTarget=targetList[i];if(!events.notifyListeners(currentTarget,'keypress',event)){break;}}events._endEvent();});globalHandelers['resize']=this.registerWithElement(window,'resize',function(event){correctRect();events.notifyListeners(window,'resize');});var fontSizer=document.createElement('div');fontSizer.id="fontSizer";fontSizer.style.position='absolute';fontSizer.style.top='-10000px';fontSizer.style.left='-10000px';fontSizer.style.width='1em';fontSizer.style.height='1em';fontSizer.style.lineHeight='1em';document.body.insertBefore(fontSizer,null);var oldFontSize=fontSizer.offsetWidth;window.setInterval(function(){var fontSize=fontSizer.offsetWidth;if(fontSize!=oldFontSize){correctRect();oldFontSize=fontSize;events.notifyListeners(window,'fontResize');}},100);globalHandelers['unload']=this.registerWithElement(window,'unload',function(event){events.notifyListeners(window,'unload');events.cleanUp();});this._initailised=true;},_beginEvent:function(event){this.currentEvent=this.fix(event);return this.currentEvent;},_endEvent:function(){var event=this.currentEvent;var type=event.type;this.previousTargets[type]=this.currentTargets[type];this.currentTargets={};}};ToolMan._eventsFactory.setup();function TM_Event(event,type,currentTarget){this.event=event;this.type=type;try{this.target=event.target;}catch(e){this.target=currentTarget};try{this.timeStamp=event.timeStamp;}catch(e){this.timeStamp=new Date();}this.currentTarget=currentTarget;try{this.useDom=(event.eventTarget!=null);}catch(e){this.useDom=false;}this.propagate=true;this.canceled=false;};TM_Event.prototype={stopPropagation:function(){this.propagate=false;this.event.stopPropagation();},preventDefault:function(){this.canceled=true;this.event.preventDefault();}};ToolMan._coordinatesFactory={create:function(x,y){return new _ToolManCoordinate(this,x,y);},origin:function(){return this.create(0,0);},dimensionOffset:function(element){return this.create(element.offsetWidth,element.offsetHeight);},topLeft:function(element){var left=getX(element);var top=getY(element);return this.create(left,top);},bottomRight:function(element){return this.topLeft(element).plus(this._size(element));},topLeftPosition:function(element){var left=parseInt(ToolMan.css().readStyle(element,"left"));var left=isNaN(left)?0:left;var top=parseInt(ToolMan.css().readStyle(element,"top"));var top=isNaN(top)?0:top;return this.create(left,top);},bottomRightPosition:function(element){return this.topLeftPosition(element).plus(this._size(element));},topLeftOffset:function(element){var offset=this._offset(element);var parent=element.offsetParent;while(parent){offset=offset.plus(this._offset(parent));parent=parent.offsetParent;}return offset;},bottomRightOffset:function(element){return this.topLeftOffset(element).plus(this.dimensionOffset(element));},centerPoint:function(element){return this.dimensionOffset(element).div(2);},centerPosition:function(element){var topLeft=this.topLeftOffset(element);var bottomRight=this.bottomRightOffset(element);return topLeft.center(bottomRight).plus(topLeft);},centerOffset:function(element){var topLeft=this.topLeftOffset(element);var bottomRight=this.bottomRightOffset(element);return topLeft.center(bottomRight);},dimensionOffset:function(element){return this.create(element.offsetWidth,element.offsetHeight);},scrollOffset:function(element,totalFlag){if(element){var scrollTop=element.scrollTop;var scrollLeft=element.scrollLeft;while(totalFlag&&element.parentNode!=document.body){element=element.parentNode;scrollTop+=element.scrollTop;scrollLeft+=element.scrollLeft;}return this.create(scrollLeft,scrollTop);}else if(window.pageXOffset){return this.create(window.pageXOffset,window.pageYOffset);}else if(document.documentElement){return this.create(document.body.scrollLeft+document.documentElement.scrollLeft,document.body.scrollTop+document.documentElement.scrollTop);}else if(document.body.scrollLeft>=0){return this.create(document.body.scrollLeft,document.body.scrollTop);}else{return this.create(0,0);}},clientSize:function(){if(window.innerHeight>=0){return this.create(window.innerWidth,window.innerHeight);}else if(document.body.clientHeight>=0){return this.create(document.body.clientWidth,document.body.clientHeight);}else if(document.documentElement){return this.create(document.documentElement.clientWidth,document.documentElement.clientHeight);}else{return this.create(0,0);}},mousePosition:function(event){var e=event;var c=this.create;var x=event.clientX;var y=event.clientY;return this.create(event.clientX,event.clientY);},mouseOffset:function(event,totalFlag){if(totalFlag){return this.mousePosition(event).plus(this.scrollOffset(event.target,true));}if(event.pageX>=0||event.pageX<0){return this.create(event.pageX,event.pageY);}else if(event.clientX>=0||event.clientX<0){return this.mousePosition(event).plus(this.scrollOffset());}},topLeftEdgeOffset:function(element,boxName){var readStyle=ToolMan.css().readStyle;var suffix=boxName=='border'?'-width':'';return this.create(parseInt(readStyle(element,boxName+'-left'+suffix)),parseInt(readStyle(element,boxName+'-top'+suffix)));},bottomRightEdgeOffset:function(element,boxName){var readStyle=ToolMan.css().readStyle;var suffix=boxName=='border'?'-width':'';return this.create(parseInt(readStyle(element,boxName+'-right'+suffix)),parseInt(readStyle(element,boxName+'-bottom'+suffix)));},_size:function(element){return this.create(element.offsetWidth,element.offsetHeight);},_offset:function(element){return this.create(element.offsetLeft,element.offsetTop);}};function getX(element,scrollParent){var x=0;if(element.offsetParent){while(element.offsetParent){x+=element.offsetLeft;element=element.offsetParent;if(scrollParent&&element==scrollParent){x+=element.scrollLeft;return x;}}}else if(element.x){x+=element.x;}return x;};function getY(element,scrollParent){var y=0;if(element.offsetParent){while(element.offsetParent){y+=element.offsetTop;element=element.offsetParent;if(scrollParent&&element==scrollParent){y+=element.scrollTop;return y;}}}else if(element.y){y+=element.y;}return y;};function _ToolManCoordinate(factory,x,y){this.factory=factory;this.x=isNaN(x)?0:x;this.y=isNaN(y)?0:y;};_ToolManCoordinate.prototype={_checkThat:function(that){if(typeof(that)=='number'||that instanceof Number){return this.factory.create(that,that);}return that;},toString:function(){return "("+this.x+","+this.y+")";},equals:function(that){that=this._checkThat(that);return(this.x==that.x)&&(this.y==that.y);},plus:function(that){that=this._checkThat(that);return this.factory.create(this.x+that.x,this.y+that.y);},minus:function(that){that=this._checkThat(that);return this.factory.create(this.x-that.x,this.y-that.y);},mult:function(that){that=this._checkThat(that);return this.factory.create(this.x*that.x,this.y*that.y);},div:function(that){that=this._checkThat(that);return this.factory.create(this.x/that.x,this.y/that.y);},min:function(that){that=this._checkThat(that);return this.factory.create(Math.min(this.x,that.x),Math.min(this.y,that.y));},max:function(that){that=this._checkThat(that);return this.factory.create(Math.max(this.x,that.x),Math.max(this.y,that.y));},center:function(that){that=this._checkThat(that);var min=this.min(that);var max=this.max(that);var dimensions=max.minus(min);var centerOffset=dimensions.div(2);return min.plus(centerOffset);},constrainTo:function(one,two){var min=one.min(two);var max=one.max(two);return this.max(min).min(max);},within:function(one,two){return this.equals(this.constrainTo(one,two));},distance:function(that){return Math.sqrt(Math.pow(this.x-that.x,2)+Math.pow(this.y-that.y,2));},reposition:function(element){element.style["top"]=this.y+"px";element.style["left"]=this.x+"px";}};ToolMan._rectFactory={create:function(topLeft,bottomRight){return new _ToolManRect(this,topLeft,bottomRight);},rectangle:function(top,left,bottom,right){var coordFactory=ToolMan.coordinates();var topLeft=coordFactory.create(left,top);var bottomRight=coordFactory.create(right,bottom);return this.create(topLeft,bottomRight);},rect:function(element,edgeName){var coordFactory=ToolMan.coordinates();var topLeft=coordFactory.topLeft(element);var bottomRight=coordFactory.bottomRight(element);return this.offsetEdge(topLeft,bottomRight,element,edgeName);},rectPosition:function(element,edgeName){var coordFactory=ToolMan.coordinates();var topLeft=coordFactory.topLeftPosition(element);var bottomRight=coordFactory.bottomRightPosition(element);return this.offsetEdge(topLeft,bottomRight,element,edgeName);},rectOffset:function(element,edgeName){var coordFactory=ToolMan.coordinates();var topLeft=coordFactory.topLeftOffset(element);var bottomRight=topLeft.plus(coordFactory.dimensionOffset(element));return this.offsetEdge(topLeft,bottomRight,element,edgeName);},offsetEdge:function(offsetTopLeft,offsetBottomRight,element,edgeName){//-->
var edgeTopLeft=offsetTopLeft;var edgeBottomRight=offsetBottomRight;var cord=ToolMan.coordinates();switch(edgeName){case 'margin':case 'position':case 'outer':edgeTopLeft=edgeTopLeft.minus(cord.topLeftEdgeOffset(element,'margin'));edgeBottomRight=edgeBottomRight.plus(cord.bottomRightEdgeOffset(element,'margin'));break;case 'content':case 'inner':edgeTopLeft=edgeTopLeft.plus(cord.topLeftEdgeOffset(element,'padding'));edgeBottomRight=edgeBottomRight.minus(cord.bottomRightEdgeOffset(element,'padding'));case 'padding':edgeTopLeft=edgeTopLeft.plus(cord.topLeftEdgeOffset(element,'border'));edgeBottomRight=edgeBottomRight.minus(cord.bottomRightEdgeOffset(element,'border'));case 'border':case 'offset':}return new _ToolManRect(this,edgeTopLeft,edgeBottomRight);}};function _ToolManRect(factory,topLeft,bottomRight){this.factory=factory;this.topLeft=topLeft;this.bottomRight=bottomRight;};_ToolManRect.prototype={toString:function(){var topLeft=this.topLeft;var bottomRight=this.bottomRight;var top=topLeft.y;var left=topLeft.x;var bottom=bottomRight.y;var right=bottomRight.x;return "("+topLeft+","+bottomRight+")";},toArray:function(){var topLeft=this.topLeft;var bottomRight=this.bottomRight;var top=topLeft.y;var left=topLeft.x;var bottom=bottomRight.y;var right=bottomRight.x;return[top,left,bottom,right];},dimensions:function(){return this.bottomRight.minus(this.topLeft);},width:function(){return this.dimensions().x;},height:function(){return this.dimensions().y;},topRight:function(){var coordFactory=this.topLeft.factory;var top=this.topLeft.y;var right=this.bottomRight.x;return coordFactory.create(right,top);},bottomLeft:function(){var coordFactory=this.topLeft.factory;var left=this.topLeft.x;var bottom=this.bottomRight.y;return coordFactory.create(left,bottom);},centerPoint:function(){return this.dimensions().div(2);},centerPosition:function(){return this.topLeft.plus(this.centerPoint());},centerOffset:function(that){that=this._checkThat(that);var left=Math.round(that.width()/2)-Math.round(this.width()/2)-1;var top=Math.round(that.height()/2)-Math.round(this.height()/2)-1;var coordFactory=this.topLeft.factory;return coordFactory.create(left,top);},intersects:function(that){that=this._checkThat(that);var topLeft=this.topLeft;var bottomRight=this.bottomRight;var topRight=this.topRight();var bottomLeft=this.bottomLeft();return(topLeft.within(that.topLeft,that.bottomRight)||bottomRight.within(that.topLeft,that.bottomRight)||topRight.within(that.topLeft,that.bottomRight)||bottomLeft.within(that.topLeft,that.bottomRight));},within:function(that){that=this._checkThat(that);var topLeft=this.topLeft;var bottomRight=this.bottomRight;var topRight=this.topRight();var bottomLeft=this.bottomLeft();return(topLeft.within(that.topLeft,that.bottomRight)&&bottomRight.within(that.topLeft,that.bottomRight)&&topRight.within(that.topLeft,that.bottomRight)&&bottomLeft.within(that.topLeft,that.bottomRight));},copyFrom:function(that){that=this._checkThat(that);this.topLeft.x=that.topLeft.x;this.topLeft.y=that.topLeft.y;this.bottomRight.x=that.bottomRight.x;this.bottomRight.y=that.bottomRight.y;},plus:function(that){that=this._checkThat(that);var topLeft=this.topLeft.plus(that.topLeft);var bottomRight=this.bottomRight.plus(that.bottomRight);return this.factory.create(topLeft,bottomRight);},minus:function(that){that=this._checkThat(that);var topLeft=this.topLeft.minus(that.topLeft);var bottomRight=this.bottomRight.minus(that.bottomRight);return this.factory.create(topLeft,bottomRight);},mult:function(that){that=this._checkThat(that);var topLeft=this.topLeft.mult(that.topLeft);var bottomRight=this.bottomRight.mult(that.bottomRight);return this.factory.create(topLeft,bottomRight);},div:function(that){that=this._checkThat(that);var topLeft=this.topLeft.div(that.topLeft);var bottomRight=this.bottomRight.div(that.bottomRight);return this.factory.create(topLeft,bottomRight);},resize:function(element){var width=this.width();var height=this.height();element.style.width=(width<1?1:width)+'px';element.style.height=(height<1?1:height)+'px';},reposition:function(element){this.resize(element);this.topLeft.reposition(element);},centerIn:function(element){var width=element.offsetWidth;var height=element.offsetHeight;element.style.marginLeft=(-Math.round(width/2))+'px';element.style.marginTop=(-Math.round(height/2))+'px';element.style.left='50%';element.style.top='50%';},fitWithin:function(element,limiter){if(element.originalHeight){var width=element.originalWidth;var height=element.originalHeight;}else{var width=element.offsetWidth;var height=element.offsetHeight;element.originalWidth=width;element.originalHeight=height;}if(width==0||height==0){return;}var withinWidth=this.width();var withinHeight=this.height();if(withinWidth/width<withinHeight/height){var scale=withinWidth/width;}else{var scale=withinHeight/height;}if(limiter=='shrink'){scale=scale>1?1:scale;}else if(limiter=='grow'){scale=scale<1?1:scale;}var newWidth=width*scale;var newHeight=height*scale;element.style.width=newWidth+'px';element.style.height=newHeight+'px';},_checkThat:function(that){if(typeof(that)=='number'||that instanceof Number){return this.factory.rectangle(that,that,that,that);}else if(that instanceof _ToolManCoordinate){return this.factory.create(that,that);}return that;}};ToolMan._dragFactory={createSimpleGroup:function(element,handle){handle=handle?handle:element;var group=this.createGroup(element);group.setHandle(handle);group.transparentDrag();group.onTopWhileDragging();return group;},createGroup:function(element){var group=new _ToolManDragGroup(this,element);var position=ToolMan.css().readStyle(element,'position');if(position=='static'){element.style["position"]='relative';}else if(position=='absolute'){}group.register('draginit',this._showDragEventStatus);group.register('dragmove',this._showDragEventStatus);group.register('dragend',this._showDragEventStatus);group.register('notdragged',this._showDragEventStatus);return group;},createDragClone:function(element){var cloneElement=element.cloneNode(true);var left=getX(element);var top=getY(element);var width=element.offsetWidth;var height=element.offsetHeight;var cloneParent=document.getElementById('holder_list');if(!cloneParent){cloneParent=document.createElement('ol');cloneParent.id='holder_list';}document.body.insertBefore(cloneParent,null);cloneElement.id=element.id+'_dragClone';cloneElement.style.position='absolute';cloneElement.style.left=left+'px';cloneElement.style.top=top+'px';cloneElement.style.width=width+'px';cloneElement.style.height=height+'px';cloneParent.insertBefore(cloneElement,null);var group=this.createSimpleGroup(cloneElement);var removeClone=function(){if(cloneElement.parentNode===cloneParent){cloneParent.removeChild(cloneElement);ToolMan.events().unregister(document,'mouseup',removeClone);}};group.register('dragend',removeClone);ToolMan.events().register(document,'mouseup',removeClone);return group;},constraints:function(){return this._constraintFactory;},_showDragEventStatus:function(dragEvent){},_createEvent:function(type,event,group){return new _ToolManDragEvent(type,event,group);}};function _ToolManDragGroup(factory,element){element.dragGroup=this;this.factory=factory;this.element=element;this._handle=null;this._thresholdDistance=0;this._transforms=new Array();this._destinationElements=new Array();this.addListenerType('draginit','dragstart','dragmove','dragend','notdragged');};_ToolManDragGroup.InstanceMembers={setHandle:function(handle){var events=ToolMan.events();handle.toolManDragGroup=this;events.register(handle,'mousedown',this._dragInit);handle.onmousedown=function(){return false;};if(this.element!=handle)events.unregister(this.element,'mousedown',this._dragInit);},setDragOffset:function(dragOffset){this._dragOffset=dragOffset;var factory=ToolMan.coordinates();var topLeft=factory.topLeft(this.element).plus(dragOffset);topLeft.reposition(this.element);},addTransform:function(transformFunc){this._transforms.push(transformFunc);},verticalOnly:function(){this.addTransform(this.factory.constraints().vertical());},horizontalOnly:function(){this.addTransform(this.factory.constraints().horizontal());},keapWithin:function(object){this.addTransform(this.factory.constraints().keapWithin(object));},ghostOutside:function(object){this.addTransform(this.factory.constraints().ghostOutside(object));},setThreshold:function(thresholdDistance){this._thresholdDistance=thresholdDistance;},transparentDrag:function(opacity){var opacity=typeof(opacity)!="undefined"?opacity:0.75;var originalOpacity=ToolMan.css().readStyle(this.element,"opacity");this.register('dragstart',function(dragEvent){var element=dragEvent.group.element;element.style.opacity=opacity;element.style.filter='alpha(opacity='+(opacity*100)+')';});this.register('dragend',function(dragEvent){var element=dragEvent.group.element;element.style.opacity=originalOpacity;element.style.filter='alpha(opacity=100)';});},onTopWhileDragging:function(zIndex){var zIndex=typeof(zIndex)!="undefined"?zIndex:100000;var originalZIndex=ToolMan.css().readStyle(this.element,"z-index");this.register('dragstart',function(dragEvent){dragEvent.group.element.style.zIndex=zIndex;});this.register('dragend',function(dragEvent){dragEvent.group.element.style.zIndex=originalZIndex;});},addDestination:function(destinationElement,overFunction,outFunction){if(this._destinationElements.contains(destinationElement)){return;}this._destinationElements.push(destinationElement);var destElement=destinationElement;var overFunct=overFunction;var outFunct=outFunction;this.register('dragstart',function(dragEvent){var dragGroup=dragEvent.group;dragGroup._origionalParent=dragGroup.element.parentNode;});this.register('dragmove',function(dragEvent){var rectFactory=ToolMan._rectFactory;var dragGroup=dragEvent.group;var origionalParent=dragGroup._origionalParent;var dragElement=dragGroup.element;var parentElement=dragElement.parentNode;var dragRect=rectFactory.rect(dragElement);var destRect=rectFactory.rect(destElement);var isWithin=dragEvent.mouseOffset.within(destRect.topLeft,destRect.bottomRight);if(isWithin&&parentElement!=destElement){parentElement.removeChild(dragElement);destElement.appendChild(dragElement);overFunct(dragEvent);}else if(!isWithin&&parentElement==destElement){parentElement.removeChild(dragElement);origionalParent.appendChild(dragElement);outFunction(dragEvent);}});},_dragInit:function(event){var events=ToolMan.events();var group=event.currentTarget.toolManDragGroup;document.toolManDragGroup=group;if(!group){return;}var dragEvent=group.factory._createEvent('draginit',event,group);var cord=ToolMan.coordinates();group._initialTopLeftOffset=cord.topLeftOffset(group.element);group._isThresholdExceeded=false;group._initialMouseOffset=dragEvent.mouseOffset;group._grabOffset=dragEvent.mouseOffset.minus(dragEvent.topLeftOffset);events.register(document,'mousemove',group._drag);document.onmousemove=function(){return false;};events.register(document,'mouseup',group._dragEnd);group.notifyListeners(dragEvent);},_drag:function(event){var coordinates=ToolMan.coordinates();var group=document.toolManDragGroup;if(!group)return;var dragEvent=group.factory._createEvent('dragmove',event,group);var newTopLeftOffset=dragEvent.mouseOffset.minus(group._grabOffset);if(!group._isThresholdExceeded){var distance=dragEvent.mouseOffset.distance(group._initialMouseOffset);if(distance<group._thresholdDistance)return;group._isThresholdExceeded=true;group.notifyListeners(group.factory._createEvent('dragstart',event,group));}for(var i=0;i<group._transforms.length;i++){var transform=group._transforms[i];newTopLeftOffset=transform(newTopLeftOffset,dragEvent);}var dragDelta=newTopLeftOffset.minus(dragEvent.topLeftOffset);var newTopLeftPosition=dragEvent.topLeftPosition.plus(dragDelta);newTopLeftPosition.reposition(group.element);dragEvent.transformedMouseOffset=newTopLeftOffset.plus(group._grabOffset);group.notifyListeners(dragEvent);var errorDelta=newTopLeftOffset.minus(coordinates.topLeftOffset(group.element));if(errorDelta.x!=0||errorDelta.y!=0){coordinates.topLeftPosition(group.element).plus(errorDelta).reposition(group.element);}},_dragEnd:function(event){var group=document.toolManDragGroup;if(!group){return;}if(group._isThresholdExceeded){var dragEvent=group.factory._createEvent('dragend',event,group);group.notifyListeners(dragEvent);}else{var dragEvent=group.factory._createEvent('notdragged',event,group);group.notifyListeners(dragEvent);}this.toolManDragGroup=document.toolManDragGroup=null;ToolMan.events().unregister(document,'mousemove',group._drag);document.onmousemove=null;ToolMan.events().unregister(document,'mouseup',group._dragEnd);}};_ToolManDragGroup.addInstanceMembers(_ToolManDragGroup.InstanceMembers,TypedListeners.InstanceMembers);function _ToolManDragEvent(type,event,group){event=event.event;this.type=type;this.event=event;this.group=group;this.mousePosition=ToolMan.coordinates().mousePosition(event);this.mouseOffset=ToolMan.coordinates().mouseOffset(event);this.transformedMouseOffset=this.mouseOffset;this.topLeftPosition=ToolMan.coordinates().topLeftPosition(group.element);this.topLeftOffset=ToolMan.coordinates().topLeftOffset(group.element);};_ToolManDragEvent.prototype={toString:function(){return "mouse: "+this.mousePosition+this.mouseOffset+"    "+"xmouse: "+this.transformedMouseOffset+"    "+"left,top: "+this.topLeftPosition+this.topLeftOffset;}};ToolMan._dragFactory._constraintFactory={vertical:function(){return function(coordinate,dragEvent){var x=dragEvent.group._initialTopLeftOffset.x;return coordinate.x!=x?coordinate.factory.create(x,coordinate.y):coordinate;};},horizontal:function(){return function(coordinate,dragEvent){var y=dragEvent.group._initialTopLeftOffset.y;return coordinate.y!=y?coordinate.factory.create(coordinate.x,y):coordinate;};},keapWithin:function(object){return function(coordinate,dragEvent){var group=dragEvent.group;var element=group.element;var coordFactory=coordinate.factory;var rectFactory=ToolMan._rectFactory;var withinRect;if(!object){object=element.parentNode;}if(object.parentNode){withinRect=rectFactory.rect(object);}else if(typeof object=='function'){withinRect=object(dragEvent);}else{withinRect=object;}var tl1=withinRect.topLeft;topLeft=tll;if(group._dragOffset){topLeft=topLeft.plus(group._dragOffset);}var br1=topLeft.plus(withinRect.dimensions());bottomRight=brl;bottomRight=bottomRight.minus(coordFactory.dimensionOffset(element));return coordinate.constrainTo(topLeft,bottomRight);};},ghostOutside:function(object){return function(coordinate,dragEvent){var group=dragEvent.group;var element=group.element;var coordFactory=coordinate.factory;var rectFactory=ToolMan._rectFactory;if(!object){object=element.parentNode;}if(object.parentNode){withinRect=rectFactory.rect(object);}else{withinRect=object;}var topLeft=withinRect.topLeft;var bottomRight=topLeft.plus(withinRect.dimensions());var opacity;var dragDelta=dragEvent.mouseOffset.minus(group._initialMouseOffset);var newTopLeftOffset=group._initialTopLeftOffset.plus(dragDelta);var newBottomRightOffset=newTopLeftOffset.plus(coordFactory.dimensionOffset(element));var newRect=rectFactory.create(newTopLeftOffset,newBottomRightOffset);var intersects=newRect.intersects(rectFactory.create(topLeft,bottomRight));if(intersects){opacity=1.0;element.style.opacity=opacity;element.style.filter='alpha(opacity='+(opacity*100)+')';group._within=true;}else{opacity=0.75;element.style.opacity=opacity;element.style.filter='alpha(opacity='+(opacity*100)+')';group._within=false;coordinate=newTopLeftOffset;}return coordinate;};}}; }catch(e){alert('error loading js.php: ' + e.message);} 