function $(id) {return document.getElementById(id);}
function $N(s) {return document.getElementsByName(s);}

String.prototype.glSuperTrim = function() {
	var s=this.replace(/^\s+|\s+$/g,'');// um espaço ou mais no início ou no final da linha: removemos.
	return s.replace(/\s{2,}/g,' ');// dois ou mais espaços juntos: substituimos por um único espaço.
}

String.prototype.glTrim = function() {
	return this.replace(/^\s+|\s+$/g,'');// um espaço ou mais no início ou no final da linha: removemos.
}

function setMsg(msg, displayAlert) {
	if ( msg != '' && displayAlert ) { alert( msg.replace(/<br\/>/g, "\n") ); }
	$('tdMsg').innerHTML = ( msg == '' ? '&nbsp;' : '<blink>' + msg + '</blink>' );
}

function SuperTrim( campo ) {
	var s = campo.value;
	s = s.replace( /^\s+|\s+$/g, '' );  //um ou mais espaços no início ou no final da linha
	s = LimpaEspacosDuplos( s );
	campo.value = s;
}

function LimpaEspacosDuplos( s ) {
	return /\s{2,}/g;	//dois ou mais espaços
}

function SoAlgarismos( s ) { 
	return s.replace( /\D/g, '' );
 }
 
function SemEspacos( s ) { 
	return s.replace( /\s/g, '' );	//qualquer espaço em branco
 }
 
function ValidarData( obj ) {
	var s = new String;
	s = obj.value;
	if ( s == '' ) return true;
	var re = /\d{2}\/\d{2}\/\d{4}/;
	if ( re.test( s ) ) return true
	else {
		alert( 'Digite a data no formato "dd/mm/aaaa".' );
		return false;
		}
}

function EmailOk( campo ) { 
	var s = campo.value;
	if ( s == '' ) return true;
	s = SemEspacos(s);
	var re = /[\.]{2,}/g	//dois pontos juntos
	s = s.replace( re, '.' );
	campo.value = s;
	if ( !ValidarEmail( s ) ) {
		alert ( 'E-mail inválido.' );
		return false;
 	} 
 	return true;
 }
 
function TelefoneOk( campo ) { 
	if ( campo.value == '' ) return true;
	if ( !ValidarTelefone( campo.value ) ) { 
		alert ( 'Número de telefone inválido.\nUtilize o formato cel 11 1234-5678.' );
 		return false;
 	} 
	return true;
 }
 
function ValidarTelefone( s ) { 
	return (/^[(]{0,1}(\w{2,}[)]{0,1}[\s\.-]*)+\d{4}$/.test( s ) ); 
}
function MaisDeUmaPalavra( s ) { 
	return (/^\w{2,}\s\w{1,}/.test( s ) ); 
}
function ValidarEmail( s ) { 
	return ( /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/.test( s ) );
 }

function CpfOk( campo ) { 
	var s = campo.value;
 	if ( s == '' ) return true;
	var s = SoAlgarismos( campo.value );
	while ( s.length < 11 ) s = "0" + s;
 	if ( s.length > 11 ) s = s.substr( 0, 11 );
	if ( !VerificaDVcpf( s ) ) {
 		alert ( 'Número de CPF inválido.' );
	 	return false; 
	} 
	var re = /(\d\d\d)(\d\d\d)(\d\d\d)(\d\d)/; //isto formata o CPF !!!
	s = s.replace( re, "$1.$2.$3-$4" );
	campo.value = s;
	return true;
 };

function VerificaDVcpf( s ) {
	var CPFaux = s;
 	NR_CPF = CPFaux.substr( 0, 9 );
	var rcpf2 = CPFaux.substr( 9, 2 );
	if ( ( NR_CPF == null || NR_CPF == 0 ) ) return false;
	
	var strRangeInvalido = '0000000000019111111111112222222222233333333333444444444445555555555566666666666777777777778888888888899999999999';
	if ( strRangeInvalido.indexOf( CPFaux ) > -1 ) return false;

 	d1 = 0;
 	for ( i = 0; i < 9; i++ ) d1 += NR_CPF.charAt( i ) * ( 10 - i );
	d1 = 11 - ( d1 % 11 );
	if ( d1 > 9 ) d1 = 0;
	if ( rcpf2.charAt( 0 ) != d1 ) return false;

	d1 *= 2;
	for ( i = 0; i < 9; i++ ) d1 += ( NR_CPF.charAt( i ) * ( 11 - i ) );
	d1 = 11 - ( d1 % 11 );
	if ( d1 > 9 ) d1 = 0;
	if ( rcpf2.charAt( 1 ) != d1 ) return false;
	
 	return true;
}

function PisOK(campo) {
	var s = campo.value;
 	if ( s == '' ) return true;
	var s = SoAlgarismos( campo.value );
	while ( s.length < 11 ) s = "0" + s;
 	if ( s.length > 11 ) s = s.substr( 0, 11 );
	if ( !VerificaDVpis( s ) ) {
 		alert ( 'Número de PIS inválido.' );
	 	return false; 
	} 
	var re = /(\d\d\d)(\d\d\d\d\d)(\d\d)(\d)/; //isto formata o PIS
	s = s.replace( re, "$1.$2.$3-$4" );
	campo.value = s;
	return true;
}

function VerificaDVpis(pis) {
	if (pis=="" || pis==null) return false;

    var ftap = "3298765432";
    var total = 0;
    var dv = 0;
	var fator = 3;
    total = ( parseInt( pis.charAt( 0 ) ) * 2 );
    total += ( parseInt( pis.charAt( 1 ) ) * 3 );
	for ( var i=2; i<10; i++ ) { total += ( parseInt( pis.charAt( i ) ) * 11-i ); }
	
	dv = ( total % 11 )
	dv = ( dv < 2 ? 0 : 11 - dv );
	return (dv == pis.charAt( 10 ));
}



function createXMLHttpRequest() {
	try { return new XMLHttpRequest(); } catch(e) {};
	try { return new ActiveXObject("Msxml2.XMLHTTP");	} catch(e) {};
	try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {};
	alert("Seu navegador não suporta navegação XMLHttpRequest. Não posso exibir o conteúdo.");
	return null;
}

function generateUniqueID() {
	return new Date().getTime();
}


