function focusMe(obj)
{
	obj.style.background="#DDE6EF";
}

function blurMe(obj)
{
	obj.style.background="#FFFFFF";
}

function nextFocusOnEnterKey(e)
{
	if(e.keyCode==13) e.keyCode=9; 
}

function acceptOnlyNumbers(e)
{
	var isNN = (navigator.appName.indexOf("Netscape")!=-1);
	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 ((keyCode < 48 || keyCode > 57) && !containsElement(filter,keyCode)) 
    	return false;
    else return true;
}

function acceptOnlyTabs(e)
{
	var isNN = (navigator.appName.indexOf("Netscape")!=-1);
	var keyCode = (isNN) ? e.which : e.keyCode; 

    if (keyCode != 9) 
    	return false;
    else 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 autoTab(input, len, e) {
	var isNN = (navigator.appName.indexOf("Netscape")!=-1);
	var keyCode = (isNN) ? e.which : e.keyCode; 
	var filter = (isNN) ? [0,8,9] : [0,8,9,13,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();
	}
	
	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;
	}
	return true;
}

function FormatarValor(fld){
   milSep = '.';
   decSep = ',';

   var key = '';
   var i = j = len = len2 = 0;
   var strCheck = '0123456789';//+decSep
   var aux = aux2 = '';
   len = fld.value.length;

   for(; i < len; i++)
   if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) 
	    break;

   aux = '';
   for(;i < len; i++)
   if (strCheck.indexOf(fld.value.charAt(i))!=-1) 
	    aux += fld.value.charAt(i);
   
	 aux += key;
 
   len = aux.length;
   if (len > 3){
      aux2 = '';
      for (j = 0, i = len - 3; i >= 0; i--){
         if (j == 3){
            aux2 += milSep;
            j = 0;
         }
         aux2 += aux.charAt(i);
         j++;
      }
  
	   fld.value = '';
     len2 = aux2.length;  
     for (i = len2 - 1; i >= 0; i--){
        fld.value += aux2.charAt(i);
     }
     fld.value += decSep + aux.substr(len - 2, len);
   }
}

var isNav4 = false, isNav5 = false, isIE4 = false
var strSeperator = "/"; 
var vYearType = 4; 
var vYearLength = 2;
var err = 0; 

if(navigator.appName == "Netscape"){
   if (navigator.appVersion < "5"){
      isNav4 = true;
      isNav5 = false;
   }else
   		if (navigator.appVersion > "4"){
		   isNav4 = false;
		   isNav5 = true;
		}
   }
else{
	 isIE4 = true;
}

function DateFormat(vDateName, vDateValue, e, dateCheck, dateType){
   
   vDateType = dateType;
   
   if (vDateValue == "~"){
   	  alert("AppVersion = "+navigator.appVersion+" \nNav. 4 Version = "+isNav4+" \nNav. 5 Version = "+isNav5+" \nIE Version = "+isIE4+" \nYear Type = "+vYearType+" \nDate Type = "+vDateType+" \nSeparator = "+strSeperator);
	  vDateName.value = "";
	  vDateName.focus();
	  return true;
   }
   
   var whichCode = (window.Event) ? e.which : e.keyCode;
   
   if (vDateValue.length > 8 && isNav4){
   	  if ((vDateValue.indexOf("-") >= 1) || (vDateValue.indexOf("/") >= 1))
	  return true;
   }

   var alphaCheck = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-";
   
   if (alphaCheck.indexOf(vDateValue) >= 1){
   	  if (isNav4){
	  	 vDateName.value = "";
		 vDateName.focus();
		 vDateName.select();
		 return false;
	  }else{
	     vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
		 return false;
      }
   }

   if (whichCode == 8) //Ignore the Netscape value for backspace. IE has no value
   	  return false;
   else{
      //Create numeric string values for 0123456789/
	  //The codes provided include both keyboard and keypad values
	  var strCheck = '47,48,49,50,51,52,53,54,55,56,57,58,59,95,96,97,98,99,100,101,102,103,104,105';
	  
	  if (strCheck.indexOf(whichCode) != -1){
	  	 
		 if (isNav4){
		 	
			if(((vDateValue.length < 6 && dateCheck) || (vDateValue.length == 7 && dateCheck)) && (vDateValue.length >=1)){
			   alert("Data inválida\nDigite novamente");
			   vDateName.value = "";
			   vDateName.focus();
			   vDateName.select();
			   return false;
			}
			
			if (vDateValue.length == 6 && dateCheck){
			   var mDay = vDateName.value.substr(2,2);
			   var mMonth = vDateName.value.substr(0,2);
			   var mYear = vDateName.value.substr(4,4)
			   //Turn a two digit year into a 4 digit year
			   
			   if (mYear.length == 2 && vYearType == 4){
			   	  var mToday = new Date();
				  //If the year is greater than 30 years from now use 19, otherwise use 20
				  var checkYear = mToday.getFullYear() + 30; 
				  var mCheckYear = '20' + mYear;
				  
				  if (mCheckYear >= checkYear)
				  	 mYear = '19' + mYear;
				  else
				  	  mYear = '20' + mYear;
			   }

			   var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
			   
			   if (!dateValid(vDateValueCheck)){
			   	  alert("Data inválida\nDigite novamente");
				  vDateName.value = "";
				  vDateName.focus();
				  vDateName.select();
				  return false;
			   }
			return true;
			}else{
		       // Reformat the date for validation and set date type to a 1
			   if (vDateValue.length >= 8  && dateCheck){
			      
				  if (vDateType == 1){ // mmddyyyy
				  	 var mDay = vDateName.value.substr(2,2);
					 var mMonth = vDateName.value.substr(0,2);
					 var mYear = vDateName.value.substr(4,4)
					 vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
				  }
				  
				  if (vDateType == 2){ // yyyymmdd
				  	 var mYear = vDateName.value.substr(0,4)
					 var mMonth = vDateName.value.substr(4,2);
					 var mDay = vDateName.value.substr(6,2);
					 vDateName.value = mYear+strSeperator+mMonth+strSeperator+mDay;
				  }
				  
				  if (vDateType == 3){ // ddmmyyyy
				  	 var mMonth = vDateName.value.substr(2,2);
					 var mDay = vDateName.value.substr(0,2);
					 var mYear = vDateName.value.substr(4,4)
					 vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
				  }

				  //Create a temporary variable for storing the DateType and change
				  //the DateType to a 1 for validation.
				  var vDateTypeTemp = vDateType;
				  vDateType = 1;
				  var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
				  
				  if (!dateValid(vDateValueCheck)){
				  	 alert("Data inválida\nDigite novamente");
					 vDateType = vDateTypeTemp;
					 vDateName.value = "";
					 vDateName.focus();
					 vDateName.select();
					 return false;
			      }
				  
				  vDateType = vDateTypeTemp;
				  return true;
			   }else{
			      
				  if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)){
			   	  	 alert("Data inválida\nDigite novamente");
				  	 vDateName.value = "";
				  	 vDateName.focus();
				  	 vDateName.select();
				  	 return false;
			   	  }
			   }
   	     	}
      	 }else{
	        // Non isNav Check
		 	if(((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)){
		       alert("Data inválida\nDigite novamente");
			   vDateName.value = "";
			   vDateName.focus();
			   return true;
		 	}
		 
		 	// Reformat date to format that can be validated. mm/dd/yyyy
		 	if (vDateValue.length >= 8 && dateCheck){
		 	   // Additional date formats can be entered here and parsed out to
			   // a valid date format that the validation routine will recognize.
			   if (vDateType == 1){ // mm/dd/yyyy
			   	  var mMonth = vDateName.value.substr(0,2);
			   	  var mDay = vDateName.value.substr(3,2);
			   	  var mYear = vDateName.value.substr(6,4)
			   }

			   if (vDateType == 2){ // yyyy/mm/dd
			   	  var mYear = vDateName.value.substr(0,4)
			   	  var mMonth = vDateName.value.substr(5,2);
			   	  var mDay = vDateName.value.substr(8,2);
			   }
			
			   if (vDateType == 3){ // dd/mm/yyyy
			   	  var mDay = vDateName.value.substr(0,2);
			   	  var mMonth = vDateName.value.substr(3,2);
			   	  var mYear = vDateName.value.substr(6,4)
			   }

			   if (vYearLength == 4){
			   	  if (mYear.length < 4){
			   	  	 alert("Data inválida\nDigite novamente");
				  	 vDateName.value = "";
				  	 vDateName.focus();
				  	 return true;
   			   	  }
		       }
			
			   // Create temp. variable for storing the current vDateType
			   var vDateTypeTemp = vDateType;
			   // Change vDateType to a 1 for standard date format for validation
			   // Type will be changed back when validation is completed.
			   vDateType = 1;
			   // Store reformatted date to new variable for validation.
			   var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
			
			   if (mYear.length == 2 && vYearType == 4 && dateCheck){
			   	  //Turn a two digit year into a 4 digit year
				  var mToday = new Date();
				  //If the year is greater than 30 years from now use 19, otherwise use 20
				  var checkYear = mToday.getFullYear() + 30; 
				  var mCheckYear = '20' + mYear;
			
				  if (mCheckYear >= checkYear)
			   	  	 mYear = '19' + mYear;
				  else
			   	  	 mYear = '20' + mYear;
			   
			   	  vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
				  // Store the new value back to the field.  This function will
				  // not work with date type of 2 since the year is entered first.
			
				  if (vDateTypeTemp == 1) // mm/dd/yyyy
			   	  	 vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
			   
			   	  if (vDateTypeTemp == 3) // dd/mm/yyyy
			   	  	 vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
		 	   } 
		 
		 	   if(!dateValid(vDateValueCheck)){
		          alert("Data inválida\nDigite novamente");
			
		 	   vDateType = vDateTypeTemp;
		 	   vDateName.value = "";
		 	   vDateName.focus();
		 
		 	   return true;
	  		}
	  
	  		vDateType = vDateTypeTemp;	  
	  	   	return true;
   	 	 }else{
      
	  	    if (vDateType == 1){
	  	 
		 	   if (vDateValue.length == 2){
		 	      vDateName.value = vDateValue+strSeperator;
		 	   }
		 
		 	   if (vDateValue.length == 5){
		       	  vDateName.value = vDateValue+strSeperator;
   		 	   }
      	    }

	  		if (vDateType == 2){
	  	 
		 	   if (vDateValue.length == 4){
		 	   	  vDateName.value = vDateValue+strSeperator;
		 	   }		  

		 	   if (vDateValue.length == 7){
		 	   	  vDateName.value = vDateValue+strSeperator;
		 	   }
	  		} 
	  
	  		if (vDateType == 3){
	     
		 	   if (vDateValue.length == 2){
		       	  vDateName.value = vDateValue+strSeperator;
		 	   }

		 	   if (vDateValue.length == 5){
		       	  vDateName.value = vDateValue+strSeperator;
   		 	   }
	  		}
	  	 return true;
   		 }
	  }

	  if (vDateValue.length == 10&& dateCheck){
	  	 if (!dateValid(vDateName)){
		 	// Un-comment the next line of code for debugging the dateValid() function error messages
			//alert(err);  
			alert("Data inválida\nDigite novamente");
			vDateName.focus();
			vDateName.select();
   		 }
 	  }
	  return false;
   }else{
      // If the value is not in the string return the string minus the last
	  // key entered.
	  if (isNav4){
	  	 vDateName.value = "";
		 vDateName.focus();
		 vDateName.select();
		 return false;
	  }else{
	     vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
		 return false;
      }
   }
}
}

function highlightTableLine(tableRow)
{
	tableRow.style.backgroundColor='#DDE6EF';
}

function removeHighlight(tableRow)
{
    tableRow.style.backgroundColor='';
}

function removeSpaces(str)
{
   return str.replace(/^\s*|\s*$/g,"");
}

function getXMLHttpRequest()
{
	var http_request = false;

    try {
        http_request = new XMLHttpRequest();
    } catch(ee) {
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch(E) {
                http_request = false;
            }
        }
    }
    
    return http_request;
}
