//VALIDATE ANY FORM FIELD BY FIELD

//**NOTE**: This function requires a controlling "validateForm" function custom to the particular form 
// 					(**EXAMPLE**)
//					function validateForm(formIndex)
//					{
//						isValid = new Boolean(true);
//						
//						isValid = validateField(formIndex, "frmCusFixId", "String", "Fixture Id", 0);
//						
//						isValid = validateField(formIndex, "frmMan", "String", "Manufacturer", 0);
//						
//						isValid = validateField(formIndex, "frmModel", "String", "Model", 0);
//						
//						isValid = validateField(formIndex, "frmAddress", "String", "Address", 0);
//						
//						if(isValid == true)
//						{
//			7				document.forms[formIndex].submit();
//						}
//					}



//Argument Definitions
// formindex (int):
//					Indicates index of form being validated in document object forms collection.
// field (string) :	
//					Indicates name of form field in the form object elements collection.
// datatype (string):
//					Indicates type of data to verify, all form values are cast as strings, however this is where
//					one can restrict data types if neccessary
// alias (string): 
//					Indicates an English name for the field to use in the error message.
// validationlevel (int): 
//					Indicates level at which to validate data.
//					0 = Only validate that data exists.
// 					1 = Validate data based on "datatype"
// OPTIONAL 
//format(string):
//					Describes format of data, as of now only date is supported in the form of:
//						m = single month digit
//						d = single day digit
//						y = single day digit
//						"/" = a delimiter
//						"-" = a delimiter
//						"." = a delitmiter


//TODO:
//		Only "text" and "submit-one" field types are supported, need to add remaining form-field types.
//		 Only "Level 0" validation is supported now, need to add additional levels, including data masks.
//    

function validateField(formindex, field, datatype, alias, validationlevel, minVal, maxVal)
{ 

   switch(validationlevel)
	{
	case 0:
			switch(document.forms[formindex].elements[field].type)
			{
				case "text":
					if(document.forms[formindex].elements[field].value.length <= 0)
					{
						alert(alias + " cannot be blank!!");
						return false;
					}
					else
					{
						return true;
					}
					break;
				
				case "select-one":

					if(document.forms[formindex].elements[field].options[document.forms[formindex].elements[field].selectedIndex].value.length <= 0 || document.forms[formindex].elements[field].options[document.forms[formindex].elements[field].selectedIndex].value == 'NULL')
					{
						alert("Please select a " + alias + "!!");
						return false;
					}
					else
					{
						return true;
					}
					break;
               
            case "textarea":
               if(document.forms[formindex].elements[field].value.length <= 0)
               {
                  alert(alias + " cannot be blank!!");
                  return false;
               }
               else
               {
                  return true;
               }
               break;
            case "password":
                          if(document.forms[formindex].elements[field].value.length <= 0)
                          {
                             alert(alias + " cannot be blank!!");
                             return false;
                          }
                          else
                          {
                             return true;
                          }
               break;
            case "radio":
                          alert(CAUGHT);
                          if(document.forms[formindex].elements[field].value.length <= 0)
                          {
                             alert(alias + " cannot be blank!!");
                             return false;
                          }
                          else
                          {
                             return true;
                          }
               break;               
		
				default:
					break;	
			}
			
			break;

	case 1:   
         switch(datatype)
         {
            case "INT":
            
            
               fieldVal = document.forms[formindex].elements[field].value;

               NaN = false;

               for(x=0;x<fieldVal.length;x++)
               {
                  if(isNaN(parseInt(fieldVal.charAt(x))))
                     {
                        NaN = true;   
                     }
               }
            
               
            
               if (document.forms[formindex].elements[field].value != null && !NaN)
               {
                  if(minVal == "INF")
                  {                  
                     if(maxVal == "INF")
                     {
                        if(document.forms[formindex].elements[field].value == null)
                        {
                           alert(alias + " must have a value");
                           return false;
                        }
                        else
                        {
                           return true;
                        }
                     }
                     else
                     {
                     }                  
                  }

                  else if(maxVal == "INF")
                  {
                     if(document.forms[formindex].elements[field].value < minVal)
                     {
                        alert(alias + " must have a value of at least " + minVal);
                        return false;
                     }
                     else
                     {
                        return true;
                     }
                  }
                  else
                  {
                     if(document.forms[formindex].elements[field].value < minVal || document.forms[formindex].elements[field].value > maxVal)
                     {
                        alert(alias + " must have a value between " + minVal + " and " + maxVal);
                        return false;
                     }
                  }
            }
            else
            {
               if(NaN)
               {
                  alert(alias + " must be a number");
               }
               else
               {
                  alert(alias + " must have a value");
               }
               
               return false;               
            }
           
           
           
           case "date":
           
               if(document.forms[formindex].elements[field].value == "")
               {
                //  alert(document.forms[formindex].elements[field].value);
                  return true;
               }
           
               var dateParts = document.forms[formindex].elements[field].value.split("/");
           
//               alert(dateParts[0] + " - " + dateParts[1] + " - " + dateParts[2]);
           
               var test = new Date(parseInt(dateParts[2],10),parseInt(dateParts[0],10),parseInt(dateParts[1],10));
               
//               alert(test.getMonth() + " - " + test.getDate() + " - " + test.getYear());

               if (test.getMonth() && test.getYear() && test.getDate())
               {
                //  alert(document.forms[formindex].elements[field].value);                  
                 return true;
               }
               else
               {
                 alert(alias + " must be a valid date with the form 'mm/dd/yyyy'");                  
                 return false;
               }
           
         }
      
   
   
   
   
			//NOTE: format must be passed as an argument for this validation level - 
         /*			switch(datatype)
			{
				case "date":
					
					//Find delimiter - JVB 8/2/01
					if(format.search('/'))
					{
						delimiter = "/";
					}
					else if(format.search('-'))
					{
						delimiter = "-";
					}
					else if(format.search('.'))
					{
						delimiter = ".";
					}
					
					//Split format string on delimiter - JVB 8/2/01					
					date = format.split(delimiter);
					
					//Find key character in each array element - JVB 8/2/01
					if(date[0].search('m'))
					{
						key[0] = 'm';
					}
					if(date[0].search('d'))
					{
						key[0] = 'd';
					}
					if(date[0].search('y'))
					{
						key[0] = 'y';
					}

					if(date[1].search('m'))
					{
						key[1] = 'm';
					}
					if(date[1].search('d'))
					{
						key[1] = 'd';
					}
					if(date[1].search('y'))
					{
						key[1] = 'y';
					}

					if(date[0].search('m'))
					{
						key[0] = 'm';
					}
					if(date[0].search('d'))
					{
						key[0] = 'd';
					}
					if(date[0].search('y'))
					{
						key[0] = 'y';
					}
					
					expression = "/" + date[0].replace("m","\d") + delimiter + date[1].replace("d","\d") + delimiter + "/";
					
					//RegExp.test()
					break;
				default:
					alert("This datatype is not yet supported");
			}
			*/
	
			break;
	
	default:
			break;
	}
}

