var Do = (function($){
	var	Do = {},
		els = {
			'lamplights': '#actions .lamplight, #actions .lamptoplight',
			'postit': '#actions .postit_action',
			'ipad': '#actions .ipad',
			'ipadscreen': '#actions .ipadscreen',
			'ipadtext': '#actions .ipadtext',
			'ipad_actions': '#actions .ipad_action, #actions .ipadtext_action',
			'phone': '#actions .phone',
			'phonetext': '#actions .phonetext',
			'phone_actions': '#actions .phone_action, #actions .phonetext_action',
			'tapemeasure': '#actions .tapemeasure',
			'tapemeasuretext': '#actions .tapemeasuretext',
			'tape_box': '#actions .tapebox',
			'tape': '#actions .tape',
			'tapemeasure_actions': '#actions .tapemeasure_action, #actions .tapemeasuretext_action',
			'pantone': '#actions .pantone',
			'pantonetext': '#actions .pantonetext',
			'pantone_actions': '#actions .pantone_action, #actions .pantonetext_action',
			'coffee': '#actions .coffee',
			'pen': '#actions .pen'
		},
		stuff = {
			'lampstate': 'off'
		};

		Do.timer = Do.angle = Do.height = 0;
		Do.pantone_over = [
			'http://www.designoriginal.co.uk/images/public/cuttingmat/pantone_2.png',
			'http://www.designoriginal.co.uk/images/public/cuttingmat/pantone_3.png',
			'http://www.designoriginal.co.uk/images/public/cuttingmat/pantone_4.png'
		];
		Do.pantone_out = [
			'http://www.designoriginal.co.uk/images/public/cuttingmat/pantone_3.png',
			'http://www.designoriginal.co.uk/images/public/cuttingmat/pantone_2.png',
			'http://www.designoriginal.co.uk/images/public/cuttingmat/pantone_1.png'
		];

		Do.coffee_over = [
			'http://www.designoriginal.co.uk/images/public/cuttingmat/coffee_2.png',
			'http://www.designoriginal.co.uk/images/public/cuttingmat/coffee_3.png',
			'http://www.designoriginal.co.uk/images/public/cuttingmat/coffee_4.png'
		];
		Do.coffee_out = [
			'http://www.designoriginal.co.uk/images/public/cuttingmat/coffee_3.png',
			'http://www.designoriginal.co.uk/images/public/cuttingmat/coffee_2.png',
			'http://www.designoriginal.co.uk/images/public/cuttingmat/coffee_1.png'
		];

		Do.pen_over = [
			'http://www.designoriginal.co.uk/images/public/cuttingmat/pen_2.png',
			'http://www.designoriginal.co.uk/images/public/cuttingmat/pen_3.png',
			'http://www.designoriginal.co.uk/images/public/cuttingmat/pen_4.png'
		];
		Do.pen_out = [
			'http://www.designoriginal.co.uk/images/public/cuttingmat/pen_3.png',
			'http://www.designoriginal.co.uk/images/public/cuttingmat/pen_2.png',
			'http://www.designoriginal.co.uk/images/public/cuttingmat/pen_1.png'
		];

		Do.init = function()
		{
		/*
			if($('#content .simple').length)
			{
				Do.heights();
			}
		*/

			if($('#goomap').length)
			{
				var gooint = setInterval(function(){
					if(window.google)
					{
						Do.locate();
						clearInterval(gooint);
					}
				}, 100);
			}

			if($('div.wetweet div.left div').length)
			{
				Do.tweets();
			}

			if($('#actions').length)
			{
				for(idx in els)
				{
					els[idx] = $(els[idx]);
				}

				Do.lamp();
				Do.iPad();
				Do.phone();
				Do.tapemeasure();
				Do.pantone();
				Do.coffee();
				Do.pen();
			}

			if($('#image_feature').length && $('#image_feature img').length > 1)
			{
				setInterval("Do.slideshow()", 4000);
			}

			/*
			// Nice fading in and out effect for the site
			$('body .page').fadeIn(300, function(){
				Do.heights();
			});

			$('a[href]:not(#player)').click(function(ev){
				ev.preventDefault();
				$('body .page').fadeOut(300);
				window.location = $(this).attr('href');
			});
			*/
		};

		Do.locate = function()
		{
			var opts = {
				center: [52.211196, -0.352162],
				zoom: 12
			};
			var mark = [{options:{
				position: [52.191417, -0.351133],
				title: 'Design Original',
				info: '#address',
				windowopen: true
			}}];
			$.goomaps.defaults.maxZoom = 13;
			$.goomaps.defaults.minZoom = 8;

			$('#goomap').goomaps(opts).goomaps('setmarkers', mark);
		};

		Do.heights = function()
		{
			$('#content .simple').each(function(){
				if($(this).height() > Do.height) Do.height = $(this).height()
			});
			$('#content .simple').height(Do.height);
		};

		Do.tweets = function()
		{
			$("div.wetweet div.left div").tweet({
				count: 2,
				avatar_size: 0,
				username: "Dotweets",
				loading_text: "searching twitter...",
				filter: function(t){ return ! /^@\w+/.test(t["tweet_raw_text"]); }
			});

			if($('#content .simple').length)
			{
				Do.heights();
			}
		}

		Do.lamp = function()
		{
			els.postit.bind('click', function(ev){
				ev.preventDefault();
				if(stuff.lampstate === 'off')
				{
					if($.browser.msie && $.browser.version == '8.0')
					{
						els.lamplights.clearQueue().show(0, 'linear', function(){
							stuff.lampstate = 'on';
						});
					}
					else{
						els.lamplights.css('opacity', 0.7);
						els.lamplights.fadeIn(5, function(){
							stuff.lampstate = 'on';
						}).delay(5).fadeOut(5).delay(10).fadeIn(20).delay(10).fadeOut(5).delay(50).fadeIn(10, function(){
							els.lamplights.animate({opacity: 1}, 1500);
						});
					}
				}
				else if(stuff.lampstate === 'on')
				{
					els.lamplights.clearQueue().hide(0, 'linear', function(){
						stuff.lampstate = 'off';
					});
				}
			});
		};

		Do.iPad = function()
		{
			els.ipad_actions.hoverIntent(function(ev){
				els.ipadscreen.stop(true,true).fadeIn(500);
				els.ipad_actions.find('img.hidden').stop(true,true).fadeIn(100);
			}, function(ev){
				els.ipadscreen.stop(true,true).fadeOut(500);
				els.ipad_actions.find('img.hidden').stop(true,true).fadeOut(100);
			});
		};

		Do.phone = function()
		{
			els.phone_actions.rotate({
				bind: {
					mouseover: function(ev){
						Do.jiggle(els.phone, 0, -20, true);
						els.phone_actions.find('img.hidden').stop(true,true).fadeIn(100);
					},
					mouseout: function(ev){
						Do.jiggle(els.phone, Do.angle, 0, false);
						els.phone_actions.find('img.hidden').stop(true,true).fadeOut(100);
					}
				}
			});
		};

		Do.jiggle = function(img, from, to, recurse)
		{
			img.rotate({
				angle: from,
				duration: 100,
				animateTo: to,
				callback: function()
				{
					if(recurse){
						if(to == -20){
							Do.angle = 20;
							Do.timer = setTimeout(Do.jiggle(img, to, 20, true),0);
						}
						else{
							Do.angle = -20;
							Do.timer = setTimeout(Do.jiggle(img, 20, -20, true),0);
						}
					}
					else{
						clearTimeout(Do.timer);
						Do.angle = Do.timer = 0;
					}
				}
			});
		};

		Do.tapemeasure = function()
		{
			els.tapemeasure_actions.hoverIntent(function(ev){
				els.tape.stop(true,true).animate({
					top: -18,
					left: 121
				},500);
				els.tapemeasure_actions.find('img.hidden').stop(true,true).fadeIn(100);
			}, function(ev){
				els.tape.stop(true,true).animate({
					top: 0,
					left: 0
				},500);
				els.tapemeasure_actions.find('img.hidden').stop(true,true).fadeOut(100);
			});
		};

		Do.pantone = function()
		{
			els.pantone_actions.hoverIntent(function(){
				Do.dotimer(els.pantone, Do.pantone_over, 50, Do.pantone_out[2]);
				els.pantone_actions.find('img.hidden').stop(true,true).fadeIn(100);
			}, function(){
				Do.dotimer(els.pantone, Do.pantone_out, 50, Do.pantone_out[2]);
				els.pantone_actions.find('img.hidden').stop(true,true).fadeOut(100);
			});
		};

		Do.coffee = function()
		{
			els.coffee.hoverIntent(function(){
				Do.dotimer(els.coffee, Do.coffee_over, 50, Do.coffee_out[2]);
			}, function(){
				Do.dotimer(els.coffee, Do.coffee_out, 50, Do.coffee_out[2]);
			});
		};

		Do.pen = function()
		{
			els.pen.hoverIntent(function(){
				Do.dotimer(els.pen,Do.pen_over, 50, Do.pen_out[2]);
			}, function(){
				Do.dotimer(els.pen, Do.pen_out, 50, Do.pen_out[2]);
			});
		};

		Do.dotimer = function(el, arr, dur, fallback)
		{
			var	idx = 0;
			clearInterval(Do.timer);
			Do.timer = idx = 0;

		//	if($(el).attr('src') != fallback) $(el).attr('src', fallback);

			Do.timer = setInterval(function(){
				$(el).attr('src', arr[idx]);
				if(idx == arr.length - 1){
					clearInterval(Do.timer);
					idx = 0;
				}
				else{
					idx ++;
				}
			}, dur);
		};

		Do.slideshow = function()
		{
			var active = $('#image_feature img.active');

			if ( active.length == 0 ) active = $('#image_feature img:last');

			var next =  active.next().length ? active.next() : $('#image_feature img:first');

			active.addClass('last-active');

			next.css({opacity: 0.0})
				.addClass('active')
				.animate({opacity: 1.0}, 1000, function() {
					active.removeClass('active last-active');
				});
		};

	return Do;
})(jQuery);

(function($) {
	var cache = [];
	// Arguments are image paths relative to the current page.
	$.preLoadImages = function() {
		var args_len = arguments.length;
		for (var i = args_len; i--;) {
			var cacheImage = document.createElement('img');
			cacheImage.src = arguments[i];
			cache.push(cacheImage);
		}
	}
})(jQuery)

$(document).ready(function(){

	$.preLoadImages(
		'http://www.designoriginal.co.uk/images/public/cuttingmat/pantone_2.png',
		'http://www.designoriginal.co.uk/images/public/cuttingmat/pantone_3.png',
		'http://www.designoriginal.co.uk/images/public/cuttingmat/pantone_4.png',
		'http://www.designoriginal.co.uk/images/public/cuttingmat/pantone_3.png',
		'http://www.designoriginal.co.uk/images/public/cuttingmat/pantone_2.png',
		'http://www.designoriginal.co.uk/images/public/cuttingmat/pantone_1.png',
		'http://www.designoriginal.co.uk/images/public/cuttingmat/coffee_2.png',
		'http://www.designoriginal.co.uk/images/public/cuttingmat/coffee_3.png',
		'http://www.designoriginal.co.uk/images/public/cuttingmat/coffee_4.png',
		'http://www.designoriginal.co.uk/images/public/cuttingmat/coffee_3.png',
		'http://www.designoriginal.co.uk/images/public/cuttingmat/coffee_2.png',
		'http://www.designoriginal.co.uk/images/public/cuttingmat/coffee_1.png',
		'http://www.designoriginal.co.uk/images/public/cuttingmat/pen_2.png',
		'http://www.designoriginal.co.uk/images/public/cuttingmat/pen_3.png',
		'http://www.designoriginal.co.uk/images/public/cuttingmat/pen_4.png',
		'http://www.designoriginal.co.uk/images/public/cuttingmat/pen_3.png',
		'http://www.designoriginal.co.uk/images/public/cuttingmat/pen_2.png',
		'http://www.designoriginal.co.uk/images/public/cuttingmat/pen_1.png'
	);
	Do.init();

});

