// JavaScript Document
var isNN = (navigator.appName.indexOf("Netscape")!=-1);

function autoTab(input,len, e) {
    var keyCode = (isNN) ? e.which : e.keyCode; 
    var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
    if(input.value.length >= len && !containsElement(filter,keyCode)) {
      input.value = input.value.slice(0, len);
      input.form[(getIndex(input)+1) % input.form.length].focus();
    }
    
  return true;
}
function containsElement(arr, ele) {
      var found = false, index = 0;
      while(!found && index < arr.length)
      if(arr[index] == ele)
        found = true;
      else
        index++;
      return found;
    }
    function getIndex(input) {
      var index = -1, i = 0, found = false;
      while (i < input.form.length && index == -1)
      if (input.form[i] == input)index = i;
      else i++;
      return index;
    }

function isDigits(value) {
  var digits="0123456789", x=value.toString();
  if(x.length) {
	var tmp = true;
    for(var i=0; i<x.length; i++){
      if(!(digits.indexOf(x.charAt(i))+1)) {
		tmp = false;
	    break;
	  }
	}
	return tmp;
  }else{
    return false;
  }
}
  
function setSelectValue(ele, val){
  var strVal1, strVal2
  for (var i = 0; i < ele.length; i ++) {
    strVal1 = ele.options[i].value;
    strVal2 = val;
    if (strVal1.toUpperCase() == strVal2.toUpperCase()) {
      ele.options[i].selected = true;
      return;    
    }  
  }
  ele.selectedIndex = -1;
}

function textCounter( field, maxlimit ) {
  if ( field.value.length > maxlimit ){
    field.value = field.value.substring( 0, maxlimit );
    return false;
  }else{
    return true;
  }
}

function Validate(fform) {	  
	  var tmpval;
	  var y = 0;
	  var x = 0;
	  var alertMsg = '';
	  //check for required fields
	  
	  for (x=0; x<fform.elements.length; x++){		  
		    if (fform.elements[x].src == 1){				
			  tmpval = fform.elements[x].value 			
		      if (tmpval.length == 0){ 
		  	     fform.elements[x].style.backgroundColor = 'yellow';		
			     if (y==0) {
				   alertMsg = 'The following fields are required: \n\n';
				   fform.elements[x].focus();
				   y=1;
			     }
				 var mySearch = '"' + fform.elements[x].title + '"\n' 
                 var index = alertMsg.indexOf(mySearch);
                 if (index == -1) {
				    alertMsg = alertMsg + '"' + fform.elements[x].title + '"\n' 
				 } 
			    
			  }else{
				  fform.elements[x].style.backgroundColor = 'white';	
			  }
		    }

	  }
	  if (alertMsg.length) {
		  alert(alertMsg);
		  return false;
	  }
	  
	  //check for validation
	  y=0;
	  for (x=0;x<fform.elements.length;x++){		  
		if (fform.elements[x].alt != '' && fform.elements[x].alt){
			  //alert(fform.elements[x].name + ':' + fform.elements[x].alt) 
			  
			  switch(fform.elements[x].alt){
                case 'email':
				    var str = fform.elements[x].value;
					
				    if (window.RegExp) {
                      var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
                      var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
                      var reg1 = new RegExp(reg1str);
                      var reg2 = new RegExp(reg2str);
                      if (!reg1.test(str) && reg2.test(str)  || str == ''){
					    //return true;
						fform.elements[x].style.backgroundColor = 'white';	
					  }else{
                        //return false;
						if (y==0) {				
					      alertMsg = 'Your information could not be submited for the following reason(s): \n\n';
				          fform.elements[x].focus();
				          y = 1;
			            } 
					    fform.elements[x].style.backgroundColor = 'yellow';	
					    alertMsg = alertMsg + '"' + fform.elements[x].title + '" is not a valid email address.\n' 
					  }
                   } else {
                      if(str.indexOf("@") >= 0 || str == ''){
                        //return true;
						fform.elements[x].style.backgroundColor = 'white';	
					  }else{
                        //return false;
						if (y==0) {				
					      alertMsg = 'Your information could not be submited for the following reason(s): \n\n';
				          fform.elements[x].focus();
				          y = 1;
			            } 
					    fform.elements[x].style.backgroundColor = 'yellow';	
					    alertMsg = alertMsg + '"' + fform.elements[x].title + '" is not a valid email address.\n' 

					  }
                   }							          
                   break ;
				case 'digits':
				case 'digit':
				  if (isDigits(fform.elements[x].value) || fform.elements[x].value == '') {
				    fform.elements[x].style.backgroundColor = 'white';	
				  }else{
					fform.elements[x].style.backgroundColor = 'yellow';	
					
	
					var mySearch = '"' + fform.elements[x].title + '" is not a valid number.\n'   
                    var index = alertMsg.indexOf(mySearch);
                    if (index = -1) {
					  alertMsg = alertMsg + '"' + fform.elements[x].title + '" is not a valid number.\n'   
					}
				  }				  
				  break;
				case 'zip':
				   var z=fform.elements[x].value;  // put zipCode into working var
                   var digits="0123456789";
                   var flag=true; // innocent til proven guilty
                   if (z.length > 0) {
				     if(z.length==10) {
                      if(z.charAt(5)!='-')
                        flag=false;
                      else
                        z=z.substr(0, 5)+z.substr(6, 4);
                     }
                     switch(z.length) {
                       case 5:
                       case 9:
						  for(var i=0;i<z.length;i++)
							if(digits.indexOf(z.charAt(i))<0) flag=false;   // invalid digit character
						  break;    
                       default:
                          flag=false;
                      }
					  if(flag) {
                       fform.elements[x].style.backgroundColor = 'white';	   
                      }else{                       
					   fform.elements[x].style.backgroundColor = 'yellow';	
					   alertMsg = alertMsg + '"' + fform.elements[x].title + '" is not a valid zip code.\n'
			          }
				   }
				    break;

                     case 'time':
			if (IsValidTime(fform.elements[x].value) || fform.elements[x].value == '') {
			    fform.elements[x].style.backgroundColor = 'white';	
			}else{
			    fform.elements[x].style.backgroundColor = 'yellow';	
			    alertMsg = alertMsg + '"' + fform.elements[x].title + '" is not a valid time.\n'   
			}				  
			break;





              }			  
		}
	  }
	  //alert(alertMsg.length)
	   if (alertMsg.length) {
		  alert(alertMsg);
		  return false;
	   }else{
	      return true;
	   }
	  
	  
  }

function setRadioValue(ele, val){
  var strVal1, strVal2
  for (var i = 0; i < ele.length; i ++) {
    strVal1 = ele[i].value;
    strVal2 = val;
    if (strVal1.toUpperCase() == strVal2.toUpperCase()) {
      ele[i].checked = true;
      return;    
    }  
  }
}

function IsValidTime(timeStr) {
// Checks if time is in HH:MM:SS AM/PM format.
// The seconds and AM/PM are optional.

var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;

var matchArray = timeStr.match(timePat);
if (matchArray == null) {
//alert("Time is not in a valid format.");
return false;
}
hour = matchArray[1];
minute = matchArray[2];
second = matchArray[4];
ampm = matchArray[6];

if (second=="") { second = null; }
if (ampm=="") { ampm = null }

if (hour < 0  || hour > 23) {
//alert("Hour must be between 1 and 12.");
return false;
}
if (minute<0 || minute > 59) {
//alert ("Minute must be between 0 and 59.");
return false;
}
if (second != null && (second < 0 || second > 59)) {
//alert ("Second must be between 0 and 59.");
return false;
}
return true;
}
