  function checkrequired(which) {
  var pass=true;
  if (document.images) {
  for (i=0;i<which.length;i++) {
  var tempobj=which.elements[i];
  if (tempobj.name.substring(0,8)=="required") {
  if (((tempobj.type=="text"||tempobj.type=="textarea")&&
  tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s"&&
  tempobj.selectedIndex==0)) {
  pass=false;
  break;
           }
        }
     }
  }
  if (!pass) {
  shortFieldName=tempobj.name.substring(8,30).toUpperCase();
  alert("Por gentileza, preencha os campos solicitados.");
  return false;
  }
  else
  return true;
  }
 

var ns6 = document.getElementById && !document.all

function RestringeInput(maxlength,e,placeholder){
if ( window.event && event.srcElement.value.length >= maxlength ) {
 return false
} else if ( e.target && e.target == eval( placeholder ) && e.target.value.length >= maxlength ) {
 var PressTecla = /[a-zA-Z0-9\.\,\/]/ //detecta caracteres alfanuméricos
 if ( PressTecla.test ( String.fromCharCode ( e.which ) ) ) {
  e.stopPropagation()
 }
}
}

function ContaLimite( maxlength , e , placeholder ) {
var theform = eval( placeholder )
var lengthleft = maxlength-theform.value.length
var placeholderobj = document.all ? document.all[placeholder] : document.getElementById( placeholder )
if ( window.event || e.target&&e.target == eval( placeholder ) ){
 if ( lengthleft < 0 )
  theform.value = theform.value.substring( 0 , maxlength )
  placeholderobj.innerHTML = lengthleft
}
}


function MostraLimite( theform,thelimit ) {
var limit_text = '<span id="'+theform.toString()+'" style="font-family:Tahoma; font-size:11px; color:#990000">'+thelimit+'</span><span style="font-family:Tahoma; font-size:11px; color:#990000"> caracteres restantes.</span>'
 if ( document.all || ns6 )
  document.write( limit_text )
 if ( document.all ) {
  eval( theform ).onkeypress = function(){ return RestringeInput( thelimit,event,theform )}
  eval( theform ).onkeyup = function(){ ContaLimite( thelimit,event,theform ) }
 } else if ( ns6 ) {
  document.body.addEventListener( 'keypress', function( event ) { RestringeInput( thelimit , event , theform ) }, true );
  document.body.addEventListener( 'keyup', function( event ) { ContaLimite( thelimit , event , theform ) }, true );
 }
}

function FormataCampo(Campo,teclapres,mascara){
//pegando o tamanho do texto da caixa de texto com delay de -1 no event
//ou seja o caractere que foi digitado não ser encontado.
strtext = Campo.value
tamtext = strtext.length
//pegando o tamanho da máscara
tammask = mascara.length
//criando um array para guardar cada caractere da máscara
arrmask = new Array(tammask)
//jogando os caracteres para o vetor
for (var i = 0; i < tammask; i++){
 arrmask[i] = mascara.slice(i,i+1)
}
//alert (teclapres.keyCode)
//começando o trabalho sujo
if (((((arrmask[tamtext] == "#") || (arrmask[tamtext] == "9"))) || (((arrmask[tamtext+1] != "#") || (arrmask[tamtext+1] != "9"))))){
 if ((teclapres.keyCode >= 37 && teclapres.keyCode <= 40)||(teclapres.keyCode >= 48 && teclapres.keyCode <= 57)||(teclapres.keyCode >= 96 && teclapres.keyCode <= 105)||(teclapres.keyCode == 8)||(teclapres.keyCode == 9) ||(teclapres.keyCode == 46) ||(teclapres.keyCode == 13)){
  OrganizaCasa(Campo,arrmask[tamtext],teclapres.keyCode,strtext)
 } else {
  DetonaEvent(Campo,strtext)
 }
} else {
 if ((arrmask[tamtext] == "A"))    {
  charupper = event.valueOf()
  //charupper = charupper.toUpperCase()
  DetonaEvent(Campo,strtext)
  masktext = strtext + charupper
  Campo.value = masktext
 }
}
}

//Adiciona todos os caracteres que podem ser usados como máscara
function OrganizaCasa(Campo,arrpos,teclapres_key,strtext){
if (((arrpos == "/") || (arrpos == ".") || (arrpos == ",") || (arrpos == ":") || (arrpos == " ") || (arrpos == "-")) && !(teclapres_key == 8)){
 separador = arrpos
 masktext = strtext + separador
 Campo.value = masktext
}
}
function DetonaEvent(Campo,strtext){
event.returnValue = false
if (strtext != "") {
 Campo.value = strtext
}
}

function VerificaForm(){
if (document.frmteste.elements["txt.nome"].value == ""){
 window.alert("O campo Nome não pode ser vazio!");
 document.frmteste.elements["txt.nome"].focus();
 return false;
}
if (document.frmteste.elements["txt.endereco"].value == ""){
 window.alert("O campo Endereço não pode ser vazio!");
 document.frmteste.elements["txt.endereco"].focus();
 return false;
}
if (document.frmteste.elements["txt.moeda"].value.length > "10") {
 window.alert("O campo Moeda não pode ter mais de 10 caracteres!");
 document.frmteste.elements["txt.moeda"].focus();
 return false;
}
}

function NumberOnly() {
if ( event.keyCode < 48 || event.keyCode > 57 ) { //Só aceita caracteres com código ASCII entre 48..57 (números)
 event.returnValue = false;
}
}


// Esta function está configurada para o campo receber duas casas após a vírgula



function currencyFormat(fld, milSep, decSep, e) {
var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';
var whichCode = (window.Event) ? e.which : e.keyCode;
if (whichCode == 13)
return true;  // Enter
key = String.fromCharCode(whichCode);  // Get key value from key code
if (strCheck.indexOf(key) == -1) return false;  // Not a valid key
len = fld.value.length;
for(i = 0; 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 == 0) fld.value = '';

// Aqui tem que testar: se $Column->{decimals} for 3 coloca + '0' + '0' + senão, apenas + '0' +
if (len == 1) fld.value = '0' + decSep + '0' + aux; // Alterei coloquei + '0' , decSep = , (vírgula)

// Aqui tem que testar: se $Column->{decimals} for 3 coloca + '0' + senão, não coloca
if (len == 2) fld.value = '0' + decSep + aux; // Alterei coloquei + '0'

// Aqui tem que testar: se $Column->{decimals} for 3 coloca essa linha senão não coloca
//if (len == 3) fld.value = '0' + decSep + aux + aux2; // Adicionei esta linha

// Aqui tem que colocar a variável $decimal
if (len > 2) { // Alterei de 2 para 3
 aux2 = '';

 // A cada três caracteres adiciona um milSep (ponto ".")
 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;

 // Aqui tem que testar: se $Column->{decimals} for 3 coloca i > 0 senão coloca i >= 0
 for (i = len2 - 1; i >= 0; i--) // Alterei de i >= 0 para i > 0
 fld.value += aux2.charAt(i);

 // Aqui tem que coloca a variável mo lugar do 3
 fld.value += decSep + aux.substr(len - 2, len); // O número dois é o valor chave (número de casas que vem depois da vírgula)
}
return false;
}

function Limitar (what,limit) {
if (what.value.length>=limit)
return false;
}

function mascara(o,f){
    v_obj=o
    v_fun=f
    setTimeout("execmascara()",1)
}

function execmascara(){
    v_obj.value=v_fun(v_obj.value)
}

function leech(v){
    v=v.replace(/o/gi,"0")
    v=v.replace(/i/gi,"1")
    v=v.replace(/z/gi,"2")
    v=v.replace(/e/gi,"3")
    v=v.replace(/a/gi,"4")
    v=v.replace(/s/gi,"5")
    v=v.replace(/t/gi,"7")
    return v
}

function soNumeros(v){
    return v.replace(/\D/g,"")
}

function telefone(v){
    v=v.replace(/\D/g,"")                 //Remove tudo o que não é dígito
    v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")    //Coloca hífen entre o quarto e o quinto dígitos
    return v
}

function cpf(v){
    v=v.replace(/\D/g,"")                    //Remove tudo o que não é dígito
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
                                             //de novo (para o segundo bloco de números)
    v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
    return v
}

function cep(v){
    v=v.replace(/D/g,"")                //Remove tudo o que não é dígito
    v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
    return v
}

function cnpj(v){
    v=v.replace(/\D/g,"")                           //Remove tudo o que não é dígito
    v=v.replace(/^(\d{2})(\d)/,"$1.$2")             //Coloca ponto entre o segundo e o terceiro dígitos
    v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
    v=v.replace(/\.(\d{3})(\d)/,".$1/$2")           //Coloca uma barra entre o oitavo e o nono dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")              //Coloca um hífen depois do bloco de quatro dígitos
    return v
}

function romanos(v){
    v=v.toUpperCase()             //Maiúsculas
    v=v.replace(/[^IVXLCDM]/g,"") //Remove tudo o que não for I, V, X, L, C, D ou M
    //Essa é complicada! Copiei daqui: http://www.diveintopython.org/refactoring/refactoring.html
    while(v.replace(/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,"")!="")
        v=v.replace(/.$/,"")
    return v
}

function site(v){
    //Esse sem comentarios para que você entenda sozinho ;-)
    v=v.replace(/^http:\/\/?/,"")
    dominio=v
    caminho=""
    if(v.indexOf("/")>-1)
        dominio=v.split("/")[0]
        caminho=v.replace(/[^\/]*/,"")
    dominio=dominio.replace(/[^\w\.\+-:@]/g,"")
    caminho=caminho.replace(/[^\w\d\+-@:\?&=%\(\)\.]/g,"")
    caminho=caminho.replace(/([\?&])=/,"$1")
    if(caminho!="")dominio=dominio.replace(/\.+$/,"")
    v="http://"+dominio+caminho
    return v
}

