$(document).ready(function(){
	$("img").pngfix();
	
	$.preloadImages("images/nav/what-we-do-over.png", "images/nav/how-you-can-help-over.png","images/nav/whos-doing-it-over.png","whats-going-on-over.png","contact-us-over.png");

	//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,a.maps").click(function(){
		window.open(this.href);
		return false;
	});

	//Image 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);
			}
		}
	);
	
	$("input.input-text").each ( //Define default text for each input element
		function() {
			this.rel=this.value;
		}
	);

	$("input.input-text").focus(function() {
		if (this.value==this.rel) {
			this.value='';
		}
	});

	$("input.input-text").blur(function() {
		if (this.value=='') {
			this.value=this.rel;
		}
	});
	
});

//Validate donate form
function validateDonate(form) {
	name=form.name.value; //Get form values
	address=form.address.value;
	email=form.email.value;
	amount=form.amount.value;
	cc_name=form.cc_name.value;
	cc_type=form.cc_type.value;
	cc_number=form.cc_number.value;
	cc_ccv=form.cc_ccv.value;
	
	var error=false;
	var response="There was an error filling out the form:\n\n";

	if (!isString(name)) {
		error=true;
		response+="Please enter your name\n";
	}
	
	if (!isString(address)) {
		error=true;
		response+="Please enter your address\n";
	}
	
	if (!isEmail(email)) {
		error=true;
		response+="Please enter a valid email address\n";
	}
	
	if (!isFloat(amount)) {
		error=true;
		response+="Please enter a donation amount\n";
	}
	
	if (!isString(cc_name)) {
		error=true;
		response+="Please your name as it appears on your credit card\n";
	}
	
	if (!isCreditCard(cc_number)) {
		error=true;
		response+="Please a valid card number\n";
	}
	
	if (cc_type=="visa" || cc_type=="mc") {
		if (!isInteger(cc_ccv)) {
			error=true;
			response+="Please enter your card security code (CCV)\n";
		}
	}

	if (error) {
		alert(response);
		return false;
	} else {
		return true;
	}
};

//Validate contact form
function validateContact(form) {
	name=form.name.value; //Get form values
	email=form.email.value;
	message=form.message.value;
	
	var error=false;
	var response="There was an error filling out the form:\n\n";

	if (!isString(name)) {
		error=true;
		response+="Please enter your name\n";
	}
	
	if (!isEmail(email)) {
		error=true;
		response+="Please enter a valid email address\n";
	}
	
	if (!isString(message)) {
		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.nl_name.value; //Get form values
	email=form.nl_email.value;
	address=form.nl_address.value;
	
	var error=false;
	var response="There was an error filling out the form:\n\n";

	if (!isString(name)) {
		error=true;
		response+="Please enter your name\n";
	}
	
	if (!isEmail(email)) {
		error=true;
		response+="Please enter a valid email address\n";
	}
	
	if (!isString(address)) {
		error=true;
		response+="Please enter your address\n";
	}

	if (error) {
		alert(response);
		return false;
	} else {
		return true;
	}
};

//Validate request form
function validateRequest(form) {
	name=form.name.value; //Get form values
	email=form.email.value;
	address=form.address.value;
	
	var error=false;
	var response="There was an error filling out the form:\n\n";

	if (!isString(name)) {
		error=true;
		response+="Please enter your name\n";
	}
	
	if (!isEmail(email)) {
		error=true;
		response+="Please enter a valid email address\n";
	}
	
	if (!isString(address)) {
		error=true;
		response+="Please enter your company address\n";
	}

	if (error) {
		alert(response);
		return false;
	} else {
		return true;
	}
};

//Validate nurses form
function validateNurses(form) {
	name=form.name.value; //Get form values
	email=form.email.value;
	phone=form.address.value;
	address=form.address.value;
	qualifications=form.qualifications.value;
	area=form.area.value;
	availability=form.availability.value;
	
	var error=false;
	var response="There was an error filling out the form:\n\n";

	if (!isString(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)) {
		error=true;
		response+="Please enter a contact number\n";
	}
	
	if (!isString(address)) {
		error=true;
		response+="Please enter your postal address\n";
	}
	
	if (!isString(qualifications)) {
		error=true;
		response+="Please enter details of your qualifications\n";
	}
	
	if (!isString(area)) {
		error=true;
		response+="Please enter your preferred geographical area for work\n";
	}
	
	if (!isString(availability)) {
		error=true;
		response+="Please enter your hourly availability per week/month\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 isInteger(str) { //Integer
	var temp_value = str;

	if (temp_value == "") {
		return false;
	}
	var Chars = "0123456789";
	for (var i = 0; i < temp_value.length; i++) {
		if (Chars.indexOf(temp_value.charAt(i)) == -1) {
			return false;
		}
	}

	return true;
}

function isFloat(str) { //Float value
	var temp_value = str;

	if (temp_value == "") {
		return false;
	}
	var Chars = "0123456789.";
	for (var i = 0; i < temp_value.length; i++) {
		if (Chars.indexOf(temp_value.charAt(i)) == -1) {
			return false;
		}
	}

	return true;
}

function isEmail(str) { //Email address
	var emailRegExp="^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
	var regex=new RegExp(emailRegExp);
	return regex.test(str);
}

function isCreditCard(str) { //Luhn check for credit card input
	var number=str;
	var i,sum,weight;
	
	sum=0;
	
	for (i=0; i<number.length-1; i++) {
		weight=number.substr(number.length-(i+2),1)*(2-(i%2));
		sum+=((weight<10)?weight:(weight-9));
	}
	
	if (parseInt(number.substr(number.length-1))==((10-sum%10)%10)) {
		return true;
	} else {
		return false;
	}
}
