pontuacoes = new Array("'",'"','!','@','#','$','%','¨','&','*','(',')','_');
pontuacoes.push('+',',','=','¹','²','³','£','¢','¬','§','´','[','`','{');
pontuacoes.push('ª','~',']','}','^','º','\\','.',';','/','|','<','>',':');
pontuacoes.push('?','°','-','„','“','”','…');

//var semana = ['Domingo','Segunda','Terça','Quarta','Quinta','Sexta','Sábado']
var semana_min = ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb']
//var semana_min = ['Do','Se','Te','Qu','Qu','Se','Sá']
var meses = ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro']

function getElement(elemento){
    return document.getElementById(elemento);
}

function definir(elemento, valores){
    if(typeof(elemento)=="undefined"){
        elemento = valores;
    }
    return elemento;
}

function strip(str){
    str = str.replace(/^\s+/, "");
    return str.replace(/\s+$/, "");
}

function replaceAll(texto, original, novo){
    novo = definir(novo, "");
    while(texto.indexOf(original)!= -1){
        texto = texto.replace(original, novo);
    }
    return texto
}

function validaEmail(email){
    var tam = email.length;
    var aux1 = 0;
    var aux2 = 2;
    while (aux1<tam){
        if ((email.charAt(aux1)=="@")&&(aux1>0)){
            for (aux2+=aux1;aux2<tam;aux2++){
                if ((email.charAt(aux2)==".")&&(aux2<tam-2)){
                    return true;
                }
            }
        }
        aux1++;
    }
    return false;
}

function tirarPontuacao(frase){
    for (i=0;i<pontuacoes.length;i++){
        frase = replaceAll(frase,pontuacoes[i],'');
    }
    return frase;
}

//Função para textarea utilizar maxlength também.
function maxLength(obj, limit) {
    if (obj.value.length >= limit) {
        obj.value = obj.value.substring(0, limit-1);
    }
}

function slide(quem,speed,callback){
	if (!speed){var speed = 'normal'}
	if (!callback){
		$('#'+quem).slideToggle(speed);
	} else {
		$('#'+quem).slideToggle(speed, function(){
			location.href = callback;
		})
	}
}

function confirmar(url, texto){
    if(confirm(texto)){
        location.href = url;
    }
}

function formObrigatorios(onde){
	onde = (onde) ? onde+' ' : '';
	var label;
	//var texto = '<font color="red">*</font>';
    $(onde+'.obrigatorio label').each(function (i){
		label = $(this).text().substr(-1,1);
		if (label.indexOf('*') == -1) {
			$(this).append('<font color="red">*</font>');
		}
    });
}

function mensagem(msg,sucesso,onde){
    if (!onde){ onde='msg';}
    getElement(onde).innerHTML = msg;
    var classe = (sucesso) ? 'success' : 'error';
    getElement(onde).className = classe;
}

function fckConteudo(id){
    //trecho de código baseado no Samples de html do FCKeditor
    var fck = FCKeditorAPI.GetInstance(id);
    fck = fck.EditorDocument;
    var conteudo;
    if ( document.all )     // If Internet Explorer.
    {
        conteudo = fck.body.innerText;
    }
    else                    // If Gecko.
    {
        var r = fck.createRange();
        r.selectNodeContents( fck.body ) ;
        conteudo = r.toString();
    }
    conteudo = strip(definir(conteudo,''));
    return conteudo
}

function fckEditor(textarea,tipoToolbar, skin){
    if (!tipoToolbar){
        var tipoToolbar = "Custom";
    }
    if (!skin){
    	skin = 'office2003';
    }
    var oFCKeditor = new FCKeditor(textarea,'100%','350') ;
    oFCKeditor.Config["AutoDetectLanguage"] = false;
    oFCKeditor.Config["DefaultLanguage"] = "pt-br";
    oFCKeditor.Config["SkinPath"] = oFCKeditor.BasePath + 'editor/skins/'+skin+'/';
    oFCKeditor.ToolbarSet = tipoToolbar;
    oFCKeditor.ReplaceTextarea();
    return oFCKeditor;
}

function contadorCaracteres(id, qtd, texto){
    var linhas = (document.all) ? 5 : 4;
	var obj = getElement(id);
    if (!qtd){qtd=200}
    if (!texto){texto=''}
    var aplicarLength  = maxLength;
    with (obj){
        rows = linhas;
        onkeyup = function contador(){
            tamanho = obj.value.length;
            //o maxlength é diferente para inputs e textarea
            if ($('#'+id).is('input')){
                $('#'+id).attr('maxlength',qtd);
            } else {
                aplicarLength(obj,qtd+1);
            }
            if (tamanho<qtd){
                $('#c_'+id).html(texto+(qtd-tamanho));
            }else{
                $('#c_'+id).html('Tamanho Máximo');
            }
        }
        onmousemove = function contador(){
            tamanho = obj.value.length;
            //o maxlength é diferente para inputs e textarea
            if ($('#'+id).is('input')){
                $('#'+id).attr('maxlength',qtd);
            } else {
                aplicarLength(obj,qtd+1);
            }
            if (tamanho<qtd){
                $('#c_'+id).html(texto+(qtd-tamanho));
            }else{
                $('#c_'+id).html('Tamanho Máximo');
            }
        }
    }
}

function contadorCrescente(id, qtd){
    var linhas = (document.all) ? 5 : 4;
    if (!qtd){qtd=false}
    var tamanho, texto;
    var contador = function(){
            tamanho = getElement(id).value.length;
			//se tiver uma quantidade especificada coloca o atributo maxlength
            if (qtd) {
				//o maxlength é diferente para inputs e textarea
				if ($('#'+id).is('input')){
				    $('#'+id).attr('maxlength',qtd);
				} else {
					maxLength(getElement(id),qtd+1);
				}
			}
            if (qtd && tamanho>=qtd){
                $('#c_'+id).html('Tamanho Máximo');
            }else{
                texto = (tamanho<2)?' caracter':' caracteres';
                $('#c_'+id).html(tamanho+texto);
            }
    }
    with ($('#'+id)){
        attr('rows',linhas);
        mousemove(contador);
        keyup(contador);
    }
}


function aleatorio(inferior,superior){
    //gera numero aleatorio no intervalo passado como parametro
    numPossibilidades = superior - inferior;
    aleat = Math.random() * numPossibilidades;
    aleat = Math.floor(aleat);
    return parseInt(inferior) + aleat
}



function linhas(cor,onde){
	if(!onde){ onde='tr' }
    if (!cor){ cor='#DFEEFF'}
    $(onde+':even').css('background-color', cor);
}

function ajaxBuscarCep(){
    var cep = $('#id_cd_cep').val();
    cep = cep.replace('-','');
    $('#id_nm_bairro').attr('disabled',true);
    $('#id_nm_cidade').attr('disabled',true);
    $('#id_sg_uf').attr('disabled',true);
    if (cep.length==8 && !isNaN(parseInt(cep))){
        var url = '/ajax-buscar-cep/?cep='+ cep;
        var sucess = function(data){
        	//verifica se a cidade já tem uma preposição cadastrada
        	if (!data.preposicao){
        		formPreposicao(data);
        	}
        	if (data.bairro){
                $('#id_nm_bairro').val(data.bairro);
                $('#id_nm_cidade').val(data.cidade);
                $('#id_sg_uf').val(data.uf);
            } else if (data.cidade){
                $('#id_nm_bairro').val('');
                $('#id_nm_cidade').val(data.cidade);
                $('#id_sg_uf').val(data.uf);
                $('#id_nm_bairro').attr('disabled',false);
                $('#id_nm_bairro').focus();
            }else{
                $('#id_nm_bairro').val('');
                $('#id_nm_cidade').val('');
                $('#id_sg_uf').val('');
                alert(data.erro);
            }
            $('#id_cd_cep').attr('disabled',false);
        }
        $('#id_nm_bairro').val('carregando...');
        $('#id_nm_cidade').val('carregando...');
        $('#id_sg_uf').val('carregando...');
        $('#id_cd_cep').attr('disabled',true);
        $.getJSON(url,sucess);
    }else{
        $('#id_nm_bairro').val('');
        $('#id_nm_cidade').val('');
        $('#id_sg_uf').val('');
    }
}


/*********************************** CALENDÁRIOS ************************************/

function dataBR(data){
    if (data.indexOf('/') != -1) {
        data = data.split('/');
    } else {
        data = data.split('-');
    }
    data = data[2] + '/' + data[1] + '/' + data[0];
    return new Date(data)
}

Date.prototype.addDay=function(q){
  /**
   * validar parametros
   */
  if(q=="")
    return this;
  try{
    var segDia = 86400000; //24 * 60 * 60 * 1000
    var a = this.getTime();
    var b = a + (q * segDia);
    var c = new Date(b);
    return c;
  }catch(e){
    return this;
  }
}

Date.prototype.removeDay=function(q){
  /**
   * validar parametros
   */
  if(q=="")
    return this;
  try{
    var segDia = 86400000; //24 * 60 * 60 * 1000
    var a = this.getTime();
    var b = a - (q * segDia);
    var c = new Date(b);
    return c;
  }catch(e){
    return this;
  }
}

function atualizarCalendarios(idInicio,idFim){
    idInicio = (!idInicio) ? '#inicio' : idInicio;
    idFim = (!idFim) ? '#fim' : idFim;
    var inicio = dataBR($(idInicio).val());
    var fim = dataBR($(idFim).val());
    $(idFim).datepicker( "option", "minDate", inicio );
    //quantidade de dias que o primeiro periodo possui
    var periodo = (fim-inicio) / 86400000; //24 * 60 * 60 * 1000
    //remove esses dias do inicio para calcular a data máxima que o periodo anterior pode começar
    periodo = inicio.removeDay(periodo+1);
    $( "#periodo" ).datepicker( "option", "maxDate", periodo );
}


/*
**************************************
* Event Listener Function v1.4       *
**************************************
*/
addEvent = function(o, e, f, s){
    var r = o[r = "_" + (e = "on" + e)] = o[r] || (o[e] ? [[o[e], o]] : []), a, c, d;
    r[r.length] = [f, s || o], o[e] = function(e){
        try{
            (e = e || event).preventDefault || (e.preventDefault = function(){e.returnValue = false;});
            e.stopPropagation || (e.stopPropagation = function(){e.cancelBubble = true;});
            e.target || (e.target = e.srcElement || null);
            e.key = (e.which + 1 || e.keyCode + 1) - 1 || 0;
        }catch(f){}
        for(d = 1, f = r.length; f; r[--f] && (a = r[f][0], o = r[f][1], a.call ? c = a.call(o, e) : (o._ = a, c = o._(e), o._ = null), d &= c !== false));
        return e = null, !!d;
    }
};

removeEvent = function(o, e, f, s){
    for(var i = (e = o["_on" + e] || []).length; i;)
        if(e[--i] && e[i][0] == f && (s || o) == e[i][1])
            return delete e[i];
    return false;
};

//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com/forms/masked-input [v1.0]
//========================================================
// REQUIRES http://www.jsfromhell.com/geral/event-listener
//========================================================

MaskInput = function(f, m){
    function mask(e){
        var patterns = {"1": /[A-Z]/i, "2": /[0-9]/, "4": /[\xC0-\xFF]/i, "8": /./ },
            rules = { "a": 3, "A": 7, "9": 2, "C":5, "c": 1, "*": 8};
        function accept(c, rule){
            for(var i = 1, r = rules[rule] || 0; i <= r; i<<=1)
                if(r & i && patterns[i].test(c))
                    break;
                return i <= r || c == rule;
        }
        var k, mC, r, c = String.fromCharCode(k = e.key), l = f.value.length;
        (!k || k == 8 ? 1 : (r = /^(.)\^(.*)$/.exec(m)) && (r[0] = r[2].indexOf(c) + 1) + 1 ?
            r[1] == "O" ? r[0] : r[1] == "E" ? !r[0] : accept(c, r[1]) || r[0]
            : (l = (f.value += m.substr(l, (r = /[A|9|C|\*]/i.exec(m.substr(l))) ?
            r.index : l)).length) < m.length && accept(c, m.charAt(l))) || e.preventDefault();
    }
    for(var i in !/^(.)\^(.*)$/.test(m) && (f.maxLength = m.length), {keypress: 0, keyup: 1})
        addEvent(f, i, mask);
};

//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com/string/capitalize [v1.0]

String.prototype.capitalize = function(){
    return this.replace(/\w+/g, function(a){
        return a.charAt(0).toUpperCase() + a.slice(1).toLowerCase();
    });
};



