/**
 * @fileoverview	The Fiveleft global namespace object.  If Fiveleft is 
 * already defined, the existing Fiveleft object will not be overwritten 
 * so that defined namespaces are preserved.
 * @static
 */
if (typeof fiveleft == "undefined") {
	var fiveleft = {};
}

(function(){

	/**
	 * Get the correct object for Scrolling
	 * @returns Object
	 */
	fiveleft.getRootScroller = function() 
	{
	    var $html = $('html');
	    var $body = $('body');
	    
	    switch( true )
	    {
		    case $html.scrollTop() > 0 :
		    	return $html;
		    	break;
		    case $body.scrollTop() > 0 :
		    	return $body;
		    	break;
		    case $html.scrollTop(1) && $html.scrollTop() === 1 :
		    	$html.scrollTop(0);
		    	return $html;
		    	break;
		    case $body.scrollTop(1) && $body.scrollTop() === 1 :
		    	$body.scrollTop(0);
		    	return $body;
		    	break;
		    default :
		    	return $({});
		    	break;
	    }
	}
	
	/**
	 * Returns the namespace specified and creates it if it doesn't exist
	 * <pre>
	 * fiveleft.namespace("property.package");
	 * fiveleft.namespace("fiveleft.property.package");
	 * </pre>
	 * Either of the above create fiveleft.property, then fiveleft.property.package
	 * <p>
	 * Be careful when naming packages. Reserved words may work in some browsers
	 * and not others. For instance, the following will fail in Safari:
	 * <pre>
	 * fiveleft.namespace("really.long.nested.namespace");
	 * </pre>
	 * This fails because "long" is a future reserved word in ECMAScript				
	 * @static																			
	 * @param	{String}	arguments 1-n namespaces to create, optional
	 * @return	{Object}	reference to the last namespace object created
	 */
	fiveleft.namespace = function () {
		
		var a=arguments;
		var aLength;
		var d;
		var dLength;
		var i;
		var initialJ;
		var o=null;
		
		// loop cache
		aLength = a.length;
		for (var i = 0; i < aLength; i++) {
			d=a[i].split(".");
			o=fiveleft;
			dLength = d.length;
			
			// fiveleft is implied, so it is ignored if it is included
			if (d[0] == "fiveleft") {
				initialJ = 1;
			} else {
				initialJ = 0;
			}
			for (var j = initialJ; j < dLength; j++) {
				o[d[j]] = o[d[j]] || {};
				o = o[d[j]];
			}
		}
		return o;
	};
	
	/**
	 * Track the event w/Google Analytics
	 * @param data
	 */
	fiveleft.trackEvent = function( arr ) {
		_gaq.push([].concat( ['_trackEvent'], arr ));
	}


})();
