// --------------------------------------
// Global Vars
// --------------------------------------
var jsmbMenuDivClass = "agAutoMenuDiv";
var jsmbMenuTitleContent = "";
var jsmbMenuTitleClass = "agAutoMenuTitle";
var jsmbMenuItemClass = "agAutoMenuItem";
var jsmbMenuItemContentClass = "agAutoMenuContentDiv";
var jsmbMenuItemTitleClass = "agAutoMenuContentTitle"; 
var jsmbMenuItemCounter = 0;
var jsmbSelectedMenuItem = 0;
var jsmbLogAjaxInProgress = false;

var totalButtons = 3;
var selectedButton = "NONE";

var splashTimeoutId = null;
var splashDelay = 3000;
var selectedSplash = 0;
var splashFileNames = Array();
var splashAltText = Array();
var splashHrefURL = Array();

// ----------------------------------------
// Use instead of window.onload for jQuery
// ----------------------------------------
window.onresize = jsmbClearTopMenu;
window.onscroll = jsmbStopSplash;
jQuery(jsmbInitJS);

// ----------------------------------------
// jsmbInitJS()
// ----------------------------------------
function jsmbInitJS() {

  // Turn on or off effects
  jQuery.fx.off = false;

  // Hide all submenus and add events
  // Note: don't use mouseover because of touch screens
  jsmbClearTopMenu();
  jQuery(".agTopMenuItem").click(jsmbShowSubmenu);
  jQuery(".agCloseMenuLink").click(jsmbCloseMenuOnclick);
  
  // Build the splashes
  splInitJS();
  
  // Build the menu
  jsmbBuildMenu();

  // Hide all content and then display selected content.
  // (Selected menu item could be set by a cookie but that
  // makes this JavaScript page specific, right?)
  jsmbSelectedMenuItem = 0;
  jsmbHideAllContent();
  jsmbShowSelectedContent();
  jsmbHighlightSelectedItem();

}

// -------------------------------------
// jsmbStopSplash()
// -------------------------------------
function jsmbStopSplash() {
	window.clearTimeout(splashTimeoutID);
}

// --------------------------------------
// jsmbCloseMenuOnclick()
// --------------------------------------
function jsmbCloseMenuOnclick(event) {
	jsmbClearTopMenu();
	event.preventDefault();
}

// --------------------------------------
// jsmbClearTopMenu()
// --------------------------------------
function jsmbClearTopMenu() {
	jQuery(".agTopMenuItem").removeClass("agTopMenuItemSelected");
	jsmbHideAllSubmenus();
}

// ---------------------------------------
// jsmbShowSubmenu()
// ---------------------------------------
function jsmbShowSubmenu(event) {
	
	// Figure out who caused the event
	var thisObject = jQuery(this);
	
	// Stop the splash from changing - IE bug
	window.clearTimeout(splashTimeoutID);
	splShowSplash();
	//splashTimeoutID = window.setTimeout(splShowSplash, 500);
	
	// Show as highlighted
	jsmbClearTopMenu();
	thisObject.addClass("agTopMenuItemSelected");
	
	// Show the appropriate submenu
	var myIDNumber = thisObject.attr("id");
	var idLength = myIDNumber.length;
	myIDNumber = myIDNumber.substring(idLength - 1, idLength);
	var submenuName = "#agTopSubmenuDiv" + myIDNumber;
	
	// Position the menu
	var position = thisObject.position();
	var myLeft = position.left;
	//var myPadding = thisObject.css("padding-left");
	//myPadding = myPadding.replace("px","");
	//myPadding = myPadding * 1;
	//myLeft = myLeft - myPadding;
	//var myBorder = thisObject.css("border-width");
	//myBorder = myBorder.replace("px","");
	//myBorder = myBorder * 1;
	//myLeft = myLeft - myBorder;
	//var submenuBorder = jQuery("#agTopSubmenuDiv0").css("border-width");
	//submenuBorder = submenuBorder.replace("px","");
	//submenuBorder = submenuBorder * 1;
	//myLeft = myLeft + submenuBorder;
	//var submenuPadding = jQuery("#agTopSubmenuDiv0").css("padding-left");
	//submenuPadding = submenuPadding.replace("px","");
	//submenuPadding = submenuPadding * 1;
	//myLeft = myLeft + submenuPadding;
	var fudgeFactor = 8;
	myLeft = myLeft - fudgeFactor - 30 + fudgeFactor;
	jQuery(submenuName).css("left",myLeft);
	
	// Show the menu
	jQuery(submenuName).slideDown("fast");

}

//----------------------------------------
//jsmbHideAllSubmenus()
//----------------------------------------
function jsmbHideAllSubmenus() {
	jQuery(".agTopSubmenuDiv").each(jsmbHideThisContent);
}

// ----------------------------------------
// jsmbBuildMenu()
// ----------------------------------------
function jsmbBuildMenu() {

  // Reset the menu item counter 
  jsmbMenuItemCounter = 0;

  // Create the menu title and then the menu items
  var menuDiv = jQuery("#" + jsmbMenuDivClass);
  var hObject = jQuery(document.createElement("h2"));
  hObject.attr("class", jsmbMenuTitleClass);
  hObject.text(jsmbMenuTitleContent);
  menuDiv.append(hObject);
  jQuery("." + jsmbMenuItemTitleClass).each(jsmbAddMenuItem);

}

// ----------------------------------------
// jsmbAddMenuItem()
// ----------------------------------------
function jsmbAddMenuItem() {

  var thisObject = jQuery(this);

  var menuDiv = jQuery("#" + jsmbMenuDivClass);

  var pObject = jQuery(document.createElement("p"));
  pObject.attr("class",jsmbMenuItemClass);
  var aObject = jQuery(document.createElement("a"));
  aObject.attr("href","menulink" + jsmbMenuItemCounter + ".html");
  aObject.text(thisObject.text());
  aObject.click(jsmbMenuItemOnclick);
  pObject.append(aObject);

  menuDiv.append(pObject);
  jsmbMenuItemCounter++;

}

// ---------------------------------------
// jsmbMenuItemOnclick()
// ---------------------------------------
function jsmbMenuItemOnclick(event) {
  var thisObject = jQuery(this);
  var hrefLink = thisObject.attr("href");
  hrefLink = hrefLink.replace("menulink","");
  hrefLink = hrefLink.replace(".html","");
  jsmbSelectedMenuItem = hrefLink;
  jsmbHideAllContent();
  jsmbShowSelectedContent();
  jsmbHighlightSelectedItem();
  event.preventDefault();
}

// ----------------------------------------
// jsmbHideAllContent()
// ----------------------------------------
function jsmbHideAllContent() {
  jQuery("." + jsmbMenuItemContentClass).each(jsmbHideThisContent);
}

// ----------------------------------------
// jsmbHideThisContent()
// ----------------------------------------
function jsmbHideThisContent() {
  var thisObject = jQuery(this);
  thisObject.css("display","none");
}

// ----------------------------------------
// jsmbShowSelectedContent()
// ----------------------------------------
function jsmbShowSelectedContent() {

  // Reset the menu item counter
  jsmbMenuItemCounter = 0;
  jQuery("." + jsmbMenuItemContentClass).each(jsmbShowThisContent);
}

// ----------------------------------------
// jsmbShowThisContent()
// ----------------------------------------
function jsmbShowThisContent() {
  var thisObject = jQuery(this);
  if (jsmbSelectedMenuItem == jsmbMenuItemCounter) {
    thisObject.css("display","block");
  }
  jsmbMenuItemCounter++;
}

// ----------------------------------------
// jsmbHighlightSelectedItem()
// ----------------------------------------
function jsmbHighlightSelectedItem() {

  // Reset the menu item counter
  jsmbMenuItemCounter = 0;
  jQuery("." + jsmbMenuItemClass).each(jsmbHighlightThisItem);
}

// ----------------------------------------
// jsmbHighlightThisItem()
// ----------------------------------------
function jsmbHighlightThisItem() {
  var thisObject = jQuery(this);
  if (jsmbSelectedMenuItem == jsmbMenuItemCounter) {
    thisObject.css("background","#71423d");
    jsmbLogEntry(thisObject.text());
  } else {
    thisObject.css("background","none");
  }
  jsmbMenuItemCounter++;
}

// ----------------------------------------
// jsmbLogEntry(pagetitle)
// ----------------------------------------
function jsmbLogEntry(pagetitle) {
  if (pagetitle != null) {
    //jsmbLogAjaxCall();
  }
}

// ----------------------------------------
// jsmbLogAjaxCall()
// ----------------------------------------
function jsmbLogAjaxCall() {

  var ajaxURL = "http://discover.americas.sgi.com/phpServers/emailaddresses.php";

  // Send Ajax request
  jQuery.ajax({
          type: "GET",
          url: ajaxURL,
          timeout: 15000,
          data: null,
          dataType: "html",
          contentType: "application/x-www-form-urlencoded",
          beforeSend: jsmbLogAjaxBeforeSend,
          success: jsmbLogAjaxSuccess,
          error: jsmbLogAjaxError,
          complete: jsmbLogAjaxComplete
  });
}

// ----------------------------------------
// jsmbLogAjaxBeforeSend()
// ----------------------------------------
function jsmbLogAjaxBeforeSend(httpRequestObject, optionsObject) {
  if (jsmbLogAjaxInProgress == false) {
    jsmbLogAjaxInProgress = true;
    return true;
  } else {
    return false;
  }
}

// ----------------------------------------
//jsmbLogAjaxError()
// ----------------------------------------
function jsmbLogAjaxError(httpRequestObject, statusCode) {
  var httpStatusCode = httpRequestObject.status;
  alert(statusCode + ":" + httpStatusCode);
}

// ----------------------------------------
// jsmbLogAjaxSuccess()
// ----------------------------------------
function jsmbLogAjaxSuccess(dom, statusCode, httpRequestObject) {
  // Do something
  alert("It Worked!");
}

// ----------------------------------------
//jsmbLogAjaxComplete() - called after success or error
// ----------------------------------------
function jsmbLogAjaxComplete(httpRequestObject, statusCode) {
  if (statusCode == "success") {
    // Do something
  } else {
    alert("There was a problem with the Ajax request.");
  }
  jsmbLogAjaxInProgress = false; 
}

//----------------------------------------
//splInitJS()
//----------------------------------------
function splInitJS() {
	// Turn on or off effects
	jQuery.fx.off = false;
	jQuery(".navButton").click(splButtonClick);
	jQuery(window).resize(splSizeStats);
	splSizeStats();
	splSupportedStats();
	
	// Set up the splash arrays
	selectedSplash = 0;
	splashFileNames = new Array();
	splashAltText = new Array();
	splashHrefURL = new Array();
	jQuery(".splashImage").each(splLoadSplashArrays);
	
	// Load the button text
	jQuery("#splashButtons").text("");
	for (var i = 0; i < splashFileNames.length; i++) {
		var buttonName = i + 1;
		var buttonText = "";
		buttonText = buttonText + "<a id=\"splashButton";
		buttonText = buttonText + i;
		buttonText = buttonText + "\" class=\"splashButton";
		if (i == 0) {
			buttonText = buttonText + " splashButtonSelected";
		}
		buttonText = buttonText + "\" href=\"";
		buttonText = buttonText + splashHrefURL[i];
		buttonText = buttonText + "\">";
		buttonText = buttonText + buttonName + "</a>";
		jQuery("#splashButtons").append(buttonText);
	}
	jQuery(".splashButton").click(splSplashButtonClick);
	
	splShowSplash();
	splashTimeoutID = window.setTimeout(splStartSplashChange, splashDelay);
}

//----------------------------------------
// splLoadSplashArrays()
//----------------------------------------
function splLoadSplashArrays(index, element) {
	splashFileNames[index] = jQuery(element).attr("src");
	splashAltText[index] = jQuery(element).attr("alt");
	splashHrefURL[index] = jQuery(element).parent().attr("href");
}

//----------------------------------------
// splHideSplash()
//----------------------------------------
function splHideSplash() {
	jQuery("#splashVisible").fadeOut("slow");
	jQuery("#splashCaption").fadeOut("slow");
	for (var i = 0; i < splashFileNames.length; i++) {
		jQuery("#splashButton" + i).removeClass("splashButtonSelected");
	}
}

//----------------------------------------
//splShowSplash()
//----------------------------------------
function splShowSplash() {
	
	// Update the button
	jQuery("#splashButton" + selectedSplash).addClass("splashButtonSelected");
	
	// Update the image
	var imageElement = jQuery("#splashVisible");
	imageElement.attr("src", splashFileNames[selectedSplash]);
	imageElement.attr("alt", splashAltText[selectedSplash]);
	imageElement.fadeIn("slow");
	imageElement.parent().attr("href", splashHrefURL[selectedSplash]);
	
	// Update the caption
	var captionElement = jQuery("#splashCaption");
	var captionLink = "<a id=\"splashCaptionLink\" href=\"";
	captionLink = captionLink + splashHrefURL[selectedSplash];
	captionLink = captionLink + "\">";
	captionLink = captionLink + splashAltText[selectedSplash];
	captionLink = captionLink + "</a>";
	captionElement.html(captionLink);
	captionElement.fadeIn("slow");
	
}

//----------------------------------------
// splStartSplashChange()
//----------------------------------------
function splStartSplashChange() {
	splHideSplash();
	splashTimeoutID = window.setTimeout(splEndSplashChange, 500);
}

//----------------------------------------
// splEndSplashChange()
//----------------------------------------
function splEndSplashChange() {
	selectedSplash = selectedSplash + 1;
	if (selectedSplash >= splashFileNames.length) {
		selectedSplash = 0;
	}
	splShowSplash();
	splashTimeoutID = window.setTimeout(splStartSplashChange, splashDelay);
}

//----------------------------------------
// splSplashButtonClick()
//----------------------------------------
function splSplashButtonClick(event) {
	
	// Find the button that was clicked and act on it
	for (var i = 0; i < splashFileNames.length; i++) {
		if (jQuery(event.target).attr("id") == "splashButton" + i) {
			if (selectedSplash == i) {
				break;
			} else {
				selectedSplash = i;
				window.clearTimeout(splashTimeoutID);
				splHideSplash();
				splashTimeoutID = window.setTimeout(splShowSplash, 500);
				break;
			}
		}
	}
	
	// Don't follow the link
	event.preventDefault();
}

//----------------------------------------
// splSizeStats()
//----------------------------------------
function splSizeStats() {
	var windowWidth = jQuery(window).width();
	var documentWidth = jQuery(document).width();
	var windowHeight = jQuery(window).height();
	var documentHeight = jQuery(document).height();
	var alertString = "Width w=" + windowWidth;
	alertString = alertString + " d=" + documentWidth + "<br/>";
	alertString = alertString + "Height w=" + windowHeight;
	alertString = alertString + " d=" + documentHeight;
	jQuery("#windowSize").html(alertString);
}

//----------------------------------------
// splSupportedStats()
//----------------------------------------
function splSupportedStats() {
	var supportedStats = "";
	
	jQuery.each(jQuery.browser, function(i, val) {
		supportedStats = supportedStats + "jQuery.browser." + i + "=" + val + "<br/>";
	});
	supportedStats = supportedStats + "<br/>";
	
	supportedStats = supportedStats + "ajax=" + jQuery.support.ajax + "<br/>";
	supportedStats = supportedStats + "boxModel=" + jQuery.support.boxModel + "<br/>";
	supportedStats = supportedStats + "changeBubbles=" + jQuery.support.changeBubbles + "<br/>";
	supportedStats = supportedStats + "checkClone=" + jQuery.support.checkClone + "<br/>";
	supportedStats = supportedStats + "checkOn=" + jQuery.support.checkOn + "<br/>";
	supportedStats = supportedStats + "cors=" + jQuery.support.cors + "<br/>";
	supportedStats = supportedStats + "cssFloat=" + jQuery.support.cssFloat + "<br/>";
	supportedStats = supportedStats + "hrefNormalized=" + jQuery.support.hrefNormalized + "<br/>";
	supportedStats = supportedStats + "htmlSerialize=" + jQuery.support.htmlSerialize + "<br/>";
	supportedStats = supportedStats + "leadingWhitespace=" + jQuery.support.leadingWhitespace + "<br/>";
	supportedStats = supportedStats + "noCloneChecked=" + jQuery.support.noCloneChecked + "<br/>";
	supportedStats = supportedStats + "noCloneEvent=" + jQuery.support.noCloneEvent + "<br/>";
	supportedStats = supportedStats + "opacity=" + jQuery.support.opacity + "<br/>";
	supportedStats = supportedStats + "optDisabled=" + jQuery.support.optDisabled + "<br/>";
	supportedStats = supportedStats + "optSelected=" + jQuery.support.optSelected + "<br/>";
	supportedStats = supportedStats + "scriptEval()=" + jQuery.support.scriptEval() + "<br/>";
	supportedStats = supportedStats + "style=" + jQuery.support.style + "<br/>";
	supportedStats = supportedStats + "submitBubbles=" + jQuery.support.submitBubbles + "<br/>";
	supportedStats = supportedStats + "tbody=" + jQuery.support.tbody + "<br/>";
	jQuery("#supportedStats").html(supportedStats);
}

//----------------------------------------
// splButtonClick()
//----------------------------------------
function splButtonClick(event) {
	
	// Change the selected buton
	jQuery("#" + selectedButton).removeClass("navButtonSelected");
	jQuery(this).addClass("navButtonSelected");
	
	// Change the content pane
	if (selectedButton != this.id && selectedButton != "NONE") {
		var selectedContentPaneID = "#" + selectedButton + "Content";
		//jQuery(selectedContentPaneID).slideUp("slow");
		jQuery(selectedContentPaneID).fadeOut("slow");
		selectedButton = this.id;
		if (jQuery.fx.off == true) {
			splShowContentPane();
		} else {
			var timeoutId = window.setTimeout(splShowContentPane, 500);
		}
	} else if (selectedButton == "NONE") {
		selectedButton = this.id;
		splShowContentPane();
	}
		
	// Don't follow the link
	event.preventDefault();
}
//----------------------------------------
// splShowContentPane()
//----------------------------------------
function splShowContentPane() {
	var selectedContentPaneID = "#" + selectedButton + "Content";
	//jQuery(selectedContentPaneID).slideDown("slow");
	jQuery(selectedContentPaneID).fadeIn("slow");
}


