var ns6 = (!document.all && document.getElementById);
var ie4 = (document.all);
var ns4 = (document.layers);
var _bSubmit = false;

function validaSubmit(){
	if(!_bSubmit){
		_bSubmit = true;
		return true;
	}else{		
		return false;
	}
}

// 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);
}

// retorna um valor inteiro randomico com base nos valores especificados
function random(r1, r2) {
  if (r2 > r1) return (Math.round(Math.random()*(r2-r1))+r1);
  else return (Math.round(Math.random()*(r1-r2))+r2);
}


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 eh 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 == "+") || (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 if(j != " "){
             sResult += j ;
          }
   }
   return sResult ;
}

// deixa apenas caracteres alfanuméricos e/ou especiais
function CleanPassword (s) {
   // Az * , . _ $ % !
   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 == "." )
                   || ( j == "_") || ( j == "$") || ( j == "%" )
                   || ( j == "!" )
                 ) ) {
                     sResult += j ;
              }
          } else if(j != " "){
             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 ;
}

// soh 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 ;
}

// soh deixa caracteres permitidos
function isLogin ( s ) {
        var sResult = '' ;
        var r = s.value ;
        for ( var i = 0 ; i < r.length ; i++ )
                if ( (r.charAt( i ) >= 'a' && r.charAt( i ) <= 'z') ||
                     (r.charAt( i ) >= 'A' && r.charAt( i ) <= 'Z') ||
                     (r.charAt( i ) >= '0' && r.charAt( i ) <= '9') ||
                     (r.charAt( i ) == '-' ) )
                        sResult += r.charAt( i ) ;
        if ( !isNaN( sResult ) ) {
                return false ;
        }

        s.value = sResult ;
        return true ;
}

// 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 ;
        }
}


// formatar data !
function FormatDateXX(sInput)
{
        sValue = sInput.value;
        iSize  = sValue.length;

        if ( iSize > 2 && iSize <= 4 )
                sInput.value = sValue.substr( 0, 2 ) + "/" + sValue.substr( 2, iSize );
        else if ( iSize > 4 && iSize <= 8 )
                sInput.value = sValue.substr( 0, 2 ) + "/" + sValue.substr( 2, 2 ) + "/" + sValue.substr( 4, 4 );
}

// a data eh valida?
function isValidDate ( iMonth, iYear ) {
        var now = new Date() ;
        var dMonth = now.getMonth()+2 ;
        var dYear  = now.getYear() ;

        if ( (''+dMonth).length < 2 ) dMonth = '0' + dMonth ;
        if ( (''+iMonth).length < 2 ) iMonth = '0' + iMonth ;

        sToday = dYear + '' + dMonth ;
        sValid = iYear + '' + iMonth ;

        if ( parseInt(sValid) < parseInt(sToday) ) return false ;

        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 "nome":
		case "sobrenome":
			// F | V  - maximo de 50
			// J maximo de 100
			// var _iSize = 100;

			// if(_sTipoPessoa == "J") _iSize = 100;

			if(!isEmpty(oField.value)){
				oField.value = oField.value.toNormal();
				oField.value = NormalizeString(oField.value);
				oField.value = CleanSpaces(oField.value);
			}
		// END_NOME
		break;

		case "diaNascimento":
			if(_sNameField == "diaNascimento"){
				if(oField.value.length == 1){
			   		oField.value = 0 +""+ oField.value;
				}
		}	
		case "mesNascimento":
			if(_sNameField == "mesNascimento"){
				if(oField.value.length == 1){
			   		oField.value = 0 +""+ oField.value;
				}
		}	
		case "anoNascimento":
			if(_sNameField == "anoNascimento"){
				if(oField.value.length == 2){
					oField.value = 19 +""+ oField.value;
				}
			}	
		
			if(_sTipoPessoa == "J") break;
						
			if(!isEmpty(_sValueName)){
				LetOnlyNumbers(oField);

				_sValueName = oField.value;

				if(isEmpty(_sValueName)){
					oField.focus();
					break;
				}else if(_sNameField == "diaNascimento"){										
					if(_sValueName > 31 || _sValueName < 1 ){						
						oField.value = "";
						oField.focus();
						break;
					}
						oField.value = _sValueName;

				}else if(_sNameField == "mesNascimento"){
					
					if(oField.value.length == 1){
				   		oField.value = 0 +""+ oField.value;
					}
					
					if(_sValueName > 12 || _sValueName < 1){						
						oField.value = "";
						oField.focus();
						break;
					}
						oField.value = _sValueName;

				}else if(_sNameField == "anoNascimento"){
				    	var now = new Date();
						var Year  = now.getYear();
						
						Year = y2k(Year);																							

					// normalizar ano
					if(_sValueName.length == 2){
					   oField.value = 19 +""+ oField.value;
					}

					if( oField.value.length != 4 ){
						oField.value = "";
						break;
					}

				}

				if(_sNameField == "anoNascimento"){
				if(!isEmpty(oForm.diaNascimento.value) && !isEmpty(oForm.mesNascimento.value) && !isEmpty(oForm.anoNascimento.value)){
					if(!CheckDate(oForm.diaNascimento.value,oForm.mesNascimento.value,oForm.anoNascimento.value)){
						oForm.diaNascimento.value = "";
						oForm.mesNascimento.value = "";
						oForm.anoNascimento.value = "";
						break;
					}else{
						break;
					}
				}
				}

			}
		break;

		case "cpf":
			if(_sTipoPessoa == "J" || _sTipoPessoa == "V") break;
			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 "complemento":
		case "bairro":
		case "tipoLogradouro":
		case "logradouro":
			if(!isEmpty(oField.value)){
				oField.value = NormalizeString(oField.value);
				oField.value = 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 "foneContato":
			if(!isEmpty(oField.value)){
				oField.value = oField.value.toNormal();
				oField.value = NormalizeString(CleanSpaces(oField.value));
				oField.value = CleanString(oField.value);
			}
		break;
		
		
				case "ddd2":
			if(!isEmpty(oField.value)){
				oField.value = oField.value.toNormal();
				oField.value = NormalizeString(CleanSpaces(oField.value));
				oField.value = CleanString(oField.value);
			}
		break;

		case "foneContato2":
			if(!isEmpty(oField.value)){
				oField.value = oField.value.toNormal();
				oField.value = NormalizeString(CleanSpaces(oField.value));
				oField.value = CleanString(oField.value);
			}
		break;
		
		
				case "dddCelular":
			if(!isEmpty(oField.value)){
				oField.value = oField.value.toNormal();
				oField.value = NormalizeString(CleanSpaces(oField.value));
				oField.value = CleanString(oField.value);
			}
		break;

		case "celular":
			if(!isEmpty(oField.value)){
				oField.value = oField.value.toNormal();
				oField.value = NormalizeString(CleanSpaces(oField.value));
				oField.value = CleanString(oField.value);
			}
		break;
		
		

		case "email":
			if(!isEmpty(oField.value)){
				oField.value = oField.value.toLowerCase();
				oField.value = ContaPonto(oField.value);
//				oField.value = CleanSpaces(oField.value);
				if(_cTipoUsuario != 'C'){
					oField.value = oField.value.toNormal();
					oField.value = NormalizeString(oField.value);
					oField.value = CleanUpString(oField.value);
				}else {
					if (!isEmail(oField)){
						alert('formato de e-mail inválido!');
					}
				}
			}
		break;
		
		case "lembrete":
			if(!isEmpty(oField.value)){
				oField.value = NormalizeString(CleanSpaces(oField.value));
				oField.value = CleanUpString(oField.value);
			}
		break;
		case "emailAlternativo":
			if(!isEmpty(oField.value)){
				oField.value = oField.value.toNormal();
				oField.value = CleanSpaces(oField.value);
				isEmail(oField);
			}
		break;

		case "razaoSocial":		
			if(!isEmpty(oField.value)){
				oField.value = oField.value.toNormal();
				oField.value = CleanSpaces(oField.value);
				oField.value = NormalizeString(oField.value);
			}
		break;

		case "nomeFantasia":
			if(!isEmpty(oField.value)){
				oField.value = oField.value.toNormal();
				oField.value = NormalizeString(CleanSpaces(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 "senha":
		case "confirmaSenha":
			if(!isEmpty(oField.value)){
				s = CleanPassword(oField.value);				
				if(!isEmpty(s)){
					if(oField.value.length != s.length){
						oField.value = "";
					}
				}else{
					oField.value = "";
				}
			}		
		break;
		
		case "dddcelular":
			if(!isEmpty(oField.value)){
				oField.value = oField.value.toNormal();
				oField.value = NormalizeString(CleanSpaces(oField.value));
				oField.value = CleanString(oField.value);
			}
		break;
		case "#PERGUNTAPERFIL#41__1_U":
			if(!isEmpty(oField.value)){
				oField.value = oField.value.toNormal();
				oField.value = NormalizeString(CleanSpaces(oField.value));
				oField.value = CleanString(oField.value);
			}			
		break;

		default:
				//
	}
}

function y2k(number) { return (number < 1000) ? number + 1900 : number; }

function CheckDate(day,month,year) {
// isDate(dd,mm,ccyy), or
// isDate(dd,mm) - ano atual
// isDate(dd) - mes e ano atual

    var today = new Date();
    year = ((!year) ? y2k(today.getYear()):year);
    month = ((!month) ? today.getMonth():month-1);
    if (!day) return false
    var test = new Date(year,month,day);
    if ( (y2k(test.getYear()) == year) &&
         (month == test.getMonth()) &&
         (day == test.getDate()) )
        return true;
    else
        return false
}

function UntilSizeOf(_sValue,_iSize){
	if(isEmpty(_sValue)) return false;
	if(_sValue.length > _iSize)	return false;

	return true;
}

function DEBUG(_s){
	if(_DEBUG) alert(_s);
}

// PASSAR O FOCUS PARA O PROXIMO CAMPO
function NextField(_sName,oForm){
	var oField;
	for (i = 0; i < oForm.length; i++){
		if(oForm.elements[i].name == _sName){
			oField = oForm.elements[i + 1];
			break;
		}
	}
	if(oField) oField.focus();
}

// 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;
}

//limpa ".." consecutivos
function ContaPonto(_s){
	var _sSplit = "..";	
	while (_s.indexOf(_sSplit)>-1 ){
		_s = _s.substring(0,_s.indexOf(_sSplit)) + _s.substring(_s.indexOf(_sSplit)+1,_s.length);
	}
	return _s;
}

function getRemoteDocument(callback, urlString, counter) {
	var xmlComp = null;

	try {
		xmlComp = new XMLHttpRequest();
	} catch (e) {
		try {
			xmlComp = new ActiveXObject("Msxml2.XMLHttp");
		} catch (e) {
			window.alert("This browser doesn't support XMLHTTPRequest. Please update to a browser that supports it.");
		}
	}

	xmlComp.onreadystatechange = function() {
		document.body.style.cursor = "wait";
		if (xmlComp.readyState == 4) {
			document.body.style.cursor = "default";
			if (xmlComp.responseXML) {
				var d = xmlComp.responseXML;
				var retCounter = counter;
				if(d != null) {
					retCounter = d.getElementsByTagName("counter").item(0).getAttribute("value");
				}
				callback(d, retCounter);
			}
		}
	}

	urlString += (urlString.indexOf("?") > -1) ? "&" : "?";
	urlString += "counter=" + counter;
	if(document.all) {
		urlString += (urlString.indexOf("?") > -1) ? "&" : "?" + "noop=" + encodeURIComponent((new Date()).getTime());
	}

	xmlComp.open("GET", urlString, true);
	xmlComp.send(null);
	delete xmlComp;
}
