function isNumber( value ) {
    if( value =='0' || value =='1' ||
        value =='2' || value =='3' ||
        value =='4' || value =='5' ||
        value =='6' || value =='7' ||
        value =='8' || value =='9') {
        return true;
    } else {
        return false;
    }
}//isNumber

function delAlfa(value) {
    var newvalue = "";
    for (i=0; i < value.length; i++) {
        if(isNumber( value.charAt(i) ) /* || value.charAt(i) =='-' */ ) {
            newvalue += value.charAt(i);
        }
    }
    return newvalue;
}//delAlfa

function format(field, mask) {
	var str = delAlfa( field.value );
	var length = ( str.length > mask.length ) ? mask.length : str.length;
	var tmp = "";
	var j = 0;
	for( var i = 0; i < length; i++ ) {
		if ( mask.charAt( j ) != "*" ) {
			tmp += mask.charAt ( j );
			j++;
		}
		tmp += str.charAt ( i );
		j++;
	}
	field.value = tmp.substring( 0, mask.length );
}

function format_nextel(field){
    var valor = field.value;
    valor = valor.replace(/\D/g,""); //Remove tudo o que não é dígito
    valor = valor.replace(/^(\d{2})(\d{4})/, "$1*$2") //Coloca um asterisco entre a parte 1 e a parte 2
    valor = valor.replace(/(^\d{2}\*\d{4})(.*)/,"$1"); // retira
    field.value = valor
}


function format_telefone(form_name) {
  var tipo     = $(form_name + '_tipo');
  var telefone = $(form_name + '_telefone');
  switch(tipo.getValue()) {
    case 'nextel':
      format_com_regex( telefone, '([0-9]{0,2})([0-9]{0,2})([0-9]{0,4})', ['*', '*']);
      break;
    case 'central':
      format( telefone, '****-***-****' );
      break;
    default:
      format( telefone, '****-****' );
  }
}

function format_com_regex(field, mask, separadores){
    /*
     *field: campo HTML (obrigatório)
     *mask: mascara de formato do campo (String contndo RegExp) (obrigatório)
     *separadores: array contendo os separadores do dos grupos, ou nulo
     *caso não haja separador.
     *
     *Ex de mask, sparadores: '([0-9]{0,2})([0-9]{0,2})([0-9]{0,4})', ['*', '*']
     *formata o texto no seguinte formato ##*##*####
     *
     *Ex de mask, sparadores: '([0-9]{0,15})', null
     *formata o texto no seguinte formato ###############
     */
    var i = 0;
    var valor = field.value;
    var mascara = new RegExp (mask);
    var resultado;
    if (separadores != null){
      resultado = new Array(separadores.length + 1);
    }
    else{
      resultado = new Array(1);
    }
    var saida = "";
    if(separadores != null){
    //Retira os caracteres separadores da string
      for (i = 0; i < separadores.length; i++){
        valor = valor.replace(separadores[i], "");
      }
    }
    /*
     *Encontra as partes do que foi digitado e cabem nas partes da expressão
     *regular.
     *O primeiro elemento do array é a expressão toda, e a última sempre vazia
     *não sei porque...
     */
    var array =  mascara.exec(valor);
    if (array != null){
      for (i  = 1; i < array.length; i++){
          if(array[i] != null){
              resultado[i -1] = array[i];
          }
      }
    }
    //verifica se todas as partes da xpressão foram preenchidas
    var todos = true;
    if(resultado != null){
        for(i = 0; i < resultado.length; i++){
            if (resultado[i] == ""){
                todos = false;
            }
        }
        //monta o valor que será mostrado na tela do usuário
        for(i = 0; i < resultado.length; i++){
            saida += resultado[i];
            if (separadores != null){
              if(i < (resultado.length -1)){
                 if ((todos == true) && (separadores[i] != null)){
                   saida += separadores[i];
                 }
               }
            }
      }
      field.value = saida;
    }
}

function format_invert(field, mask) 
{
    var str = delAlfa( field.value );
    var length = str.length;
    var end = mask.length;
    for( var i = 0 ; i < length; i++ ) {
        if ( mask.charAt( end ) != "*" ) {
            end = end - 1;
        }
        end = end - 1;
    }
    format( field, mask.substring( end  + 1 , mask.length ) );
}

function format_cpf_cnpj(input)
{
    if (input.value.length <= 14) {
        format( input, '***.***.***-**');
    } else {
        format_invert( input, '***.***.***/****-**');
    }
}
