/*
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),
	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)
		return;
		
	$('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

	// Plain Javascript works faster on IE6 (unconfirmed)
	if (Prototype.Browser.IE6 || Prototype.Browser.IE7) {
	// Prototype code is very SLOW on IE6
	// $$('#header li').each(function(item){
	// 	item.observe('mouseover', function(event) {
	// 		this.addClassName('hover');
	// 	});
	// 	item.observe('mouseout', function(event) {
	// 		this.removeClassName('hover');
	// 	});
	// });
		var sfEls = document.getElementById("header").getElementsByTagName("LI");
		for (var i = 0; i < sfEls.length; i++) {
			sfEls[i].onmouseover = function() {
				this.className += " hover";
			}
			sfEls[i].onmouseout = function() {
				this.className = this.className.replace(new RegExp(" hover\\b"), "");
			}
		}

		var sfEls2 = document.getElementById("nav");
		if (sfEls2 != null) {
			sfEls2.getElementsByTagName("LI");
			for (var i = 0; i < sfEls2.length; i++) {
				sfEls2[i].onmouseover = function() {
					this.className += " hover";
				}
				sfEls2[i].onmouseout = function() {
					this.className = this.className.replace(new RegExp(" hover\\b"), "");
				}
			}
		}
	}

	// 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').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'
				});
			}
		});
	});
});


