/*
	funções globais Javascript
*/
$('a.ativar, a.desativar').live('click', function(e){
    var codigo = $(this).attr('rel').split('##');
    var tabela = codigo[1];
    codigo = codigo[0];

    $.post( raiz + '_inc/ativar.php', { codigo: codigo, tabela: tabela }, function( ativar ){
        if( ativar != 1 )
        {
            $('a.ativar[rel="'+codigo+'##'+tabela+'"]').removeClass('ativar').addClass('desativar').text('inativo');
        }
        else
        {
             $('a.desativar[rel="'+codigo+'##'+tabela+'"]').removeClass('desativar').addClass('ativar').text('ativo');
        }
    });
    e.preventDefault();
});

$('.campo-ordem').live('keyup', function(){
    var ordem   = $(this).val();
    var codigo  = $(this).attr('id').split('##');
    var tabela  = codigo[1];
    codigo = codigo[0];
    $.post(raiz+'_inc/ordem.php', {codigo:codigo, tabela:tabela, ordem:ordem}, function(){
        // void 
    });
});

// marca/desmarca checkboxes para exclusão
// tipo = 0 -> checkbox
// tipo = 1 -> link
var checkAll = function(chk,tipo) {
	// instancia variáveis
	var checkboxes = $('#resultado-check').find('input');

	if (tipo) {
		if ($(chk).attr('checked') == true)
			$(chk).attr('checked',false);
		else
			$(chk).attr('checked',true);
	}
	
	// marca/desmarca
	// i = 0 : checkbox para marcar/desmarcar todos
	for (var i = 0; i < checkboxes.length; i++) {
		if(checkboxes[i].type.toLowerCase() == 'checkbox') {
			if ($(chk).attr('checked') == true) {
				checkboxes[i].checked = true;
				$("#row"+checkboxes[i].value).css('background-color','#ff9999');
			} else {
				checkboxes[i].checked = false;
				$("#row"+checkboxes[i].value).css('background-color','#fff');
			}
		}
	}
	
}; // fim checkAll

// envia form para excluir todos os selecionados
var deleteAll = function() {
	var checkboxes = $('#resultado-check').find('input');
	var countCheck = false;
	
	// verifica se tem algum checkbox marcado 
	for (var i = 1; i < checkboxes.length; i++) {
		if((checkboxes[i].type.toLowerCase() == 'checkbox') && (checkboxes[i].checked == true)) {
			countCheck = true;
		}
	}
	
	if (countCheck) {	
		m2brAlert({
			 altura:150,
			 largura:300,
			 msg:'Tem certeza que deseja excluir os registros selecionados?',
			 classe:'pergunta',
			 botao1: {label:'confirmar', action: 'javascript:$(\'#excluir-lista\').submit();'},
			 botao2: {label: 'cancelar', action:'javascript:m2brHideAlert();'}
		});
	} else {
		var erro = "<span>Escolha ao menos um ítem!</span>";
		msgTopo(erro, 'erro', tempoPadrao);
		return false;	
	}
};

// focus no primeiro campo do form
var formFocus = function(elem) {
	var campos = $(elem).find('input');
	for (var i = 0; i<campos.length; i++) {
		if (campos[i].type != 'hidden') {
			campos[i].focus();
			return true;
		}
	}
};

// exibe/esconde filtros
var acaoFiltro = function(e) {
	if (e == 'block') {
		$('#filtros').slideUp(700);
		$('#filtros-link').html('[+] exibir filtros');
		xajax_sessionFiltros(1);
	} else {
		$('#filtros').slideDown(700);
		$('#filtros-link').html('[-] esconder');
		xajax_sessionFiltros(0);
	}
}; // fim acaoFiltro

// valida e-mail
var validaEmail = function(s) {
	var regexpEmail = /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/;
	return regexpEmail.test(s);
}; // fim validaEmail

// marca rows de uma tabela/lista
var disableRow = function(box) {
	for(i=0;i<box.form.elements[box.name].length;i++) {
		if(box.form.elements[box.name][i]===box) {
			break;
		}
	}
	if(box.checked) {
		$("#row"+box.value).css('background-color','#ff9999');
	} else {
		$("#row"+box.value).css('background-color','#fff');
	}
}; // fim disableRow

// exibe popup para exclusão de registro
var excluirRegistro = function(codigo,params,area) {
	m2brAlert({
		 altura:150,
		 largura:300,
		 msg:'Tem certeza que deseja excluir este registro?',
		 classe:'pergunta',
		 botao1: {label:'confirmar', action: 'javascript:window.location.href=\''+raiz+area+'/resposta.php?acao=excluir&cod_'+area+'='+codigo+'&'+params+'\';'},
		 botao2: {label: 'cancelar', action:'javascript:m2brHideAlert();'}
	});
}; // fim excluirRegistro

// envia imagem via iframe
var enviaImagem = function() {
	$('#carregando').css('display', 'block');
	$('#div-form').css('display', 'none');
	$('#frm-upload').submit();
}; // fim enviaImagem

// exclui foto
var excluirFoto = function(arquivo,acao,tipo) {
	m2brAlert({
		 altura:150,
		 largura:300,
		 msg:'Tem certeza que deseja excluir esta imagem?',
		 classe:'pergunta',
		 botao1: {label:'confirmar', action: 'javascript:void(xajax_excluirImagem(\''+arquivo+'\',\''+acao+'\',\''+tipo+'\'));'},
		 botao2: {label: 'cancelar', action:'javascript:m2brHideAlert();'}
	});
}; // fim excluirFoto

// confirma cancelamento de operação no form
var cancelaOperacao = function(rel) {
	if (!rel) {
		rel = 'index.php';
	}
	m2brAlert({
			 altura:150,
			 largura:300,
			 msg:'Tem certeza que deseja cancelar esta operação?',
			 classe:'pergunta',
			 botao1: {label:'sim', action: 'javascript:window.location.href="'+rel+'";'},
			 botao2: {label: 'não', action:'javascript:m2brHideAlert();'}
	});
}; // fim cancelaOperacao

// marca permissões de um certo tipo
var checkPermissao = function(chk, tipo, vialink) {
	if (vialink == 1) {
		if ($(chk).is(':checked')) {
			$(chk).attr('checked', false);
		} else {
			$(chk).attr('checked', true);	
		}
		
		$('.'+tipo).each(function(){
								  
			if ($(chk).is(':checked')) {
				$(this).attr('checked', true);	
			} else {
				$(this).attr('checked', false);	
			}
								  
		});
		
	}
}; // fim checkPermissao

// valida formulário de esqueci minha senha
var validaFormSenha = function() {
	var erro 		= '';	
	var senha		= $('#senha').val();
	var senha_conf	= $('#senha_conf').val();
	
	if( senha.length < 6 ) {
		erro += '<span>Sua senha deve possuir no mínimo 6 caracteres.</span>';
	} else if(senha.indexOf(' ') > -1) {
		erro += '<span>Sua senha não pode conter espaço em branco.</span>';
	} else if( senha != senha_conf ) {
		erro += '<span>As senhas digitadas não conferem.</span>';
	}
	
	if( erro ) {
		msgTopo( erro, 'erro', 5000 );
		return false;
	}
	
	return true;
};

var tamanhoIframeSubform = function(){
    $('body').find('.iframe-subform').each(function(){
        var altura      = $(this).height();
        var altura_body = $(this).contents().find('#miolo').height();
        
        if( altura != altura_body ) $(this).height( altura_body + 80 );
    });
};

var ocultaCampoSubform = function( campo, valor )
{
    $('#lbl-'+campo).parent().after('<input type="hidden" name="'+campo+'" id="'+campo+'" value="'+valor+'" />').remove();
};

var buscaEndereco = function( campo, selects )
{
    var cep = $('#'+campo).val();
    selects = parseInt( selects );
    cep = cep.replace( /\./g, '' ); 
    cep = cep.replace( /-/g, '' );
    cep = cep.replace( /_/g, '' );
    if( cep.length == 8 )
    {
        var prefixo = campo.replace(/cep/, '');
        $.getJSON( raiz + '_inc/busca_endereco.php', { cep : cep }, function( data ){
            if( selects > 0 )
            {
                
                $('#'+prefixo+'estados_cod option').each(function(){
                    if( $(this).val() == data.estado ) $(this).attr('selected', true); 
                });
                var sel_cidades = prefixo + 'cidades_cod';
                var sel_bairros = prefixo + 'bairro';
                var sel_ruas    = prefixo + 'logradouro';

                if( data.estado )
                {
                    $('<img src="'+raiz+'_img/loading.gif" id="loading-'+sel_cidades+'" />').insertBefore($("select#"+sel_cidades));
                    $("select#"+sel_cidades).hide();
                    $.getJSON(raiz+"_inc/cidades.php?search=",{cod_estados: data.estado, ajax: 'true'}, function(j){
                        var options = '<option value=""></option>';	
                        for (var i = 0; i < j.length; i++) {
                            var sel = '';
                            if( j[i].cod_cidades == data.cidade ) sel = 'selected';
                            options += '<option value="' + j[i].cod_cidades + '" ' + sel  + '>' + j[i].nome + '</option>';
                        }	
                        $("select#"+sel_cidades).html(options);
                        $('#loading-'+sel_cidades).remove();
                        $("select#"+sel_cidades).show();
                        
                        if( data.cidade )
                        {
                            $('<img src="'+raiz+'_img/loading.gif" id="loading-'+sel_bairros+'" />').insertBefore($("select#"+sel_bairros));
                            $("select#"+sel_bairros).hide();
                            $.getJSON(raiz+"_inc/bairros.php?search=",{cod_cidades: data.cidade, ajax: 'true'}, function(j){
                                var options = '<option value=""></option>';	
                                for (var i = 0; i < j.length; i++) {
                                    var sel = '';
                                    if( j[i].cod_bairros == data.bairro ) sel = 'selected';
                                    options += '<option value="' + j[i].cod_bairros + '" ' + sel + '>' + j[i].nome + '</option>';
                                }	
                                $("select#"+sel_bairros).html(options);
                                $('#loading-'+sel_bairros).remove();
                                $("select#"+sel_bairros).show();

                                if( data.bairro )
                                {
                                    $('<img src="'+raiz+'_img/loading.gif" id="loading-'+sel_ruas+'" />').insertBefore($("select#"+sel_ruas));
                                    $("select#"+sel_ruas).hide();
                                    $.getJSON(raiz+"_inc/ruas.php?search=",{cod_bairros: data.bairro, ajax: 'true'}, function(j){
                                        var options = '<option value=""></option>';	
                                        for (var i = 0; i < j.length; i++) {
                                            var sel = '';
                                            if( j[i].cod_ruas == data.rua ) sel = 'selected';
                                            options += '<option value="' + j[i].cod_ruas + '" '+sel+'>' + j[i].nome + '</option>';
                                        }	
                                        $("select#"+sel_ruas).html(options);
                                        $('#loading-'+sel_ruas).remove();
                                        $("select#"+sel_ruas).show();
                                    });	                   
                                }

                            });           
                        }

                    });
                }
            }
            else
            {

                data.rua_ext = data.rua_ext && typeof(data.rua_ext) != 'undefined' ? data.rua_ext : ' -- ';
                data.bairro_ext = data.bairro_ext && typeof(data.bairro_ext) != 'undefined' ? data.bairro_ext : ' -- '; 
                data.cidade_ext = data.cidade_ext && typeof(data.cidade_ext) != 'undefined' ? data.cidade_ext : ' -- ';
                data.estado_ext = data.estado_ext && typeof(data.estado_ext) != 'undefined' ? data.estado_ext : ' -- ';
                var html = '<img src="'+raiz+'_img/loading.gif" id="loading-endereco-txt" />';
                $('#'+prefixo+'endereco_txt').html( html );
                html = '<p><strong>Rua:</strong> ' + data.rua_ext + '<br />'; 
                html += '<strong>Bairro:</strong> ' + data.bairro_ext + '<br />'; 
                html += '<strong>Cidade/Estado:</strong> ' + data.cidade_ext + '/' + data.estado_ext + '</p>';
                $('#'+prefixo+'endereco_txt').html( html );
            }
        });
    }
};

$('.lnk-marcar-todos').live('click', function(e){
    e.preventDefault();
    var marcar = true;
    if( $(this).parent().parent().find('input:checkbox:checked').length > 0 )
    {
        marcar = false;
    }
    $(this).parent().parent().find('input:checkbox').attr('checked', marcar);
});

/* ONLOAD GLOBAL */
$(function(){
	if( $.isFunction( $('.calendario').datepicker ) ) {
		$('.calendario').datepicker({
			dateFormat	:'dd/mm/yy',
			dayNames	:['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'],
			dayNamesMin	:['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],
			monthNames	:['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
            changeMonth : true,
            changeYear  : true,
            showOtherMonths : true,
            numberOfMonths: 3,
            monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez']
		});
	}
	
	if( $.isFunction( $('.data').mask ) ) 
    {
        $('.data, .calendario').mask( '99/99/9999' );
		$('.telefone').mask( '(99) 9999-9999' );
		$('.cep').mask( '99.999-999' );
		$('.cnpj').mask( '99.999.999/9999-99' );
		$('.cpf').mask( '999.999.999-99' );
    }

    if( $.isFunction( $('.money').maskMoney ) )
    {
        $('.money').maskMoney({decimal:",", thousands:"."});
    }

    if( $('#nav').length > 0 && $.isFunction( $('#nav').supersubs ) )
    {
        $('#nav')
            .supersubs({ 
                    minWidth:    12,   // minimum width of sub-menus in em units 
                    maxWidth:    27,   // maximum width of sub-menus in em units 
                    extraWidth:  1     // extra width can ensure lines don't sometimes turn over 
                                       // due to slight rounding differences and font-family 
            })
            .superfish({
                speed: 100,
                delay: 100,
                animation: {opacity:'show'}
            });
    }

    // Valida formulários (substituo pro wforms)
    $('form').submit(function(){

        // limpa validações atuais
        $(this).find('.errFld').removeClass('errFld');
        $(this).find('.errMsg').remove();

        // campo obrigatório
        $(this).find('.required').each(function(){
            var tipo    = this.tagName.toLowerCase();
            var erro    = false;
            if( ( tipo == 'input' || tipo == 'select' || tipo == 'textarea' ) && !$(this).val() )
            {
                erro = true;
            }
            else if( tipo == 'div' || tipo == 'p' || tipo == 'span' || tipo == 'ul' )
            {
                var marcado = false;
                $(this).find('input, select, textarea').each(function(){
                    var subtipo = this.type.toLowerCase();
                    if( typeof subtipo == 'undefined' ) subtipo = '';
                    else subtipo = subtipo.toLowerCase();
                    if( 
                        (   
                            ( tipo == 'input' && ( subtipo != 'radio' && subtipo != 'checkbox' ) )
                            || tipo == 'select'
                            || tipo == 'textarea'
                        )
                        && $(this).val() 
                     )
                    {
                        marcado = true;
                    }
                    else if( subtipo == 'radio' || subtipo == 'checkbox' )
                    {
                        if( $(this).is(':checked') )
                        {
                            marcado = true;
                        } 
                    }
                });
                if( !marcado ) erro = true;
            }
            if( erro )
            {
                $(this).addClass('errFld');
                $('<div id="'+$(this).attr('id')+'-E" class="errMsg">Campo obrigatório.</div>').insertAfter(this);
            }
        });

        // e-mail
        $(this).find('.validate-email').each(function(){
            if( $(this).val() != '' && !$(this).hasClass('errFld') && !validaEmail( $(this).val() ) )
            {
                $(this).addClass('errFld');
                $('<div id="'+$(this).attr('id')+'-E" class="errMsg">E-mail inválido.</div>').insertAfter(this);
            }
        });

        // inteiros
        $(this).find('.validate-integer').each(function(){
            var regexp = /^[+]?\d+$/;
            if( $(this).val() != '' && !$(this).hasClass('errFld') && !regexp.test( $(this).val() ) )
            {
                $(this).addClass('errFld');
                $('<div id="'+$(this).attr('id')+'-E" class="errMsg">Este campo só aceita números inteiros.</div>').insertAfter(this);
            }
        });

        // senhas
        if( $(this).find('#senha1').length > 0 )
        {
            if( $('#senha1').val() || $('#senha1').hasClass('required') )
            {
                if( $('#senha1').val() < 6 || $('#senha1').val().indexOf(' ') > -1 )
                {
                    $('#senha1').addClass('errFld');
                    $('<div id="senha1-E" class="errMsg">Sua senha deve possuir no mínimo 6 caracteres, sem espaço em branco.</div>').insertAfter('#senha1');
                }
                else if( $('#senha1').val() != $('#senha2' ).val() )
                {
                    $('#senha1').addClass('errFld');
                    $('#senha2').addClass('errFld');
                    $('<div id="senha2-E" class="errMsg">As senhas digitadas não conferem.</div>').insertAfter('#senha2');
                }
            }
        } 

        // verifica se encontrou erro e exibe mensagem
        if( $(this).find('.errFld').length > 0 )
        {
            msgTopo( '<span>Foram encontrados um ou mais erros no seu formulário. Verifique os campos marcados em vermelho.</span>', 'erro', 5000 );
            var scroll = $(this).find('.errFld:first');
            $.scrollTo(scroll, 300);
            $(this).find('.errFld:first').focus();
            return false;
        }
        return true;
    });

    // formata tooltips
    $('.m2frm .m2frm-hint').each(function(){
        var orig = $(this).prev();
        var txt = $(this).html();
        $(orig).append('<a href="#" class="lnk-tooltip">?</a><div class="tooltip"><p>' + txt + '</p></div>');
        $('.tooltip').hide();
        var largura = $(orig).find('.tooltip').find('p').width();
        if( largura > 300 )
        {
            $(orig).find('.tooltip').find('p').width(300);
        }
        $(this).remove();
    });

    $('a.lnk-tooltip').hover(
        function(){
            var tooltip = $(this).parent().find('.tooltip');
            var left = $(this).offset().left; 
            $(tooltip).css('margin-left', left + 'px' );
            $(tooltip).show();
        },
        function(){
             $(this).parent().find('.tooltip').hide();
        }
    );


});

$(function(){

    if( $.isFunction( $('a.colorbox').colorbox ) && $('a.colorbox').length > 0 )
    {
        $('a.colorbox').colorbox();
    }    
    if( $.isFunction( $('.galeria-m2brupload').sortable ) && $('.galeria-m2brupload').length > 0 )
    {
        $('.galeria-m2brupload').sortable({
             tolerance: 'pointer',
             scroll: true,
             dropOnEmpty: true,
             items: 'li',
             appendTo: 'ul',
             stop: function( ev, ui ){ atualizaOrdemM2brupload( $(this).parent() ); },
             placeholder: 'dragHelper'
        });
    }
});

var atualizaOrdemM2brupload = function( ul )
{
    var ordem = '';    
    var cod = 0;
    var galeria = $(ul).attr('id').replace( /m2brupload-/, '' );
    var re = new RegExp( 'galeria-' + galeria + '-', 'gi' );
    $(ul).find('li').each(function(){
        cod = $(this).attr('id').replace( re, '' );
        ordem += cod + '##';
    });
    $.post( raiz + '_plugins/m2brupload/ordem.php', {ordem:ordem, galeria:galeria} );    
};

