var isCtrl = false;

$().ready(function()
{
	// attach our link tracking code to any and all tracked links
	$('a.trackevent').click(function()
	{
		var op = $(this);
		var action = op.attr('title');
		var label = op.attr('href').split('blubathworks.com')[1];
		if(!label)
		{
			label = op.attr('href');
		}
		pageTracker._trackEvent('Tracked download', action, label);
	});


	var submenu;

	// initialise the hopscotch object
	blubathobj = new Blubath();
	
	// initialise the submenu
//	submenu = blubathobj.getObject('Submenu');
	
	
	// enlargement images
	$('a.img-enlarge').each(function()
	{
		var smallimg = $('img',this);
		smallimg.addClass('small');
		var largeimg = $('<img class="large" src="'+$(this).attr('href')+'" />');
		largeimg.css({display:'none'});
		largeimg.appendTo($(this));
		$(this).next('.img-enlarge-down').addClass('img-enlarge-open');
		
		$('<span class="plus">&nbsp;</span>').appendTo($(this));
	});
	$('a.img-enlarge').toggle(function()
	{
		var op = $(this);
		var smallimg = $('img.small',this);
		var largeimg = $('img.large',this);
		var w = smallimg.width();
		var h = smallimg.height();
		smallimg.css('display','none');
		largeimg.css('display','block');
		var new_w = largeimg.width();
		var new_h = largeimg.height();
		
		$(this).next('.img-enlarge-down').addClass('img-enlarge-opened');
		
		largeimg.css({width:w,height:h});
		
		op.css({zIndex:'9998'});
		$('span.plus',op).addClass('close');
		largeimg.animate({width:new_w,height:new_h},{duration: 500,step: function() { $(window).trigger('resize'); }});
		
		return false;
	}, function()
	{
		var op = $(this);
		var smallimg = $('img.small',this);
		var largeimg = $('img.large',this);
		var new_w = smallimg.width();
		var new_h = smallimg.height();
		var w = largeimg.width();
		var h = largeimg.height();
		
		largeimg.css({width:w,height:h});
		$('span.plus',op).removeClass('close');
		
		largeimg.animate({width:new_w,height:new_h},{duration: 500, step: function() { $(window).trigger('resize'); }, complete: function()
		{
			op.css({zIndex:'1'});
			smallimg.css('display','block');
			largeimg.css({display:'none',width:'auto',height:'auto'});
		
			op.next('.img-enlarge-down').removeClass('img-enlarge-opened');
		}});
		
		return false;
	});
	
	
	// product carousel
	$(function()
	{
		$("ul.product-carousel").each(function()
		{
			if($('li',this).length > 4)
			{
				var prev = $('<a class="prev controls" href="javascript: void(0)">prev</a>');
				var next = $('<a class="next controls" href="javascript: void(0)">next</a>');
				var op = $(this);
				op.before(prev);
				op.after(next);
				op.carouFredSel( { next: next,  prev: prev, visibleItems: 4 });
			}
		});
	});
	
	// add any collapser elements
	var collapser = $('.collapser');
	collapser.css('overflow','hidden');
	var fullheight = collapser.height();
	collapser.height($(collapser.children()[0]).height()+15);
	var opener = $('<a href="javascript:void(0)" class="collapser_control">Continue Reading</a>');
	opener.toggle(function()
	{
		var op = $(this);
		op.parent('.collapser').animate({height:fullheight},{duration: 'slow', step: function() { $(window).trigger('resize'); }});
		op.toggleClass('open');
		op.html('collapse');
	},
	function()
	{
		var op = $(this);
		op.parent('.collapser').animate({height:$(collapser.children()[0]).height()+15},{duration: 'slow', step: function() { $(window).trigger('resize'); }});
		op.toggleClass('open');
		op.html('Continue Reading');
	});
	collapser.append(opener);
	
	// homepage galleries
	$('ul.hp-gallery').SaltGallery({
				speed: 2000,
				autorun: true,
				timeout: 3000});
	
	// Salt P Table stuff
	$('table.contactlist').SaltPTable({hasHeaderRow:true});
	
	// search results paging
	 $("ul.searchresults").quickPager({pageSize:5});
	 
	 $('div.imagegrid div.image').hover(function()
	 {
	 	var op = $('div.info',this);
	 	op.animate({bottom:0},{easing: 'easeInOutCirc'});
	 },
	 function()
	 {
	 	var op = $('div.info',this);
	 	var offsetheight = op.height() - $('h3',op).outerHeight(true);
	 	op.animate({bottom:-offsetheight},{easing: 'easeInOutCirc'});
	 });
	 $('div.imagegrid div.image').click(function()
	 {
	 	window.location.replace($('>a',this).attr('href'));
//		$('>a',this).trigger('click');
	 	return false;
	 });
	 
	 $('div.imagegrid div.image').each(function()
	 {
	 	var op = $('div.info',this);
	 	var offsetheight = op.height() - $('h3',op).outerHeight(true);
	 	op.css({bottom:-offsetheight});
	 });
	 
	 
	 
				
	// document height hack
	$('div.webfooter').removeClass('sansJS');
	$(window).resize(function()
	{
		var columns = $('div.grid div.column:not(.static)');
		columns.css({minHeight:'1px'});
		$('div.container').height('auto');
		var realheight = $('div.container').height();
		var tarheight = $(window).height();
//		$('div.grid div.column').height(200);
//		$('div.grid div.column').css({minHeight: '0px'});
		if(tarheight-40 > realheight)
		{
			realheight = $(window).height();
			$('div.container').height(realheight);
			realheight = realheight - $('div.grid').offset().top - 40;
			columns.css({minHeight: realheight+'px'});
		} else
		{
			var topheight = 0;
			columns.each(function()
			{
				var colheight = $(this).height();
				if(colheight > topheight)
				{
					topheight = colheight;
				}
			});
			columns.css({minHeight: topheight+'px'});
		}
		
	});
//	$('div.pusher').remove();
	$('div.pusher').css({height:'5px'});
	$(window).trigger('resize');
	
    $("div.form form").validate();
});

// set up the object containers - essentially this file should provide an interface for all of the javascript objects we intend to use or develop
function Blubath()
{
	this.objects = {};
}
$pr = Blubath.prototype;
$pr.getObject = function(className)
{
	var obj;

	if(this.objects[className])
	{
		obj = this.objects[className];
	} else if(eval("typeof "+className+" == 'function'") && eval(className+".isBlubath"))
	{
		eval('obj = new '+className);
		this.objects[className] = obj;
	} else
	{
		obj = false;
	}
	
	return obj;
}

delete $pr;


// jquery plugins
;(function(){var $$;$$=jQuery.fn.flash=function(htmlOptions,pluginOptions,replace,update){var block=replace||$$.replace;pluginOptions=$$.copy($$.pluginOptions,pluginOptions);if(!$$.hasFlash(pluginOptions.version)){if(pluginOptions.expressInstall&&$$.hasFlash(6,0,65)){var expressInstallOptions={flashvars:{MMredirectURL:location,MMplayerType:'PlugIn',MMdoctitle:jQuery('title').text()}}}else if(pluginOptions.update){block=update||$$.update}else{return this}}htmlOptions=$$.copy($$.htmlOptions,expressInstallOptions,htmlOptions);return this.each(function(){block.call(this,$$.copy(htmlOptions))})};$$.copy=function(){var options={},flashvars={};for(var i=0;i<arguments.length;i++){var arg=arguments[i];if(arg==undefined)continue;jQuery.extend(options,arg);if(arg.flashvars==undefined)continue;jQuery.extend(flashvars,arg.flashvars)}options.flashvars=flashvars;return options};$$.hasFlash=function(){if(/hasFlash\=true/.test(location))return true;if(/hasFlash\=false/.test(location))return false;var pv=$$.hasFlash.playerVersion().match(/\d+/g);var rv=String([arguments[0],arguments[1],arguments[2]]).match(/\d+/g)||String($$.pluginOptions.version).match(/\d+/g);for(var i=0;i<3;i++){pv[i]=parseInt(pv[i]||0);rv[i]=parseInt(rv[i]||0);if(pv[i]<rv[i])return false;if(pv[i]>rv[i])return true}return true};$$.hasFlash.playerVersion=function(){try{try{var axo=new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6');try{axo.AllowScriptAccess='always'}catch(e){return'6,0,0'}}catch(e){}return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g,',').match(/^,?(.+),?$/)[1]}catch(e){try{if(navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){return(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g,",").match(/^,?(.+),?$/)[1]}}catch(e){}}return'0,0,0'};$$.htmlOptions={height:240,flashvars:{},pluginspage:'http://www.adobe.com/go/getflashplayer',src:'#',type:'application/x-shockwave-flash',width:320};$$.pluginOptions={expressInstall:false,update:true,version:'6.0.65'};$$.replace=function(htmlOptions){this.innerHTML='<div class="alt">'+this.innerHTML+'</div>';jQuery(this).addClass('flash-replaced').prepend($$.transform(htmlOptions))};$$.update=function(htmlOptions){var url=String(location).split('?');url.splice(1,0,'?hasFlash=true&');url=url.join('');var msg='<p>This content requires the Flash Player. <a href="http://www.adobe.com/go/getflashplayer">Download Flash Player</a>. Already have Flash Player? <a href="'+url+'">Click here.</a></p>';this.innerHTML='<span class="alt">'+this.innerHTML+'</span>';jQuery(this).addClass('flash-update').prepend(msg)};function toAttributeString(){var s='';for(var key in this)if(typeof this[key]!='function')s+=key+'="'+this[key]+'" ';return s};function toFlashvarsString(){var s='';for(var key in this)if(typeof this[key]!='function')s+=key+'='+encodeURIComponent(this[key])+'&';return s.replace(/&$/,'')};$$.transform=function(htmlOptions){htmlOptions.toString=toAttributeString;if(htmlOptions.flashvars)htmlOptions.flashvars.toString=toFlashvarsString;return'<embed '+String(htmlOptions)+'/>'};if(window.attachEvent){window.attachEvent("onbeforeunload",function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){}})}})();
jQuery.extend( jQuery.easing,
{
	easeInQuad: function (x, t, b, c, d) {
		return c*(t/=d)*t + b;
	},
	easeOutQuad: function (x, t, b, c, d) {
		return -c *(t/=d)*(t-2) + b;
	},
	easeInOutQuad: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t + b;
		return -c/2 * ((--t)*(t-2) - 1) + b;
	},
	easeInCubic: function (x, t, b, c, d) {
		return c*(t/=d)*t*t + b;
	},
	easeOutCubic: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t + 1) + b;
	},
	easeInOutCubic: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t + b;
		return c/2*((t-=2)*t*t + 2) + b;
	},
	easeInQuart: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t + b;
	},
	easeOutQuart: function (x, t, b, c, d) {
		return -c * ((t=t/d-1)*t*t*t - 1) + b;
	},
	easeInOutQuart: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
		return -c/2 * ((t-=2)*t*t*t - 2) + b;
	},
	easeInQuint: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t*t + b;
	},
	easeOutQuint: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t*t*t + 1) + b;
	},
	easeInOutQuint: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
		return c/2*((t-=2)*t*t*t*t + 2) + b;
	},
	easeInSine: function (x, t, b, c, d) {
		return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
	},
	easeOutSine: function (x, t, b, c, d) {
		return c * Math.sin(t/d * (Math.PI/2)) + b;
	},
	easeInOutSine: function (x, t, b, c, d) {
		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
	},
	easeInExpo: function (x, t, b, c, d) {
		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
	},
	easeOutExpo: function (x, t, b, c, d) {
		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
	},
	easeInOutExpo: function (x, t, b, c, d) {
		if (t==0) return b;
		if (t==d) return b+c;
		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
	},
	easeInCirc: function (x, t, b, c, d) {
		return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
	},
	easeOutCirc: function (x, t, b, c, d) {
		return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
	},
	easeInOutCirc: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
		return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
	}
});