﻿		var combodropoffsetY=2 //offset of drop down menu vertically from default location (in px)
		var combozindex=100;
		var timeoutLength = 2000;
		var shortTimeoutLength = 500;
		
		function skinddl_registerValidator(validatorid,ddlid)
		{
			var val = document.getElementById(validatorid);
			if(!existsDefined(val))
			{
				val = document.getElementById(findControl(validatorid,"span"));
				if(!existsDefined(val))
				{
					setTimeout("skinddl_registerValidator('" + validatorid + "','" + ddlid + "');",100);
				}
			}
			
			val.controltovalidate = val.controltovalidate + "_" + ddlid;
		}
		function skinddl(selectid,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,rerender)
		{
			this.menuID = existsDefined(a) ? a : "skinddl_" + selectid; //a
			this.menuParentSpanID = existsDefined(b) ? b : "skinddl_span_" + selectid; //b
			this.menuDropDownID = existsDefined(c) ? c : "skinddl_menu_" + selectid; //c
			this.menuDropDownImageID = existsDefined(d) ? d : "skinddl_img_" + selectid; //d
			this.menuDropDownItemIDTemplate = existsDefined(e) ? e : "skinddl_menu_" + selectid + "_item_#"; //e
			this.menuClassName = existsDefined(f) ? f : "skinddl_Menu"; //f
			this.menuItemClassName = existsDefined(g) ? g : "skinddl_Menu_Item"; //g
			this.menuItemSelectedClassName = existsDefined(h) ? h : "Active"; //h
			this.menuDropDownClassName = existsDefined(i) ? i : "skinddl_dropdown"; //i
			this.menuDropDownImageClassName = existsDefined(j) ? j : "skinddl_downimage"; //j
			this.menuParentSpanClassName = existsDefined(k) ? k : "skinddl_Parent"; //k
			this.menuZIndex = existsDefined(l) ? l : 100; //l
			this.menuDropOffsetY = existsDefined(m) ? m : -1; //m
			this.menuDropOffsetX = existsDefined(n) ? n : 0; //n
			this.selectElementId = selectid;
			this.selectElement = document.getElementById(selectid);
			this.jsObjectName = existsDefined(o) ? o : "";
			this.updatePanel = existsDefined(p) ? p : null;
			this.hide = skinddl_hideMenu;
			this.hideDelayed = skinddl_hideMenuDelayed;
			this.dispose = skinddl_dispose;
			this.clearTimer = skinddl_clearTimeout;
			this.enable = skinddl_enableMenu;
			this.onPage = false;
			if(rerender)
				setTimeout("skinddl_render('" + this.jsObjectName + "');",shortTimeoutLength);
			this.timer = null;
		}
		
		function skinddl_dispose()
		{
			return false;
		}
		
		function skinddl_changeSelect(idx,objname)
		{
			var obj = eval(objname);
			if(existsDefined(obj))
			{
				if(obj.menuID)
				{
					
					var el = document.getElementById(obj.selectElementId);
					el.options[idx].selected = true;
					for(var i = 0; i < el.options.length; i++)
					{
						var eli = document.getElementById(obj.menuDropDownItemIDTemplate.replace("#",i));
						if(existsDefined(eli))
							if(eli.className.indexOf(obj.ItemSelectedClassName) != -1)
								if(existsDefined(obj.ItemSelectedClassName))
									eli.className = eli.className.replace(obj.ItemSelectedClassName,"");
					}
					var selel = document.getElementById(obj.menuDropDownItemIDTemplate.replace("#",idx));
					if(existsDefined(selel))
					{
						selel.className += obj.ItemSelectedClassName;
						document.getElementById(obj.menuParentSpanID).innerHTML = selel.innerHTML;
					}
					var menu = document.getElementById(obj.menuDropDownID);
					//var x = menu.onmouseout;
					//menu.onmouseout = function(){};
					if(existsDefined(menu))
						menu.style.display = "none" ;	
					//menu.onmouseout=x;
					
					if(typeof(ValidatorValidate) == "function")
					{
						try
						{
							for(var i = 0; i < Page_Validators.length; i++)
							{
								var item = Page_Validators[i];
								if(item.controltovalidate == obj.selectElementId)
									ValidatorValidate(item);
							}
						}
						catch(e)
						{
						
						}
					}
				}
			}
		}
		
		function skinddl_triggerHide(e,objname)
		{
			var obj = eval(objname);
			var el = document.getElementById(obj.menuDropDownID);
			var menid = obj.menuDropDownID;
			//var txt = document.getElementById("txtddlTestingTd");
			//var d = new Date();
			//txt.value = d.getHours() + ':' + d.getMinutes() + ":" + d.getSeconds() + "." + d.getMilliseconds();
			if(window.event != undefined)
				e = window.event;
				
			if(e)
			{
				if(e.toElement) //IE
				{
					if(e.toElement.tagName.toLowerCase() != "a" && e.toElement.id != menid)
					{
						obj.hideDelayed();
					}
				}		
				else if(existsDefined(e.relatedTarget)) //others
				{
					//var txt = document.getElementById("txtddlTesting");
					try
					{
						
						
						//txt.value = e.relatedTarget.id;
						//txt.style.color = "green";
						if((e.relatedTarget.tagName.toLowerCase() != "a" && e.relatedTarget.id != menid) || e.relatedTarget == null)
						{
							obj.hideDelayed();
						}
					}
					catch(ex)
					{
						txt.value = e.relatedTarget.id;
						txt.style.color = "red";
						obj.hideDelayed();
					}
					
					
				}
			}
		}
		
		function skinddl_hideMenu()
		{
			var el = document.getElementById(this.menuDropDownID);
			if(existsDefined(el))
				el.style.display = 'none';
			this.clearTimer();
		}
		function skinddl_hideMenuDelayed()
		{			
			this.timer = setTimeout(this.jsObjectName + ".hide()",timeoutLength);
		}
		function skinddl_clearTimeout()
		{			
			var obj = this;
			//var txt = document.getElementById("txtddlTestingT");
			//txt.value = obj.timer;
			clearTimeout(obj.timer);
			obj.timer = null;
		}
		function skinddl_showMenu(objname)
		{
			var obj = eval(objname);
			
			var addtop = 0;
			var addleft = 0;
			var dhtmlmenu = document.getElementById(obj.menuDropDownID);
			var dhtmlselectbox = document.getElementById(obj.menuID);
			
			switch(BrowserDetect.browser.toLowerCase())
			{
				case "firefox":
					addtop -= 1;
					addleft -= 0;
					break;
				case "safari":
					addtop -= 1;
					addleft += 0;
					break;
				default:
					addtop -= 1;
					break;
			}
			
			dhtmlmenu.style.top = getposOffset(dhtmlselectbox,"top") + dhtmlselectbox.offsetHeight + addtop + "px";
			dhtmlmenu.style.left = getposOffset(dhtmlselectbox,"left") + addleft + "px";
			
			dhtmlmenu.style.display = dhtmlmenu.style.display == "block" ? "none" : "block";
			
			obj.hideDelayed();
		}
		
		function skinddl_render(objname)
		{
			var obj = eval(objname);
			if(obj.menuID)
			{
				var selectbox = document.getElementById(obj.selectElementId);
						
				var par = !existsDefined(obj.updatePanel) ? selectbox.parentNode : obj.updatePanel;
				
				var divBox = document.createElement('div');
				divBox.id = obj.menuID;
				divBox.className = obj.menuClassName;
				divBox.jsObject = obj.jsObjectName;
								
				var divBoxA = document.createElement('a');
				divBoxA.id = obj.menuDropDownImageID;
				divBoxA.jsObject = obj.jsObjectName;
				divBoxA.className = obj.menuDropDownImageClassName;
				divBoxA.href = "#";
				divBoxA.onclick = function() { return false; }
				
				var divBoxSpan = document.createElement('span');
				divBoxSpan.id = obj.menuParentSpanID;
				divBoxSpan.jsObject = obj.jsObjectName;
				divBoxSpan.className = obj.menuParentSpanClassName;
				divBoxSpan.innerHTML = obj.selectElement.title;
				
				divBox.appendChild(divBoxA);
				divBox.appendChild(divBoxSpan);
				
				var divMenu = document.createElement('div');
				divMenu.id = obj.menuDropDownID;
				divMenu.jsObject = obj.jsObjectName;
				divMenu.onmouseout = function(event) { skinddl_triggerHide(event,this.jsObject); }
				divMenu.onmouseover = function() { eval(this.jsObject).clearTimer(); }
				divMenu.className = obj.menuDropDownClassName;
				
				var dhtmlspan = document.getElementById(obj.menuParentSpanID);
				
				for (var i=0; i < selectbox.options.length; i++)
				{
					var extraclass = "";
					if(i == (selectbox.options.length - 1))
						extraclass="Last";
					
					var aItem = document.createElement('a');
					aItem.id = obj.menuDropDownItemIDTemplate.replace("#",i);
					aItem.valueIndex = i;
					aItem.jsObject = obj.jsObjectName;
					aItem.onmouseover = function() { eval(this.jsObject).clearTimer(); }
					aItem.className = obj.menuItemClassName  + " " + extraclass;
					aItem.href = "#";
					aItem.onclick = function () { skinddl_changeSelect(this.valueIndex,this.jsObject); return false; }
					aItem.innerHTML = selectbox.options[i].text;
					
					if(selectbox.options[i].selected)
					{
						setTimeout("skinddl_changeSelect(" + i + ",'" + obj.jsObjectName + "');",shortTimeoutLength);
					}
					
					divMenu.appendChild(aItem);
				}
				
				
				par.appendChild(divBox);
				par.appendChild(divMenu);
				
				var dhtmlselectbox=document.getElementById(obj.menuID);
				
				
				var dhtmlmenu = document.getElementById(obj.menuDropDownID);
				var dhtmlspan = document.getElementById(obj.menuParentSpanID);
				var img = document.getElementById(obj.menuDropDownImageID);
				
				dhtmlselectbox.style.zIndex=obj.menuZIndex;
				obj.onPage = true;
				obj.clearTimer();
				obj.menuZIndex--;
				//setTimeout(obj.jsObjectName + ".enable();",timeoutLength);
				obj.enable();
			}
			else
			{
				alert("Invalid Object");
			}
			
		}
		function skinddl_enableMenu()
		{
			var divBox = document.getElementById(this.menuID);
			divBox.onclick = function () { skinddl_showMenu(this.jsObject); return false; }
		}
		function skinddl_updatePanel(sender, args)
		{
			var hf = findControls("hfJSObjectName","input");
			if(existsDefined(hf))
			{
				for(var j = 0; j < hf.length; j++)
				{
					var obj = eval(hf[j].value);
					obj.hide();
					//obj.clearTimer();
					setTimeout("skinddl_render('" + hf[j].value + "');",shortTimeoutLength);
				}				
			}
			else
			{
				alert("I AM ERROR");
			}
		}
		function skinddl_updatePanel_Begin(sender, args)
		{
			var hf = findControls("hfJSObjectName","input");
			if(existsDefined(hf))
			{
				for(var j = 0; j < hf.length; j++)
				{
					var obj = eval(hf[j].value);
					obj.clearTimer();
				}				
			}
			else
			{
				alert("I AM ERROR");
			}
		}