// JavaScript Document
<!--
function validateInput(frm, mask){

	//Count the number of form elements
	var FrmLen = frm.elements.length;
 
	//Get the validation mask string
	var maskarr = mask;
	//Loop through all the form elements
	for (var i = 0; i < FrmLen; i++) {
		//obtain the validation mask character
		maskarr = mask.substring(i,i+1)

		//Initialise local variables
		var valdate = 1;
		var valdatetime = 1;
		var valtext = 1;
		var valnum = 1;
		var valint = 1;
		var valtelenum = 1;
		var valmobnum = 1;
		var valemail = 1;
		var valpswd = 1;

	//Test field against validation mask character
	if (maskarr == "d") {
            if (frm.elements[i].value != "") {
		valdate = validateDate(frm.elements[i].value)
            }
	}
	if (maskarr == "D") {
		valdate = validateDate(frm.elements[i].value)
	}
	if (maskarr == "a") {
            if (frm.elements[i].value != "") {
		valdatetime = validateDateTime(frm.elements[i].value)
            }
	}
	if (maskarr == "A") {
		valdatetime = validateDateTime(frm.elements[i].value)
	}
	if (maskarr == "t") {
            if (frm.elements[i].value != "") {
		valtext = validateText(frm.elements[i].value)
            }
	}
	if (maskarr == "T") {
		valtext = validateText(frm.elements[i].value)
	}
	if (maskarr == "n") {
            if (frm.elements[i].value != "") {
		valnum = validateNum(frm.elements[i].value)
            }
	}
	if (maskarr == "N") {
		valnum = validateNum(frm.elements[i].value)
	}
	if (maskarr == "i") {
            if (frm.elements[i].value != "") {
		valint = validateInt(frm.elements[i].value)
            }
	}
	if (maskarr == "I") {
		valint = validateInt(frm.elements[i].value)
	}
	if (maskarr == "p") {
            if (frm.elements[i].value != "") {
		valtelenum = validateTeleNum(frm.elements[i].value)
            }
	}
	if (maskarr == "P") {
		valtelenum = validateTeleNum(frm.elements[i].value)
	}
	if (maskarr == "m") {
            if (frm.elements[i].value != "") {
		valmobnum = validateMobNum(frm.elements[i].value)
            }
	}
	if (maskarr == "M") {
		valmobnum = validateMobNum(frm.elements[i].value)
	}
	
	if (maskarr == "e") {
            if (frm.elements[i].value != "") {
		valemail = validateEmail(frm.elements[i].value)
            }
	}
	if (maskarr == "E") {
		valemail = validateEmail(frm.elements[i].value)
	}
	
	if (maskarr == "y") {
            if (frm.elements[i].value != "") {
		valpswd = validatePswd(frm.elements[i].value)
            }
	}
	if (maskarr == "Y") {
		valpswd = validatePswd(frm.elements[i].value)
	}
	

	//If the validation fails prompt the user
	if (! valdate)
	{
		alert("The date you have entered is invalid. Please check it again (dd/mm/yyyy)!");
		putFocus(frm.elements[i]);
		return false;
	}
	if (! valdatetime)
	{
		alert("The date or time you have entered is invalid");
		putFocus(frm.elements[i]);
		return false;
	}
	if (! valtext)
	{
		alert("Please complete the required missing field(s)!");
		putFocus(frm.elements[i]);
		return false;
	}
	if (! valnum)
	{
		alert("Please enter a valid age number!");
		putFocus(frm.elements[i]);
		return false;
	}
	if (! valint)
	{
		alert("Please enter a number for your group!");
		putFocus(frm.elements[i]);
		return false;
	}
	if (! valtelenum)
	{
		alert("Please enter a valid telephone number!");
		putFocus(frm.elements[i]);
		return false;
	}
	if (! valmobnum)
	{
		alert("Please enter a valid Mobile number");
		putFocus(frm.elements[i]);
		return false;
	}
	if (! valemail)
	{
		alert("Please check and enter an email address!");
		putFocus(frm.elements[i]);
		return false;
	}
	
	}
	return true;
}

//Date validation function
function notBlank(str) {
	for (i = 0; i < str.length; i++) {
		if (str.charAt(i) != " ")
			return true
	}
	return false;
}

function validateDate(s)
{
        months = new Array(31,28,31,30,31,30,31,31,30,31,30,31)
	//Test for a string
        if (s)  {
            if ((s.length > 0) && notBlank(s))
	{
		//Create an array to split the date into (dd/mm/yyyy)
		strarr = new Array ()

		//Use own split function as JScript does not include JavaScripts split function
		own_split(strarr, s, "/");
		
		//3 array elements means day, month, and year
		if (strarr.length == 3)
		{
			if ((strarr[2] < 1) || (strarr[2] >9999)){
				return false;
			}
			var d = new Date();
					d= d.getYear();
			if (strarr[2] < d) {								
				return false;
			}
			if (strarr[2] == d) {	
				var m = new Date();
				m= m.getMonth() + 1;		
				
				if (strarr[1] == m) {
					var today = new Date();
					today= today.getDay();	
					if ((strarr[0] < today) || (strarr[0] == today)) {							
					return false;
					}
				}
				
				if (strarr[1] < m) {							
					return false;
				}
			}
			if ((strarr[1] < 1) || (strarr[1] >12)){
				return false;
			}
                        if ((((strarr[2]%4) == 0) && ((strarr[2]%100) != 0)) || ((strarr[2]%1000) == 0)){
				months[1] = 29 
                        }
                        month = new Number(strarr[1]);
                        month--;
			if ((strarr[0] < 0) || (strarr[0] > months[month])){
				return false;
			}
			return true;
		}
		return false;
	}
	return false;
    }    
    return false;
}

//Text validation function
function validateText(s)
{
	//test for a string
    if (s) {
	    if ((s.length > 0) && notBlank(s))
	{
		return true;
	}
	return false;
    }    
    return false;
}

//datetime validation function
function validateDateTime(s) {

    //Test for a string
    if (s) {
        if ((s.length > 0) && notBlank(s)) {

            //Create an array to split the date into (date time)
	    strarr2 = new Array ()

	    //Use own split function as JScript does not include JavaScripts split function
	    own_split(strarr2, s, " ");
		
	    //2 array elements means date and time
	    if (strarr2.length == 2) {
    	        if (validateDate(strarr2[0])) {
 		    strarr3 = new Array ();
    		    own_split(strarr3, strarr2[1], ":");
         	    if (strarr3.length == 2) {
		        if ((strarr3[0] < 0) || (strarr3[0] > 23)) {
   		            return false;
		        }
		        if ((strarr3[1] < 0) || (strarr3[1] > 59)){
  		            return false;
		        }
		        return true;
		    }
   	            return false;
	        }
 	        return false;
	    }
	    return false;
        }
        return false;
    }    
    return false;
}

//Number validation function
function validateNum(s)
{
if ((s) && notBlank(s)) {
        fnum = 0;
        fdot = 0;
        fspace = 0;
	for (i = 0;  i < s.length;  i++) {
            fok = 0;
            ch = s.charAt(i);
	    if ((ch >= "0") && (ch <= "9")) {
                fok = 1;
                if (fspace == 1) {
                    return false;
                } else {
                    fnum = 1;
                }
            }
	    if (ch == " ") {
                fok = 1;
                if (fnum == 1) {
                    fspace = 1;
                }
            }
	    if (ch == ".") {
                fok = 1;
                if (fdot == 1) {
                    return false;
                }
                fdot = 1;
            }
	    if (!fok) {
                return false;
	    }
	}
	return true;
    }    
    return false;
}

//Integer validation function
function validateInt(s)
{
if ((s) && notBlank(s)) {
	if (s==0) {
	 return false;
	}
        fnum = 0;
        fdot = 0;
        fspace = 0;
        fminus = 0;
	for (i = 0;  i < s.length;  i++) {
            fok = 0;
            ch = s.charAt(i);
	    if ((ch >= "0") && (ch <= "9")) {
                fok = 1;
                if (fspace == 1) {
                    return false;
                } else {
                    fnum = 1;
                }
            }
	    if (ch == " ") {
                fok = 1;
                if (fnum == 1) {
                    fspace = 1;
                }
            }
	    if (ch == ".") {
                fok = 1;
                if (fdot == 1) {
                    return false;
                }
                fdot = 1;
            }
        if (ch == "-") {
			fok=1;
			if (fdot == 1) {
				return false;
			}
			if (fminus == 1) {
				return false;
        	}
        	fminus=1;
        }
	    if (!fok) {
                return false;
	    }
	}
	return true;
    }    
    return false;
}
//Telephone Number validation function
function validateTeleNum(s)
{
if ((s) && notBlank(s) &&(s.length > 5)) {
	//Test for a string
	if (s.length > 0)
	{
		for (i = 0;  i < s.length;  i++)
 		{
		    	ch = s.charAt(i);
			if(! own_instring(ch))
			{
			return false;
			}
		}
		return true;
	}
	return false;
    }    
    return false;
}
//Mobile Number validation function
function validateMobNum(s)
{
if ((s) && notBlank(s) &&(s.length > 10)) {
	//Test for a string
	if (s.length > 0)
	{
		for (i = 0;  i < s.length;  i++)
 		{
		    	ch = s.charAt(i);
			if(! own_instring(ch))
			{
			return false;
			}
		}
		return true;
	}
	return false;
    }    
    return false;
}
//Email validation function
function validateEmail(s)
{
if ((s) && notBlank(s)) {
	//Test for a string
	if (s.length > 0)
	{
		// Return false if e-mail field does not contain a '@' and '.' .
		if (s.indexOf ('@',0) == -1 || s.indexOf ('.',0) == -1)
      			{
			return false;
			}
			//return false if a space is in the email address
		if (s.indexOf (' ',0) != -1)
      			{
			return false;
			}		
		//return false if a comma is in the email address
		if (s.indexOf ('!',0) != -1)
      			{
			return false;
			}			
			//return false if a quote is in the email address
		if (s.indexOf ('"',0) != -1)
      			{
			return false;
			}	
		//return false if a singlequote is in the email address
		if (s.indexOf ('/',0) != -1)
      			{
			return false;
			}		
		//return false if a semicolon is in the email address
		if (s.indexOf (';',0) != -1)
      			{
			return false;
			}	
		//return false if last character is dot
		if (s.charAt(s.length - 1)== '.')      			
				{
			return false;
			}		
		//return false if a hash is in the email address
		if (s.indexOf ('#',0) != -1)
      			{
			return false;
			}		
		//return false if a bracket is in the email address
		if (s.indexOf ('(',0) != -1)
      			{
			return false;
			}	
		//return false if a comma is in the email address
		if (s.indexOf (',',0) != -1)
      			{
			return false;
			}
		//return false if a bracket is in the email address
		if (s.indexOf (')',0) != -1)
      			{
			return false;
			}			
		return true;
	}
	return false;
    }    
    return false;
}


function own_instring(c)
{
	var checkOK = "0123456789ext-ex+x-. ()\t\r\n\f";
	var ret  = false;

  		for (j = 0;  j < checkOK.length;  j++)
		{
      			if (c != checkOK.charAt(j))
			{
			continue;
			}
			else
			{
			ret = true;
			break;
			}
		}
	return ret;
}

function own_split(arr, str, delim)
{
	//Initialise local variables
	var pos = 0;
	var num = 0;
	var start = 0;
	
	//Loop while there are characters in the string
	while (pos < str.length)
	{
		//Loop while there are delimiters in the string
		while((str.substring (pos, pos+1) != delim) && (pos < str.length))
		{
		pos++;
		}
		//Add the new characters to the output array
		arr[num] = str.substring(start,pos);
		num++;
		start = pos+1;
		pos++;
	}
}

function putFocus(elementStr)
   {
   elementStr.focus();
   }
//-->