var mod_select = {
	open: false,
	el: null, 
	slider: null,
	height: 0,
	timer: null,
	position: 0,
	elCl: null, 
	sliderCl: null,
	heightCl: 0,
	timerCl: null,
	positionCl: 0,
	load: function() {
		mod_select.addEvent(document, 'mouseup', mod_select.closeAll);
		var divs = document.getElementsByTagName('button');
			for (var i = 0; i < divs.length; i++) {
				var div = divs[i];
				if ((' ' + div.className + ' ').indexOf(' mod-select-button ') != -1) {
					//mod_select.addEvent(div, 'mouseup', mod_select.clickListener, false);
					mod_select.addEvent(div.parentNode, 'mouseup', mod_select.clickListener, false);
					mod_select.addEvent(div.parentNode.parentNode, 'mouseup', mod_select.closeAbort, false);
					var as = div.parentNode.parentNode.getElementsByTagName('a');
					for (var j=0; j < as.length; j++) {
						mod_select.addEvent(as[j], 'click', mod_select.clickLink, false);
					}
				}
			}
	},
	clickListener: function(ev) {
		var e = window.event ? window.event : ev;
		var t = e.target ? e.target : e.srcElement; 
		var ch;
		while ((' ' + t.className + ' ').indexOf(' mod-select ') == -1 && t.nodeName.toLowerCase() != 'html') t = t.parentNode;
		for(var i = 0; i < t.childNodes.length; i++)
			if ((' ' + t.childNodes[i].className + ' ').indexOf(' mod-select-menu ') != -1) ch = t.childNodes[i];
		if(ch.style.display.toLowerCase() == 'none' || ch.style.display == '') {
			mod_select.hide(true);
			mod_select.show(ch);
		} else
			mod_select.hide();
		
	},
	closeAll: function() {
		if(!mod_select.open) {
			mod_select.hide();
		}
		mod_select.open = false;
	},
	closeAbort: function() {
		mod_select.open = true;
	},
	clickLink: function(ev) {
		var e = window.event ? window.event : ev;
		var t = e.target ? e.target : e.srcElement; 
		var ta = t;
		while ((' ' + t.className + ' ').indexOf(' mod-select ') == -1 && t.nodeName.toLowerCase() != 'html') t = t.parentNode;
		var divs = t.getElementsByTagName('div');
		for (var i in divs)
			if((' ' + divs[i].className + ' ').indexOf(' mod-select-text ') != -1)
				divs[i].innerHTML= ta.innerHTML;
			
	},
	show: function(el) {
		window.scroll(0,0);
		mod_select.el = el;
		mod_select.slider = null;
		for(var i = 0; i < el.childNodes.length; i++) {
			if((' ' + el.childNodes[i].className + ' ').indexOf(' mod-select-slider ') != -1) mod_select.slider = el.childNodes[i];
		}
		if(mod_select.slider == null) {
			mod_select.el.style.display = 'block';
			return;
		}
		el.style.visibility = 'hidden';
		el.style.display = 'block';
		el.style.height = 'auto';
		mod_select.height = el.clientHeight;
		el.style.display = 'none';
		el.style.visibility = 'visible';
		mod_select.startScroll();
	},
	startScroll: function() {
		mod_select.endScroll();
		mod_select.el.style.height = 0;
		mod_select.slider.style.top = -mod_select.height + "px";
		mod_select.el.style.display = 'block';
		mod_select.position = 0;
		mod_select.timer = setInterval("mod_select.openScroll()", 25);
	},
	endScroll: function() {
		if(mod_select.timer) {
			mod_select.el.style.height = 'auto';
			mod_select.slider.style.top = 0;
			clearInterval(mod_select.timer);
			mod_select.timer = null;
		}
	},
	openScroll: function() {
		mod_select.el.style.width = mod_select.slider.scrollWidth + "px"; //IE7
		mod_select.position += 20;
		if(mod_select.position > mod_select.height) {
			mod_select.endScroll();
		} else {
			mod_select.el.style.height = mod_select.position + 'px';
			mod_select.slider.style.top = -mod_select.height + mod_select.position + 'px';
		}
	},
	hide: function(now) {
		if(mod_select.el == null) return;
		if(mod_select.slider == null) {
			mod_select.el.style.display = 'none';
			return;
		}
		if(mod_select.timerCl) {
			mod_select.endClose();
			mod_select.closeAll(); 
			return;
		}
		mod_select.elCl = mod_select.el;
		mod_select.sliderCl = mod_select.slider;
		mod_select.heightCl = mod_select.height;
		mod_select.timerCl = mod_select.timer;
		mod_select.positionCl = mod_select.position;
		if(now) mod_select.endClose();
		else mod_select.startClose();
	},
	startClose: function() {
		if(mod_select.timerCl) {
			clearInterval(mod_select.timerCl);
			mod_select.timerCl = null;
		}
		mod_select.timerCl = setInterval("mod_select.close()", 25);
	},
	endClose: function() {
		mod_select.elCl.style.display = 'none';
		clearInterval(mod_select.timerCl);
		mod_select.timerCl = null;
		mod_select.el = null;
	},
	close: function() {
		mod_select.positionCl -= 20;
		if(mod_select.positionCl < 0) {
			mod_select.endClose();
		} else {
			mod_select.elCl.style.height = mod_select.positionCl + 'px';
			mod_select.sliderCl.style.top = -mod_select.heightCl + mod_select.positionCl + 'px';
		}
	},
	addEvent: function(obj, evType, fn, useCapture) {
	  if (obj.addEventListener){
	    obj.addEventListener(evType, fn, useCapture);
	    return true;
	  } else if (obj.attachEvent){
	    var r = obj.attachEvent("on"+evType, fn);
	    return r;
	  } else {
	    alert("Handler could not be attached");
	  }
	},
	removeEvent: function(obj, evType, fn, useCapture){
	  if (obj.removeEventListener){
	    obj.removeEventListener(evType, fn, useCapture);
	    return true;
	  } else if (obj.detachEvent){
	    var r = obj.detachEvent("on"+evType, fn);
	    return r;
	  } else {
	    alert("Handler could not be removed");
	  }
	}
}
//mod_select.addEvent(window, 'load', mod_select.load, false);