	/* --- edit url validation --- */
	
	function val_editurl() { 
		var re = /^(ht|f)tp(s?)\:\/\/[a-zA-Z0-9][-_.a-zA-Z0-9\%\(\)\:]*(\/?)[a-zA-Z0-9\~\%\(\)\?\&][ -_.a-zA-Z0-9\/\%\(\)\=\?\&]*$/;
		re2 = /^[0-9]*$/;
		em = "";
		if (!re2.test(document.myurl.elements['mins'].value.toLowerCase())) { em += "Please enter a valid length of minutes.\n"; }
		if (!re2.test(document.myurl.elements['secs'].value.toLowerCase())) { em += "Please enter a valid length of seconds.\n"; }
		if (document.myurl.elements['url_stream'].value.length > 0) { if (!re.test(document.myurl.elements['url_stream'].value.toLowerCase())) { em += "Please enter a valid streaming audio url. (eg: http://www.website.com/myfile.mp3)\n"; } }
		if (document.myurl.elements['url_link'].value.length > 0) { if (!re.test(document.myurl.elements['url_link'].value.toLowerCase())) { em += "Please enter a valid audio url link. (eg: http://www.website.com/myfile.mp3)\n"; } }
		if (em.length > 0) { alert(em); return false; }
		else { return true; }
	}



	/* --- notification validation --- */
	
	function confirm_notifications() {
		var ec = "";
		switch (document.notify.ec.value) {
			case "tstarts": ec = "Round "+document.notify.nr.value+" Tracking Starts"; break;
			case "tstarted": ec = "Round "+document.notify.nr.value+" Tracking Started"; break;
			case "tends": ec = "Round "+document.notify.nr.value+" Tracking Ends"; break;
			case "vstarts": ec = "Round "+document.notify.nr.value+" Voting Starts"; break;
			case "vstarted": ec = "Round "+document.notify.nr.value+" Voting Started"; break;
			case "vends": ec = "Round "+document.notify.nr.value+" Voting Ends"; break;
			case "ronline": ec = "Round "+document.notify.nr.value+" Results Online"; break;
		}
		
		return confirm("Send out "+ec+" notification emails?");
	}

	/* --- voting validation --- */
	
	function move_entry_up(en) {
		var pn = en - 1;
	  	if (document.voting.elements['entry_order_'+pn] != undefined) {
  			var cv = document.voting.elements['entry_order_'+pn].value;
  			document.voting.elements['entry_order_'+pn].value = document.voting.elements['entry_order_'+en].value;
  			document.voting.elements['entry_order_'+en].value = cv;
		}
  	}
  	
  	function move_entry_down(en) {
		var nn = en + 1;
	  	if (document.voting.elements['entry_order_'+nn] != undefined) {
  			var cv = document.voting.elements['entry_order_'+nn].value;
  			document.voting.elements['entry_order_'+nn].value = document.voting.elements['entry_order_'+en].value;
  			document.voting.elements['entry_order_'+en].value = cv;
		}
  	}
  	
  	function entry_dupe_check(en,ev) {
	  	var n = 1;
	  	while (document.voting.elements['entry_order_'+n] != undefined) {
		  	if (document.voting.elements['entry_order_'+n].value == ev && n != en) {
			  	document.voting.elements['entry_order_'+n].value = "0"; 
		  	}
		  	n++;
	  	}
  	}
  	
  	function entries_voted_check() {
	  	var n = 1;
	  	var em = "";
	  	while (document.voting.elements['entry_order_'+n] != undefined) {
	  		if (document.voting.elements['entry_order_'+n].value == "0") {
		  		/* Round 5 Mickey Mouse */
		  		if (n < 5 || n > 5) {
			  		em = "Please select an entry for all rows of the voting form."; break; }
	  		}
		  	n++;
	  	}
	  	return em;
  	}
  	
  	function entry_link(l) {
	  	if (l != "0") { window.open('entry.php?e='+l, '_blank'); }
  	}
  	
  	function val_voting_form() {
		var errmsg = "";
		
		errmsg += entries_voted_check();
		
		if (errmsg != "") { 
			alert(errmsg);
			return false; 
		}
		
		else { return true;	}
  	}

	/* --- new login validation --- */	

	function val_newlogin_login(s) {
		var re = /^[a-zA-Z0-9\_\^\~\-][a-zA-Z0-9\_\^\~\-]*$/;
		var em = "";
		if (s.length < 3) { em += "Your login must be atleast 3 characters.\n"; }
		else if (!re.test(s)) { em += "The login you entered contains invalid characters.\n"; }
		return em;
	}

	function val_newlogin_email(s) {
		var re = /^[a-zA-Z][a-zA-Z0-9\.\-\_]*[a-zA-Z0-9]@[a-zA-Z0-9][a-zA-Z0-9\.\-]*\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
		if (!re.test(s)) { return "Please enter a valid email address.\n"; }
		else { return ""; }
	}
	
	function val_newlogin_password(p1,p2) {
		var re = /^[a-zA-Z0-9][a-zA-Z0-9\.\,\'\"\!\@\#\$\%\^\&\*\(\)\_\|\^\~\-]*$/;
		var em = "";
		if (p1.length < 4) { em += "Your password must be atleast 4 characters.\n"; }
		else if (p1 !== p2) { em += "The password you entered does not match the (confirm) password.\n"; }
		else if (!re.test(p1)) { em += "Your password must begin with a letter or number or contains invalid characters.\n* Valid password characters A-Z a-z 0-9 ! @ # $ % ^ & * ( ) - _ , . ' \" \n"; }
		return em;
	}

	function val_newlogin_nickname(s) {
		var re = /^[a-zA-Z0-9][\]a-zA-Z0-9\[\_\^\~\(\)-]*$/;
		var em = "";
		if (s.length < 2) { em += "Your nickname must be atleast 2 characters.\n"; }
		else if (!re.test(s)) { em += "The nickname you entered contains invalid characters.\n* Valid nickname characters A-Z a-z 0-9 [ ] ^ ~ ( ) - _\n"; }
		return em;
	}


	function val_newlogin_public_email(s) {
		var re = /^[a-zA-Z][a-zA-Z0-9\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][a-zA-Z0-9\.-]*\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
		if (!re.test(s)) { return "Please enter a valid public email address.\n"; }
		else { return ""; }
	}

	function val_newlogin_website(s) {
		var re = /^http(s?)\:\/\/[a-zA-Z][-_.a-zA-Z0-9]*(:(0-9)*)*(\/?)[-_.a-zA-Z0-9\/]*$/;
		if (!re.test(s)) { return "Please enter a valid website address.\n"; }
		else { return ""; }
	}

	function val_newlogin_avatar(s) {
		var re = /^http(s?)\:\/\/[a-zA-Z0-9][-_.a-zA-Z0-9\%\(\)\:]*(\/?)[a-zA-Z0-9\~\%\(\)\?\&][ -_.a-zA-Z0-9\/\%\(\)\=\?\&]*.(gif|jpg|jpeg|png|bmp)$/;
		if (!re.test(s.toLowerCase())) { return "Please enter a valid avatar url. (eg: http://www.website.com/avatar.gif) Accepted avatar image formats are (.GIF , .JPG/JPEG , .PNG , or .BMP).\n"; }
		else { return ""; }
	}

	function val_newlogin_form() {
		var errmsg = "";
		
		errmsg += val_newlogin_login(document.newlogin.login.value);
		errmsg += val_newlogin_email(document.newlogin.email.value);
		errmsg += val_newlogin_password(document.newlogin.pass1.value,document.newlogin.pass2.value);
		errmsg += val_newlogin_nickname(document.newlogin.nickname.value);
		if (document.newlogin.email_public.value.length > 0) { errmsg += val_newlogin_public_email(document.newlogin.email_public.value); }
		if (document.newlogin.website.value.length > 0) { errmsg += val_newlogin_website(document.newlogin.website.value); }
		if (document.newlogin.avatar.value.length > 0) { errmsg += val_newlogin_avatar(document.newlogin.avatar.value); }
		
		if (errmsg != "") { 
			alert(errmsg);
			return false; 
		}
		
		else {
			document.newlogin.submit.value='Creating your new login...';
			document.newlogin.submit.disabled=true;
			return true;
		}
	}
	
	/* --- edit profile validation --- */
	
	function val_editprofile_pass(op,np1,np2) {
		var re = /^[a-zA-Z0-9][a-zA-Z0-9\.\,\'\"\!\@\#\$\%\^\&\*\(\)\_\|\^\~\-]*$/;
		var em = "";
		if (op.length > 0 && np1.length < 1) { em += "To change your password you must enter and verify a new password.\n"; }
		else if (op.length < 4) { em += "To change your password you must enter your old password.\n"; }
		else if (np1.length < 4) { em += "Your new password must be atleast 4 characters.\n"; }
		else if (np1 !== np2) { em += "Your new passwords do not match.\n"; }
		else if (!re.test(op)) { em += "Your old password contains invalid characters.\n"; }
		else if (!re.test(np1)) { em += "Your new password must begin with a letter or number or contains invalid characters.\n* Valid password characters A-Z a-z 0-9 ! @ # $ % ^ & * ( ) - _ , . ' \" \n"; }
		return em;
	}
	
	
	function val_editprofile_form() {
		var errmsg = "";
		
		if (document.editprofile.email.value.length > 0) { errmsg += val_newlogin_email(document.editprofile.email.value); }
		if (document.editprofile.old_pass.value.length > 0 ||
			document.editprofile.new_pass1.value.length > 0 ||
			document.editprofile.new_pass2.value.length > 0) { errmsg += val_editprofile_pass(document.editprofile.old_pass.value, document.editprofile.new_pass1.value, document.editprofile.new_pass2.value); }
		if (document.editprofile.email_public.value.length > 0) { errmsg += val_newlogin_public_email(document.editprofile.email_public.value); }
		if (document.editprofile.website.value.length > 0) { errmsg += val_newlogin_website(document.editprofile.website.value); }
		if (document.editprofile.avatar.value.length > 0) { errmsg += val_newlogin_avatar(document.editprofile.avatar.value); }
		
		if (errmsg != "") { 
			alert(errmsg);
			return false; 
		}
		
		else {
			return true;
		}
	}
	
	/* --- forgot password validation --- */
	
	function val_forgotpass_form() {
		var errmsg = "";
		
		errmsg += val_newlogin_login(document.forgotpass.login.value);
		errmsg += val_newlogin_email(document.forgotpass.email.value);
		
		if (errmsg != "") { 
			alert(errmsg);
			return false; 
		}
		
		else {
			document.forgotpass.submit.value='Retrieving your login information...';
			document.forgotpass.submit.disabled=true;
			return true;
		}
	}

	
	/* --- submit entry validation --- */
	
	function val_submit_title(t) {
		if (t.length < 1) { return "Please enter a title for your entry.\n"; }
		else { return ""; }
	}
	
	function val_submit_url(u) {
		if (u.length > 0) {
			var valurl = /^(ht|f)tp(s?)\:\/\/[a-zA-Z0-9][-_.a-zA-Z0-9\%\(\)\:]*(\/?)[a-zA-Z0-9\~\%\(\)\?\&][ -_.a-zA-Z0-9\/\%\(\)\=\?\&]*$/;
			if (!valurl.test(u.toLowerCase())) { return "Please enter a valid url for your entry.\n"; }
			else { return ""; }
		}
		else { return ""; }
	}
	
	function val_submit_mp3_url(u) {
		var valurl = /^(ht|f)tp(s?)\:\/\/[a-zA-Z0-9][-_.a-zA-Z0-9\%\(\)\:]*(\/?)[a-zA-Z0-9\~\%\(\)\?\&][ -_.a-zA-Z0-9\/\%\(\)\=\?\&]*$/;
		if (!valurl.test(u.toLowerCase())) { return "Please enter a valid MP3 url.\n"; }
		else { return ""; }
	}
	
	function val_submit_method() {
		if (document.entryform.entryfile.value == "" &&
			document.entryform.entryfile_url.value == "" &&
			document.entryform.entry.value != "yes") { return "Please select File or URL."; }
		else { return ""; }
	}
	
	function val_submit_form() {
		var errmsg = "";
		errmsg += val_submit_title(document.entryform.title.value);
		errmsg += val_submit_url(document.entryform.entryfile_url.value);
		errmsg += val_submit_mp3_url(document.entryform.mp3_url.value);
		errmsg += val_submit_method();
		
		if (errmsg != "") { 
			alert(errmsg);
			return false; 
		}
		
		else {
			if (document.entryform.entryfile.value.length > 0) { document.entryform.submit.value='Uploading your entry... (Please wait, this may take several minutes).'; }
			else { document.entryform.submit.value='Updating your entry...'; }
			document.entryform.submit.disabled=true;
			return true;
		}
	}
	
	function togglefileurl(file) {
  		if (file) {
	  		document.getElementById('s_file').style.display='block';
	  		document.getElementById('s_url').style.display='none';
  		}
  		else {
	  		document.getElementById('s_file').style.display='none';
	  		document.getElementById('s_url').style.display='block';
		}
  	}
