/* text strings and configuration items */
	// default text for web search form
	var txt_websearch = 'Search the Web';
	// track the current section of the website the user is on.
	var currentsection = 'home';
	var inProgress = false;
	// expanding and collapsing links (homepage)
	var link_exp = '<img src="images/btn-expand.gif" alt="Click to Expand" title="Click to Expand" />';
	if (typeof(page_link_exp) != 'undefined')
	{
		link_exp = page_link_exp;
	}
	var link_col = '<img src="images/btn-collapse.gif" alt="Click to Close" title="Click to Close" />';
	if (typeof(page_link_col) != 'undefined')
	{
		link_col = page_link_col;
	}
	// limit front page subcategory expansion to one item
	var hpx_open = '';
	// used for product specifier
	var searchcriteriaselected = new Array();
	var outputstring = '';
	// for animation controls, values can be "normal","fast","slow","x-slow" or "x-fast"
	var animspeed = 'fast';

	/* reusable functions */
	function trim(str) {
		str = this != window? this : str;
		return str.replace(/^\s+/g,'').replace(/\s+$/g,'');
	}
	
	/* these functions are used for flyout category list */
	function MM_findObj(n, d) {
		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 P7_autoLayers() {
		var g,b,k,f,args=P7_autoLayers.arguments;a=parseInt(args[0]);if(isNaN(a))a=0;
		if(!document.p7setc){p7c=new Array();document.p7setc=true;for(var u=0;u<10;u++){
		p7c[u]=new Array();}}for(k=0;k<p7c[a].length;k++){if((g=MM_findObj(p7c[a][k]))!=null){
		b=(document.layers)?g:g.style;b.visibility="hidden";}}for(k=1;k<args.length;k++){
		if((g=MM_findObj(args[k]))!=null){b=(document.layers)?g:g.style;b.visibility="visible";b.display="block";f=false;
		for(var j=0;j<p7c[a].length;j++){if(args[k]==p7c[a][j]) {f=true;}}
		if(!f){p7c[a][p7c[a].length++]=args[k];}}}
	}
	function P7_Snap() {
		var x,y,ox,bx,oy,p,tx,a,b,k,d,da,e,el,tw,q0,xx,yy,w1,pa='px',args=P7_Snap.arguments;a=parseInt(a);
		if(document.layers||window.opera){pa='';}for(k=0;k<(args.length);k+=4){
		if((g=MM_findObj(args[k]))!=null){if((el=MM_findObj(args[k+1]))!=null){
		a=parseInt(args[k+2]);b=parseInt(args[k+3]);x=0;y=0;ox=0;oy=0;p="";tx=1;
		da="document.all['"+args[k]+"']";if(document.getElementById){
		d="document.getElementsByName('"+args[k]+"')[0]";if(!eval(d)){
		d="document.getElementById('"+args[k]+"')";if(!eval(d)){d=da;}}
		}else if(document.all){d=da;}if(document.all||document.getElementById){while(tx==1){
		p+=".offsetParent";if(eval(d+p)){x+=parseInt(eval(d+p+".offsetLeft"));y+=parseInt(eval(d+p+".offsetTop"));
		}else{tx=0;}}ox=parseInt(g.offsetLeft);oy=parseInt(g.offsetTop);tw=x+ox+y+oy;
		if(tw==0||(navigator.appVersion.indexOf("MSIE 4")>-1&&navigator.appVersion.indexOf("Mac")>-1)){
			ox=0;oy=0;if(g.style.left){x=parseInt(g.style.left);y=parseInt(g.style.top);}else{
			w1=parseInt(el.style.width);bx=(a<0)?-5-w1:-10;a=(Math.abs(a)<1000)?0:a;b=(Math.abs(b)<1000)?0:b;
			x=document.body.scrollLeft+event.clientX+bx;y=document.body.scrollTop+event.clientY;}}
		}else if(document.layers){x=g.x;y=g.y;q0=document.layers,dd="";for(var s=0;s<q0.length;s++){
			dd='document.'+q0[s].name;if(eval(dd+'.document.'+args[k])){x+=eval(dd+'.left');y+=eval(dd+'.top');
			break;}}}e=(document.layers)?el:el.style;xx=parseInt(x+ox+a),yy=parseInt(y+oy+b);
		if(navigator.appVersion.indexOf("MSIE 5")>-1 && navigator.appVersion.indexOf("Mac")>-1){
			xx+=parseInt(document.body.leftMargin);yy+=parseInt(document.body.topMargin);}
		e.left=xx+pa;e.top=yy+pa;}}}
	}
	function P7_hideEl(evt) {
		var b,r,m=false;if(document.layers){b=evt.target;if(b.p7aHide){
		b.visibility="hidden";}else{routeEvent(evt);}
		}else if(document.all&&!window.opera){b=event.srcElement;while(b){
		if(b.p7aHide){break;}b=b.parentElement;}if(!b.contains(event.toElement)){
		b.style.visibility="hidden";}}else if(document.getElementById){
		b=evt.currentTarget;r=evt.relatedTarget;while(r){if(b==r){m=true;
		break;}r=r.parentNode;}if(!m){b.style.visibility="hidden";}}
	}
	function P7_autoHide() {
		var i,g;for(i=0;i<arguments.length;i++){
		if((g=MM_findObj(arguments[i]))!=null){g.p7aHide=true;if(document.layers){
		g.captureEvents(Event.MOUSEOUT);}g.onmouseout=P7_hideEl;}}
	}
	function isIE7()
	{
		if ($.browser.msie)
		{
			var ua = navigator.userAgent;
			if (ua)
			{
				var versionString = ua.match(/MSIE (\d+(?:\.\d+)+(?:b\d*)?)/);
				var versionNumber = parseFloat(version);
				return (versionNumber == 7);
			}
		}
		return false;
	}


	/* apply js to the page unobtrusively */
	$(document).ready(function(){
	
		/* --- Contextual Search --- */
//		if($('body').get(0).className){ currentsection = $('body').get(0).className; }
//		if(trim(currentsection)=='' || currentsection=='home' || currentsection=='catalogs' || currentsection=='videos' || currentsection=='search'){
//			$('form#contextsearch option.products').set('selected','selected');
//		}else{
//			$('form#contextsearch option.'+currentsection).set('selected','selected');
//			$('div#sectionsearch label img').set('src','images/txt-search'+currentsection+'.gif').set('alt','Search '+currentsection);
//		}
		
		
		/* --- Web Search --- */
//		$('input#wsq').set('value',txt_websearch);
//		$('input#wsq').focus(function(){
//			if($(this).get(0).value == txt_websearch){
//				$(this).set('value','');
//			}
//		});
//		$('input#wsq').blur(function(){
//			if(trim($(this).get(0).value) == ''){
//				$(this).set('value',txt_websearch);
//			}
//		});
		
		
		/* --- Expanding Category Menu --- */
				    
		$('div#homeprod ul li.hpx').prepend('<span class="exp" style="cursor:pointer; padding-right:5px;">'+link_exp+'<\/span>');
//		$('div#homeprod ul li ul li a.exp').remove();											//SLOW!
		$('span.exp').click(function(){
			if ($('span.exp', this.parentNode).html().indexOf('Click to Expand') > 0)
			{
				$('ul', this.parentNode).slideDown(animspeed, function()
				{
					$('span.exp', this.parentNode).html(link_col);
				});
			}
			else
			{
				$('ul', this.parentNode).slideUp(animspeed, function()
				{
					$('span.exp', this.parentNode).html(link_exp);
				});
			}
//			if(!inProgress)
//			{
//				inProgress = true;
//				try
//				{
//					if(hpx_open)
//					{
//						if(hpx_open == this.parentNode.getAttribute('id'))
//						{
//							$('#' + hpx_open + ' ul').slideUp(animspeed, function()
//							{
//								hpx_open = '';
//								$('a.exp', this.parentNode).html(link_exp);
//							});
//						}
//						else
//						{
//							//$('#'+hpx_open+' ul').slideUp(animspeed, function()
//							//{
//								var openme = this.parentNode.getAttribute('id');
//								$('#'+openme+' ul').slideDown(animspeed, function()
//								{
//									//$('#' + hpx_open + ' a.exp').html(link_exp);
//									$('#' + openme + ' a.exp').html(link_col);
//									hpx_open = openme;
//								});
//							//});
//						}
//					}
//					else
//					{
//						$('ul', this.parentNode).slideDown(animspeed, function()
//						{
//							hpx_open = this.parentNode.getAttribute('id');
//							$('a.exp', this.parentNode).html(link_col);
//						});
//					}
//				}
//				catch(ex)
//				{
//				}
//				inProgress = false;	
//				return false;
//			}
		});
//		$('span.exp').focus(function(){ this.blur(); });
		
		// when moving the mouse over one of these areas, collapse any open sections
//		$('div#homebottom,div#rightads,div.hpimg,div#homeprod h1').mouseover(function(){
//			if(hpx_open)
//			{
//				$('#'+hpx_open+' ul').slideUp(animspeed);
//				$('#'+hpx_open+' a.exp').html(link_exp);
//				hpx_open='';
//			}
//		});
		
		/* --- Product Specifier --- */
		if (isIE7())
		{
			$('#expandbar ul li ul li div.checkboxlist').removeClass('checkboxlist').addClass('checkboxlistIE7');
			
			$('#expandbar .closed .more').toggle(
				function(){
					$('ul',this.parentNode).show();
					$('div.searchcritsel',this.parentNode).remove();
					$(this).parent().removeClass('closed').addClass('opened');
				},
				function(){
					$(this).parent().removeClass('opened').addClass('closed');
					$('ul',this.parentNode).hide(); 
					$('input:checked',this).each(function(){
						searchcriteriaselected.push($('label[@for="'+$(this).get(0).getAttribute('id')+'"]').text());
					});
					$('option',this).each(function(){
						if(this.selected){
							searchcriteriaselected.push($(this).text());
						}
					});
					for(var i=0;i<searchcriteriaselected.length;i++){
						outputstring += searchcriteriaselected[i];
						if(i<(searchcriteriaselected.length-1)){ outputstring += ', '; }
					}
					if(searchcriteriaselected.length>=1){
						$(this).parent().append('<div class="searchcritsel">'+outputstring+'<\/div>');
					}else{
						$(this).parent().append('<div class="searchcritsel">Any<\/div>');
					}
					searchcriteriaselected.splice(0,searchcriteriaselected.length);
					outputstring='';
					$('div.searchcritsel',this.parentNode).show();
				}
			);
			
			// essentially the same as the #expandbar .closed .more behavior, but with the function order reversed.
			$('#expandbar .opened .more').toggle( 
				function(){
					$(this).parent().removeClass('opened').addClass('closed');
					$('ul',this.parentNode).hide();
					$('input:checked',this).each(function(){
						searchcriteriaselected.push($('label[@for="'+$(this).get(0).getAttribute('id')+'"]').text());
					});
					$('option',this).each(function(){
						if(this.selected){
							searchcriteriaselected.push($(this).text());
						}
					});
					for(var i=0;i<searchcriteriaselected.length;i++){
						outputstring += searchcriteriaselected[i];
						if(i<(searchcriteriaselected.length-1)){ outputstring += ', '; }
					}
					if(searchcriteriaselected.length>=1){
						$(this).parent().append('<div class="searchcritsel">'+outputstring+'<\/div>');
					}else{
						$(this).parent().append('<div class="searchcritsel">Any<\/div>');
					}
					searchcriteriaselected.splice(0,searchcriteriaselected.length);
					outputstring='';
					$('div.searchcritsel',this.parentNode).show();
				},
				function(){
					$('ul',this.parentNode).show();
					$('div.searchcritsel',this.parentNode).remove();
					$(this).parent().removeClass('closed').addClass('opened');
				}
			);
		}
		else
		{
			$('#expandbar .closed .more').toggle(
				function(){
					$('ul',this.parentNode).slideDown(animspeed);
					$('div.searchcritsel',this.parentNode).remove();
					$(this).parent().removeClass('closed').addClass('opened');
				},
				function(){
					$(this).parent().removeClass('opened').addClass('closed');
					$('ul',this.parentNode).slideUp(
						animspeed,
						function(){
							$('input:checked',this).each(function(){
								searchcriteriaselected.push($('label[@for="'+$(this).get(0).getAttribute('id')+'"]').text());
							});
							$('option',this).each(function(){
								if(this.selected){
									searchcriteriaselected.push($(this).text());
								}
							});
							for(var i=0;i<searchcriteriaselected.length;i++){
								outputstring += searchcriteriaselected[i];
								if(i<(searchcriteriaselected.length-1)){ outputstring += ', '; }
							}
							if(searchcriteriaselected.length>=1){
								$(this).parent().append('<div class="searchcritsel">'+outputstring+'<\/div>');
							}else{
								$(this).parent().append('<div class="searchcritsel">Any<\/div>');
							}
							searchcriteriaselected.splice(0,searchcriteriaselected.length);
							outputstring='';
							$('div.searchcritsel',this.parentNode).slideDown(animspeed);
						}
					);
				}
			);
			
			// essentially the same as the #expandbar .closed .more behavior, but with the function order reversed.
			$('#expandbar .opened .more').toggle( 
				function(){
					$(this).parent().removeClass('opened').addClass('closed');
					$('ul',this.parentNode).slideUp(
						animspeed,
						function(){
							$('input:checked',this).each(function(){
								searchcriteriaselected.push($('label[@for="'+$(this).get(0).getAttribute('id')+'"]').text());
							});
							$('option',this).each(function(){
								if(this.selected){
									searchcriteriaselected.push($(this).text());
								}
							});
							for(var i=0;i<searchcriteriaselected.length;i++){
								outputstring += searchcriteriaselected[i];
								if(i<(searchcriteriaselected.length-1)){ outputstring += ', '; }
							}
							if(searchcriteriaselected.length>=1){
								$(this).parent().append('<div class="searchcritsel">'+outputstring+'<\/div>');
							}else{
								$(this).parent().append('<div class="searchcritsel">Any<\/div>');
							}
							searchcriteriaselected.splice(0,searchcriteriaselected.length);
							outputstring='';
							$('div.searchcritsel',this.parentNode).slideDown(animspeed);
						}
					);
				},
				function(){
					$('ul',this.parentNode).slideDown(animspeed);
					$('div.searchcritsel',this.parentNode).remove();
					$(this).parent().removeClass('closed').addClass('opened');
				}
			);
		}
		
		$('#expandbar li.closed').each(function(){
			$('input:checked',this).each(function(){
				searchcriteriaselected.push($('label[@for="'+$(this).get(0).getAttribute('id')+'"]').text());
			});
			$('option',this).each(function(){
				if(this.selected){
					searchcriteriaselected.push($(this).text());
				}
			});
			for(var i=0;i<searchcriteriaselected.length;i++){
				outputstring += searchcriteriaselected[i];
				if(i<(searchcriteriaselected.length-1)){ outputstring += ', '; }
			}
			if(searchcriteriaselected.length>0){
				$(this).append('<div class="searchcritsel">'+outputstring+'<\/div>');
			}else{
				$(this).append('<div class="searchcritsel">Any<\/div>');
			}
			searchcriteriaselected.splice(0,searchcriteriaselected.length);
			outputstring='';
			$('div.searchcritsel',this).show();
		});
		
		// only hide the sublevels if we can show them again with JS.
//		$('#expandbar ul li.closed ul').hide();												//SLOW!
		$('#expandbar .more').css('cursor','pointer');
//		$('#productspecifier div.subnav').html('<a href="#">View Products</a>');
		$('#productspecifier div.subnav a').click(function(){
			$('#productspecifier').get(0).submit();
			return false;
		});
		
		
		/* --- Category Flyout Menu --- */ 
		P7_Snap('seecats','flyout',197,0);
		P7_autoHide('flyout');
		$('div#seecats').mouseover(function(){
			P7_autoLayers(0,'flyout');
		});
		$('#leg5 h4,#leg5 ul').mouseover(function(){
			P7_autoLayers(0);
		});
		
		
		/* --- Generic Elements --- */
		// zebra rows for tables with class altrow
		$('table.altrow tbody tr:odd').addClass('alt');
	});

    //fix expansion list on left nav, home page
    $(document).ready(function() {
        $("#leg5 .xpandlist .hpx span").css("margin-left", "-16px");
    });