// b3rtDropdown 1.2
// Copyright 2007, H. poort
// This software may not be used without a valid license

function b3rtDropdown(containerId){this.container=null;this.divDropdown=null;this.cssDropdown='';this.cssItem='';this.cssItemOn='';this.items=null;this.itemDivs=null;this.maxItemsVisible=6;this.hideTimer=null;this.hideAfter=3000;this.callbackFunction=function(selectedItem){};if(!this.checkCaps())return;if(typeof(containerId)!='string')return;this.container=document.getElementById(containerId);if(!this.container)return;if(typeof(this.container.nodeName)!='string'||this.container.nodeName.toLowerCase()!='div'){this.container=null;return}var _addEventHandler=function(eventTarget,eventName,handlerFunc,_useCapture){var useCapture=(typeof(_useCapture)=='undefined'?false:_useCapture);if(typeof(eventTarget.addEventListener)=='function')eventTarget.addEventListener(eventName,handlerFunc,useCapture);else if(typeof(eventTarget.attachEvent)=='object')eventTarget.attachEvent('on'+eventName,handlerFunc);else eventTarget['on'+eventName]=handlerFunc};var refThisUnload=this;_addEventHandler(window,'unload',function(){if(refThisUnload){refThisUnload.hide();refThisUnload=null}})};b3rtDropdown.prototype.checkCaps=function(){if(!window.document||!window.document.body)return false;if(typeof(window.document.body.innerHTML)!='string')return false;if(typeof(window.document.body.appendChild)=='undefined')return false;return true};b3rtDropdown.prototype.getElementText=function(elem){var text="";if(elem&&elem.firstChild){for(var i=0;i<elem.childNodes.length;i++){var node=elem.childNodes[i];if(node.nodeType==3)text+=node.nodeValue;else text+=this.getElementText(node)}}return text};b3rtDropdown.prototype.createDropdown=function(){var _getComputedStyle=function(element,styleItem){if(typeof(element.ownerDocument)=='object'&&typeof(element.ownerDocument.defaultView)=='object'&&typeof(element.ownerDocument.defaultView.getComputedStyle)=='function'){var computedStyles=element.ownerDocument.defaultView.getComputedStyle(element,'');return computedStyles[styleItem]}else if(typeof(element.currentStyle)=='object')return element.currentStyle[styleItem];else return''};if(this.items==null)return false;if(this.container==null)return false;this.destroyDropdown();this.divDropdown=window.document.createElement('div');if(!this.divDropdown)return false;this.container.style.position='relative';this.container.style.left=0;this.container.style.top=0;this.divDropdown.style.position='absolute';this.divDropdown.style.left=0;this.divDropdown.style.top=0;this.divDropdown.style.visibility='hidden';this.divDropdown.className=this.cssDropdown;this.container.appendChild(this.divDropdown);var refThis=this;this.itemDivs=[];for(var i in this.items){if(i==this.maxItemsVisible){var currentHeight=_getComputedStyle(this.divDropdown,'height');currentHeight=(isNaN(parseInt(currentHeight))?0:parseInt(currentHeight));if((currentHeight==0)&&(typeof(this.divDropdown.offsetHeight)=='number'))currentHeight=this.divDropdown.offsetHeight;if(currentHeight!=0){this.divDropdown.style.overflow='auto';this.divDropdown.style.height=currentHeight+'px'}}this.itemDivs[i]=window.document.createElement('div');this.itemDivs[i].innerHTML=this.items[i];if(this.cssItem.length>0)this.itemDivs[i].className=this.cssItem;this.itemDivs[i].onclick=function(){if(typeof(refThis.callbackFunction)=='function')refThis.callbackFunction(refThis.getElementText(this));refThis.hide()};this.itemDivs[i].onmouseover=function(){this.className=refThis.cssItem+' '+refThis.cssItemOn};this.itemDivs[i].onmouseout=function(){this.className=refThis.cssItem};this.divDropdown.appendChild(this.itemDivs[i])}this.divDropdown.style.visibility='visible';this.divDropdown.onmouseover=function(){refThis.clearHideTimeout()};this.divDropdown.onmouseout=function(){refThis.setHideTimeout()};return true};b3rtDropdown.prototype.destroyDropdown=function(){if(this.divDropdown==null)return;if(this.itemDivs!=null){for(var i in this.itemDivs){this.itemDivs[i].onclick=null;this.itemDivs[i].onmouseover=null;this.itemDivs[i].onmouseout=null;this.divDropdown.removeChild(this.itemDivs[i]);this.itemDivs[i]=null}this.itemDivs=null}this.clearHideTimeout();this.divDropdown.onmouseover=null;this.divDropdown.onmouseout=null;this.container.removeChild(this.divDropdown);this.divDropdown=null};b3rtDropdown.prototype.setHideTimeout=function(){var refThisTimeout=this;this.hideTimer=window.setTimeout(function(){if(refThisTimeout){refThisTimeout.hide();refThisTimeout=null}},this.hideAfter)};b3rtDropdown.prototype.clearHideTimeout=function(){if(this.hideTimer!=null){window.clearTimeout(this.hideTimer);this.hideTimer=null}};b3rtDropdown.prototype.addItem=function(itemStr){if(this.items==null)this.items=[];this.items[this.items.length]=itemStr;return true};b3rtDropdown.prototype.clearItems=function(){if(this.items==null)return;for(var i=0;i<this.items.length;i++)this.items[i]=null;this.items=null};b3rtDropdown.prototype.show=function(){if(!this.createDropdown())return false;return true};b3rtDropdown.prototype.hide=function(){this.destroyDropdown()};