// CONFIRMAR AÇÕES
function confirmar() {
if (confirm("Você confirma essa ação?")) {
	
	return true;
	
} else {
	
	return false;
	
}}


// POPUP-CENTRALIZADA
function NewWindow(mypage, myname, w, h, scroll) {
var winl = (screen.width - w) / 2;
var wint = (screen.height - h) / 2;
winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable=no'
win = window.open(mypage, myname, winprops)
if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
}



// REMOVE ALERTAS DE ERRO JS
function semerro(){ return true;}
window.onerror=semerro;


// FUNÇÃO PARA HABILITAR OU DESABILITAR CAMPO DE FORMULÁRIO
function habdes() {    
    
if (document.form_cadastro.nourl.checked == true) 
    {

            document.getElementById('url').disabled = true;
			document.getElementById('url').style.backgroundColor = "#CCCCCC";

      
        }
      
    else
    
	{
        document.getElementById('url').disabled = false;
		document.getElementById('url').style.backgroundColor = "";
    }
}




// FUNÇÃO PARA TESTAR A QUALIDADE DAS SENHAS
function TestaSenha(valor) { 
    var d = document.getElementById('seguranca'); 
    ERaz = /[a-z]/; 
    ERAZ = /[A-Z]/; 
    ER09 = /[0-9]/; 
    ERxx = /[@!#$%&*+=?|-]/; 

    if(valor.length == ''){ 
        d.innerHTML = ''; 
    } else { 
        if(valor.length < 5){ 
            d.innerHTML = '<font color="red">Nível Baixo</font>'; 
        } else { 
            if(valor.length > 7 && valor.search(ERaz) != -1 && valor.search(ERAZ) != -1 && valor.search(ER09) != -1 || valor.length > 7 && valor.search(ERaz) != -1 && valor.search(ERAZ) != -1 && valor.search(ERxx) || valor.length > 7 && valor.search(ERaz) != -1 && valor.search(ERxx) != -1 && valor.search(ER09) || valor.length > 7  && valor.search(ERxx) != -1 && valor.search(ERAZ) != -1 && valor.search(ER09)){ 
                d.innerHTML = '<font color="blue">Nível Alto</font>'; 
            } else { 
                if(valor.search(ERaz) != -1 && valor.search(ERAZ) != -1 || valor.search(ERaz) != -1 && valor.search(ER09) != -1 || valor.search(ERaz) != -1 && valor.search(ERxx) != -1 ||valor.search(ERAZ) != -1 && valor.search(ER09) != -1 ||valor.search(ERAZ) != -1 && valor.search(ERxx) != -1 ||valor.search(ER09) != -1 && valor.search(ERxx) != -1){ 
                    d.innerHTML = '<font color="green">Nível Médio</font>'; 
                } else { 
                    d.innerHTML = '<font color="red">Nível Baixo</font>'; 
                } 
            } 
        } 
    } 
} 









// ACTIVE DO FLASH
//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2007 Adobe Systems Incorporated.  All rights reserved.
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion()
{
	var version;
	var axo;
	var e;

	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}

	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			version = "WIN 6,0,21,0";

			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";

			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");

		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	
	return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString        = tempArray[1];			// "2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];

        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}

function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '';
  if (isIE && isWin && !isOpera)
  {
    str += '<object ';
    for (var i in objAttrs)
    {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params)
    {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '> </embed>';
  }

  document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "code":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}









// SCRIPT PARA ADICIONAR EM FAVORITOS
function addFav(){
    var url        = "http://www.netmultibusca.com.br";
    var title    = "Net Multi Busca";
    if (window.sidebar) window.sidebar.addPanel(title, url,"");
    else if(window.opera && window.print){
        var mbm = document.createElement('a');
        mbm.setAttribute('rel','sidebar');
        mbm.setAttribute('href',url);
        mbm.setAttribute('title',title);
        mbm.click();
    }
    else if(document.all){window.external.AddFavorite(url, title);}
}











// FUNÇÃO PARA CHECAR URLS
function addURL(){
var link = document.getElementById("url").value;

if (link) {
sendurl.focus();
sendurl.location.href="ajurl.php?URI="+link;
}
}



// FUNÇÃO PARA CHECAR TITULOS DUPLICADOS
function testa_titulo(){
var titulo = document.getElementById("titulo_class").value;
var idc = document.getElementById("sid").value;

if (titulo) {
sendtit.focus();
sendtit.location.href="http://www.netmultibusca.com.br/ajtitulo.php?titulo="+titulo+"&id="+idc;
}
}



// FUNÇÃO PARA CHECAR IGUALDADE DE SENHAS
function addpass(){
var pass1 = document.getElementById("novasenha").value;
var pass2 = document.getElementById("novasenha2").value;

if (pass1 && pass2) {
sendpass.focus();
sendpass.location.href="checkpass.php?pass1="+pass1+"&pass2="+pass2;
}
}






// FUNÇÕES PARA VALIDAÇÃO DE EMAILS
function addemail1(){
var link = document.getElementById("email1").value;

if (link) {
sendemail.focus();
sendemail.location.href="checkemail.php?v=1&email="+link;
}
}


function addemail2(){
var link1 = document.getElementById("email1").value;
var link2 = document.getElementById("email2").value;

if (link2) {
sendemail.focus();
sendemail.location.href="checkemail.php?v=2&email="+link1+"&email2="+link2;
}
}






// FUNÇÕES PARA VALIDAÇÃO DE DESCRIÇÃO - REMOVER URLS, TELEFONES E EMAILS
function addtxt(){
var link = document.getElementById("descr").value;

if (link) {
sendemail.focus();
sendemail.location.href="checkanuncio.php?descr="+link;
}
}







// MASCARAS PARA FORMULÁRIOS
Mascaras = {
IsIE: navigator.appName.toLowerCase().indexOf('microsoft')!=-1,
AZ: /[A-Z]/i,
Acentos: /[À-ÿ]/i,
Num: /[0-9]/,
carregar: function(parte){
 var Tags = ['input','textarea'];
 if (typeof parte == "undefined") parte = document;
 for(var z=0;z<Tags.length;z++){
  Inputs=parte.getElementsByTagName(Tags[z]);
  for(var i=0;i<Inputs.length;i++)
   if(('button,image,hidden,submit,reset').indexOf(Inputs[i].type.toLowerCase())==-1)
    this.aplicar(Inputs[i]);
 }
},
aplicar: function(campo){
 tipo = campo.getAttribute('tipo');
 if (!tipo || campo.type == "select-one") return;
 orientacao = campo.getAttribute('orientacao');
 mascara = campo.getAttribute('mascara');
 if (tipo.toLowerCase() == "decimal"){
  orientacao = "esquerda";
  casasdecimais = campo.getAttribute('casasdecimais');
  tamanho = campo.getAttribute('maxLength');
  if (!tamanho || tamanho > 50)
   tamanho = 10;
  if (!casasdecimais)
   casasdecimais = 2;
  campo.setAttribute("mascara", this.geraMascaraDecimal(tamanho, casasdecimais));
  campo.setAttribute("tipo", "numerico");
  campo.setAttribute("orientacao", orientacao);
 }
 if (orientacao && orientacao.toLowerCase() == "esquerda") campo.style.textAlign = "right";
 if (mascara) campo.setAttribute("maxLength", mascara.length);
 if (tipo){
  campo.onkeypress = function(e){ return Mascaras.onkeypress(e?e:event); };
  campo.onkeyup = function(e){ Mascaras.onkeyup(e?e:event, campo) };
 }
 campo.setAttribute("snegativo", ((campo.value).substr(0,1) == "-" ? "s" : "n"));
},
onkeypress: function(e){
 KeyCode = this.IsIE ? event.keyCode : e.which;
 campo =  this.IsIE ? event.srcElement : e.target;
 readonly = campo.getAttribute('readonly');
 if (readonly) return;
 maxlength = campo.getAttribute('maxlength');
 pt = campo.getAttribute('pt');
 selecao = this.selecao(campo);
 if (selecao.length > 0 && KeyCode != 0){
  campo.value = ""; return true;
 }
 if (KeyCode == 0) return true;
 Char = String.fromCharCode(KeyCode);
 valor = campo.value;
 mascara = campo.getAttribute('mascara');
 if (KeyCode != 8){
  tipo = campo.getAttribute('tipo').toLowerCase();
  negativo = campo.getAttribute('negativo');
  if(negativo && KeyCode == 45){
   snegativo = campo.getAttribute('snegativo');
   snegativo = (snegativo == "s" ? "n" : "s");
   campo.setAttribute("snegativo", snegativo);
  }else{
   valor += Char
   if (tipo == "numerico" && Char.search(this.Num) == -1) return false;
   if (KeyCode != 32 && tipo == "caracter" && Char.search(this.AZ) == -1 && Char.search(this.Acentos) == -1) return false;
  }
 }
 if (mascara){
  this.aplicarMascara(campo, valor);
  return false;
 }
 return true;
},
onkeyup: function(e, campo){
 KeyCode = this.IsIE ? event.keyCode : e.which;
 if (KeyCode != 9 && KeyCode != 16 && KeyCode != 109){
  valor = campo.value;
  if (KeyCode == 8 && !this.IsIE) valor = valor.substr(0,valor.length-1);
  this.aplicarMascara(campo, valor);
 }
},
aplicarMascara: function(campo, valor){
 mascara = campo.getAttribute('mascara');
 if (!mascara) return;
 negativo = campo.getAttribute('negativo');
 snegativo = campo.getAttribute('snegativo');
 if (negativo && valor.substr(0,1) == "-")
  valor = valor.substr(1,valor.length-1);
 orientacao = campo.getAttribute('orientacao');
 var i = 0;
 for(i=0;i<mascara.length;i++){
  caracter = mascara.substr(i,1);
  if (caracter != "#") valor = valor.replace(caracter, "");
 }
 retorno = "";
 if (orientacao != "esquerda"){
  contador = 0;
  for(i=0;i<mascara.length;i++){
   caracter = mascara.substr(i,1);
   if (caracter == "#"){
    retorno += valor.substr(contador,1);
    contador++;
   }else
    retorno += caracter;
   if(contador >= valor.length) break;
  }
 }else{
  contador = valor.length-1;
  for(i=mascara.length-1;i>=0;i--){
   if(contador < 0) break;
   caracter = mascara.substr(i,1);
   if (caracter == "#"){
    retorno = valor.substr(contador,1) + retorno;
    contador--;
   }else
    retorno = caracter + retorno;
  }
 }
 if (negativo && snegativo == "s")
  retorno = "-" + retorno;
 campo.value = retorno;
},
geraMascaraDecimal: function(tam, decimais){
 var retorno = ""; var contador = 0; var i = 0;
 decimais = parseInt(decimais);
 for (i=0;i<(tam-(decimais+1));i++){
  retorno = "#" + retorno;
  contador++;
  if (contador == 3){
   retorno = "." + retorno;
   contador=0;
  }
 }
 retorno = retorno + ",";
 for (i=0;i<decimais;i++) retorno += "#";
 return retorno;
},
selecao: function(campo){
 if (this.IsIE)
  return document.selection.createRange().text;
 else
  return (campo.value).substr(campo.selectionStart, (campo.selectionEnd - campo.selectionStart));
},
formataValor: function (valor, decimais){
 valor = valor.split('.');
 if (valor.length == 1) valor[1] = "";
 for(var i=valor[1].length;i<decimais;i++)
  valor[1] += "0";
 valor[1] = valor[1].substr(0,2);
 return (valor[0] + "." + valor[1]);
}
};









// VALIDAÇÃO DE FORMULÁRIOS
// Title: Tigra Form Validator
// URL: http://www.softcomplex.com/products/tigra_form_validator/
// Version: 1.3
// Date: 08/25/2005 (mm/dd/yyyy)
// Notes: This script is free. Visit official site for further details.

// regular expressions or function to validate the format



// ESTILIZAÇÃO DOS ALERTS DA VALIDAÇÃO
var class__texto__normal = "normal";  // comportamento normal
var class__texto__alert  = "alerta";		// comportamento com alert



var re_dt = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,
re_tm = /^(\d{1,2})\:(\d{1,2})\:(\d{1,2})$/,
re_cpf = /^([0-9]{3}\.){2}[0-9]{3}-[0-9]{2}$/,
re_cnpj = /^[0-9]{2}\.[0-9]{3}\.[0-9]{3}\/[0-9]{4}\-[0-9]{2}$/,
a_formats = {
	'alpha'   : /^[a-zA-Z\.\-]*$/,
	'alphanum': /^\w+$/,
	'unsigned': /^\d+$/,
	'integer' : /^[\+\-]?\d*$/,
	'real'    : /^[\+\-]?\d*\.?\d*$/,
	'email'   : /^[\w-\.]+\@[\w\.-]+\.[a-z]{2,4}$/,
	'phone'   : /^[\d\.\s\-]+$/,
	'cpfcnpj' : function (s_cpfcnpj) {
	    // pega somente os numeros
        var numero = s_cpfcnpj.replace(/\D/g, "");
		var igual = true;
		
		var tipo = 0;
		// check format
		if (re_cpf.test(s_cpfcnpj) || (numero.length == 11 && s_cpfcnpj.length == numero.length))
		    tipo = 1;
		else if (re_cnpj.test(s_cpfcnpj) || (numero.length == 14 && s_cpfcnpj.length == numero.length))
		    tipo = 2;
		else
		    return false;
		
        // verifica se todos os numeros sao iguais
		for (var i = 1; i < numero.length; i++) {
		    if (numero.charAt(i-1) != numero.charAt(i)) 
			    igual = false;
		}
		if (igual)
		    return false;

        function impCalcDig11(numero) {
        	var pesos = [2,3,4,5,6,7,8,9,2,3,4,5,6,7,8,9];
        	var calc = 0, x='';
	        var numero = String(numero).split("");
	        var limite = numero.length -1;
        	var result = 0;
	        var pso = 0;
	        for (var i = limite; i >= 0; i--) {
		        x += "\npso:" + pesos[pso] + " * " + numero[i] + " = " + (pesos[pso] * parseInt(numero[i]));
		        calc += (pesos[pso++] * parseInt(numero[i]));
	        }
	        result = 11 - ((calc)%11);
	        if (result == 11) {result = 0;}
	        return result;
        }

		if (tipo == 1){
            var cpf = numero.substring(0,9);
		    var digito = numero.substring(9,11);
			var soma, mt, dg = 0;
			var dgc = "";
		    for (var j = 1; j <= 2; j++) {
			    soma = 0;
			    mt = 2;
			    for (i = 8 + j; i >= 1; i--) {
				    soma += parseInt(cpf.charAt(i - 1), 10) * mt;
				    mt++;
	    		}
		    	dg = 11 - (soma % 11);
			    if (dg > 9) 
				    dg = 0;
			    cpf += dg;
			    dgc += dg;
		    }
        } else if (tipo == 2) {
            var cnpj = numero.substring(0,12);
		    var digito = numero.substring(12,14);
			var digitoc = 0;
			var dgc = "";
		    for (var j = 1; j <= 2; j++) {
			    digitoc = impCalcDig11(cnpj);
			    if (digitoc == 10) 
				    digitoc = 0;
			    dgc  += digitoc;
			    cnpj += digitoc;
		    }
	    }
	    // digito inválido
	    if (dgc != digito)
		    return false;

	    return true;
	},	
	// substitua a data por isto aqui 
    'date' : function (s_date) { 
        // check format 
        if (!re_dt.test(s_date)){ 
            return false; 
        } 
        // check allowed ranges 
        if (RegExp.$1 > 31 || RegExp.$2 > 12 || RegExp.$3 < 1900){ 
            return false; 
        } 
        var dt_test = new Date(); 
        if (RegExp.$3 > dt_test.getFullYear() + 10) 
            return false;		
        // check number of day in month 
        var dt_test = new Date(RegExp.$3, Number(RegExp.$2-1), RegExp.$1); 
        if (dt_test.getMonth() != Number(RegExp.$2-1)) 
            return false; 
        return true; 
	}, 
	'time'    : function (s_time) {
		// check format
		if (!re_tm.test(s_time))
			return false;
		// check allowed ranges	
		if (RegExp.$1 > 23 || RegExp.$2 > 59 || RegExp.$3 > 59)
			return false;
		return true;
	}
},


a_messages = [ 
    'Nenhum nome do formulário passou à rotina do Validator', 
    'Nenhum array do campo %form% passou à rotina do Validator', 
    'O formulário %form% não pode ser encontrado no documento', 
    'Entrada imcompleta no campo de formulário %n%. Atributo "l" não encontrado', 
    'Não encontrado o campo %n% no formulário %form%', 
    'Não encontrada a label tag (id=%t%)', 
    'Não é possível validar. Campo %m% não encontrado', 
    'Preencha o campo %l%', 
    'O campo %l% precisa de %mn% caracteres', 
    'O campo %l% não pode ter mais que %mx% caracteres', 
    '%v% não é um valor válido para %l%', 
    'O campo %l% deve ser %ml%' 
] 


// validator counstruction routine
function validator(s_form, a_fields, o_cfg) {
	this.f_error = validator_error;
	this.f_alert = o_cfg && o_cfg.alert
		? function(s_msg) { alert(s_msg); return false }
		: function() { return false };
		
	// check required parameters
	if (!s_form)	
		return this.f_alert(this.f_error(0));
	this.s_form = s_form;
	
	if (!a_fields || typeof(a_fields) != 'object')
		return this.f_alert(this.f_error(1));
	this.a_fields = a_fields;

	this.a_2disable = o_cfg && o_cfg['to_disable'] && typeof(o_cfg['to_disable']) == 'object'
		? o_cfg['to_disable']
		: [];
		
	this.exec = validator_exec;
}

// validator execution method
function validator_exec() {
	var o_form = document.forms[this.s_form];
	if (!o_form)	
		return this.f_alert(this.f_error(2));
		
	b_dom = document.body && document.body.innerHTML;
	
	// check integrity of the form fields description structure
	for (var n_key in this.a_fields) {
		// check input description entry
		this.a_fields[n_key]['n'] = n_key;
		if (!this.a_fields[n_key]['l'])
			return this.f_alert(this.f_error(3, this.a_fields[n_key]));
		o_input = o_form.elements[n_key];
		if (!o_input)
			return this.f_alert(this.f_error(4, this.a_fields[n_key]));
		this.a_fields[n_key].o_input = o_input;
	}

	// reset labels highlight
	if (b_dom)
		for (var n_key in this.a_fields) 
			if (this.a_fields[n_key]['t']) {
				var s_labeltag = this.a_fields[n_key]['t'], e_labeltag = get_element(s_labeltag);
				if (!e_labeltag)
					return this.f_alert(this.f_error(5, this.a_fields[n_key]));
				this.a_fields[n_key].o_tag = e_labeltag;
				
				// normal state parameters assigned here
				e_labeltag.className = class__texto__normal;
			}

	// collect values depending on the type of the input
	for (var n_key in this.a_fields) {
		var s_value = '';
		o_input = this.a_fields[n_key].o_input;
		if (o_input.type == 'checkbox') // checkbox
			s_value = o_input.checked ? o_input.value : '';
		else if (o_input.value) // text, password, hidden
			s_value = o_input.value;
		else if (o_input.options) // select
			s_value = o_input.selectedIndex > -1
				? o_input.options[o_input.selectedIndex].value
				: null;
		else if (o_input.length > 0) // radiobuton
			for (var n_index = 0; n_index < o_input.length; n_index++)
				if (o_input[n_index].checked) {
					s_value = o_input[n_index].value;
					break;
				}
		this.a_fields[n_key]['v'] = s_value.replace(/(^\s+)|(\s+$)/g, '');
	}
	
	// check for errors
	var n_errors_count = 0,
		n_another, o_format_check;
	for (var n_key in this.a_fields) {
		o_format_check = this.a_fields[n_key]['f'] && a_formats[this.a_fields[n_key]['f']]
			? a_formats[this.a_fields[n_key]['f']]
			: null;

		// reset previous error if any
		this.a_fields[n_key].n_error = null;

		// check reqired fields
		if (this.a_fields[n_key]['r'] && !this.a_fields[n_key]['v']) {
			this.a_fields[n_key].n_error = 1;
			n_errors_count++;
		}
		// check length
		else if (this.a_fields[n_key]['mn'] && this.a_fields[n_key]['v'] != '' && String(this.a_fields[n_key]['v']).length < this.a_fields[n_key]['mn']) {
			this.a_fields[n_key].n_error = 2;
			n_errors_count++;
		}
		else if (this.a_fields[n_key]['mx'] && String(this.a_fields[n_key]['v']).length > this.a_fields[n_key]['mx']) {
			this.a_fields[n_key].n_error = 3;
			n_errors_count++;
		}
		// check format
		else if (this.a_fields[n_key]['v'] && this.a_fields[n_key]['f'] && (
			(typeof(o_format_check) == 'function'
			&& !o_format_check(this.a_fields[n_key]['v']))
			|| (typeof(o_format_check) != 'function'
			&& !o_format_check.test(this.a_fields[n_key]['v'])))
			) {
			this.a_fields[n_key].n_error = 4;
			n_errors_count++;
		}
		// check match	
		else if (this.a_fields[n_key]['m']) {
			for (var n_key2 in this.a_fields)
				if (n_key2 == this.a_fields[n_key]['m']) {
					n_another = n_key2;
					break;
				}
			if (n_another == null)
				return this.f_alert(this.f_error(6, this.a_fields[n_key]));
			if (this.a_fields[n_another]['v'] != this.a_fields[n_key]['v']) {
				this.a_fields[n_key]['ml'] = this.a_fields[n_another]['l'];
				this.a_fields[n_key].n_error = 5;
				n_errors_count++;
			}
		}
		
	}

	// collect error messages and highlight captions for errorneous fields
	var s_alert_message = '',
		e_first_error;

	if (n_errors_count) {
		for (var n_key in this.a_fields) {
			var n_error_type = this.a_fields[n_key].n_error,
				s_message = '';
				
			if (n_error_type)
				s_message = this.f_error(n_error_type + 6, this.a_fields[n_key]);

			if (s_message) {
				if (!e_first_error)
					e_first_error = o_form.elements[n_key];
				s_alert_message += s_message + "\n";
				// highlighted state parameters assigned here
				if (b_dom && this.a_fields[n_key].o_tag)
					this.a_fields[n_key].o_tag.className = class__texto__alert;
			}
		}
		alert(s_alert_message);
		// set focus to first errorneous field
		if (e_first_error.focus && e_first_error.type != 'hidden'  && !e_first_error.disabled)
			eval("e_first_error.focus()");
		// cancel form submission if errors detected
		return false;
	}
	
	for (n_key in this.a_2disable)
		if (o_form.elements[this.a_2disable[n_key]])
			o_form.elements[this.a_2disable[n_key]].disabled = true;

	return true;
}

function validator_error(n_index) {
	var s_ = a_messages[n_index], n_i = 1, s_key;
	for (; n_i < arguments.length; n_i ++)
		for (s_key in arguments[n_i])
			s_ = s_.replace('%' + s_key + '%', arguments[n_i][s_key]);
	s_ = s_.replace('%form%', this.s_form);
	return s_
}

function get_element (s_id) {
	return (document.all ? document.all[s_id] : (document.getElementById ? document.getElementById(s_id) : null));
}









// RESTRINGIR CARACTERES NO CADASTRO
function max(txarea)
{
    total = 300;
    tam = txarea.value.length;
    str="";
    str=str+tam;

    Digitado = str;
    Restante1.innerHTML = total - str;

    if (tam > total){

       aux = txarea.value;
       txarea.value = aux.substring(0,total);
       Digitado = total
       Restante.innerHTML = 0
                    }

    }
	
function max2(txarea)
{
    total = 1200;
    tam = txarea.value.length;
    str="";
    str=str+tam;

    Digitado = str;
    Restante.innerHTML = total - str;

    if (tam > total){

       aux = txarea.value;
       txarea.value = aux.substring(0,total);
       Digitado = total
       Restante.innerHTML = 0
                    }

    }
	
	
	
	
	
	
	
	
	
// AJAX PARA BUSCA DE SUBCATEGORIAS
var reqx;
function loadXMLDocCAT(urlx){
 reqx = null;

if (window.XMLHttpRequest) {
 reqx = new XMLHttpRequest();
 reqx.onreadystatechange = processReqChangeCAT;
 reqx.open("GET", urlx, true); 
 reqx.send(null);

} else if (window.ActiveXObject) {
try {
reqx = new ActiveXObject("Msxml2.XMLHTTP.4.0");
} catch(e) {
try {
reqx = new ActiveXObject("Msxml2.XMLHTTP.3.0");
} catch(e) {
try {
reqx = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
reqx = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
reqx = false;
}
}
}
}
if (reqx) {
 reqx.onreadystatechange = processReqChangeCAT;
 reqx.open("GET", urlx, true);
 reqx.send();
}
}
}


function processReqChangeCAT(){
 
if (reqx.readyState == 1) {
 
document.getElementById("atualizar_subcat").innerHTML = "<center><b>Carregando ...</b></center>";

}

if (reqx.readyState == 4) {
if (reqx.status == 200) {

document.getElementById("atualizar_subcat").innerHTML = reqx.responseText;
} else {
alert("Houve um problema ao obter os dados:\n" + reqx.statusText);
}
}
}



function sel_subcat(valorx){
loadXMLDocCAT("aj_cat.php?ID="+valorx);
}









// AJAX PARA CONSULTA DE CEPS
function verifica(event){
var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
var caract = new RegExp(/[0-9]+$/i);
var caract = caract.test(String.fromCharCode(keyCode));

if(!caract){
alert("Caracter inválido: " +String.fromCharCode(keyCode));
keyCode=0;
return false;
}//fim if
}//fim função verifica

function get(elemento){
  return document.getElementById(elemento);
}//fim função get
   
function addEvent(obj, evt, func) {
   if (obj.attachEvent) {
     return obj.attachEvent(("on"+evt), func);
   } else if (obj.addEventListener) {
     obj.addEventListener(evt, func, true);
     return true;
   }
   return false;
}


function XMLHTTPRequest() {

   try {
     return new XMLHttpRequest(); // FF, Safari, Konqueror, Opera, ...
   } catch(ee) {
     try {
       return new ActiveXObject("Msxml2.XMLHTTP"); // activeX (IE5.5+/MSXML2+)
     } catch(e) {
       try {
         return new ActiveXObject("Microsoft.XMLHTTP"); // activeX (IE5+/MSXML1)
       } catch(E) {
         return false; // doesn't support
       }
     }
   }
}

function buscarEndereco() {

   var campos = {
     cep: document.getElementById("cep"),
     logradouro: document.getElementById("logradouro"),
     bairro: document.getElementById("bairro"),
     cidade: document.getElementById("cidade"),
     uf: document.getElementById("uf")
   };
   var ajax = XMLHTTPRequest();
  var url = "CEP.php?cep="+get("cep").value;

   ajax.open("GET", url, true);
   ajax.onreadystatechange = function() {
     if (ajax.readyState == 1) {
		 
       campos.logradouro.value = "carregando...";
	   campos.logradouro.disabled=true;
	   
       campos.bairro.value = "carregando...";
	   campos.bairro.disabled=true;
	   
       campos.cidade.value = "carregando...";
	   campos.cidade.disabled=true;
	   
       campos.uf.value = "carregando...";
	   campos.uf.disabled=true;
	   
    } else if (ajax.readyState == 4) {
    var r = ajax.responseText, i, uf, cidade, bairro, tipo_logradouro, logradouro;
    uf = unescape(r.substring(0, (i = r.indexOf(','))));
    r = r.substring(++i);
    cidade = unescape(r.substring(0, (i = r.indexOf(','))));
    r = r.substring(++i);
    bairro = unescape(r.substring(0, (i = r.indexOf(','))));
    r = r.substring(++i);
    tipo_logradouro = unescape(r.substring(0, (i = r.indexOf(','))));
    r = r.substring(++i);
    logradouro = r.substring(0, (i = r.indexOf(',')));
    
	campos.uf.value = uf;
	campos.uf.disabled=false;
	
    campos.cidade.value = cidade;
	campos.cidade.disabled=false;
	
    campos.bairro.value = bairro;
	campos.bairro.disabled=false;
	
    campos.logradouro.value = tipo_logradouro+' '+logradouro; 
	campos.logradouro.disabled=false;
	
     }
   };
  ajax.send(null);
}

window.addEvent(
   window,
   "load",
   function() {window.addEvent(document.getElementById("cep"), "blur", buscarEndereco);}
);