var vVal_msg;
var vVal_counter;
var vVal_controls;
var vVal_concounter;

function vResetControls(){
	vVal_controls = new Array();
	vVal_concounter = -1
}

function vAddControl(asName){
	vVal_concounter += 1
	vVal_controls[vVal_concounter] = asName
}


function vValMain(){

     
   
            
	vVal_msg = new Array();
	vVal_counter = 0;
	var i;
	var li_ret;
	var element;
	
	// go through form
	// validate required attribute
	// validate numeric attribute
	// if numeric validate min/max
	// if alpha, validate min characters
	// No date validation yet

	//for (var i=0; i < frmMain.elements.length; i++) {
	//var element = frmMain.elements[i];
 
	for (i=0;i<vVal_controls.length;i++)	{
         
		element = getElementById_s(vVal_controls[i])
	 
		if (vPassRequired(element) == true){	
			if (vPassNumeric(element))	{	
				vPassNumericRange(element)
			}
			else{
				vPassAlphaMinRange(element)
			}
		}
	}
	
	// call page specific validate function
	//if( typeof p_ValOther == 'function' ) {p_ValOther()}
}

function vPassAlphaMinRange(element){
	var lt;
	lt = vTrim(element.value)
	if ((element.getAttribute('t') != null) && (element.getAttribute('t') == 'A')){
		if ((element.getAttribute('lmin') != null) && (element.getAttribute('lmin') != '')){
			if (lt.length < element.getAttribute('lmin')){
				vAddMessage (element.getAttribute('ldisname') + " has a minimum of " + element.getAttribute('lmin') + " characters.")	
			}
		}
	}
}

function vPassNumericRange(element){

	
	if (vTrim(element.value) != ""){
		if ((element.getAttribute('lmin') != null) && (element.getAttribute('lmin') != "")) {
			if (Number(element.value) < Number(element.getAttribute('lmin'))){
				vAddMessage (element.getAttribute('ldisname') + " is below the minimum value.")
			}
		}
	}

	if (vTrim(element.value) != ""){
		if ((element.getAttribute('lmax') != null) && (element.getAttribute('lmax') != "")) {
			if (Number(element.value) > Number(element.getAttribute('lmax'))){
				vAddMessage (element.getAttribute('ldisname') + " is above the maximum value.")
			}
		}
	}
}


function vPassNumeric(element){

	if ((element.getAttribute('t') != null) && (element.getAttribute('t') == 'N')){
		if (vIsNumeric(element)){
			return true
		}
		else{
			vAddMessage (element.getAttribute('ldisname') + " must be numeric")
			
			return false 
		}
	}
	else{
		return false
	}

}

function vIsNumericInt(val){

	var IsNum=true; 
	var i;
 	
	var ValidChars = "0123456789";
	
	var Char;
	var sText = vTrim(val);
 
    if (sText==''){
        return false;
    }
 
	for (i = 0; i < sText.length && IsNum == true; i++) 
	{ 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
			IsNum = false;
        }
    }
   return IsNum;
 }
 
function vIsNumeric(element){

	var IsNum=true; 
	var i;
	// if not required, its ok to have empty
	
	if (((element.getAttribute('lreq') == null) || (element.getAttribute('lreq') == 'N')) && (vTrim(element.value) == "")) {return true}
	
	var ValidChars = "0123456789.";
	
	var Char;
	var sText = vTrim(element.value);
 
	for (i = 0; i < sText.length && IsNum == true; i++) 
	{ 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
			IsNum = false;
        }
    }
   return IsNum;
 }

function vPassRequired(element){

     
	if ((element.getAttribute('lreq') != null) && (element.getAttribute('lreq') == 'Y')){
 
		if (vTrim(element.value) == ""){
			vAddMessage (element.getAttribute('ldisname') + " is required")
			return false 
		}
		else{
			return true
		}
	}
	else{
	 
		return true
	}
}
    
function vTrim (sString){

	while (sString.substring(0,1) == ' ')
	{
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

function vAddMessage(asString) {
	vVal_msg[vVal_counter] = asString 
	vVal_counter += 1	
}

function getElementById_s(id){
	
//alert(id)
//	obj = document.getElementById(id);
//	return obj;
	
	var obj = null;
	if(document.getElementById){
		obj = document.getElementById(id);
	}
	else{
		if(document.all){

			obj = document.all[id];
		}
	}
	return obj;
}

function vEmailcheck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		
		
		var invalidChars = '\/\'\\ ";:?!()[]\{\}^|';
		for (i=0; i<invalidChars.length; i++) {
		   if (str.indexOf(invalidChars.charAt(i),0) > -1) {
			  if (db) alert('email address contains invalid characters');
			  return false;
		   }
		}

		if (str.indexOf(at)==-1){

		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		  
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		   
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    
		    return false
		 }

 		 return true					

}

