function Drawer(elem){var rootElem=elem;if(!rootElem){return }var selTimerId=0;var defaultSelectedItem=null;var itemToDeselect=null;var itemToSelect=null;var animating=false;var postponedTimerId=0;var postponedItemToSelect;var postponedRelTarget;function handleMouseOver(event){var handle;if(postponedItemToSelect!==undefined){handle=postponedItemToSelect}else{handle=findHandleElement(event)}if(!handle){return }postponedItemToSelect=undefined;postponedRelTarget=undefined;if(animating){if(postponedTimerId!=0){clearTimeout(postponedTimerId);postponedTimerId=0}postponedItemToSelect=handle;postponedTimerId=setTimeout(handleMouseOver,100)}else{if(selTimerId!=0){clearTimeout(selTimerId);selTimerId=0}if(handle==itemToDeselect){return }itemToSelect=handle;selTimerId=setTimeout(switchPanes,100)}}function handleMouseOut(event){var handle=findHandleElement(event);if(handle==itemToSelect&&selTimerId!=0){clearTimeout(selTimerId);selTimerId=0}if(postponedTimerId!=0){clearTimeout(postponedTimerId);postponedTimerId=0}postponedItemToSelect=undefined;postponedRelTarget=undefined;var relTarget;if(postponedRelTarget!==undefined){relTarget=postponedRelTarget}else{relTarget=(event)?event.relatedTarget:((window.event)?window.event.toElement:null);while(relTarget&&relTarget!=rootElem){relTarget=relTarget.parentNode}}if(animating){if(!relTarget){postponedRelTarget=relTarget;postponedTimerId=setTimeout(handleMouseOut,100)}}else{if(!relTarget){clearTimeout(selTimerId);selTimerId=0;if(itemToDeselect!=defaultSelectedItem){itemToSelect=defaultSelectedItem;switchPanes()}}}}function switchPanes(){var duration=500;var timerId=0;var startTime;var currentFrame=0;var start=0;var end=0;var units="px";var totalFrames=Math.ceil((duration/1000)*100);var itemToOpen=null;var itemToClose=null;startSlide();timerId=setInterval(handleTween,Math.ceil(duration/totalFrames)-1);function correctFrame(){var expected=(currentFrame*duration/totalFrames);var elapsed=(new Date()-startTime);var tweak=0;if(elapsed<duration){tweak=Math.round((elapsed/expected-1)*currentFrame)}else{tweak=totalFrames-(currentFrame+1)}if(tweak>0&&isFinite(tweak)){if(currentFrame+tweak>=totalFrames){tweak=totalFrames-(currentFrame+1)}currentFrame+=tweak}}function easeOut(t,b,c,d){return -c*((t=t/d-1)*t*t*t-1)+b}function startSlide(){animating=true;currentFrame=0;if(itemToDeselect){itemToDeselect.parentNode.className="open";itemToClose=itemToDeselect.contentElem}if(itemToSelect){itemToSelect.parentNode.className="selected";itemToOpen=itemToSelect.contentElem;if(itemToOpen){itemToOpen.style.height="0px";itemToOpen.style.display="block"}}start=0;end=contentHeight;startTime=new Date()}function handleTween(){correctFrame();var i=Math.ceil(easeOut(currentFrame,start,end-start,totalFrames));if(currentFrame<totalFrames){if(itemToOpen){itemToOpen.style.height=i+units}if(itemToClose){itemToClose.style.height=(end-i)+units}currentFrame++}else{clearInterval(timerId);timerId=0;finishSlide()}}function finishSlide(){if(itemToDeselect){itemToDeselect.parentNode.className="";itemToDeselect=null}if(itemToSelect){itemToSelect.parentNode.className="open selected";itemToDeselect=itemToSelect;itemToSelect=null}if(itemToOpen){itemToOpen.removeAttribute("style");itemToOpen.style.height=contentHeight+units;itemToOpen=null}if(itemToClose){itemToClose.removeAttribute("style");itemToClose=null}animating=false}}function findHandleElement(event){var node=(event)?event.target:((window.event)?window.event.srcElement:null);while(node&&node!=rootElem&&!node.contentElem){node=node.parentNode}if(node&&node.contentElem){return node}return null}function firstChildNode(el){if(!el){return null}var n=el.firstChild;while(n&&n.nodeType!=1){n=n.nextSibling}return n}function nextSiblingNode(el){if(!el){return null}var n=el.nextSibling;while(n&&n.nodeType!=1){n=n.nextSibling}return n}var n,handle,content;var open=new RegExp("(?:^|\\s+)(open)(?:\\s+|$)");var contentHeight=0;for(n=rootElem.firstChild;n;n=n.nextSibling){if(n.nodeType==1){handle=firstChildNode(n);if(open.test(n.className)){if(defaultSelectedItem){n.className=""}else{defaultSelectedItem=handle;n.className="selected open"}}if(handle){content=nextSiblingNode(handle);handle.contentElem=content;if(content){content.style.overflow="hidden";content.style.height="0px";content.style.display="block";contentHeight=Math.max(contentHeight,content.scrollHeight);content.removeAttribute("style")}}}}if(defaultSelectedItem){itemToDeselect=defaultSelectedItem;if(itemToDeselect.contentElem){itemToDeselect.contentElem.style.height=contentHeight+"px"}}rootElem.onmouseover=handleMouseOver;rootElem.onmouseout=handleMouseOut}
