window.onload = init; // call initialize function on window load
 
// *****************************************
// Initialization
// *****************************************

function init() {

    // Preload Images    
    pic1 = new Image(88,39);
    pic2 = new Image(88,39); 
    pic1.src="/images/btn_topNav_brightYellow.gif"; 
    pic2.src="/images/btn_topNav_brightGreen.gif"; 

    
    // Event handlers
    document.getElementById("topNav1").onmouseover = mouseOverEffect;
    document.getElementById("topNav2").onmouseover = mouseOverEffect;
    document.getElementById("topNav3").onmouseover = mouseOverEffect;
    document.getElementById("topNav4").onmouseover = mouseOverEffect;
    document.getElementById("topNav5").onmouseover = mouseOverEffect;
    document.getElementById("topNav6").onmouseover = mouseOverEffect;
    document.getElementById("topNav7").onmouseover = mouseOverEffect;
    
    document.getElementById("topNav1").onmouseout = mouseOverEffect;
    document.getElementById("topNav2").onmouseout = mouseOverEffect;
    document.getElementById("topNav3").onmouseout = mouseOverEffect;
    document.getElementById("topNav4").onmouseout = mouseOverEffect;
    document.getElementById("topNav5").onmouseout = mouseOverEffect;
    document.getElementById("topNav6").onmouseout = mouseOverEffect;
    document.getElementById("topNav7").onmouseout = mouseOverEffect;            


    // *****************************************
    // Autocomplete
    // *****************************************

    YAHOO.example.ItemSelectHandler = function() {
        
        var oDS = new YAHOO.util.XHRDataSource("/autocomplete.aspx"); // Use an XHRDataSource        
        oDS.responseType = YAHOO.util.XHRDataSource.TYPE_JSON; // Set the responseType
        
        // Define the schema of the JSON results
        oDS.responseSchema = {
            resultsList: "ResultSet.Result",
            fields: ["Title", "Url"]
        };

        // Instantiate the AutoComplete
        var oAC = new YAHOO.widget.AutoComplete("searchBox", "autoCompleteContainer", oDS);


        oAC.queryDelay = .25; // Throttle requests sent
        oAC.resultTypeList = false;
        oAC.forceSelection = true; 
        oAC.useIFrame = true; // fixes IE 6 z-index bug
        
        // The webservice needs additional parameters   
        oAC.generateRequest = function(sQuery) {   
            return "?query=" + sQuery ;   
        };
        
        
        // Define an event handler to populate a hidden form field
        // when an item gets selected
        var searchValueField = YAHOO.util.Dom.get("searchValue");
        var myHandler = function(sType, aArgs) {
            var myAC = aArgs[0]; // reference back to the AC instance
            var elLI = aArgs[1]; // reference to the selected LI element
            var oData = aArgs[2]; // object literal of selected item's result data

            // update hidden form field with the selected item's URL
            searchValueField.value = oData.Url;
        };
        oAC.itemSelectEvent.subscribe(myHandler);

        // Handle form submission
        var onFormSubmit = function(e, myForm) {
            YAHOO.util.Event.preventDefault(e);
            if (searchValueField.value != "") {
                document.location.href = searchValueField.value;            
            }
        };
        YAHOO.util.Event.addListener(document.getElementById("searchButton"), "click", onFormSubmit); // use document.forms[0] to get first form
        YAHOO.util.Event.addListener(document.getElementById("searchBox"), "focus", clearSearchBox);        

        return {
            oDS: oDS,
            oAC: oAC
        };
    } ();
          
    
}


// *****************************************
// Supporting Functions
// *****************************************


// Sets active section in top navigation menu
function setTopMenu(selected) {		
    document.getElementById("topNav"+selected).className = "selected";	 // change style of currently selected menu item
}


// On mouseOver, change element class (highlight top menu items on mouseover)
function mouseOverEffect() {
        if (this.className == "yellow") {
            this.className = "brightYellow";
        }
        else if (this.className == "brightYellow") {
            this.className = "yellow";
        }
        
        if (this.className == "green") {
            this.className = "brightGreen";
        }
        else if (this.className == "brightGreen") {
            this.className = "green";
        }
}


// Expand/Collapse Rows (Used for side navigation menu)
// ID = element to expand/collaps, ROWS = number of rows in section
function toggle(id, rows) {

	var lineHeight = 22; // line height of row

    // Get number of rows by calculating the <a> elements within the wrapper
    objWrapper = document.getElementById(id);
    height = objWrapper.getElementsByTagName("a");    

	// if div height is zero, expand div
	if (document.getElementById(id).offsetHeight == 0) { 
		var attributes = {
			height: { to: (height.length * lineHeight) }
		};
		var anim = new YAHOO.util.Anim(id, attributes, .75, YAHOO.util.Easing.backOut);	

	} 
	// if div height is greater than zero, collapse div
	else {
		var attributes = {
			height: { to: -1 }
		};
		var anim = new YAHOO.util.Anim(id, attributes, .75, YAHOO.util.Easing.backIn);
	}
	
	anim.animate();				

}


// Hide "Search..." text on click for search box
function clearSearchBox() {
    if (this.value == "Search...") {
        this.value = "";        
    } 
}


// Show Div
function showDiv(id) {
    document.getElementById(id).style.display = "block";
}

// Hide Div
function hideDiv(id) {    
    document.getElementById(id).style.display = "none";
}


// Expand Current Side Menu
function expandSelectedSideMenu(categoryID) {
    if (categoryID != null && categoryID != "") {
        document.getElementById("submenu_"+categoryID).style.height = "auto";
    }
}

// Bold Currently Selected Side Menu Item
function boldSelectedSideMenu(categoryID) {
    if (categoryID != null && categoryID != "" && categoryID > 0) {
        document.getElementById("link_cat"+categoryID).style.fontWeight = "bold";
    }
}

/* ------------------------------------------------------------ */
/* Common AJAX Functions                                        */
/* ------------------------------------------------------------ */

// Creates XML HTTP Object
function GetXmlHttpObject()
{
    if (window.XMLHttpRequest)
    {
        // code for all new browsers
        return new XMLHttpRequest();      
    }
    else if (window.ActiveXObject)
    {
        // code for IE5 and IE6
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
    else
    {
        //alert("Your browser does not support XMLHTTP.");
    }
}


/* ------------------------------------------------------------ */
/* Ad Sapce                                                     */
/* ------------------------------------------------------------ */

//  Global vars
var xmlhttpAdSpace;

// Initialize Ad Space (target = element to insert ad, adSize = ad size)
function initAdSpace(target, adSize) {
		xmlhttpAdSpace = GetXmlHttpObject();
		xmlhttpAdSpace.onreadystatechange= function() { writeAdSpace(target); }
		xmlhttpAdSpace.open("GET", "/xml/adspace_"+adSize+".xml",true);	
		xmlhttpAdSpace.send(null);
}


// Retreives banner info from XML and output to screen
function writeAdSpace(target)
{
    if (xmlhttpAdSpace.readyState==4) {   
        // 4 = "loaded"    
        if (xmlhttpAdSpace.status==200) {
            // 200 = OK 
            var xmlDoc2 = xmlhttpAdSpace.responseXML;
            var totalAdsFound = xmlDoc2.getElementsByTagName("item").length; // total ads found
            var randomNum = Math.floor(Math.random()*totalAdsFound);
            document.getElementById(target).innerHTML = xmlDoc2.getElementsByTagName("code")[randomNum].childNodes[0].nodeValue;            
        }
        else {
            //alert("Problem retrieving XML data");
        }
    }
}


