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},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(c,d){for(var b=0,a=c.length;b<a;b++){d(c[b])}},nextItem:function(b,a){if(b==null){return}var c=b.nextSibling;while(c!=null){if(c.nodeName==a){return c}c=c.nextSibling}return null},previousItem:function(c,a){var b=c.previousSibling;while(b!=null){if(b.nodeName==a){return b}b=b.previousSibling}return null},moveBefore:function(c,b){var a=c.parentNode;a.removeChild(c);a.insertBefore(c,b)},moveAfter:function(c,b){var a=c.parentNode;a.removeChild(c);a.insertBefore(c,b?b.nextSibling:null)}};ToolMan._junkdrawer={serializeList:function(b){var c=b.getElementsByTagName("li");var f=new Array();for(var d=0,a=c.length;d<a;d++){var e=c[d];f.push(ToolMan.junkdrawer()._identifier(e))}return f.join("|")},inspectListOrder:function(a){alert(ToolMan.junkdrawer().serializeList(document.getElementById(a)))},restoreListOrder:function(h){var g=document.getElementById(h);if(g==null){return}var e=ToolMan.cookies().get("list-"+h);if(!e){return}var j=e.split("|");var b=ToolMan.junkdrawer()._itemsByID(g);for(var a=0,d=j.length;a<d;a++){var f=j[a];if(f in b){var c=b[f];g.removeChild(c);g.insertBefore(c,null)}}},_identifier:function(b){var c=ToolMan.junkdrawer().trim;var a;a=c(b.getAttribute("id"));if(a!=null&&a.length>0){return a}a=c(b.getAttribute("itemID"));if(a!=null&&a.length>0){return a}return c(b.innerHTML)},_itemsByID:function(b){var f=new Array();var c=b.getElementsByTagName("li");for(var d=0,a=c.length;d<a;d++){var e=c[d];f[ToolMan.junkdrawer()._identifier(e)]=e}return f},trim:function(a){if(a==null){return null}return a.replace(/^(\s+)?(.*\S)(\s+)?$/,"$2")}};ToolMan._eventsFactory={fix:function(a){if(!a){a=window.event}if(a.target){if(a.target.nodeType==3){a.target=a.target.parentNode}}else{if(a.srcElement){a.target=a.srcElement}}return a},register:function(c,a,d){if(c.addEventListener){c.addEventListener(a,d,false)}else{if(c.attachEvent){if(!c._listeners){c._listeners=new Array()}if(!c._listeners[a]){c._listeners[a]=new Array()}var b=function(){d.apply(c,new Array())};c._listeners[a][d]=b;c.attachEvent("on"+a,b)}}},unregister:function(b,a,c){if(b.removeEventListener){b.removeEventListener(a,c,false)}else{if(b.detachEvent){if(b._listeners&&b._listeners[a]&&b._listeners[a][c]){b.detachEvent("on"+a,b._listeners[a][c])}}}}};ToolMan._cssFactory={readStyle:function(c,b){if(c.style[b]){return c.style[b]}else{if(c.currentStyle){return c.currentStyle[b]}else{if(document.defaultView&&document.defaultView.getComputedStyle){var a=document.defaultView.getComputedStyle(c,null);return a.getPropertyValue(b)}else{return null}}}}};ToolMan._coordinatesFactory={create:function(a,b){return new _ToolManCoordinate(this,a,b)},origin:function(){return this.create(0,0)},topLeftPosition:function(c){var b=parseInt(ToolMan.css().readStyle(c,"left"));var b=isNaN(b)?0:b;var a=parseInt(ToolMan.css().readStyle(c,"top"));var a=isNaN(a)?0:a;return this.create(b,a)},bottomRightPosition:function(a){return this.topLeftPosition(a).plus(this._size(a))},topLeftOffset:function(b){var c=this._offset(b);var a=b.offsetParent;while(a){c=c.plus(this._offset(a));a=a.offsetParent}return c},bottomRightOffset:function(a){return this.topLeftOffset(a).plus(this.create(a.offsetWidth,a.offsetHeight))},scrollOffset:function(){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.documentElement){return this.create(document.documentElement.clientWidth,document.documentElement.clientHeight)}else{if(document.body.clientHeight>=0){return this.create(document.body.clientWidth,document.body.clientHeight)}else{return this.create(0,0)}}}},mousePosition:function(a){a=ToolMan.events().fix(a);return this.create(a.clientX,a.clientY)},mouseOffset:function(a){a=ToolMan.events().fix(a);if(a.pageX>=0||a.pageX<0){return this.create(a.pageX,a.pageY)}else{if(a.clientX>=0||a.clientX<0){return this.mousePosition(a).plus(this.scrollOffset())}}},_size:function(a){return this.create(a.offsetWidth,a.offsetHeight)},_offset:function(a){return this.create(a.offsetLeft,a.offsetTop)}};function _ToolManCoordinate(c,a,b){this.factory=c;this.x=isNaN(a)?0:a;this.y=isNaN(b)?0:b}_ToolManCoordinate.prototype={toString:function(){return"("+this.x+","+this.y+")"},plus:function(a){return this.factory.create(this.x+a.x,this.y+a.y)},minus:function(a){return this.factory.create(this.x-a.x,this.y-a.y)},min:function(a){return this.factory.create(Math.min(this.x,a.x),Math.min(this.y,a.y))},max:function(a){return this.factory.create(Math.max(this.x,a.x),Math.max(this.y,a.y))},constrainTo:function(a,d){var b=a.min(d);var c=a.max(d);return this.max(b).min(c)},distance:function(a){return Math.sqrt(Math.pow(this.x-a.x,2)+Math.pow(this.y-a.y,2))},reposition:function(a){a.style.top=this.y+"px";a.style.left=this.x+"px"}};ToolMan._dragFactory={createSimpleGroup:function(b,c){c=c?c:b;var a=this.createGroup(b);a.setHandle(c);a.transparentDrag();a.onTopWhileDragging();return a},createGroup:function(b){var a=new _ToolManDragGroup(this,b);var c=ToolMan.css().readStyle(b,"position");if(c=="static"){}else{if(c=="absolute"){ToolMan.coordinates().topLeftOffset(b).reposition(b)}}a.register("draginit",this._showDragEventStatus);a.register("dragmove",this._showDragEventStatus);a.register("dragend",this._showDragEventStatus);return a},_showDragEventStatus:function(a){window.status=a.toString()},constraints:function(){return this._constraintFactory},_createEvent:function(b,c,a){return new _ToolManDragEvent(b,c,a)}};function _ToolManDragGroup(a,b){this.factory=a;this.element=b;this._handle=null;this._thresholdDistance=0;this._transforms=new Array();this._listeners=new Array();this._listeners.draginit=new Array();this._listeners.dragstart=new Array();this._listeners.dragmove=new Array();this._listeners.dragend=new Array()}_ToolManDragGroup.prototype={setHandle:function(b){var a=ToolMan.events();b.toolManDragGroup=this;a.register(b,"mousedown",this._dragInit);b.onmousedown=function(){return false};if(this.element!=b){a.unregister(this.element,"mousedown",this._dragInit)}},register:function(a,b){this._listeners[a].push(b)},addTransform:function(a){this._transforms.push(a)},verticalOnly:function(){this.addTransform(this.factory.constraints().vertical())},horizontalOnly:function(){this.addTransform(this.factory.constraints().horizontal())},setThreshold:function(a){this._thresholdDistance=a},transparentDrag:function(a){},onTopWhileDragging:function(c){var c=typeof(c)!="undefined"?c:1000;var b=ToolMan.css().readStyle(this.element,"z-index");var a=ToolMan.css().readStyle(this.element,"position");this.register("dragstart",function(d){d.group.element.style.zIndex=c;d.group.element.style.position="relative"});this.register("dragend",function(d){d.group.element.style.zIndex=b;d.group.element.style.position=a})},_dragInit:function(b){b=ToolMan.events().fix(b);var a=document.toolManDragGroup=this.toolManDragGroup;var c=a.factory._createEvent("draginit",b,a);a._isThresholdExceeded=false;a._initialMouseOffset=c.mouseOffset;a._grabOffset=c.mouseOffset.minus(c.topLeftOffset);ToolMan.events().register(document,"mousemove",a._drag);document.onmousemove=function(){return false};ToolMan.events().register(document,"mouseup",a._dragEnd);a._notifyListeners(c)},_drag:function(e){e=ToolMan.events().fix(e);var c=ToolMan.coordinates();var h=this.toolManDragGroup;if(!h){return}var j=h.factory._createEvent("dragmove",e,h);var d=j.mouseOffset.minus(h._grabOffset);if(!h._isThresholdExceeded){var f=j.mouseOffset.distance(h._initialMouseOffset);if(f<h._thresholdDistance){return}h._isThresholdExceeded=true;h._notifyListeners(h.factory._createEvent("dragstart",e,h))}for(var a=0;a<h._transforms.length;a++){var b=h._transforms[a]}var l=d.minus(j.topLeftOffset);var k=j.topLeftPosition.plus(l);k.reposition(h.element);j.transformedMouseOffset=d.plus(h._grabOffset);h._notifyListeners(j);var g=d.minus(c.topLeftOffset(h.element));if(g.x!=0||g.y!=0){c.topLeftPosition(h.element).plus(g).reposition(h.element)}},_dragEnd:function(b){b=ToolMan.events().fix(b);var a=this.toolManDragGroup;if(a!=null){var c=a.factory._createEvent("dragend",b,a);a._notifyListeners(c);this.toolManDragGroup=null;ToolMan.events().unregister(document,"mousemove",a._drag);document.onmousemove=null;ToolMan.events().unregister(document,"mouseup",a._dragEnd)}},_notifyListeners:function(b){var a=this._listeners[b.type];for(var c=0;c<a.length;c++){a[c](b)}}};function _ToolManDragEvent(b,c,a){this.type=b;this.group=a;this.mousePosition=ToolMan.coordinates().mousePosition(c);this.mouseOffset=ToolMan.coordinates().mouseOffset(c);this.transformedMouseOffset=this.mouseOffset;this.topLeftPosition=ToolMan.coordinates().topLeftPosition(a.element);this.topLeftOffset=ToolMan.coordinates().topLeftOffset(a.element)}_ToolManDragEvent.prototype={toString:function(){return"";return"mouse: "+this.mousePosition+this.mouseOffset+"    xmouse: "+this.transformedMouseOffset+"    left,top: "+this.topLeftPosition+this.topLeftOffset}};ToolMan._dragFactory._constraintFactory={vertical:function(){return function(a,c){var b=c.topLeftOffset.x;return a.x!=b?a.factory.create(b,a.y):a}},horizontal:function(){return function(a,c){var b=c.topLeftOffset.y;return a.y!=b?a.factory.create(a.x,b):a}}};ToolMan._dragsortFactory={makeSortable:function(b){var a=ToolMan.drag().createSimpleGroup(b);a.register("dragstart",this._onDragStart);a.register("dragmove",this._onDragMove);a.register("dragend",this._onDragEnd);return a},makeListSortable:function(d){if(d){var a=ToolMan.helpers();var f=ToolMan.coordinates();var e=d.getElementsByTagName("li");a.map(e,function(k){var i=ToolMan.dragsort();var g=i.makeSortable(k);g.setThreshold(4);var h,j;g.addTransform(function(l,m){return l.constrainTo(h,j)});g.register("dragstart",function(){var m=d.getElementsByTagName("li");h=j=f.topLeftOffset(m[0]);for(var o=1,l=m.length;o<l;o++){var p=f.topLeftOffset(m[o]);h=h.min(p);j=j.max(p)}})});for(var c=1,b=arguments.length;c<b;c++){a.map(e,arguments[c])}}},_onDragStart:function(a){},_onDragMove:function(i){var f=ToolMan.helpers();var c=ToolMan.coordinates();var b=i.group.element;var e=i.transformedMouseOffset;var g=null;var a=f.previousItem(b,b.nodeName);while(a!=null){var h=c.bottomRightOffset(a);if(e.y<=h.y&&e.x<=h.x){g=a}a=f.previousItem(a,b.nodeName)}if(g!=null){f.moveBefore(b,g);return}var d=f.nextItem(b,b.nodeName);while(d!=null){var j=c.topLeftOffset(d);if(j.y<=e.y&&j.x<=e.x){g=d}d=f.nextItem(d,b.nodeName)}if(g!=null){f.moveBefore(b,f.nextItem(g,b.nodeName));return}},_onDragEnd:function(a){ToolMan.coordinates().create(0,0).reposition(a.group.element)}};ToolMan._cookieOven={set:function(a,e,b){if(b){var c=new Date();c.setTime(c.getTime()+(b*24*60*60*1000));var d="; expires="+c.toGMTString()}else{var d=""}document.cookie=a+"="+e+d+"; path=/"},get:function(a){var g=a+"=";var b=document.cookie.split(";");for(var f=0,d=b.length;f<d;f++){var e=b[f];while(e.charAt(0)==" "){e=e.substring(1,e.length)}if(e.indexOf(g)==0){return e.substring(g.length,e.length)}}return null},eraseCookie:function(a){createCookie(a,"",-1)}};
