
/*
 * Fabtabulous! Simple tabs using Prototype
 * http://tetlaw.id.au/view/blog/fabtabulous-simple-tabs-using-prototype/
 * Andrew Tetlaw
 * version 1.1 2006-05-06
 * http://creativecommons.org/licenses/by-sa/2.5/
 */
var Fabtabs = Class.create();


Fabtabs.prototype = {
initialize : function(element) {
		this.element = $(element);
		var options = Object.extend({}, arguments[1] || {});
		var i = 0;
		this.menu = $A(this.element.getElementsByTagName('a'));
		this.show(this.getInitialTab());
		this.menu.each(this.setupTab.bind(this));
		// next 2 lines added by jamos@campbell-ewald.com and updated by maria.rojas@avventa.co.cr to ensure css is not controlling the hidden div - turn js off and the divs are still visible
		this.panels = document.getElementsByClassName('panel');
		for(i = 0; i< this.panels.length;i = i+1){
			if (this.panels[i].className.indexOf('active-tab-body') == -1)
				this.panels[i].style.display = 'none';
		}
		//this.panels.each(function(option) {if (option.className.indexOf('active-tab-body') == -1) { option.style.display = 'none'; }});
	},
	setupTab : function(elm) {
	Event.observe(elm,'click',this.activate.bindAsEventListener(this),false);
		//if (elm.className.indexOf('active-tab') == -1){
			Event.observe(elm,'mouseover',this.shift.bindAsEventListener(this),false);
			Event.observe(elm,'mouseout',this.shiftback.bindAsEventListener(this),false);
		//}
	},
	activate :  function(ev) {
		var elm = Event.findElement(ev, "a");
		this.show(elm);
		Event.stop(ev);
		this.menu.without(elm).each(this.hide.bind(this));
		// next 2 lines added by jamos@campbell-ewald.com > bookmarkable url
		newloc = elm.hash.slice(1);
		location.href = "#"+newloc;

	},
	hide : function(elm) {
		$(elm).removeClassName('active-tab');
		$(this.tabID(elm)).removeClassName('active-tab-body');
		//added by jamos@campbell-ewald.com
		new Effect.Fade($(this.tabID(elm)), { fps:250, duration:1 });
	},
	show : function(elm) {
		$(elm).addClassName('active-tab');
		$(this.tabID(elm)).addClassName('active-tab-body');
		// next line added by jamos@campbell-ewald.com
		new Effect.Appear($(this.tabID(elm)), { fps:250, duration:1, delay:1 });

	},
	// next 2 methods added by jamos@campbell-ewald
	shift : function(ev) {
		var elm = Event.findElement(ev, "a");
		new Effect.Morph(elm, { style: '', fps:250, duration:0.1 });
	},
	shiftback : function(ev) {
		var elm = Event.findElement(ev, "a");
		new Effect.Morph(elm, { style: '', fps:250, duration:0.1 });
	},
	tabID : function(elm) {
		return elm.href.match(/#(\w.+)/)[1];
	},
	getInitialTab : function() {
		if(document.location.href.match(/#(\w.+)/)) {
			var loc = RegExp.$1;
			var elm = this.menu.find(function(value) { return value.href.match(/#(\w.+)/)[1] == loc; });
			return elm || this.menu.first();
		} else {
			return this.menu.first();
		}
	}
}


function setExternalLinks(){
	$$('a[rel~="external"]').each(function(link) {
	link.target = "_blank";
	link.addClassName('ext');
	});
}


function langToggle(){
	// by jamos@campbell-ewald.com

	// if user clicks on language select button, show menu links
	Event.observe('language-switch', 'click', function(evt) { nav.show(evt); Event.stop(evt); },false );

	// if user mouses over any of the menu links, cancel the timeout and keep menu open
	Event.observe('language-toggle', 'mouseover', function() { nav.show(); },false );

	// if user mouses away from the nav, allow timeout to run, hide menu after certain time
	Event.observe('language-toggle', 'mouseout', function() { nav.hide(); },false );

	// if user mouses off an open menu and clicks anywhere in the <body> close menu (quickly)
	var b = document.getElementsByTagName("body").item(0);
	Event.observe(b,'click', function(evt) { nav.quickHide(); }, false);

	var nav = {
		timeout : null,
		show : function(){

		   if (!$('language-toggle').hasClassName('displayed')){
		   clearTimeout(this.timeout);
				new Effect.Appear('language-toggle', {duration:0.3, fps:250});
				$('language-toggle').addClassName('displayed');

				// if user mouses off an open menu and clicks anywhere in the <body> close menu (quickly)
				var b = document.getElementsByTagName("body").item(0);
				Event.observe(b,'click', function(evt) { nav.quickHide(); }, false);

				Event.observe('language-switch', 'mouseout', function(evt) { nav.hide();  },false );

			} else {
			nav.quickHide();
			}
		},
		hide : function(){
			if ($('language-toggle').hasClassName('displayed')){
			$('language-toggle').removeClassName('displayed');
			this.timeout = setTimeout(function(){ new Effect.Fade('language-toggle', { duration:0.8, fps:250 }); $('language-toggle').removeClassName('displayed');}, 1300);
			}
		},

		quickHide : function(){
			new Effect.Fade('language-toggle', {duration:0.3, fps:250});
			$('language-toggle').removeClassName('displayed');
		}
	}
}



function animNav(){
	var navlinks = $$('ul#lang-selection a');

	var ar = false;
	if ($$('body.ar')) {
	    ar = true;
	}

	navlinks.each(function(navitem){
	    if (ar) {
	        Event.observe(navitem,'mouseover', function() { new Effect.Morph(navitem, { style: 'margin-left:0px; background-color:#ccc;', fps:250, duration:0.1 }); }, false);
	        Event.observe(navitem,'mouseout', function() { new Effect.Morph(navitem, { style: 'margin-left:0px; background-color:#eee;', fps:250, duration:0.2 }); }, false);
        } else {
	        Event.observe(navitem,'mouseover', function() { new Effect.Morph(navitem, { style: 'margin-left:10px; background-color:#ccc;', fps:250, duration:0.1 }); }, false);
	        Event.observe(navitem,'mouseout', function() { new Effect.Morph(navitem, { style: 'margin-left:0px; background-color:#eee;', fps:250, duration:0.2 }); }, false);
        }
	});
}


function getValues(formId, inputName) {

	var form = $(formId);
	var input = form[inputName];

	// hidden fields to be changed dynamically

	var email = $('recipaddr');
	var optionValue = $F(input);

	var countryEmails = new Array();
	countryEmails["ACDelco World Headquarters"] = "ACD.SPO.B2C.eMail.Management@gm.com";
	countryEmails["Africa"] = "muneer.alhasan@gm.com"; 
	countryEmails["Argentina"] = "eduardo.cassaglia@gm.com,jorge.mendoza@gm.com,alfonso.quintana@gm.com,marcela.caldaroni@gm.com";
	countryEmails["Aruba"] = "eduardo.balbuenaestrada@gm.com";
	countryEmails["Australia"] = "andrew.calaby@gm.com";
	countryEmails["Brazil"] = "acdelcofaleconosco@gm.com";	
	countryEmails["Canada"] = "kevin.brimble@gm.com,support@acdelcoinfoline.com";
	countryEmails["Chile"] = "cristian.weiss@gm.com,victor.rodriguez@gm.com";
	countryEmails["China"] = "acdelco.help@gm.com,helen.mo@gm.com";
	countryEmails["Colombia"] = "juan.aya@gm.com";
	countryEmails["Costa Rica"] = "eduardo.balbuenaestrada@gm.com";
	countryEmails["Curaçao"] = "eduardo.balbuenaestrada@gm.com";
	countryEmails["Dominican Republic"] = "eduardo.balbuenaestrada@gm.com";
	countryEmails["Ecuador"] = "isabel.moreno@gm.com,pablo.toledo@gm.com";
	countryEmails["Europe"] = "Lee.Quinney@aftermarket.uk.com,Russell.shea@aftermarket.uk.com";
	countryEmails["Grenada"] = "eduardo.balbuenaestrada@gm.com";
	countryEmails["Guatemala"] = "eduardo.balbuenaestrada@gm.com";
	countryEmails["Honduras"] = "eduardo.balbuenaestrada@gm.com";
	countryEmails["Hong Kong"] = "acdelco.help@gm.com,helen.mo@gm.com";
	countryEmails["India"] = "acdelco.india@gm.com,rajesh.nangia@gm.com";
	countryEmails["Indonesia"] = "taufik.hidayat@gm.com,theantham.theanthong-in@gm.com";
	countryEmails["Japan"] = "sadao.hosogai@gm.com";
	countryEmails["Korea"] = "namyeon.won@gm.com";
	countryEmails["New Zealand"] = "stephen.matthews@gm.com";
	countryEmails["Malaysia"] = "sam.ong@gm.com";
	countryEmails["Mexico"] = "eduardo.balbuenaestrada@gm.com";
	countryEmails["Middle East"] = "muneer.alhasan@gm.com";
	countryEmails["Paraguay"] = "eduardo.cassaglia@gm.com,jorge.mendoza@gm.com";
	countryEmails["Peru"] = "cristian.weiss@gm.com,ernesto.zegarra@gm.com";
	countryEmails["Philippines"] = "dante.reyes@gm.com,theantham.theanthong-in@gm.com";
	countryEmails["Puerto Rico"] = "eduardo.balbuenaestrada@gm.com";
	countryEmails["Singapore"] = "sam.ong@gm.com";
	countryEmails["South Africa"] = "niel.langner@gm.com,yusuf.patel@gm.com";
	countryEmails["Taiwan"] = "denise.kuo@gm.com,stephanie.liao@gm.com";
	countryEmails["Thailand"] = "theantham.theanthong-in@gm.com,somkiat.karunsakultoed@gm.com";
	countryEmails["Trinidad"] = "eduardo.balbuenaestrada@gm.com";
	countryEmails["United States"] = "ACD.SPO.B2C.eMail.Management@gm.com";
	countryEmails["Uruguay"] = "eduardo.cassaglia@gm.com,jorge.mendoza@gm.com";
	countryEmails["Venezuela"] = "luis.rodriguez@gm.com,carmen.palacios@gm.com";

	if (optionValue != ""){
		email.value = countryEmails[""+optionValue+""];
	} else {
	email.value = 'not selected';
	}

	//console.info(email.value);

	Event.observe(input, 'change', function(evt) {  var newoptionValue = $F(input); email.value = countryEmails[""+newoptionValue+""]; }, false);
}



function zebraTable(){
$A(document.getElementsByTagName("table")).each(function(table){
  $A(table.getElementsByTagName("tr")).each(function(row,i){
    if ( i % 2 == 1 )
      Element.addClassName( row, "odd" );
  });
});

}


function contactCallback(result, form) {
	if (result == true){
	$('emailsender').value = $('Email').value;

	}
}

function lastLinkHeader(){
	jQuery("#sitenav #wrap_links li").last().addClass("last");
}

function init(){
	setExternalLinks();
	zebraTable();
	if ($('selection-nav-wrap')) { animNav(); }
	if ($('language-switch')) { langToggle();  }
	if ($('worldwide-contact-us')) {
		new Validation('worldwide-contact-us', {immediate : true, onFormValidate : contactCallback});
		getValues('worldwide-contact-us', 'REGION');
	}
	if ($('region-tabnav')) { new Fabtabs('region-tabnav'); }
	lastLinkHeader();
}

Event.observe(window,'load',init,false);


