window.addEvent("domready", function (){

	var rotateFunction = function(eImages){
		if(!this.curImage) this.curImage = 0;
		this.curImage += 1;
		if(this.curImage > eImages.length - 1) this.curImage = 0;
		$each(eImages, function(img, i){img.morph({'opacity': i == this.curImage ? 1 : 0})}.bind(this));
	};

	$$('.sideRotate').each(function(sR){
		rotateFunction.periodical(4 * 1000, sR, [sR.getElements('a')])
	});

	if($("featureBar")) {
		var obj = new Swiff(rooturl + 'webapp/templates/flash/feature.swf?a=2', {
		    id: 'featurer',
		    container: 'featureBar',
		    width: 875,
		    height: 226,
		    params: {
		        wmode: 'opaque',
		        bgcolor: '#fff'
		    }
		});
	}
	
	if($("mapper")) {
		Google.createMap('mapper', {'zoom': 12, 'controls':{'large':false,'small':true}} , function(){
			var marker = {
				'address':'S72 8PH',
				'options': {
					'center': true
				},
				'icon': {
					'top': 68,
					'left': 43,
					'shadow': {
						'src': rooturl + 'webapp/templates/images/google_shade.png',
						'width': 100,
						'height': 68
					},
					'image': {
						'src': rooturl + 'webapp/templates/images/google_pointer.png',
						'width': 87,
						'height': 68
					}
				}
			};
			
			Google.addMapMarker('mapper', marker);
		});

		$('frmSubmitDirections').addEvent('submit', function(e){
		
				e.preventDefault();
		
				var postcode = $('texboxDirections').value;
				Google.postcodeSearch(postcode, 'UK', function(result){
					Google.getDirections('mapper', $('googleDirections'), 
							postcode + '@' + result.y + ',' + result.x, 'TrayTech', 
							function(){
								$('googleDirections').empty();
							}, 
							function(){
							}, 3, {
								'lat':function(){return 53.59806992031049}, 
								'lng':function(){return -1.4169895648956299}
							}, true);
				});
		
				return false;
		
		});
	}
	
	if(window.ranges && window.screens_trays){
		if(!screens) {
			
			var hashIndex = null;
			if(location.hash)
				for(var r in window.ranges)
					for(var t in window.ranges[r]){
						if(window.ranges[r][t].tray_name && window.ranges[r][t].tray_name.toLowerCase() == location.hash.substring(1))
							hashIndex = window.ranges[r][t];
					}
					
			var index = 0;
			for(var r in window.ranges){
				
				switchRange.pass(window.ranges[r]);
					
				if(index == 0 && hashIndex == null)
					li.fireEvent('click', {});
				else if(hashIndex != null){
					for(var t in window.ranges[r]){
						if(window.ranges[r][t] == hashIndex){
							switchRange(window.ranges[r]);
							switchTray(hashIndex);
						}
					}
				}
				index++;
			}
		} else {
			var productHolder = $('productHolder');
			productHolder.empty();
			
			for(var i = 1; i < 34; i++){
				
				var productDiv = new Element('div', {
					'class': 'productBox',
					'styles': {
						'top': (i-1) % 2 == 0 ? 0 : 120,
						'left': Math.floor((i-1) / 2) * 150
					},
					'events': {
						'click': switchScreen.pass(i)
					}
				}).set('morph', {'link': 'cancel', 'onComplete': function(div){div.store('start', div.getStyle('left').toInt())}})
				  .store('start', Math.floor((i-1) / 2) * 150);
				
				new Element('img', {
					//'src': rooturl + 'webapp/templates/images/example_thumb.png' /*rooturl + 'webapp/data/screens/' + i + '/thumb.jpg*/
					'src': rooturl + 'webapp/data/screens/' + i + '/thumb.jpg',
					'alt': ''
				}).inject(productDiv);
				
				
				new Element('p', {'text': 'Option ' + i}).inject(productDiv);
				
				productDiv.inject(productHolder);
				
			}

			var hashIndex = null;
			var gotoNum = 1;
			
			if(location.hash){
				hashIndex = location.hash.substring(1).toInt();
				if(hashIndex > 0 && hashIndex < 34) gotoNum = hashIndex
			}
				
			switchScreen(gotoNum);
		}
		
		$('productLargeImage').addEvent('click', showLargeImage);
		
	}
	
});

function moveRelated(dir){

	var productHolder = $('compatible');
	var products = productHolder.getElements('div.compatibleProductBox');
	
	if(dir == 1 && products[0].retrieve('start') == 0) return false;
	if(dir == -1 && products.getLast().retrieve('start') == 191) return false;
	
	products.each(function(product){
		var newPos = product.retrieve('start') + (191 * dir);
		product.store('start', newPos);
		
		product.morph({'left': newPos});
	});
	
	return false;
}

function moveProducts(dir){

	var productHolder = $('productHolder');
	var products = productHolder.getElements('div.productBox');
	if(products.length<5)return false;
	if(dir == 1 && products[0].retrieve('start') == 0) return false;
	if(dir == -1 && products.getLast().retrieve('start') == 150) return false;
	
	products.each(function(product){
		var newPos = product.retrieve('start') + (150 * dir);
		product.store('start', newPos);
		
		product.morph({'left': newPos});
	});
	
	return false;
}

    function dumpProps(obj, parent) {
      for (var i in obj) {
      if (parent) { var msg = parent + "." + i + "\n" + obj[i]; } else { var msg = i + "\n" + obj[i]; }
      if (!confirm(msg)) { return; }
      // If this property (i) is an object, then recursively process the object
      if (typeof obj[i] == "object") {
      if (parent) { dumpProps(obj[i], parent + "." + i); } else { dumpProps(obj[i], i); }
      }
      }
      }

function switchRange(range){
	
	var productHolder = $('productHolder');
	productHolder.empty();
	
	var index = 0;
	for(var t in range){
		var tray = range[t];

		if(tray.length){
			//description
			$('desc').set('html',tray);
			continue;
		}
		
		var productDiv = new Element('div', {
			'id' : tray.tray_id,
			'events': {
				'click': switchTray.pass(tray)
			}
		});
					
		productDiv.inject(productHolder);

		if(index == 0)
			switchTray(tray);
		
		index++;
	}
}

function switchTray(tray){
	var size = tray.tray_size;
	var area = tray.tray_area;
	var step = tray.tray_step;
	
	$('trayTitle').set('text', tray.tray_name);

	var specDiv = $('productSpec');
	var sizeP = specDiv.getElement('p.size');
	var areaP = specDiv.getElement('p.area');
	var stepP = specDiv.getElement('p.step');

	sizeP.setStyle('display', size ? 'block' : 'none');
	areaP.setStyle('display', area ? 'block' : 'none');
	stepP.setStyle('display', step && step != 0 && step.length > 0 ? 'block' : 'none');

	sizeP.getElement('.specText').set('text', size + 'mm');
	areaP.getElement('.specText').set('text', area + 'mm');
	stepP.getElement('.specText').set('text', step + (step.indexOf('mm') == -1 ? 'mm' : ''));
	
	location.hash = '#' + tray.tray_name.toLowerCase();
	
	var productBoxes = $('productHolder').getElements('.productBox');
	var offset = 0;
	
	productBoxes.each(function(pb, i){
		if(pb.retrieve('tray') == tray){
			pb.addClass('selected');
			offset = pb.getCoordinates($('productHolder')).left
		}else
			pb.removeClass('selected');
	});
	
	if(offset >= 300){
		offset = Math.floor(offset / 150);
		for(var i = 0; i < offset; i++)
			moveProducts(-1);
	}

	$('productLargeImage').getElement('img').src = tray.tray_image + '/preview.jpg';
	
	var screens = screens_trays.filter(function(i,ind,arr){return i.tray_id == tray.tray_id});
	var divInject = $('compatible');
	divInject.getElements('div.compatibleProductBox').removeEvents().destroy();
	
	screens.each(function(screen, i){
		var cpb = new Element('div', {
			'class': 'compatibleProductBox',
		/*	'styles': {
				'top': 120 * (i % 3),
				'left': 191 * Math.floor(i / 3)
			},*/
			'events': {
				'click': function(e){
					e.stopPropagation();
					var imgSrc = $(e.target).getParent().getElement('img').src.replace('thumb', 'large');
					Milkbox.showThisImage(imgSrc, "Screen "+ screen.screen_id);
					//location = rooturl + 'shower-screens#' + screen.screen_id
				}
			}
		}).store('start', Math.floor(i / 3) * 191);

		new Element('img', {
	//		'src': rooturl + 'webapp/templates/images/example_thumb_compatible.png' /*rooturl + 'webapp/data/screens/' + screen.screen_id + '/thumb.jpg'*/,
			'src': rooturl + 'webapp/data/screens/' + screen.screen_id + '/thumb.jpg',
			'alt': ''
		}).inject(cpb);

		new Element('p', {
			'text': 'Screen ' + screen.screen_id
		}).inject(cpb);

		new Element('img', {
			'src': rooturl + 'webapp/templates/images/mag.png',
			'width': 12,
			'height': 12,
			'alt': '',
			'class': 'magnifier',
			'events': {
				'click': function(e){
					e.stopPropagation();
					var imgSrc = $(e.target).getParent().getElement('img').src.replace('thumb', 'large');
					Milkbox.showThisImage(imgSrc, 'Screen ' + screen.screen_id);
				}
			}
		}).inject(cpb);

		cpb.inject(divInject);
	});
	
	
}

function switchScreen(id){
		
	$('screenTitle').set('text', 'Option ' + id);

	var screens = screens_trays.filter(function(i,ind,arr){return i.screen_id == id});
	
	var productBoxes = $('productHolder').getElements('.productBox');
	productBoxes.each(function(pb, i){
		if(i + 1 == id)
			pb.addClass('selected');
		else
			pb.removeClass('selected');
	});
	
	var offset = productBoxes[id-1].getCoordinates($('productHolder')).left;
	if(offset >= 300){
		offset = Math.floor(offset / 150);
		for(var i = 0; i < offset; i++)
			moveProducts(-1);
	}
	
	var trays = [];
	for(var r in window.ranges){
		for(var t in window.ranges[r]){
			var found = false;
			if(found)
				trays.push(window.ranges[r][t]);
		}
	}
	
	var divInject = $('compatible');
	trays.each(function(tray, i){
		var cpb = new Element('div', {
			'class': 'compatibleProductBox',
			'styles': {
				'top': 120 * (i % 3),
				'left': 191 * Math.floor(i / 3)
			},
			'events': {
				'click': function(e){
					location = rooturl + 'shower-trays#' + tray.tray_name.toLowerCase();
				}
			}
		}).store('start', Math.floor(i / 3) * 191);
		
		new Asset.image(rooturl + 'webapp/data/trays/' + tray.tray_name.toLowerCase() + '/thumb.jpg', {
			'onload': function(i){
				i.addClass('main')
				i.inject(cpb);
			}
		});
		
		new Element('p', {
			'text': tray.tray_name
		}).inject(cpb);
		
		new Element('img', {
			'src': rooturl + 'webapp/templates/images/mag.png',
			'width': 12,
			'height': 12,
			'alt': '',
			'class': 'magnifier',
			'events': {
				'click': function(e){
					e.stopPropagation();
					var imgSrc = $(e.target).getParent().getElement('img.main').src.replace('thumb', 'large');
					Milkbox.showThisImage(imgSrc, tray.tray_name);
				}
			}
		}).inject(cpb);
		
		cpb.inject(divInject);
	});
	
	//$('productLargeImage').getElement('img').src = rooturl + 'webapp/templates/images/mainproduct_example.png' /*rooturl + 'webapp/data/screens/' + id + '/preview.jpg*/;
	$('productLargeImage').getElement('img').src = rooturl + 'webapp/data/screens/' + id + '/preview.jpg';
	
	
	if(myinit == 0) {
		myinit = 1;
	} else {
		document.location = "#screenTopper";
	}
}

var myinit = 0;

function showLargeImage(e){
	var target=$(e.target);
	if (target.getParent('#productLargeImage')) target=target.getParent('#productLargeImage').getElement('img');
	
	var imgSrc = target.src.replace('preview', 'large');
	Milkbox.showThisImage(imgSrc, '');
}

function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}


function trim(s) {
  return s.replace(/^\s+|\s+$/, '');
}


function validateContactFrm() {

	if ( $('name').value == 0) {
		alert('Please tell us your name');
		$('name').focus();
		return false;
	}		
	var stripped = $('telephone').value.replace(/[\(\)\.\-\ ]/g, '');    
	if ($('telephone').value.length < 1 ) {
		alert('Please tell us a contact number');
		$('telephone').focus();
		return false;
	} else if (isNaN(parseInt(stripped))) {
        alert('Please ensure the contact number contains only 0-9, characters.');
       	$('telephone').focus();
		return false;
	}	
	if ($('email').value.length < 1 ) {
		alert('Please tell us your email');
		$('email').focus();
		return false;
	}	
	if (echeck($('email').value) == false){
		$('email').focus();
		return false;
	}

	return true;
}// end function

function validateBrochureFrm() {

	if ( $('name').value == 0) {
		alert('Please tell us your name');
		$('name').focus();
		return false;
	}		
	var stripped = $('telephone').value.replace(/[\(\)\.\-\ ]/g, '');    
	if ($('telephone').value.length < 1 ) {
		alert('Please tell us a contact number');
		$('telephone').focus();
		return false;
	} else if (isNaN(parseInt(stripped))) {
        alert('Please ensure the contact number contains only 0-9, characters.');
       	$('telephone').focus();
		return false;
	}	
	if ( $('address1').value == 0) {
		alert('Please tell us the first line of your address');
		$('address1').focus();
		return false;
	}
	if ( $('postcode').value == 0) {
		alert('Please tell us your postcode');
		$('postcode').focus();
		return false;
	}

	return true;
}// end function


function echeck(str) {
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	if (str.indexOf(at)==-1){
	   alert('Please enter a valid email address');
	   return false;
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   alert('Please enter a valid email address');
	   return false;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    alert('Please enter a valid email address');
	    return false;
	}

	 if (str.indexOf(at,(lat+1))!=-1){
	    alert('Please enter a valid email address');
	    return false;
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	    alert('Please enter a valid email address');
	    return false;
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
	    alert('Please enter a valid email address');
	    return false;
	 }
	
	 if (str.indexOf(" ")!=-1){
	    alert('Please enter a valid email address');
	    return false;
	 }

	 return true;					
}










