/*
Script: Broadcom
used in conjunction with prototype and scriptaculous
*/

// Extend the built-in Prototype browser detection to handle multiple versions of Safari and IE.
if (typeof(Gizmos) == 'undefined') var Gizmos = {};
Gizmos.Prototype = Gizmos.Prototype || {};

Gizmos.Prototype.Browser = {
	IE: !!(window.attachEvent && !window.opera),
	//NB: IE8 reports itself as IE7...
	IE7: (/MSIE\s7/).test(navigator.appVersion),
	IE6: (/MSIE\s6/).test(navigator.appVersion),
	Opera: !!window.opera,
	Safari: (/AppleWebKit/).test(navigator.appVersion),
	Safari2: false,
	Safari3: false,
	KHTML: (/Konqueror|Safari|KHTML/).test(navigator.userAgent),
	Gecko: (/Gecko/).test(navigator.userAgent) && !(/KHTML/).test(navigator.userAgent),
	MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
}
Gizmos.Prototype.Platform = {
	Mac: navigator.appVersion.indexOf("Mac") != -1
}

Gizmos.Prototype.detectSafariVersions = function(browser) {
	var kitName = "applewebkit/";
	var tempStr = navigator.userAgent.toLowerCase();
	var pos = tempStr.indexOf(kitName);
	var isAppleWebkit = (pos != -1);

	if (isAppleWebkit) {
		browser.Safari = true;
		var kitVersion = tempStr.substring(pos + kitName.length,tempStr.length);
		kitVersion = kitVersion.substring(0,kitVersion.indexOf(" "));
		browser.Safari2 = parseFloat(kitVersion) < 522;
		browser.Safari3 = parseFloat(kitVersion) > 522;
	}
}

Gizmos.Prototype.detectSafariVersions(Gizmos.Prototype.Browser);
Prototype.Browser = Gizmos.Prototype.Browser;


$(document).observe('dom:loaded', function() {
	// Hooks for search field
	if ($('searchfield') != null) {
		$('searchfield').observe('focus', function(event) {
			if (this.hasClassName("defaultvalue")) {
				this.value = "";
				this.removeClassName("defaultvalue");
			}
		});
		$('searchfield').observe('blur', function(event) {
			if (this.value == "") {
				this.value = "Search";
				this.addClassName("defaultvalue");
			}
		});
	}

	// Hook tab sets
	$$('ul.tabset').each(function(tabset) {
		new Control.Tabs(tabset, { setClassOnContainer: true });
	});

	// Hooks for hovering list items
	if (Prototype.Browser.IE6 || Prototype.Browser.IE7) {
		ieHover();
	}

	// Hooks for tooltip lists
	$$('div.tooltiplist a').each(function(item) {
		item.observe('mouseover', function(event) {
			var position = item.positionedOffset();
			var tooltip = $(item.id + '-tooltip');
			if (tooltip) {
				// Include in DOM to get tooltip size
				tooltip.setStyle({
					display: 'block',
					visibility: 'hidden'
				});
				var size = tooltip.getDimensions();
				// Show
				tooltip.setStyle({
					left: position.left - 25 + 'px',
					top: position.top - size.height + 1 + 'px',
					visibility: 'visible'
				});
			}
		});
		item.observe('mouseout', function(event) {
			var tooltip = $(item.id + '-tooltip');
			if (tooltip) {
				tooltip.setStyle({
					display: 'none'
				});
			}
		});
	});

	// Allow our tooltip divs to be hovered:
	$$('div.tooltiplist div.tooltip_container').each(function(item) {
		item.observe('mouseover', function(event) {
			var position = item.positionedOffset();
			var tooltip = $(item.id.replace('-tipcontainer', '-tooltip'));
			if (tooltip) {
				// Include in DOM to get tooltip size
				tooltip.setStyle({
					display: 'block',
					visibility: 'hidden'
				});
				var size = tooltip.getDimensions();
				// Show
				tooltip.setStyle({
					left: position.left - 25 + 'px',
					top: position.top - size.height - 11 + 'px',
					visibility: 'visible'
				});
			}
		});
		item.observe('mouseout', function(event) {
			var tooltip = $(item.id.replace('-tipcontainer', '-tooltip'));
			if (tooltip) {
				tooltip.setStyle({
					display: 'none'
				});
			}
		});
	});
});

function ieHover() {
	// Plain Javascript works faster on IE6 & IE7 due to a selector performance
	// issue in PrototypeJS
	var hdr = document.getElementById("header");
	
	if (hdr) {
		var items = hdr.getElementsByTagName("LI");
		for (var i = 0; i < items.length; i++) {
			items[i].onmouseover = function() {
				this.className += " hover";
			}
			items[i].onmouseout = function() {
				this.className = this.className.replace(new RegExp(" hover\\b"), "");
			}
		}
	} else {
		// we sometimes get called before #header is available, but still have to
		// set up our menu hovering.  Try again in 1 sec:
		window.setTimeout("ieHover();", 1000);
	}
}