/**
 * The custom JavaScript used for the added functionality.
 *
 * @author Dan Hensby <dan@betterbrief.co.uk>
 * @author Josh Holloway <josh@betterbrief.co.uk>
 * @version 1.1
 * @copyright 2010 Better Brief LLP
 * 
 */

//Load jQuery
google.load("jquery", "1.4");

// effectively 'on document ready'
google.setOnLoadCallback(function() {
	
	(function($) {
		
		//search text
		var $searchBox = $('#SearchForm_SearchForm_Search');
		if (!$searchBox.val()) {
			$searchBox.val('Search');
		}
		$searchBox.focus(function() {
			if ($searchBox.val() == 'Search') {
				$searchBox.val('');
			}
		}).blur(function() {
			if (!$searchBox.val()) {
				$searchBox.val('Search');
			}
		}).closest('form').submit(function() {
			if ($searchBox.val() == 'Search') {
				return false;
			}
		});
		
		//browse dropdowns
		$('select.jsselect').change(function(){
			var $this = $(this);
			if ($this.val() != 0) {
				window.location = $this.val();
			}
		});
		
		//tabs
		var $tabs = $('ul.tabs');
		if ($tabs.length) {
			$.getScript('/mysite/javascript/jquery.tools.min.js',function() {
				$tabs.tabs("div.panes > div");
			});
		}
		
		//carosel
		var $slider = $('div.featuredProducts');
		if ($slider.length) {
			$.getScript('/mysite/javascript/jquery.tools.min.js',function() {
				$slider.before('<a href="#" class="prev browse left"></a>').after('<a href="#" class="next browse right"></a>').scrollable();
			});
		}
		
		//zoomer
		var $zoomArea = $('#ZoomArea');
		if ($zoomArea.length) {
			var $ReferenceName = $('#ReferenceName');
			var zoomDim = $zoomArea.width();
			$zoomImage = $zoomArea.children('img');
			/*$.getScript('/mysite/javascript/ddpowerzoomer.js',function() {
				$zoomImage.addpowerzoom({magnifiersize:[160, 160]});
			});*/
			
			//image gallery
			var $images = $('div.moreImages a,div.referencesImages a');
			if ($images.length) {
				$images.click(function() {
					var $this = $(this);
					if ($this.attr('href') != $zoomImage.attr('src').replace('http://' + document.domain + '/','')){
						var caption = $this.children('img').attr('alt');
						$ReferenceName.fadeOut(null,function() {
							$ReferenceName.text(caption).fadeIn();
						});
						$zoomImage.fadeOut(null,function() {
							if (!$this.data('image')) {
								var img = new Image();
								img.src = $this.attr('href');
								$img = $(img);
								$img.load(function() {
									if (img.width >= img.height) {
										var ratio = img.height / img.width;
										var newWidth = zoomDim;
										var newHeight = ratio * zoomDim;
									}
									else {
										var ratio = img.width / img.height;
										var newHeight = zoomDim;
										var newWidth = ratio * zoomDim;
									}
									$zoomImage.attr({
										src: img.src,
										height: newHeight,
										width: newWidth
									}).fadeIn();
								});
								$this.data('image',$img);
							}
							else {
								$this.data('image').load();
							}
						});
					}
					return false;
				});
			}
			
		}
		
		if ($('#StockistHolder').length) {
			
			var $actionButton = $('#Form_Form_action_doFiltering');
			var $filterDropdown = $('#Form_Form_country');
			var $form = $('#Form_Form');
			var $Stockists = $('#Stockists');
			$actionButton.hide();
			$filterDropdown.change(function() {
				$.ajax({
					data: $form.serialize(),
					error: function(XMLHttpRequest, textStatus, errorThrown) {
					},
					success: function(data) {
						$Stockists.html(data);
						$tabs = $('ul.tabs');
						$.getScript('/mysite/javascript/jquery.tools.min.js',function() {
							$tabs.tabs("div.panes > div");
						});
					},
					type: $form.attr('method'),
					url: $form.attr('action') + '?ajax'
				});
			});
			
			var $overlayButtonHolder = $('#OverlayClick');
			if ($overlayButtonHolder.length) {
				var $btns = $('a',$overlayButtonHolder);
				if ($btns.length) {
					$.getScript('/mysite/javascript/jquery.tools.min.js',function() {
						$btns.overlay({
							
							onBeforeLoad: function() {
								
								// grab wrapper element inside content
								this.getOverlay().addClass('contract');
								$('#overlay iframe').show();
								var $overlay = $('<div id="BackgroundOverlay" style="display:none;background:black;height:'+$(document).height()+'px;width:100%;position:absolute;top:0;left:0;z-index:9001"></div>').css('opacity', '0.6');
								$overlay.bind('click.close', function(ev) {
									if(ev.target === this) {
										$('#overlay a.close').trigger('click');
									}
								});
								$(document.body).prepend($overlay);
								$overlay.fadeIn();
								$(window).bind('resize.overlay', function() { $overlay.height($(this).height()); });
							},
							onClose: function() {
								this.getOverlay().removeClass('contract');
								$('#overlay iframe').hide();
								$('#BackgroundOverlay').fadeOut(function() {
									$(this).remove();
								});
							}
						});
					});
				}
			}
			
		}
		
		var $subscribe = $('#Subscribe');
		if ($subscribe.length) {
			$.getScript('/mysite/javascript/jquery.tools.min.js',function() {
				$subscribe.overlay({
					
					onBeforeLoad: function() {
						
						// grab wrapper element inside content
						var wrap = this.getOverlay().addClass('subscribe').find(".wrap");
						
						// load the page specified in the trigger
						wrap.load(this.getTrigger().attr("href"));
						var $overlay = $('<div id="BackgroundOverlay" style="display:none;background:black;height:'+$(document).height()+'px;width:100%;position:absolute;top:0;left:0;z-index:9001"></div>').css('opacity', '0.6');
						$overlay.bind('click.close', function(ev) {
							if(ev.target === this) {
								$('#SubFrame a.close').trigger('click');
							}
						});
						$(document.body).prepend($overlay);
						$overlay.fadeIn();
						$(window).bind('resize.overlay', function() { $overlay.height($(this).height()); });
						
					},
					onClose: function() {
						this.getOverlay().removeClass('subscribe')
						$('#BackgroundOverlay').fadeOut(function() {
							$(this).remove();
						});
					}
				});
			});
		}
		
		var $callback = $('#callback');
		if ($callback.length) {
			$.getScript('/mysite/javascript/jquery.tools.min.js',function() {
				$callback.overlay({
					
					onBeforeLoad: function() {
						this.getOverlay().addClass('callback');
						
						// grab wrapper element inside content
						/*var wrap = this.getOverlay().find(".wrap");
						
						// load the page specified in the trigger
						wrap.load(this.getTrigger().attr("href"));*/
						var $overlay = $('<div id="BackgroundOverlay" style="display:none;background:black;height:'+$(document).height()+'px;width:100%;position:absolute;top:0;left:0;z-index:9001"></div>').css('opacity', '0.6');
						$overlay.bind('click.close', function(ev) {
							if(ev.target === this) {
								$('#SubFrame a.close').trigger('click');
							}
						});
						$(document.body).prepend($overlay);
						$overlay.fadeIn();
						$(window).bind('resize.overlay', function() { $overlay.height($(this).height()); });
					},
					
					onLoad: function() {
						var $form = $('#Form_Form');
						$form.submit(function() {
							if (!$form.hasClass('sending')){
								$.ajax({
									beforeSend: function() {
										$form.addClass('sending');
										$form.fadeOut();
									},
									cache: false,
									data: $form.serialize(),
									dataType: 'text',
									error: function(request,textStatus,error) {
										$form.parent().append('<h2 stlye="display:none;">Sorry, there was an error.</h2>').children('h2').fadeIn();
									},
									success: function(data,textStatus,request) {
										$form.parent().append('<h2 stlye="display:none;">' + data + '</h2>').children('h2').fadeIn();
									},
									type: $form.attr('method'),
									url: $form.attr('action')
								});
							}
							return false;
						});
					},
					onClose: function() {
						this.getOverlay().removeClass('callback');
						$callback.trigger('onClose');
						//$('h2',$form).html('You have already submitted a request');
						$('#BackgroundOverlay').fadeOut(function() {
							$(this).remove();
						});
					}
				});
			});
			
			var $buynow = $('div.buyNowiFrame a');
			if ($buynow.length) {
				$.getScript('/mysite/javascript/jquery.tools.min.js',function() {
					$buynow.overlay({
						onBeforeLoad: function() {
							this.getOverlay().addClass('buyNow');
							// Trigger original beforeLoad and then extend it below:
							$buynow.trigger('onBeforeLoad');
							$($buynow.attr('rel') + ' iframe').show();
							var $overlay = $('<div id="BackgroundOverlay" style="display:none;background:black;height:'+$(document).height()+'px;width:100%;position:absolute;top:0;left:0;z-index:9001"></div>').css('opacity', '0.6');
							$overlay.bind('click.close', function(ev) {
								if(ev.target === this) {
									$('a.close').trigger('click');
								}
							});
							$(document.body).prepend($overlay);
							$overlay.fadeIn();
							$(window).bind('resize.overlay', function() { $overlay.height($(this).height()); });
						},
						onClose: function() {
							this.getOverlay().removeClass('buyNow');
							$buynow.trigger('onClose');
							$($buynow.attr('rel') + ' iframe').hide();
							$('#BackgroundOverlay').fadeOut(function() {
								$(this).remove();
							});
						}
					});
				});
			}
		}
		
	})(jQuery);
	
});

