var sliderIndex, moveSpeed, sliderDiv, sliderKids, slideTimes, moduleWidth;
var eTarget, eTargetParent, eRelatedTarget;
var windowSlider;


var sNumbers = new Array

sNumbers[sNumbers.length] = new Array('s0278303', 's0288465','s0288856');
sNumbers[sNumbers.length] = new Array('s0278298', 's0288464','s0288856');
sNumbers[sNumbers.length] = new Array('s0278274', 's0288447');
sNumbers[sNumbers.length] = new Array('s0278269', 's0288461', 's0288474', 's0288475');
sNumbers[sNumbers.length] = new Array('s0278353', 's0288463', 's0288462');
sNumbers[sNumbers.length] = new Array('s0278348', 's0273081');
sNumbers[sNumbers.length] = new Array('s0278358', 's0288469', 's0288470');
sNumbers[sNumbers.length] = new Array('s0278374', 's0288476', 's0288477');
sNumbers[sNumbers.length] = new Array('s0278363', 's0288467', 's0288468');
sNumbers[sNumbers.length] = new Array('s0288489', 's0288488');
sNumbers[sNumbers.length] = new Array('s0278378', 's0274329', 's0288494');
sNumbers[sNumbers.length] = new Array('s0278284', 's0278286');
sNumbers[sNumbers.length] = new Array('s0288484', 's0288483');
sNumbers[sNumbers.length] = new Array('s0288491', 's0288490');
sNumbers[sNumbers.length] = new Array('s0288490', 's0288491');
sNumbers[sNumbers.length] = new Array('s0278410', 's0278411');
sNumbers[sNumbers.length] = new Array('s0278403', 's0278404');
sNumbers[sNumbers.length] = new Array('s0278394', 's0288454');
sNumbers[sNumbers.length] = new Array('s0278399', 's0288460');
sNumbers[sNumbers.length] = new Array('s0278421', 's0288493');
sNumbers[sNumbers.length] = new Array('s0278416', 's0288480');
sNumbers[sNumbers.length] = new Array('s0278425', 's0288492');
sNumbers[sNumbers.length] = new Array('s0278384', 's0264309', 's0278383');
sNumbers[sNumbers.length] = new Array('s0278389', 's0278388');
sNumbers[sNumbers.length] = new Array('s0278430', 's0278431', 's0288486');
sNumbers[sNumbers.length] = new Array('s0278445', 's0288496', 's0288495');
sNumbers[sNumbers.length] = new Array('s0280931', 's0288448');
sNumbers[sNumbers.length] = new Array('s0280943', 's0288487');
sNumbers[sNumbers.length] = new Array('s0280947', 's0288455');
sNumbers[sNumbers.length] = new Array('s0280952', 's0288451');
sNumbers[sNumbers.length] = new Array('s0280955', 's0288478', 's0288479');
sNumbers[sNumbers.length] = new Array('s0280957', 's0288450', 's0288471');
sNumbers[sNumbers.length] = new Array('s0280963', 's0288449');
sNumbers[sNumbers.length] = new Array('s0288472', 's0280967', 's0288473');



// this array must match the div ids and the variable stored in the URL string
var navArray = new Array('tools', 'pins', 'pens');


/* Runtime */


var offerRef = 0;

var pattern = /\?/;
var result = pattern.exec(window.location.toString());

if (result) {
	
	var passedVariable = window.location.toString().split('?')[1];
	var pattern2 = new RegExp('show=');
	var result2 = pattern2.exec(passedVariable);
	
	if (result2) {
		
		passedVariable = passedVariable.split('show=')[1];
		
		var pattern3 = /\&/;
		var result3 = pattern3.exec(passedVariable);
		
		if (result3) {
			passedVariable = passedVariable.split('&')[0];
		}
		
		offerRef = passedVariable;
		offerRef--;
	}
}	





/*     Functions     */

function deBug () {

	if (document.getElementById('deBug')) {
		var deBugDiv = document.getElementById('deBug')
	} else {
		var deBugDiv = document.createElement('DIV');
		deBugDiv.id = 'deBug';
		document.body.appendChild(deBugDiv);
	}

	var str;	
	for (var x = 0;  x < arguments.length; x++) {
		x == 0 ? str = arguments[x] : str += (' - ' + arguments[x]);
	}
	
	var newP = document.createElement('P');
	newP.appendChild(document.createTextNode(str));
	deBugDiv.appendChild(newP);
	
}

function initializePageOptions() {

/* 	setOrderOnline(); */

	var eProductsInner = document.getElementById('offersInner');
	eProductsInner.hasAttribute ? eProductsInner.setAttribute('class', 'collapsed') : eProductsInner.setAttribute('className', 'collapsed');
	
	var eSliderControls = document.getElementById('sliderControls');
	eSliderControls.hasAttribute ? eSliderControls.removeAttribute('class') : eSliderControls.removeAttribute('className');

	initializeSlider();
	
	addListener(document.getElementById('rightArrowDiv'), 'mousedown', sliderLogic, false);
	addListener(document.getElementById('arrow_right'), 'mouseover', changeArrow, false);
	addListener(document.getElementById('arrow_right'), 'mouseout', changeArrow, false);
	
	
	addListener(document.getElementById('leftArrowDiv'), 'mousedown', sliderLogic, false);
	addListener(document.getElementById('arrow_left'), 'mouseover', changeArrow, false);
	addListener(document.getElementById('arrow_left'), 'mouseout', changeArrow, false);
	
	addListener(document.getElementById('pageCount'), 'mouseover', changePaginationStyle, false);
	addListener(document.getElementById('pageCount'), 'mouseout', changePaginationStyle, false);
	
	
	addListener(document.getElementById('expandTab'), 'mousedown', showAllSliderElements, false);
		
}

function swapImageLogic(event) {

	setEventTargets(event);
	
	if (eTarget.nodeName == 'IMG') {
	
		if (!eTarget.className) {
			swapImage(event);
		}	
	}
}


function initializeSlider () {

	moveSpeed = 5;
	
	sliderDiv = document.getElementById('totalCallouts');
	sliderKids = 0;
	moduleWidth = false;

	sliderIndex = 0;

	var divList = sliderDiv.getElementsByTagName('DIV');
	sliderKids = 0;
	moduleWidth = false;
	
	for (var x = 0; x < divList.length; x++) {
		if (divList[x].className && divList[x].className == 'so_offerCallout') {
		
			if (!moduleWidth) {
				moduleWidth = 681;
			}
			
			!sliderKids ? sliderKids = 1 : sliderKids++;
		}
	}
	
	slideTimes = sliderKids;
	
	if (slideTimes > 1) {
	
		if (!sliderDiv.style.width) {
			var newWidth = sliderKids * moduleWidth;
			var initialY = newWidth - moduleWidth;
			
			sliderDiv.hasAttribute ? sliderDiv.setAttribute('style', 'width: ' + (newWidth + 20) + 'px; position: relative;') : sliderDiv.style.width = newWidth + 'px';
			
			sliderDiv.hasAttribute ? sliderDiv.setAttribute('style', sliderDiv.getAttribute('style') + 'left:' + initialY + 'px') : sliderDiv.style.marginLeft = initialY + 'px';
			/* sliderDiv.hasAttribute ? sliderDiv.setAttribute('style', sliderDiv.getAttribute('style') + ' left: 0px;') : sliderDiv.style.marginLeft = '0px'; */
			
			/*
if (!arg) {
				sliderDiv.hasAttribute ? sliderDiv.setAttribute('style', sliderDiv.getAttribute('style') + 'left:' + initialY + 'px') : sliderDiv.style.marginLeft = '0px';
			} else {
				sliderDiv.hasAttribute ? sliderDiv.setAttribute('style', sliderDiv.getAttribute('style') + ' left: 0px;') : sliderDiv.style.marginLeft = '0px';
			}
*/
		}
		
		setSliderPagination();
		setArrowPagination();
		
	}
	
}


function changePaginationStyle(event) {

	setEventTargets(event);
	
	if (eTarget.nodeName == 'P' && !eTarget.className) {
	
		if (event.type == 'mouseover' || event.type == 'onmouseover') {
			var newStyleColor = '#73a1d0'
			eTarget.hasAttribute ? eTarget.setAttribute('style', 'background-color: ' +  newStyleColor + ';') : eTarget.style.backgroundColor = newStyleColor;
			eTarget.hasAttribute ? eTarget.setAttribute('style', eTarget.getAttribute('style') + 'color: #fff;') : eTarget.style.color = '#fff';
			eTarget.hasAttribute ? eTarget.setAttribute('style', eTarget.getAttribute('style') + 'cursor: pointer;') : eTarget.style.cursor = 'pointer';
		
		} else {
			eTarget.removeAttribute('style');
		}
	
	}
	
}


function setSliderPagination (arg) {

	var ePageCount = document.getElementById('pageCount');
	
	while (ePageCount.firstChild) {
		ePageCount.removeChild(ePageCount.firstChild);
	}
	
	if (!arg) {
		for (var x = 0, y = 1; x < Math.ceil(slideTimes); x++, y++) {
		
			var newP = document.createElement('P');
			var newPText = document.createTextNode(y);
			newP.appendChild(newPText);
			addListener(newP, 'mousedown', sliderLogic, false)
		
			if (x == sliderIndex) {
				newP.hasAttribute ? newP.setAttribute('class', 'selected') : newP.setAttribute('className', 'selected') ;
			}
			
			ePageCount.appendChild(newP);
		
		}

		var newP = document.createElement('P');
		newP.hasAttribute ? newP.setAttribute('class', 'count') : newP.setAttribute('className', 'count');
		var eText = document.createTextNode('Offer ' + (sliderIndex + 1) + ' of ' + slideTimes);
		newP.appendChild(eText);
		ePageCount.appendChild(newP);
		
	}
}


function setArrowPagination() {

	// normally, these would be set to the corresponding names, but the designer wants them to work the opposite of the original script.
	var rightArrow = document.getElementById('arrow_left');
	var leftArrow = document.getElementById('arrow_right');

	function setArrowImage(obj, setToExtension, changeFromExtension) {
	
		for (var x = 0; x < changeFromExtension.length; x++) {
		
			var temp = changeFromExtension[x];
		
			var pattern = new RegExp(temp);
			var result = pattern.exec(obj.getAttribute('src'));
			
			if (result) {
				obj.setAttribute('src', obj.getAttribute('src').replace(temp, setToExtension));
			}
		}
	}


	if (sliderIndex == 0) {
		setArrowImage(rightArrow, '_null.gif', ['_over.gif', '_on.gif']);
	}
	
	if (sliderIndex > 0) {
		setArrowImage(rightArrow, '_on.gif', ['_null.gif']);
	}
	
	if (sliderIndex < (Math.ceil(slideTimes) - 1)) {
		setArrowImage(leftArrow, '_on.gif', ['_null.gif']);
	}
	
	if (sliderIndex == (Math.ceil(slideTimes) - 1)) {
		setArrowImage(leftArrow, '_null.gif', ['_over.gif', '_on.gif']);
	}
}



function showAllSliderElements(event) {

	var eProductsInner = document.getElementById('offersInner');
	var eProductsSlider = document.getElementById('totalCallouts');
	
	var eRightArrow = document.getElementById('rightArrowDiv');
	var eLeftArrow = document.getElementById('leftArrowDiv');
	var eExpandTabDiv = document.getElementById('expandTabDiv');

	setEventTargets(event);
	clearInterval(sliderDiv.interval);
	
	if (eTarget.nodeName == 'IMG') {
	
		if (document.getElementById('orderOptions')) {
			document.body.removeChild(document.getElementById('orderOptions'))
		}
	
		var pattern = new RegExp('_all.gif');
		var result = pattern.exec(eTarget.getAttribute('src'));

		if (result) {
		
			setSliderPagination('remove');
	
			eTarget.setAttribute('src', eTarget.getAttribute('src').replace('_all.gif', '_slide.gif'));
			
			if (sliderDiv.hasAttribute) {
				sliderDiv.setAttribute('style', 'height: auto;')
			} else {
				sliderDiv.style.height = 'auto'
				sliderDiv.style.width = moduleWidth + 'px';
				sliderDiv.style.marginLeft = '0px';
			}
			
			eProductsInner.hasAttribute ? eProductsInner.removeAttribute('class') : eProductsInner.removeAttribute('className');
			eProductsInner.setAttribute('style', 'height: auto');
			
			eProductsSlider.hasAttribute ? eProductsSlider.setAttribute('class', 'expand') : eProductsSlider.setAttribute('className', 'expand');
			eProductsSlider.setAttribute('style', 'height: auto');
			
			eLeftArrow.hasAttribute ? eLeftArrow.setAttribute('class', 'expand') : eLeftArrow.setAttribute('className', 'expand');
			eRightArrow.hasAttribute ? eRightArrow.setAttribute('class', 'expand') : eRightArrow.setAttribute('className', 'expand');
			eExpandTabDiv.hasAttribute ? eExpandTabDiv.setAttribute('class', 'expand') : eExpandTabDiv.setAttribute('className', 'expand');
	

		} else {
		
			eTarget.setAttribute('src', eTarget.getAttribute('src').replace('_slide.gif', '_all.gif'));
			
			sliderDiv.removeAttribute('style');

			eProductsInner.removeAttribute('style');
			eProductsInner.hasAttribute ? eProductsInner.setAttribute('class', 'collapsed') : eProductsInner.setAttribute('className', 'collapsed');

			eProductsSlider.hasAttribute ? eProductsSlider.removeAttribute('class', 'expand') : eProductsSlider.removeAttribute('className', 'expand');
			eProductsSlider.removeAttribute('style')

			eLeftArrow.hasAttribute ? eLeftArrow.removeAttribute('class') : eLeftArrow.removeAttribute('className');
	
			eLeftArrow.removeAttribute('style')	

			eRightArrow.hasAttribute ? eRightArrow.removeAttribute('class') : eRightArrow.removeAttribute('className');
			eRightArrow.removeAttribute('style')

			eExpandTabDiv.hasAttribute ? eExpandTabDiv.removeAttribute('class') : eExpandTabDiv.removeAttribute('className');
			
			initializeSlider();
			initialSliderMove ()
			
/*
			initializeSlider(1);
			setArrowPagination();
			setSliderPagination();
*/
		
		}
	
	}

}

function sliderLogic (event) {

	if (document.getElementById('orderOptions')) {
		document.body.removeChild(document.getElementById('orderOptions'));
	
	}

	setEventTargets(event);
	var endModifier = 1;
	var requestedIndex, startPosition, endPosition;
	
	/*
	Has the user requested an index higher or lower than the current display?
	The next if/else statement handles the request from either the page pagination or the arrows
	*/
		
	if (eTarget.nodeName == 'IMG') {
	
		event.stopPropagation ? event.stopPropagation() : window.event.cancelBubble = true;
	
		if (eTarget.getAttribute('id') == 'arrow_right') {
		
			var num = Math.ceil(slideTimes);
			num--;
			
			num != sliderIndex ? requestedIndex = sliderIndex + 1 : requestedIndex = sliderIndex;
		
		} else {
		
			sliderIndex == 0 ? requestedIndex = sliderIndex : requestedIndex = sliderIndex - 1;
		}
	
	} else {
	
		requestedIndex = parseInt(eTarget.firstChild.nodeValue);
		requestedIndex--;
	
	}
		
	var result = sliderIndex - requestedIndex;
	var startPosition = sliderDiv.hasAttribute ? sliderDiv.style.left : sliderDiv.style.marginLeft;
	startPosition = parseInt(startPosition.replace('px', ''));
	
	if (result != 0) {
	
		endPosition = -(endModifier * moduleWidth * requestedIndex);
		
		if (result < 0) {
		
			// move left
			var alreadySeen = (sliderIndex + 1) * endModifier;
			
			if (alreadySeen != sliderKids) {
			
				if ((((requestedIndex) * endModifier) + endModifier) > sliderKids) {
				
					endPosition = -((endModifier * moduleWidth * slideTimes) - (endModifier * moduleWidth));
						
				} 
			}
		} 
					
		sliderIndex = requestedIndex;
		
		// Set arrow images
		setArrowPagination();
		
		//set page pagination
		setSliderPagination();
		
		move(sliderDiv, startPosition, endPosition, moveSpeed);
		
	}
}


function initialSliderMove () {

	var requestedIndex;
	offerRef == 0 ? requestedIndex = slideTimes -1 : requestedIndex = offerRef;
	
	var endModifier = 1;
	var startPosition = -3405;
	
	if (offerRef == 0 || offerRef >= slideTimes) {
		var endPosition = 0; 
	} else {
		var endPosition = -(endModifier * moduleWidth * requestedIndex);
		sliderIndex = requestedIndex;
		setArrowPagination();
		setSliderPagination();
	}
		
	move(sliderDiv, startPosition, endPosition, moveSpeed);
	
}

function changeArrow(event) {

	setEventTargets(event);
	
	if(eTarget.nodeName == 'IMG') {
		
		var pattern = new RegExp('_null.gif', 'g');
		var result = pattern.exec(eTarget.getAttribute('src'));
		var found = false;
		var tempObj = eTarget;
		
		if (!result) {
		
			if (event.type == 'mouseover' || event.type == 'onmouseover') {
				eTarget.setAttribute('src', eTarget.getAttribute('src').replace('_on.gif', '_over.gif'));
				eTarget.hasAttribute ? eTarget.setAttribute('style', 'cursor: pointer;') : eTarget.style.cursor = 'pointer';
				eTarget.hasAttribute ? eTarget.setAttribute('class', 'selected') : eTarget.setAttribute('className', 'selected');
			} else {
				eTarget.setAttribute('src', eTarget.getAttribute('src').replace('_over.gif', '_on.gif'));
				eTarget.removeAttribute('style');
				eTarget.hasAttribute ? eTarget.removeAttribute('class') : eTarget.removeAttribute('className');
			}
		}
	}
}

function move(object, start, end, speed) {

	if (object.interval) { clearInterval(object.interval); }

	object.interval = setInterval(function() {
	
		areYouSliding = true;

		start += (end - start) * (speed / 100);

		object.hasAttribute ? object.style.left = start + 'px' : object.style.marginLeft = start + 'px';

		if (Math.round(start) == end) { 
		
			object.hasAttribute ? object.style.left = end + 'px' : object.style.marginLeft = end + 'px';
			areYouSliding = false;
			clearInterval(object.interval);
		}

	}, speed);
}		



function swapImage (event) {

	setEventTargets(event);
	
	if (eTarget.nodeName == 'IMG') {
			
		var eSrc;
		
		if (event.type == 'mouseover' || event.type == 'onmouseover') {
			eSrc = eTarget.getAttribute('src').replace('off.gif', 'on.gif');
		
		} else {
			eSrc = eTarget.getAttribute('src').replace('on.gif', 'off.gif');
		}
		
		eTarget.setAttribute('src', eSrc);
	}
}

	
