/*
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' Title			: basic ACTIVEA scripts | Javascript
' Description	: Old-School ACTIVEA scripts from javascript.js but used
'				: site-wide
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' History
' 06/12/2007	: David Ellenwood - moved from javascript.js
'
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/

// The following two functions for multimedia files that are placed in the page via the TinyMCE file editor in ACTIVEA.
// See "Using the JavaScript output method" at: http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media for more information

// Writes the object tags 
function writeFlash(p) {
	writeEmbed(
		'D27CDB6E-AE6D-11cf-96B8-444553540000',
		'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
		'application/x-shockwave-flash',
		p
	);
}

// Creates object tags
function writeEmbed(cls, cb, mt, p) {
	var h = '', n;

	h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
	h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
	h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
	h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
	h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
	h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
	h += '>';

	for (n in p)
		h += '<param name="' + n + '" value="' + p[n] + '">';

	h += '<embed type="' + mt + '"';

	for (n in p)
		h += n + '="' + p[n] + '" ';

	h += '></embed></object>';

	document.write(h);
}

// End TinyMCE Editor functions



//	' ~~~~ Open and close window (like the audio player window) ~~~~ 
//	' ~~~~ var newWindow stores the object specifically used for the Audio Player ~~~~
var newWindow;
function open_Window(name, winName, winDressing, winWidth, winHeight) 
{
	if (winWidth == null) winWidth = 500;
	if (winHeight == null) winHeight = 350;
	newWindow = window.open(name, winName, 'width=' + winWidth + ',height=' + winHeight + ',' + winDressing);
	newWindow.focus();
}

function closeNewWindow() {
 
  if (newWindow  && newWindow.open && !newWindow.closed)
  {
	   newWindow.close();
  }

}

function open_Centered_Window(fileLocation, winName, winDressing, winWidth, winHeight)
{
	if (winWidth == null) winWidth = 500;
	if (winHeight == null) winHeight = 350;
	var winLeft = (screen.width - winWidth) / 2;
	var winTop = (screen.height - winHeight) / 2;
	var features = 'height='+winHeight+',width='+winWidth+',top='+winTop+',left='+winLeft+','+winDressing;
	
	win = window.open(fileLocation, winName, features)
	
	if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
}


/*
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' Title			: Javascript | Velaro Window
' Description	: This function opens the Velaro Supprt Window
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' History
' 09/10/2007	: David Ellenwood - Moved from velaro.html
'
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/

function verlaroWin() {
	this.newWindow = window.open('http://service.velaro.com/visitor/requestchat.aspx?siteid=2270&showwhen=inqueue','VelaroChat','toolbar=no,location=no,directories=no,menubar=no,status=no,scrollbars=no,resizable=yes,replace=no');
	this.newWindow.focus();
	this.newWindow.opener=window;
	return false;
}



// Adds multiple events to any event handler - created by Peter Paul Koch @ http://www.quirksmode.org
// Inserted by DPE - 07/12/07
function addEventSimple(obj,evt,fn) {
	if (obj.addEventListener)
		obj.addEventListener(evt,fn,false);
	else if (obj.attachEvent)
		obj.attachEvent('on'+evt,fn);
}


// Browser Detect Lite  v2.1
// http://www.dithered.com/javascript/browser_detect/index.html
// modified by Chris Nott (chris@NOSPAMdithered.com - remove NOSPAM)
//
// modified by Michael Lovitt to include OmniWeb and Dreamcast

	function BrowserDetectLite() {
		var ua = navigator.userAgent.toLowerCase(); 
		this.ua = ua;
	
		// browser name
		this.isGecko     = (ua.indexOf('gecko') != -1);
		this.isMozilla   = (this.isGecko && ua.indexOf("gecko/") + 14 == ua.length);
		this.isNS        = ( (this.isGecko) ? (ua.indexOf('netscape') != -1) : ( (ua.indexOf('mozilla') != -1) && (ua.indexOf('spoofer') == -1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera') == -1) && (ua.indexOf('webtv') == -1) && (ua.indexOf('hotjava') == -1) ) );
		this.isIE        = ( (ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1) && (ua.indexOf("webtv") == -1) ); 
		this.isOpera     = (ua.indexOf("opera") != -1); 
		this.isKonqueror = (ua.indexOf("konqueror") != -1); 
		this.isIcab      = (ua.indexOf("icab") != -1); 
		this.isAol       = (ua.indexOf("aol") != -1); 
		this.isWebtv     = (ua.indexOf("webtv") != -1); 
		this.isOmniweb   = (ua.indexOf("omniweb") != -1);
		this.isDreamcast   = (ua.indexOf("dreamcast") != -1);
		
		// spoofing and compatible browsers
		this.isIECompatible = ( (ua.indexOf("msie") != -1) && !this.isIE);
		this.isNSCompatible = ( (ua.indexOf("mozilla") != -1) && !this.isNS && !this.isMozilla);
		
		// browser version
		this.versionMinor = parseFloat(navigator.appVersion); 
		
		// correct version number for NS6+ 
		if (this.isNS && this.isGecko) {
			this.versionMinor = parseFloat( ua.substring( ua.lastIndexOf('/') + 1 ) );
		}
		
		// correct version number for IE4+ 
		else if (this.isIE && this.versionMinor >= 4) {
			this.versionMinor = parseFloat( ua.substring( ua.indexOf('msie ') + 5 ) );
		}
		
		// correct version number for Opera 
		else if (this.isOpera) {
			if (ua.indexOf('opera/') != -1) {
				this.versionMinor = parseFloat( ua.substring( ua.indexOf('opera/') + 6 ) );
			}
			else {
				this.versionMinor = parseFloat( ua.substring( ua.indexOf('opera ') + 6 ) );
			}
		}
		
		// correct version number for Konqueror
		else if (this.isKonqueror) {
			this.versionMinor = parseFloat( ua.substring( ua.indexOf('konqueror/') + 10 ) );
		}
		
		// correct version number for iCab 
		else if (this.isIcab) {
			if (ua.indexOf('icab/') != -1) {
				this.versionMinor = parseFloat( ua.substring( ua.indexOf('icab/') + 6 ) );
			}
			else {
				this.versionMinor = parseFloat( ua.substring( ua.indexOf('icab ') + 6 ) );
			}
		}
		
		// correct version number for WebTV
		else if (this.isWebtv) {
			this.versionMinor = parseFloat( ua.substring( ua.indexOf('webtv/') + 6 ) );
		}
		
		this.versionMajor = parseInt(this.versionMinor); 
		this.geckoVersion = ( (this.isGecko) ? ua.substring( (ua.lastIndexOf('gecko/') + 6), (ua.lastIndexOf('gecko/') + 14) ) : -1 );
		
		// platform
		this.isWin   = (ua.indexOf('win') != -1);
		this.isWin32 = (this.isWin && ( ua.indexOf('95') != -1 || ua.indexOf('98') != -1 || ua.indexOf('nt') != -1 || ua.indexOf('win32') != -1 || ua.indexOf('32bit') != -1) );
		this.isMac   = (ua.indexOf('mac') != -1);
		this.isUnix  = (ua.indexOf('unix') != -1 || ua.indexOf('linux') != -1 || ua.indexOf('sunos') != -1 || ua.indexOf('bsd') != -1 || ua.indexOf('x11') != -1)
		
		// specific browser shortcuts
		this.isNS4x = (this.isNS && this.versionMajor == 4);
		this.isNS40x = (this.isNS4x && this.versionMinor < 4.5);
		this.isNS47x = (this.isNS4x && this.versionMinor >= 4.7);
		this.isNS4up = (this.isNS && this.versionMinor >= 4);
		this.isNS6x = (this.isNS && this.versionMajor == 6);
		this.isNS6up = (this.isNS && this.versionMajor >= 6);
		
		this.isIE4x = (this.isIE && this.versionMajor == 4);
		this.isIE4up = (this.isIE && this.versionMajor >= 4);
		this.isIE5x = (this.isIE && this.versionMajor == 5);
		this.isIE55 = (this.isIE && this.versionMinor == 5.5);
		this.isIE5up = (this.isIE && this.versionMajor >= 5);
		this.isIE6x = (this.isIE && this.versionMajor == 6);
		this.isIE6up = (this.isIE && this.versionMajor >= 6);
		
		this.isIE4xMac = (this.isIE4x && this.isMac);
	}
	var browser = new BrowserDetectLite();




//---------------------------------------------------------------
// Opacity Displayer, Version 1.0
// Copyright Michael Lovitt, 6/2002.
// Distribute freely, but please leave this notice intact.
//---------------------------------------------------------------
	
	//---------------------------------------------------------------
	// OPACITY OBJECT
	//
	// Instantiates the object, defines the properties and methods.
	function OpacityObject(divId, strPath) {
		this.id = divId;
		this.path = strPath;
		if (ns){
			if (browserVersion>=5) {
				this.layerObject = document.getElementById(divId).style;
			} else { 
				this.layerObject = eval("document."+divId);
			}
		} else {
			this.layerObject = eval(divId + ".style");
		}
		this.setBackground = od_object_setBackground;
	}
	// Uses AlphaImageLoader filter, or the css background property,
	// as appropriate, to apply a PNG or GIF as the background of the layerObject.
	function od_object_setBackground() {	
		if (pngAlpha) {
			this.layerObject.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.path+".png', sizingMethod='scale')";
		} else if (pngNormal) {
			this.layerObject.backgroundImage = 'url('+this.path+'.png)';
		} else {
			this.layerObject.backgroundImage = 'url('+this.path+'.gif)';
		}
	}
	//---------------------------------------------------------------
	
	//---------------------------------------------------------------
	// OPACITY DISPLAY FUNCTION
	// Outputs the image as a div with the AlphaImageLoader, or with
	// a standard image tag.
	function od_displayImage(strId, strPath, intWidth, intHeight, strClass, strAlt) {	
		if (pngAlpha) {
			document.write('<div style="height:'+intHeight+'px;width:'+intWidth+'px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+strPath+'.png\', sizingMethod=\'scale\')" id="'+strId+'" class="'+strClass+'"></div>');
		} else if (pngNormal) {
			document.write('<img src="'+strPath+'.png" width="'+intWidth+'" height="'+intHeight+'" name="'+strId+'" border="0" class="'+strClass+'" alt="'+strAlt+'" />');
		} else {
			document.write('<img src="'+strPath+'.gif" width="'+intWidth+'" height="'+intHeight+'" name="'+strId+'" border="0" class="'+strClass+'" alt="'+strAlt+'" />');
		}
	}
	//---------------------------------------------------------------
	
	//---------------------------------------------------------------
	// OPACITY ROLL-OVER FUNCTIONS
	function od_rollOver(strId, strColor) {	
		if (pngAlpha) {
			document.getElementById(strId).style.backgroundColor = strColor;
		} else {
		    if (document.images && (flag == true)) {
		        document[strId].src = eval(strId + "on.src");
		    }
		}
	}
	function od_rollOut(strId, strColor) {	
		if (pngAlpha) {
			document.getElementById(strId).style.backgroundColor = strColor;
		} else {
		    if (document.images) {
		        document[strId].src = eval(strId + "off.src");
		    }
		}
	}
	//---------------------------------------------------------------
	
	//---------------------------------------------------------------
	// global variables
	
	// if IE5.5+ on win32, then display PNGs with AlphaImageLoader
	if ((browser.isIE55 || browser.isIE6up) && browser.isWin32) {
		var pngAlpha = true;
		var strExt = ".png";
	// else, if the browser can display PNGs normally, then do that. that list includes:
		//     -Gecko Engine: Netscape 6 or Mozilla, Mac or PC
		//     -IE5+ Mac (OpacityObject applies the background image at 100% opacity)
		//     -Opera 6+ PC
		//     -Opera 5+ Mac (Doesn't support dynamically-set background images)
		//     -Opera 6+ Linux 
		//     -Omniweb 3.1+ 
		//     -Icab 1.9+ 
		//     -WebTV 
		//     -Sega Dreamcast
	} else if ((browser.isGecko) || (browser.isIE5up && browser.isMac) || (browser.isOpera && browser.isWin && browser.versionMajor >= 6) || (browser.isOpera && browser.isUnix && browser.versionMajor >= 6) || (browser.isOpera && browser.isMac && browser.versionMajor >= 5) || (browser.isOmniweb && browser.versionMinor >= 3.1) || (browser.isIcab && browser.versionMinor >= 1.9) || (browser.isWebtv) || (browser.isDreamcast)) {
		var pngNormal = true;
		var strExt = ".png";
		// otherwise, we use plain old GIFs
	} else {
		var strExt = ".gif";
	}
	
	var ns = (document.all)?false:true;
	var browserVersion = parseFloat(navigator.appVersion );
	//---------------------------------------------------------------



/*
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' Title			: activeX_fix.js | Javascript
' Description	: Workaround to automatically enable ActiveX controls in
'				: Internet Explorer.  Currently, IE loads ActiveX controls
'				: in a disabled state due to patent issues between Microsoft
'				: and another company. See link below for more info:
'				: http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/overview/activating_activex.asp
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' History
' 06/13/2006	: David Ellenwood - created script based on MSDN article:
'
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/

	/* Function for Object Placement
	   ------------------------------
		Required Arguments:		object_ID, type, width, height, path_to_swf (TOTAL: 5 arguments)
		Optional arguements:	any number of object parameters. Name/value pairs are separated by a comma.  See example call below.
		Example call:			placeObject('mastImage','application/x-shockwave-flash','220','150','/include/site/multimedia/swf/jpgrotator.swf?file=/include/site/multimedia/swf/jpgrotator.xml','movie,/include/site/multimedia/swf/jpgrotator.swf?file=/include/site/multimedia/swf/jpgrotator.xml','wmode,transparent');
	*/
	function placeObject(id,type,width,height,data) {
		document.write("\n"+'<object id="'+id+'" type="'+type+'" width="'+width+'" height="'+height+'" data="'+data+'">'+"\n");
		if (arguments.length > 5) {
			for(i = 5; i < arguments.length; i++) {
				paramValues = arguments[i].split(",");
				document.write('	<param name="'+paramValues[0]+'" value="'+paramValues[1]+'" />'+"\n");
			}
		}
		document.write('</object>'+"\n");
	}




/*
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' Title			: Javascript | MasterNav Display
' Description	: This script shows and hides the subcategories on any
'				: one primary category for the MasterNav. 
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' History
' 07/12/2007	: David Ellenwood - Created file
'
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/

	// Sets up the show and hide functionality
	function setCats() {
	
		// Get the initial primaryNav UL and the images inside that
		var btns	= document.getElementById('priNav').getElementsByTagName('a');
		var navImgs	= document.getElementById('priNav').getElementsByTagName('img');
		
		// Set all images back to defaults
		for(var i=0; i<navImgs; i++) {
			navImgs[i].src = '/include/site/multimedia/images/masterNavRtArrow.gif';
		}
		
		// Set the onclick event for the primary categories and display the current category
		for(var x=0; x<btns.length; x++) {
		
			//if((btns[x].className == "pri") || (btns[x].className == "pri selected")) {btns[x].onclick = showHideSubCat;}
			if(btns[x].id == "accCatLink") {btns[x].onclick = showHideSubCat;}
			
			// Display the one we want to see and the image to match
			if(btns[x].className == "pri selected") {
			
				var selectedLI		= btns[x].parentNode;
				var subCatsULs		= selectedLI.getElementsByTagName('ul');
				var selectedIMGs	= selectedLI.getElementsByTagName('img');
				
				if(subCatsULs[0]) {
					subCatsULs[0].style.display = 'block';
				}
	
				// Change the image to match...
				if(selectedIMGs[0]) {
					selectedIMGs[0].src = '/include/site/multimedia/images/masterNavDnArrow.gif'
				}
			
				
			}
		
		}
		
		// Make sure the colms are correctly sized
		adjustColms();
		
	}	// End function setCats
	
	
	// Does the actual showing and hiding
	function showHideSubCat() {
		// Setup my objects
		var subCats			= document.getElementById('priNav').getElementsByTagName('ul');
		var navImgs			= document.getElementById('priNav').getElementsByTagName('img');
		var selectedLI		= this.parentNode;
		var subCatsULs		= selectedLI.getElementsByTagName('ul');
		var selectedIMGs	= selectedLI.getElementsByTagName('img');
		
		// Hide all the subCat UL's
		for(var y=0; y<subCats.length; y++) {
			subCats[y].style.display = 'none';
		}
		
		// Change all images back to defaults
		for(var i=0; i<navImgs.length; i++) {
			if((navImgs[i].className != 'freeShipping') && (navImgs[i].className != 'velaro')) {
				navImgs[i].src = '/include/site/multimedia/images/masterNavRtArrow.gif';
			}
		}	
		
		// Display the one we want to see
		if(subCatsULs[0]) {
			subCatsULs[0].style.display = 'block';
		}
	
		// Change the image to match...
		if(selectedIMGs[0]) {
			selectedIMGs[0].src = '/include/site/multimedia/images/masterNavDnArrow.gif'
		}
	
		// Make sure the colms are correctly sized
		adjustColms();
	
	}	// End function showHideSubCat
	
	
	// Attach the setup function to the window.onload event
	addEventSimple(window,"load",setCats);



/*
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' Title			: Javascript | Column Heights
' Description	: This script adjusts the height of the layout column
'				: div's to keep them even. 
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' History
' 05/08/2007	: David Ellenwood - Created file
'
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/

	function adjustColms() {
		// Get the columns I want to match
		var navColm		= document.getElementById('nav');
		var navUL		= document.getElementById('priNav');
		var navNPad		= navUL.offsetHeight+210;
		var wrapColm	= document.getElementById('innerWrap');
		
		//alert(wrapColm.offsetHeight + '/' + wrapColm.style.height);
		//alert(	"BEFORE: Nav offset: "+navColm.offsetHeight+"   Wrap offset: "+wrapColm.offsetHeight+"\n"+"BEFORE: Nav style:  "+navColm.style.height+"   Wrap style:  "+wrapColm.style.height);
	
		// make any adjustments...
		
		// Make the navColm long enough for the NavUL (and it's extras)...
		if(navColm.offsetHeight < (navNPad)) {
			//alert('A');
			navColm.style.height = navNPad+"px";
		}
		
		// If the content colm is longer than the adjusted navColm (above) then make the navColm as long as the content colm...
		if(wrapColm.offsetHeight > navColm.offsetHeight) {
			//alert('B');
			navColm.style.height = wrapColm.offsetHeight+"px";
		}
		
		// If the content colm is shorter than the adjusted navColm AND
		// the content colm is LONGER or equal to the navUL then make the navColm as long as the content colm...
		if(wrapColm.offsetHeight < navColm.offsetHeight && wrapColm.offsetHeight >= navNPad) {
			//alert('C');
			navColm.style.height = wrapColm.offsetHeight+"px";
		}
		
		// If the content colm is shorter than the adjusted navColm AND
		// the content colm is SHORTER than the navUL then make the content colm as long as the nav colm...
		if(wrapColm.offsetHeight < navColm.offsetHeight && wrapColm.offsetHeight < navNPad) {
			//alert('D');
			// The offset heights are no longer accurate because we may have added style heights now
			// so, based on the page we're browsing adjust to the following spec...
			if(wrapColm.className == 'index') {
				wrapColm.style.height = navColm.offsetHeight-65+"px";
			} else {
				wrapColm.style.height = navColm.offsetHeight+"px";
			}
		}
	}
	
	addEventSimple(window,"load",adjustColms);