$(document).ready(function() {
	
	/***************************************************************/
	// Masthead
	/***************************************************************/
	var $backgrounds = new Array('/assets/images/backgrounds/universal-pictures-ireland.jpg','/assets/images/backgrounds/sailor-jerry.jpg','/assets/images/backgrounds/kitchen-cookware.jpg');
	var $links = new Array('http://www.safehousemovie.ie/',false,'http://www.kitchencookware.ie/');
	var $currentIndex = 0;
	var $interval = 8000;
	$('nav ul li:eq('+$currentIndex+') img').attr('src','/assets/images/buttons/carousel-active.png');
	
	$('nav ul li').click(function() {
		clearTimeout($timeout);
		var $thisIndex=$('nav').find("li").index(this);
		jQuery.loadIndex($thisIndex);
		return false;
	});
	
	function nextIndex() {
		$newIndex = $currentIndex+1;
		if ($newIndex == $backgrounds.length) {
			$newIndex = 0;
		} else {
			jQuery.preLoadImages($backgrounds[$newIndex+1]);
		}
		jQuery.loadIndex($newIndex);
		$timeout = setTimeout(nextIndex,$interval);
	}
	$timeout = setTimeout(nextIndex,$interval);
	
	$.loadIndex = function($index) {
		if ($currentIndex != $index) {
			$('#masthead').css('background-image','url("'+$backgrounds[$index]+'")').hide().fadeIn();
			$('nav ul li img').attr('src','/assets/images/buttons/carousel.png');
			$('nav ul li:eq('+$index+') img').attr('src','/assets/images/buttons/carousel-active.png');
			$currentIndex = $index;
		}
	}
	
	$('#masthead a').click(function() {
		if ($links[$currentIndex]) {
			window.open($links[$currentIndex]);
		}
		
		return false;
	});
	
	/***************************************************************/
	// Images to preload
	/***************************************************************/
	jQuery.preLoadImages('/assets/images/connect-plinth.png',$backgrounds[0],$backgrounds[1],'/assets/images/buttons/carousel-active.png');
	
	/***************************************************************/
	// Connect
	/***************************************************************/
	$('header').prepend('<div id="hotspot"></div>');
	
	$('header ol li.connect a').mouseover(function() {
		$('header aside').fadeIn();
	});
	
	$('header #hotspot').mouseleave(function() {
		$('header aside').fadeOut();
	});
	
	/***************************************************************/
	// Form validation
	/***************************************************************/
	$("#newsletter_name, #newsletter_email").focus(function() {
		$(this).css("color","#444");
		$(this).css("background-color","#ffffff");
	});
	
	$("#newsletter_form").submit(function() {
		var $name=$("#newsletter_name").val();
		var $nameDefault=$("#newsletter_name").attr("rel");
		var $email=$("#newsletter_email").val();
		var $emailDefault=$("#newsletter_email").attr("rel");
		
		var $error=false;
		
		if (!jQuery.isString($name) || $name==$nameDefault) {
			$error=true;
			$("#newsletter_name").css("color","#ffffff");
			$("#newsletter_name").css("background-color","#de4483");
		}
		
		if (!jQuery.isEmail($email) || $email==$emailDefault) {
			$error=true;
			$("#newsletter_email").css("color","#ffffff");
			$("#newsletter_email").css("background-color","#de4483");
		}
		
		if ($error) {
			return false;
		} else {
			$('#newsletter_form input').hide();
			$.post("/newsletter/",{newsletter_add: "1", newsletter_name: $name, newsletter_email: $email}, function($xml) {
				$('header aside').append('<div id="response">'+$("response",$xml).text()+'</div>');
			});
			
			return false;
		}
	});
	
	/***************************************************************/
	// General document enhancements
	/***************************************************************/
	$("a.email").each(function() { //Email address obfuscation
		e = this.rel.replace("/","@");
		this.href = "mailto:"+e;
		$(this).text($(this).attr("title"));
	});

	$('a.external').click(function() { window.open(this.href); return false; }); //External site link
	
	$('.rollover').each(function() { jQuery.preLoadImages(jQuery.imageOver($(this))); }); //Rollover image preload

	$('.rollover').hover(
		function() { $(this).attr("src",jQuery.imageOver($(this))); },
		function() { $(this).attr("src",jQuery.imageOff($(this))); }
	);
	
	$('.cleartext').each(function() { this.rel=this.value; }); //Placeholder fallback

	$('.cleartext').focus(function() { if (this.value==this.rel) { this.value=''; } });

	$('.cleartext').blur(function() { if (this.value=='') { this.value=this.rel; } });
	
	/***************************************************************/
	// Twitter updates
	/***************************************************************/
	$("#twitter_stream").tweet({
		username: "creativedistric",
		join_text: "auto",
		count: 3,
		auto_join_text_default: '',
		auto_join_text_ed: '',
		auto_join_text_ing: '',
		auto_join_text_reply: '',
		auto_join_text_url: '',
		loading_text: 'loading tweets...'
	});

});

(function($) {

	var cache=[]; //Preload images
	$.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);
		}
	}

	$.imageOver=function($el) { //Rollover image
		if($($el).attr("src").indexOf("-over")==-1) {
			var newSrc = $($el).attr("src").replace(".gif","-over.gif");
			newSrc = newSrc.replace(".jpg","-over.jpg");
			newSrc = newSrc.replace(".png","-over.png");
			return newSrc;
		}
	}
	
	$.imageOff=function($el) { //Rollout image
		if($($el).attr("src").indexOf("-over")!=-1) {
			var oldSrc = $($el).attr("src").replace("-over.gif",".gif");
			oldSrc = oldSrc.replace("-over.jpg",".jpg");
			oldSrc = oldSrc.replace("-over.png",".png");
			return oldSrc;
		}
	}
	
	$.isString=function($str) {  //Data type validation
		if ($str.length!="") { return true; } else { return false;}
	}
	
	$.isEmail=function($str) {
		var regex=new RegExp("^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$");
		return regex.test($str);
	}
	
	$.isInteger=function($str) {
		return ($str.toString().search(/^-?[0-9]+$/) == 0);
	}
	
	$.updateConsole=function(str) {
		$('#console p').replaceWith('');
		$(str).appendTo('#console');
	}

})(jQuery)
