var dropDowns = null;
var mySamplesDropDown = null;
var saveSwatches = null;
var commonDetails = null;
var fxFlag = false;

window.addEvent('domready', function(evt){		
									 	
	saveSwatches = new Hash.Cookie('swatches',{path : '/'});	
	commonDetails = new Hash.Cookie('commonDetails',{path : '/'});

	// setup the veneer search bar
	veneerSearchBarHandler();
	
	handleDropDowns();	
	dropDowns = document.getElements('.dropDown');
	
	var html = document.getElements('html')[0];
	html.addEvent('click', function(evt){
		displayDropDowns();											 
	});			
	
	menuHandler();	
	galleryHandler();
	compareHandler();
	cookieHandler();
	contactHandler();
	embedMap();
	faqHandler();
	updateMySamplesLink();
	initFader();
	formFunctions();
	if( String(window.location).indexOf("veneer-search-results") )	if(typeof(Shadowbox) != 'undefined') Shadowbox.init();

	//check if a url file is a image or downloadable
	var isDownload = function(uri){
		var download = false;
		var file = uri.get('file');
		if(file != ''){
			var fileEx =  file.substr(file.lastIndexOf('.')+1,file.length).toLowerCase();				
			if( (fileEx != 'jpg') && (fileEx != 'png') && (fileEx != 'gif') ) download = file;
		}			
		return download;
	}

	var host = new URI().get('host');	
	document.getElements("a").each( function(elm){
		// handle popups
		var rel = elm.get("rel");			
		
		var uri = new URI(elm.get('href'));
		var file = isDownload(uri); 
		if( (uri.get('host') != host) || (file != false)){
											
			elm.addEvent('click', function(e){
				e.preventDefault();																
				var cat = 'externalLink';
				var label = uri.get('host');
				if(file != false){
					cat = 'downloadableFileLink';
					label = file;
				}else if(uri.toString().indexOf('mailto')!=-1){
					cat = 'mailLink';
					label = uri.toString();
				}										
				
				var pageTracker = _gat._getTracker('UA-18060620-1');
				pageTracker._trackEvent(cat,'click', label );									
	
				if( rel ){
					if( rel.indexOf("kamPopUp")!=-1 ) window.open(elm.href);						
				}else{ uri.go(); }
			});
			
		}else if( rel ){
			if( rel.indexOf("kamPopUp")!=-1 ){
				elm.addEvent("click", function(evt){
					evt.preventDefault();
					window.open(elm.href);
				});
			}
		}					
	
	});

});

function formFunctions(){
	var contactForm = document.id('contactForm');
	var brochureForm = document.id('brochureForm');
	
	if(contactForm != null || brochureForm ){

		// how did you hear other field
		var selectDrop = document.id('howDidYouHear');
		var specifyWrapper = document.id('specifyWrapper');
		var fx = new Fx.Morph(specifyWrapper, {duration: 500});
		
		if(selectDrop != null && specifyWrapper != null){
			if(selectDrop.value == 'other')	specifyWrapper.setStyle('height','23px');
						
			selectDrop.addEvent('change', function(evt){
				if(selectDrop.value == 'other'){																	
					fx.start({'height':'23'});						
				}else{
					fx.start({'height':'0'});	
				}
			});
			
			// brouchre fieldset
			var selectBrochure = document.id('requestBrochure');
			var brochureWrapper = document.id('brochureForm');
			var brochureChks = brochureWrapper.getElements('input');
			var fx2 = new Fx.Morph(brochureWrapper);									

			selectBrochure.addEvent('click', function(e){			
				fx2.cancel();
				if(this.checked){			
					fx2.start({'height':'120'});
				}else{
					brochureChks.each( function(input){ input.checked = false });
					fx2.start({'height':'0'});	
				}
			});
						
		}
		
		// save common details between forms
		var fields = ( contactForm!=null ) ? contactForm.getElements("input.kamStore,select.kamStore,textarea.kamStore"): brochureForm.getElements("input.kamStore,select.kamStore");
		fields.each( function(elm){
			if(elm.get('type') != 'checkbox'){
				elm.set("value",commonDetails.get(elm.get("id")));			
				elm.addEvent("blur", function(evt){			
					commonDetails.set(elm.get("id"),elm.get("value"));				
				});				
			}else{
				elm.set('checked', commonDetails.get(elm.get('id')));
				elm.addEvent('click', function(e){
					commonDetails.set(elm.get('id'),elm.get('checked'));
				});
			}
			
		});
		
		if(selectBrochure.checked) fx2.start({'height':'120'});
		
		//validation
		var submitB = document.getElements('input.submit');
		var selectHow = document.id('howDidYouHear');
		var error = document.id('formError');
		if(submitB){
			submitB[0].addEvent('click', function(e){				
				document.getElements('input.required').each(function(required){
					if(required.value == ''){ 						
					 	e.stop();
						error.setStyle('display','block');
						required.setStyle('border','2px solid #817893');
					}else{
						required.setStyle('border', '1px solid #E1E1FF');	
					}
				});
				if(selectHow.value == 'false'){
					e.stop();	
					error.setStyle('display','block');
					selectHow.setStyle('border','2px solid #817893');
				}else{
					selectHow.setStyle('border', '1px solid #E1E1FF');		
				}				
			});
		}
		
	}
}

function contactHandler(){
	var swatches = document.id('requestSwatches');
	if(swatches != null){
		var swatch = swatches.getElement('.swatch').dispose();
		var numSwatches = 0;
		var inputArr = [];
		saveSwatches.each( function(cookie){	
			newSwatch = swatch.clone();
			newSwatch.getElement('img').set('src',cookie.image);
			//newSwatch.getElement('label').set('for','swatches[]');
			var input = newSwatch.getElement('input');
			input.set('value',cookie.name);
			input.set('name','swatches[]');
			swatches.grab(newSwatch);
			inputArr.push(input);
			numSwatches++;
		});	
		
		var height = 0;
		(numSwatches < 7 && numSwatches != 0 ) ? height = 80 : height = 150;
										
		// samples fieldset
		var selectSample = document.id('requestSample');
		var sampleWrapper = document.id('samplesForm');
		var fx = new Fx.Morph(sampleWrapper);
		
		selectSample.addEvent('click', function(e){
			fx.cancel();
			if(this.value){
				fx.start({'height':height});	
				inputArr.each( function(input){ input.checked = true; });		
			}else{
				fx.start({'height':'0'});
				inputArr.each( function(input){ input.checked = false; });
			}
		});					
		
		if( numSwatches==0 ){			
			var samplesFieldset = document.id("requestSamplesEnquiry");
			if( samplesFieldset ) document.id('noSwatches').setStyle('display','block');			
		}else{
			fx.start({'height':height});	
			selectSample.checked = true;
		}
		
	}
}

function initFader(){
	var pointer = 0;
	var prevPointer = 0;
	
	if( document.body.hasClass("home") ){
		
		// v1
		var intro = document.id('intro');
		if( intro ){
			var intros = document.id('intro').getElements('li');
			
			intros.each( function(intro){
				intro.setStyle('opacity','0');	
				intro.setStyle('display','none');
			});		
			
			faderImages = new kamFader('homeImage',{autoFadePeriod: 5000});
					
			if(intros[pointer] != '' && intros[pointer] != null){
				intros[pointer].setStyles({
					'display':'block',
					'opacity':'1'
				});
			}
			
			faderImages.addEvent('fadeStart', function(evt){
				prevPointer = faderImages.prevPointer;
				pointer = faderImages.pointer;					
				
				var fxPrev = new Fx.Morph(intros[prevPointer], {
					duration: 500,
					onComplete: function(){
						intros[prevPointer].setStyle('display','none');																			
					}
				});
				
				fxPrev.start({'opacity':'0'});			
			});
			
			faderImages.addEvent('fadeComplete', function(evt){			
				intros[pointer].setStyle('display','block');				
				var fxNext = new Fx.Morph(intros[pointer], {duration: 500});				
				fxNext.start({'opacity':'1'});									
			});
		}
		
		// v2
		var slider = document.id('newsStories');
		var sliderControls = document.id("sliderControls");
		var sliderControlsNP = document.id("sliderControlsNP");
		if( slider ){
			
			// create the slider
			var kamSlider = new kamContentChanger(slider, {
				cellsElement: slider.getElement("div.items"),
				contentCellSelector: "div.item",
				navigationWrapperElement: sliderControls,
				autoChange: true,
				changeInterval: 7000,
				changeDuration: 1000
			});
			
			// create the prev button
			var prev = new Element("a", {
				"href": "#",
				"html": "Previous",
				"id": "sliderPrev",
				"events": {
					"click": function(evt){
						evt.preventDefault();
						kamSlider.previous();
					}
				}
			});
			
			// create the next button
			var next = new Element("a", {
				"href": "#",
				"html": "Next",
				"id": "sliderNext",
				"events": {
					"click": function(evt){
						evt.preventDefault();
						kamSlider.next();
					}
				}
			});
			
			sliderControlsNP.adopt(prev,next);

		}
	}
}

function faqHandler(){
	var accord = document.id('accordion');
	if(accord != null){
		var uri = new URI();
		uri = uri.toString()
		var uriArray = new Array();
		uriArray = uri.split('/');
		var questionNo = uriArray[uriArray.length - 2];
		var subNav = document.id('subNav');
		
		if(questionNo != '') questionNo == 0;
			
		//create Accordion instance
		var myAccordion = new Accordion(document.id('accordion'), 'h3.toggler', 'div.element', {
			opacity: false,
			display: questionNo,
			onActive: function(toggler, element){
				toggler.setStyles({
					'backgroundColor': '#6e6481',
					'color':'#ffffff'
				});

				if(subNav != null){
					var liEls = subNav.getElements('li');	
					liEls.each( function(liEl){
						(liEl.getElement('a').get('html') == toggler.get('html')) ? liEl.addClass('selected') : liEl.removeClass('selected'); 
					});
				}
			},
			onBackground: function(toggler, element){
				toggler.setStyles({
					'backgroundColor': '#f6f6fe',
					'color' : '#524768'					  
				});
			}
		});				
	}
}

function embedMap(){
	var map = document.id("map");
	if( map ){
		var geocoder = new google.maps.Geocoder();
		if (geocoder) {
			geocoder.geocode( { 'address': "summerfield avenue, wellington, TA21 9JF"}, function(results, status) {
				if (status == google.maps.GeocoderStatus.OK) {
					var myOptions = {
					  zoom: 12,
					  center: results[0].geometry.location,
					  mapTypeId: google.maps.MapTypeId.ROADMAP
					}
					gmap = new google.maps.Map(map, myOptions);
					var marker = new google.maps.Marker({
						map: gmap, 
						position: results[0].geometry.location,
						icon: "/style/images/mapMarker.png",
						title: "Mundy Veneer"
					});
				}
				else {
					alert("Geocode was not successful for the following reason: " + status);
				}
			});
		}
	}
}

function compareHandler(){
	var kamModal = new kamModalHandler('popUp', true, '/compare-popup/');	
	
	kamModal.addEvent('maskVisible',function(evt){	
		var mySwatches = document.id('popUpCompare').getElements('.compareItem');				
		var i = 0;
		
		var closeButton = document.id('close');
			
		if(closeButton != null){
			closeButton.addEvent('click', function(evt){
				kamModal.hideMask();		
				updateMySamplesLink()
				removeAddButtons();
			});
		}
		
		//add samples to the colA my samples
		saveSwatches.each( function(cookie, key){											
			if( (mySwatches.length) > i){				
				var swatchImg = new Element('img', {
					'src' : cookie.image,
					'alt' : cookie.name,
					'title' : cookie.name
				});
				var image = mySwatches[i].getElement('.image');
				var title = mySwatches[i].getElement('.title');
				var removeButton = mySwatches[i].getElement('.remove');
				if(removeButton != null && image != null && title != null){
					image.set('html','');
					image.grab(swatchImg);
					title.set('html','<p>' + cookie.name + '</p>');
					removeButton.set('href',key);
					removeButton.addEvent('click', function(evt){
						evt.stop();
						saveSwatches.erase(this.get('href'));
						image.set('html','');
						title.set('html','<p>Empty</p>');
						addSwatches();
					});
				}
			}
			i++;
		});	
		
	});
	
	var compareLink = document.id('compareSamplesLink');
	if(compareLink != null){
		compareLink.addEvent('click', function(evt){
			evt.stop();
			kamModal.showMask();												
		});
	}
}

function galleryHandler(){	
	var galleryItems = document.getElements('.galleryItem');
	var kamModal = new kamModalHandler('popUp', true);
	
	kamModal.addEvent('maskVisible',function(evt){
		var popup = document.id('popUp');					  
		if(popup != null && popup != ''){

			var leftButton = document.id('scrollLeft');
			var rightButton = document.id('scrollRight');
			var closeButton = document.id('close');
			var scrollDiv = document.id('scrollerInner');
			var scrollOuterPos = document.id('scrollerOuter').getCoordinates();
			var thumbs = document.getElements('.thumb');
			var newWidth = 0;
			var currentMargin = 0;
			
			if(closeButton != null){
				closeButton.addEvent('click', function(evt){
					kamModal.hideMask();													
				});
			}
			
			//swap thumbs
			thumbs.each( function(thumb){
				newWidth += 90;
				var aLink = thumb.getElement('a');
				var popDescription = document.id('popUpDescription');
				var popImage = document.id('popUpImage').getElement('img');
				
				aLink.addEvent('click', function(evt){
					evt.stop();
					var id = this.get('id');
					var temp = new Array();
					temp = id.split('-');
					
					var description = document.id('hiddenDescription-'+temp[1]);
					var title = document.id('hiddenTitle-'+temp[1]);					
					
					if(description != null && title != null && popDescription != null && popImage != null){
						var innerTitle = title.get('html');
						var innerDescription = description.get('html');
						
						popDescription.getElement('h3').set('html','<strong>' + innerTitle + '</strong>');
						
						var descriptionInject = popDescription.getElement('.innerDescription');
						descriptionInject.set('html','<p>' + innerDescription + '</p>');

						popImage.set('src',this.get('href'));
					}
				});
			});
							
			scrollDiv.setStyle('width',newWidth +'px');
			var fx = new Fx.Morph(scrollDiv, {
				duration: 500,
				link: 'cancel',
				transition: "sine:out",
				onStart: function(){
					fxFlag = true;		
				},
				onComplete: function(){
					fxFlag = false;
				}
			});
		
			leftButton.addEvent('click', function(evt){
				evt.stop();			
				if(!fxFlag){
					currentMargin += 90;		
					if(currentMargin > 0 ) currentMargin = 0;
					evt.stop();
					fx.start({
						'marginLeft' : currentMargin
					});
				}
			});
			
			rightButton.addEvent('click', function(evt){
				if(!fxFlag){
					var scrollPos = scrollDiv.getCoordinates();
					if(scrollPos.right > scrollOuterPos.right){
						currentMargin -= 90;
						fx.start({
							'marginLeft' : currentMargin
						});
					}
				}
			});	
		}
	});
	
	galleryItems.each( function(galleryItem){
		var galleryLinks = galleryItem.getElements('a');
		galleryLinks.each( function(galleryLink){
			galleryLink.addEvent('click', function(evt){
				evt.stop();	
				kamModal.href = galleryLink.get('href');
				kamModal.showMask();
			});					
		});
	});
	
	var gallerySub = document.id('gallerySub');
	
	if(gallerySub != null){
		//sub nav galleries
		var subNav = document.id('subNav');
		if(subNav != null){
			var aLinks = subNav.getElements('a');
			aLinks.each( function(aLink){
				aLink.addEvent('click',function(evt){
					evt.stop();
					kamModal.href = aLink.get('href');
					kamModal.showMask();
				});
			});
		}
	}
}

function menuHandler(){
	var topNav = document.id('topNav');
	
	var lis = topNav.getElements('li');
	var topLis = new Array();
	
	lis.each( function(li){
		if(li.getParent('li') == null) topLis[topLis.length] = li;
	});
	
	for(var i = 0; i < topLis.length; i++){		
		if(topLis[i].hasClass('selected')){					
			if((i - 1) >= 0) topLis[i - 1].addClass('leftSelected');		
			if((i + 1) <= (topLis.length - 1)) topLis[i + 1].addClass('rightSelected');
		}				
	}
}

function displayDropDowns(currentDropDown){
	dropDowns.each( function(dropDown){
		if(dropDown == currentDropDown){
			if(dropDown.retrieve('state') == 'visible'){							
				dropDown.setStyle('display','none');
				dropDown.store('state','hidden');
			}else{
				dropDown.setStyle('display','block');
				dropDown.store('state','visible');	
			}
		}else if(dropDown.retrieve('state') == 'visible'){
			dropDown.setStyle('display','none');
			dropDown.store('state','hidden');
		}
	});
	
	if(mySamplesDropDown != null)	mySamplesDropDown.setStyle('display','none');
}

function handleDropDowns(){
	var dropDownContainers = document.getElements('.customDropDown');

	dropDownContainers.each( function(dropDownContainer){												 												 
		var selected = dropDownContainer.getElements('.selected');
		var dropDown = dropDownContainer.getElements('.dropDown')[0];	
		if(selected[0] != null){			
			var selectedLink = selected[0].getElements('a');
			if(selectedLink[0] != null){
				selectedLink = document.id(selectedLink[0]);
				selectedLink.set('href','#');
				selectedLink.addEvent('click', function(evt){																 	
					evt.stop();														
					displayDropDowns(dropDown);										
				});
			}			
			dropDown.addEvent('click', function(evt){
				evt.stop();
				displayDropDowns(dropDown);												
			});
			
			var dropDownElements =  dropDown.getElements('a');
			dropDownElements.each( function(dropDownElement){
				dropDownElement.addEvent('click', function(evt){
					
					var dropDownHtml = dropDownElement.get('html');
					var selectedHtml = selectedLink.get('html');
					
					selectedLink.set('html',dropDownHtml);
					dropDownElement.set('html',selectedHtml);
					
					var dropDownHref = dropDownElement.get('href');
					var selectedHref = selectedLink.get('href');
					
					selectedLink.set('href',dropDownHref);
					dropDownElement.set('href',selectedHref);					
				});
			});
		}
	});	
	
	//samples dropdowns
	var mySamplesLink = document.id('samplesDropDownLink');
	var visible = false;
	mySamplesDropDown = document.id('samplesDropDown');
	
	if(mySamplesLink != null && mySamplesDropDown != null){
		var linkCoords = mySamplesLink.getCoordinates();	
						
		mySamplesLink.addEvent('click', function(evt){
			evt.stop();
			
			if(visible == false){
				mySamplesDropDown.setStyle('display','block');
				mySamplesLink.addClass('opened');			
				visible = true;	
			}else{
				mySamplesDropDown.setStyle('display','none');
				mySamplesLink.removeClass('opened');
				visible = false;
			}
			
			var sampleSize = mySamplesDropDown.getSize();
			var newPositionX = (linkCoords.right - sampleSize.x) + 2;
			mySamplesDropDown.setPosition({x:newPositionX, y:linkCoords.bottom + 2}); 
			
			//add the swatches
			var mySwatches = mySamplesDropDown.getElements('.swatch');
			var i = 0;
			
			mySwatches.each( function(mySwatch){
				mySwatch.set('html','');								  
			});
			
			//add samples to the colA my samples
			saveSwatches.each( function(cookie){				 
				if( (mySwatches.length) > i){				
					var swatchImg = new Element('img', {
						'src' : cookie.image,
						'alt' : cookie.name,
						'title' : cookie.name
					});			
					mySwatches[i].grab(swatchImg);
				}
				i++;
			});					
			
		});
	}
}

function updateMySamplesLink(){
	var mySamplesLink = document.id('samplesDropDownLink');
	
	if(mySamplesLink != null)	mySamplesLink.set('html','MY SAMPLES (' + saveSwatches.getLength() + ')');		
}

function veneerSearchBarHandler(){
	var veneerSearchSubmit = document.id('searchSubmit');
	veneerSearchSubmit.addEvent('click', function(evt){
		if ( veneerSearchSubmit ){
			evt.stop();
			
			var uri = veneerSearchSubmit.get('href') + 'a/';
			var termSplit = new Array();
			var term;
			
			if ( (term = document.id('colourMenuSelected')) ) { if ( term.get('href') ) {
				if(term.get('href') !=  '#'){
					termSplit = term.get('href').toString().split('/');
					term = termSplit[termSplit.length - 2];
					uri += 'colour/'+term+'/'; 
				}
			} }
			
			if ( (term = document.id('grainMenuSelected')) ) { if ( term.get('href') ) {
				if(term.get('href') !=  '#'){
					termSplit = term.get('href').toString().split('/');
					term = termSplit[termSplit.length - 2];
					uri += 'grain/'+term+'/'; 
				}
			} }
			
			var termKeyword = null;
			if ( (term = document.id('speciesMenuSelected')) ) { if ( term.get('href') ) {
				if(term.get('href') !=  '#'){
					termSplit = term.get('href').toString().split('/');
					termKeyword = termSplit[termSplit.length - 2]; 
				}
			} }
			if ( termKeyword ){ uri += 'species/'+termKeyword+'/'; }
			
			if ( (term = document.id('tabuCodeMenuSelected')) ) { if ( term.get('href') ) {
				if(term.get('href') !=  '#'){
					termSplit = term.get('href').toString().split('/');
					term = termSplit[termSplit.length - 2];
					uri += 'tabuCode/'+term+'/'; 
				}
			} }
			
			var redirection = new URI(uri);
			redirection.go();
		}
	}.bind(veneerSearchSubmit));
}

function cookieHandler(){
	var results = document.id('results');
	addSwatches();
	if(results != null){
		
		//addSwatches();
		var resultItems = results.getElements('.resultItem');

		resultItems.each( function(resultItem){
			var addLink = resultItem.getElement('a.kamButton');
			
			removeAddButtons();
			
			addLink.addEvent('click', function(evt){
				evt.stop();
				
				//add cookie	
				if(saveSwatches.getLength() < 12){
					var hash = new Hash({
						image : resultItem.getElement('img').get('src'),
						name : resultItem.getElement('.swatchName').get('html')
					});
					saveSwatches.set(addLink.get('href'),hash);	
					addSwatches();
				}
				
				removeAddButtons();
			});
		});
	}
}

//Sets a link as "in my swatches"
function removeAddButtons(resultItem){
	var results = document.id('results');
	if(results != null){
		var resultItems = results.getElements('.resultItem');
		
		resultItems.each( function(resultItem){
			var addLink = resultItem.getElement('a.kamButton');
			var standardButton = resultItem.getElement('.standardButton');	
			var inSwatches = resultItem.getElement('.inSwatches');
			
			if(saveSwatches.get(addLink.get('href')) != null){			
				standardButton.setStyle('display','none');				
				inSwatches.setStyle('display','block');
			}else{
				standardButton.setStyle('display','block');				
				inSwatches.setStyle('display','none');
			}
		});
	}
}

function addSwatches(){
	var swatchesWrapper = document.id('mySwatches');
	if(swatchesWrapper != null){
		var mySwatches = swatchesWrapper.getElements('.swatch');				
		var i = 0;	
		
		mySwatches.each( function(mySwatch){
			mySwatch.set('html','');								  
		});
		
		//add samples to the colA my samples
		saveSwatches.each( function(cookie){				 
			if( (mySwatches.length) > i){				
				var swatchImg = new Element('img', {
					'src' : cookie.image,
					'alt' : cookie.name,
					'title' : cookie.name
				});			
				mySwatches[i].grab(swatchImg);
			}
			i++;
		});
		
		updateMySamplesLink();
	}
}
