/**
 * @author tmcdonald
 * For Javascript and functions to reside on vehicle pages
 */

/*
 * For this function you will need to make sure that the following html exists on your page
 * 
 * <div class="vehicleRangeFloatHeader">
 *   <ul>
 *     <li class="sectionHeader">&nbsp;</li>
 *   </ul>
 * </div>
*/
 function vehicleRangeStickyHeader() {
	$('p.carModel').each(function(){
			$('.vehicleRangeFloatHeader ul').append('<li></li>');
			$('.vehicleRangeFloatHeader ul li').last().append($(this).clone());
		}
	);
	var tablePos = $(".tableHolder").offset().top;
	$(window).bind("scroll", function() {
		var offset = $(this).scrollTop();
		if(offset>=(tablePos-20)&& $('.vehicleRangeFloatHeader').is(":hidden")){
			$('.vehicleRangeFloatHeader li').width($('.cm_dataCol2').outerWidth());
			$('li.sectionHeader').width($('.dataCol1').outerWidth());
			$('.vehicleRangeFloatHeader').show();
		} else if(offset < (tablePos-20)){
			$('.vehicleRangeFloatHeader').hide();	
		}
	});	
 }

 $(document).ready(function() {
			
		$('#activeSelect').hover(function() { 
			if(!$(this).hasClass('inGear')) {
			$('.gearDemo .buttons a').removeClass('inGear');
			$(this).addClass('inGear');
			$(".gearStick").stop().animate({top: '78px', left:'580px' });
			$(".gearBase").stop().animate({top: '157px' });
			$('.gearDemo .state').hide();
			$('#activeFocus').fadeIn();
			}
		});
		
		
		$('#sportsMode').hover(function() { 
		if(!$(this).hasClass('inGear')) {
			$('.gearDemo .buttons a').removeClass('inGear');
			$(this).addClass('inGear');
			$(".gearStick").stop().animate({top: '97px', left:'580px' });
			$(".gearBase").stop().animate({top: '174px' });
			$('.gearDemo .state').hide();
			$('#sportsFocus').fadeIn();
			}
		});
		
		$('#driveMode').hover(function() { 
		if(!$(this).hasClass('inGear')) {
			$('.gearDemo .buttons a').removeClass('inGear');
			$(this).addClass('inGear');
			$(".gearStick").stop().animate({top: '90px', left:'605px' });
			$(".gearBase").stop().animate({top: '169px' });
			$('.gearDemo .state').hide();
			$('#driveFocus').fadeIn();
			}
		});
		
		$('.gearDemo .buttons a').click(function() { 
			tmpID = $(this).attr('id');
			$('.gearDemo ul li').hide();
			if(tmpID == 'activeSelect' ) {
				$('#asCont').show();
			} else if(tmpID == 'sportsMode') {
				$('#smCont').show();
			} else {
				$('#dmCont').show();
			}
			return false;
		});			
 
			if($('.vehicleRangesContainer').length > 0) {
				HFE.vehicleRangesFooter().init();
			}
		});

		/***** HFE module (namespace) *****/
		var HFE = (function (HFE, $) {

			/* submodule for Vehicle Ranges footer */
			HFE.vehicleRangesFooter = function () {
				var $element = $('.vehicleRangesContainer');
				if (!$element || !$element.size()) {return;}

				var $headings = $element.find('.vehicleRangeHeadings > li'),
					$ranges = $element.find('.vehicleRanges'),
					$rangeItems = $ranges.find('> ul > li'),
					activateHeading = function($elem) {
						$elem.find('h3, ul').slideUp('fast');
						$elem.find('.activeHeading').slideDown('fast');	
						$elem.addClass('active');
					},
					deactiveHeading = function($elem) {
						$elem.find('h3:not(.activeHeading), ul').slideDown('fast');
						$elem.find('.activeHeading').slideUp('fast');
						$elem.removeClass('active');
					},
					showRanges = function($elem) {
						$elem.parent().children().removeClass('adjacent').end().end().prev().addClass('adjacent');
						if ($rangeItems.filter(':visible').size() > 0) { // switching tab
							$next = $($elem.find('h3 a').attr('href'));
							$rangeItems.filter(':visible').fadeOut('fast', function() {
								$next.fadeIn('fast');
							});
							deactiveHeading($headings.filter('.active'));
						} else { // no tab openned yet
							$ranges.show();
							$($elem.find('h3 a').attr('href')).slideDown('normal');
						}
						activateHeading($elem);						
					};

				return {
					init: function () { // main function
						$ranges.hide();
						$rangeItems.hide();

						// inject active arrow
						$headings.each(function() {
							$activeHeading = $('<h3 class="activeHeading">' + $(this).find('h3 a').html() + '</h3>').hide();
							$(this).find('.img').after($activeHeading);
						});

						$headings.hover(function(e) {
							if (!$(this).hasClass('active')) {
								showRanges($(this));
							}
							e.stopPropagation();
						}, {});

						$headings.click(function(e) {
							if ($(this).hasClass('active')) {
								$this = $(this);
								$($(this).find('h3 a').attr('href')).slideUp('fast', function() {
									$ranges.hide();
									deactiveHeading($this);
									$this.siblings().removeClass('adjacent');
								});
							} else {
								showRanges($(this));
							}
							e.preventDefault();
						})
						return this;
					}
				};
			};
			return HFE;
		} (window.HFE || {}, jQuery));
