
/// <reference path="../jQuery/1.3.1/jquery-1.3.1-vsdoc.js" />


/*
 *****************************
 *	RUN ON <DOCUMENT READY>
 *****************************
 */
	$(document).ready(function() 
	{
		setupHoverBehaviour();
		
		setupNewWindowLinks();
		
		disableLinks();
	});



/*
 *****************************
 *	CORE HOVER FUNCTIONALITY
 *****************************
 */
	
	function setupHoverBehaviour()
	{
		
		$(".a-auto-hover").each
		(
			function(i)
			{
				//Generate unique hover class name
				var uniqueHoverClassName = generateHoverClassName($(this));
				
				$(this).hover
				(
					function()
					{
						//ADD CLASS
						var _this = $(this);
						if (!_this.hasClass(uniqueHoverClassName)) _this.addClass(uniqueHoverClassName);
					},
					function()
					{
						//REMOVE CLASS
						var _this = $(this);
						if (_this.hasClass(uniqueHoverClassName)) _this.removeClass(uniqueHoverClassName);
					}
				);
				
				$(this).click
				(
					function ()
					{
						//REMOVE CLASS
						var _this = $(this);
						if (_this.hasClass(uniqueHoverClassName)) _this.removeClass(uniqueHoverClassName);
					}
				);
				
				
			}
		)
		
		
		// Automatically add a hover functionality to all SIFR object tags nested within 'a-auto-hover' items to enable ancestor roll-over fuctionality.
		// i.e. add auto generated class to parent
		
		/*
		 * NOT SURE THAT THIS IS NEEDED !!!
		 *
		$(".a-auto-hover object").each
		(
			function(i)
			{
				//Generate unique hover class name
				
				var _parent = $(this).parent("a-auto-hover");
				
				var uniqueHoverClassName = generateHoverClassName(_parent);
				
				$(this).hover
				(
					function()
					{
						//ADD CLASS TO PARENT
						var _parent = $(this).parent("a-auto-hover");
						if (!_parent.hasClass(uniqueHoverClassName)) _parent.addClass(uniqueHoverClassName);
					},
					function()
					{
						//REMOVE CLASS
						var _parent = $(this).parent("a-auto-hover");
						if (_parent.hasClass(uniqueHoverClassName)) _parent.removeClass(uniqueHoverClassName);
					}
				);
				
			}
		)
		
		*/
	}
	
	
	
	var AUTO_HOVER_CLASS_STUB			= "-hover"
	var AUTO_HOVER_CLASS_TARGET_NAME	= "a-auto-hover"
	var DEFAULT_HOVER_CLASS				= "hover"
	
	
	function generateHoverClassName (jQueryObjRef)
	{
		var classNames = jQueryObjRef.attr("class");
		
		//Get index of 'AUTO_HOVER_CLASS_TARGET_NAME'
		//Add 1 to account for space
		//Get next class name
			//:: Find index of next space (nextSpaceIndex)
			//:: Extract class name string :: BETWEEN (indexOf(AUTO_HOVER_CLASS_TARGET_NAME) + AUTO_HOVER_CLASS_TARGET_NAME.length + 1) &&&&&& indexOf(nextSpaceIndex)
		//Append 'HOVER_CLASS_STUB' to extracted class name and return
		
		var tgtClassIndex			= classNames.indexOf(AUTO_HOVER_CLASS_TARGET_NAME);
		var baseClassIndexStart		= tgtClassIndex + AUTO_HOVER_CLASS_TARGET_NAME.length + 1;
		var baseClassIndexEnd		= 0;
		
		var baseClassName			= "";
		var hoverClassName			= "";
		
		//alert("tgtClassIndex = " + tgtClassIndex + "\nbaseClassIndexStart = " + baseClassIndexStart + "\nbaseClassIndexEnd = " + baseClassIndexEnd);
		
		// Only generate class name if there is a class following the 'AUTO_HOVER_CLASS_TARGET_NAME' class
		if (baseClassIndexStart < classNames.length && baseClassIndexStart < classNames.length)
		{
			baseClassIndexEnd		= classNames.indexOf(" ", baseClassIndexStart)
			baseClassName			= (baseClassIndexEnd == -1) ? classNames.slice(baseClassIndexStart) : classNames.slice(baseClassIndexStart, baseClassIndexEnd);
			hoverClassName			= baseClassName + AUTO_HOVER_CLASS_STUB;
		}
		else
		{
			hoverClassName = DEFAULT_HOVER_CLASS;
		}
		//alert("tgtClassIndex = " + tgtClassIndex + "\n" + "baseClassIndexStart = " + baseClassIndexStart + "\n" + "baseClassIndexEnd = " + baseClassIndexEnd + "\n" + "baseClassName = " + baseClassName + "\n" + "hoverClassName = " + hoverClassName);
		
		return hoverClassName;
	}
	
	
	

/*
 *****************************
 *	UTILITY METHOD OPEN LINKS MARKED AS EXTERNAL IN A NEW WINDOW
 *****************************
 */

	function setupNewWindowLinks()
	{
		/*
		 * Utility function that opens any new window commands. Add a w=NUM and h=NUM to the QS to force a custom size on open.
		 */
		
		/*
		 * UPDATE	:: 17-02-2009
		 *			:: Liam Prescott 
		 *			:: Upgraded to be compatiable with jQuery v1.3.1
		 *			:: Change log:
		 *			::	> a[@rel = 'external'] changed to a[rel = 'external']
		 */
			 
		$("a[rel = 'external']").click(
			function() {
				var link = $(this);
				var qs = getQS(link.attr("href"));
				if (!qs.w) qs.w = 800;
				if (!qs.h) qs.h = 600;
				window.open(link.attr("href"), link.attr("id"), "width=" + qs.w + ",height=" + qs.h + ",menubar=yes,location=yes,resizable=yes,status=yes,toolbar=yes,scrollbars=yes");
				return false;
			}
		);
	}



/*
 *****************************
 *	ANY LINKS MARKED AS DISABLED HAVE THE HREF ATTRIBUTE REMOVED
 *****************************
 */

	function disableLinks()
	{
		/*
		 * Utility function that removes the href from any disabled links.
		 */
		$("a.disabled").each(
			function() {
				$(this).removeAttr("href");
			}
		);
	}
	
	
	