window.addEventListener?window.addEventListener("load",init,false):window.attachEvent("onload",init);

var msIE6;
var pageFilename;
var rangeMaxScroll;
var advertLinks;

//---------------------------------------------------[ INITIALIZE ]
function init()
{
	var pathElements = document.URL.split('/');
	pageFilename = pathElements[pathElements.length - 1];
	pathElements = pageFilename.split('?');
	pageFilename = pathElements[0];
	msIE6 = (navigator.userAgent.indexOf('MSIE 6.0') != -1);
	var msIE = (navigator.userAgent.indexOf('MSIE') != -1);
	if (msIE6)
	{
		fixPNGs('wr_logo');
		fixPNGs('page_copy');
		fixPNGs('category_copy');
		if (pageFilename == 'gear.php')
		{
			var fixed = fixHovers('the_icons', 'DIV'); // fix for scrollable icons…
			// and if they are not present, fix for non scrollable icons.
			if (!fixed) fixHovers('product_features', 'DIV');
		}
		fixHovers('navi_links', 'LI');
		fixHovers('navi_links', 'LI', true);
		//fixHovers('navi_links', 'LI', true);
	}

	if ($('range_items'))
	{
		var element = $('range_items');
		var parent = element.parentNode.id;
		rangeMaxScroll = $(parent).getWidth() - element.getWidth();
	}
	
	setCurrentIcon('product_description', 'feature_desc');
	
	displayAdverts(5, 10);
	
	//if (msIE && pageFilename == 'gear.php') setupProductHovers('range_items', 'A');
}

//-------------------------[ SETUP: train connection from passed index value. ]
function mystery( indexValue, subjectText )
{
	var mystery ="109,97,105,108,116,111,58,"; // setup code.
	var train = "?subject=" + subjectText; // setup subject as string.
	var coming = "&body=";
	
	mystery += return2sender(indexValue * 1); // get required code.
	var decode = mystery.split(","); // setup array from encoded.
	mystery = ""; // setup source variable as string.
	for (var e = 0; e < decode.length; e++)
	{
		mystery += String.fromCharCode(decode[e]); // decode as string.
	}
	document.location = mystery + train + coming; // Write call.
}

//------------------------------------------------[ FIND ALL PNGS ]
function fixPNGs(elementID)
{
	if (!document.getElementsByTagName) return;
	if (document.getElementById(elementID))
	{
		var images = document.getElementById(elementID).getElementsByTagName("IMG");
		var imagesTotal = images.length;
		var regex = /.png/
	
		for (var i = 0; i < imagesTotal; i ++)
		{
			var image = images[i];
			if(image.src.indexOf('.png'))
			{ 
				image.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+image.src+"', sizingMethod='image')"; // apply the filter stuff that makes IE do it's magic
				image.src = "images/block.gif";
			}
		}
	}
}

//-----------------------------------------[ FIX: IE6 HOVER STATE ]
var fixHovers = function(rootID, childTag, grabFirstChild)
{
		var elementRoot = (grabFirstChild) ? $(rootID).firstChild : $(rootID);
		if (elementRoot)
		{
			for (var i = 0; i < elementRoot.childNodes.length; i ++)
			{
				elementNode = elementRoot.childNodes[i];

				if (elementNode.nodeName == childTag)
				{
					elementNode.onmouseover = function()
					{
						this.className += ' hover';
					}
					elementNode.onmouseout = function()
  					{
  						this.className = this.className.replace(' hover', '');
					}
	   		}
   		}
   	}
   	return elementRoot;
}

//-----------------------------[ SETUP: PRODUCTS HOVER+CLICK VIEW ]
function setupProductHovers( rootID, childTag )
{
	var elementRoot = document.getElementById(rootID);
	var tableRow = elementRoot.firstChild.firstChild;
	for (var i = 0; i < tableRow.childNodes.length; i ++)
	{
		elementNode = tableRow.childNodes[i].firstChild;
		if (elementNode.id && elementNode.nodeName == childTag)
		{
			elementNode.onclick = function ()
			{
				document.location = 'gear.php?product=' + this.id.replace('p', '');
			}

   	}
   }
}

var scrollInterval;
//----------------------------------------[ scroll: PRODUCT LIST ]
function scrollProductList(arrow, target, direction, axis)
{
	if (axis && scrollInterval) return;
	var element = $(target);
	var parent = element.parentNode.id;
	var maxScroll = (axis) ? $(parent).getWidth() - element.getWidth() : $(parent).getHeight() - element.getHeight();
	var multiple = (axis) ? 308 : 16;
	var scrollAmount = direction * multiple;
	scrollInterval = (axis) ? setInterval( function() { animateScroll(element, scrollAmount); },40) : setInterval( function() { scrollThis(element, scrollAmount, maxScroll, axis); }, 40);
	if (axis == 0)
	{
		arrow.onmouseup = function() { clearInterval(scrollInterval); scrollInterval = false; }
		document.onmouseup = function() { if (scrollInterval != false) clearInterval(scrollInterval); }
	} else {
		document.onmouseup = null;
	}
}

function scrollThis(element, amount, max, axis)
{
	var margin = (axis) ? 'marginLeft' : 'marginTop';
	var currentMargin = parseInt(element.getStyle(margin).gsub('px', ''));
	if (amount > 0 && currentMargin == 0) return 0;
	if (amount < 0 && currentMargin <= max) return max;
	var newMargin = currentMargin + amount + 'px';
	(axis) ? element.setStyle({ marginLeft: newMargin }) : element.setStyle({ marginTop: newMargin });
	return currentMargin;
}

var moveCount = 0;
function animateScroll(element, distance)
{
	var multiple; var travel; var possiblelDistance;
	var currentMargin = (parseInt(element.getStyle('marginLeft').gsub('px', ''))) * -1;
	
	if (distance < 0)
	{	
		possiblelDistance = ((rangeMaxScroll * -1) - currentMargin);
		multiple = (possiblelDistance < (distance * -1)) ? 22 : 44;
		travel = distance * -1;
	} else {
		multiple = (currentMargin < distance) ? 22 : 44;
		travel = distance;
	}
	var amount = (distance < 0) ? (multiple * -1) : multiple;
	moveCount += multiple;
	scrollThis(element, amount, rangeMaxScroll, 1);
	if (moveCount >= travel)
	{
		clearInterval(scrollInterval);
		scrollInterval = null;
		moveCount = 0;
	}
}

var currentIcon;
function setCurrentIcon(parentID, childClassName)
{
	if (msIE6)
	{
		var elementRoot = $('page_copy');
		for (var e = 0; e < elementRoot.childNodes.length; e ++)
		{
			var child = elementRoot.childNodes[e];
			if (child.className == 'feature_hover')
			{
				child.onmouseout = function() { this.className = 'feature_hover'; }
			}
		}
	}
	
	var elementRoot = $(parentID);
	if (elementRoot)
	{
		for (var d = 0; d < elementRoot.childNodes.length; d ++)
		{
			var child = elementRoot.childNodes[d];
			if (child.className == childClassName && child.style.display == 'block')
			{
				currentIcon = child;
				break;
			} else {
				currentIcon = null;
			}
		}
	}
}

function displayIconDescription(iconElement, descID)
{
	var descDiv = $(descID);

	if (!currentIcon) setCurrentIcon('product_description', 'feature_desc');
	if (currentIcon) Element.hide($(currentIcon));
	Element.show(descDiv);
	currentIcon = descDiv;

	if (msIE6)
	{
		iconElement.className = 'feature_hover_over'; // : iconDiv.className = 'feature_hover';
	}
}

//----------------------------------------[ display: ADVERT IMAGES ]
function displayAdverts(numOfAdverts, holdTime)
{
	var linkOpen; var linkClose;
	var advertFrame = $('adverts');
	if (advertFrame)
	{
		var imageHolder = advertFrame.down('#ad_holder0');
		if (imageHolder)
		{
			advertLinks = new Array('sec=0', 'sec=1&f=1', 'product=14', 'sec=1', 'sec=0');
			linkOpen = '<a href="" title="To: more details on Whiterock gear.">';
			linkClose = '</a>';

			var twinImage = linkOpen + '<img id="ad_holder1" src="" alt="Advert image." />' + linkClose;
			var ready = new Insertion.Bottom(advertFrame, twinImage);
			var holderNum = 1;
			holdTime = holdTime * 1000;
			if (ready)
			{
				var imageHolder = $('ad_holder1');
				setOpacity(imageHolder, 0);
				setTimeout(function(){ showNextAdvert(holderNum, 2, numOfAdverts, holdTime);}, holdTime);
			}
		}
	}
}

function showNextAdvert(holderNum, imageNum, numOfAdverts, holdTime)
{
	var link;
	if (imageNum > numOfAdverts) imageNum = 1;
	var nextHolder = $('ad_holder' + holderNum);
	var currentHolder = $('ad_holder' + (!holderNum-false));
	var imageSRC = 'images/advert' + imageNum + '.jpg';
	if (advertLinks && advertLinks.length > 0)
	{
		link = 'gear.php?' + advertLinks[imageNum - 1];
		var linkTag = nextHolder.parentNode;
		linkTag.href = link;
	}
	setOpacity(nextHolder, 0);
	nextHolder.src = imageSRC;
	nextHolder.style.zIndex = 2;
	currentHolder.style.zIndex = 1;
	fadeTimer = setInterval(function()
	{
		fadeElement(
			nextHolder, 2, 1,
			function()
			{
				setTimeout(function(){ showNextAdvert(!holderNum-false, imageNum + 1, numOfAdverts, holdTime);}, holdTime);
			});
	}, 50);
}

//-------------------------------------------------[ SET: ELEMENT OPACITY ]
function setOpacity(element, opacity)
{
	if (opacity > 100) opacity = 100;
	if (opacity < 0) opacity = 0;
	
	if (element.style)
	{
		if (element.style.MozOpacity != null)
		{  
			element.style.MozOpacity = (opacity/100) - .001;
		} else if (element.style.opacity != null) {
			element.style.opacity = (opacity/100) - .001;
		} else if (element.style.filter != null) {
			element.style.filter = "alpha(opacity=" + opacity + ")";
		}
	}
}

//-------------------------------------------------[ FADE: ELEMENT ]
var fadeTimer;
var elementOpacity = 0;
function fadeElement(element, fadeAdjust, direction, callBack)
{
	if (elementOpacity == 100 && direction)
	{
		elementOpacity = 0;
		setOpacity(element, elementOpacity);
	}
	
	elementOpacity += fadeAdjust - (!direction * (2 * fadeAdjust));
	setOpacity(element, elementOpacity);
	
	if (elementOpacity >= 100 || elementOpacity <= 0)
	{
		clearInterval(fadeTimer);
		if (callBack) callBack();
	}
}
