// APLHpopupmenu.js
// Nick Casey 25/05/2007
// Active script for aplacelikehome popup filter menus

    var menuDisplayed = false;
    
    //to handle wait before mouseover event
    var filterButton;
    var mouseoverWaited = 0;
    var mouseOut = true;

    function initFilterButtonEventHandlers()
    {
        var filterButton;
        
        filterButton = document.getElementById('btnBedroomsFilter');
        filterButton.onmouseover = do_filterbuttonmouseover;
				if (filterButton.captureEvents) filterButton.captureEvents(Event.MOUSEOVER);
				filterButton.onmouseout = do_filterbuttonmouseout;
				if (filterButton.captureEvents) filterButton.captureEvents(Event.MOUSEOUT);
		
				filterButton = document.getElementById('btnSleepsFilter');
        filterButton.onmouseover = do_filterbuttonmouseover;
				if (filterButton.captureEvents) filterButton.captureEvents(Event.MOUSEOVER);
				filterButton.onmouseout = do_filterbuttonmouseout;
				if (filterButton.captureEvents) filterButton.captureEvents(Event.MOUSEOUT);
		
				filterButton = document.getElementById('btnPriceBandFilter');
        filterButton.onmouseover = do_filterbuttonmouseover;
				if (filterButton.captureEvents) filterButton.captureEvents(Event.MOUSEOVER);
				filterButton.onmouseout = do_filterbuttonmouseout;
				if (filterButton.captureEvents) filterButton.captureEvents(Event.MOUSEOUT);
    
        filterButton = document.getElementById('btnAreaFilter');
        filterButton.onmouseover = do_filterbuttonmouseover;
				if (filterButton.captureEvents) filterButton.captureEvents(Event.MOUSEOVER);
				filterButton.onmouseout = do_filterbuttonmouseout;
				if (filterButton.captureEvents) filterButton.captureEvents(Event.MOUSEOUT);
		
    }
	
	function initPopupEventHandlers()
	{

		//attach body event to close pop ups
		document.body.onclick = clickBody;
		if (document.body.captureEvents) body.captureEvents(Event.CLICK);
		
		var menus = getMenusElement();
		for(i=0;i<menus.childNodes.length;i++)
		{
		
			//for every child of the body
			//if it is a div and the id begins menu
			if(menus.childNodes[i].tagName=="DIV")
			{
			
				if(menus.childNodes[i].id.indexOf("menu")==0)
				{
					//attach the events
					var menu = menus.childNodes[i];
					menu.onmouseover = do_menumouseover;
					if (menu.captureEvents) menu.captureEvents(Event.MOUSEOVER);
					menu.onmouseout = do_menumouseout;
					if (menu.captureEvents) menu.captureEvents(Event.MOUSEOUT);
				}
			}
		}			
	}
	
	
	function hideMenus() 
	{
        if (menuDisplayed)
		{
            //for each child of content
            var menus = getMenusElement();
            for(i=0;i<menus.childNodes.length;i++)
		    {
		        if(menus.childNodes[i].tagName=="DIV")
			    {
                    //if it starts "menu, hide it
			        if(menus.childNodes[i].id.indexOf("menu")==0)
			        {
				        menus.childNodes[i].style.display = "none";
			        }
			    }
            }        
            
            menuDisplayed = false;
        }
    }
    
    //gets the left position of the element relative to the body
    function relativeLeft(element)
	{
		if ((element.tagName == "BODY")||(element.tagName == "HTML")) {   
			return 0;
		}
		else {
			return relativeLeft(element.offsetParent) + element.offsetLeft;
		}
	}

    //gets the top position of the element relative to the body
	function relativeTop(element)
	{
		if ((element.tagName == "BODY")||(element.tagName == "HTML")) {
			return 0;
		}
		else {
			return relativeTop(element.offsetParent) + element.offsetTop;
		}
    }
    
    /*event handlers*/
	
    function clickBody(e)
	{
		hideMenus();
	}


	function do_menumouseover(e)
	{
		var fromElem = (window.event) ? window.event.srcElement : e.target;
		if(fromElem.id.indexOf("item")==0)
        {
			fromElem.className = fromElem.getAttribute("baseClassName") + "_over";
		}
		
	}
	
	function do_menumouseout(e)
	{
		var fromElem = (window.event) ? window.event.srcElement : e.target;
		if(fromElem.id.indexOf("item")==0)
        {
			fromElem.className = fromElem.getAttribute("baseClassName");
		}
	}
	
	function do_filterbuttonmouseover(e)
	{
		filterButton = (window.event) ? window.event.srcElement : e.target;
		mouseOut = false;
		mouseoverWaited = 0;
	
		wait_filterbuttonmouseover();
	}
	
	function do_filterbuttonmouseout(e)
	{
		mouseOut = true;
	}	

	
	function wait_filterbuttonmouseover()
	{
		if(!mouseOut)
		{
			if(mouseoverWaited>250)
			{
				process_filterbuttonmouseover();
			}
			else
			{
				setTimeout("wait_filterbuttonmouseover()",10);
				mouseoverWaited += 10;
			}
		}
	}
	

	
	
	function process_filterbuttonmouseover()
	{
			//generalised for all filter buttoons
			hideMenus();

			//get left position of table cell that contains the menu
			var left = relativeLeft(filterButton.parentNode);
			var top = relativeTop(filterButton.parentNode) + filterButton.parentNode.offsetHeight - 10//-10 to make up for the heading spacing
			var width = filterButton.parentNode.offsetWidth;

			//display area filter
			var menuAreaFilter = document.getElementById(filterButton.id.replace(/btn/, "menu"));
			menuAreaFilter.style.left = left + "px";
			menuAreaFilter.style.top = top + "px";
			menuAreaFilter.style.width = width + "px";
			menuAreaFilter.style.display="block";

			menuDisplayed = true;
	}