var ns6 = (!document.all && document.getElementById);
var ie4 = (document.all);
var ns4 = (document.layers);


// so para deixar o codigo mais limpo :)
function w(texto) { document.write( texto); }

function wln(texto) { document.writeln( texto); }

// padrao !
function popup(url,nome,atributos)
{
	janela =  window.open(url,nome,atributos);
}


function ValKey(oInput, oEvent)
{
	var BACKSPACE =  8;
	var iKey;
	var sCharKey;

	CheckTAB = true;
	if (navigator.appName.indexOf("Netscape") != -1)
		iKey = oEvent.which;
	else
		iKey = oEvent.keyCode;

	sCharkey = String.fromCharCode(iKey);

	if ( iKey == 13 ) return false;

	if ( iKey == BACKSPACE ) return true;

	//return (isNum(key));
}


// duas strings sao iguais?
function isEqual (s,r) {
    if ( s.value.length == 0 || r.value.length == 0 ) {
                return false ;
        }
    s.value = s.value.toLowerCase() ;
    r.value = r.value.toLowerCase() ;
    if ( s.value != r.value ) {
            return false ;
    }
    return true;
}

// o email e minimamente valido?
function isEmail (str) {
    var s = str.value ;

    while ( s.indexOf(' ') != -1 ) {
       s = s.replace(' ','') ;
    }

    s = s.toLowerCase() ;
    s = s.toNormal() ;

    var iError = 0 ;
    var i = 1 ;
    var sLength = s.length ;

    if (isEmpty(s)) iError++ ;

    var sResult = "" ;
    for ( var x = 0 ; x <= s.length ; x++ ){
      var j = s.charAt( x ) ;
          if ( isNaN( j ) ) {
              if ( ( ( ( j <= "Z" && j >= "A" ) ||
                   ( j <= "z" && j >= "a" ) ) ||
                   ( j >= "0" && j <= "9" ) ||
                   ( j <= "." && j >= "-" ) || ( j == "_" ) || ( j == "@" )
                 ) ) {
                     sResult += j ;
              }
          } else
             sResult += j ;
    }

    s = sResult ;

    while ((i < sLength) && (s.charAt(i) != "@")) { i++ ; }

    if ((i >= sLength) || (s.charAt(i) != "@")) { iError++ ; }
    else { i += 2 ; }

    while ((i < sLength) && (s.charAt(i) != ".")) { i++ ; }

    if ((i >= sLength - 1) || (s.charAt(i) != ".")) { iError++ ; }

    if ( iError > 0 ) {
            str.value = '' ;
            return false ;
    } else
            str.value = s ;
            return true ;
}

function NormalizeString (s) {
   var sResult = "" ;
   for ( var i = 0 ; i <= s.length ; i++ ){
      var j = s.charAt( i ) ;
          if ( isNaN( j ) ){
   			if(
   			   (j >= "-" && j <= "/")  ||
   			   (j >= "A" && j <= "Z" ) ||
   			   (j > "[" && j < "]")    ||
   			   (j >= "a" && j <= "z" ) ||
   			   (j >= "À" && j <= "Å" ) ||
   			   (j >= "È" && j <= "Ï")  ||
   			   (j >= "Ò" && j <= "Ö" ) ||
   			   (j >= "Ù" && j <= "Ü" ) ||
   			   (j >= "à" && j <= "å" ) ||
   			   (j >= "è" && j <= "ï" ) ||
   			   (j >= "ò" && j <= "ö" ) ||
   			   (j >= "ù" && j <= "ü" ) ||
   			   (j >= "ù" && j <= "ü" ) ||
   			   (j == "_") || (j == "&") ||
   			   (j == "+")
	   		 ){
   				sResult += j;
   			 }
          } else
             sResult += j ;
   }
   return sResult ;
}

// deixa apenas caracteres alfanuméricos e/ou especiais
function CleanUpString (s) {
   s = s.toNormal() ;
   var sResult = "" ;
   for ( var i = 0 ; i <= s.length ; i++ ){
      var j = s.charAt( i ) ;
          if ( isNaN( j ) ) {
              if ( ( ( ( j <= "Z" && j >= "A" ) ||
                   ( j <= "z" && j >= "a" ) ) ||
                   ( j <= "." && j >= "-" ) || ( j == "_" )
                 ) ) {
                     sResult += j ;
              }
          } else
             sResult += j ;
   }
   return sResult ;
}

// deixa apenas números
function CleanString( number ){
        var newnumber = "" ;
        for ( i = 0 ; i <= number.length ; i++ ) {
                if (! isNaN( number.charAt( i )) ) newnumber = newnumber + number.charAt( i ) ;
        }
        return newnumber ;
}


// substitui por caracteres normais, como vogais sem acentos e cedilha
function String_LetNormal() {
    if ( this.length <= 0 )
        return this ;
    s = this.toString();
    var aMask = new Array(
                ["a","à"], ["a","ã"], ["a","á"], ["a","ä"], ["a","â"],
                ["e","è"], ["e","ë"], ["e","é"], ["e","ê"],
                ["i","î"], ["i","ì"], ["i","ï"], ["i","í"],
                ["o","ó"], ["o","ö"], ["o","ò"], ["o","õ"], ["o","ô"],
                ["u","ú"], ["u","ü"], ["u","ù"], ["u","û"],
                ["c","ç"],
                ["A","À"], ["A","Ã"], ["A","Á"], ["A","Ä"], ["A","Â"],
                ["E","È"], ["E","Ë"], ["E","É"], ["E","Ê"],
                ["I","Î"], ["I","Ì"], ["I","Ï"], ["I","Í"],
                ["O","Ó"], ["O","Ö"], ["O","Ò"], ["O","Õ"], ["O","Ô"],
                ["U","Ú"], ["U","Ü"], ["U","Ù"], ["U","Û"],
                ["C","Ç"]
            );
    for ( var i = 0 ; i < aMask.length ; i++ ){
        while ( s.indexOf( aMask[i][1] ) != -1 ) {
            s = s.replace(aMask[i][1],aMask[i][0]);
        }
    }
    return s ;
}
String.prototype.toNormal = String_LetNormal;


// tem espacos em branco?
function isWhitespace (s) {
    if (isEmpty(s)) return true;
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (whitespace.indexOf(c) == -1) return false;
    }
    return true;
}

// a string está vazia?
function isEmpty (s) {
	return ((s == null) || (s.length == 0)) ;
}

// requer duas palavras separadas, pelo menos
function isName (s) {
    if ( s.value.indexOf( " " ) == -1 ) {
            return false ;
    }
    return true ;
}

// requer uma sequencia de numeros
function isSerialNumber ( s, iLen ) {
    var sResult = '' ;
    var r = s.value ;
    var J = 0 ;
    for ( var i = 0 ; i < r.length ; i++ ) {
            if ( !isNaN(r.charAt(i)) ) {
                    J++ ;
                    sResult += r.charAt(i) ;
            }
    }
    if ( J < iLen ) {
                        s.value = '' ;
            return false ;
    }
    s.value = sResult ;
    return true ;
}

// so deixa numeros no campo
function LetOnlyNumbers ( s ) {
        var sResult = '' ;
        var r = s.value ;
        for ( var i = 0 ; i < r.length ; i++ )
                if ( !isNaN( r.charAt( i ) ) )
                        sResult += r.charAt( i ) ;
        s.value = sResult ;
}


// valida CGC
function isCGC( s ) {
        var r = s.value ;
        var iError = 0 ;
		r = CleanSpaces(r);
        var nCGC_ = CleanString( r ) ;

        if ( (r * 1) == 0 ) iError++ ;

        if ( nCGC_.length == 15 && nCGC_.charAt(0) == "0") nCGC_ = nCGC_.substring(1 , nCGC_.length) ;
        if ( nCGC_.length != 14 ) iError++ ;

        var nCGC = new Array() ;

        for ( i = 0 ; i < 15 ; i++ ) {
                nCGC[i] = nCGC_.charAt(i) ;
        }

        iDV1 = ( nCGC[0] * 5 + nCGC[1] * 4 + nCGC[2] * 3 + nCGC[3] * 2 + nCGC[4] * 9 + nCGC[5] * 8 + nCGC[6] * 7 + nCGC[7] * 6 + nCGC[8] * 5 + nCGC[9] * 4 + nCGC[10] * 3 + nCGC[11] * 2 ) % 11 ;
        if ( iDV1 == 1 || iDV1 == 0 ) { iDV1 = 0 } else { iDV1 = 11 - iDV1 }
        if ( iDV1 != nCGC[12] ) iError++ ;

        iDV2 = ( nCGC[0] * 6 + nCGC[1] * 5 + nCGC[2] * 4 + nCGC[3] * 3 + nCGC[4] * 2 + nCGC[5] * 9 + nCGC[6] * 8 + nCGC[7] * 7 + nCGC[8] * 6 + nCGC[9] * 5 + nCGC[10] * 4 + nCGC[11] * 3 + nCGC[12] * 2) % 11 ;
        if ( iDV2 == 1 || iDV2 == 0 ) { iDV2 = 0 }      else { iDV2 = 11 - iDV2 }
        if ( iDV2 != nCGC[13] ) iError++ ;

        if ( iError > 0 ) {
				// alert ( "O CGC/CNPJ está incorreto. Por favor, verifique.\n" ) ;
                return false ;
        } else
                return true ;
}

// valida CIC/CPF
function isCPF( s ) {
        var r = s.value ;
        var iError = 0 ;

        if (r.length == 0 ) iError++ ;

        if ( (r * 1) == 0 ) iError++;

		r = CleanSpaces(r);

        var nCPF_ = CleanString( r );

        if ( nCPF_.length != 11 ) iError++ ;

        var nCPF = new Array() ;

        for ( i = 0 ; i < 11 ; i++ ) {
                nCPF[i] = nCPF_.charAt(i) ;
        }

        var iDV1 , iDV2 ;
        iDV1 = ( nCPF[0] * 10 + nCPF[1] * 9 + nCPF[2] * 8 + nCPF[3] * 7 + nCPF[4] * 6 + nCPF[5] * 5 + nCPF[6] * 4 + nCPF[7] * 3 + nCPF[8] * 2 ) % 11 ;
        if ( iDV1 == 1 || iDV1 == 0 ) {iDV1 = 0 } else { iDV1 = 11 - iDV1 }
        if ( iDV1 != nCPF[9] ) iError++ ;

        iDV2 = ( nCPF[0] * 11 + nCPF[1] * 10 + nCPF[2] * 9 + nCPF[3] * 8 + nCPF[4] * 7 + nCPF[5] * 6 + nCPF[6] * 5 +nCPF[7] * 4 + nCPF[8] * 3 + nCPF[9] * 2 ) % 11 ;
        if ( iDV2 == 1 || iDV2 == 0 ) {iDV2 = 0 } else { iDV2 = 11 - iDV2 }
        if ( iDV2 != nCPF[10] ) iError++ ;

        if ( iError > 0 ) {
                //alert ( "O CIC/CPF está incorreto. Por favor, verifique.\n" ) ;
                return false ;
        } else {
				return true ;
        }
}


// FUNCAO PARA VALIDAR DADOS DO CAMPO E DAR A NAVEGACAO
function ValidateForm(oForm){
	return false;
}

// EXIBIR MENSAGENS DO SISTEMA
_DEBUG = true;

// VALIDAR POR CAMPO
function ValidateField(oField,oForm){
	if(!oField || !oForm) return false;

	var _sNameField = oField.name;
	var _sValueName = oField.value;

	switch (_sNameField) {

		case "realname":
			if(!isEmpty(oField.value)){
				oField.value = oField.value.toNormal();
				oField.value = CleanSpaces(oField.value);
				String_LetNormal(oField);
			}
		break;


		case "cpf":
			if(!isEmpty(oField.value)){

				oField.value = oField.value.toNormal();
				oField.value = NormalizeString(CleanSpaces(oField.value));
				oField.value = CleanString(oField.value);

				if( !isCPF(oField) ){
					//oField.value = "";
					//oField.focus();					
					break;
				}
			}
		break;

		case "numero":
			if(!isEmpty(oField.value)){
				oField.value = oField.value.toNormal();
				oField.value = NormalizeString(CleanSpaces(oField.value));
			}
		break;


		case "ddd":
			if(!isEmpty(oField.value)){
				oField.value = oField.value.toNormal();
				oField.value = NormalizeString(CleanSpaces(oField.value));
				oField.value = CleanString(oField.value);
			}
		break;

		case "cep":
			if(!isEmpty(oField.value)){
				oField.value = oField.value.toNormal();
				oField.value = NormalizeString(CleanSpaces(oField.value));
				oField.value = CleanString(oField.value);
			}
		break;


		case "telRES":
			if(!isEmpty(oField.value)){
				oField.value = oField.value.toNormal();
				oField.value = NormalizeString(CleanSpaces(oField.value));
				oField.value = CleanString(oField.value);
			}
		break;

		case "telCOM":
			if(!isEmpty(oField.value)){
				oField.value = oField.value.toNormal();
				oField.value = NormalizeString(CleanSpaces(oField.value));
				oField.value = CleanString(oField.value);
			}
		break;


		case "cnpj":
			if(!isEmpty(oField.value)){

				oField.value = oField.value.toNormal();
				oField.value = NormalizeString(CleanSpaces(oField.value));
				oField.value = CleanString(oField.value);

				if( !isCGC(oField) ){
					//oField.value = "";
					//oField.focus();
					break;
				}
			}
		break;

		case "email":
			if(!isEmpty(oField.value)){
				oField.value = oField.value.toNormal();
				oField.value = CleanSpaces(oField.value);
				isEmail(oField);
			}
		break;


		default:
				//
	}
}


function DEBUG(_s){
	if(_DEBUG) alert(_s);
}


// LIMPAR ESPACOS
function CleanSpaces(_s){
	var _sSplit = " ";
	var _a = _s.split(_sSplit);
	var _str = "";
	for (var i=0; i < _a.length; i++){
		var _b = _a[i];
		if(_b.length != 0){
			_str += _b;
			if(i != _a.length - 1) _str += " ";
		}
	}//for
	return _str;
}

