// Form Validator by (c)2007 Paul Imisi for The Academy of Royal Arts Ltd.
// used for validating form entries
function checkAggreement(selectionElement,msg) {
	i = 0;
	if(selectionElement.length!=undefined) { 
		l=selectionElement.length;
		for(k=0;k<l;k++) {
			if(selectionElement[k].checked==true) {
				//alert('checked');
				return true;
				break;
			} else {
				//alert('not checked' + selectionElement[k].checked);
				i++;
			}
		}
		if(i>=l) {
			alert(msg);
			return false;
		}
	} else {
		if(selectionElement.checked==true) {
				return true;
			} else {
				alert(msg);
				return false;;
			}	
	}
}

function validateUserForm(pwd,pwdconfm,username,fname,status,email) {
var msg;
msg="Please provide the following information";
pwd=document.getElementById(pwd);
pwdconfm=document.getElementById(pwdconfm);
username=document.getElementById(username);
fname=document.getElementById(fname);
status=document.getElementById(status);
email=document.getElementById(email);

	if ((!pwd.value)||(!pwdconfm.value)||((pwd.value)!=(pwdconfm.value))||(!username.value)||(!fname.value)||(!status.value)||(!email.value)) {
	
		if(!pwd.value) {
		msg=msg + "\n - Password";
		}
		if(!pwdconfm.value) {
		msg=msg + "\n - Comfirm Password";
		}
		if(!username.value) {
		msg=msg + "\n - Username";
		}
		if((pwd.value)!=(pwdconfm.value)) {
		msg=msg + "\n - Passwords Do Not Match";
		}
		if(!fname.value) {
		msg=msg + "\n - First Name";
		}
		if(!status.value) {
		msg=msg + "\n - Sex";
		}
		if(!email.value) {
		msg=msg + "\n - Email Address";
		}
		alert(msg +  "\n\n Please complete the form and submit again      ");
	} else {
		if (ValidateEmail(email)==false) {
			return;
		} else {
			document.dform.submit();
		}
	}
}

function validateMemberForm(firstname,sex,email,selfunction) {
var msg;
msg="The provide the following information";
firstname=document.getElementById(firstname);
sex=document.getElementById(sex);
selfunction=document.getElementById(selfunction);
email=document.getElementById(email);

	if ((!firstname.value)||(!sex.value)||(!selfunction.value)||(!email.value)) {
	
		if(!firstname.value) {
		msg=msg + "\n - First Name";
		}
		if(!sex.value) {
		msg=msg + "\n - Sex";
		}
		if(!email.value) {
		msg=msg + "\n - Email Address";
		}
		if(!selfunction.value) {
		msg=msg + "\n - Member's Function";
		}
		alert(msg +  "\n\n Please complete the form and submit again      ");
	} else {
		if (ValidateEmail(email)==false) {
			return;
		} else {
			document.dform.submit();
		}
	}
}

function ValidateEmail(object)
{
     var validchars = 'abcdefghijklmnopqrstuvwxyz0123456789@.-_';

     //if (ValidateEntry(object, 'Enter email address') == false) return false;

     var EmailAddress = object.value;
       
     for (var i = 0; i < EmailAddress.length; i++) {
          var letter = EmailAddress.charAt(i).toLowerCase();
          if (validchars.indexOf(letter) != -1)
              continue;
                   
          alert('Invalid character in email address: \'' + letter + '\'  ');
          object.focus();
          return false;
     }
     
     if (EmailAddress.indexOf('@') == -1 || EmailAddress.indexOf('@') == EmailAddress.length - 1 || 
         EmailAddress.indexOf('.') == -1 || EmailAddress.indexOf('.') == EmailAddress.length - 1) {
         alert('Email Address is Invalid');
         object.focus();
         return false;
     }
   
     return true;
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function ltrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/,"");
}
function rtrim(stringToTrim) {
	return stringToTrim.replace(/\s+$/,"");
}
function trimDigits(stringToTrim) {
	return stringToTrim.replace(/\s+|\s+$|[^\d]/g,"");
}

function trimCurrency(stringToTrim) {
	return stringToTrim.replace(/\s+|\s+$|[^\d\.\,]/g,"");
}

function trimLetters(stringToTrim) {
	return stringToTrim.replace(/\s+|\s+$|\d/g,"");
}
function trimAlphaNumeric(stringToTrim) {
	return stringToTrim.replace(/\s+|\s+$|[^\d\w]/g,"");
}

function validateDigit(object,objectType,validEntry, additionalValidChars)
{
     var validchars = '0123456789';
	 var entryType = 'Digits 0 - 9';
	 
	 
	 if(validEntry) {
		 if(validEntry=='A') {
		 	validchars = 'abcdefghijklmnopqrstuvwxyz';
			entryType = 'Letters A - Z';
		 } else if(validEntry=='AN') {
		 	validchars = 'abcdefghijklmnopqrstuvwxyz0123456789';
			entryType = 'Alpha-Numeric Characters 0 - 9 and A - Z';
		 } else if(validEntry=='CUR') {
		 	validchars = '0123456789.,';
			entryType = 'Alpha-Numeric Characters 0 - 9, \'.\' and \',\'';
		 }
	 }
	 
	 if(additionalValidChars) {
		 validchars = validchars + additionalValidChars;
	 }
     //if (ValidateEntry(object, 'Enter email address') == false) return false;

     var DigitField = object.value;
       
     for (var i = 0; i < DigitField.length; i++) {
          var uDigit = DigitField.charAt(i).toLowerCase();
          if (validchars.indexOf(uDigit) != -1)
              continue;
                   
          alert('Invalid character in ' + objectType + ': \'' + uDigit + '\'\t\nPlease use only ' + entryType + '. No Special character allowed\t');
         if(validEntry) {
			 if(validEntry=='A') {
				object.value = trimLetters(DigitField);
			 } else if(validEntry=='AN') {
				object.value = trimAlphaNumeric(DigitField);
			 } else if(validEntry=='CUR') {
				object.value = trimCurrency(DigitField);
			 } else {
				 object.value = trimDigits(DigitField);
			 }
		 } else {
		  object.value = trimDigits(DigitField);
		 }
		  object.focus();
          return false;
     }
     
     return true;
}

/*function choseValidator(referenceObject,object,objectType) {
	
	if(referenceObject.value=='1') {
		validEntry = 
	} else if(referenceObject.value=='A') {
		validateLetters(object,objectType);
	} else if(referenceObject.value=='AN') {
		validateAlphaNumeric(object,objectType);
	}
	validateDigit(object,objectType,);

}*/

function ValidateEntry(object, ErrMessage)
{
     //   Removes extra spaces
     str = trim(object.value);

     //   Replace with trimmed value
     object.value = str;
     if (str.length == 0) {
         alert(ErrMessage);
         object.focus();
         return false;
     }
         
     return true;
}

function limitLocked(chkLocked,fieldArray,totalChecked,referenceField,checkField) {
	var totalLocked = totalChecked.value;
	
	if(chkLocked.checked==true) {
		
		totalLocked++;
	} else {
		
		if(totalChecked.value>0) { 
			totalLocked--;
		} else {
			totalLocked=0;
		}
	}
	totalChecked.value = totalLocked;
	if((parseInt(totalLocked) + 1)>=(parseInt(referenceField.value ))) {
		if(fieldArray.length!=undefined) { 
			l=fieldArray.length;
			for(k=0;k<l;k++) {
				if(fieldArray[k].checked==false) {
					fieldArray[k].disabled=true;
					checkField[k].checked=true;
					checkField[k].disabled=false;
				} else {
					checkField[k].checked=false;
					checkField[k].disabled=true;
				}
			}
		}
	} else {
		if(fieldArray.length!=undefined) { 
			l=fieldArray.length;
			for(k=0;k<l;k++) {
				fieldArray[k].disabled=false;
				if(fieldArray[k].checked==false) {
					checkField[k].disabled=false;
				} else {
					checkField[k].checked=false;
					checkField[k].disabled=true;
				}
			}
		} else {
			fieldArray.disabled=false;
		}
	}
}

function previewRegNoFormat(dataType, dataLength, defaultValue, separator, divTarget) {
	var theFormat = '';
	var dl=0;
	var valueHolder = '';
	if(defaultValue.length!=undefined) { 
		l=defaultValue.length;
		for(k=0;k<l;k++) {
			if(defaultValue[k].value=='') {
				var typePass = 0;
				var thisValuePlaceHolder = '';
				for(dl=0;dl<(dataLength[k].value * 1);dl++) {
					if(dataType[k].value=='AN') {
						if(typePass%2==0) {
							thisValuePlaceHolder = thisValuePlaceHolder + 'A';
							typePass++;
						} else {
							thisValuePlaceHolder = thisValuePlaceHolder + '1';
							typePass++;
						}
					} else {
						thisValuePlaceHolder = thisValuePlaceHolder + '' + dataType[k].value;
					}
				} 			//for data length
				if(valueHolder!='') {
					valueHolder = valueHolder + separator + thisValuePlaceHolder;
				}
			} else {
				if(valueHolder!='') {
					valueHolder = valueHolder + separator + defaultValue[k].value;
				} else {
					valueHolder = defaultValue[k].value;
				}
			}
		}					//for array length
	} else {
		if(defaultValue.value=='') {
			var typePass = 0;
			var thisValuePlaceHolder = '';
			for(dl=0;dl<(dataLength.value * 1);dl++) {
				if(dataType.value=='AN') {
					if(typePass%2==0) {
						thisValuePlaceHolder = thisValuePlaceHolder + 'A';
						typePass++;
					} else {
						thisValuePlaceHolder = thisValuePlaceHolder + '1';
						typePass++;
					}
				} else {
					thisValuePlaceHolder = thisValuePlaceHolder + '' + dataType.value;
				}
			} 			//for data length
			if(valueHolder!='') {
					valueHolder = valueHolder + separator + thisValuePlaceHolder;
				} 
		} else {
			if(valueHolder!='') {
				valueHolder = valueHolder + separator + defaultValue.value;
			} else {
				valueHolder = defaultValue.value;
			}
		}
	}
	
	//valueHolder = valueHolder.replace(/\/|\-$/,"");
	//alert(valueHolder);
	divTarget.innerHTML = "<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\" bgcolor=\"#ECE9D8\">" +
						"<tr>" +
						  "<td bgcolor=\"#ECE9D8\" class=\"padding4px\"><div align=\"right\" class=\"formLabels\">" +
							  "<div align=\"left\">Format Preview </div>" +
						  "</div></td>" +
						"</tr>" +
						"<tr>" +
						  "<td bgcolor=\"#FFFFFF\" class=\"padding4px\"><div align=\"right\" class=\"formLabels\">" +
							  "<div align=\"left\" class=\"mainHeader14\">" + valueHolder + "</div>" +
						  "</div></td>" +
						"</tr>" +
						"</table>";
}

function setRegistrationNumber(dataValue, dataLength, separator, resultTarget, isCheck) {
	var valueHolder = '';
	var blanks = 0;
	var alerter = "The registration Number is not in the rigth format or is not complete\t";
	if(dataValue.length!=undefined) { 
		l=dataValue.length;
		
		for(k=0;k<l;k++) {
			if(dataValue[k].value=='') {
				if(isCheck) {
					if(dataValue[k].value.length<dataLength) {
						alerter = alerter + "\n Part " + (k + 1) + " requires " + dataLength + " characters";
						blanks++;
					}
				}
			} else {
				if(valueHolder!='') {
					valueHolder = valueHolder + separator + dataValue[k].value;
				} else {
					valueHolder = dataValue[k].value;
				}
			}
		}					//for array length
	} else {
		if(dataValue.value=='') {
			if(isCheck) {
				if(isCheck) {
					if(dataValue.value.length<dataLength) {
						alerter = alerter + "\n Part " + (k + 1) + " requires " + dataLength + " characters";
						blanks++;
					}
				}
			}
		} else {
			if(valueHolder!='') {
				valueHolder = valueHolder + separator + dataValue.value;
			} else {
				valueHolder = dataValue.value;
			}
		}
	}
	
	if(blanks>0) {
		alert(alerter);
		return false;
	} else {
		//alert(valueHolder);
		resultTarget.value = valueHolder.toUpperCase();
	}
}


function validateRegistrationNumber(dataValue) {
	var blanks = 0;
	var alerter = "The registration Number is not in the right format or is incomplete\t";
	if(dataValue.length!=undefined) { 
		l=dataValue.length;
		
		for(k=0;k<l;k++) {
			if(parseInt(dataValue[k].value.length)<(parseInt(dataValue[k].size) - 2)) {
				alerter = alerter + "\n Part " + (k + 1) + " requires " + (parseInt(dataValue[k].size) - 2) + " characters";
				blanks++;
				
			}
		}					//for array length
	} else {
		if(parseInt(dataValue.value.length)<(parseInt(dataValue.size) - 2)) {
			alerter = alerter + "\n Part " + (k + 1) + " requires " + (parseInt(dataValue.size) - 2) + " characters";
			blanks++;
		}
	}
	//alert(blanks);
	if(blanks>0) {
		alert(alerter);
		return false;
	} else {
		return true;
		
	}
	
}



