var isOpen = false;
var url_minisito = "";
var mb;
var scroll_start = 0;
var scroll_end = 0;

function negozioHomePage()
{
	var value = document.getElementById('cmbNegozi').value;
	if(value != -1 && value != 0)
		location.href = url_minisito + value;
}

function getVersion()
{
	var dataString = navigator.appVersion;
    var versionSearchString = "MSIE";
	var index = dataString.indexOf(versionSearchString);
	if (index == -1) return -1;
	return parseFloat(dataString.substring(index+versionSearchString.length+1));	
}

function foo(px,py,pw,ph,baseElement,fid)
{
	var win = document.getElementById(this.fid);
}


function dropdown_menu_hack(el, path)
{	
	url_minisito = location.protocol + "//" + location.host + path;

	if(navigator.appName != "Microsoft Internet Explorer")
	     return;
	var version = getVersion();
	if(version >= 9 || version == -1)
		return;

	if(el.runtimeStyle.behavior.toLowerCase()=="none"){return;}
	el.runtimeStyle.behavior="none";
	
	var ie5 = false;
	if(version <= 5)
		ie5 = true;
	
	if(window.createPopup==null)
	{
		var fid = "dropdown_menu_hack_" + Date.parse(new Date());
	
		window.createPopup = function()
		{
			if(window.createPopup.frameWindow==null)
			{
					el.insertAdjacentHTML("AfterEnd","<iframe   id='"+fid+"' name='"+fid+"' src='about:blank'  frameborder='1' scrolling='no'></></iframe>");
					var f = document.frames[fid];
					f.document.open();
					f.document.write("<html><body></body></html>");
					f.document.close();
					f.fid = fid; 
					
					var fwin = document.getElementById(fid);
					fwin.style.cssText="position:absolute;top:0;left:0;display:none;z-index:99999;font-family:Verdana, Geneva, sans-serif;font-size:11px;color:#666666;";
				
					f.show = function(px,py,pw,ph,baseElement)
					{	
						py = py + baseElement.getBoundingClientRect().top + Math.max( document.body.scrollTop, document.documentElement.scrollTop) ;
						px = px + baseElement.getBoundingClientRect().left + Math.max( document.body.scrollLeft, document.documentElement.scrollLeft) ;
						fwin.style.width = pw + "px";
						fwin.style.height = ph + "px";						
						fwin.style.posLeft =px ;
						fwin.style.posTop = py ;		
						fwin.style.display="block";						
					}

					f_hide = function(e)
					{ 
						if(window.event && window.event.srcElement	&& window.event.srcElement.tagName && window.event.srcElement.tagName.toLowerCase()=="select"){return true;}
						fwin.style.display="none";
					} 
					f.hide = f_hide;
					document.attachEvent("onclick",f_hide);		
					document.attachEvent("onkeydown",f_hide);		
					
			}
			return f;
		}
	}

	function showMenu()
	{
		function selectMenu(obj, changeIsOpen)
		{	
			if(changeIsOpen)
				isOpen = !isOpen;
			var o = document.createElement("option");
			o.value = obj.value;
			o.innerHTML = obj.innerHTML;			
			while(el.options.length>0){el.options[0].removeNode(true);}
			el.appendChild(o);
			el.title =  "Scegli il negozio";//o.innerHTML; 
			el.contentIndex = obj.selectedIndex  ;
			el.menu.hide(); 				
			negozioHomePage();
		}
		
		mb = el.menu.document.body;
		/*if(mb.offsetHeight == 20 && !isOpen )
		{
			isOpen = false;
		}*/

		isOpen = !isOpen;
		if(!isOpen)
		{
			selectMenu(el, false);
			return false;
		}
		el.menu.show(0 , el.offsetHeight , 10,  10, el); 
		
		mb.style.cssText ="border-top:1px solid #CCCCCC; border-left:1px solid #CCCCCC; border-bottom:solid 1px #000000;border-right:solid 1px #000000;margin:0;padding:0;overflow-y:auto;overflow-x:auto;background:white;text-aligbn:center;font-family:Verdana, Geneva, sans-serif;font-size:11px;color:#666666;";
		var t = el.contentHTML;
		t = t.replace(/<select/gi,'<ul');
		t = t.replace(/<option/gi,'<li');
		t = t.replace(/<\/option/gi,'</li');
		t = t.replace(/<\/select/gi,'</ul');
		mb.innerHTML = t;	
	
		el.select = mb.all.tags("ul")[0];
		el.select.style.cssText="list-style:none;margin:0;padding:0;color:#666666;";
		mb.options = el.select.getElementsByTagName("li");
		
		for(var i=0;i<mb.options.length;i++)
		{
			mb.options[i].selectedIndex = i;
			mb.options[i].style.cssText = "list-style:none;margin:0;padding:1px 2px;width/**/:100%;cursor:hand;cursor:pointer;white-space:nowrap;color:#666666;"
			mb.options[i].title =mb.options[i].innerHTML;
			mb.options[i].innerHTML ="<nobr>" + mb.options[i].innerHTML + "</nobr>";
			mb.options[i].onmouseover = function()
			{
				if( mb.options.selected ){mb.options.selected.style.background="white";mb.options.selected.style.color="#666666";}
				mb.options.selected = this;
				
				//SI CAMBIA L'ELEMENTO SELEZIONATO NELLA SELECT
				var o = document.createElement("option");
				o.value = this.value;
				o.innerHTML = this.innerHTML;			
				while(el.options.length>0){el.options[0].removeNode(true);}
				el.appendChild(o);
				el.title =  o.innerHTML;
				el.contentIndex = this.selectedIndex;
				/*************************************************/
				
				this.style.background="#3399FF";this.style.color="white";
			}
			
			mb.options[i].onmouseout = function(){this.style.background="white";this.style.color="#666666";}
			mb.options[i].onmousedown = function(){selectMenu(this, true);	}
			mb.options[i].onkeydown = function(){selectMenu(this, true);	}
				
			if(i == el.contentIndex)
			{
				mb.options[i].style.background="#3399FF";
				mb.options[i].style.color="white";	
				mb.options.selected = mb.options[i];
				
				//SI CAMBIA L'ELEMENTO SELEZIONATO NELLA SELECT
				var o = document.createElement("option");
				o.value = mb.options[i].value;
				o.innerHTML = mb.options[i].innerHTML;			
				while(el.options.length>0){el.options[0].removeNode(true);}
				el.appendChild(o);
				el.title =  o.innerHTML;
				el.contentIndex = mb.options[i].selectedIndex;
				/*************************************************/
			}
		}
		var mw = Math.max(   ( el.select.offsetWidth + 22 ), el.offsetWidth + 22  );
			 mw = Math.max(  mw, ( mb.scrollWidth+22) );
		var mh =  mb.options.length * 15 + 2 ; //+8 
			 
		var mx = (ie5)?-3:0;
		var my = el.offsetHeight -2;
		var docH =   document.documentElement.offsetHeight ;
		var bottomH = docH  - el.getBoundingClientRect().bottom ; 

		mh = Math.min(mh, Math.max(( docH - el.getBoundingClientRect().top - 50),100)		);
		
		if(( bottomH < mh) )
		{
			mh = Math.max( (bottomH - 12),10);
			if( mh <100 ) 
				my = -100 ;
			mh = Math.max(mh,100);			
		}
		self.focus(); 
		el.menu.show( mx , my ,  mw, mh , el); 
		sync=null;
		if(mb.options.selected)
		{
			mb.scrollTop = mb.options.selected.offsetTop;
		}
		window.onresize = function(){el.menu.hide()};		
	}

	function switchMenu()
	{
		if(event.keyCode)
		{
			if(event.keyCode==40){ el.contentIndex++ ;}
			else if(event.keyCode==38){ el.contentIndex--; }
		}
		else if(event.wheelDelta )
		{
			if (event.wheelDelta >= 120)
			el.contentIndex++ ;
			else if (event.wheelDelta <= -120)
			el.contentIndex-- ;
		}else{return true;}

		if( el.contentIndex > (el.contentOptions.length-1) ){ el.contentIndex =0;}
		else if (el.contentIndex<0){el.contentIndex = el.contentOptions.length-1 ;}

		var o = document.createElement("option");
			 o.value = el.contentOptions[el.contentIndex].value;
			 o.innerHTML = el.contentOptions[el.contentIndex].text;
			 while(el.options.length>0){el.options[0].removeNode(true);}
			 el.appendChild(o);
			 el.title =  o.innerHTML; 

		var event1 = event || window.event;
		if (event1.stopPropagation) 
		{
			event1.stopPropagation();
		} else 
		{
			window.event.cancelBubble = true;
			return false;
		} 
	}
	
	if(dropdown_menu_hack.menu ==null)
	{
		dropdown_menu_hack.menu =  window.createPopup();
		document.attachEvent("onkeydown",dropdown_menu_hack.menu.hide);
	}
	
	el.menu = dropdown_menu_hack.menu ;
	el.contentOptions = new Array();
	el.contentIndex = el.selectedIndex;
	el.contentHTML = el.outerHTML;
	for(var i=0;i<el.options.length;i++)
	{	
		el.contentOptions [el.contentOptions.length] = 
		{
			"value": el.options[i].value,
			"text": el.options[i].innerHTML
		}
		if(!el.options[i].selected){el.options[i].removeNode(true);i--;};
	}
	el.onkeydown = switchMenu;
	el.onclick = showMenu;
	el.onmousewheel= switchMenu;
	
	document.onclick = function()
	{
		if(clickedOutsideElement('cmbNegozi'))
		{
			if(isOpen)isOpen = !isOpen;			
		}
	};
	
	document.onkeydown = function()
	{
		var theElem = getEventTarget(window.event);
		if(document.getElementById('cmbNegozi') == null || !isOpen)
		return;
		var screen_height = screen.availHeight;
		var max_height = mb.options.length * mb.options[0].offsetHeight;
		var current_height = mb.offsetHeight;
		var num_vis = Math.ceil(current_height / mb.options[0].offsetHeight);
		var top_position = ($("#cmbNegozi").offset().top);
		var ev = event || window.event;
		if(isOpen)
		{
			if(ev.keyCode == 13)
			{
				negozioHomePage(); return;
			}
			var i = 0;
			var ok = false;
			while(i < mb.options.length && !ok)
			{
				if(mb.options.selected.value == mb.options[i].value)
				{
					var ind = (i + 1) % mb.options.length;
					if(ev.keyCode == 38)
					{
						if(i == 0)
							ind = mb.options.length - 1;
						else
							ind = i - 1;
					}
					
					mb.options[i].style.cssText = "list-style:none;margin:0;padding:1px 2px;width/**/:100%;cursor:hand;cursor:pointer;white-space:nowrap;color:#666666;";
					mb.options[ind].style.background="#3399FF";
					mb.options[ind].style.color="white";
					mb.options.selected = mb.options[ind];
					mb.options.selectedIndex = ind;
					
					//SI CAMBIA L'ELEMENTO SELEZIONATO NELLA SELECT
					var o = document.createElement("option");
					o.value = mb.options[ind].value;
					o.innerHTML = mb.options[ind].innerHTML;			
					while(el.options.length>0){el.options[0].removeNode(true);}
					el.appendChild(o);
					el.title =  o.innerHTML;
					el.contentIndex = mb.options[ind].selectedIndex;
					/*************************************************/
					
					if(max_height > current_height)
					{
						scroll_end = scroll_start + mb.options[i].offsetHeight;
						if(ev.keyCode == 38)
							scroll_end = scroll_start - mb.options[i].offsetHeight;
						if(ev.keyCode == 40 && i == mb.options.length - 1)
							scroll_end = 0;
						if(ev.keyCode == 38 && i == 0)
						{
							scroll_end = (mb.options.length - num_vis) * mb.options[i].offsetHeight;
							if(i == 0)
								scroll_end = scroll_end + mb.options[i].offsetHeight;
						}
						
						/*if(ev.keyCode == 40 && ( (i >= (num_vis - 1) || i <= (mb.options.length - num_vis)) || (i == (mb.options.length-1))) )
						{
							scroll_start = scroll_end;
							mb.scrollTop = scroll_end;
						}
						if(ev.keyCode == 38 && ((i <= (mb.options.length - num_vis)) || (i == 0)) )
						{
							scroll_start = scroll_end;
							mb.scrollTop = scroll_end;
						}*/
						scroll_start = scroll_end;
						mb.scrollTop = scroll_end;
					}
					ok = true;
				}
				i = i + 1;
			}
			window.event.cancelBubble = true;
			return false;
		}
	};		
}

function clickedOutsideElement(elemId) {
    var theElem = getEventTarget(window.event);

    while(theElem != null) {
        if(theElem.id == elemId)
            return false;

        theElem = theElem.offsetParent;
    }

    return true;
}

function getEventTarget(evt) 
{
    var targ = (evt.target) ? evt.target : evt.srcElement;

    if(targ != null) 
	{
        if(targ.nodeType == 3)
            targ = targ.parentNode;
    }

    return targ;
}
