/* onload handler */
var window_onload = new Array;
var onloadRef = window.onload;
var cur_section;
var populate_zip;
var audio_on_text;
var audio_off_text;
var es_confirm_apps;

/*
    window.ie - will be set to true if the current browser is internet explorer (any).
	window.ie6 - will be set to true if the current browser is internet explorer 6.
	window.ie7 - will be set to true if the current browser is internet explorer 7.
	window.khtml - will be set to true if the current browser is Safari/Konqueror.
	window.gecko - will be set to true if the current browser is Mozilla/Gecko.
*/

if (window.ActiveXObject) window.ie = window[window.XMLHttpRequest ? 'ie7' : 'ie6'] = true;
else if (document.childNodes && !document.all && !navigator.taintEnabled) window.khtml = true;
else if (document.getBoxObjectFor != null) window.gecko = true;

window.onload = function() {
  if(onloadRef != null) {
    onloadRef();
  }
	//for(var i =  window_onload.length; i >= 0; i--){ //Why is this running backwards?
	for(var i = 0; i < window_onload.length; i++){
    eval( window_onload[i]);
  }
};

function onload_register(func){
 window_onload.push(func);
}
/* end onload handler */

/* navigation menus */
var cur_menu;
var cur_sub_menu;
var isFormOpen;
var toggle, toggleOpen;
var curClassName = "";
var form_elements_to_turn_on = new Array();

/* Set up menu elements for mouse events */
function setup_menus(){

	var timer;
	$$('div.features_menu').each(function(f){
		f = $(f);
		var fmc = $(f.getLast());
		var menuWidth = 4;
		fmc.getFirst().getChildren().each(function(lc){
			if(lc.hasClass('link_container')){
				menuWidth = menuWidth + parseInt($(lc).getSize().scrollSize.x);
			}
		});
		fmc.setStyle("width", menuWidth + "px");

		if ((f.getPosition().x - $('wrapper').getPosition().x) + f.getSize().scrollSize.x + (menuWidth / 2) > 960){
			var menuOffSet = -(f.getPosition().x - $('wrapper').getPosition().x) + 960 - menuWidth;
		}
		else{
			var menuOffSet = 0 - (menuWidth / 2) + (f.getSize().scrollSize.x / 2);
		}
		fmc.setStyle("left", (menuOffSet - 4) + "px");

		f.onmouseover = function(){
			if(this.timer){clearTimeout(this.timer);}
			this.menuBuffer = setTimeout("checkMenus('"+this.id+"_container')", 200);
		}

		f.onmouseout = function(){
			if(!isFormOpen){
				if(this.menuBuffer) { clearTimeout(this.menuBuffer); }
				this.timer = setTimeout("hide('"+this.id+"_container')", 200);
			}
		}
	});

	$('other_menus').getChildren().each(function(m){
		$(m).onmouseover = function(){
			if($(m).id != "dealer_finder"){
				if(this.timer){clearTimeout(this.timer);}
				this.menuBuffer = setTimeout("checkMenus('"+this.id+"_container')", 200);
			}
		}

		$(m).onmouseout = function(){
			if(!isFormOpen){
				if($(m).id != "dealer_finder"){
					if(this.menuBuffer) { clearTimeout(this.menuBuffer); }
					this.timer = setTimeout("hide('"+this.id+"_container')", 1);
				}
			}
		}
	});

	$$('.menu_select_field').each(function(f){
		$(f).onfocus = function(){
			formMenuHolder(true);
		}
		/*$(f).onchange = function(){
			formMenuHolder(true);
		}*/
		$(f).onblur = function(){
			formMenuHolder(false);
		}
	});

	$$('.sub_menu_btn').each(function(s){
		$(s).onclick = function(){
			toggleSubMenu(this.getNext());
		}
	});
	$$('.button_list_menu_btn').each(function(s){
		$(s).onclick = function(){
			toggleSubMenu(this.getNext());
		}
	});
}

function formMenuHolder(argValue){
    isFormOpen = argValue;
}

/* Check to see what the current menu status is */
function checkMenus(whichMenu){
    /*if(cur_menu != whichMenu && self.cur_menu){
			hide(cur_menu);
    }*/
    if(cur_menu != whichMenu){
        show(whichMenu);
        cur_menu = whichMenu;
    }
}

function setFX(el, attrib, dur){
  return new Fx.Style(el, attrib, {duration: dur});
}

/* Turn on New Menu */
function show(whichMenu) {
	//blur all open select boxes and hide the open menu (but only if a form select is open)
	if(isFormOpen){
		$$('.menu_select_field').each(function(f) {
			f.blur();
		});
		if(cur_menu){
			hide(cur_menu);
		}
	}
	var menu = $(whichMenu);

	//Find nav link and add hover state
	if(menu.hasClass('features_menu_container')){
		var menu_children_arr = menu.getParent().getChildren();
		var menu_link = menu_children_arr[0];

		if (curClassName != "vehicle_feature_nav_link_on")
			curClassName = "vehicle_feature_nav_link";

		menu_link.removeClass('vehicle_feature_nav_link');
		menu_link.addClass('vehicle_feature_nav_link_on');
	}
	else {
		var menu_link = menu.getPrevious();
		menu_link.addClass('other_menu_link_on');
	}

	var menuHeight = menu.getSize().scrollSize.y;
	//menu.setStyles({'overflow':'visible', 'height':menuHeight +'px'});
	var menuWidth = menu.getSize().scrollSize.x;

	/*toggleOpen = setFX(menu, 'height', 200).addEvent('onStart', function() {
		menu.setStyle('visibility', 'visible');
		menu.setStyle('border-style', 'solid');
	});*/

	var menuX = menu.getPosition().x;
	var menuY = menu.getPosition().y;

	if(window.ie6){
		$$('select').each(function(s) {
			if (s.className != "menu_select_field") {
				var elX = s.getPosition().x;
				var elY = s.getPosition().y;
				//if ((element begins between the left and right edge of the menu) OR (element starts to the left of the menu, but extends into the area))
				if ((elX  > menuX && elX  < (menuX + menuWidth)) || ( ((elX + s.getSize().scrollSize.x) > menuX ) && (elX < menuX))) {
					// if (element is contained within the vertical space occupied by the menu)
					if (elY > menuY && elY < (menuY + menuHeight)) {
						s.setStyle('visibility', 'hidden');
						form_elements_to_turn_on.push(s);
					}
				}
			}
		});
	}
	//toggleOpen.start(menuHeight);
	menu.setStyle('height', menuHeight+"px");
	menu.setStyle('visibility', 'visible');
	menu.setStyle('border-style', 'solid');

	//var toggle = new Fx.Style(menu, 'height',{duration: 200, onComplete:infoOpened});
	//toggleOpen.start(menuHeight);

	isFormOpen = false;
}

/* Turn off Current Menu */
function hide(whichMenu) {
	/* if a sub menu is open on my menu, close it.
	Reset cur_sub_menu so the other menu sub menus can open/close as needed */
	if ($(cur_sub_menu)) {
		if($(cur_sub_menu).getParent().id == whichMenu){

			$(cur_sub_menu).getLast().setStyle('height','0px');
		    $(cur_sub_menu).getLast().setStyle('display', 'none');

			var link = $(cur_sub_menu).getFirst();
			link.removeClass('sub_menu_btn_at');
			link.addClass('sub_menu_btn');
			cur_sub_menu = "";
		}
	}
	//toggleOpen.stop();
	cur_menu = null;
	var menu = $(whichMenu);

	//menu.setStyles({'overflow':'hidden', 'height':'0px'});
	if ($('popwins')) { swappopwin(''); }
	/*toggle = setFX(menu, 'height', 200).addEvent('onComplete', function(){
		if (menu.getStyle('height').toInt() == 0) {
			menu.setStyle('visibility', 'hidden');
		}

		//Find nav link and remove hover state
		if(menu.hasClass('features_menu_container')){
			var menu_children_arr = menu.getParent().getChildren();
			var menu_link = menu_children_arr[0];
			menu_link.removeClass('vehicle_feature_nav_link_on');
			menu_link.addClass(curClassName);
		}
		else {
			var menu_link = menu.getPrevious();
			menu_link.removeClass('other_menu_link_on');
		}
		for (var t = 0; t < form_elements_to_turn_on.length; t++) {
			form_elements_to_turn_on[t].setStyle('visibility', 'visible');
		}
		form_elements_to_turn_on = [];
	});
	//menu.setStyles({'overflow':'hidden', 'height':'0px'});
	if ($('popwinsTew')) { swappopwinTew(''); }
	/*toggle = setFX(menu, 'height', 200).addEvent('onComplete', function(){
		if (menu.getStyle('height').toInt() == 0) {
			menu.setStyle('visibility', 'hidden');
		}

		//Find nav link and remove hover state
		if(menu.hasClass('features_menu_container')){
			var menu_children_arr = menu.getParent().getChildren();
			var menu_link = menu_children_arr[0];
			menu_link.removeClass('vehicle_feature_nav_link_on');
			menu_link.addClass(curClassName);
		}
		else {
			var menu_link = menu.getPrevious();
			menu_link.removeClass('other_menu_link_on');
		}
		for (var t = 0; t < form_elements_to_turn_on.length; t++) {
			form_elements_to_turn_on[t].setStyle('visibility', 'visible');
		}
		form_elements_to_turn_on = [];
	});
	toggle.start(0);*/
	if(menu.hasClass('features_menu_container')){
		var menu_children_arr = $(menu.getParent()).getChildren();
		var menu_link = menu_children_arr[0];
		menu_link.removeClass('vehicle_feature_nav_link_on');
		menu_link.addClass(curClassName);
	}else{
		var menu_link = menu.getPrevious();
		menu_link.removeClass('other_menu_link_on');
	}
	for(var t = 0; t < form_elements_to_turn_on.length; t++){
		form_elements_to_turn_on[t].setStyle('visibility', 'visible');
	}
	form_elements_to_turn_on = [];
	menu.setStyle('height','0px');
	menu.setStyle('visibility', 'hidden');
}

/* Toggle sub menu`s in the current main menu */
function toggleSubMenu(whichMenu){
  var menu = $(whichMenu);

  // This line allows Safari to pick up the actual height of the about-to-open menu div
  menu.setStyle('display', 'block');

  var menuHeight = menu.getSize().scrollSize.y;
  var parent = $(menu.getParent().getParent().id);
  var parent_button_id = menu.getParent().id;
  var parentHeight = parent.getSize().scrollSize.y;
  var closeHeight = 0;
  var toggleParent = new Fx.Style(parent, 'height',{duration: 300});

  //If there is a menu open already, close it
  if(parent_button_id != cur_sub_menu && self.cur_sub_menu){
    var menu_to_close = $(cur_sub_menu).getLast();
		if(menu_to_close.className != "button_list_wrapper_closed" && menu.className != "button_list_wrapper_closed"){
			closeHeight = $(menu_to_close).getStyle('height').toInt();
			var toggle_last = new Fx.Style(menu_to_close, 'height',{duration: 300}).addEvent('onComplete', function(){
				menu_to_close.setStyle('display', 'none');
			});
			toggle_last.start(0);

			var cur_link = $(cur_sub_menu).getFirst();
			cur_link.removeClass('sub_menu_btn_at');
			cur_link.addClass('sub_menu_btn');

			cur_sub_menu = "";
		}
	}

  //Open the menu that was clicked
  if(parent_button_id != cur_sub_menu && menu.getStyle('height') == "0px"){
		if(closeHeight > menuHeight){formMenuHolder(true);}
		var toggle = new Fx.Style(menu, 'height',{duration: 300}).addEvent('onComplete', function(){
			formMenuHolder(false);
		});

	menu.setStyle('display', 'block');
	toggleParent.start(parentHeight + menuHeight - closeHeight);
    toggle.start(menuHeight);
    cur_sub_menu = parent_button_id;

    var link = menu.getParent().getFirst();

    link.removeClass('sub_menu_btn');
    link.addClass('sub_menu_btn_at');

  }else{
    //this is the close click for the menu
	var toggle = new Fx.Style(menu, 'height',{duration: 300}).addEvent('onComplete', function(){
		menu.setStyle('display', 'none');
	});
    toggle.start(0);
    toggleParent.start(parentHeight - menuHeight);
    //if closing the only open menu, reset cur_sub_menu
    cur_sub_menu = "";

    var link = menu.getParent().getFirst();

    link.removeClass('sub_menu_btn_at');
    link.addClass('sub_menu_btn');
  }
}

function city_menu_out(){
	$('city_menu').onmouseover();
	$('city_menu').timer =  setTimeout("hide($('city_menu_container'))", 5000);
}

function parks_menu_out(){
	$('parks_menu').onmouseover();
	$('parks_menu').timer =  setTimeout("hide($('parks_menu_container'))", 5000);
}

function show_shopping_menu(){
	$('history_menu').onmouseover();
	$('history_menu').onmouseout = function(){};// override to do nothing
	//$('history_menu').timer =  setTimeout("hide($('history_menu_container'))", 5000);
}
/* end navigation menus */

/* vehicle as shown info */

var glossary_label_pricing_avail_soon ="Pricing Available Soon.";
var glossary_def_pricing_avail_soon ="";

function check_pricing(){
	$$('.starting_at_p').each(function(start_p){
		var start_p = $(start_p);
		var start_val = start_p.getLast().innerHTML;
		(start_val == "X")?	start_p.setHTML(glossary_label_pricing_avail_soon) : $(start_p.getNext()).setStyle('visibility', 'visible');
		start_p.setStyle('visibility', 'visible');
	});
}

onload_register('check_pricing();');
