(function($){
	var debug = true;

 	$.fn.extend({ 
 		//plugin name - ubmSearch
 		ubmaudiences: function(options) {

			var defaults = {
				currentIndex: 1
			    //region: 0,
			    //audience: 0,
			    //type: 0
			};
			
			var options = $.extend(defaults, options);		

			initOnlySix();

    		return this.each(function() {
				var o = options;
				var obj = $(this);
				//Add jScrollPanel
				var tmp = obj.siblings('.gui-panelbg').not("img");
				tmp.show();
				$('.gui-descpanel',tmp).show().jScrollPane({showArrows:true, scrollbarWidth:12});
				tmp.hide();
				obj.siblings().not("img").bind('mouseenter',skipDefault );
				obj.siblings().not("img").bind('mouseleave',enlargedOut );
				obj.children("a").bind('click',allowDefault );
				obj.bind('click', buttonClick );
				obj.bind('mouseenter', buttonOver );
				obj.bind('mouseleave', buttonOut );
				obj.data('options',o);
				obj.append(obj.siblings().not("img"));
				/*JAH Temp hack*/
				obj.siblings(".gui-image").bind('mouseenter', hackyOver );
				obj.siblings(".gui-image").bind('mouseleave', hackyOut );
				obj.siblings(".gui-image").data('obj',obj);
				//$.log('hmm: '+obj.siblings(".gui-image").attr('src'));
				//$.log('hmm: '+$(this).attr('class'));
    		});
    	}
	});
	
	/*JAH Temp hack: trigger over function on img*/
	function hackyOver() {
		var obj = $(this).data('obj');
		obj.trigger('mouseenter');	
	}
	
	/*JAH Temp hack: trigger out function on img*/
	function hackyOut() {
		var obj = $(this).data('obj');
		obj.trigger('mouseleave');	
	}
	
	function initOnlySix(){
		if( $('#product-groups div:not("#product-groups div div")').length > 6 ){
			var open = false;
			
			
			$('#product-groups').append('<a href="" id="product-groups-toggle">More...</a>');

			//var list = $('#product-groups div:not("#product-groups div div"):gt(5)');
			var list = $('#product-groups div:not("#product-groups div div"):gt(5)');
			//list.hide();
			list.fadeOut(1);
			
			$('a#product-groups-toggle').click(function() {
				if(open){
					$('a#product-groups-toggle').html("More...");		
					list.fadeOut('slow');
					$('html, body').animate({scrollTop:0}, 'fast');
				}else{
					$('a#product-groups-toggle').html("Less...");
					list.slideToggle( true );
					
					var scrollTo = $('#product-groups div:not("#product-groups div div"):eq(6)').offset().top;
					$('html, body').animate({scrollTop:scrollTo}, { duration: "slow", easing: "swing" });
				}
				open = !open;
				return false;
			});
			
		}
	}
	
	// private function buttonOver aud-links-bg aud-links-bgtp
	function skipDefault(e) {
		e.preventDefault();
		$("#product-groups .gui-expander").children('.gui-panelbg, .gui-linklist').stop(true,true);
		$.log('skip Default['+e.type+']: '+e.target);
	};	
	
	// private function buttonOver aud-links-bg aud-links-bgtp
	function allowDefault(e) {
		$.log('Allow Default['+e.type+']: '+e.target);
	};
	
	// private function buttonOver aud-links-bg aud-links-bgtp
	function resetAll( ) {
		$("#product-groups .gui-expander").children('.gui-panelbg').stop(true,true).fadeOut(250);
		$("#product-groups .gui-expander").children('.gui-linklist').stop(true,true).fadeOut(250);
		$("a").removeClass('selected');
		$.log('resetAll');
	};
	
	// private function buttonOver aud-links-bg aud-links-bgtp
	function resetMe(e) {
		e.removeClass('selected');
		$.log('resetMe : '+e);
	};
	
	// private function buttonOver aud-links-bg aud-links-bgtp
	function enlargedOut(e) {
		e.preventDefault();
		$.log('out ['+e.type+']: '+$(this));
	};
	
	// Return a boolean value telling whether // the first argument is a string. 
	function isString() {
		if (typeof arguments[0] == 'string') return true;
		if (typeof arguments[0] == 'object') {  
			var criterion = arguments[0].constructor.toString().match(/string/i); 
	 		return (criterion != null);  
	 	}
	 	return false;
	 };

	// private function buttonOver aud-links-bg aud-links-bgtp
	function buttonClick(e) {
		e.preventDefault();
		//do stuff...
		var targ = ''+e.target+' ';
		if ($(e.target).attr('href') != undefined) {//targ.match('object ') == null
			if($(e.target).attr('href') != '') {
				$.log('button check:'+e.type+' '+e.target);
				window.location = e.target;
			}
			return;
		}
		$.log('button click:'+e.type);//+' {'+$(e.target).attr('href')+'}:'+e.target);
	};
	
	// private function buttonOver 
	function buttonOver(e) {
		e.preventDefault();
		var opt = $(this).data('options');
		opt.currentIndex++;
		if((!$(this).hasClass('selected'))) {
			$.log('hasClass false');
			$(this).addClass('selected');
			$(this).parent("div").css('z-index', opt.currentIndex);
			$("#footer").css('z-index', '-1');
			//alert($(this).children('.gui-panelbg').text().length);
			if($(this).children('.gui-panelbg').text().length > 20) $(this).children('.gui-panelbg').stop(true,true).fadeIn(250);
			$(this).children('.gui-linklist').stop(true,true).fadeIn(250);
		}
		$.log('button over');
	};
	
	// private function buttonOut
	function buttonOut(e) {
		e.preventDefault();
		$("#footer").css('z-index', '1');
		$.log('button out');
		resetAll();
	};
		
	//Logging function - for debug purposes only.
	jQuery.log = function(message) {
		if (window.console && window.console.log) {
			console.debug(message);
		} else {
			window.status = 'Error: '+message;
		}
	};
	
})(jQuery);