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

    // REGEX Elements
	vcqk.notEmpty = /\S/;
	vcqk.phoneNumber = /\d{10}/;
	vcqk.zipCode = /\d{5}(-\d{4})?/;
	vcqk.Currency = /\$\d{1,3}(,\d{3})*\.\d{2}/;
	vcqk.Integer = /^\d{1,6}$/;
	vcqk.Floating = /^(\d{1,6}){1}((\.\d{1,6})?)$/;
	vcqk.Time = /^([1-9]|1[0-2]):([0-5]\d).(am|pm)$/;
	vcqk.email = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
	//cqk.phoneNumber = /^\(?\d{3}\)?\s|-\d{3}-\d{4}$/;
	vcqk.phoneNumberInternational = /^\d(\d|-){7,20}/;
	vcqk.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])$/;
	//vcqk.Date = /^\d{2}\/\d{2}\/\d{4}$/;
	vcqk.Date = /^((0[1-9]|1[0-2])\/){1}((0[1-9]|1[0-9]|2[0-9]|3[0-1])\/){1}(19[0-9][0-9]|20[0-9][0-9]){1}$/;
	vcqk.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;
	vcqk.SSN = /^\d{3}\-\d{2}\-\d{4}$/;
    
    function checkForm(theForm) {
    var elArr = theForm.elements; 
    var err = 0;
		var firsterror = '';
		for(var i = 0; i < elArr.length; i++) {
		  with(elArr[i]) { 
        var v = elArr[i].getAttribute('vtip');
			  var r = elArr[i].getAttribute('vreq');
			  var nn = elArr[i].getAttribute('vnnull');
			  if ((nn) && (value.length > 0)) {
			  	r = true;
			  } else if ((nn) && (value.length == 0)) {
				  v = false;
				  elArr[i].className='txt';
				  document.getElementById('error'+name).innerHTML = '';
			  }
			  
        if(!v) continue;
        //alert(name);
		switch (type) {
	  case 'hidden':
          //
          break;
		
		  case 'text':
				var thePat = vcqk[v];
				if (elArr[i].getAttribute('vtip') == 'phoneNumber') {
				 	value = value.replace(/[^\d]/g, "");
					if ((value.substring(0,1) == 0) || (value.substring(0,1) == 1)) {
						thelength = (value.length - 1);
						value = value.substring(1,thelength);
					}
				}
				var gotIt = thePat.exec(value); 
				if ((! gotIt) || (gotIt == null)) {
		        	//alert(name + ": failure to match " + v + " to " + value);                  
		            elArr[i].select();
		            elArr[i].focus(); 
					elArr[i].className='error';
					if (r) {
					 	err++;
						if (value.length == 0) {
							if (err == 1) { firsterror = name + ' (required)'; }
							document.getElementById('error'+name).className = 'errormsg';
							//document.getElementById('error'+name).innerHTML = '(required)';
						} else {
							if (err == 1) { firsterror = name + ' (invalid)'; }
							document.getElementById('error'+name).className = 'errormsg';
							//document.getElementById('error'+name).innerHTML = '(check your entry)';
							}
						}
		        } else {
					if (elArr[i].getAttribute('vtip') == 'phoneNumber') {
						elArr[i].value = value.substring(0,3)+ "-" + value.substring(3,6) + "-" + value.substring(6,10);
					}
					elArr[i].className='inputsize';
					document.getElementById('error'+name).className = 'errorhidden';
					document.getElementById('error'+name).innerHTML = '';
				}
			break;
			
			case 'textarea':
				var thePat = vcqk[v];
				var gotIt = thePat.exec(value); 
				if ((! gotIt) || (gotIt == null)) {
		        	//alert(name + ": failure to match " + v + " to " + value);                  
		            elArr[i].select();
		            elArr[i].focus(); 
					elArr[i].className='error';
					if (r) {
						err++;
						if (value.length == 0) {
							if (err == 1) { firsterror = name + ' (required)'; }
							document.getElementById('error'+name).className = 'errormsg';
							//document.getElementById('error'+name).innerHTML = '(required)';
						 } else {
							if (err == 1) { firsterror = name + ' (invalid)'; }
							document.getElementById('error'+name).className = 'errormsg';
							//document.getElementById('error'+name).innerHTML = '(check your entry)';
						}
					}
		        } else {
					if (elArr[i].getAttribute('vtip') == 'phoneNumber') {
				  		elArr[i].value = value.substring(0,3)+ "-" + value.substring(3,6) + "-" + value.substring(6,10);
				  	}
					elArr[i].className='txt';
					document.getElementById('error'+name).className = 'error';
            		document.getElementById('error'+name).innerHTML = '';
				}
			break;
			
			case 'select-one':
				if (selectedIndex == v) {
				  	elArr[i].className='errorselect';
  					if (r) {
  						err++;
  						if (err == 1) { firsterror = name + ' (required)'; }
  							document.getElementById('error'+name).className = 'errormsg';
  							//document.getElementById('error'+name).innerHTML = '(required)';
  						}
					} else {
					  	thevalue = document.forms[theForm.name].elements[name].options[document.forms[theForm.name].elements[name].selectedIndex].value
					  	elArr[i].className='txt';
					  	document.getElementById('error'+name).className = 'errorhidden';
						document.getElementById('error'+name).innerHTML = '';
					}
			break;
			
			case 'radio':
				var isGut = fieldChecked(form.elements[name]);
    			if (((! v == 0) && (fieldChecked(form.elements[v]) == r)) || (v == 0)) {
					if (isGut == false) {
						document.getElementById(name+'notice').className = 'errorbox';
						if (r) {
							if (err == 1) { firsterror = name + ' (required)'; }
								err++;
							 }
						} else {
							document.getElementById(name+'notice').className = 'txt';
						}
				}
			break;
			
			case 'checkbox':
				if (((r == 'TRUE') && (fieldCheckCount(theForm.elements[name]) == 0)) || (fieldCheckCount(theForm.elements[name]) > v))  {
					err++;
  					if (value.length == 0) {
  						if (err == 1) { firsterror = name + ' (required)'; }
  						document.getElementById('error'+name).className = 'errormsg';
  						document.getElementById('error'+name).innerHTML = '(required)';
  					} else {
  						if (err == 1) { firsterror = name + ' (invalid)'; }
  						document.getElementById('error'+name).className = 'errormsg';
  						document.getElementById('error'+name).innerHTML = '(check your entry)';
  					}
				} else {
  	              	document.getElementById('error'+name).className = 'errorhidden';
  					document.getElementById('error'+name).innerHTML = '';
             	}
			break;
		}
      }
    }
		
	if (err > 0) {
		document.getElementById('errornotice').style.visibility = 'visible';
		document.getElementById('errornotice').innerHTML = 'Please double check your entry and make sure all required fields have values.';
		return false;
	} else {
		return true;
	}
		
  }
	
	function fieldChecked(myradio) {
	    isChecked = false;
	    for (var i = 0; i < myradio.length; i++) { 
        if (myradio[i].checked){ isChecked = myradio[i].value; break; } } 
	    return isChecked;
	}
	
	function fieldCheckCount(myradio) {
	    var numCheck = 0;
	    for (var i = 0; i < myradio.length; i++) { 
        if (myradio[i].checked){ numCheck++; } } 
	    return numCheck;
	}
	
