var currentSelection = null;
var currentSelectKeyStrokeData = "";
var currentSelectKeyStrokeData = "";
var currentSelectKeyStrokeTime = new Date();
var currentSelectKeyStrokeItem;
var lastOverItem;

var selecttemplate = "";
selecttemplate +="<input type=\"hidden\" name=\"$aname$\" id=\"$aid$\" value=\"$selvalue$\">";
selecttemplate +="<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" id=\"selector$aid$\" class=\"$classname$\" style=\"$style$\">";
selecttemplate +="<tr class=\"traderselecttop\">";
selecttemplate +="<td class=\"tradermselect\" id=\"aSelectedItem$aid$\" onclick=\"showselect('aSelectedItems$aid$');\"><input type=\"text\" id=\"aFldSelectedItem$aid$\" value=\"$selname$\" class=\"aFldSelectedItem\" readonly></td>";
selecttemplate +="<td align=\"center\" valign=\"middle\" class=\"tradermselectforbutton\" id=\"selectbtn$aid$\" style=\"width:8px;\">";
selecttemplate +="<a href=\"javascript: return null;\" onfocus=\"this.blur();showselect('aSelectedItems$aid$')\"></a>";
selecttemplate +="<div onclick=\"showselect('aSelectedItems$aid$')\" class=\"tradermselectbutton\"></div>";
selecttemplate +="</td></tr>";
selecttemplate +="<tr><td colspan=2>";
selecttemplate +="<div class=\"tradermselectitems\" id=\"aSelectedItems$aid$\" onblur=\"hideitems('aSelectedItems$aid$')\" onkeypress=\"selectItemOnSelectedItems('$aid$',event)\" onclick=\"selectItemOnClick('$aid$',event)\" onmouseover=\"flyOver(event)\" onmouseout=\"flyOut(event)\">";
selecttemplate +="$selitems$";
selecttemplate +="</div></td></tr></table>";

function buildSelectFromTemplate(aid,aname,selname,selvalue,classname,style,selarray){
	retdata = selecttemplate;
	while (retdata.indexOf("$aid$")>0) retdata=retdata.replace("$aid$",aid);
	while (retdata.indexOf("$aname$")>0) retdata=retdata.replace("$aname$",aname);
	while (retdata.indexOf("$selname$")>0) retdata=retdata.replace("$selname$",selname);
	while (retdata.indexOf("$selvalue$")>0) retdata=retdata.replace("$selvalue$",selvalue);
	while (retdata.indexOf("$classname$")>0) retdata=retdata.replace("$classname$",classname);
	while (retdata.indexOf("$style$")>0) retdata=retdata.replace("$style$",style);
	while (retdata.indexOf("$selitems$")>0) retdata=retdata.replace("$selitems$",getSelItemsHTML2(aid,selarray));
	return retdata;
}
function getSelItemsHTML(selitems){
	var sitemshtml = "";
	if (selitems.length > 0){
		var selitemsarray = (selitems+"$|$").split("$|$");
		var s = "";
		for (i=0;i<selitemsarray.length;i++){
			s = selitemsarray[i];
			if (s.length>0){
				itemarray = s.split("^");
				sitemshtml += "<div class=\"tsit\" id=\"subitems"+itemarray[0]+"_"+itemarray[1]+"\">"+itemarray[2]+"</div>";
			}
		}
	}
	return sitemshtml;
}

function getSelItemsHTML2(selid,selarray){
	var sitemshtml = "";
	if (selarray.length > 0){
		for (i=0;i<selarray.length;i++){
			itemarray = selarray[i];
			sitemshtml += "<div class=\"tsit\" id=\"subitems"+selid+"_"+i+"\">"+itemarray[0]+"</div>";
		}
	}
	return sitemshtml;
}

function newFillArray(arr,arrdata,selname){
	if (arrdata.length>0){
		var liar1 = (arrdata+"%|%").split("%|%");
		for (k=0;k<liar1.length;k++){
			if ((liar1[k]).length>0){
				var sar = (liar1[k]).split("^");
				if ((sar[1]).length == 0)sar[1]=sar[0];
				if ((sar[0]).length == 0)sar[0]=sar[1];
				if (sar[0] == "empty")sar[0]="";
				if (sar[1] == "empty")sar[1]="";
				if (sar[2] != "1")sar[2]="0";
				sar[3]=selname;
				arr[k]=new Array(sar[0],sar[1],sar[2],sar[3]);
			}
		}
	}
}

function  checkOpera(){
	var ret = false;
	var ua = navigator.userAgent;
	ret = /Opera/.test(ua);
	return ret;
}


function fillSelect(aArray,forSelect){
/*	try{
		var selvalue = "";
		var selname = "";
		var selid = "";
		var localitems = "";
		for (var i = 0;i<aArray.length;i++){
			var aArrayItem = aArray[i];
			var sid = "subitems"+forSelect+"_"+i;
			var s = "<div class=\"tsit\" id=\""+sid+"\">"+aArrayItem[0]+"</div>";
			localitems = localitems + s;
			if (aArrayItem[2]=="1"){
				selvalue =	aArrayItem[1];
				selname = aArrayItem[0];
				selid = "subitems"+forSelect+"_"+i;
			}
		}
		document.getElementById("aSelectedItems"+forSelect).innerHTML = localitems;
		document.getElementById(forSelect).value = selvalue;
		document.getElementById("aFldSelectedItem"+forSelect).value = selname;
		if (selid.length>0){
			eval("selectedid"+forSelect+" = \""+selid+"\"");
			document.getElementById(selid).className = "tradermselectselectedState";
		}
	}catch(e){;}
*/
	mysel = document.getElementById(forSelect);
	mysel.length = 0;
	for (i=0; i<aArray.length; i++)
	{
		mysel.options[i] = new Option(aArray[i][0],aArray[i][1]);
	}
}

function showselect(forSelect){
	try{
		currentSelectKeyStrokeData = "";
		currentSelectKeyStrokeTime = new Date();
		try{
			document.getElementById(forSelect).blur();
		}catch(e){;}
		document.getElementById(forSelect).style.display = "block";
		try {
			document.getElementById(forSelect).focus();
		}catch(e){;}
		try{
			if (checkOpera()){
				var objstr = forSelect;
				objstr = objstr.replace("aSelectedItems","aSelectedItemsA");
				document.getElementById(objstr).focus();
			}
		}catch(e){;}
	}catch(e){;}
}

function hideitems(forSelect){
	try{
		setTimeout("doHideItems(\""+forSelect+"\")",200)
	}catch(e){;}
}

function doHideItems(forSelect){
	try{
		currentSelectKeyStrokeData = "";
		currentSelectKeyStrokeTime = new Date();
		document.getElementById(forSelect).style.display = "none";
		document.getElementById(forSelect).blur();
	}catch(e){;}
}

function flyOver(e) {
	try{
		var o;
		if (document.all){
			o = e.srcElement;
		}else{o = e.target};
		var s = o.id;
		if (s.indexOf("subitems")==0){
			if (o.className!="tradermselectselectedState") {
				o.className = "tradermselectoverState";
				lastOverItem = o;
				try{
					currentSelectKeyStrokeItem.className = "tradermselectdefaultState";
				}catch(e){;}
			}
		}
	}catch(e){;}
}

function flyOut(e) {
	try{
		var o;
		if (document.all){
			o = e.srcElement;
		}else{o = e.target};
		var s = o.id;
		if (s.indexOf("subitems")==0){
			if (o.className!="tradermselectselectedState") {
				o.className = "tradermselectdefaultState"
			}
		}
	}catch(e){;}
}

function selectMe(o,value,forSelect) {
	try{
		try{
			var evaltxt = "document.getElementById(selectedid"+forSelect+").className = \"tradermselectdefaultState\""
			eval(evaltxt);
			try{
				currentSelectKeyStrokeItem.className = "tradermselectdefaultState";
			}catch(e){;}
		}catch(e){;}
		try{
			eval("selectedid"+forSelect+" = \""+o.id+"\"");
		}catch(e){;}
		o.className = "tradermselectselectedState";
		document.getElementById("aSelectedItems"+forSelect).blur();
		document.getElementById("aSelectedItems"+forSelect).style.display = "none";
		eval("var aOldValue"+forSelect+" = document.getElementById(\""+forSelect+"\").value");
		document.getElementById(forSelect).value = value;
		var toeval = "if (aOldValue"+forSelect+"!=\""+value+"\"){document.getElementById(\"aFldSelectedItem"+forSelect+"\").value=\""+o.innerHTML+"\";doSelectChange"+forSelect+"();}";
		eval(toeval);
	}catch(e){;}
}

function setSize(forSelect){
	try{
		/* ustawianie szerokości */
		var aNewWidth = "";
		if (document.getElementById("selector"+forSelect).style.width == ""){
			aNewWidth = (parseInt(document.getElementById("aSelectedItems"+forSelect).offsetWidth)+parseInt(document.getElementById("selectbtn"+forSelect).offsetWidth))+"px";
			document.getElementById("selector"+forSelect).style.width = aNewWidth;
		}

		aNewWidth = parseInt(document.getElementById("selector"+forSelect).offsetWidth);
		if (aNewWidth == 0){
			aNewWidth = parseInt(document.getElementById("selector"+forSelect).style.width);
		}
		aNewWidth = aNewWidth +8;
		document.getElementById("aSelectedItems"+forSelect).style.width = aNewWidth+"px";
		/* koniec ustawiania szerokości */
		/* ustawianie wysokości */
		var aNewHeight;
		try{
			eval("aNewHeight = selectMaxListHeight"+forSelect);
		}catch(e){aNewHeight = 260;}

		var aElementHeight = 14;
		var aSubItemsCount = (((document.getElementById("aSelectedItems"+forSelect).innerHTML).toLowerCase()).split("<div")).length-1;

		if (aSubItemsCount>0) {
			if (document.getElementById("aSelectedItems"+forSelect).firstChild.offsetHeight>0){
				aElementHeight = document.getElementById("aSelectedItems"+forSelect).firstChild.offsetHeight;
			}else{
				try{
					if (parseInt(document.getElementById("aSelectedItems"+forSelect).firstChild.style.height)>0){
						aElementHeight = parseInt(document.getElementById("aSelectedItems"+forSelect).firstChild.style.height);
					}
				}catch(e){;}
			}
			
			if (aElementHeight > 0){
				if ((aElementHeight*aSubItemsCount)<aNewHeight){
					aNewHeight = (aElementHeight*aSubItemsCount);
				}else{
					aNewHeight = 2+(aElementHeight*Math.floor(aNewHeight/aElementHeight));
				}
			}
		}else{
			aNewHeight = 0;
		}

		if (aNewHeight > 0) aNewHeight = aNewHeight +2;
		document.getElementById("aSelectedItems"+forSelect).style.height = aNewHeight+"px";
		/* koniec ustawiania wysokościści */
	}catch(e){;}
}
function selectItemOnClick(forSelect,e){
	if (document.all){
		target = e.srcElement;
	}else{target = e.target};
	var s = target.id;
	if (s.indexOf("subitems")==0){
		var targetid = s.substring(1+s.lastIndexOf("_"),s.length);
		var locarrayclick
		eval("locarrayclick = selarray"+forSelect);
		var aitem = locarrayclick[targetid];
		selectMe(target,aitem[1],aitem[3]);
	}
}

function selectItemOnSelectedItems(forSelect,e){
	var keyCode= (document.all) ? e.keyCode : e.which;
	if (keyCode > 32){
		var char = String.fromCharCode(keyCode);
		if (currentSelectKeyStrokeData.length==0){
			currentSelectKeyStrokeTime = new Date();
		}
		var currentData = new Date();
		if ((currentData.valueOf() - currentSelectKeyStrokeTime.valueOf()) < 1000){
			currentSelectKeyStrokeData += char.toLowerCase();
		}else{
			currentSelectKeyStrokeData = char.toLowerCase();
		}
		currentSelectKeyStrokeTime = new Date();
		if (currentSelectKeyStrokeData.length>0){
			var locArray;
			eval("locArray = selarray"+forSelect)
			if (locArray.length > 0){
				var i = 0;
				while (i<locArray.length){
					var s = "";
					var aitem = locArray[i];
					s = (aitem[0]).toLowerCase();
					if (s.indexOf(currentSelectKeyStrokeData) == 0){
						var x = "subitems"+forSelect+"_"+i;					
						try{
							try{
								currentSelectKeyStrokeItem.className = "tradermselectdefaultState";
							}catch(e){;}
							currentSelectKeyStrokeItem = document.getElementById(x);
							var scrollToNum = currentSelectKeyStrokeItem.offsetTop;
							document.getElementById("aSelectedItems"+forSelect).scrollTop = scrollToNum;
							try{
								lastOverItem.className = "tradermselectdefaultState";
							}catch(e){;}
							currentSelectKeyStrokeItem.className = "tradermselectoverState";
						}catch(e){}
						
						i=locArray.length;
						
					}
					i++;
				}
			}
		}			
	}
}