// site.js
// ML 2007-10-22

/* CSS ==> move this to a .css file */
document.writeln('<style type="text/css">')
document.writeln('/* content page: links */')
document.writeln('#content .content_id_13 p { display: inline; padding-left: 1em; }')
document.writeln('#content .content_id_13 li { padding: 1em 0;  }')
document.writeln('#content .content_id_13 a { font-weight: bold; }')
document.writeln('</style>')
/* end css */

/* ========================================== parameter definitions */
window.spi = new Object();

spi.productImage = new Object()
spi.productImage.containerID = 'productSingleImage'
spi.productImage.productViewsID = 'productViews'

spi.swatches = new Object();
spi.swatches.containerID = 'productColorMatrix'

// qualify the load
var w = window.location
if(window.location==w){
	if(document.getElementsByTagName && document.getElementById && window.spi){
//		addEvent(window,'load',init_SwatchRollovers); // disabled per Marty
		addEvent(window,'load',init_ProductImageZoom);
	}
}

/* ========================================== start swatch rollovers */

function init_SwatchRollovers(){
	spi.swatches.defaultProductColor = '';
	spi.swatches.defaultProductStyle = '';
	spi.swatches.defaultProductImage = getDefaultProductImage();
	spi.swatches.matrix = document.getElementById(spi.swatches.containerID)
	if(spi.swatches.matrix && spi.swatches.defaultProductImage){
		var links = spi.swatches.matrix.getElementsByTagName('a')
		var count = 0;
		for(var i=0;i<links.length;i++){
			links[i].onmouseover = function () { showColor(this.href) };// works in IE too
			addEvent(links[i],'mouseout',showDefault);
			count += 1
		}
	}
}

function showColor(url){

	var myRe=/color_id=([\w]+)/i;
	var myArray = myRe.exec(url);
	if(myArray && myArray.length>0){
		var color = myArray[1];
		var z = spi.swatches.defaultProductImage.lastIndexOf(spi.swatches.defaultProductColor);
		var a = spi.swatches.defaultProductImage.substring(0,z)
		var b = spi.swatches.defaultProductImage.substr(z+spi.swatches.defaultProductColor.length)
		var newurl = a+color+b

		// style id
		var myStyleIdRe=/style_id=([\w]+)/i;
		var myStyleIdArray = myStyleIdRe.exec(url);
		if(myStyleIdArray && myStyleIdArray.length>0) {

			var style_id = myStyleIdArray[1];
			var myNewString = newurl.replace(spi.swatches.defaultProductStyle, style_id);
			newurl = myNewString;

		}
		
		setImage(newurl)
	}
}


function setImage(url){
	var div = document.getElementById(spi.productImage.containerID);
	if(div){
		var imgs = div.getElementsByTagName('img');
		if(imgs.length>0){ imgs[0].src = url;
		}
	}
}

function showDefault(){
	setImage(spi.swatches.defaultProductImage)
}

function getDefaultProductImage(){
	var url = window.location.toString()

	// The style needs to be set too, as we're not always going to have the same one.
	var style_id_re = /style_id=([\w]+)/i;
	var style_id_array = url.match(style_id_re)
	if(style_id_array && style_id_array.length>0){

		spi.swatches.defaultProductStyle = style_id_array[1];

	}

	var re = /color_id=([\w]+)/i;
	var m = url.match(re)
	var r = null;
	if(m && m.length>0){

		spi.swatches.defaultProductColor = m[1];
		var div = document.getElementById(spi.productImage.containerID);
		if(div){
			var imgs = div.getElementsByTagName('img');
			if(imgs.length>0){
				r = imgs[0].src; // the url to return
			}
		}
	}
	//alert(r);
	return r
}



/* ------------------------------------------ end swatch rollovers */

/* ========================================== start product zooms */

function init_ProductImageZoom(){
	var views = document.getElementById(spi.productImage.productViewsID)
	var product = document.getElementById(spi.productImage.containerID)
	if(views && product){
		// find the zoom link
		var links = views.getElementsByTagName('a')
		var url = null;
		for(var i=0;i<links.length;i++){
			// look for a photo, else a sketch, else don't bother
			if(links[i].className='photo'){ url = links[i].href; break;
			}
			if(links[i].className='sketch'){ url = links[i].href; break;
			}
		}
		if(url){
			// attach it to the product image
			var imgs = product.getElementsByTagName('img')
			if(imgs.length>0){
				imgs[0].setAttribute('alt','View Product Photo'); // set the missing alt
				var a = document.createElement('a');
				a.setAttribute('href',url);
				a.setAttribute('title','View a larger picture'); 
				a.appendChild(imgs[0]);
				product.appendChild(a);
			}
		}
	}
}

function showProductDetails(url){
	var name = 'detail';
	var params = "menubar=no,scrollbars=no,resizable,toolbar=no,directories=no,height=350,width=275"
	var d = window.open(url,name,params); d.focus();
}

/* ------------------------------------------ end product zooms */

/* ========================================== core functions */

// see http://www.scottandrew.com/weblog/articles/cbs-events
// fails quietly on IE5/MAC
function addEvent(obj, evType, fn, useCapture){
	if (obj.addEventListener){
		obj.addEventListener(evType, fn, useCapture);
		return true;
	} else if (obj.attachEvent){
		var r = obj.attachEvent("on"+evType, fn);
		return r;
//	} else {alert("Handler could not be attached");
	}
}

// append javascript script to the head in a non-blocking way; c.f. www.msn.com
function addjs(e){var g=document;var p=g.getElementsByTagName("HEAD")[0];var c=g.createElement("script");c.type="text/javascript";c.src=e;p.appendChild(c)}

