

Event.observe(window, 'load', function () {
	// Event Handlers for gear navigation
	var gearCats = $$('#gear li a');
	for (i=0; i < gearCats.length; i++) {
		Event.observe(gearCats[i], 'click', toggle);
	}
	
	// Event Handlers for Thumbnails
	var thumbs = $$('.thumbs a');
	for (i=0; i < thumbs.length; i++) {
		Event.observe(thumbs[i], 'mouseover', setRank);
	}
	
	// Event Handlers for Contact Box
	var theOpener = $$('a#contact');
	var theCloser = $$('a#closeMe');
	if(theOpener.length > 0) {
		Event.observe('contact', 'click', showContact);
	}
	if(theCloser.length > 0) {
		Event.observe('closeMe', 'click', closeContact);
	}
	function showContact(e){
		var offset = $('contact').cumulativeOffset();
		$('contactBox').setStyle({
			display: 'block'
		});
		$('contactBox').style.top = (offset[1] - 90) + 'px';
		$('contactBox').style.left = (offset[0] - 130) + 'px';
		$('contactBox').style.zIndex = '25000';
		Event.stop(e);
		return false;
	}
	
	function closeContact(e) {
		$('contactBox').setStyle({
			display: 'none'
		});
		Event.stop(e);
		return false;
	}
	
	// Set Product Rank
	function setRank(e) {
		var prodId = Event.element(e).up().id.split('_')[1]
		var rank = Event.element(e).up().id.split('_')[2];
		$('bigImage').update('<img class="side_img" src="showImage.jsp?image_type=fullsize&class_id=' + prodId + '&rank=' + rank + '" alt="Product Image" />');
		Event.stop(e);
		return false;
	}
	
	// Toggle Side Nav for gear.jsp
	function toggle(e) {
		//alert(Event.element(e).id.split('_')[1]);
		var menuItem = Event.element(e).id.split('_')[1];
		$('category' + menuItem).toggle();
		Event.stop(e);
		return false;
	}
	
	// Numbers Only for ZIP code field
	var zipField = $$('#zip_code');
	if (zipField.length > 0) {
		Event.observe('zip_code', 'keydown', validateZipCode);
	}

	function validateZipCode(e) {
		var key = e.keyCode;
		if (key>=48 && key<=57 || key>=96 && key<=105 || key==null || key==0 || key==8 || key==9 || key==13 || key==27 || key==37 || key==39) {
			return true;
		} else {
			Event.stop(e);
			return false;
		}
	}
	
	// Dealer Locator Results Images
	if($('dealerLocatorResults')) {
		var anchors = $('dealerLocatorResults').getElementsByTagName('a');
		for(var i = 0; i<anchors.length; i++ ){
			if(anchors[i].className == 'dealerImg'){
				anchors[i].onmouseover = function () {createBigImg(this)};
				anchors[i].onmouseout = function () {removeBigImg(this)};
			}
		}
	}
	
	// Event handlers for Dealer Search
	var dealerSearch = $$('#viewSearchForm');
	var dealerOnline = $$('#viewOnline');
	if (dealerSearch.length > 0) {
		Event.observe('viewSearchForm', 'click', toggleDealersView);
	}
	if (dealerOnline.length > 0) {
		Event.observe('viewOnline', 'click', toggleDealersView);
	}

	// Swap view on dealers page (search by zip vs. view online dealers
	function toggleDealersView(e) {
		$('dSearch', 'dOnline').invoke('toggle');
		Event.stop(e);
		return false;
	}
	
});


function findPosition(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

function getWindowHeight() {
	var myHeight = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
	//Non-IE
		myHeight = window.innerHeight;
	}else if( document.documentElement && document.documentElement.clientHeight ) {
	//IE 6+ in 'standards compliant mode'
		myHeight = document.documentElement.clientHeight;
	}else if( document.body && document.body.clientHeight ) {
	//IE 4 compatible
		myHeight = document.body.clientHeight;
	}
	  
	var scrollOffset = 0;
	if(typeof( window.pageYOffset ) == 'number' ) {
	//Netscape compliant
		scrollOffset = window.pageYOffset;
	} else if ( document.body && document.body.scrollTop ) {
	//DOM compliant
		scrollOffset = document.body.scrollTop;
	} else if ( document.documentElement && document.documentElement.scrollTop ) {
	//IE6 standards compliant mode
		scrollOffset = document.documentElement.scrollTop;
	}
	return [myHeight + scrollOffset, scrollOffset];
}

function removeBigImg(thisAnchor) {
	var thisNode = "";
	for (var n=document.body.childNodes.length - 1;n>=0;n--){
		thisNode = document.body.childNodes[n];
		if (thisNode.className == 'bigImage_popup' || thisNode.className == 'bigImage_shim'){
			document.body.removeChild(thisNode);
		}
	}
}

function createBigImg(thisAnchor) {
	var path = thisAnchor.href;
	var thumbImage = thisAnchor.getElementsByTagName("img")[0];
	var thisImage = new Image();
	
	thisAnchor.onclick = function () {
		return false;
	}; 
	thisImage.className = "bigImage_popup";
	thisImage.thumbNail = thumbImage;
	thisImage.style.margin = '-20px';
	thisImage.style.padding = '10px';
	thisImage.style.position = 'absolute';
	thisImage.style.zIndex = "12001";
	thisImage.style.backgroundColor = "#ffffff"
	thisImage.style.border = '1px solid #cccccc';
	thisImage.style.display = 'none';
	thisImage.onload = function () {
		showBigImg(this)
	};
	thisImage.src=thisAnchor.href;
	document.body.appendChild(thisImage);
}

function showBigImg(thisImage) {
	var pageSize = getWindowHeight();
	var pageHeight = pageSize[0];
	var pageOffset = pageSize[1];
	var thumbImage = thisImage.thumbNail;
	var thumbTop = findPosition(thumbImage)[1];
	var pixelsFromLeft = (findPosition(thumbImage)[0] - 20 - thisImage.width);
	//var pixelsFromLeft = findPosition(thumbImage)[0] + 20 + thumbImage.width;
	var pixelsFromtop = thumbTop;
	thisImage.style.left = pixelsFromLeft + "px";

	if((pageHeight - thumbTop) < thisImage.height){
		//theres not enough room under the thumbnail - put it on top
		pixelsFromtop = (thumbTop + thumbImage.height - thisImage.height);
		if((pageOffset + 15) > pixelsFromtop){
			//there is not enough room on top so move it down 15 px from the top
			pixelsFromtop = (pageOffset + 15);
		}
	}
	thisImage.style.top = pixelsFromtop + "px";
	
	//this adds an Iframe shim under the image so it goes over dropdown menus 
	if (document.all) {
		var iframeShim = document.createElement("IFRAME");
		thumbImage.parentNode.focus();
		iframeShim.className = "bigImage_shim";
		iframeShim.style.position = 'absolute';
		iframeShim.style.left = pixelsFromLeft + "px";
		iframeShim.style.height = thisImage.height;
		iframeShim.style.width = thisImage.width;
		iframeShim.style.zIndex = "12000";
		iframeShim.style.top = pixelsFromtop + "px";
		thisImage.parentNode.appendChild(iframeShim);
	}
	thisImage.style.display = '';
}