var faderImages = null;
var faderStraplines = null;
var toggle = false;

window.addEvent('domready',function(){
	var bodyEl = $('body');
	var page = bodyEl.get('class');
	var colorFx = null;
	var newsletterForm = $('newsletter');
	
	// Disable right click on imgs
	$$('img').each( function(img){
		img.addEvent('contextmenu',function(evt){
			evt.stop();												
		});
	});
	
	modalHandler = new kamModalHandler();								
		
	window.addEvent('scroll', function(evt){
		modalHandler.centreContent(0);									   
	});
	
	modalHandler.addEvent('maskVisible', function(evt){			
		modalHandler.centreContent(0);		
	});	

	var searchInput = $("searchInput");
	if(searchInput){
		searchInput.addEvent("click", function(evt){
			var size = this.getSize();
			var position = this.getPosition();
			if( (evt.page.x>position.x && evt.page.x<(position.x+size.x-18)) && (evt.page.y>position.y && evt.page.y<(position.y+size.y+23) ) ){

			}
			else{
				evt.preventDefault();
				if( this.value!="" ){
					var form = $(this.parentNode.parentNode);
					if( form ){
						form.submit();	
					}
				}
			}
		});
	}
	
	if(newsletterForm != null){
		var	emailInput = newsletterForm.getElement('#emailInput');
		if(emailInput != null){
			emailInput.addEvent('click', function(evt){
				emailInput.value = '';								  
			});
		}
	}
	
	if(page == 'orderDetails'){
		var eCommerceFunctions = new kamEcommerce('orderDetailsForm');
		eCommerceFunctions.validateCompulsory();	
	}
	
	if(page == 'login newCustomer'){		
		var newForm = $('newCustomerForm');
		var editAccount = $('accountDetails');
		
		if(newForm != null){		
			var eCommerceFunctions = null;
			var radios = $$('.standardRadio');
			var newCustomerExpand = $('newCustomerForm');
			var passwordExpand = $('passwordSection');
			
			if(newCustomerExpand){
				var newCustomerFx =  new Fx.Morph(newCustomerExpand, { 
					duration:'750',
					onComplete: function(){  
						if(parseFloat(newCustomerExpand.getStyle('height')) > 10) newCustomerExpand.setStyle('height','auto'); 								
					}
				});	
				
				// validate small form 
				var emailAddress = $('emailInput');
				var continueSubmit = $('customerSubmit');
				
				continueSubmit.addEvent('click', function(evt){
					var showError = function(){
						$$('.error').each( function(errorDiv){
								errorDiv.setStyle('display','block');									
						});	
					}
					
					if(emailAddress.get('value') == ''){
						evt.stop();											
						emailAddress.setStyle('borderColor','#c00');
						showError();
					}else{
						emailAddress.setStyle('borderColor','#d1d4d1');	
					}
					
					if(radios[0].get('checked') == false && radios[1].get('checked') == false){
						showError();	
						evt.stop();
						$$('.radioError').each( function(label){
						  label.setStyle('color','#c00');
						});
					}else{
						$$('.radioError').each( function(label){
						  label.setStyle('color','#7f7c75');
						});	
					}
				});
				
				var passFx = new Fx.Morph(passwordExpand);				
				radios.each( function(radio,key){						
					radio.addEvent('click', function(evt){					
						if(key == 0){						
							passFx.start({'height':'0'});
							newCustomerFx.start({'height':'650'});	
							eCommerceFunctions = new kamEcommerce('continueForm');
							eCommerceFunctions.deliveryAddress('same','deliveryAddressContainer','deliveryAddressInner');
							eCommerceFunctions.validateCompulsory();
						}else{
							newCustomerExpand.setStyle('height',newCustomerExpand.getSize().y + 'px');
							newCustomerFx.start({'height':'0'});
							passFx.start({'height':'60'});
							if(eCommerceFunctions)	eCommerceFunctions.removeEvents();
						}
					});
				});
				
				radios.each( function(radio,key){
					if ( radio.get("checked") !== false ){ radio.click(); }
				});
			}
		}else if(editAccount != null){
			var eCommerceFunctions = new kamEcommerce('accountDetails');
			eCommerceFunctions.validateCompulsory();
		}
		
		
	}
	
	// Home page animations
	if(page == 'homepage'){		
		
	 	faderImages = new kamFader('faderImages',{
			autoFadePeriod: 5000
		});
		
		faderStrapLines = new kamFader('homeStrapline',{
			autoFadePeriod: 5000
		});		
		
		var lis = $('clickThroughs').getElements('li'); 
		
		faderImages.addEvent('fadeStart', function(evt){			
			lis[faderImages.prevRelativePointer].removeClass('selected');	
			lis[faderImages.relativePointer].addClass('selected');
		});
		
		//set the inner to overflow hidden on fade to fix ie bug
		var inners = $$('#homeStrapline .inner');
		if(inners != null){		
			faderImages.addEvent('fadeStart', function(evt){
				inners.each( function(inner){
					inner.setStyle('overflow-y','hidden');							 
				});
			});
			
			faderStrapLines.addEvent('fadeComplete', function(evt){
			  	inners.each( function(inner){
					inner.setStyle('overflow-y','auto');																					  
				});
			});
		}
		
		lis.each( function(liEl, index){
			liEl.addEvent('click',function(evt){
				evt.stop();
				faderImages.resetAutoFade();
				faderStrapLines.resetAutoFade();
				faderImages.fadeTo(index);
				faderStrapLines.fadeTo(index);
			});
		});		
	}	
	
	// Product page animations
	else if(page == 'product'){
		//stock control
		var eCommerceFunctions = new kamEcommerce('quantity');
		eCommerceFunctions.validateQuantity('stockLevel','quantityInput');
		eCommerceFunctions.validateChars('numeric','quantityInput');
		
		// Product listing hover effect
		productsEl = $$('.relatedProduct');
		productsEl.each( function(productEl, index){		
			productEl.addEvent('mouseenter', function(evt){						
				var bottomDiv = productEl.getElement('.bottom');		
				colorFx = new Fx.Morph(bottomDiv, {
					link:'cancel',
					duration:'300'
				});
				colorFx.start({
					'background-color':'#d1d1d1'
				});
			});
			
			productEl.addEvent('mouseleave', function(evt){
				colorFx.start({
					'background-color':'#f1f1f1'
				});
			});
		});
		
		// Product details page
		var productImages = $('faderImages');
		if(productImages){										
			faderImages = new kamFader('faderImages',{
				autoFadePeriod: 5000
			});	
			
			Shadowbox.init({
				onOpen: function(){
					faderImages.pauseFade();	
				},
				onClose: function(){
					if(!toggle){
						faderImages.resumeFade();	
					}
				}
			});		
			
			var productNav = $('productNav');
			var lis = productNav.getElements('li');			
			var lightboxEl = productImages.getElement('.lightBox');
			var printEl = bodyEl.getElement('a.printPage');
			
			printEl.addEvent('click', function(evt){
				evt.stop();
				window.print();
			});
			
			faderImages.addEvent('fadeStart', function(evt){											  
				lis[faderImages.prevRelativePointer + 1].removeClass('selected');	
				lis[faderImages.relativePointer + 1].addClass('selected');			
				var currentObject = faderImages.items[faderImages.pointer].liEl;
				lightboxEl.set('href',currentObject.getElement('a').get('href'));
			});
			
			// Thumbs
			lis.each( function(liEl, index){
				liEl.addEvent('click',function(evt){
					evt.stop();
					
					var aEl = liEl.getElement('a');
					if(aEl.get('class') == 'prev'){
						faderImages.prev(true);
					}else if(aEl.get('class') == 'next'){
						faderImages.next(true);
					}else{
						faderImages.resetAutoFade();				
						faderImages.fadeTo(index - 1);
					}
				});
			});
			
			// pause and play
			var playPause = productNav.getElement('.playPause');
			if(playPause){
				playPause.addEvent('click', function(evt){
					evt.stop();					
					if(!toggle){					
						faderImages.pauseFade();				
						toggle = true;
						playPause.setStyle('background-image','url(/style/images/productNav-play-button.png)');	
					}else{
						faderImages.resumeFade();	
						toggle = false;
						playPause.setStyle('background-image','url(/style/images/productNav-pause-button.png)');	
					}					
				});
			}					
		}
	}else if(page == 'basket'){
		// add the form submission event to the update button
		var updateShoppingBagButton = $('updateShoppingBag');
		if ( updateShoppingBagButton ){
			updateShoppingBagButton.addEvent("click", function(event){
				event.stop();
				var basketForm = $('basketForm');
				if ( basketForm ){ basketForm.submit(); }
			});
		}
		
		//coupon code
		var applyCoupon = $("applyCoupon");
		if( applyCoupon ){
			applyCoupon.addEvent("click", function(evt){
				evt.stop();
				var couponForm = $("applyCouponForm");
				if(couponForm){ couponForm.submit() };
			});
		}
		
		//stock control
		var eCommerceFunctions = new kamEcommerce('basketForm');
		var counter = 0;

		while($('stockLevel'+counter) != null){
			eCommerceFunctions.validateQuantity('stockLevel'+counter,'quantityInput'+counter);
			eCommerceFunctions.validateChars('numeric','quantityInput'+counter);	
			counter++;
		}

	}else if(page == 'recipes'){	
		var originalElSizes = new Array();
		var currentStep = 0;
		var currentFader = null;
		
		var imageSets = $$('.recipeImages');
		var thumbSets = $$('.recipeThumbs');

		var currentVisible = null;
		
		if(imageSets.length > 0){									
			var accordionTogglers = $$('h3.toggler');
			var accordionElements = $$('div.element');
			
			//handle print
			accordionElements.each( function(accordionElement){
				var elSize = accordionElement.getSize();
				originalElSizes[originalElSizes.length] = elSize.y;
			});						
			
			//accordion								
			accordionTogglers.each( function(accordionToggler, key){
				var elm = accordionElements[key].getElements('.recipeImages')[0];
				var thumb = accordionElements[key].getElements('.recipeThumbs')[0];
				if(key == 0 ) currentVisible = elm;
				
				if(elm != '' && elm != null){
									
					var recipeFader = new imageFader(elm, {
						navigationItems: thumb.getElements('a')
					});
				
					recipeFader.addEvent('fadeComplete', function(evt){
																			
						if(recipeFader.baseElm == currentVisible){
							var currentItem = 0;
						}
					});

					recipeFader.addEvent('fadeStart', function(evt){																			 
					 	var recipeLis = thumbSets[currentStep].getElements('li');
						var fxIn = new Fx.Morph(recipeLis[recipeFader.index], { 
							duration:'750'											 
						});					

						var fxOut = new Fx.Morph(recipeLis[recipeFader.prevIndex], { 
							duration:'750'											  
						});						
						
						fxIn.start({'opacity':'1.0'});
						fxOut.start({'opacity':'0.3'});									 
					});
					
					accordionToggler.store(accordionToggler.get('html'),recipeFader);		
					
				}
			});
																		
			var accord = $('accordion');
			if(accord != null){			
				//create Accordion instance
				var myAccordion = new Accordion($('accordion'), 'h3.toggler', 'div.element', {
					opacity: false,
					onActive: function(toggler, element){
						var id = toggler.get('id');
						currentVisible = element.getElements('.recipeImages')[0];
						
						currentFader = toggler.retrieve(toggler.get('html'))
						currentFader.start(0);
						
						currentStep = id.substring(id.indexOf('-')+1,id.length) - 1;
						
						var recipeLis = thumbSets[currentStep].getElements('li');
						recipeLis.each( function(lis){
							lis.setStyle('opacity','0.3');								 
						});						
						recipeLis[0].setStyle('opacity','1');					
											
					},
					onBackground: function(toggler, element){
						currentFader = toggler.retrieve(toggler.get('html'))
						currentFader.halt();		
					}
				});														
			}								
		}
		
		var printLinks = $$('.printPage');
		printLinks.each( function(printLink){
			printLink.addEvent('click', function(evt){
				evt.stop();					
				(printLink.hasClass('noImages') == true) ? $$('.printImage').addClass('hide') : $$('.printImage').removeClass('hide');
				accordionElements.each( function(accordionElement, key){
					if(key != currentStep) accordionElement.setStyle('height','auto');
				});
				window.print();
				accordionElements.each( function(accordionElement, key){
					if(key != currentStep) accordionElement.setStyle('height','0');
				});
			});
		});
		
		var colC = $$('.colC')[0];
		var scrollFlag = false;
		var lastPos = 0;
		window.addEvent('scroll', function(evt){
			var timed = function(){
				if(!scrollFlag){
					var fxMove = new Fx.Morph(colC, { 
						duration: 1000,
						onStart: function(){ scrollFlag = true; },
						onComplete: function(){ scrollFlag = false; }
					});
					
					fxMove.start({
						'marginTop': window.getScroll().y + 70
					});
				}
			}
			timed.delay(2010);
			
		});
	}
		
});


