// Volnado form validation

// Check form
vFormSubmitted = false;

function vFormSubmit() {
	if(!vFormSubmitted) {
		if(vFormCheck()) {
			vFormSubmitted = true;
			vFormObj.submit();
		}
	} else {
		alert("You have already submitted your information.\n\nPlease click 'Ok' and wait for the confirmation page.");
	}
}

// Check form field (Text)
function vCText(vCTextObj, vCTextMinLength, vCTextMaxLength, vCTextName) {

	if(vCTextObj.value.length == 0) {
		alert(vCTextName + " is missing.");
		vCTextObj.focus();
		return false;
	} else {
		if(vCTextObj.value.length < vCTextMinLength) {
			alert(vCTextName + " is too short.");
			vCTextObj.focus();
			return false;
		}
	}
	if((vCTextMaxLength > 0) && (vCTextObj.value.length > vCTextMaxLength)) {
		alert(vCTextName + " is too long.");
		vCTextObj.focus();
		return false;
	}

	return true;
}

// Check form field (E-mail)
function vCEMail(vCEMailObj, vCEMailName) {

	if(vCEMailObj.value.length == 0) {
		alert(vCEMailName + " is missing.");
		vCEMailObj.focus();
		return false;
	}

	if(vCEMailObj.value.length < 6) {
		alert(vCEMailName + " is too short.");
		vCEMailObj.focus();
		return false;
	}

	if(vCEMailObj.value.length > 320) {
		alert(vCEMailName + " is too long.");
		vCEMailObj.focus();
		return false;
	}

	var emailFilter = /^([a-zA-Z0-9_\.\-\&\!\#\%\'\*\+\#\=\?\~\{\}\|])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/
	if(!emailFilter.test(vCEMailObj.value)) {
		alert(vCEMailName + " has been entered incorrectly.");
		vCEMailObj.focus();
		return false;
	}

	return true;
}

// Check form field (Select)
function vCSelect(vCSelectObj, vCSelectName) {

	returnValue = true;
	if(vCSelectObj == null) { returnValue = false; }
	if(vCSelectObj.length == 0) { returnValue = false; }
	if(returnValue) {
		if(vCSelectObj.options[vCSelectObj.selectedIndex].value == "0" || vCSelectObj.selectedIndex == -1) { returnValue = false; }
	}
	if(!returnValue) {
		alert(vCSelectName + " not selected.");
		vCSelectObj.focus();
	}
	return returnValue;
}

// Check form field (IP)
function vCIP(vCIPObj, vCIPName) {

	var filter = /^([0-9][0-9]{0,2})+\.([0-9][0-9]{0,2})+\.([0-9][0-9]{0,2})+\.([0-9][0-9]{0,2})+$/;
	if (!filter.test(vCIPObj.value)) {
		alert(vCIPName + ' is not a valid IP address');
		vCIPObj.focus();
		return false;
	}
	
	return true;
}

// Check form field (Password)
function vCPassword(vCPasswordObj, vCPasswordMinLength, vCPasswordMaxLength, vCPasswordName) {

	// Check accountPassword contains valid characters
	for(passwordCharIndex=0; passwordCharIndex<vCPasswordObj.value.length; passwordCharIndex ++) {
	
		passwordCharacterError = 0;
		passwordCharacterASCIICode = vCPasswordObj.value.charCodeAt(passwordCharIndex);
		if(passwordCharacterASCIICode < 48) {
			passwordCharacterError = 1;
		}		
		if(passwordCharacterASCIICode > 57 && passwordCharacterASCIICode < 65) {
			passwordCharacterError = 1;
		}		
		if(passwordCharacterASCIICode > 90 && passwordCharacterASCIICode < 97) {
			passwordCharacterError = 1;
		}		
		if(passwordCharacterASCIICode > 122) {
			passwordCharacterError = 1;
		}		

		if(passwordCharacterError == 1) {
			alert(vCPasswordName + " contains characters which are not allowed.\nPlease use a mixture of 0-9, a-z & A-Z characters only.");
			vCPasswordObj.focus();
			return false;
		}
	}
	
	return vCText(vCPasswordObj, vCPasswordMinLength, vCPasswordMaxLength, vCPasswordName);
}

// Submit form if enter is pressed
function checkEnter(e){

	var characterCode;
	
	if(e && e.which){
		e = e;
		characterCode = e.which;
	} else{
		e = event;
		characterCode = e.keyCode;
	}
	
	if(characterCode == 13) {
		vFormSubmit();
		return false;
	} else {
		return true;
	}
}

function setSelectionRange(input, selectionStart, selectionEnd) {

	if (input.setSelectionRange) {
		input.focus();
		input.setSelectionRange(selectionStart, selectionEnd);
	} else if (input.createTextRange) {
		var range = input.createTextRange();
		range.collapse(true);
		range.moveEnd('character', selectionEnd);
		range.moveStart('character', selectionStart);
		range.select();
	}
}

function replaceSelection(input, replaceString) {

	if (input.setSelectionRange) {
		var selectionStart = input.selectionStart;
		var selectionEnd = input.selectionEnd;
		input.value = input.value.substring(0, selectionStart)+ replaceString + input.value.substring(selectionEnd);
    
		if (selectionStart != selectionEnd){ 
			setSelectionRange(input, selectionStart, selectionStart + 	replaceString.length);
		}else{
			setSelectionRange(input, selectionStart + replaceString.length, selectionStart + replaceString.length);
		}

	} else if (document.selection) {
		var range = document.selection.createRange();

		if (range.parentElement() == input) {
			var isCollapsed = range.text == '';
			range.text = replaceString;

			 if (!isCollapsed)  {
				range.moveStart('character', -replaceString.length);
				range.select();
			}
		}
	}
}

function catchTab(item,e){

	if(navigator.userAgent.match("Gecko")){
		c=e.which;
	} else{
		c=e.keyCode;
	}
	if(c==9){
		replaceSelection(item,String.fromCharCode(9));
		setTimeout("document.getElementById('"+item.id+"').focus();",0);	
		return false;
	}	    
}
