﻿// file extension check function //
function checkFileExt(fname,ftype) {
	var returnFlag = false;
	var ext = fname.substring(fname.lastIndexOf('.'),fname.length).toLowerCase();
	if(ftype == 'Image') {
		var extList = ['.jpg','.jpeg','.gif','.png'];
	}
	if(ftype == 'Video') {
		var extList = ['.mpg','.mpeg','.mp4','.flv'];
	}
	if(ftype == 'Audio') {
		var extList = ['.mp3'];
	}
	if(ftype == 'Document') {
		var extList = ['.txt','.doc','.pdf'];
	}
	for(var i=0;i<extList.length;i++) {
		if(ext == extList[i]) {
			returnFlag = true;
		}
	}
	return returnFlag;
}

// input validation functions //
function XSSCheck(s) {
	var re = /((\%3C)|<)[^\n]+((\%3E)|>)/gi;
	return re.test(s);
}
function URLCheck(s) {
	var re = /(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&amp;%\$#_]*)?/gi;
	return re.test(s);
}
function validateUserName(s) {
	var re = /^[a-zA-Z0-9_]{3,20}$/;
	return re.test(s);
}
function validateName(s) {
	var re = /^[a-zA-Z'-\.\s]{1,50}$/;
	return re.test(s);
}
function validateEmail(s) {
	var re = /^[A-Z0-9'._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
	return re.test(s);
}
function validateCountry(s) {
	var re = /^[a-zA-Z\s]{2,50}$/;
	return re.test(s);
}
function validatePassword(s) {
	var re = /^[a-zA-Z0-9\!\;\:\#\'\,\-\_\=\@\%\&\~\?\.\+\s\*\^\|]{5,20}$/;
	return re.test(s);
}
function validatePostTitle(s) {
	var re = /^[a-zA-Z0-9\!\;\:\#\'\,\-\_\=\@\%\&\~\?\.\+\s\*\^\|]{5,255}$/;
	return re.test(s);
}

///////////////// member join form validation functions ///////////////

// Function to check availability of user name //
var userFlag = false;
function checkUserName() {
	var tmp = document.getElementById('RUserName').value;
	if(validateUserName(tmp) == true) {
		$('#checkingnotice').html('Checking...');
		$('#checkingnotice').show();
		$.ajax({
			url: '/ajax/checkusername.asp?UserName='+escape(tmp),
			cache: false,
			success: function(text){
				if(text == 'yes') {
					$('#checkingnotice').html('<span style="color:green;">Cool...this User name is valid and available<\/span>');
					userFlag = true
				}
				else {
					$('#checkingnotice').html('<span style="color:red;">Sorry but no...this User name is valid but it is already taken<\/span>');
					userFlag = false
				}
		 	},
			error: function(text) {
				alert('An unexpected error has occurred while checking username\n\n'+text.text);
				$('#checkingnotice').hide();
			}
		});
		
	}
	else {
		if(tmp.length > 2) {
			alert("Error:\n\nThe user name you have chosen is invalid.\n\nWe hate to be fascists about this but for security purposes a user name must be between 3 and 20 characters long and you may only use upper and lowercase letters of the alphabet \(A to Z or a to z\), numbers \(0 to 9\) or underscores \(_\).\n\nPlease enter another user name and try again.");
			$('#checkingnotice').html('<span style="color:red;">Sorry but no...this User name is not valid<\/span>');
			$('#checkingnotice').show();
			userFlag = false
		}
		else {
			$('#checkingnotice').hide();
			userFlag = false
		}
	}
}

function checkJoinForm() {
	if(document.getElementById('RUserName').value == '' || document.getElementById('RUserName').value.length < 3) {
		alert("Error:\n\nPlease enter a user name of at least 3 characters.\n\n");
		document.getElementById('RUserName').focus();
		return false;
	}
	else {
		if(!validateUserName(document.getElementById('RUserName').value)) {
			alert("Error:\n\nThe user name you have chosen is invalid.\n\nWe hate to be fascists about this but for security purposes a user name must be between 3 and 20 characters long and you may only use upper and lowercase letters of the alphabet \(A to Z or a to z\), numbers \(0 to 9\) or underscores \(_\).\n\nPlease enter another user name and try again.");
			document.getElementById('RUserName').focus();
			return false;
		}
	}
	if(document.getElementById('UserFirstName').value == '') {
		alert("Error:\n\nPlease enter your first name.\n\n");
		document.getElementById('UserFirstName').focus();
		return false;
	}
	else {
		if(!validateName(document.getElementById('UserFirstName').value)) {
			alert("Error:\n\nThe first name you have entered contains invalid characters.\n\nWe hate to be fascists about this but for security purposes a name field must only contain upper and lowercase letters of the alphabet \(A to Z or a to z\), apostrophes, full stops or spaces.\n\nPlease check your first name entry and try again.");
			document.getElementById('UserFirstName').focus();
			return false;
		}
	}
	if(document.getElementById('UserLastName').value == '') {
		alert("Error:\n\nPlease enter your last name.\n\n");
		document.getElementById('UserLastName').focus();
		return false;
	}
	else {
		if(!validateName(document.getElementById('UserLastName').value)) {
			alert("Error:\n\nThe last name you have entered contains invalid characters.\n\nWe hate to be fascists about this but for security purposes a name field must only contain upper and lowercase letters of the alphabet \(A to Z or a to z\), apostrophes, full stops or spaces.\n\nPlease check your last name entry and try again.");
			document.getElementById('UserLastName').focus();
			return false;
		}
	}
	if(!validateEmail(document.getElementById('UserEmail').value)) {
		alert("Error:\n\nPlease enter a valid email address.\n\n");
		document.getElementById('UserEmail').focus();
		return false;
	}
	if(document.getElementById('Country').value.length < 2) {
		alert("Error:\n\nPlease enter your country of residence using at least two characters.\n\n");
		document.getElementById('Country').focus();
		return false;
	}
	else {
		if(!validateCountry(document.getElementById('Country').value)) {
			alert("Error:\n\nThe country name you have entered contains invalid characters.\n\nWe hate to be fascists about this but for security purposes a country field must only contain upper and lowercase letters of the alphabet \(A to Z or a to z\) or spaces.\n\nPlease check your country field entry and try again.");
			document.getElementById('Country').focus();
			return false;
		}
	}
	if(!validatePassword(document.getElementById('RPassword').value)) {
		alert("Error:\n\nPlease enter a password of between 5 and 20 characters. The password may contain upper and lowercase letters of the alphabet \(A to Z or a to z\), numbers \(0 to 9\) and these punctuation characters \(!;:#',-_=@%&~?.+s*^|\).\n\n");
		document.getElementById('RPassword').focus();
		return false;
	}
	if(!validatePassword(document.getElementById('RPasswordConfirm').value)) {
		alert("Error:\n\nPlease confirm your password.\n\n");
		document.getElementById('RPasswordConfirm').focus();
		return false;
	}
	if(document.getElementById('RPassword').value != document.getElementById('RPasswordConfirm').value) {
		alert("Error:\n\nThe value of the Password field is different to the value of the Confirm Password field.\n\nThese two fields must contain the same value.\n\n");
		document.getElementById('RPasswordConfirm').focus();
		return false;
	}
	if(!document.getElementById('AcceptTerms').checked == true) {
		alert("Error:\n\nYou must accept the terms and conditions before you can become a member.\n\n");
		document.getElementById('AcceptTerms').focus();
		return false;
	}
	if(!userFlag) {
		alert("The user name you have entered is either currently in use or has been allocated in the past.\n\nAll user names must be unique and cannot be recycled.\n\nPlease choose another user name.")
		document.getElementById('RUserName').focus();
		return userFlag;
	}
	$('#joinsubmit').hide();
	$('#submitnotice').show();
	return userFlag;
}
