	
	var selects;
	var last = 0;
	var override = false;
	
	var borderNormal	= "1px solid #213D7E";
	var borderHover		= "1px solid #FF7E00";
	var borderDisable = "1px solid #888888";
	var buttonNormal	= "url(/admin/ui/form/select_button.gif)";
	var buttonHover		= "url(/admin/ui/form/select_button_hover.gif)";
	var buttonDisable = "url(/admin/ui/form/select_button_disable.gif)";

	var a0=new Image();
	a0.src='/admin/ui/form/select_button_hover.gif';
	var a1=new Image();
	a1.src='/admin/ui/scroller/scroll_down_active.gif';
	var a2=new Image();
	a2.src='/admin/ui/scroller/scroll_up_active.gif';
	var a3=new Image();
	a3.src='/admin/ui/scroller/scroll_bar_active.gif';
	
	// -- EVENT CANCEL BUBBLE --//
	
	function stopEvent() {
		
		var e = window.event;
		e.cancelBubble = true;
		if (e.stopPropagation) e.stopPropagation();
		
		return false;
		
	}
	
	// -- SCROLLER --//
	
	var btnWidth  = 18;
	var btnHeight = 18;
	
	var outerWidth  = new Array();
	var outerHeight = new Array();
	
	var body      = '';
	var debug     = '';
	var outer     = new Array();
	var scrollUp  = new Array();
	var scrollDn  = new Array();
	var scrollTrk = new Array();
	var scrollBar = new Array();
	var scrollTd  = new Array();
	var scrollCon = new Array();
	var scrollDot = new Array();
	
	var conHeight = new Array();
	var barHeight = new Array();
	var barSpace  = new Array();
	var conSpace  = new Array();
	
	var dragBStart = new Array();
	var dragMStart = new Array();
	
	var stepTime  = null;
	var step      = 10;
	var pxStep    = 3;
	
	function scrollInit(i, text, container, xwidth, xheight) {
		
		var html = '';
		
		html += "<table id='outer" + i + "' cellspacing='0' cellpadding='0' border='0'>";
		html += "	<tr>";
		html += "		<td width='100%' rowspan='3'>";
		html += "			<div id='scrollTd" + i + "' class='scrollTd'>";
		html += "			<div id='scrollCon" + i + "' class='scrollCon'>";
		html += "			" + text;
		html += "			</div>";
		html += "		</td>";
		html += "		<td id='scrollUp" + i + "' class='scrollUp' onmousedown='scrollBy(-1)' onmouseup='scrollOff()' onmouseover='scrollOver(-1)' onmouseout='scrollOut(-1)' nowrap></a></td>";
		html += "	</tr>";
		html += "	<tr>";
		html += "		<td id='scrollTrk" + i + "' class='scrollTrk' nowrap>";
		html += "			<div id='scrollBar" + i + "' class='scrollBar' onmousedown='scrollDrag()'><div id='scrollDot" + i + "' class='scrollDot' onmouseover='scrollDotOver()' onmouseout='scrollDotOut()'></div></div>";
		html += "		</td>";
		html += "	</tr>";
		html += "	<tr><td id='scrollDn" + i + "' class='scrollDn' onmousedown = 'scrollBy(1)' onmouseup='scrollOff()' onmouseover='scrollOver(1)' onmouseout='scrollOut(1)' nowrap></td></tr>";
		html += "</table>";
		
		container.innerHTML = html;
		
		window.body         = document.getElementById('body');
		window.outer[i]     = document.getElementById('outer' + i);
		window.scrollUp[i]  = document.getElementById('scrollUp' + i);
		window.scrollDn[i]  = document.getElementById('scrollDn' + i);
		window.scrollTrk[i] = document.getElementById('scrollTrk' + i);
		window.scrollBar[i] = document.getElementById('scrollBar' + i);
		window.scrollTd[i]  = document.getElementById('scrollTd' + i);
		window.scrollCon[i] = document.getElementById('scrollCon' + i);
		window.scrollDot[i] = document.getElementById('scrollDot' + i);
		
		body.onmouseup = scrollDragOff;
		
		window.outerWidth[i]      = xwidth;
		window.outerHeight[i]     = 200;
		
		window.conHeight[i]				= xheight;
		
		if (conHeight[i] < outerHeight[i]) outerHeight[i] = conHeight[i];
		
		outer[i].style.width      = outerWidth[i]  + 'px';
		outer[i].style.height     = outerHeight[i] + 'px';
		
		scrollUp[i].style.width   = btnWidth + 'px';
		scrollUp[i].style.height  = btnHeight + 'px';
		
		scrollDn[i].style.width   = btnWidth + 'px';
		scrollDn[i].style.height  = btnHeight + 'px';
		
		scrollTrk[i].style.width  = btnWidth + 'px';
		scrollTrk[i].style.height = (outerHeight[i] - btnHeight * 2) + 'px';
		
		scrollTd[i].style.height  = outerHeight[i] + 'px';
		
		scrollBar[i].style.width  = btnWidth + 'px';
		window.barHeight[i] = Math.round((outerHeight[i] / conHeight[i]) * (outerHeight[i] - btnHeight * 2));
		
		if (barHeight[i] < 30) barHeight[i] = 30;
		
		window.barSpace[i]  = Math.round(parseInt(scrollTrk[i].style.height) - barHeight[i]);
		window.conSpace[i]  = Math.round(conHeight[i] - outerHeight[i]);
		
		scrollBar[i].style.height = parseInt(barHeight[i]) + 'px';
		
		scrollCon[i].style.top    = '0px';
		scrollBar[i].style.top    = '0px';
		
	}
	
	function scrollBy(to, auto) {
		
		if (auto != 1) stopEvent();
		
		i = last;
		
		if (to == 1) off = -pxStep; else off = pxStep;
		
		scrollCon[i].style.top = (parseInt(scrollCon[i].style.top) + off) + 'px';
		
		if (parseInt(scrollCon[i].style.top) < -conSpace + 1)	scrollCon[i].style.top = -conSpace[i] + 'px';
		if (parseInt(scrollCon[i].style.top) > 0)							scrollCon[i].style.top = '0px';
		
		var bTop = 0;
		if (barSpace[i] != 0) bTop = (-(parseInt(scrollCon[i].style.top) / conSpace[i]) * barSpace[i])
		scrollBar[i].style.top = bTop + 'px';
		
		stepTime = setTimeout("scrollBy(" + to + ", 1)", step);
		
	}
	
	function scrollOff() {
		
		clearTimeout(stepTime);
		
	}
	
	function foo() { return false; }
	function bar() { return true; }
	
	function scrollDrag() {
		
		stopEvent();
		
		body.onmousemove   = scrollDragTo;
		body.onselectstart = foo;
		
		i = last;
		
		window.dragBStart[i] = parseInt(scrollBar[i].style.top);
		window.dragMStart[i] = window.event.clientY + document.body.scrollTop;
		
		scrollDot[i].style.border = '1px solid #213d7E';
		scrollDot[i].style.backgroundImage = "url(/admin/ui/scroller/scroll_bar_active.gif)";
		scrollDot[i].style.backgroundColor = "#EAEAEA";
		
		scrollDot[i].onmouseout  = bar;
		scrollDot[i].onmouseover = bar;
		
	}
	
	function scrollDragTo() {
		
		i = last;
		
		var newPos = window.event.clientY + document.body.scrollTop;
		var offset = newPos - dragMStart[i];
		
		if (dragBStart[i] + offset > barSpace[i]) offset = barSpace[i] - dragBStart[i];
		if (dragBStart[i] + offset < 0)           offset = -dragBStart[i];
		
		var bTop = 0;
		var cTop = 0;
		
		if (barSpace[i] != 0) bTop = dragBStart[i] + offset;
		if (barSpace[i] != 0) cTop = (-(parseInt(scrollBar[i].style.top) / barSpace[i]) * conSpace[i]);
		
		scrollBar[i].style.top = bTop + 'px'
		scrollCon[i].style.top = cTop + 'px';
		
		return false;
		
	}
	
	function scrollDragOff() {
		
		i = last;
		
		if (scrollDot[i]) {
			
			scrollDot[i].style.border = '1px solid #AAAAAA';
			scrollDot[i].style.backgroundImage = "url(/admin/ui/scroller/scroll_bar_normal.gif)";
			scrollDot[i].style.backgroundColor = "#DDDDDD";
			
			scrollDot[i].onmouseout  = scrollDotOut;
			scrollDot[i].onmouseover = scrollDotOver;
			
		}
		
		body.onmousemove   = bar;
		body.onselectstart = bar;
		
	}
	
	function scrollDotOver() {
		
		i = last;
		
		scrollDot[i].style.border = '1px solid #BBBBBB';
		scrollDot[i].style.backgroundColor = "#E5E5E5";
		
	}
	
	function scrollDotOut() {
		
		i = last;
		
		scrollDot[i].style.border = '1px solid #AAAAAA';
		scrollDot[i].style.backgroundColor = "#DDDDDD";
		
	}
	
	function scrollOver(what) {
		
		i = last;
		
		if (what == 1)	scrollDn[i].style.backgroundImage = "url(/admin/ui/scroller/scroll_down_active.gif)";
		else						scrollUp[i].style.backgroundImage = "url(/admin/ui/scroller/scroll_up_active.gif)";
		
	}
	
	function scrollOut(what) {
		
		i = last;
		
		if (what == 1)	scrollDn[i].style.backgroundImage = "url(/admin/ui/scroller/scroll_down_normal.gif)";
		else						scrollUp[i].style.backgroundImage = "url(/admin/ui/scroller/scroll_up_normal.gif)";
		
	}
	
// -- SCROLLER --//
	
	function borderOver() {
	
		var g = this.id.replace(/[a-zA-Z]+/g, "");
	
		document.getElementById("selectArea"+g).style.border    = borderHover;
		document.getElementById("selectBtn"+g).style.background = buttonHover;
		document.getElementById("selectBtn"+g).style.borderLeft = borderHover;
		
	}
	
	function borderOut() {
	
		if (override) {
			var g = last;
		} else {
			var g = this.id.replace(/[a-zA-Z]+/g, "");
		}
		
		if (document.getElementById("optionsDiv"+g).style.display=="none") {
			document.getElementById("selectArea"+g).style.border    = borderNormal;
			document.getElementById("selectBtn"+g).style.background = buttonNormal;
			document.getElementById("selectBtn"+g).style.borderLeft = borderNormal;
		}
		
		override = false;
		
	}
	
	function replaceSelects() {
		
		//document.getElementById('body').onmousedown =  hideOptions;
		
		selects = document.getElementsByTagName('select');
		
		//cycle trough the select fields
		for(var i=0; i < selects.length; i++) {
			
			if (selects[i].className != 'mceSelectList') {
			
				// -- CONSTRUCT --//			
				var selectArea = document.createElement('div');
				var optionsDiv = document.createElement('div');
				var selectText = document.createElement('div');
				var selectBtn  = document.createElement('div');
			
				var widthArea  = selects[i].style.width || 0;
			
				selectArea.id							= "selectArea"+i;
				selectArea.className			= "selectArea";
	
				selectBtn.id							= "selectBtn"+i;
				selectBtn.className				= "selectBtn";
	
				selectText.id							=	"selectText"+i;
				selectText.className			= "selectText";
				
				if (selects[i].disabled!=true) {
					selectArea.onmousedown		= showOptions;
					selectArea.onmouseover		= borderOver;
					selectArea.onmouseout			= borderOut;
				} else {
					selectArea.style.border    = borderDisable;
					selectBtn.style.borderLeft = borderDisable;
					selectText.style.color     = "#888888";
					selectBtn.style.background = buttonDisable;
				}
	
				selectArea.appendChild(selectBtn);
				selectArea.appendChild(selectText);
				
				//hide the select field
				selects[i].style.display	= 'none'; 
				selects[i].parentNode.insertBefore(selectArea, selects[i]);
				
				optionsDiv.id							=	"optionsDiv"+i;
				optionsDiv.className			= "optionsDiv";
				optionsDiv.style.display  = "none";
				optionsDiv.style.left     = findPosX(selectArea) + 'px';
				optionsDiv.style.top      = findPosY(selectArea) + 19 + 'px';
				
				document.body.appendChild(optionsDiv);
				// -- CONSTRUCT --//			
				
				var html = '';
				var xheight = selects[i].options.length * 16;
				
				// -- PARSE OPTIONS --//			
				for(var j=0; j < selects[i].options.length; j++) {
					
					var dis   = (selects[i].options[j].disabled) ? " disabled" : "";
					var color = (selects[i].options[j].style.color) ? " style='color: " + selects[i].options[j].style.color + "'" : "";
					var id    = "p_" + i + "_" + j;
					var xhtml = selects[i].options[j].innerHTML.replace(/\[:/g, "<").replace(/:\]/g, ">");
					
					if (selects[i].options[j].selected==true) { // paste current selection
						selectText.innerHTML = xhtml.replace(/&nbsp;/g, "");
						var sel = "X";
					} else var sel = "";
					
					selects[i].options[j].innerHTML = xhtml;
					
					html += "<div><a href='#' id='" + id + "' onmousedown=\"javascript: selectMe('" + selects[i].id + "', " + j + ", " + i + ");\" class='optionsLink" + sel + "'" + color + dis + ">" + xhtml + "</a></div>\n";
					
				}
				
				if (selects[i].options.length > 10) {
					scrollInit(i, html, optionsDiv, 498, xheight);
				} else {
					optionsDiv.innerHTML = html;
				}
				// -- PARSE OPTIONS --//			
				
				// -- RESIZE --//			
				if (widthArea) {
				
					var widthText = parseInt(widthArea) - 21;
					var widthOpts = parseInt(widthArea) - 18;
				
					selectArea.style.width	= widthArea;
					selectText.style.width	= widthText + 'px';
					optionsDiv.style.width	= widthOpts + 'px';
				
				}
				// -- RESIZE --//			
			
			} //end:if
		}
	}
	
	
	function showOptions(e) {
		
		stopEvent();
		
		var g = this.id.replace(/[a-zA-Z]+/g, "");
		var elem = document.getElementById("optionsDiv"+g);
		
		if (last!=g) hideOptions();
			
		if (elem.style.display=="none") {	
			if (navigator.appVersion.indexOf("MSIE 6")>-1) elem.filters[1].Apply();
			elem.style.display = "block";
			if (navigator.appVersion.indexOf("MSIE 6")>-1) elem.filters[1].Play(duration=0.5);
		}	else if(elem.style.display=="block") {
			elem.style.display = "none";
		}
		
		last = g;
		
		return true;
		
	}
	
	function hideOptions(x) {
		
		if (last) {
			document.getElementById("optionsDiv"+last).style.display = "none";
			override = true;
			borderOut();
			
			return true;
		}
	
	}
	
	function selectMe(selectFieldId,linkNo,selectNo) {
		
		var selectField = document.getElementById(selectFieldId);
		
		for(var k = 0; k < selectField.options.length; k++) {
			if(k==linkNo) {
				selectField.options[k].selected = "selected";	
				document.getElementById("p_" + selectNo + "_" + k).className = "optionsLinkX";
			} else {
				selectField.options[k].selected = "";
				document.getElementById("p_" + selectNo + "_" + k).className = "optionsLink";
			}
		}
		
		document.getElementById("selectText"+selectNo).innerHTML = selectField.options[linkNo].innerHTML.replace(/&nbsp;/g, "");
		
		hideOptions();
		
	}
	
	function findPosY(obj) {
		var posTop = 0;
		while (obj.offsetParent) {
			posTop += obj.offsetTop;
			obj = obj.offsetParent;
		}
		return posTop;
	}
	
	function findPosX(obj) {
		var posLeft = 0;
		while (obj.offsetParent) {
			posLeft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
		return posLeft;
	}

