var availWidth;
var closeWidth;
var currentGroup;
var moving = false;
var flashArray = new Array();
var groupArray = new Array();
var viewableAmount;
var viewableAmountWithArrows;
var groupID;
var firstGroupTitle;
var cur_section = "features";
var textSize = 0;
var currentAvailabilityID;
var deepLinkMoveCount = 0;
// This is the size of the bg image that caps the right, this needs to be hardcoded here becauseit is not in the DOM at this point
var rightBgSize = 1;

// ======================================================
// feature_init() - inital call to start things
// ======================================================
function feature_init() {
		
	//check to see if feature nav is used
	if ($('vehicle_feature_nav_wrapper')){
	
		// setup
		setUp();
		
		// highlight the drop down nav items
		highlightFeatureNav();
		
		// set the page title in the html text
		setPageTitleText();
	}
	
	// avaiablity collapsing
	//availRender();
	
	//get text size
	getTextSize();
	
	sizeFlashEmbed();
	
	// fade in page content
	fadeIn();
	
	availRender();
	
}

// ======================================================
// setUp() -- 
// ======================================================
function setUp() {
	
	// get the groups
	var groups = $$('.feature_nav_group');
	
	// ----------
	// Any changes in widths may need to be figured out in here for proper sizing
	
	// this may need to be modified per brand t accomodate for padding margin etc.
	// this is for the one side that uses the bg image on the right
	
	availWidth = ($('vehicle_feature_nav_wrapper').getSize().size.x - $('vehicle_feature_nav_wrapper').getStyle('padding-left').toInt() - $('vehicle_feature_nav_wrapper').getStyle('padding-right').toInt()) - groups.length * (groups[0].getSize().size.x + groups[0].getStyle('margin-right').toInt() + groups[0].getStyle('margin-left').toInt()) - rightBgSize;
	
	// set the closed width
	closeWidth = groups[0].getSize().size.x;
	
	// set the click on the groups
	enableGroups(groups);
	
	// set the lists up
	setUpLists();
	
	// deep link nav
	deepLinkNav(groups);
	
	revealNav();
	
	
}

// ======================================================
// enableGroups() -- add the click event to the groups
// ======================================================
function enableGroups(groups) {
	
	for(var i = 0; i < groups.length; i++) {
		
		groups[i].addEvent('click',(function() { //group is clicked
			var index = i;
			return function() {
				expand(this.id, index);
			};
		})());
		
		groups[i].addEvent('mouseover', function() {
			$(this.id).addClass('hover');
		});
		
		groups[i].addEvent('mouseout', function() {
			$(this.id).removeClass('hover');
		});
		
		// wrap it in a class
		var group = new Group(groups[i].getProperty('id'));
		
		// push in array
		groupArray.push(group);
		
		// look for item to set as selected
		// get the sublist
		var subListItems = $$('#' + groups[i].getProperty('id') + ' .feature_nav_list li');
		
		for(var j = 0; j < subListItems.length; j++) {
			
			// if we have a match
			if(subListItems[j].getProperty('id') == cur_subcat) {
				
				subListItems[j].addClass('selected');
				cur_cat = groups[i].getProperty('id');
				groups[i].addClass('selected');
				
				expand(cur_cat, i);
				
				break;
				
			}
			
		}
	
	}
	
	//new
	/*for(var x=0; x<groupArray.length; x++) {
		console.log("groupArray["+x+"]: " + groupArray[x]);
	}*/
	
}

// ======================================================
// setUpLists() -- set the width of lists and arrow check
// ======================================================
function setUpLists() {
	
	// set the width on the ul
	var lists = $$('.feature_nav_list');
	lists.each(function(list) {
		
		list.setStyle('width', list.getChildren().length * (list.getFirst().getStyle('width').toInt() + list.getFirst().getStyle('padding-left').toInt() + list.getFirst().getStyle('padding-right').toInt() + list.getFirst().getStyle('margin-right').toInt() + list.getFirst().getStyle('margin-left').toInt()) + 5 );
		
		// --  New for non full expansions ZWALDMAN // 9/21
		var items = list.getChildren();
		var sectionWidth = items.length* (items[0].getSize().size.x + items[0].getStyle('margin-right').toInt() + items[0].getStyle('margin-left').toInt());
		
		if(availWidth < sectionWidth) {
			
			var listWidth = availWidth;
			
		} else {
			
			var listWidth = sectionWidth;
		}
		// --  New for non full expansions ZWALDMAN // 9/21
		
		// Took out need to test in IE 6
		list.getParent().setStyle('width', listWidth);
		
		// set the left pos off the tab
		list.getParent().setStyle('left', closeWidth);
		
		// pass the list to see if it needs arrows
		arrowCheck(list);
		
	});
	
	// set the viewable amount
	viewableAmount = Math.floor(availWidth/(lists[0].getFirst().getSize().size.x + lists[0].getFirst().getStyle('margin-right').toInt() + lists[0].getFirst().getStyle('margin-left').toInt()));
	
	
}

// ======================================================
// deepLinkNav() --
// ======================================================
function deepLinkNav(groups) {
		
	for(var i = 0; i < groups.length; i++) {
		
		// look for item to set as selected
		// get the sublist
		var subListItems = $$('#' + groups[i].getProperty('id') + ' .feature_nav_list li');
		
		for(var j = 0; j < subListItems.length; j++) {
			
			// if we have a match
			if(subListItems[j].getProperty('id') == cur_subcat) {
				
				subListItems[j].addClass('selected');
				cur_cat = groups[i].getProperty('id');
				groups[i].addClass('selected');
				expand(cur_cat, i);
				
				var list = $$('#' + groups[i].getProperty('id') + ' .feature_nav_list')[0];
				
				// if the list length is the same as the regular view amount just return and with is 
				if(subListItems.length == viewableAmount && (list.getStyle('width').toInt() < availWidth)) {
					
					return;
					
				}
				
				// otherwise we need to link deeper
				
				// the total count of items and how many panes are needed
				var totalCount = subListItems.length;
				var panes = totalCount/(viewableAmountWithArrows);
				
				
				// see if feature is buried
				if(j+1 > viewableAmountWithArrows) {
					
					// set the initial view count
					var count = viewableAmountWithArrows;
					
					// check panes
					for(k = 1; k < panes; k++) {
						
						// if the selected id is larger then the viewCount
						if(j+1 > count) {
							
							// scroll and update the count
							//scrollToDirection('next', subListItems[j].getParent());
							count = count + viewableAmountWithArrows;
							
							// update the amount of moves
							deepLinkMoveCount++;
							
						}
						
					}
					
					// call the move on deeplink nav
					scrollToDirection('next', subListItems[j].getParent());
					
				}
				
				break;
				
			}
			
		}
	
	}
	
}

// ======================================================
// arrowCheck(list) -- check if arrows are needed
// ======================================================
function arrowCheck(list) {
	
	// if the list is larger then the availWidth
	if (list.getStyle('width').toInt() > availWidth) {
		
		// get the arrows and turn the display on
		var id = list.getParent().getParent().getProperty('id');
		
		var arrowsContainer = $$('#' + id + ' .feature_subnav_buttons')[0];
		
		arrowsContainer.setStyle('display', 'block');
		arrowsContainer.setStyle('width', availWidth);
		arrowsContainer.setStyle('left', closeWidth);
		
		var arrowSize = 2 * $$('#' + id + ' .feature_subnav_buttons a')[0].getSize().size.x;
		
		// set the lists new width
		list.getParent().setStyle('width', availWidth - arrowSize);
		list.getParent().setStyle('left', closeWidth + arrowSize*.5);
		
		// add the event to the arrows
		var prev = arrowsContainer.getChildren()[0];
		var next = arrowsContainer.getChildren()[1];
		
		prev.addClass('inactive-prev');
		prev.addClass('inactive');
		prev.setStyle('opacity', '1');
		
		prev.addEvent('click', function() {
			scrollToDirection('prev', list);
		});
		
		next.addEvent('click', function() {
			if(!this.hasClass('inactive')) {
				scrollToDirection('next', list);
			}
		});
		
		list.setStyle('left', 0);
		
		viewableAmountWithArrows = Math.floor((availWidth-arrowSize)/(list.getFirst().getSize().size.x + list.getFirst().getStyle('margin-right').toInt() + list.getFirst().getStyle('margin-left').toInt()));
		
		} else {

			var items = list.getParent().childNodes;
			var sectionWidth = items.length * (items[0].getStyle('width').toInt() + items[0].getStyle('padding-left').toInt() + items[0].getStyle('padding-right').toInt() + items[0].getStyle('margin-right').toInt() + items[0].getStyle('margin-left').toInt());
			list.getParent().setStyle('width', sectionWidth - rightBgSize);

		}
	
}

// ======================================================
// expand(id) -- open the group
// ======================================================
function expand(id, pos) {
	
	if(currentGroup != $(id) && !moving) {
		
		// only track if the inital group has been set
		if(currentGroup) {
			linkTrack('feature_sub_nav', id);
		}

		moving = true;
		
		// collapse the previous group
		if(currentGroup) {
			
			currentGroup.removeClass('selected');
		
			var animate = currentGroup.effect('width', {
				duration: 300,
				transition: Fx.Transitions.Expo.easeOut
			});

			animate.start(currentGroup.getStyle('width').toInt(), closeWidth);
	
		}
	
		currentGroup = $(id);
		
		// --  New for non full expansions ZWALDMAN // 9/21
		// get all the items in the list
		var items = $$('#' + id + " .feature_nav_list li");
		
		
		
		// get the total width of the section
		var sectionWidth = items.length* (items[0].getStyle('width').toInt() + items[0].getStyle('padding-left').toInt() + items[0].getStyle('padding-right').toInt() + items[0].getStyle('margin-right').toInt() + items[0].getStyle('margin-left').toInt());
		
		// if the availwidth is less then the section width we can draw the full avail amount
		if(availWidth < sectionWidth) {
			
			var openSize = availWidth + closeWidth;
			
		} else {
			
			// otherwise set to the smaller width
			var openSize = sectionWidth + closeWidth;
			//$$('#' + id + " .nav_list_wrapper")[0].setStyle('width', sectionWidth);
		}
		
		// --  New for non full expansions ZWALDMAN // 9/21
		
		// set the groupID
		for(var i = 0; i < groupArray.length; i++) {

			if(groupArray[i].name == currentGroup.getProperty('id')) {
				groupID = i;	
			}

		}
		
		currentGroup.addClass('selected');
		
		
		var animate = currentGroup.effect('width', {
			duration: 1000,
			transition: Fx.Transitions.Expo.easeInOut,
			onComplete: function() { moving = false; fixIEImages(id);}
		});
		
		animate.start(currentGroup.getStyle('width').toInt(), openSize);
	
	//swap button bg's to show/hide dividers when needed
	//firstGroupTitle = $$('#vehicle_feature_nav_wrapper .feature_nav_group .first');
	firstGroupTitle = $('vehicle_feature_nav_wrapper').getFirst().getFirst();
	
	//loop groups and reset dividers
	for(var i=0; i<groupArray.length; i++) {			
		if(!($(groupArray[i].name).hasClass('selected'))) {
			if($(groupArray[i].name).getFirst().hasClass('last')) {
				//remove extra classes
				$(groupArray[i].name).getFirst().removeClass('nav_tab');
				$(groupArray[i].name).getFirst().removeClass('nav_tab_divider');
				$(groupArray[i].name).getFirst().removeClass('nav_tab_on');
				$(groupArray[i].name).getFirst().removeClass('nav_tab_first_divider');
				
				//set new class
				$(groupArray[i].name).getFirst().addClass('last');
			} else {
				//remove extra classes
				$(groupArray[i].name).getFirst().removeClass('nav_tab');
				$(groupArray[i].name).getFirst().removeClass('nav_tab_on');
				$(groupArray[i].name).getFirst().removeClass('nav_tab_first_divider');
				
				//set new class
				$(groupArray[i].name).getFirst().addClass('nav_tab_divider');
				
			}
		} else {
			//remove extra classes
			$(groupArray[i].name).getFirst().removeClass('nav_tab');
			$(groupArray[i].name).getFirst().removeClass('nav_tab_divider');
			$(groupArray[i].name).getFirst().removeClass('nav_tab_first_divider');
			
			//set new class
			//if last, leave last class on
			$(groupArray[i].name).getFirst().addClass('nav_tab_on');
		}
	}
	
	//give first tab a divider when clicking third button and beyond
	if(pos >= 2) {
		//remove extra classes
		firstGroupTitle.removeClass('nav_tab');
		firstGroupTitle.removeClass('nav_tab_divider');
		firstGroupTitle.removeClass('nav_tab_on');
		
		//set new class
		firstGroupTitle.addClass('nav_tab_first_divider');
		
		//strip divider from groups that appear before 'selected' group
		//remove extra classes
		$(id).getPrevious().getFirst().removeClass('nav_tab_divider');
		$(id).getPrevious().getFirst().removeClass('nav_tab_on');
		$(id).getPrevious().getFirst().removeClass('nav_tab_first_divider');
		
		//set new class
		$(id).getPrevious().getFirst().addClass('nav_tab');
	} else {
		if(pos == 0 && $('vehicle_feature_nav_wrapper').getFirst().hasClass('selected')) {
			//remove extra classes
			firstGroupTitle.removeClass('nav_tab');
			firstGroupTitle.removeClass('nav_tab_divider');
			firstGroupTitle.removeClass('nav_tab_first_divider');
			
			//set new class
			firstGroupTitle.addClass('nav_tab_on');
		} else {
			//remove extra classes
			firstGroupTitle.removeClass('nav_tab');
			firstGroupTitle.removeClass('nav_tab_divider');
			firstGroupTitle.removeClass('nav_tab_on');
			firstGroupTitle.removeClass('nav_tab_first_divider');
			
			//set new class
			firstGroupTitle.addClass('first');
		}
	}
	
	}

}

// ======================================================
// fixIEImages -- fixes an issue with images IE6 *******
// ======================================================
function fixIEImages(id) {
	
	var images = $$("#" + id + " .feature_nav_list li img");
	
	images.each(function(image) {
		
		if(image.getStyle('text-align') == "center") {
			image.setStyle('text-align', 'left');
		} else {
			image.setStyle('text-align', 'center');
		}
		
	});
	
}

// ======================================================
// scrollToDirection -- scrolls based on direction
// ======================================================
function scrollToDirection(direction, list) {
	
	var previousAmount = groupArray[groupID].currentID;
	
	switch (direction) {
	
		case "prev" :
			
			if(groupArray[groupID].currentID > 0) {
				
				groupArray[groupID].currentID = groupArray[groupID].currentID - viewableAmountWithArrows;
				if(groupArray[groupID].currentID < 0) {
					groupArray[groupID].currentID = 0;
				} 				
				scroll(groupArray[groupID].currentID, list);
				
			}
		
			break;
			
		case "next" :

			// if the location we are at is less then the total
			if(groupArray[groupID].currentID < list.getChildren().length) {
				
				groupArray[groupID].currentID = groupArray[groupID].currentID + viewableAmountWithArrows;
				
				// if we have less then a full move
				if(groupArray[groupID].currentID < list.getChildren().length && groupArray[groupID].currentID + viewableAmountWithArrows >= list.getChildren().length) {
					groupArray[groupID].currentID = list.getChildren().length - groupArray[groupID].currentID + previousAmount;
				}
				scroll(groupArray[groupID].currentID, list);
					
			}
			
			break;
		default:
			break;
	}
	
}

// ======================================================
// scroll(id, list) -- the actual move of the nav
// ======================================================
function scroll(id, list) {
	
	var newPos = -((list.getChildren()[0].getSize().size.x + list.getChildren()[0].getStyle('margin-left').toInt() + list.getChildren()[0].getStyle('margin-right').toInt()) * id);
	
	// if this is a deep link move
	if(deepLinkMoveCount > 1) {
	
		var animate = list.effect('left', {
			duration: 500,
			transition: Fx.Transitions.Expo.easeInOut
		});
		
		deepLinkMoveCount--;
		
		if(deepLinkMoveCount > 0) {
			scrollToDirection('next', list);
		}
	
	// otherwise the real move
	} else {
		
		var animate = list.effect('left', {
			duration: 1000,
			transition: Fx.Transitions.Expo.easeInOut
		});
		
	}
	
	animate.start(list.getStyle('left').toInt(), newPos);

	updateArrows(list);

}


// ======================================================
// updateArrows() -- update state
// ======================================================
function updateArrows(list) {
	
	// get the arrows and turn the display on
	var id = list.getParent().getParent().getProperty('id');
	var arrowsContainer = $$('#' + id + ' .feature_subnav_buttons')[0];
	
	// add the event to the arrows
	var prev = arrowsContainer.getChildren()[0];
	var next = arrowsContainer.getChildren()[1];
	
	// if the currentID is 0 turn off the left arrow
	if (groupArray[groupID].currentID == 0) {
		
		prev.addClass('inactive-prev');
		prev.addClass('inactive');
		
	} else {
		
		prev.removeClass('inactive-prev');
		prev.removeClass('inactive');
	}

	// if the currentID is 0 turn off the left arrow
	if (groupArray[groupID].currentID >= list.getChildren().length - viewableAmountWithArrows) {
		next.addClass('inactive-next');
		next.addClass('inactive');
	} else {
		
		next.removeClass('inactive-next');
		next.removeClass('inactive');
	}
	
	
}



// -------------------------------------------------------------------------------------------------------------------------------------

// ======================================================
// availRender() -- the available features boxes show hide
// ======================================================
function availRender() {
	
	if($('availability')){
	//($$('#availability ul li span')[0]).addClass('open');
	
	//$$('#availability .list_item').length
		for (var i = 0; i < $$('#availability .list_item').length; i++) {
			var currentRenderli = $$('#availability .list_item')[i];
			currentRenderli.setProperty('id', 'availability_'+i);
			//currentRenderli.setStyle('cursor', 'pointer');
			currentRenderli.addEvent('click', function() {
				availabilityUserShowHide(this.id);
			});
			
			currentRenderli.addEvent('mouseenter', function() {
				this.addClass('availability_over');
			});
			
			currentRenderli.addEvent('mouseleave', function() {
				this.removeClass('availability_over');
			});
			
			var newHeight = currentRenderli.getFirst().getSize().size.y.toInt();
			currentRenderli.setStyle('height', newHeight + 'px');
			currentRenderli.setStyle('overflow', 'hidden');
			currentRenderli.setStyle('margin-bottom', '3px');
			currentRenderli.getFirst().getNext().setStyle('display', 'none');
		
			
			//$$("#availability_" + i + " ul li")[0].setStyle('display', 'none');
			
		}
		availabilityUserShowHide('availability_0');
	}
}

// ======================================================
// availabilityShowHide(curID)
// ======================================================
function availabilityShowHide(curID) {
	
	if(currentAvailabilityID != curID) {
	
		// if availability exists
		if($('availability')){
		
			// loop on all
			for (var i = 0; i < $$('#availability .list_item').length; i++) {
			
				// the currentRenderLi
				var currentRenderli = $$('#availability .list_item')[i];
			
				// turn off the next list item so it does now show when collapsed
				currentRenderli.getFirst().getNext().setStyle('display', 'none');
			
				// get the new height to shrink to
				var newHeight = currentRenderli.getFirst().getSize().size.y.toInt();
			
				// set the new height
				currentRenderli.setStyle('height', newHeight + 'px');
			
				currentRenderli.addClass('availability_closed');
			
				currentRenderli.addEvent('mouseenter', function() {
					this.addClass('availability_over');
				});
			
				currentRenderli.getFirst().removeClass('open');
		
			}
		
			$(curID).removeClass('availability_over');
			$(curID).removeClass('availability_closed');
		
			$(curID).getFirst().getNext().setStyle('display', 'block');
		
			var newHeight = ($(curID).getFirst().getSize().size.y + $(curID).getFirst().getNext().getSize().size.y).toInt();
			$(curID).setStyle('height', newHeight + 'px');
		
			$(curID).getFirst().addClass('open');
			$(curID).addEvent('mouseenter', function() {
				this.removeClass('availability_over');
			});
			
			if(currentAvailabilityID) {
				linkTrack('availability', $(curID).getFirst().getText());
			}
		
			currentAvailabilityID = curID;
			

		}
	}
}

// ==================================================================
// availabilityUserShowHide(curID) - User Initiated Show/hide 3/19/09
// ==================================================================
function availabilityUserShowHide(curID) {
	
	
	//if(currentAvailabilityID != curID) {
		
		// if availability exists
		if($('availability')){
			
			// if we are open
			if($(curID).getFirst().hasClass('open')) {			
				
				//console.log("I should close");					
				$(curID).getFirst().removeClass('open');
				$(curID).getFirst().addClass('close');								
			
				// set the new height
				var newHeight = ($(curID).getFirst().getSize().size.y).toInt();			
				$(curID).setStyle('height', newHeight + 'px');
				$(curID).getFirst().getNext().setStyle('display', 'none');
				
				//styles and gap for closed items
				//$(curID).setStyle('padding', '0');
				//$(curID).setStyle('margin-bottom', '3px');
				$(curID).addEvent('mouseenter', function() {
					this.addClass('availability_over');
				});
				
				
			// otherwise we are closed	
			} else {
				
				//console.log("I should open");			
				$(curID).removeClass('availability_over');
				$(curID).removeClass('availability_closed');
				$(curID).getFirst().addClass('open');
				
				// set the new height
				var newHeight = ($(curID).getFirst().getSize().size.y + $(curID).getFirst().getNext().getSize().size.y).toInt();
				$(curID).setStyle('height', newHeight + 'px');
				$(curID).getFirst().getNext().setStyle('display', 'block');
				
				//styles and gap for closed items
				
				$(curID).addEvent('mouseenter', function() {
					this.removeClass('availability_over');
				});
				
			}
			
			
			// loop on all
			for (var i = 0; i < $$('#availability .list_item').length; i++) {
			var currentRenderli = $$('#availability .list_item')[i];
				//$(curID).setStyle('padding-top', '0');
				//$(curID).setStyle('padding-bottom', '0');
				$(curID).setStyle('margin-bottom', '3px');
				
			}
						
			
				
			if(curID) {
				linkTrack('availability', $(curID).getFirst().getText());
			}
		
			//currentAvailabilityID = curID;
			
		}
	//} else {
		
	//console.log("open");
		
	//}
}

// ======================================================
// revealNav() - show the nav
// ======================================================
function revealNav()  {
	
	var wrapper = $('vehicle_feature_nav_wrapper');		
		
	var animate = new Fx.Style(wrapper, 'opacity', {
		
		duration: 1000,
		wait: false
	});
		
	animate.start(0,1);
	
}

// ======================================================
// sizeFlashEmbed() -- 
// ======================================================
function sizeFlashEmbed() {
	
	// get the amount of content nodes that will be used in the flash
// to be able to have pages without a primary Flash asset
	if ($defined($('feature_media'))){
	var list = $('module_list');
	var moduleCount = list.getChildren().length;
	
	// if we have only 1
	if(moduleCount == 1) {
		
		$('feature_media').setStyle('height', '405px');
		
		}
	}
	
	
}

// ======================================================
// fadeIn() - fade the page contents in
// ======================================================
function fadeIn() {
	
	var wrapper = $('vehicle_feature_body');
	
	// before we animate in lets see if we should pull the low band images out
	// if high bandwidth
	if (userData.bandwidth != 'low' && hasFlashMin()) {
		
		// lets grab all the swf and flv divs and remove the images and paint bg
		var swfList = $$("#vehicle_feature_body .swf img");
		var flvList = $$("#vehicle_feature_body .flv img");
		
		swfList.each(function(item, index) {
		    item.remove();
		});
		
		flvList.each(function(item, index) {
		    item.remove();
		});
		
		
	}		
		
	var animate = new Fx.Style(wrapper, 'opacity', {
		
		duration: 1500,
		wait: false,
		
		onComplete: function() {
			
			// lets grab all the swf and flv divs and remove the images and paint bg
			var swfList = $$("#vehicle_feature_body .swf");
			var flvList = $$("#vehicle_feature_body .flv");
			
			swfList.each(function(item, index) {
			    item.setStyle('visibility', 'visible');
			});

			flvList.each(function(item, index) {
			   item.setStyle('visibility', 'visible');
			});
			
			if ($defined($('feature_media'))){
			
				$('feature_media').addClass('visible');
			}
				
			// if high bandwidth
			if (userData.bandwidth != 'low' && hasFlashMin()) {
					
				// check for new requested version
				if(typeof(pageGenre) != "undefined"  && pageGenre >= 1)
				{
					jQuery('#main_flash_embed').height(1);
					var sizeDivId = (cur_section == 'features')? '#feature_media':'#main_content';
					// call the feature player
					if(typeof(control_type) != "undefined"){
						cllc.page_ready(
							function() {
								showFlash('/crossbrand/shared/flash/modulecontroller/shell.swf', 'main_flash_embed', '&flashDivID=main_flash_embed&cssURL=/shared/flash/modulecontroller/module_flash_base.css&lang=en&text_play_vid=Play Video&viewType='+control_type+'&crossbrandPath=/crossbrand/shared/flash/modulecontroller/&brandPath=/shared/flash/modulecontroller/&divID=feature_media'+ '&stageWidth='+jQuery(sizeDivId).width()+'&stageHeight='+jQuery(sizeDivId).height());
							}
						);
					}else{
						cllc.page_ready (
							function() {
								showFlash('/crossbrand/shared/flash/modulecontroller/shell.swf', 'main_flash_embed', '&flashDivID=main_flash_embed&cssURL=/shared/flash/modulecontroller/module_flash_base.css&lang=en&text_play_vid=Play Video&viewType=features&crossbrandPath=/crossbrand/shared/flash/modulecontroller/&brandPath=/shared/flash/modulecontroller/&divID=feature_media'+ '&stageWidth='+jQuery(sizeDivId).width()+'&stageHeight='+jQuery(sizeDivId).height());
							}
						);
					}
				} else
				
				{
					// call the feature player
					if(typeof(control_type) != "undefined"){
						showFlash('/shared/flash/module_controller.swf', 'feature_media', '&lang=en&text_play_vid=Play Video&controllerType='+control_type+'&divID=main_content');
					}else{
						showFlash('/shared/flash/module_controller.swf', 'feature_media', '&lang=en&text_play_vid=Play Video&controllerType=features&divID=feature_media');
					}
				}
				
				// loop on the flash array and launch em
				for(var i = 0; i < flashArray.length; i++) {
						eval(flashArray[i]);
				}

				// if contextual area has a player embed it
				if($('contextual_video_player')) {
					if(typeof(pageGenre) != "undefined"  && pageGenre >= 1)
					{
						showFlash("/crossbrand/shared/flash/flv_module.swf","contextual_video_player", "&crossbrandPath=/crossbrand/shared/flash/modulecontroller/&brandPath=/shared/flash/modulecontroller/&id=" + title_asset + "&poster=" + poster_asset + "&flv=" + video_asset + "&disclaimer=" + disclaimer_asset);
					}else
					{                       
						showFlash("/shared/flash/video_player.swf","contextual_video_player", "&title=" + title_asset + "&poster=" + poster_asset + "&flv=" + video_asset + "&disclaimer=" + disclaimer_asset);
					}

				}
	
				
			}
				
			// otherwise lowbandwidth stuff
			else {
				if($('feature_media')) { 
					$('feature_media').style.backgroundColor = "#ffffff";
					
					var img = $$('#feature_media img.lowband')[0];
					img.setStyle('visibility', 'visible');
				}
				
				if($('contextual_video_player')) {
					var posterImg = new Element('img').setProperty('src', poster_asset);
					posterImg.injectInside('contextual_video_player');
				}

			}
		}
	});
		
	animate.start(1,1);

}

// ======================================================
// fadeIn() - fade the page contents in
// ======================================================
function toggle(element) {
	
	element = $(element);
	
	// find out if secondary or tertiary
	if(element.getParent().getParent().getParent().hasClass('one-third') || element.getParent().getParent().getParent().hasClass('three-thirds')) {
		var lpos = "content_tertiary";
	} else {
		var lpos = "content_secondary";
	}
	
	linkTrack(lpos, element.getProperty('id') + '_' + element.getText());
	
	if(element.hasClass('more_button')) {
		element.getPrevious().setStyle('display', 'inline');
		element.setText('Close');
	} else {
		element.getPrevious().setStyle('display', 'none');
		element.setText('More');
	}
	
	element.toggleClass('more_button');
	element.toggleClass('close_button');
	
	
}

// ======================================================
// toggleRollOver(id) - 
// ======================================================
function toggleRollOver(element) {
    element = $(element);
	element.addClass('toggle_over');
}

// ======================================================
// toggleRollOut(element)
// ======================================================
function toggleRollOut(element) {
    element = $(element);
	element.removeClass('toggle_over');
}

// ======================================================
// highlightFeatureNav() - 
// ======================================================
function highlightFeatureNav(){
    cur_feature_menu = $(cur_cat+"_"+cur_subcat+"_menu");
    if(cur_feature_menu){
        cur_feature_menu.addClass("at")
    }
}

// ======================================================
// setPageTitleText() -- set the title text based on cat
// ======================================================
function setPageTitleText() {
	
	var catName = cur_cat.toString();
	var myArray = catName.split("_");
	catName = myArray.join(" ");
	
	var subCatName = cur_subcat.toString();
 	myArray = subCatName.split("_");
	subCatName = myArray.join(" ");
	
	$('cur_cat').setText(catName);
	$('cur_subcat').setText(subCatName);
	
}

// ======================================================
// setTextSize() -- 
// ======================================================
function getTextSize() {
	
	if(typeof(userData.featureTextSize) == "number"){
		setTextPref(userData.featureTextSize);
	}
	
}

// ======================================================
// setTextSize() -- 
// ======================================================
function setTextPref(num) {
	
	// set the pref and cookie
	userData.featureTextSize = num;
	Cookie.set('userdata', Json.toString(userData), {duration: 365, path: "/"});
	
	// set the new size
	$('vehicle_feature_body').removeClass('size_' + textSize);
	$('vehicle_feature_body').addClass('size_' + num);
	
	// turn old button off
	$('text_size_' + textSize).removeClass('on_state');
	$('text_size_' + textSize).addClass('off_state');
	
	// new button on
	$('text_size_' + num).removeClass('off_state');
	$('text_size_' + num).addClass('on_state');
	
	// set the textSize var to hold value
	textSize = num;
	
	
}

// ======================================================
// Group Class Declaration
// ======================================================
var Group = new Class({
	
	initialize: function(name) {
		this.name = name;
		this.currentID = 0;
	}
	
})
