function F_OpenUpload(sInfo) {
	oForm = eval('document.frm_cadastro');
	
	window.open(sInfo, 'pop_imagem', 'history=no,statusbar=no,menubar=no,noresize,width=320,height=100');
}
		
function F_SelectPage(sPagina, iPage) {
	document.frm_search.pag.value = iPage;
	document.frm_search.submit();
}

function linesLoad(oA,oB, oLines) {
var lines

	lines = eval(oLines)	

	oA.length=0;
	oB.length=0;
	
	for (i=0; i < lines.length; i++) {   
		if (lines[i][2]=="1") {
			oA.length=oA.length+1;
			oA[oA.length-1].value=lines[i][0];
			oA[oA.length-1].text=lines[i][1];
		}
		else {
			oB.length=oB.length+1;
			oB[oB.length-1].value=lines[i][0];
			oB[oB.length-1].text=lines[i][1];
		}			
	}
}

function linesSwap(oFrom,nFrom,oTo,nTo,oLeft,oRight,oLines) {
var lines

	lines = eval(oLines)	
	
	for (i=oFrom.length-1; i >= 0; i--) {   
		if (oFrom[i].selected) {
			t = 0;
			for (l=0; l <= lines.length; l++) {
				if (lines[l][2]==nFrom) {
					t++;
					if (t==i+1) {
						lines[l][2]=nTo;
						break;
					}
				}
			}
		}
	}
	linesLoad(oLeft,oRight,oLines);
}


function getValues(oA, bValida){
	if ((oA.length == 0) && (bValida == 'true')) {
		alert('Voce deve selecionar ao menos um item.');
		return false;
	}
	else {
		for (i=0; i < oA.length; i++) {		
			oA[i].selected = true;		
		}
		return true;
	}
}

// Função para limpar todos os campos de um Form com input type=image
function limpa(sForm) {
	document.forms[sForm].reset();
	return false;
}

// Função para verificar se o campo do formulário está vazio
function isEmpty(s) {
  return ((s == null) || (s.length == 0));
}

function isNum(entra){   
	var str = entra;  
//	if (str == 0)  {   
//     return false;         
//    }
      for (var i = 0; i < str.length; i++){      
	   var ch = str.substring(i, i + 1);      
		if ((ch < "0" || "9" < ch)&&(ch != ".")){          
		 return false;         
		}      
      } 
return true;   
}

//function isNumber (c)
//{ return ((c >= "0") && (c <= "9") || (c=="-") || (c=="(") || (c==")") || (c==" ") || (c==".") || (c==",")) }

function isNumber (c){
      return (isNum(c)==false);	
}

function isCurr(entra){   
	var str = replace(entra,',','.');  
	if (str == 0)  {     
     return false;         
    }
      for (var i = 0; i < str.length; i++){      
	   var ch = str.substring(i, i + 1);      

		if (ch != ".")
			if (ch < "0" || "9" < ch ){         
			 return false;         
			}      
      } 
return true;   
}

function isCurrency (c){
      return (isCurr(c)==false);	
}

// Verifica se o caracter é um dígito de 0 a 9
function isDigit (c)
{ return ((c >= "0") && (c <= "9")) }

function isInteger(s){
	var i;
	if (isEmpty(s))
		return false;
	for (i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);
		if (!isNumber(c)) return false;
	}
	return true;
}

// Verifica se uma string tem vogais acentuadas
function vogalAcentuada(s) {
	ls = s.toLowerCase();
	if ((ls.indexOf("á")>=0) || (ls.indexOf("à")>=0) || (ls.indexOf("ã")>=0) || (ls.indexOf("â")>=0) || (ls.indexOf("é")>=0) || (ls.indexOf("í")>=0) || (ls.indexOf("ó")>=0) || (ls.indexOf("õ")>=0) || (ls.indexOf("ô")>=0) || (ls.indexOf("ú")>=0) || (ls.indexOf("ü")>=0))
		return true;
}

//Função para verificar se nao foi digitado caracteres inválidos(Somente . e , são validos)
function Check_text_currency( sStr )
{
	 var j=0;
	 var bRetVal = true;
//	 var sChars  = "'\"";
	 var sChars  = "<|>@#$%&*!+- ().?[]{}~^´'`\"_=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZáéíóúãõàüäëöïñçÁÉÍÓÚÃÕÀÜÄËÖÏÑÇ\\";
	 
	 while( j < sChars.length )
	 {
		if( sStr.indexOf( sChars.substr(j,1) ) >= 0 )
		{
		 bRetVal = false;
		 break;
		}
		j++
	 }
	 return bRetVal;
}

//Função para verificar se nao foi digitado caracteres inválidos(Somente . e , são validos)
function verCarcEspeciais( sStr )
{
	 var j=0;
	 var bRetVal = true;
//	 var sChars  = "'\"";
	 var sChars  = "<|>@#$%&*!+- ()?[]{}~^´'`\"_=,áéíóúãõàüäëöïñçÁÉÍÓÚÃÕÀÜÄËÖÏÑÇ\\";
	 
	 while( j < sChars.length )
	 {
		if( sStr.indexOf( sChars.substr(j,1) ) >= 0 )
		{
		 bRetVal = false;
		 break;
		}
		j++
	 }
	 return bRetVal;
}


//Função para verificar se nao foi digitado aspas (tanto simples quanto dupla
function Check_aspas( sStr )
{
	 var j=0;
	 var bRetVal = true;
	 var sChars  = "'\"";
//	 var sChars  = "<|>@#$%*!+-()?[]{}~^´'`,\"_=áéíóúãõàüäëöïñçÁÉÍÓÚÃÕÀÜÄËÖÏÑÇ\\";
	 
	 while( j < sChars.length )
	 {
		if( sStr.indexOf( sChars.substr(j,1) ) >= 0 )
		{
		 bRetVal = false;
		 break;
		}
		j++
	 }
	 return bRetVal;
}

//verificar se realmente nao está sendo usada e deletar
function Check_text_single( sStr )
{
	 var j=0;
	 var bRetVal = true;
	 var sChars  = "<|>@#$%*!+- ()?[]{}~^´'`,.\"_=áéíóúãõàüäëöïñçÁÉÍÓÚÃÕÀÜÄËÖÏÑÇ\\";
	 while( j < sChars.length )
	 {
		if( sStr.indexOf( sChars.substr(j,1) ) >= 0 )
		{
		 bRetVal = false;
		 break;
		}
		j++
	 }
	 return bRetVal;
}

function Check_text_field( sStr )
{
	 var j=0;
	 var bRetVal = true;
	 var sChars  = "<|>@#$%*!+- ()?[]{}~^´'`,.\"_=áéíóúãõàüäëöïñçÁÉÍÓÚÃÕÀÜÄËÖÏÑÇ\\";
	 while( j < sChars.length )
	 {
		if( sStr.indexOf( sChars.substr(j,1) ) >= 0 )
		{
		 bRetVal = false;
		 break;
		}
		j++
	 }
	 return bRetVal;
}

//verificar se realmente nao está sendo usada e deletar
function checkField_Generic( sStr )
{
 var j=0;
 var bRetVal = true;
 var sChars  = "<|>@#$%&*!+- ()?[]{}~^´'`,.\"_=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZáéíóúãõàüäëöïñçÁÉÍÓÚÃÕÀÜÄËÖÏÑÇ\\";
 while( j < sChars.length )
 {
	if( sStr.indexOf( sChars.substr(j,1) ) >= 0 )
	{
	 bRetVal = false;
	 break;
	}
	j++
 }
 return bRetVal;
}

function checkField( sStr, sChars )
{
 var j=0;
 var bRetVal = true;
 while( j < sChars.length )
 {
	if( sStr.indexOf( sChars.substr(j,1) ) >= 0 )
	{
	 bRetVal = false;
	 break;
	}
	j++
 }
 
 return bRetVal;
}


// Funções para validação dos campos DATE
nome_mes = new Array();
nome_mes[1]="Jan";
nome_mes[2]="Feb";
nome_mes[3]="Mar";
nome_mes[4]="Apr";
nome_mes[5]="May";
nome_mes[6]="Jun";
nome_mes[7]="Jul";
nome_mes[8]="Aug";
nome_mes[9]="Sep";
nome_mes[10]="Oct";
nome_mes[11]="Nov";
nome_mes[12]="Dec";	

function checkDate( campo )
{
 var data = campo.value;
 if( !checkField( data, "<|>@#$%&*!+- ()?[]{}~^´`,.\"_=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZáéíóúãõàüäëöïñçÁÉÍÓÚÃÕÀÜÄËÖÏÑÇ\\" ) )
 {
  return false;
 }
 var myDayStr = data.substr(0,2);
 var myMonthStr = nome_mes[Math.abs(data.substr(3,2))];
 var myYearStr = data.substr(6,4);
 var myDateStr = myDayStr + " " + myMonthStr + " " + myYearStr;
 var myDate = new Date( myDateStr );
 var myDate_string = myDate.toUTCString();
 var myDate_array = myDate_string.split(" ");

 // Array myDate_array:
 // Indices:
 // 0 - Dia da semana
 // 1 - Dia do mes (numero)
 // 2 - Nome do mes (Jan, Fev, etc)
 // 3 - Ano
 // 4 - Hora
 // 5 - Constante "UTC"

 if ( ( myDate_array[2] != myMonthStr ) || ( Math.abs(data.substr(3,2) ) < 1 || Math.abs(data.substr(3,2) ) > 12) )
 {
	return false;
 }
 else
 {
 	if ( (myDayStr == "") || (myMonthStr == "") || (myYearStr == "") ) {
		return false; }
	else {	
		return true; }
 }
}

function checkDecimal(value,int,dec) {
	if (value.indexOf(".") > -1 ) return false;
	value = replace(value, ',' , '.' )
			
	//se for um valor inteiro não pode ter mais digitos
	if (value.indexOf(".") == -1 && value.length > int ) return false;
		
	if (value!=0 && value.indexOf(".") > int  )  return false ;
		
	//verifica se tem mais de tres digitos decimais
	if (value.indexOf(".") != -1 && value.length - value.indexOf(".") > (dec+1) ) {
		return false;
	}

	return true;
}
function calender(sPage,sForm,sDayfield,sMonthfield,sYearfield){
		window.open(sPage + '?Formulario=' +  sForm + '&sDay=' + sDayfield + '&sMonth=' + sMonthfield + '&sYear=' + sYearfield ,'Calendário','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,menubar=no,width=190,height=160');
}

function calenderprogramado(sPage,sForm,sDayfield,sMonthfield,sYearfield,dia,mes,ano){
		alert(sPage + '?Formulario=' +  sForm + '&sDay=' + sDayfield + '&sMonth=' + sMonthfield + '&sYear=' + sYearfield + '&dia=' + dia + '&mes=' + mes + '&ano=' + ano);
		window.open(sPage + '?Formulario=' +  sForm + '&sDay=' + sDayfield + '&sMonth=' + sMonthfield + '&sYear=' + sYearfield + '&dia=' + dia + '&mes=' + '&ano=' + ano,'Calendário','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,menubar=no,width=190,height=160');
}

function verificaCNPJ(scgc) {
	cgc = trimtodigits(scgc);
	if ((cgc.indexOf("-") != -1) || (cgc.indexOf(".") != -1) || (cgc.indexOf("/") != -1)){
		return( false )
	}
	var df, resto, dac = ""
	df = 5*cgc.charAt(0)+4*cgc.charAt(1)+3*cgc.charAt(2)+2*cgc.charAt(3)+9*cgc.charAt(4)+8*cgc.charAt(5)+7*cgc.charAt(6)+6*cgc.charAt(7)+5*cgc.charAt(8)+4*cgc.charAt(9)+3*cgc.charAt(10)+2*cgc.charAt(11)
	resto = df % 11
	dac += ( (resto <= 1) ? 0 : (11-resto) )
	df = 6*cgc.charAt(0)+5*cgc.charAt(1)+4*cgc.charAt(2)+3*cgc.charAt(3)+2*cgc.charAt(4)+9*cgc.charAt(5)+8*cgc.charAt(6)+7*cgc.charAt(7)+6*cgc.charAt(8)+5*cgc.charAt(9)+4*cgc.charAt(10)+3*cgc.charAt(11)+2*parseInt(dac)
	resto = df % 11
	dac += ( (resto <= 1) ? 0 : (11-resto) )
	return (dac == cgc.substring(cgc.length-2,cgc.length))
}

//Remove todos os caracteres excetos 0-9
function trimtodigits(tstring){
  s=""; 
  ts=new String(tstring);
  for (x=0;x<ts.length;x++){
   ch=ts.charAt(x);
    if (asc(ch)>=48 && asc(ch)<=57){
      s=s+ch;
    }
  }
  return s;
}

// Retorna o código ASC do caracter passada por parâmetro
function asc(achar){
	var n=0;
	var ascstr = makeCharsetString()
	for(i=0;i<ascstr.length;i++){
		if(achar==ascstr.substring(i,i+1)){
			n=i;
			break;
		}
	}
	return n+32
}

// Gera uma string com os caracteres básicos na sequência de códigos ASC
function makeCharsetString(){
	var astr
	astr = ' !"#$%&\'()*+,-./0123456789:;<=>?@'
	astr+= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
	astr+= '[\]^_`abcdefghijklmnopqrstuvwxyz'
	astr+= '{|}~'
	return astr
}

//************************************************************************************************
// Verifica se um CPF é válido
//************************************************************************************************
	function verificaCPF(cpf) {
    var dac = "", inicio = 2, fim = 10, soma, digito, i, j;
			
		if (cpf.length > 11)
			return false;
			
		if ((cpf == '00000000000') || (cpf == '11111111111') || (cpf == '22222222222') || 
		    (cpf == '33333333333') || (cpf == '44444444444') || (cpf == '55555555555') || 
		    (cpf == '66666666666') || (cpf == '77777777777') || (cpf == '88888888888') || 
		    (cpf == '99999999999'))
			return false;
					
	    for (j=1; j<=2; j++) {
        	soma = 0;
            
			for (i=inicio; i<=fim; i++) {
            	soma += parseInt(cpf.substring(i-j-1,i-j))*(fim+1+j-i);
            }
            
			if (j == 2) { 
				soma += 2 * digito;
			}
                
			digito = (10 * soma) % 11;
			
            if (digito == 10) {
				digito = 0;
			}
			
            dac += digito;
            inicio = 3;
            fim = 11;
        }
		
        return (dac == cpf.substring(cpf.length-2, cpf.length));
	}

function replace(pString,pFind,pReplace) {

var posi1 = pString.indexOf(pFind);

if (posi1 == -1) return pString;

var posi2 = pFind.length;

var final = pString.substring(0,posi1) + pReplace + pString.substring(posi1+posi2)

return final;

}

VerifiqueTAB=true;
function TabCampos(quem, tammax) {
	if ( (quem.value.length == tammax) && (VerifiqueTAB) ) { 
		var i=0,j=0, indice=-1;
		for (i=0; i<document.forms.length; i++) { 
			for (j=0; j<document.forms[i].elements.length; j++) { 
				if (document.forms[i].elements[j].name == quem.name) { 
					indice=i;
					break;
				} 
			} 
			if (indice != -1) break; 
		} 
		for (i=0; i<=document.forms[indice].elements.length; i++) { 
			if (document.forms[indice].elements[i].name == quem.name) { 
				while ( (document.forms[indice].elements[(i+1)].type == "hidden") &&
				(i < document.forms[indice].elements.length) ) { 
					i++;
				} 
				document.forms[indice].elements[(i+1)].focus();
				VerifiqueTAB=false;
				break;
			} 
		} 
	} 
} 

function PararTAB(quem) { VerifiqueTAB=false; } 
function ChecarTAB() { VerifiqueTAB=true; }

function FormatNumber(num,decimalNum,bolLeadingZero,bolParens,bolCommas)
/**********************************************************************
	IN:
		NUM - the number to format
		decimalNum - the number of decimal places to format the number to
		bolLeadingZero - true / false - display a leading zero for
										numbers between -1 and 1
		bolParens - true / false - use parenthesis around negative numbers
		bolCommas - put commas as number separators.
 
	RETVAL:
		The formatted number!
 **********************************************************************/
{ 
        if (isNaN(parseInt(num))) return "NaN";

	var tmpNum = num;
	var iSign = num < 0 ? -1 : 1;		// Get sign of number
	
	// Adjust number so only the specified number of numbers after
	// the decimal point are shown.
	tmpNum *= Math.pow(10,decimalNum);
	tmpNum = Math.round(Math.abs(tmpNum))
	tmpNum /= Math.pow(10,decimalNum);
	tmpNum *= iSign;					// Readjust for sign
	
	
	// Create a string object to do our formatting on
	var tmpNumStr = new String(tmpNum);

	// See if we need to strip out the leading zero or not.
	if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
		if (num > 0)
			tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
		else
			tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);
		
	// See if we need to put in the commas
	if (bolCommas && (num >= 1000 || num <= -1000)) {
		var iStart = tmpNumStr.indexOf(".");
		if (iStart < 0)
			iStart = tmpNumStr.length;

		iStart -= 3;
		while (iStart >= 1) {
			tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
			iStart -= 3;
		}		
	}
	
	//Ajusta a quantidade de zeros de acordo com o solicitado após a virgula
	if (tmpNumStr.lastIndexOf('.') > 0) {
		iTamanhoDecimal = (tmpNumStr.substring(tmpNumStr.lastIndexOf('.'), tmpNumStr.length)).length;
	} else {
		tmpNumStr = tmpNumStr +'.'
		iTamanhoDecimal = 1
	}
	
	for (i=iTamanhoDecimal; i<=decimalNum; i++) {
		tmpNumStr = tmpNumStr +'0'
	}
	
	// See if we need to use parenthesis
	if (bolParens && num < 0)
		tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")";

	tmpNumStr = tmpNumStr.replace('.',',');

	//Inclui pontos de separação de decimais
	//iTamanhoDecimal = (tmpNumStr.substring(0, tmpNumStr.lastIndexOf(','))).length;
	//alert(iTamanhoDecimal)

	return tmpNumStr;		// Return our formatted string!
}

function FormatNumberZeros(num,decimalNum,bolLeadingZero,bolParens,bolCommas)
/**********************************************************************
	IN:
		NUM - the number to format
		decimalNum - the number of decimal places to format the number to
		bolLeadingZero - true / false - display a leading zero for
										numbers between -1 and 1
		bolParens - true / false - use parenthesis around negative numbers
		bolCommas - put commas as number separators.
 
	RETVAL:
		The formatted number!
 **********************************************************************/
{ 
        if (isNaN(parseInt(num))) return "NaN";

	var tmpNum = num;
	var iSign = num < 0 ? -1 : 1;		// Get sign of number
	
	// Adjust number so only the specified number of numbers after
	// the decimal point are shown.
	tmpNum *= Math.pow(10,decimalNum);
	tmpNum = Math.round(Math.abs(tmpNum))
	tmpNum /= Math.pow(10,decimalNum);
	tmpNum *= iSign;					// Readjust for sign
	
	
	// Create a string object to do our formatting on
	var tmpNumStr = new String(tmpNum);

	// See if we need to strip out the leading zero or not.
	if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
		if (num > 0)
			tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
		else
			tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);
		
	// See if we need to put in the commas
	if (bolCommas && (num >= 1000 || num <= -1000)) {
		var iStart = tmpNumStr.indexOf(".");
		if (iStart < 0)
			iStart = tmpNumStr.length;

		iStart -= 3;
		while (iStart >= 1) {
			tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
			iStart -= 3;
		}		
	}
	
	//Ajusta a quantidade de zeros de acordo com o solicitado após a virgula
	if (tmpNumStr.lastIndexOf('.') > 0) {
		iTamanhoDecimal = (tmpNumStr.substring(tmpNumStr.lastIndexOf('.'), tmpNumStr.length)).length;
	} else {
		tmpNumStr = tmpNumStr +'.'
		iTamanhoDecimal = 1
	}
	
	for (i=iTamanhoDecimal; i<=decimalNum; i++) {
		tmpNumStr = tmpNumStr +'0'
	}
	
	// See if we need to use parenthesis
	if (bolParens && num < 0)
		tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")";

	tmpNumStr = tmpNumStr.replace('.',',');

//	Inclui pontos de separação de decimais
	iTamanhoDecimal = (tmpNumStr.substring(0, tmpNumStr.lastIndexOf(','))).length;

	return tmpNumStr;		// Return our formatted string!
}


function isEmailAddr(email)
{
  var result = false
  var theStr = new String(email)
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  return result;
}

//function isURL(argvalue) {
 // if (argvalue.indexOf(" ") != -1)
 //   return false;
  //else if (argvalue.indexOf("http://") == -1)
  //  return false;
  //else if (argvalue == "http://")
  //  return false;
  //else if (argvalue.indexOf("http://") > 0)
  // return false;

//  argvalue = argvalue.substring(7, argvalue.length);
//  if (argvalue.indexOf(".") == -1)
//    return false;
//  else if (argvalue.indexOf(".") == 0)
//    return false;
//  else if (argvalue.charAt(argvalue.length - 1) == ".")
//    return false;

//  if (argvalue.indexOf("/") != -1) {
//    argvalue = argvalue.substring(0, argvalue.indexOf("/"));
//    if (argvalue.charAt(argvalue.length - 1) == ".")
//      return false;
//  }

//  if (argvalue.indexOf(":") != -1) {
 //   if (argvalue.indexOf(":") == (argvalue.length - 1))
 //     return false;
 //   else if (argvalue.charAt(argvalue.indexOf(":") + 1) == ".")
 //     return false;
 //   argvalue = argvalue.substring(0, argvalue.indexOf(":"));
 //   if (argvalue.charAt(argvalue.length - 1) == ".")
 //     return false;
 // }

 // return true;
//
//}  


// VERIFICA URL
function isURL(what)
{
   var i=new RegExp("([a-zA-Z\.0-9]{2,})\.([a-zA-Z\.0-9]{2,})");
   if(!i.test(what)) {return false}   
   return true;
}

// -------------------------------------------------------------------
// autoComplete (text_input, select_input, ["text"|"value"], [true|false])
//   Use this function when you have a SELECT box of values and a text
//   input box with a fill-in value. Often, onChange of the SELECT box
//   will fill in the selected value into the text input (working like
//   a Windows combo box). Using this function, typing into the text
//   box will auto-select the best match in the SELECT box and do
//   auto-complete in supported browsers.
//   Arguments:
//      field = text input field object
//      select = select list object containing valid values
//      property = either "text" or "value". This chooses which of the
//                 SELECT properties gets filled into the text box -
//                 the 'value' or 'text' of the selected option
//      forcematch = true or false. Set to 'true' to not allow any text
//                 in the text box that does not match an option. Only
//                 supported in IE (possible future Netscape).
// -------------------------------------------------------------------
function autoComplete (field, select, property, forcematch) {
	var found = false;
	for (var i = 0; i < select.options.length; i++) {
	if (select.options[i][property].toUpperCase().indexOf(field.value.toUpperCase()) == 0) {
		found=true; break;
		}
	}
	if (found) { select.selectedIndex = i; }
	else { select.selectedIndex = -1; }
	if (field.createTextRange) {
		if (forcematch && !found) {
			field.value=field.value.substring(0,field.value.length-1); 
			return;
			}
		var cursorKeys ="8;46;37;38;39;40;33;34;35;36;45;";
		if (cursorKeys.indexOf(event.keyCode+";") == -1) {
			var r1 = field.createTextRange();
			var oldValue = r1.text;
			var newValue = found ? select.options[i][property] : oldValue;
			if (newValue != field.value) {
				field.value = newValue;
				var rNew = field.createTextRange();
				rNew.moveStart('character', oldValue.length) ;
				rNew.select();
				}
			}
		}
	}	
	
	
function completa_data(pName){
	var bInput;
	var b, n;
	
	b = new Date();
	bInput = eval('document.frm_search.'+pName);
	
	if (event.keyCode == 32)
	   {
		bInput.value = b.getDate() + '/';
		if (b.getMonth() < 10)
		   {bInput.value = bInput.value + '0' + (b.getMonth() + 1) + '/';}
		else
			{bInput.value = bInput.value + (b.getMonth() + 1) + '/';}
		bInput.value = bInput.value + b.getYear();
	   }
		
 	if ((event.keyCode != 8) && (event.keyCode != 46)) {
		switch(bInput.value.length){
			case 2: bInput.value = bInput.value + '/'; break;						
			case 5: bInput.value = bInput.value + '/'; break;
		}	
	}
}			

function completa_data_cadastro(pName){
	var bInput;
	var b, n;
	
	b = new Date();
	bInput = eval('document.frm_cadastro.'+pName);
	
	if (event.keyCode == 32)
	   {
		bInput.value = b.getDate() + '/';
		if (b.getMonth() < 10)
		   {bInput.value = bInput.value + '0' + (b.getMonth() + 1) + '/';}
		else
			{bInput.value = bInput.value + (b.getMonth() + 1) + '/';}
		bInput.value = bInput.value + b.getYear();
	   }
		
 	if ((event.keyCode != 8) && (event.keyCode != 46)) {
		switch(bInput.value.length){
			case 2: bInput.value = bInput.value + '/'; break;						
			case 5: bInput.value = bInput.value + '/'; break;
		}	
	}
}			

function F_VerificaEnter(oForm) {
	if (window.event && window.event.keyCode == 13) {
		return F_Valida();
	} else {
		return true;
	}
}

function F_SelecionaCampo(sForm, sCampo) {
	oForm = eval('document.'+ sForm +'.'+ sCampo);
	oForm.focus();
}

function monta_select(sValue, sSelected, sField, pCount, pAry){
var y = 0;
var x = 0;
var cbo = eval(sField);
var count = eval(pCount);
var ary = eval(pAry);
	
	cbo.length=0;			
	cbo.length = y + 1;
	cbo[y].value = 0;
	cbo[y].text  = '.: Selecione :.';
	y = y + 1;
	for(x=0; x<count; x++)
	{					
		if(ary[x][0]==sValue){
			cbo.length = y + 1;												
			cbo[y].value = ary[x][1];
			cbo[y].text  = ary[x][2];												
			if (ary[x][1]==sSelected) {cbo[y].selected = true;}					
			y = y + 1;
		}
	}
}

function monta_select_multiple(sFormName, sFieldOriginal, sSelected, sField, pCount, pAry){
var y = 0;
var x = 0;
var z = 0;
var cbo = eval(sField);
var count = eval(pCount);
var ary = eval(pAry);
var FieldOriginal = eval(sFormName +'.'+ sFieldOriginal);

	/*cbo.length = y + 1;
	cbo[y].value = 0;
	cbo[y].text  = '.: Selecione :.';
	y = y + 1;*/

	for (x=0; x<FieldOriginal.length; x++) {
		if (FieldOriginal[x].selected) {
			for(z=0; z<count; z++) {					
				if(ary[z][0] == FieldOriginal[x].value) {
					cbo.length = y + 1;												
					cbo[y].value = ary[z][1];
					cbo[y].text  = ary[z][2];												
					if (ary[z][1]==sSelected) {cbo[y].selected = true;}					
					y = y + 1;
				}
			}
		}
	}
}

function monta_select_multiple_value(sFormName, sFieldOriginal, sSelected, sField, pCount, pAry){
var y = 0;
var x = 0;
var z = 0;
var cbo = eval(sField);
var count = eval(pCount);
var ary = eval(pAry);
var FieldOriginal = eval(sFormName +'.'+ sFieldOriginal);

	for (x=0; x<FieldOriginal.length; x++) {
		if (FieldOriginal[x].selected) {
			for(z=0; z<count; z++) {					
				if(ary[z][0] == FieldOriginal[x].value.substring(FieldOriginal[x].value.indexOf('|') + 1, FieldOriginal[x].value.length)) {
					cbo.length = y + 1;												
					cbo[y].value = ary[z][1];
					cbo[y].text  = ary[z][2];												
					if (ary[z][1]==sSelected) {cbo[y].selected = true;}					
					y = y + 1;
				}
			}
		}
	}
}
/**   
	* Função para aplicar máscara em campos de texto 
	* Copyright (c) 2008, Dirceu Bimonti Ivo - http://www.bimonti.net  
	* All rights reserved.  
	* @constructor   
*/
/* Version 0.27 */
/**    
	* Função Principal
	* @param w - O elemento que será aplicado (normalmente this).
	* @param e - O evento para capturar a tecla e cancelar o backspace.
	* @param m - A máscara a ser aplicada.
	* @param r - Se a máscara deve ser aplicada da direita para a esquerda. Veja Exemplos.
	* @param a -
	* @returns null
*/
function maskIt(w,e,m,r,a) {
	// Cancela se o evento for Backspace
	if (!e) var e = window.event
	if (e.keyCode) code = e.keyCode;
	else if (e.which) code = e.which;
	
	// Variáveis da função
	var txt  = (!r) ? w.value.replace(/[^\d]+/gi,'') : w.value.replace(/[^\d]+/gi,'').reverse();
	var mask = (!r) ? m : m.reverse();
	var pre  = (a ) ? a.pre : "";
	var pos  = (a ) ? a.pos : "";
	var ret  = "";
	if(code == 9 || code == 8 || txt.length == mask.replace(/[^#]+/g,'').length) return false;
	// Loop na máscara para aplicar os caracteres
	for(var x=0,y=0, z=mask.length;x<z && y<txt.length;) {
		if(mask.charAt(x)!='#') {
			ret += mask.charAt(x); x++;
		} else {
			ret += txt.charAt(y); y++; x++;
		}
	}
	
	// Retorno da função
	ret = (!r) ? ret : ret.reverse()
	w.value = pre+ret+pos;
}
// Novo método para o objeto 'String'
String.prototype.reverse = function() {
	return this.split('').reverse().join('');
};