$(document).ready(cumberlandInit);

function cumberlandInit() {
	if(document.getElementById("top-rep") && document.getElementById("rep-info")){
		showRepInit();
	}
	if(document.getElementById("showPrices")) {
		priceToggleInit();
	}
	if(document.getElementById("environment-thumbs")) {
		enviroInit();
	}
	if(document.getElementById("material-thumbs")) {
		materialPageThumbsInit();
	}
	if(document.getElementById("pager-product")) {
		productNavTipInit();
	}
	if(document.getElementById("product-photo-selector")) {
		productImageInit();
	}
	if(document.getElementById("product-size-select")) {
		productSizeSelectInit();
	}
	if(document.getElementById("product-materials")) {
		materialsOverlayInit();
	}
	if(document.getElementById("bottom-print")) {
		printPageInit();
	}
	if(document.getElementById("ecard-preview")) {
		ecardInit();
	}
	if(document.getElementById("equote-link")) {
		equoteInit();
	}
	if(document.getElementById("left_half_text")) {
		designersSpeakTextInit();
	}

/*	swap blocks of text in the about us>history page(s)	*/
	$("#textBlockSwitch div").each(function(i){
		var t = '<p>';
		if($(this).siblings()[i-1]) {
			t += '&#60;&nbsp;<a href="#" onclick="swapTextBlock('+ i + ','+(i-1)+');return false;">Previous</a>&nbsp;&nbsp;&nbsp;';
		}
		if($(this).siblings()[i+1]) {
			t += '<a href="#" onclick="swapTextBlock('+ i + ','+(i+1)+');return false;">Next</a>&nbsp;&#62;';
		}
		t += '</p>';
		$(this).append(t);
	});
	$("#textBlockSwitch div").eq(0).show();

}

function swapTextBlock(thing,newThing) {
	$("body #textBlockSwitch div").eq(thing).hide();
	$("body #textBlockSwitch div").eq(newThing).show();
}

//
//
// Show Rep Info
//
//

var repShowing = false;

function showRepInit() {
	$("body #top-rep").mouseover(
		function(){
			if (repShowing == false) {
				$("#rep-info").show();
				repShowing = true;
			}
		}
	);
	$("body #rep-info-close").click(
		function() {
			$("body #rep-info").hide();
			repShowing = false;
		}
	);
}

//
//
// Products Environment
//
//
var enviroThumbs = null;
var enviroNumberOfImages = 0;
var enviroImagesLoaded = 0;
var enviroCurrentThumb = null;
var enviroThumbSrc = "products_environments_images.html";

function enviroInit() {
	$("#environment-thumbs li").click(function(){
		$this=$(this);
		$("#environment-thumbs li.active").removeClass("active");
		$this.addClass("active");
		$("#environment-detail").html($this.html());
	});
	$("#content-half-right").hover(function(){$("#content-half-right .environment-text").show()},function(){$("#content-half-right .environment-text").hide()});
	
	$("#environment-thumbs li:first").click();
/*	$("#environment-thumbs").load(enviroThumbSrc, function() {
		enviroThumbsInit();
	});
*/
}

/*
function enviroThumbsInit() {
	enviroNumberOfImages = document.getElementById("environment-thumbs").getElementsByTagName('a').length;
	$("#environment-thumbs a img+img").load(function(){enviroImageLoad(); });
	$("#environment-thumbs a"
		).hover(
			function(){ this.style.zIndex = 100; $("b",this).show();},	//	onmouseover
			function(){ this.style.zIndex = 10; $("b",this).hide();}	//	onmouseout
		).click(function() {					//	onclick
			enviroSwitchImg(this,$("img",this)[1]);
			if($("span",this).length > 0) enviroSwitchText($("span",this)[0].innerHTML);
			return false;
		});
}

function enviroSwitchImg(src, srcImg) {
	if(src != enviroCurrentThumb) {
		if(enviroCurrentThumb != null) {
			enviroCurrentThumb.id="";
		}
		enviroCurrentThumb = src;
		enviroCurrentThumb.id = "enviroActiveThumb";
		var destImg = document.getElementById("environment-image");
		destImg.src = srcImg.src;
		$("#environment-image").fadeIn();
	}
}
function enviroSwitchText(t) {
	$("body .environment-text").html(t);
}

function enviroImageLoad() {
	enviroImagesLoaded++;
	if(enviroImagesLoaded == enviroNumberOfImages) {
		$("body #environment-preloader").remove();
		$("body #environment-thumbs").css({display:"block"});
	//	var initSrcImg = enviroThumbs[0].getElementsByTagName('img')[1];
		enviroSwitchImg($("#environment-thumbs a")[0], $("#environment-thumbs a img+img")[0]);
	//	setAboutUsScrollbars();
	}
}
*/


//
//
// Product Navigator Tool Tip
//
//

function productNavTipInit() {
	$("body a.productNavTip")
	   .hover(function(){ttipShow(this.href, this.id, this.title)},function(){$('#toolTip').remove()})
}

function ttipShow(url,linkId,title) {
	var de = document.documentElement;
	var w = self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
	var hasArea = w - getAbsoluteLeft(linkId);
	var clickElementy = getAbsoluteTop(linkId) - 3; //set y position
	var toolWidth = 100;
	$("body").append("<div id='toolTip' style='width:"+toolWidth+"px'><p>"+title+"</p></div>");
	if(linkId === "arrow-right") {
		var clickElementx = getAbsoluteLeft(linkId) + 11; //set x position
		$('body #toolTip').css({left: clickElementx+"px", top: clickElementy+"px"});
	} else {
		var clickElementx = getAbsoluteLeft(linkId) - toolWidth - 5; //set to right
		$('body #toolTip').css({left: clickElementx+"px", top: clickElementy+"px"});
	}
	$('#toolTip').show();
}

//
//
// ECard
//
//

var currentActiveEcardImage = null;

function ecardInit() {
	var t = document.getElementById("ecard-thumbs");
	var a = t.getElementsByTagName("a");
	for(var i=0;i<a.length;i++) {
		a[i].onclick = function() {
			swapEcardImage(this);
			return false;
		}
	}
	swapEcardImage(a[0]);
	var message = document.getElementById("ecard-message");
	message.onkeyup = reloadTextDiv;
	document.getElementById("to_name").onkeyup = reloadRecipientTextDiv;
}

function counter(){
	var maxChar = 200;
	var curMessage = document.getElementById("ecard-message").value;
	var curLength = curMessage.length;
	var countSpan = document.getElementById("count");
	if(curLength>maxChar){document.getElementById("ecard-message").value = curMessage.substr(0, maxChar);}
	else{countSpan.innerHTML = maxChar - curLength;return false}
}


function reloadTextDiv() {
	var ecardSrc = document.getElementById("ecard-message").value;
	ecardSrc = ecardSrc.replace( /\n/g, "<br />");
	var ecardDest = document.getElementById("ecard-preview").getElementsByTagName("p")[1];
	ecardDest.innerHTML = ecardSrc;
	counter();
}

function reloadRecipientTextDiv() {
	var recipientSrc = document.getElementById("to_name").value;
	recipientSrc = recipientSrc.replace( /\n/g, "<br />");
	var recipientDest = document.getElementById("ecard-preview").getElementsByTagName("p")[0];
	recipientDest.innerHTML = recipientSrc;
}

function swapEcardImage(thing) {
	if(thing != currentActiveEcardImage) {
		if(currentActiveEcardImage != null) currentActiveEcardImage.className="";
		currentActiveEcardImage = thing;
		currentActiveEcardImage.className = "active";
		document.getElementById("image-full-right").src = currentActiveEcardImage.href;
		document.getElementById("input-image").value = thing.id.split("_")[1];
		swapEcardCumberlandProductCopy(thing);
	}
}
function swapEcardCumberlandProductCopy(thing) {
	var p = $(thing).children("p").html() ;
	document.getElementById("cumberlandProductCopy").value = p;

}

//	make sure users know what is allowed in the ecard reciepent fields
var multipleRecipientsVerified = false;
function verifyMultipleRecipients() {
	if(multipleRecipientsVerified==true) return;
	if(document.getElementById("to_email").value.indexOf(",") != -1) {
		if(document.getElementById("to_name").value != "") {
			alert("Please leave the recipient name blank if you are\nsending this eCard to multiple users.\nOr consider entering a generic salutation for\ngroups of recipients, such as Cumberland customers.\nThis name will be displayed to all recipients");
			multipleRecipientsVerified = true;
			return false;
		}
	}
	return true;
}


//
//
// Product Page Functionality
//
//
var currentActiveProductImage = null;
var currentEmailLink = "";
var emailPageLink = "";
var productImageLink = "";
var productMaterialsLink = "";
var productSizeLink = "";

function productImageInit() {
	var t = document.getElementById("product-photo-selector");
	var a = t.getElementsByTagName("a");
	for(var i=0;i<a.length;i++) {
		a[i].onclick = function() {
			swapProductImage(this);
			return false;
		}
	}
	currentEmailLink=document.getElementById("email-page").href;
	swapProductImage(a[document.getElementById("activeThumbnail").value]);
	$("#content-half-right").hover(function(){$("#content-half-right .hi_res_image-text").show()},function(){$("#content-half-right .hi_res_image-text").hide()});
	
}

function productSizeSelectInit() {
	var s = document.getElementById("product-size-select");
	s.onchange =  function() {
		updateProductSizeLink(this.value);
	}
}

function updateProductSizeLink(value) {
	productSizeLink="%26sizeActive%3D"+value;
	updateProductPageEmailLink();
}

function swapProductImage(thing) {
	if(thing != currentActiveProductImage) {
		$("#content-half-right div").remove();
		if(currentActiveProductImage != null) currentActiveProductImage.className="";
		currentActiveProductImage = thing;
		currentActiveProductImage.className = "active";
		document.getElementById("image-full-right").src = currentActiveProductImage.href;
		$imageInfo=$(thing).next("div");
		if($imageInfo.length){
			$("#content-half-right").append($imageInfo.clone());
		}
		productImageLink="%26activeThumbnail%3D"+currentActiveProductImage.id;
		updateProductPageEmailLink();
	}
}

function updateProductMaterialsLink() {
	var materialDivs = document.getElementById("product-materials").getElementsByTagName("div");
	var i = materialDivs.length;
	productMaterialsLink = "";
	while(i-- > 0) {
		var a = materialDivs[i].getElementsByTagName("a")[0];
		var img = a.getElementsByTagName("img")[0];
		var src = img.src;
		var imgTest = src.slice((src.length-19),src.length);
		if (imgTest != "material-select.gif") {
			var divToUpdate = materialDivs[i].id;
			var divMaterialID = materialDivs[i].getElementsByTagName("p")[0].id;
			productMaterialsLink += ("%26"+divToUpdate+"%3D"+divMaterialID);
			writeProductCookies(divToUpdate, divMaterialID);
		}
	}
	updateProductPageEmailLink();
}


//
//
// EQuote Functionality
//
//

function equoteInit(){
	$("#equote-link").click( function(){
		if(allowEquoteRequest()==false)return false;
		var eQuoteUrl = "request_equote.php?";
		//errors
		
		//get components, size, quantity, rep
		$(".component", "#product-materials").each( function (){
			var componentName = $("h6", this).html();
			var componentMaterial = $("p", this).html();
			var componentAndMaterialArray = new Array();
			componentAndMaterialArray[componentName] = componentMaterial;
			eQuoteUrl += "component" + componentName + "=" + componentMaterial + "&";
		});
		var size = $("#product-size-select").val();
		//	parse text inside option to find product number
		var productNumber = document.getElementById("product-size-select").options[document.getElementById("product-size-select").selectedIndex].childNodes[0].nodeValue.split(" ")[0];

		var q = $("#eQuoteQuantity").val();
		var productTitle = escape($("title").html());
		var url = window.location.href;
		//set url
		eQuoteUrl += "number=" + productNumber + "&size=" + size + "&q=" + q + "&productTitle=" + productTitle + "&url=" + url;
		$("#equote-link").attr("href", eQuoteUrl );
	});
}

function allowEquoteRequest() {
	var er = "";

	//	check for quantity
	/*
	var q = document.getElementById("eQuoteQuantity");
	if(q.value==null || q.value=="0" || q.value=="") er += "please enter quantity\n";
*/
	//	check for size selection
	var s = document.getElementById("product-size-select");
	if(s.selectedIndex==null || s.selectedIndex==0 || s.selectedIndex.value=="") er += "Please select a size\n";

	//	check for material selection
	var m = document.getElementById("product-materials").getElementsByTagName("img")
	var mb = false;
	for(var i=0;i<m.length;i++) {
		if(m[i].src.indexOf("material-select.gif")!= -1) mb=true;
	}
	if(mb==true) er += "Please select materials\n";

	if(er=="") return true;
	alert(er);
	return false;
}

function confirmEquoteForm() {
	var x = true;
	var er = "";

	var d1 = document.getElementById("from_name").value;
	if(d1=="" || d1=="Your name") er += "Please provide your name\n";

	var d2 = document.getElementById("from_email").value;
	if(d2=="" || d2=="Your email") er += "Please provide your email address\n";


	var goodEmail = d2.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi);
	if (!goodEmail){
		er += "Please make sure you have entered a valid email address\n";
	}


	var d3 = document.getElementById("from_company").value;
	if(d3=="" || d3=="Your company name") er += "Please provide your company's name\n";
	
	var d3 = document.getElementById("from_phone").value;
	if(d3=="" || d3=="Your phone number") er += "Please provide your phone number\n";

	var q = document.getElementById("eQuoteQuantity");
	if(q.value==null || q.value=="0" || q.value=="" || isNaN(q.value)) er += "Please enter a quantity\n";


	if(er!="") {
		alert(er);
		x = false;
	}
	return x;
}

function updateProductPageEmailLink() {
	emailPageLink = currentEmailLink+productImageLink+productMaterialsLink+productSizeLink;
	//ORIG equoteLink = currentEQuoteLink+productImageLink+productMaterialsLink+productSizeLink;
	document.getElementById("email-page").href = emailPageLink;
	//ORIG document.getElementById("equote-link").href = equoteLink;
}

function writeProductCookies(name, value) {
	//alert("name = "+ name + "value = " + value)
	var nextYear = new Date();
	nextYear.setFullYear(nextYear.getFullYear()+1);
	document.cookie = name + "=" + value + "; expires=" + nextYear.toGMTString();
}

//
//
// Material Image Swapper
//
//
var currentActiveMaterial = null;	//	currently active thumbnail
var materialImageNumber = 0;

function materialPageThumbsInit() {
	if(location.search.split("=")[1]=="41") {	/*	If we are looking at "3form varia" materials, don't do what follows. see note in material_category.php [jw-070829]	*/
		document.getElementById("image-full-right").src = "/images/materials/image_composite_3form.gif";
	} else {
		if(document.getElementById("material-thumbs")) {
			var n = document.getElementById("material-thumbs").getElementsByTagName("A");
		} else if(document.getElementById("materialThumbs")) {
			var n = document.getElementById("materialThumbs").getElementsByTagName("A");
		}
		for(var i=0;i<n.length;i++) {
			n[i].onclick =  function() {
				swapMaterialPageImage(this);
				return false;
			}
		}
		swapMaterialPageImage(n[materialImageNumber]);
	}
}

function swapMaterialPageImage(thing) {
	if(thing != currentActiveMaterial) {
		if(currentActiveMaterial != null) currentActiveMaterial.className="";
		currentActiveMaterial = thing;
		currentActiveMaterial.className = "active";
		document.getElementById("image-full-right").src = currentActiveMaterial.href;
		//document.getElementById("productImageLink").href = currentActiveMaterial.href;
	}
}

//
//
// Price Toggle
//
//
function priceToggleInit() {
	document.showPricesForm.showPrices.onclick = function() {
		document.showPricesForm.submit();
	}
}

function togglePrices(value) {
	if(value) {
		$("body .hidden-color").css("color","#999999");
	} else {
		$("body .hidden-color").css("color","#e5e5e5");
	}
}

//
//
// Order Toggle
//
//
/*
function priceToggleInit() {
	document.orderByForm.showPrices.onclick = function() {
		togglePrices(this.checked);
	}
}

function togglePrices(value) {
	if(value) {
		$("body .hidden-color").css("color","#999999");
	} else {
		$("body .hidden-color").css("color","#e5e5e5");
	}
}
*/


//
//
// Overlay Functionality
//
//
function materialsOverlayInit() {
	$("body a.overlay").click(function(){
		overlayShow(this.href);
		this.blur();
		return false;
	});
}

function overlayShow(url) {
	try {
		if (document.getElementById("overlayBackground") == null) {
			$("body").append("<div id='overlayBackground'></div><div id='overlayWindow'></div>");
			$("#overlayBackground").click(overlayRemove);
		}
		overlaySizeBackground();
		$("body").append("<div id='overlayLoader'><img src='images/loader.gif' /></div>");
		overlayPositionLoader();
		var urlString = /\.jpg|\.jpeg|\.png|\.gif|\.html|\.htm|\.php|\.cfm|\.asp|\.aspx|\.jsp|\.jst|\.rb|\.txt|\.bmp/g;
		var urlType = url.toLowerCase().match(urlString);
		if(urlType=='.htm'||urlType=='.html'||urlType=='.php'||urlType=='.asp'||urlType=='.aspx'||urlType=='.jsp'||urlType=='.jst'||urlType=='.rb'||urlType=='.txt'||urlType=='.cfm' || (url.indexOf('TB_inline') != -1) || (url.indexOf('TB_iframe') != -1) ) {
			var queryString = url.replace(/^[^\?]+\??/,'');
			var params = overlayParseQuery( queryString );
			$("#overlayWindow").append("<div id='overlayContent'></div>");
			$("#overlayContent").load(url, function() {
				$("#overlayLoader").remove();
				$("#overlayWindow").css({display:"block"});
				overlayPositionWindow();
				overlaySizeBackground();
			});
		}
		if(typeof(onOverlayShow)=="function") {
			onOverlayShow();
		}
	} catch(e) {
		alert(e);
	}
}

function overlaySizeBackground() {
	if (window.innerHeight && window.scrollMaxY) {
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		yScroll = document.body.offsetHeight;
  	}
	if (yScroll == 0) {
		yScroll = 700;
	}
	$("#overlayBackground").css("height",yScroll +"px");
}

function overlayPositionLoader() {
	var pagesize = overlayGetPageSize();
	var arrayPageScroll = overlayGetPageScrollTop();
	$("#overlayLoader")
	.css({left: ((pagesize[0] - 200)/2)+"px", top: (arrayPageScroll[1] + ((pagesize[1]-50)/2))+"px" })
	.css({display:"block"});
}

function overlayPositionWindow() {
	var pagesize = overlayGetPageSize();
	$("#overlayWindow").css({left: ((pagesize[0] - 750)/2)+"px", top: "25px" });
}

function overlayGetPageScrollTop(){
	var yScrolltop;
	if (self.pageYOffset) {
		yScrolltop = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScrolltop = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScrolltop = document.body.scrollTop;
	}
	arrayPageScroll = new Array('',yScrolltop)
	return arrayPageScroll;
}

function overlayGetPageSize() {
	var de = document.documentElement;
	var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
	var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
	arrayPageSize = new Array(w,h)
	return arrayPageSize;
}

function overlayRemove() {
	$("#overlayWindow").fadeOut("fast",function(){$('#overlayWindow,#overlayBackground').remove();});
	$("#overlayLoader").remove();
	
	if(typeof(onOverlayRemove)=="function") {
		onOverlayRemove();
	}
	return false;
}

function overlayParseQuery ( query ) {
   var Params = new Object ();
   if ( ! query ) return Params; // return empty object
   var Pairs = query.split(/[;&]/);
   for ( var i = 0; i < Pairs.length; i++ ) {
      var KeyVal = Pairs[i].split('=');
      if ( ! KeyVal || KeyVal.length != 2 ) continue;
      var key = unescape( KeyVal[0] );
      var val = unescape( KeyVal[1] );
      val = val.replace(/\+/g, ' ');
      Params[key] = val;
   }
   return Params;
}

/***************************************
LOGIC FOR MATERIALS DETAIL PAGES
***************************************/

var currentActiveMaterialThumbnail = null;	//	currently active thumbnail
var currentMaterials = null;
var currentMaterialGroup = null;
var materialGroups = null;
var showAllMaterialsButton = null;
var imageNumber=0;
var currentMaterialID = null;
var material_category_ids = null;

function swapMaterialImage(node) {
	//alert(node);
	if(node != currentActiveMaterialThumbnail) {
		if(currentActiveMaterialThumbnail != null) currentActiveMaterialThumbnail.className="";
		currentActiveMaterialThumbnail = node;
		currentMaterialID = currentActiveMaterialThumbnail.id;
		currentActiveMaterialThumbnail.className = "activeMaterial";
		document.getElementById("materialImage").src = currentActiveMaterialThumbnail.href;
	}
}

function swapMaterialDesc(node) {
 	$("#materialDesc").html($("#materialDesc"+node.id).html());
}

function showMaterialCategory(option) {
		$("body .materialShow").attr("class","materialCategory");
		$("body .materialCategory").attr("class","materialHide");

		for(var i=0; i<materialGroups.length; i++) {
			if (materialGroups[i].id == option.value) {
				materialGroups[i].className = "materialShow";
				// JMR Edits - 20061001
				// We've got make sure the anchor we're passing to swapMaterialImage() is pointing to an image
				var newThumb = getMaterialImageAnchor(materialGroups[i]);
				swapMaterialImage(newThumb);
				break;
			}
		}
		if (option.value == "showAll") {
			showAllMaterials();
		}
}

function getMaterialImageAnchor(materialGroup) {
	var newThumbs = materialGroup.getElementsByTagName("a");
	for(var j=0; j<newThumbs.length; j++) {
		var href = newThumbs[j].href
		var ext = href.slice((href.length-3),href.length);
		if (ext == "jpg" || ext == "gif") {
			return newThumbs[j];
		}
	}
}

function showAllMaterials() {
	for(var i=0; i<materialGroups.length; i++) {
		if (materialGroups[i].id) {
			materialGroups[i].className = "materialShow";
			// hack to fix ie7
	/*		var xa = materialGroups[i].getElementsByTagName("a");
			for(var j=0;j<xa.length;j++) {
				if(xa[j].parentNode.className=="float-half-one-fifth") {
					xa[j].style.display="inline";
					xa[j].style.display="block";
					alert("fixing...");
				}
			}
			//	hack to fix ie7
			*/
		}
	}
}

function changeOutThumbnail(destNode, srcNode) {
	// alert("destination node ID : " + destNode.id + "\nSource Node : " + srcNode);
	var srcThumb = srcNode.getElementsByTagName("img")[0];
	var destAnchor = destNode.getElementsByTagName("a")[0];
	destAnchor.href = "material_category_ajax.php?material_category_ids=" + material_category_ids + "&product_component_id="+ product_component_id +"&material_id=" + currentMaterialID + "&component_name=" + componentName;
	var destThumb = destAnchor.getElementsByTagName("img")[0];
	destThumb.src = srcThumb.src;
	var srcTitle = so_getText(srcNode.getElementsByTagName("span")[0]);
	var srcParentTitle = so_getText(srcNode.getElementsByTagName("span")[1]);
	var destTitle = destNode.getElementsByTagName("p")[0];
	destTitle.innerHTML = srcTitle+srcParentTitle;
	destTitle.id = srcNode.id;
	updateProductMaterialsLink();
}


function initMaterialSelect() {
	materialGroups = document.getElementById("materialThumbs").getElementsByTagName("div");
	if(document.materialCategoriesForm) {
		document.materialCategoriesForm.materialCategoriesSelect.onchange = function() {
		showMaterialCategory(this);
		}
	}
}

function getID(string) {
	string = string.split('-');
	string = string[1];
	return string;
}

function initMaterialThumbs() {
	var n = document.getElementById("materialThumbs").getElementsByTagName("a");
	for(var i=0;i<n.length;i++) {
		var href = n[i].href
		var ext = href.slice((href.length-3),href.length);
		if (ext == "jpg" || ext == "gif") {
			n[i].onclick =  function() {
				swapMaterialImage(this);
				swapMaterialDesc(this);
				return false;
			}
		}
	}
}

function initMaterialSaveButton() {
	var button = document.getElementById("materialSave").onclick = function() {
		var allDivs = document.getElementsByTagName("div");
		var i = allDivs.length;
		while(i-->0) {
			if (allDivs[i].id == product_component_id) {
				var nodeToUpdate = allDivs[i];
		//		break;	//	commented out 061016 by jw for testing
			}
		}
		changeOutThumbnail(nodeToUpdate, currentActiveMaterialThumbnail);
		overlayRemove();
		return false;
	}
}

function initMaterialScripts() {
	initMaterialSelect();
	initMaterialThumbs();
	initMaterialSaveButton();
	//alert(currentMaterialID);
	if(currentMaterialID) {
		var allThumbs = document.getElementById("materialThumbs").getElementsByTagName("a");
		var i = allThumbs.length;
		while(i-->0) {
			if (allThumbs[i].id == currentMaterialID) {
				swapMaterialImage(allThumbs[i]);
				break;
			}
		}
	} else {
		var thumbsDiv = document.getElementById("materialThumbs");
		var defaultThumb = getMaterialImageAnchor(thumbsDiv);
		if (defaultThumb) {
			swapMaterialImage(defaultThumb);
		}
	}
}

function onOverlayShow() {
	if(document.getElementById("product-sizes")) document.getElementById("product-sizes").style.display = "none";
}

function onOverlayRemove() {
	if(document.getElementById("product-sizes")) document.getElementById("product-sizes").style.display = "block";
}

function so_clearInnerHTML(obj) {
	while(obj.firstChild) obj.removeChild(obj.firstChild);
}

function so_getText(obj) {
	if(obj.textContent) return obj.textContent;
	if (obj.nodeType == 3) return obj.data;
	var txt = new Array(), i=0;
	while(obj.childNodes[i]) {
		txt[txt.length] = so_getText(obj.childNodes[i]);
		i++;
	}
    return txt.join("");
}

//
//
// Designers Speak
//
//

function designersSpeakTextInit() {
	$("#left_half_text p+p").remove();
	$("#left_half_text p").show();
	
}


//
//
// Utility
//
//

function printPageInit() {
	$("#bottom-print").click(function() {
		print();
	});
}



function getElementWidth(objectId) {
	x = document.getElementById(objectId);
	return x.offsetWidth;
}

function getElementHeight(objectId) {
	x = document.getElementById(objectId);
	return x.offsetHeight;
}

function getAbsoluteLeft(objectId) {
	// Get an object left position from the upper left viewport corner
	o = document.getElementById(objectId)
	oLeft = o.offsetLeft            // Get left position from the parent object
	while(o.offsetParent!=null) {   // Parse the parent hierarchy up to the document element
		oParent = o.offsetParent    // Get parent object reference
		oLeft += oParent.offsetLeft // Add parent left position
		o = oParent
	}
	return oLeft
}

function getAbsoluteTop(objectId) {
	// Get an object top position from the upper left viewport corner
	o = document.getElementById(objectId)
	oTop = o.offsetTop            // Get top position from the parent object
	while(o.offsetParent!=null) { // Parse the parent hierarchy up to the document element
		oParent = o.offsetParent  // Get parent object reference
		oTop += oParent.offsetTop // Add parent top position
		o = oParent
	}
	return oTop
}

function reportError(msg, url, line) {
	alert(msg + "\n" + line);
}


self.onerror = reportError;
