// JavaScript Document

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; 
	for(i=0; i<a.length; i++)
		if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function roll(img_name1, img_src1)
   {
   document[img_name1].src = img_src1;
   }
   
   // bw-menu.js
// simple dynamic menu
//
// by Bill Weinman  http://bw.org/
// Copyright (c) 2009 BHG LLC
//
// Version 1.0.2
// Created for Dynamic Menus course at lynda.com
//

// configuration variables
var timeout   = 0; // milliseconds
var fadeSpeed = 500;  // milliseconds
var useFade   = true;

// timers array
var timers = new Array();

// state array -- by id, value = active, false = inactive
var state = new Array();

// lastOpacity: used to prevent multiple timers from making the fade flicker
var lastOpacity = new Array();

// MSIE has its own way of setting opacity, so we have to detect it
// all the other major browsers support the standard DOM opacity property
var msie = false;
if( navigator.appName == "Microsoft Internet Explorer" ) msie = true;

// entry point: set element to visible and clear its timers
function setMenu( id )
{
    var e = document.getElementById(id);
    e.style.visibility = "visible";
    state[id] = true;
    setOpacity( id, 1 );
    if(timers[id]) {
        clearTimeout(timers[id]);
        timers[id] = undefined;
     }
}

// set element to hidden and reset its opacity
// typically called by a timer
// may be used as an entry point to bypass timers and fades
function hideMenu( id )
{
    var e = document.getElementById(id);
    state[id] = false;
    e.style.visibility = "hidden";
    if(useFade) setOpacity( id, 1 );
}

// entry point: hide the menu using fade (if enabled)
function clearMenu( id )
{
    if(useFade) timers[id] = setTimeout( 'fadeMenu( "' + id + '" )', timeout );
    else timers[id] = setTimeout( 'hideMenu( "' + id + '" )', timeout );
}

// set the opacity
// special support for MSIE
function setOpacity( id, value )
{
    var e = document.getElementById(id);

    if(state[id]) value = 1;    // menu fade was interrupted
    else if(lastOpacity[id] && (lastOpacity[id] < value)) value = lastOpacity[id];  // prevents flicker if multiple timers set
    
    if(msie) e.style.filter = 'alpha(opacity=' + value * 100 + ')'; // MS Internet Explorer
    else e.style.opacity = (value);     // Everyone else (standard DOM)

    if( value == 0 ) hideMenu( id );    // when all faded, reset the menu state
    lastOpacity[id] = value;
}

// fade a menu
// typically called by a timer
function fadeMenu ( id )
{
    var start = 0;
    var end = 0;
    var s = Math.round( fadeSpeed / 25 );   // fade in 25ms increments
    var timer = 0;
    var i;

    state[id] = false;

    for( i = s; i >= 0 ; i-- ) {
        setTimeout( "setOpacity('" + id + "'," + ( i / s ) + ")", timer++ * fadeSpeed / s )
    }
}

/**
 * @author Alexander Farkas
 * v. 1.22
 */


(function($) {
	if(!document.defaultView || !document.defaultView.getComputedStyle){ // IE6-IE8
		var oldCurCSS = $.curCSS;
		$.curCSS = function(elem, name, force){
			if(name === 'background-position'){
				name = 'backgroundPosition';
			}
			if(name !== 'backgroundPosition' || !elem.currentStyle || elem.currentStyle[ name ]){
				return oldCurCSS.apply(this, arguments);
			}
			var style = elem.style;
			if ( !force && style && style[ name ] ){
				return style[ name ];
			}
			return oldCurCSS(elem, 'backgroundPositionX', force) +' '+ oldCurCSS(elem, 'backgroundPositionY', force);
		};
	}
	
	var oldAnim = $.fn.animate;
	$.fn.animate = function(prop){
		if('background-position' in prop){
			prop.backgroundPosition = prop['background-position'];
			delete prop['background-position'];
		}
		if('backgroundPosition' in prop){
			prop.backgroundPosition = '('+ prop.backgroundPosition;
		}
		return oldAnim.apply(this, arguments);
	};
	
	function toArray(strg){
		strg = strg.replace(/left|top/g,'0px');
		strg = strg.replace(/right|bottom/g,'100%');
		strg = strg.replace(/([0-9\.]+)(\s|\)|$)/g,"$1px$2");
		var res = strg.match(/(-?[0-9\.]+)(px|\%|em|pt)\s(-?[0-9\.]+)(px|\%|em|pt)/);
		return [parseFloat(res[1],10),res[2],parseFloat(res[3],10),res[4]];
	}
	
	$.fx.step. backgroundPosition = function(fx) {
		if (!fx.bgPosReady) {
			var start = $.curCSS(fx.elem,'backgroundPosition');
			if(!start){//FF2 no inline-style fallback
				start = '0px 0px';
			}
			
			start = toArray(start);
			fx.start = [start[0],start[2]];
			var end = toArray(fx.end);
			fx.end = [end[0],end[2]];
			
			fx.unit = [end[1],end[3]];
			fx.bgPosReady = true;
		}
		//return;
		var nowPosX = [];
		nowPosX[0] = ((fx.end[0] - fx.start[0]) * fx.pos) + fx.start[0] + fx.unit[0];
		nowPosX[1] = ((fx.end[1] - fx.start[1]) * fx.pos) + fx.start[1] + fx.unit[1];           
		fx.elem.style.backgroundPosition = nowPosX[0]+' '+nowPosX[1];

	};
})(jQuery);

/* TOOLS&REFERENCES ********************************************************

    BEGIN Resources Subnavigation

***********************************************************/

/*********************************************************

    Initialize variables

***********************************************************/

var lastClicked = "";
var tierOneContent = "";
var tierTwoContent = "";
var tierThreeContent = "";

var buttonArray=[
	'pressure_btn',
	'nonPressure_btn',
	'cause_topCause_btn',
	'cause_topSolution_btn',
	'commodity_topCommodity_btn',
	'commodity_topSolution_btn'
];
				
var contentArray=[
	'pressureCars_solutions',
	'nonPressureCars_solutions',
	'commodities_solutions',
	'miscellaneous_solutions',
	'first_screen'
];

/*********************************************************

    TierOneClick() - this method is the dropdown functionality, visited state and status variables

***********************************************************/

// pass in the ID for the Tier 1 button that was clicked, the color for the visited buton; the ID for the background; the left and right pixel positions for the stop position for background; the animation duration.
function TierOneClick(downButtonId, downColor, downBackgroundId, animDuration, tierText1, tierText2) {
	//capture the id of the most recently position background.  This is remebered to reset it after a rollOut.
	lastClicked = downButtonId;
	//capture the id of the selected content, whether CAUSE of COMMODITY
	tierOneContent = downButtonId;
	//call the buttonDropdown function
	DownState(downButtonId, downColor);
	if(downButtonId == 'by_commodity_btn') {
	//animate the background downward from parameters passed in from the inline event
		$('#'+downBackgroundId).animate({backgroundPosition:"(0px 0px)"}, 
										animDuration,
										function() {
											$('#'+tierText1).fadeIn(animDuration);
											$('#'+tierText2).fadeIn(animDuration);
										});
	
	} else {
		$('#'+downBackgroundId).animate({backgroundPosition:"(0px 0px)"}, animDuration);
	}
	
}

/*********************************************************

    TierTwoPostion() - this method moves Tier 3 down with tier 2, setting it up for its functionality

***********************************************************/

// pass in the ID for the Tier 1 button that was clicked, the color for the visited buton; the ID for the background; the left and right pixel positions for the stop position for background; the animation duration.
function TierTwoPostion(downBackgroundId, animDuration, tierText1, tierText2) {
	
		//animate the tier 3 background downward from parameters passed in from the inline event.  This positions the div so that when a tier 2 button is clicked, the tier 3 background will drop down.
		$('#'+downBackgroundId).animate({backgroundPosition:"(0px 10px)"},
										animDuration, 
										function() {
											$('#'+tierText1).fadeIn(animDuration);
											$('#'+tierText2).fadeIn(animDuration);
										});
		
}

/*********************************************************

    TierTwoClick() - this method is the dropdown functionality, visited state and status variables

***********************************************************/
				
// pass in the ID for the Tier 2 button that was clicked, the color for the visited buton; the ID for the background; the left and right pixel positions for the stop position for background; the animation duration.
function ContentClick(downButtonId) {
	//capture the id of the most recently position background.  This is remebered to reset it after a rollOut.
	lastClicked = downButtonId;
	
	if(downButtonId == "pressure_btn"){
		
		
		for(i=0; i<contentArray.length; i++) {
	
			$('#'+contentArray[i]).css("display", "none");
	
		}
		
		$('#pressureCars_solutions').fadeIn(1000);
	}
	
	if(downButtonId == "nonPressure_btn"){
		
		for(i=0; i<contentArray.length; i++) {
	
			$('#'+contentArray[i]).css("display", "none");
	
		}
	
		$('#nonPressureCars_solutions').fadeIn(1000);
	}
	
	if(downButtonId == "by_commodity_btn"){
		
		for(i=0; i<contentArray.length; i++) {
	
			$('#'+contentArray[i]).css("display", "none");
	
		}
	
		$('#commodities_solutions').fadeIn(1000);
	}
	
	if(downButtonId == "by_miscellaneous_btn"){
		
		for(i=0; i<contentArray.length; i++) {
	
			$('#'+contentArray[i]).css("display", "none");
	
		}
	
		$('#miscellaneous_solutions').fadeIn(1000);
	}
			
}

/*********************************************************

	OverState() - this method sets the rollOver text colors.

***********************************************************/

// pass in the ID for the button text that was clicked, the color for the clicked buton.
function OverState(overButtonId, overColor, bg, pressure, nonPressure) {
	//set the new color for the button
	$(overButtonId).css({color:overColor});
	//set the new color and parameters of the text shadow
	$(overButtonId).css("textShadow", "0 1px 0px #473E00");
	//if overButtonId is the BY CAUSE button, activate tierTwo dropdown
	if(overButtonId = 'by_cause_btn') {
	
		ShowTierTwo(bg, pressure, nonPressure);
	
	}

}

/*********************************************************

	TierTwo() - this method implements the dropdown functionality.

***********************************************************/

// tier 2 buttons.
function ShowTierTwo(bg, pressure, nonPressure){

	$(bg).css("display", "block");
	$(pressure).css("display", "block");
	$(nonPressure).css("display", "block");	

}

/*********************************************************

	OutState() - this method sets the rollOver text colors.

***********************************************************/

// pass in the ID for the button text that was clicked, the color for the clicked buton.
function OutState(outButtonId, outColor, bg, pressure, nonPressure) {
	
	
	$(bg).css("display", "none");
	$(pressure).css("display", "none");
	$(nonPressure).css("display", "none");	
	$(outButtonId).css({color:outColor});	
	$(outButtonId).css("textShadow", "0 1px 0px #000000");
	
	/*if(lastClicked == 'by_cause_btn'){
		$("#by_cause_btn").css({color:"yellow"});
		$("#by_cause_btn").css("textShadow", "0 1px 0px #620002");
	}
	
	if(lastClicked == 'pressure_btn'){
		$("#pressure_btn").css({color:"yellow"});
		$("#pressure_btn").css("textShadow", "0 1px 0px #620002");
	}
	
	if(lastClicked == 'nonPressure_btn'){
		$("#nonPressure_btn").css({color:"yellow"});
		$("#nonPressure_btn").css("textShadow", "0 1px 0px #620002");
	}
	
	if(lastClicked == 'by_commodity_btn'){
		$("#by_commodity_btn").css({color:"yellow"});
		$("#by_commodity_btn").css("textShadow", "0 1px 0px #620002");
	}
	
	if(lastClicked == 'commodity_topCommodity_btn'){
		$("#commodity_topCommodity_btn").css({color:"yellow"});
		$("#commodity_topCommodity_btn").css("textShadow", "0 1px 0px #620002");
	}
	
	if(lastClicked == 'commodity_topSolution_btn'){
		$("#commodity_topSolution_btn").css({color:"yellow"});
		$("#commodity_topSolution_btn").css("textShadow", "0 1px 0px #620002");
	}*/
	
}

/*********************************************************

    DownState() - this method sets the visited text colors.

***********************************************************/

// pass in the ID for the button text that was clicked, the color for the clicked buton.
function DownState(downButtonId, downColor) {
	
	//set the new color for the button
	$("#"+downButtonId).css({color:downColor});
	//set the new color and parameters of the text shadow
	$("#"+downButtonId).css("textShadow", "0 1px 0px #620002");

}

function WidenDiv(id) {
	document.getElementById(id).style.backgroundColor = '#777';
	$('#'+id).animate({
    width: '+=200',
	height: '+=100'
	}, 250)
 }















