/* 
 * INNOVATIONS 
 * 
 */

/* 
 * SIFR 
 *  (other sifr handled in code below)
 */
sIFR.replace(frutiger_medium, {
	selector: 'h2.page-title',
	css: '.sIFR-root { color: #444444; }',
	wmode: 'transparent'
});


/*
 * INNOVATION TABS AND PANELS
 */	
$(function () {

	/*
	 * HANDLE TAB GROUPS
	 */	
	var	defaultPanel = 2; //index value (0-3)
	
	var isArchive = location.pathname.indexOf('innovation_archived.shtml') !== -1;
	if(isArchive) { defaultPanel = 0; }

	var $tablinks = $('#innovation-tab-panel-nav a'),
		$panels = $('.innovation-tab-panel'),
		$panelswrap = $('#innovation-tab-panel-wrapper'),
		$targetPanel = $panels.eq(defaultPanel || 0);
	
	//store height of each panel
	$panels.each(function() {
		var $this = $(this);		
		$this.data('height',$this.height());
		//test if there are no items and disable tab
		if(isArchive && !$('.innovation-item',$this).length) {
			//set nav state
			$tablinks.filter('[href=#' + $this.attr('id') + ']').addClass('disabled');
		}
	});
	
	/*
	 * SET UP INITIAL TABS AND NAV STATES
	 */
	//query str	
	var showStr = $.deparam.querystring().show,
		hasValidQuery = $('#'+showStr).length !== 0;
	if (hasValidQuery && !isArchive) {
		$targetPanel = $('#'+showStr).parents('.innovation-tab-panel');
	}
	//set nav state
	$tablinks.filter('[href=#' + $targetPanel.attr('id') + ']').addClass('current');

	//set up initial display (panels are hidden by default in CSS)
	$panelswrap.height($targetPanel.data('height'));
	$targetPanel.show();

	/*
	 * APPLY SIFR 
	 * 	(use iter and callback to ensure hidden panels get sifr'ed before re-hidden
	 * 		delaySIFR delays applySIFR for IE7/8 because 
	 * 			elements out of viewport cannot access callback)
	 */
	//SIFR function
	var applySIFR = function (cb) {
		sIFR.replace(frutiger_bold, {
			selector: '#innovation-tab-panel-wrapper div.innovation-item .innovation-header',
			css: '.sIFR-root { color: #333333; }',
			onReplacement: cb
		});
	}

	if(PGUtil.hasFlash) {
		var totalItems = $('.innovation-header').length;
		var sifrIter = 0;
		var delaySIFR = PGUtil.isIE && !PGUtil.isIE6;
		//expose other panels (for sifr)
		if (!delaySIFR) {
			//expose other panels (just not hidden so SIFR can be applied)
			$panels.not($targetPanel).css({ 'position': 'absolute', 'left': '-9999px' }).show();
			//applies SIFR to all headers now so animation is more smooth
			applySIFR(function() {
				if (sifrIter + 1 === totalItems) {
					//reset display when SIFR is done
					$panels.not($targetPanel).addClass('hide_').css({ 'display': '', 'position': 'static', 'left': '0' });
				}
				sifrIter++
			});
		} else {
			//apply to target panel only
			applySIFR();
		}	
	} else {
		$panels.not($targetPanel).addClass('hide_')
	}
	
	/*
	 * SET UP TAB NAV CLICK EVENT
	 */	
	$tablinks.click(function() {

		var $this = $(this);
		if ($(':animated').length || $this.hasClass('current') || $this.hasClass('disabled')) {
			return false;
		}
		//find panels
		var $targetPanel = $($this.attr('href'));
		var $visiblePanel = $($tablinks.filter('.current').attr('href'));
		
		//just in case the inital SIFR callbacks failed
		if ($targetPanel.css('position') === 'absolute') {
			$targetPanel.addClass('hide_').css({ 'display': '', 'position': 'static', 'left': '0' });
		}
		var $sifr = $targetPanel.find('.sIFR-replaced');
		var reapplySIFR = $sifr.length === 0;
		
		//change current tab
		$tablinks.removeClass('current');
		$this.addClass('current');

		//tracking
		PGUtil.trackEvent('innovation', 'tab', $targetPanel.attr('id'));		
		
		/*
		 * DO TRANSITION
		 */	
		$visiblePanel.fadeOut(function() {
			$panelswrap.animate({
				'height': $targetPanel.data('height')
			}, function() {
				//find individual items
				var $items = $targetPanel.find('.innovation-item').hide();

				//show target panel and fadeIn each item
				$targetPanel.show(function () {
					var time = 0;
					$items.each(function() {
						var $this = $(this);
						function fadeInItem() {
							$this.fadeIn(function() {
								$this.removeClass('hide_');
								if (delaySIFR || reapplySIFR) {
									//apply sifr here for IE7/8
									applySIFR();
								}
							});
						}
						setTimeout(fadeInItem, time);
						time = time + 100;	
					});
					//change formerly visible panel display for printing
					$visiblePanel.addClass('hide_').css('display','');					
				});
			});

		});
		return false;
	});
	
});


/* 
 * FEATURED PROMO PANELS 
 * 	(almost identical to mini-feature code) 
 */
$(function () {
 	var $panels = $('div.featured-innovation-panel');
 	var totalPanels = $panels.length;
 	/*
 	 * APPLY SIFR 
 	 * 	(use iter and callback to ensure hidden panels get sifr'ed before hidden)
 	 */
 	//position panels (sifr cannot communicate in IE when els are off the screen)
 	$panels.filter(':first').css('z-index','1').end().removeClass('move_');

	if(PGUtil.hasFlash) {
		var sifrIter = 0;
		sIFR.replace(frutiger_bold, {
			selector: '#lead div.featured-innovation-panel p.description',
			css: '.sIFR-root { color: #F06600; }',
			wmode: 'transparent',
			onReplacement: function() {
				hidePanels(sifrIter);
				sifrIter++
			}
		});
		var hidePanels = function(index) {
			//don't hide first panel
			if (index === 0) {
				return;
			}
			$panels.eq(index).addClass('hide_');
		}
	} else {
		$panels.not(':first').addClass('hide_');
	}
	/*
	 * RETURN IF ONLY ONE PANEL
	 */
	if($panels.length === 1) {
		return;
	}

 	
 	/*
 	 * BUILD PAGING CONTROLS
 	 */
 	var $controls = $('<div id="featured-innovation-controls" />');
 	$controls.insertBefore('#introduction');
 	function buildControls($parentContainer, totalPanels) {
 		var $count = $('<p class="count"><span class="current">1</span> of <span class="total">'+ totalPanels +'</span></p>');
 		var $prev = $('<p class="prev"><a href="#" class="disabled">previous</a></p>');
 		var $next = $('<p class="next"><a href="#">next</a></p>');
 		$parentContainer.append($count, $prev, $next);
 	}
 	buildControls($controls, $panels.length)
 	
 	/*
 	 * HANDLE PAGING EVENTS
 	 */
 	var $current = $controls.find('.current');
 	var $total = $controls.find('.total');
 	var $paginglinks = $controls.find('a');	
 	
 	//attach paging click events
 	$paginglinks.click(function() {
 		if($(this).hasClass('disabled')) {
 			return false;
 		}
 		var isPrev = $(this).parent().hasClass('prev');
 		var $prevbtn = isPrev ? $(this) : $(this).parent().prev().find('a');
 		var $nextbtn = isPrev ? $(this).parent().next().find('a') : $(this);
 		var totalPanels = parseInt($total.html());
 		//figure out what panel is active
 		var currentPanelIndex = parseInt($current.html()) - 1;
 		var $currentPanel = $($panels.get(currentPanelIndex))
 		//figure out panel that will be active
 		var newPanelIndex = isPrev ? currentPanelIndex - 1 : currentPanelIndex + 1;
 		var $newPanel = $($panels.get(newPanelIndex));

 		//tracking
 		PGUtil.trackEvent('innovation', isPrev ? 'prev':'next', window.location.pathname);

 		//do transition
 		$currentPanel.fadeOut();
 		$newPanel.fadeIn();

 		//set button disabled states
 		if(newPanelIndex === 0) {
 			//set start of paging state
 			$prevbtn.addClass('disabled');
 			$nextbtn.removeClass('disabled');
 		} else if (newPanelIndex === (totalPanels - 1)) {
 			//set end of paging state
 			$nextbtn.addClass('disabled');
 			$prevbtn.removeClass('disabled');
 		} else {
 			$nextbtn.removeClass('disabled');
 			$prevbtn.removeClass('disabled');
 		}
 		
 		//update counter
 		var _now = parseInt($current.html());
 		var _new = isPrev ? (_now - 1) : (_now + 1);
 		if (_new === 0) {
 			_new = totalPanels;
 		} else if(_new > totalPanels) {
 			_new = 1;
 		}	
 		$current.html(_new);			
 		return false;
 	});

}); 


/* 
 * SIMPLE ENHANCEMENTS 
 */
$(function () {
 	
	/* 
	 * TRACK PDFS
	 */
	$('a.innovation-link[href$=".pdf"]').click(function() {
		PGUtil.trackEvent('innovation', 'download', $(this).attr('href'));
	});
	
	/* 
	 * FILTER INTRO IMAGE
	 */
	if (PGUtil.isIE6) {
		var d = PGUtil.basePath + '_images/d.gif';
		var transPNG = $('#introduction img.intro-thumb')[0];
		transPNG.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + transPNG.src + "', sizingMethod='scale')";
		transPNG.src = d;
	}
	
	/*
	 * INSERT PRINT LINK
	 */
	$('<a href="#" id="print-all-link" />').text('Print all Innovations').click(function() {
		//tracking
		PGUtil.trackEvent('innovation', 'print' ,window.location.pathname);
		window.print();
		return false;
	}).insertBefore('#innovation-tabs');
 	
});
 
