$(document).ready(function() {
	initDoc();
});

function initDoc() {

	/***************************************************************/
	// Feature carousel
	/***************************************************************/
	$('#feature img:gt(0)').css('display','none');
	$('#feature').each(function() {
		var $numberOfImages=$('#feature img').length-1;
		var $currentImage=0;
		
		$('ol.feature li a.next').click(function() {
			clearTimeout($intervalID);
			nextImage();
			return false;
		});
		
		$('ol.feature li a.prev').click(function() {
			clearTimeout($intervalID);
			nextImage();
			return false;
		});

		function nextImage() {
			$('#feature img:eq('+$currentImage+')').fadeOut('slow');
			$currentImage++;
			if ($currentImage>$numberOfImages) {
				$currentImage=0;
			}
			$('#feature img:eq('+$currentImage+')').fadeIn('slow');
			
			$intervalID=setTimeout(nextImage,7000);
		}
		
		function prevImage() {
			$('#feature img:eq('+$currentImage+')').fadeOut('slow');
			$currentImage--;
			if ($currentImage<0) {
				$currentImage=$numberOfImages;
			}
			$('#feature img:eq('+$currentImage+')').fadeIn('slow');
			
			$intervalID=setTimeout(nextImage,7000);
		}
		
		$intervalID=setTimeout(nextImage,7000);
	});

	/***************************************************************/
	// Form validation
	/***************************************************************/
	$('#comment_form').each(function() {
	
		$("#author, #email, #comment").focus(function() {
			$(this).css("color","#737373");
			$(this).css("background-color","#fff");
		});
	
		$(this).submit(function() {
			var $name=$("#author").val();
			var $nameDefault=$("#author").attr("rel");
			var $email=$("#email").val();
			var $emailDefault=$("#email").attr("rel");
			var $comment=$("#comment").val();
			var $commentDefault=$("#comment").attr("rel");
		
			var $error=false;
		
			if (!jQuery.isString($name) || $name==$nameDefault) {
				$error=true;
				$("#author").css("color","#fff");
				$("#author").css("background-color","#9f0047");
				$("#author").val($nameDefault);
			}
		
			if (!jQuery.isEmail($email) || $email==$emailDefault) {
				$error=true;
				$("#email").css("color","#fff");
				$("#email").css("background-color","#9f0047");
				$("#email").val($emailDefault);
			}
			
			if (!jQuery.isString($comment) || $comment==$commentDefault) {
				$error=true;
				$("#comment").css("color","#fff");
				$("#comment").css("background-color","#9f0047");
				$("#comment").val($commentDefault);
			}
		
			if ($error) {
				return false;
			} else {
				return true;
			}
		});
	
	});
	
	$('#newsletter_form').each(function() {
	
		$("#newsletter_name, #newsletter_email").focus(function() {
			$(this).css("color","#454545");
			$(this).css("background-color","#fff");
		});
	
		$(this).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","#fff");
				$("#newsletter_name").css("background-color","#9f0047");
				$("#newsletter_name").val($nameDefault);
			}
		
			if (!jQuery.isEmail($email) || $email==$emailDefault) {
				$error=true;
				$("#newsletter_email").css("color","#fff");
				$("#newsletter_email").css("background-color","#9f0047");
				$("#newsletter_email").val($emailDefault);
			}
		
			if ($error) {
				return false;
			} else {
				$("#newsletter_form").css("visibility","hidden");
				$.post("/assets/ajax/newsletter.php",{newsletter_add: "1", newsletter_name: $name, newsletter_email: $email}, function($xml) {
					$("#newsletter p.feedback").html($("response",$xml).text());
				});
			
				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))); }
	);
	
	$(".input-text").each (function() { this.rel=this.value; }); //Clear input text

	$(".input-text").focus(function() { if (this.value==this.rel) { this.value=''; } });

	$(".input-text").blur(function() { if (this.value=='') { this.value=this.rel; } });
	
	/***************************************************************/
	// Browser hacks
	/***************************************************************/
	jQuery("*:nth-child(odd)").addClass("right");
	
	/***************************************************************/
	// Fancybox
	/***************************************************************/
	$("a.newsletter").click(function() {
		$.fancybox({
			'padding'		: 0,
			'autoScale'		: false,
			'overlayOpacity': 0.7,
			'overlayColor'	: '#000',
			'transitionIn'	: 'fade',
			'transitionOut'	: 'fade',
			'speedIn'		: 600,
			'speedOut'		: 600,
			'width'			: 435,
			'height'		: 435,
			'href'			: '/assets/newsletter.htm',
			'type'			: 'iframe'
		});

		return false;
	});
	
	/***************************************************************/
	// Load tweets
	/***************************************************************/
	$("#twitter_update_list").each(function() {
		$.getScript('http://twitter.com/javascripts/blogger.js');
		$.getScript('http://twitter.com/statuses/user_timeline/stellarmagazine.json?callback=twitterCallback2&count=2');
	});
	
	/***************************************************************/
	// Flash embed
	/***************************************************************/
	$("#div-name").each(function() {
		var flashvars = {};
	 	var params = {};
		var attributes = {};
		swfobject.embedSWF("path/movie.swf", "div-name", "640", "480", "9.0.0", false, flashvars, params, attributes);
	});
	
	/***************************************************************/
	// Images to preload
	/***************************************************************/
	jQuery.preLoadImages("/assets/images/tiles/comments-plinth-over.png");

}

(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);
	}

})(jQuery)
