function strlen(str)
{
	var i;
	var len;
	len = 0;
	for (i=0; i< str.length; i++)
	{
		if (str.charCodeAt(i)>255) len+=2; else len++;
	}
	return len;
}

/*check string is null or not*/
function isnull(str)
{
	var i;
	for (i=0;i<str.length;i++)
	{
		if (str.charAt(i)!=' ') return false;
	}
	return true;
}

/*string is all numbers */
function isnumber(str)
{
	var number_chars = "1234567890-";
	var i;
	for (i=0;i<str.length;i++)
	{
		if (number_chars.indexOf(str.charAt(i))==-1) return false;
	}
	return true;
}

function istext(str)
{
	var number_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ";
	var i;
	for (i=0;i<str.length;i++)
	{
		if (number_chars.indexOf(str.charAt(i))==-1) return false;
	}
	return true;
}

function isnumtxt(str)
{
	var number_chars = "1234567890_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ#. ";
	var i;
	for (i=0;i<str.length;i++)
	{
		if (number_chars.indexOf(str.charAt(i))==-1) return false;
	}
	return true;
}

function isemail(str)
{
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	if (filter.test(str)) {
		return true;
	} else {
		return false;
	}
}

function isuserid(str)
{
	var number_chars = "1234567890_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.@";
	var i;
	for (i=0;i<str.length;i++) {
		if (number_chars.indexOf(str.charAt(i))==-1) return false;
	}
	return true;
}

function ispassword(str)
{
	var number_chars = " ";
	var i;
	for (i=0;i<str.length;i++) {
		if (number_chars.indexOf(str.charAt(i)) != -1) return false;
	}
	return true;
}


/*check the length */
function verifyInput(input)
{
	var image;
	var i;
	var error = false;
	var chname = input.getAttribute("chname");
	
	if (strlen(input.value)<parseInt(input.getAttribute("minsize"))) /* check length*/
	{
		alert("The length of "+chname+" must be "+input.getAttribute("minsize")+" or more characters");
		error = true;
	}
	else if (strlen(input.value)>parseInt(input.getAttribute("maxsize")))
	{
		alert("The length of "+chname+" must be "+input.getAttribute("maxsize")+" or less characters");
		error = true;
	}
	else if (input.getAttribute("nullable")=="no" && isnull(input.value)) /* check null*/
	{
		alert("Please input "+chname);
		error = true;
	}
	else
	{
		/* check data type,numbers,txt,numbertxt*/
		switch(input.getAttribute("datatype"))
		{
			case "number": if (isnumber(input.value)==false)
			{
				alert("Numbers only in the "+chname+" field");
				error = true;
			}
				break;
			case "text": if (istext(input.value)==false)
			{
				alert("Text only in the "+chname+" field");
				error = true;
			}
				break;
			case "email": if (isemail(input.value)==false)
			{
				alert("Please enter a valid email in the "+chname+" field");
				error = true;
			}
				break;
			
			case "numtxt": if (isnumtxt(input.value)==false)
			{
				alert("Alpha and numeric characters only in the "+chname+" field");
				error = true;
			}
				break;
			
			case "userid": if (isuserid(input.value)==false)
			{
				alert(chname+" can only contain the characters A-z, 0-9, underscore, dot and @.  ");
				error = true;
			}
			break;
			
			case "password": if (ispassword(input.value)==false)
			{
				alert(chname+" can only contain uppercase and lowercase letters, numbers and standard English keyboard symbols.");
				error = true;
			}
				break;
			
			default:
				break;
		}
	}
	
	if (error)
	{
		return false;
	}
	else
	{
		return true;
	}
}


function verifyAll(myform)
{
	var i;
	for (i=0;i<myform.elements.length;i++)
	{
		/*if chname=undefined then continue*/
		if (myform.elements[i].getAttribute("chname")+""=="undefined") continue;
		
		/* check all elements*/
		if (verifyInput(myform.elements[i])==false)
		{
			myform.elements[i].focus();
		
			return false;
		}
	}
	return true;
}
