    // Validator Object
    var valid = new Object();

    // REGEX Elements

        // all available characters
        valid.allavailable = /\w/;

        // matches zip codes
        valid.zipCode = /(^\d{5}$)|(^\d{5}-\d{4}$)/;

        // matches $17.23 or $14,281,545.45 or ...
        valid.Currency = /\$\d{1,3}(,\d{3})*\.\d{2}/;

        // matches 17.23 or 14,281,545.45 or ...
        valid.CommonNumbers = /\d{1,3}(,\d{3})*[\.\d{2}]/;

        // matches 17.23 or 14,281,545.45 or ...
        valid.SomeNumbers = /^\d{1,6}/;

        // matches 5:04 or 12:34 but not 75:83
        valid.Time = /^([1-9]|1[0-2]):[0-5]\d$/;

        //matches email
        valid.emailAddress = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;

        // matches phone ###-###-####
        valid.phoneNumber = /^\(?\d{3}\)?\s|-\d{3}-\d{4}$/;

        // International Phone Number
        valid.phoneNumberInternational = /^\d(\d|-){7,20}/;

        // IP Address
        valid.ipAddress = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;

        // Date xx/xx/xxxx
        valid.Date = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/;
//        valid.Date = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/;

        // percentage
        valid.Percent =  /^\d{2}$/;

        // State Abbreviation
        valid.State = /^(AK|AL|AR|AZ|CA|CO|CT|DC|DE|FL|GA|HI|IA|ID|IL|IN|KS|KY|LA|MA|MD|ME|MI|MN|MO|MS|MT|NB|NC|ND|NH|NJ|NM|NV|NY|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VA|VT|WA|WI|WV|WY)$/i;

        // Social Security Number
        valid.SSN = /^\d{3}\-\d{2}\-\d{4}$/;
		
		// 255 characters
		valid.Count = /\w/;
		
		// limit 10 selections
		valid.Limit = /\w/;


    function validateForm(theForm) {
        var elArr = theForm.elements.length;		
        for(var i = 0; i < elArr; i++) {
			with(theForm.elements[i]) {
				var v = theForm.elements[i].id;
				var rq = theForm.elements[i].title;
				
				if(!v) continue;

				var thePat = valid[v];
				var gotIt = thePat.exec(value);

//				if(value.length>0) {
				if(value.length>0 || rq=="Required") {
        	      if(! gotIt){
				  	if(value.length>0){err="is invalid.";}else{err="is required.";}
        	         alert("Error: " + name + " " + err);
        	         theForm.elements[i].focus();
//        	         theForm.elements[i].select();

        	         return false;
        	      }
				}
			  
			  // Check date if field is not empty. Accepts valid date or empty date.
			  if(value.length>0 && rq=="Required2")
			  {
        	      if(! gotIt)
				  {
					err="is invalid.";
        	        alert("Error: " + name + " " + err);
        	       	theForm.elements[i].focus();
        	        return false;
        	      }
			  }

			  if(v=="Count" && value.length > 255)
			  {
				  err="needs to be less than 255 characters. \n[Currently:" + value.length + "]";
				  alert("Error: " + name + " " + err);
       	         theForm.elements[i].focus();
				  return false
			  }
				
			  if(v=="Limit") 
			  {
			  	  var x, xcount
				  xcount = 0
			  	  for (x=0;x<theForm.elements(name).length;x++)
				  {
				  	if(theForm.elements(name)[x].checked){
				  		xcount=xcount+1;
					}
				  } 
				  if(xcount == 0)
				  {
				  	  //err="- Please make 10 or less selections. You have selected "+ xcount + " items.";
					  err="is required.";
					  alert("Error: " + name + " " + err);
					  return false		  
				  } 
				} // End Limit

			}
        }
        return true;
    }
	
	//pre-select items of a drop-menu
	function boxSelect(formName, boxName, selectThis) {
		var myelements = document.forms[formName].elements[boxName];
		var optlength; 
		optlength = myelements.length;
	
		if(selectThis.length > 0) {
			for(i=0;i<optlength;i++) {
				if(myelements[0].type == "radio") {
					if (myelements[i].value == selectThis) 
						myelements[i].checked = true;
				}else{
					if (myelements.options[i].value == selectThis) 
						myelements.options[i].selected = true;
				}
			}
		}
	}


//	function SSN(a){
//		if((a.value.length==3)||(a.value.length==6)){a.value=a.value + "-";}
//	}

//	function Phone(a){
//		if((a.value.length==3)||(a.value.length==7)){a.value=a.value + "-";}
//	}