var openHeight = 300;
var openUp = true;


var currentSelDiv = false;
var draggedKnob = false;
var mouseStartY = 0;
var knobStartY = 0;

function mouseDown(e)	{
	if (currentSelDiv)	{

		var o = (e && e.target) ? e.target : window.event.srcElement;
		var isBox = 0;
		while (o)	{
			if (o.className&&(o.className.match(/div-select/)))	{
				return true;
			}
			o = o.parentNode;
		}
		closeCurrentSelDiv();
	}
}
function closeCurrentSelDiv()	{
	var selDiv = currentSelDiv;
	var selBox = selDiv.childNodes[3];
	var selSB = selDiv.childNodes[1];
	selDiv.boxOpen = false;
	selDiv.style.height = selDiv.closedHeight+"px";
	if (openUp)	{
		selDiv.style.top = (tPos)+"px";
	}
	selBox.style.display = "none";
	selSB.style.display = "none";
	selDiv.style.zIndex = 400;
	currentSelDiv = false;
}

function mouseMove(e)	{
	if (draggedKnob)	{
		var scrollBar = draggedKnob.parentNode;
		var selDiv = scrollBar.parentNode;
		var selBox = selDiv.childNodes[3];
		var selCont = selBox.childNodes[0];
		var rH = selCont.clientHeight;
		var my = e ? e.pageY : window.event.screenY;
		var d = my-mouseStartY;
		d += knobStartY;
		if (d>draggedKnob.maxTop)	{
			d = draggedKnob.maxTop;
		}
		if (d<0)	{
			d = 0;
		}
		p = d/draggedKnob.maxTop;
		var ot = Math.round((rH-openHeight+selDiv.closedHeight)*p);
		draggedKnob.style.top = d+"px";
		selCont.style.top = (-ot)+"px";
	}
	return true;
}

function releaseKnob(e)	{
	draggedKnob = false;
}

function selectItem(selItem, value)	{
	var selCont = selItem.parentNode;
	var selBox = selCont.parentNode;
	var selDiv = selBox.parentNode;
	var selCur = selDiv.childNodes[2];
	var selField = selDiv.childNodes[4];
	var selSB = selDiv.childNodes[1];
	selDiv.boxOpen = false;
	selDiv.style.height = selDiv.closedHeight+"px";
	selDiv.style.top = tPos+"px";
	selBox.style.display  = "none";
	selSB.style.display  = "none";
	var nv = selItem.innerHTML;
	selCur.innerHTML = nv;
	for (var x = 0; x < selCont.childNodes.length; x++)	{
		selCont.childNodes[x].className = selCont.childNodes[x].className.replace(/ div-select-item-selected/, "");
	}
	selItem.className += " div-select-item-selected";
	selField.value = value;
	document.location.href = value;
	return true;
}

function dragKnob(scrollKnob, e)	{
	var ev = e ? e : window.event;
	draggedKnob = scrollKnob;
	mouseStartY = e.pageY ? e.pageY : e.screenY;
	knobStartY = parseInt(draggedKnob.style.top);
	if (isNaN(knobStartY))	{
		knobStartY = 0;
	}
	return true;
}

function openSelectBox(buttonObj)	{	
	var selDiv = buttonObj.parentNode;
	currentSelDiv = selDiv;
	disableSelection(selDiv);
	var selBox = selDiv.childNodes[3];
	var selCont = selBox.childNodes[0];
	var scrollBar = selDiv.childNodes[1];
	var selSB = selDiv.childNodes[1];
	var scrollKnob = scrollBar.childNodes[0];
	if (selDiv.boxOpen)	{
		closeCurrentSelDiv();
	} else	{
		selDiv.closedHeight = parseInt(selDiv.clientHeight);
		selDiv.style.height = openHeight+"px";
		selBox.style.height = (openHeight-selDiv.closedHeight-1)+"px";
		selSB.style.display = "block";
		selBox.style.display = "block";
		if (openUp)	{
			selDiv.style.top = (tPos-(openHeight-selDiv.closedHeight))+"px";
		}
		var rH = selCont.clientHeight;
		if (rH>openHeight)	{
			var p = (1.0/rH)*openHeight;
			var px = p*openHeight;
			if (px<16)	{
				px = 16;
			}
			scrollKnob.style.height = px+"px";
			scrollKnob.maxTop = Math.floor(openHeight-selDiv.closedHeight-px);
		}
		scrollBar.style.height = (openHeight-17)+"px";
		selDiv.boxOpen = true;
		selDiv.style.zIndex = 402;
	}
}

function getOffset(obj, rec)	{
	var ol = isNaN(parseInt(obj.offsetLeft)) ? 0 : parseInt(obj.offsetLeft);
	var ot = isNaN(parseInt(obj.offsetTop)) ? 0 : parseInt(obj.offsetTop);
	if (obj.offsetParent)	{
		var sub = getOffset(obj.offsetParent, 1);
		ol += sub[0];
		ot += sub[1];
	}
	return Array(ol, ot);
}
lPos = 0;
tPos = 0;

function initSelect(sel)	{
	var selObj = document.getElementById(sel);	
	var os = getOffset(selObj);
	lPos = os[0]-97;
	tPos = os[1];
	tPos += 8;
	var currentVal = "";
	var currentK = "";
	if (selObj)	{
		currentVal = selObj[selObj.selectedIndex].text;
		currentK = selObj[selObj.selectedIndex].value;
	}
	if (!(currentK.length||currentVal.length))	{
		currentVal = selObj[0].text;
		currentK = selObj[0].value;
	}
	var fName = selObj.name;
//	var res = '<div class="div-select" style="top: '+tPos+'px; left: '+lPos+'px"><div class="div-select-button" onclick="openSelectBox(this);"></div><div class="div-select-scrollbar"><div class="div-select-knob" onmousedown="dragKnob(this, event);"></div></div><div class="div-select-current">'+currentVal+'</div><div class="div-select-box"><div class="div-select-inner">';
	var res = '<div class="div-select-button" onclick="openSelectBox(this);"></div><div class="div-select-scrollbar"><div class="div-select-knob" onmousedown="dragKnob(this, event);"></div></div><div class="div-select-current">'+currentVal+'</div><div class="div-select-box"><div class="div-select-inner">';
	var lines = "";
	if (selObj)	{
		var ec = "";
		var hs = 0;
		for (var x = 0; x < selObj.length-1; x++)		{
			ec = "";
			if ((!hs)&&selObj[x].selected)	{
				ec = " div-select-item-selected";
				hs = 1;
			}
			lines += '<div class="div-select-item '+(selObj[x].className)+ec+'" onmouseover="this.className += \' div-select-item-hover\';" onmouseout="this.className = this.className.replace(/ div-select-item-hover/, \'\');" onclick="selectItem(this, \''+(selObj[x].value)+'\')">'+selObj[x].text+'</div>';
		}
	}
	res += lines;
	res += '</div></div><input type="hidden" name="'+fName+'" value="" />';
	selObj.style.visibility= "hidden";
//	selObj.style.display = "none";
	var newdiv = document.createElement('div');
	var cont = document.getElementById('page-column');
	newdiv.className = "div-select";
	newdiv.style.left = lPos+"px";
	newdiv.style.top = tPos+"px";
	newdiv.style.zIndex = 400;
	newdiv.innerHTML = res;
//	document.body.appendChild(newdiv);
	cont.appendChild(newdiv);
//	document.body.innerHTML += res;
//	window.onmousemove = mouseMove;
//	document.onmousemove = mouseMove;
//	window.onmouseup = releaseKnob;
//	document.onmouseup = releaseKnob;
}

function disableSelection(target){
	if ((typeof target.onselectstart)!="undefined")	{
		target.onselectstart=function(){return false}
	} else if ((typeof target.style.MozUserSelect)!="undefined")	{
		target.style.MozUserSelect="none"
	} else	{
	}
}


