$j = jQuery.noConflict();
$j(document).ready(function () {
	//Set custom configurations
	var config = {
	     sensitivity: 2, // number = sensitivity threshold (must be 1 or higher)
	     interval: 100, // number = milliseconds for onMouseOver polling interval
	     over: megaHoverOver, // function = onMouseOver callback (REQUIRED)
	     timeout: 100, // number = milliseconds delay before onMouseOut
	     out: megaHoverOut // function = onMouseOut callback (REQUIRED)
	};
	
	$j("#main-menu .children").css({'opacity':'0'}); //Fade sub nav to 0 opacity on default
	$j("#main-menu li").hoverIntent(config); //Trigger Hover intent with custom configurations
	
	var $banner_animation;
	$banner_interval = 8000;
	$banner_width = 965;
	$easing_time = 1000;
	$easing_style = 'easeInOutQuad';
	animateBanner();
	
	var $image_animation;
	$sidebar_interval = 10000;
	$sidebar_easing_time = 500;
	animateSidebarImages('.list-image');
	
	unlinkMenuParents(); //Remove links to unwanted parent pages
	openNewWindow('.external'); //Open external links in new window/tab
	$j('.list-image a').fancybox(); //Popup for Clients sidebar images
});

// On Hover Over
function megaHoverOver(){
    $j(this).find(".children").stop().fadeTo('fast', 1).show(); //Find sub and fade it in
    (function($j) {
        //Function to calculate total width of all ul's
        jQuery.fn.calcSubWidth = function() {
            rowWidth = 0;
            //Calculate row
            $j(this).find("ul").each(function() { //for each ul...
                rowWidth += $j(this).width(); //Add each ul's width together
            });
        };
    })(jQuery); 

    if ( $j(this).find(".row").length > 0 ) { //If row exists...

        var biggestRow = 0;	

        $j(this).find(".row").each(function() {	//for each row...
            $j(this).calcSubWidth(); //Call function to calculate width of all ul's
            //Find biggest row
            if(rowWidth > biggestRow) {
                biggestRow = rowWidth;
            }
        });

        $j(this).find(".children").css({'width' :biggestRow}); //Set width
        $j(this).find(".row:last").css({'margin':'0'});  //Kill last row's margin

    } else { //If row does not exist...

        $j(this).calcSubWidth();  //Call function to calculate width of all ul's
        $j(this).find(".children").css({'width' : rowWidth}); //Set Width

    }
}
// On Hover Out
function megaHoverOut(){
  $j(this).find(".children").stop().fadeTo('fast', 0, function() { //Fade to 0 opactiy
      $j(this).hide();  //after fading, hide it
  });
}

// Animate homepage banner
function animateBanner(){
	$banners = $j('#banner .banner');
	if ($banners.length > 1) {
		$banners.css('left','0');
		var $next = $banners.first();
		$next.addClass('current')
			.css('left',$banner_width+'px');
		$next_index = $next.index();
		bannerSelector();
		startAnimation();
	};
};
function startAnimation() {
	disableSelectors();
	enableSelectors();
	$banner_animation = setInterval("changeBanner()",$banner_interval);
};
function bannerSelector() {
	$banner_selector = $j('#banner-selector');
	$banner_selector.find('a').each(function(index){
		$j('<div class="hoverfader" />').css('opacity', 0).prependTo(this);
		$j('.activefader',this).css('opacity', 0);
	});
	$j('<div class="marker" />').prependTo($banner_selector);
	activeSelector($next_index);
	bannerTransport();
	bannerSelectorHover($banner_selector);
	bannerSelectorMarker();
};
function activeSelector($i) {
	var $banner_selectors = $j('#banner-selector a');
	var $next_banner_selector = $banner_selectors.eq($i);
	var $current_banner_selector = $j('#banner-selector a.current');
	var $current_banner_selector_index = ($banner_selectors.index($current_banner_selector));
	if ($current_banner_selector_index != $i) {
		$next_banner_selector.addClass('current');
		$j($next_banner_selector)
			.stop()
			.animate({
				color: 'rgb(255,255,255)'
			}, 500);
		$j('.activefader',$next_banner_selector)
			.stop()
			.animate({
				opacity: 1
			}, 500);
		$current_banner_selector.removeClass('current');
		$j($current_banner_selector)
			.stop()
			.animate({
				color: 'rgb(164,163,160)'
			}, 500);
		$j('.activefader',$current_banner_selector)
			.stop()
			.animate({
				opacity: 0
			}, 500);
	};
};
// replaces link 'click' behaviour with jumpToBanner()
function enableSelectors() {
/*
	$banner_selector.find('a').each(function(index){
		$j(this).click(function(event){
			disableSelectors();
			jumpToBanner(index);
			event.preventDefault();
		})
		.removeClass('disabled');
	});
*/
	$j('#banner-previous').click(function(event){
		prevBanner();
		event.preventDefault();
		})
		.removeClass('disabled');
	$j('#banner-next').click(function(event){
		changeBanner();
		event.preventDefault();
		})
		.removeClass('disabled');	
};
// unbinds link 'click' behaviour (when changing banner)
function disableSelectors() {
/*
	$banner_selector.find('a').each(function(){
		$j(this).unbind('click')
			.click(function(event) {
				event.preventDefault();
			})
		.addClass('disabled');
	});
*/
	$j('#banner-previous').unbind('click')
		.click(function(event) {
			event.preventDefault();
		})
		.addClass('disabled');
	$j('#banner-next').unbind('click')
		.click(function(event) {
			event.preventDefault();
		})
		.addClass('disabled');
};
function changeBanner() {
	var $current = $j('#banner .banner.current');
	if ($current.length == 0) $current = $j('#banner .banner:last');
	var $next = $current.next('.banner').length ? $current.next('.banner')
		: $j('#banner .banner:first');
	animateNext($next);
};
function prevBanner() {
	var $current = $j('#banner .banner.current');
	if ($current.length == 0) $current = $j('#banner .banner:first');
	var $prev = $current.prev('.banner').length ? $current.prev('.banner')
		: $j('#banner .banner:last');
	animatePrev($prev);	
}
function jumpToBanner($i) {
	clearInterval($banner_animation);
	var $current = $j('#banner .banner.current');
	var $next = $j('#banner .banner').eq($i);
	if ($next.index() > $current.index()) {
		animateNext($next);
	} else if ($next.index() < $current.index()) {
		animatePrev($next);
	} else {
		startAnimation();
	};
};
function animateNext($next) {
	disableSelectors();
	clearInterval($banner_animation);
	var $current = $j('#banner .banner.current');
	$current.stop()
		.animate({
			left: 0
		}, $easing_time, $easing_style)
		.removeClass('current');
	$next.stop()
		.css('left',($banner_width*2)+'px')
		.animate({
			left: $banner_width+'px'
		}, $easing_time, $easing_style, function(){
			startAnimation()
		})
		.addClass('current');
	activeSelector($next.index());
	bannerSelectorMarker();
};
function animatePrev($prev) {
	disableSelectors();
	clearInterval($banner_animation);
	var $current = $j('#banner .banner.current');
	$current.stop()
		.animate({
			left: ($banner_width*2)+'px'
		}, $easing_time, $easing_style)
		.removeClass('current');
	$prev.stop()
		.css('left', 0)
		.animate({
			left: $banner_width+'px'
		}, $easing_time, $easing_style, function(){
			startAnimation()
		})
		.addClass('current');
	activeSelector($prev.index());
	bannerSelectorMarker();
};
// Add previous and next buttons
function bannerTransport(){
	$banner = $j('#banner');
	$banner_previous = $j('<p id="banner-previous"><a href="#">Previous</a></p>')
		.click(function(event){
			prevBanner();
			event.preventDefault();
		})
		.appendTo($banner);
	$banner_next = $j('<p id="banner-next"><a href="#">Next</a></p>')
		.click(function(event){
			changeBanner();
			event.preventDefault();
		})
		.appendTo($banner);
};
// Highlight active banner selector
function bannerSelectorHover($banner_selector){
	$banner_selector.find('a').each(function(){
		$j(this).hover(
			function(){
				$j('.hoverfader',this)
					.stop()
					.animate({
						opacity: 1,
						backgroundColor: 'rgb(231,54,43)'
					}, 500);
			},
			function(){
				$j('.hoverfader',this)
					.stop()
					.animate({
						opacity: 0,
						backgroundColor: 'rgb(30,34,34)'
					}, 500);			
			}
		);
	});
};
// Animate marker on banner selector 
function bannerSelectorMarker(){
	$banner_selector = $j('#banner-selector');
	$left = $j('.current',$banner_selector).parent().position().left;
	$j('.marker',$banner_selector)
		.stop()
		.animate({
			left: $left
	}, 500, 'easeInOutQuad');
};

// Animate sidebar images
function animateSidebarImages($image_collection,$sidebar_width,$sidebar_height){
	if($j('.page-id-23').length){
		$sidebar_width = 335;
		$sidebar_height = 298;
	};
	if(!$sidebar_width){
		$sidebar_width = 240;
	};
	if(!$sidebar_height){
		$sidebar_height = 399;
	};
	$image_divs = $j($image_collection);
	$image_divs.css({
		'overflow-x':'hidden',
		'height':$sidebar_height
	});
	$image_group = $j('.list-image ol');
	$image_group.each(function(index){
		$j(this).css({
			'position':'absolute',
			'left':'-'+$sidebar_width+'px',
			'top':0,
			'width':($sidebar_width*3)+'px'
		});
		$image_group_lis = 	$j('li',this);
		if ($image_group_lis.length > 1){
			// position images outside 'window'
			$image_group_lis.css({
				'position':'absolute',
				'top':0,
				'left':($sidebar_width*2)+'px'
			});
			// position first image inside 'window' and set as current
			$image_group_lis.first()
				.css({
					'left':$sidebar_width+'px'
				})
				.addClass('current');
		} else {
			$image_group_lis.css({
				'position':'absolute',
				'top':0,
				'left':$sidebar_width+'px'
			});
		};
	});
	$sbw = $sidebar_width;
	$image_animation = setInterval("sidebarImageChange($image_group,$sbw)",$sidebar_interval);
};
function sidebarImageChange($image_group,$sidebar_width){
	$image_group.each(function(index){
		$image_group_lis = $j('li',this);
		if ($image_group_lis.length > 1){
			var $current = $j('li.current',this);
			if ($current.length == 0) $current = $j('li:last',this);
			var $next = $current.next('li').length ? $current.next('li')
				: $j('li:first',this);
			sidebarImageNext(this,$next,$sidebar_width);
		};
	});
};
function sidebarImageNext($image_ol,$next,$sidebar_width) {
//	clearInterval($image_animation);
	var $current = $j('li.current',$image_ol);
	$current.stop()
		.animate({
			left: 0
		}, $sidebar_easing_time, $easing_style)
		.removeClass('current');
	$next.stop()
		.css('left',($sidebar_width*2)+'px')
		.animate({
			left: $sidebar_width+'px'
		}, $sidebar_easing_time, $easing_style)
		.addClass('current');
};

//Unlink parent pages in menu
function unlinkMenuParents(){
	var $menu = $j('#main-menu');
	$menu.find('li').each(function(){
		if($j(this).hasClass('page-item-13')||$j(this).hasClass('page-item-25')){
			$j(this).addClass('no-parent');
			$j(this).children('a').bind('click',function(event){
				event.preventDefault();
			});
		};
	});
};
// Open link $a in new window
function openNewWindow($a) {
	$a = $j($a);
	$a.each(function(){
		$j(this).click(function(event){
			$href = $j(this).attr('href');
			event.preventDefault(),
			window.open($href);
		});
	});
};
