<!--//

Array.prototype.inArray = function (value) {
	var i;
	for (i=0; i < this.length; i++) {
		if (this[i] === value) {
			return true;
		}
	}
	return false;
};

function swapSample(name,src,code,trigger) // img name, replacement source, id of code layer
{
	if(document.images) {
		document.images[name].src = src;
	}
	
	toggle(code,sampleArray,trigger);
	
	var currentSet;
	var currentSwatchSet;
	var currentSwatch;
	
	
	currentSet = trigger.substring(7);
	currentSwatchSet = "swatches"+currentSet;
	currentSwatch = "swatch"+currentSet+"a";
	// alert("Current set: "+currentSwatchSet);
	// alert("Current swatch: "+currentSwatch);
	
	if(trigger.indexOf("swatch") == 0) {
		toggle(code,arraySwatch,trigger);
		unCurrent(trigger, arraySwatch);
	} else {
		//alert(currentSwatch);
		//toggle(code,arraySwatch,currentSwatch);
		//unCurrent(currentSwatch, arraySwatch);
		if(arraySwatchSets.inArray(currentSwatchSet)) {
			// alert("Toggle");
			toggle(currentSwatchSet,arraySwatchSets,trigger);
			jsLoadSamples(currentSwatchSet);
			//unCurrent(currentSwatch, arraySwatch);
		} else {
			hideLayer('',arraySwatchSets);
		}
		
		//if(arraySwatch.inArray(currentSwatch) == true) {
			toggle(code,arraySwatch,currentSwatch);
			unCurrent(currentSwatch, arraySwatch);
		//}
	}
	return false;
}
	
// build ID string for each layer appropriate to browser DOM
function getElem(layerName)
{
	return document.all ? document.all(layerName).style :
	document.getElementById ? document.getElementById(layerName).style :
	document.layers ? document.layers[layerName] :
	null;
}
	
// build ID string for each layer appropriate to browser DOM
function getElemClass(layerName)
{
		return document.all ? document.all(layerName) :
		document.getElementById ? document.getElementById(layerName) :
		document.layers ? document.layers[layerName] :
		null;
}
	
// Show only (i.e. doesn't 'un-show' on double-click)
function toggle(layerName,arrayName,trigger)
{
		// Get the correct id string
		//if(getElementById(trigger) != null) {
			var el = getElem(layerName);
			var elTrigger = getElemClass(trigger);	
			
			if (el && el.display == "block") {	
				// nothing element already visible
				if(elTrigger != null) {
					elTrigger.className = "current";
				}
			} else {
				hideLayer(layerName, arrayName);
				unCurrent(trigger, arrayTrigger);
				el.display = "block";	
				//alert(elTrigger);
				elTrigger.className = "current";
			}
			// elTrigger.className = "current";
		//}

} // End toggle
	 
// Hide other layers
function hideLayer(layerName, arrayName)
{	
	for (i=0; i < arrayName.length; i++) 
	{
		if (arrayName[i] != layerName) {
			var el = getElem(arrayName[i]);
			el.display = "none";
		}
	}
} // End hideLayer
	
// unset current closs on other triggers
function unCurrent(layerName, arrayName)
{	
	for (i=0; i < arrayName.length; i++) 
	{
		if (arrayName[i] != layerName) {
			var el = getElemClass(arrayName[i]);
			el.className = "";
		} else {
			//el.className = "current";
		}
	}
} // End hideLayer

function addEvent(elm, evType, fn, useCapture) 
	{
		if (elm.addEventListener) {
			elm.addEventListener(evType, fn, useCapture);
			return true;
		} else if (elm.attachEvent) {
			var r = elm.attachEvent('on' + evType, fn);
			return r;
		} else {
			elm['on' + evType] = fn;
		}
		return true;
	} // End addEvent -----------------------------------------
	
	
	function jsBodySamples() 
	{

		jsLoadSamples("sampleNav"); // cache full-size sample images
		jsLoadSamples("paperDetails"); // cache full-size sample images for the first set of swatches
		
		// SWATCHES (ul)
		arraySwatchSets = new Array;
		jsBuildArrays("swatches","ul",arraySwatchSets);
		//alert(arraySwatchSets.length);
		
		// SWATCH TRIGGERS (a)
		arraySwatch = new Array;
		jsBuildArrays("swatches","a",arraySwatch);
		//alert(arraySwatch.length);
		
		// CODES
		sampleArray = new Array;
		jsBuildArrays("paperDetails","p",sampleArray);
		//alert(sampleArray.length);
	
	} // END jsBodySamples ----------------------------------------
	
	// parentID = ID of containing element
	// elementType = type of element to show/hide (selected by ID)
	// arrayName = the array to add elementType ID values to
	function jsBuildArrays(parentID,elementType,arrayName)
	{
		tempArray = new Array;
		var element = document.getElementById(parentID);
		tempArray = element.getElementsByTagName(elementType);
		
		count = tempArray.length;
		
		for(i=0;i<count;i++)
		{
			codeID = tempArray[i].id;
			arrayName[i] = codeID;
		}
		return;
		
	} // END jsBuildArrays ------------------------------------------
	
	
	// parentID is the ID of the element holding the anchors linking to JPGs to be preloaded
	function jsLoadSamples(parentID) 
	{
		var element = document.getElementById(parentID);
		preloadSample = element.getElementsByTagName("a");
		count = preloadSample.length;;
		imagesCache = new Array;
		
		for(i=0;i< count;i++)
		{
			dest = preloadSample[i].href;
			//alert(dest);
			
			if(dest.indexOf(".jpg") >= 0) {
				j = imagesCache.length;
				imagesCache[j] = new Image;
				imagesCache[j].src = dest;
			}
		}
	} // END jsLoadSamples ----------------------------------------

	function imageLoaded(name){
		alert("Image Pre-Loaded " + name);
	}

// -->