//JQuery document enhancement
$(document).ready(function(){
	$("img").pngfix();

	//Email address obfuscation
	$('a.email').each(function(){
		e = this.rel.replace('/','@');
		this.href = 'mailto:' + e;
		$(this).text(e);
	});
	
	//Open link in new window
	$('a.external').click(function(){
		window.open(this.href);
		return false;
	});
	
	//Submit button rollovers
	$(".rollover").hover(
		function(){
			if($(this).attr("src").indexOf("-over") == -1) {
				var newSrc = $(this).attr("src").replace(".gif","-over.gif");
				$(this).attr("src",newSrc);
			}
		},
		function(){
			if($(this).attr("src").indexOf("-over.gif") != -1) {
				var oldSrc = $(this).attr("src").replace("-over.gif",".gif");
				$(this).attr("src",oldSrc);
			}
		}
	);
	
	//Work thumbnail view rollovers
	if (document.getElementsByClassName("thumbnail-image")) {
		var thumbnails=document.getElementsByClassName("thumbnail-image"); //Set rel of each image to original source
		var rolloverImage="/images/work/thumbnails/view-thumb.gif";
		for (i=0; i<thumbnails.length; i++) {
			$(thumbnails[i]).attr("rel",$(thumbnails[i]).attr("src"));
		}
		
		$(".thumbnail-image").hover( //Attach rollover event to each thumbnail
			function(){
				if ($(this).attr("src")==$(this).attr("rel")) {
					$(this).attr("src",rolloverImage);
				}
			},
			function(){
				if ($(this).attr("src")==rolloverImage) {
					$(this).attr("src",$(this).attr("rel"));
				}
			}
		);
	}
	
	//Clear contact form fields
	if (document.getElementById("contact-form")) {
		initialiseForm(document.getElementById("contact-form"));
	}
	
	//Clear search form field
	if (document.getElementById("s")) {
		initialiseForm(document.getElementById("search-form"));
	}
	
	//Clear comment form fields
	if (document.getElementById("comment-form")) {
		initialiseForm(document.getElementById("comment-form"));
	}
	
	//Clear newsletter form fields
	if (document.getElementById("newsletter-form")) {
		initialiseForm(document.getElementById("newsletter-form"));
	}
	
	//setupZoom();
});

function popup(doc,w,h) {
	var top = (screen.availHeight/2)-(h/2);
	var left = (screen.availWidth/2)-(w/2);
	window.open(doc,"jukebook_popup","menubar=no,width="+w+",height="+h+",top="+top+",left="+left+",toolbar=no,location=0,scrollbars=yes");
	return false;
}

//Initialise form fields
function initialiseForm(form) {
	var inputfields=form.getElementsByTagName("input");
	for (i=0; i<inputfields.length; i++) {
		initialiseFormField(inputfields[i],inputfields[i].value);
	}
		
	var textareas=form.getElementsByTagName("textarea");
	for (i=0; i<textareas.length; i++) {
		initialiseFormField(textareas[i],textareas[i].value);
	}
}

function initialiseFormField(element,text) {
	element.rel=text;
	
	$(element).focus(function() {
		if (this.value==this.rel) {
			this.value='';
		}
	});
	
	$(element).blur(function() {
		if (this.value=='') {
			this.value=this.rel;
		}
	});
}

//Validate 'Get in Touch' form
function validateContact(form) {
	name=form.contact_name.value; //Get form values
	email=form.contact_email.value;
	phone=form.contact_phone.value;
	message=form.contact_message.value;
	
	var error=false;
	var response="There was an error filling out the form:\n\n";

	if (!isString(name) || name=="Name*") {
		error=true;
		response+="Please enter your name\n";
	}
	
	if (!isEmail(email)) {
		error=true;
		response+="Please enter a valid email address\n";
	}
	
	if (!isString(phone) || phone=="Contact Number*") {
		error=true;
		response+="Please enter your contact number\n";
	}
	
	if (!isString(message) || message=="How can I help you today?") {
		error=true;
		response+="Please enter a message\n";
	}

	if (error) {
		alert(response);
		return false;
	} else {
		return true;
	}
}

//Validate Newsletter form
function validateNewsletter(form) {
	name=form.newsletter_name.value; //Get form values
	email=form.newsletter_email.value;
	
	var error=false;
	var response="There was an error filling out the form:\n\n";

	if (!isString(name) || name=="Name (Required)") {
		error=true;
		response+="Please enter your name\n";
	}
	
	if (!isEmail(email)) {
		error=true;
		response+="Please enter a valid email address\n";
	}

	if (error) {
		alert(response);
		return false;
	} else {
		return true;
	}
}

//Data type validation
function isString(str) { //String
	if (str.length!="") {
		return true;
	} else {
		return false;
	}
}

function isEmail(str) { //Email address
	var emailRegExp="^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
	var regex=new RegExp(emailRegExp);
	return regex.test(str);
}

document.getElementsByClassName = function(className, parentElement) {
	if (typeof parentElement == 'string'){
		parentElement = document.getElementById(parentElement);
	} else if (typeof parentElement != 'object' || typeof parentElement.tagName != 'string') {
		parentElement = document.body;
	}
	var children = parentElement.getElementsByTagName('*');
	var re = new RegExp('\\b' + className + '\\b');
	var el, elements = [];
	var i = 0;
	while ( (el = children[i++]) ){
		if ( el.className && re.test(el.className)){
			elements.push(el);
		}
	}
  	return elements;
}
