_grabObj=null;function EventCtrl(div){this.div=div;this.type='';this.mask=0;this.pageX=0;this.pageY=0;}
EventCtrl.prototype.linkCtrl=function(obj){if(obj&&!obj.eventCtrl)obj.eventCtrl=this;return this;}
EventCtrl.prototype.setThreshold=function(threshold){this.threshold=threshold;return this;}
function getCtrlFromElementIE(el,tagName){for(;el;el=el.parentElement)
if((tagName==null||el.tagName==tagName)&&el.eventCtrl)
return el.eventCtrl;return null;}
function getCtrlFromEventIE(e,tagName){var ctrl=_grabObj;var event=window.event;var fromCtrl,toCtrl;if(ctrl==null){var mask=0,type=event.type;switch(type){case'mouseover':fromCtrl=getCtrlFromElementIE(event.fromElement,tagName);toCtrl=getCtrlFromElementIE(event.toElement,tagName);if(fromCtrl!=toCtrl)ctrl=toCtrl;if(!ctrl||(ctrl.mask&1)==0)ctrl=null;break;case'mouseout':fromCtrl=getCtrlFromElementIE(event.fromElement,tagName);toCtrl=getCtrlFromElementIE(event.toElement,tagName);if(fromCtrl!=toCtrl)ctrl=fromCtrl;if(!ctrl||(ctrl.mask&1)==0)ctrl=null;break;case'mousedown':case'mousemove':case'mouseup':ctrl=getCtrlFromElementIE(event.srcElement,tagName);if(ctrl&&(ctrl.mask&2)!=0)break;default:ctrl=null;break;}}
if(ctrl){ctrl.pageX=document.body.scrollLeft+event.clientX;ctrl.pageY=document.body.scrollTop+event.clientY;ctrl.type=event.type;}
return ctrl;}
function getCtrlFromEventNN4(e,tagName){var ctrl=_grabObj;if(ctrl==null)ctrl=e.target.eventCtrl;if(ctrl){var mask=0;switch(e.type){case'mouseover':case'mouseout':mask|=1;break;case'mousedown':case'mousemove':case'mouseup':mask|=2;break;}
if((ctrl.mask&mask)!=0){ctrl.pageX=e.pageX;ctrl.pageY=e.pageY;ctrl.type=e.type;}else ctrl=null;}
return ctrl;}
function getCtrlFromEventMz(e,tagName){var ctrl=_grabObj;if(ctrl==null){for(var t=e.target;t!=null;t=t.parentNode){if((tagName==null||(t.nodeType==Node.ELEMENT_NODE&&t.tagName==tagName))&&('undefined'!=typeof(t.eventCtrl))){ctrl=t.eventCtrl;break;}}}
if(ctrl){ctrl.pageX=e.clientX+window.scrollX;ctrl.pageY=e.clientY+window.scrollY;ctrl.type=e.type;}
return ctrl;}
function getCtrlFromEventNop(e,tagName){return null;}
getCtrlFromEvent=(_dom==1||_dom==2)?getCtrlFromEventIE:(_dom==3?getCtrlFromEventNN4:(_dom==4?getCtrlFromEventMz:getCtrlFromEventNop));function ech_mouseover(e){var ctrl=getCtrlFromEvent(e,null);if(ctrl&&ctrl.mouseover&&!ctrl.mouseoverState){ctrl.mouseoverState=true;if(ctrl.mouseover)ctrl.mouseover(ctrl,ctrl.mouseoverClient);}}
function ech_mouseout(e){var ctrl=getCtrlFromEvent(e,null);if(ctrl&&ctrl.mouseover&&ctrl.mouseoverState){ctrl.mouseoverState=false;if(ctrl.mouseout)ctrl.mouseout(ctrl,ctrl.mouseoutClient);}}
function ech_mousedown(e){var ctrl=getCtrlFromEvent(e,null);if(ctrl&&!ctrl.dragging){_grabObj=ctrl;ctrl.dragging=true;ctrl.dragged=false;ctrl.startX=ctrl.curX=ctrl.pageX;ctrl.startY=ctrl.curY=ctrl.pageY;if(ctrl.mousedown)ctrl.mousedown(ctrl,ctrl.mousedownClient);return false;}
return true;}
function ech_mousemove(e){var ctrl=getCtrlFromEvent(e,null);if(ctrl&&ctrl.dragging){if(ctrl.curX!=ctrl.pageX||ctrl.curY!=ctrl.pageY){if(Math.abs(ctrl.pageX-ctrl.startX)>ctrl.threshold||Math.abs(ctrl.pageY-ctrl.startY)>ctrl.threshold)
ctrl.dragged=true;if(ctrl.mousemove)ctrl.mousemove(ctrl,ctrl.mousemoveClient);ctrl.curX=ctrl.pageX;ctrl.curY=ctrl.pageY;}
return false;}
return true;}
function ech_mouseup(e){var ctrl=getCtrlFromEvent(e,null);if(ctrl&&ctrl.dragging){_grabObj=null;ctrl.dragging=false;if(ctrl.mouseup)ctrl.mouseup(ctrl,ctrl.mouseupClient);if(!ctrl.dragged&&ctrl.mouseclick)
ctrl.mouseclick(ctrl,ctrl.mouseclickClient);ctrl.curX=ctrl.pageX;ctrl.curY=ctrl.pageY;return false;}
return true;}
function ech_attachMouseOverOut(div,ovrf,ovrc,outf,outc){if(!div.eventCtrl)div.eventCtrl=new EventCtrl(div);var ctrl=div.eventCtrl;ctrl.mouseoverState=false;ctrl.mouseover=ovrf;ctrl.mouseoverClient=ovrc;ctrl.mouseout=outf;ctrl.mouseoutClient=outc;div.onmouseover=ech_mouseover;div.onmouseout=ech_mouseout;ctrl.mask|=1;return ctrl;}
function ech_detachMouseOverOut(div){var ctrl=div.eventCtrl;if(ctrl){ctrl.div.onmouseover=null;ctrl.div.onmouseout=null;ctrl.mask=~1;}}
function ech_attachMouseDrag(div,dwnf,dwnc,movf,movc,upf,upc,clkf,clkc){var doc;if(_dom==1||_dom==2){doc=div;doc.onmousedown=ech_mousedown;document.onmousemove=ech_mousemove;document.onmouseup=ech_mouseup;}else if(_dom==3){doc=div.document;doc.onmousedown=ech_mousedown;doc.onmousemove=ech_mousemove;doc.onmouseup=ech_mouseup;doc.captureEvents(Event.MOUSEDOWN|Event.MOUSEMOVE|Event.MOUSEUP);}else if(_dom==4){doc=div;div.onmousedown=ech_mousedown;document.body.onmousemove=ech_mousemove;document.body.onmouseup=ech_mouseup;}else return null;if(!doc.eventCtrl)doc.eventCtrl=new EventCtrl(div);var ctrl=doc.eventCtrl;ctrl.dragging=false;ctrl.dragged=false;ctrl.startX=0;ctrl.startY=0;ctrl.curX=0;ctrl.curY=0;ctrl.mousedown=dwnf;ctrl.mousedownClient=dwnc;ctrl.mousemove=movf;ctrl.mousemoveClient=movc;ctrl.mouseup=upf;ctrl.mouseupClient=upc;ctrl.mouseclick=clkf;ctrl.mouseclickClient=clkc;ctrl.threshold=5;ctrl.mask|=2;return ctrl;}
function ech_detachMouseDrag(div){var ctrl=null;if(_dom==1||_dom==2){ctrl=div.eventCtrl;if(ctrl)ctrl.div.onmousedown=null;}else if(_dom==3){ctrl=div.document.eventCtrl;if(ctrl){var doc=ctrl.div.document;doc.releaseEvents(Event.MOUSEDOWN|Event.MOUSEMOVE|Event.MOUSEUP);doc.onmousedown=null;doc.onmousemove=null;doc.onmouseup=null;}}else if(_dom==4){ctrl=div.eventCtrl;if(ctrl)ctrl.div.onmousedown=null;}
if(ctrl)ctrl.mask&=~2;}
