var searchBoxPosition = null;
var searchBoxSize = null;
var homeIntro = new Object();
var fxOut = null;

window.addEvent("domready", function(){
												 
	// fix (r) and TM symbols
	document.body.innerHTML = document.body.innerHTML.replace(/®/g, '<span class="superscript">®</span>');

	var bodyExtended = $(document.body);
	bodyExtended.addClass("domready");
	
	// set first and last class on ul lists
	bodyExtended.getElements("ul li:first-child").each( function(elm){
		elm.addClass("first");
	});
	bodyExtended.getElements("ul li:last-child").each( function(elm){
		elm.addClass("last");
	});
	
	// handle popups
	bodyExtended.getElements("a").each( function(elm){
		var rel = elm.get("rel");
		if( rel ){
			if( rel.indexOf("kamPopUp")!=-1 ){
				elm.addEvent("click", function(evt){
					evt.preventDefault();
					window.open(elm.href);
				});
			}
		}
	});
	
	// homepage intro
	if( bodyExtended.hasClass("home") ){
		var periodical;		
		homeIntro.menuItems = bodyExtended.getElements("#introMenu a");
		homeIntro.contentItems = bodyExtended.getElements("#introContent li");	
		homeIntro.menuItems.each( function(elm){
			elm.addEvent("mouseover",function(evt){
				evt.preventDefault();
				showIntroItem(this);		
				setImages(homeIntro.currentItem);
			});
		});
		showIntroItem(homeIntro.menuItems[0]);
				
		var visuals = bodyExtended.getElements('.visual');
		
		setImages = function(index){
			clearTimeout( periodical );
			var imgs = null;
			if(fxOut){
				fxOut.cancel();
		//		fxOut.destroy();
				fxOut = null;
			}
			imgs = visuals[index].getElements('img');
			if(imgs.length > 1){
				var imgIndex = 1;
				var prevImg = imgs[0];
				imgs.each( function(img,key){
					if(key!=0){
						img.setStyle('opacity', '0');
					}else{
						img.setStyle('opacity','1');						  
					}
					img.setStyles({
						'position':'absolute',
						'zIndex':90	
					});
				});
				
				var imageRotate = function(){
					if(prevImg){
						fxOut = new Fx.Morph(prevImg,{
							duration:1200
						});
						fxOut.set({'zIndex': 200});
						fxOut.start({'opacity':0});
					}
					imgs[imgIndex].setStyles({
						'opacity':1,
						'zIndex': 100
					});
						
					prevImg = imgs[imgIndex];
					(imgIndex < imgs.length-1) ? imgIndex++ : imgIndex = 0;
				}
				periodical = imageRotate.periodical(1400);
			}
		}
//		setImages(0);
		setImages(homeIntro.currentItem);
	}
	// document search results
	else if ( bodyExtended.hasClass("documentSearchResults") ){
		var form = document.id("searchFilter");
		form.addEvent('submit', function(event){
			event.preventDefault();
			updateDocumentSearchResults();
		});
		
		form.getElements("select").each( function(element){
			element.addEvent("change", function(event){
				updateDocumentSearchResults();
			});
		});
	}
	
	// search box click/icon
	var searchInput = document.id("searchInput");
	if(searchInput){
		searchBoxSize = searchInput.getSize();
		searchBoxPosition = searchInput.getPosition();
		searchInput.addEvent("click", function(evt){
			if( !((evt.page.x>searchBoxPosition.x && evt.page.x<(searchBoxPosition.x+searchBoxSize.x-25)) && (evt.page.y>searchBoxPosition.y && evt.page.y<(searchBoxPosition.y+searchBoxSize.y+23) )) ){
				evt.preventDefault();
				if( this.value!="" ){
					this.parentNode.parentNode.submit()
				}
			}
		});
	}
	
	// fix product listings
	bodyExtended.getElements("div.productBox").each( function(elm,index){
		if( index%3==2 ){
			elm.setStyle("margin-right","0");
		}
	});
	
	// stripe product table
	bodyExtended.getElements("tr").each( function( elm,index ){
		if( index%2==1 ){
			elm.addClass("even");	
		}
	});
	
	var overTextInstances = [];
	bodyExtended.getElements("#header input").each( function(elm,index){
		overTextInstances.push( new OverText(elm), { poll:true, pollInterval:1000  } );
	});
	
	KamForms.initialise();
	
	
});

function showIntroItem(menuItem){
	var counter = 0;
	homeIntro.contentItems.each( function(elm,index){
		elm.setStyle("display","none");
		if ( $(homeIntro.menuItems[counter]) ){
			$(homeIntro.menuItems[counter].parentNode).removeClass("selected");
		}
		if( elm.get("id")==menuItem.get("rel") ){
			elm.setStyle("display","block");
			homeIntro.currentItem = counter;
		}
		counter++;
	});
	menuItem.parentNode.addClass("selected");	
}

//function populateDocumentSearchProductSelect(categoryId){
//	var productElement = document.id("productNameFilter");
//	productElement.set("html", "");
//	productElement.grab( new Element("option", {
//		value: "",
//		html: "All products"
//	}));
//	if (products[categoryId] != undefined ){
//		products[categoryId].each(function(option){
//			productElement.grab( new Element("option", {
//				value: option.id,
//				html: option.name
//			}));
//		});
//	}
//}

function updateDocumentSearchResults(){
	var uri = new URI();
	var form = document.id("searchFilter");
	form.getElements("select").each( function(element){
		document.id(element);
		var data = {};
		data[element.get("id")] = element.get("value");
		uri.setData(data, true);		
	});	

	var productCodeElement = form.getElement("input");
	var data = {};
	data[productCodeElement.get("id")] = productCodeElement.get("value");
	uri.setData(data, true);
	
	var updateRequest = new Request.HTML({
		url: uri.toString(),
		onSuccess: function(responseTree, responseElements){
			var newResultsElement = null;
			responseElements.each( function(element){
				if ( element.get('id') == 'searchResults' ){
					newResultsElement = element;
				}
			});
			
			if ( newResultsElement ){
				var currentResults = document.id('searchResults');
				newResultsElement.replaces(currentResults);
			}
		}
	});
	updateRequest.send();
}
