// 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 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_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;
	}
