
/*
 * Descricao: Exibe a mensagem AJAX
 */
function showAjaxMessage()
{
    // exibe a mensagem
    userMessage.show('Processando Opera&ccedil;&atilde;o...', '<h3>Favor aguarde...</h3>', 'loading', false);
}

/*
 * Descricao: Esconde a mensagem AJAX
 */
function hideAjaxMessage()
{
    userMessage.hide();
}

/*
 * Faz login
 * Parametros:
 *  - email   : E-mail do usuario
 *  - pw      : Senha do usuario
 *  - callback: Funcao a ser executada apos o login ser realizado
 */
function login(email, pw, redir_to)
{
    // exibe a mensagem de processamento
    showAjaxMessage();

    // verifica se o email foi informado
    if(email == ''){
        userMessage.show('E-mail N&atilde;o Informado', '<p>Favor informar seu <strong>E-Mail</strong>.</p>', 'alert');
        return;
    }

    // verifica se a senha foi informada
    if(pw == ''){
        userMessage.show('Senha N&atilde;o Informada', '<p>Favor informar sua <strong>Senha</strong>.</p>', 'alert');
        return;
    }

    // exibe a mensagem de processamento
    showAjaxMessage();

    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php', { fun: 'login', email: escape(trim(email)), senha: md5(trim(pw)) },
        function(data)
        {
            // caso o login tenha falhado
            if(data.className != 'success'){
                userMessage.show(data.title, data.text, data.className);
            }

            // caso o login tenha sido efetuado com sucesso
            else {

                // verifica se algum redirecionamento foi especificado
                (redir_to) ? document.location = redir_to : document.location = pageRoot + '/';
            }
        }
    , "json");

} // fim-login()

/*
 * Faz logout
 */
function logout()
{
    // exibe a mensagem de processamento
    showAjaxMessage();

    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php', { fun: 'logout' },
        function(data)
        {
            // caso o logout tenha falhado
            if(data.className != 'success'){
                userMessage.show(data.title, data.text, data.className);
            }

            // caso o logout tenha sido efetuado com sucesso
            else {
                document.location = pageRoot;
            }
        }
    , "json");

} // fim-logout()

/*
 * Salva os dados de um usuario
 */
function saveUserData(form, action)
{
    /* Inicio Verificacao dos dados ---------------------------------------- */

    // verifica se o Nome foi informado
    if(trim(form.nome.value) == ''){
        userMessage.show('Nome N&atilde;o Informado', '<p>Favor preencha o campo <strong>Nome</strong>.</p>', 'alert');
        return;
    }

    // verifica se o Email foi informado
    if(trim(form.email.value) == ''){
        userMessage.show('E-Mail N&atilde;o Informado', '<p>Favor preencha o campo <strong>E-Mail</strong>.</p>', 'alert');
        return;
    }
    // verifica se o Email e valido
    if(!isEmail(trim(form.email.value))){
        userMessage.show('E-Mail Inv&aacute;lida', '<p>O <strong>E-Mail</strong> informado n&atilde;o &eacute; v&aacute;lido.</p>', 'alert');
        return;
    }

    // verifica se a Senha foi informada
    if((action == 'insert') && (trim(form.senha.value) == '')){
        userMessage.show('Senha N&atilde;o Informada', '<p>Favor informar sua <strong>Senha</strong>.</p>', 'alert');
        return;
    }
    // verifica se a Senha e valida
    else if((trim(form.senha.value) != '') && (checkPassword(trim(form.senha.value)) <= 0)){
        userMessage.show('Senha Inv&aacute;lida', '<p>A <strong>Senha</strong> deve ter pelo menos 6 (seis) caracteres.</p>', 'alert');
        form.senha.value = '';
        form.rep_senha.value = '';
        $('.pw').css('display', 'none');
        $('.pw_0').css('display', 'inline');
        return;
    }
    // compatibilidade das Senhas
    else if(trim(form.senha.value) != trim(form.rep_senha.value)){
        userMessage.show('Senha Inv&aacute;lida', '<p>Os campos <strong>Senha</strong> e <strong>Repita a Senha</strong> devem ter o mesmo valor.</p>', 'alert');
        form.senha.value = '';
        form.rep_senha.value = '';
        $('.pw').css('display', 'none');
        $('.pw_0').css('display', 'inline');
        return;
    }

    /* Fim Verificacao dos dados ------------------------------------------- */

    // exibe a mensagem de processamento
    showAjaxMessage();

    var params = '?';
    for(var i = 0; i < form.length; i++){
        if(form[i].type == 'submit') continue;
        if(form[i].id != 'rep_senha'){
            params += (i > 0) ? '&' : '';
            if(form[i].type == 'checkbox')
                params += form[i].id + "=" + form[i].checked;
            else {
                params += form[i].id + '=';
                params += (form[i].id == 'senha') ? md5(form[i].value) : escape(trim(form[i].value));
            }
        }
    }

    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php' + params, { fun: 'saveUserData', action: action },
        function(data)
        {
            // caso o cadastro tenha sido efetuado com sucesso
            if((data.className == 'success') && (action == 'insert')){
                form.reset();
            }

            // exibe a mensagem ao usuario
            userMessage.show(data.title, data.text, data.className);

            // limpa os campos Senha e Rep_Senha
            form.senha.value = '';
            form.rep_senha.value = '';

            // reinicia a forca da senha
            $('.pw').css('display', 'none');
            $('.pw_0').css('display', 'inline');

        }
    , "json");

} // fim-saveUserData()

/*
 * Salva os dados de uma pagina
 * Parametros:
 *  - form: Formulario
 *  - text: Conteudo
 */
function savePageData(form, tinyMCE)
{
    // recebe o conteudo da pagina
    var conteudo = tinyMCE.activeEditor.getContent();

    // verifica se o titulo foi digitado
    if(trim(form.titulo.value) == ''){
        userMessage.show('T&iacute;tulo N&atilde;o Informado', '<p>Favor informar o <strong>T&iacute;tulo</strong> da p&aacute;gina.</p>', 'alert');
        return;
    }

    // verifica se o conteudo da pagina foi digitado
    if(conteudo == ''){
        userMessage.show('Conte&uacute;do da P&aacute;gina N&atilde;o Digitado', '<p>Favor digitar o <strong>Conte&uacute;do</strong> da P&aacute;gina.</p>', 'alert');
        return;
    }

    // exibe a mensagem de processamento
    showAjaxMessage();

    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php?titulo=' + escape(trim(form.titulo.value)), { fun: 'savePageData', titulo_url: form.titulo_url.value, conteudo: conteudo },
        function(data)
        {
            // exibe a mensagem ao usuario
            userMessage.show(data.title, data.text, data.className);
        }
    , "json");

} // fim-savePageData()

/*
 * Salva os dados de um texto
 * Parametros:
 *  - form      : formulario
 *  - text      : texto
 *  - type      : Tipo do texto (Pag. Estatica, Noticia, Artigo...)
 *  - db_table  : Tabela do banco de dados
 *  - img_folder: Pasta das imagens
 *  - titulo_l  : Label do titulo
 *  - action    : Acao (inserir/atualizar)
 *  - titulo_url: Titulo URL do texto (usado para edicao)
 *  - callback  : Funcao a ser executada apos o envio ser realizado
 */
function saveTextData(form, tinyMCE, action, type, db_table, img_folder, src_dir, ed_titulo_url, callback)
{
    // recebe o texto
    var texto = tinyMCE.activeEditor.getContent();

    // verifica se o titulo foi digitado
    if(form.titulo.value == ''){
        userMessage.show('T&iacute;tulo N&atilde;o Informado', '<p>Favor informar o <strong>T&iacute;tulo</strong> do Texto.</p>', 'alert');
        return;
    }

    // verifica se o texto foi digitada
    if(texto == ''){
        userMessage.show('Texto N&atilde;o Digitado', '<p>Favor digitar o <strong>Texto</strong>.</p>', 'alert');
        return;
    }

    // verifica se a data de adicao foi digitada
    if(form.data_de_adicao.value == ''){
        userMessage.show('Data de Publica&ccedil;&atilde;o N&atilde;o Informada', '<p>Favor informar a <strong>Data de Publica&ccedil;&atilde;o</strong> do Texto.</p>', 'alert');
        return;
    }

    // exibe a mensagem de processamento
    showAjaxMessage();

    // salva o comentario das fotos ja adicionadas
    if(action == 'update'){

        // percorre as fotos
        $('#swfu_photos .o_photo textarea').each(function(i){
            savePhotoComment($(this).attr('id').substr('4'), $(this).attr('value'), type);
        });
    }

    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php?titulo=' + escape(trim(form.titulo.value)), { fun: 'saveTextData', texto: texto, data_de_adicao: form.data_de_adicao.value, galeria: form.exibir_galeria.checked, action: action, titulo_url: ed_titulo_url, db_table: db_table, dir: src_dir },
        function(data)
        {
            // caso tenha ocorrido sucesso
            if(data.className == 'success'){

                // atualiza o src_url e o onSubmit do formulario
                src_url = data.titulo_url;
                if(action == 'insert'){
                    $('#titulo_url').attr('value', src_url);
                    $('#save_form_data').html('Salvar Altera&ccedil;&otilde;es');
                    form.onsubmit = function(){

                        tinyMCE.triggerSave(true, true);
                        saveTextData(form, tinyMCE, type, img_folder, dir, 'update', src_url, function(src_name){ savePhotosData(src_name) });

                    } // fim-form
                } // fim-if

                // caso nao hajam fotos a adidionar, exibe a mensagem de sucesso
                if($('#swfu_photos .n_photo').size() <= 0){

                    // exibe a mensagem
                    userMessage.show(data.title, data.text, 'success');
                }

                // parametros para SWFU
                else {
                    swfu_type  = img_folder;
                    swfu_label = type;
                    src_name   = 'titulo';
                    dir        = src_dir;
                }

                // chama 'savePhotosData'
                if(callback) callback(src_url);
            }

            // exibe a mensagem de aviso/erro
            else
                userMessage.show(data.title, data.text, data.className);
        }
    , "json");

} // fim-saveTextData()

/*
 * Salva os dados de uma pergunta
 */
function saveQuestionData(action, name, question, status, q_id, answer)
{
    /* Inicio Verificacao dos dados ---------------------------------------- */

    // verifica se o Nome foi informado
    if(trim(name) == ''){
        userMessage.show('Nome N&atilde;o Informado', '<p>Favor preencha o campo <strong>Nome</strong>.</p>', 'alert');
        return;
    }
    
    // verifica se a Pergunta foi informada
    if(trim(question) == ''){
        userMessage.show('Pergunta N&atilde;o Informada', '<p>Favor preencha o campo <strong>Pergunta</strong>.</p>', 'alert');
        return;
    }

    /* Fim Verificacao dos dados ------------------------------------------- */

    // exibe a mensagem de processamento
    showAjaxMessage();
    
    // parametros da funcao
    var params = '?pergunta=' + question + '&nome=' + name + '&status=' + status + '&pg_id=' + q_id + '&resposta=' + answer;

    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php' + params, { fun: 'saveQuestionData', action: action },
        function(data)
        {
            // caso a operacao tenha sido efetuada com sucesso
            if((data.className == 'success') && (action == 'insert')){
    	        $('#enviar-tema')[0].reset();
    	        hideElement('#enviar-tema');
    	        changeText($('#ep-link'), 'Enviar Tema');
            }

            // exibe a mensagem ao usuario
            userMessage.show(data.title, data.text, data.className);
        }
    , "json");

} // fim-saveQuestionData()

/*
 * Salva os dados de um evento
 */
function saveEventData(action, date, address, event, status, ev_id)
{
    /* Inicio Verificacao dos dados ---------------------------------------- */

    // verifica se a Data foi informada
    if(trim(date) == ''){
        userMessage.show('Data N&atilde;o Informada', '<p>Favor informe a <strong>Data</strong> do Evento.</p>', 'alert');
        return;
    }
    
    // verifica se o Local foi informado
    if(trim(address) == ''){
        userMessage.show('Local N&atilde;o Informado', '<p>Favor informe o <strong>Local</strong> do Evento.</p>', 'alert');
        return;
    }

    // verifica se o Evento foi informado
    if(trim(event) == ''){
        userMessage.show('Evento N&atilde;o Informado', '<p>Favor preencha o campo <strong>Evento</strong>.</p>', 'alert');
        return;
    }

    /* Fim Verificacao dos dados ------------------------------------------- */

    // exibe a mensagem de processamento
    showAjaxMessage();
    
    // parametros da funcao
    var params = '?data=' + escape(date) + '&local=' + escape(address) + '&evento=' + escape(event) + '&status=' + status + '&ev_id=' + ev_id;

    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php' + params, { fun: 'saveEventData', action: action },
        function(data)
        {
            // caso a operacao tenha sido efetuada com sucesso
            if(data.className == 'success'){
                $('#form_add_rsc')[0].reset();
            }

            // exibe a mensagem ao usuario
            userMessage.show(data.title, data.text, data.className);
        }
    , "json");

} // fim-saveEventData()

// Atualiza o status de um texto
function setTextStatus(type, text, status)
{
    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php', { fun: 'setTextStatus', tipo: type, texto: text, status: status },
        function(data)
        {
            // caso tenha ocorrido sucesso
            if(data.className == 'success'){

                // Excluir
                if(status == '0') {
                    $('#txt_' + text).css("background", "#f55");
                    $('#txt_' + text).fadeTo(1000, 0, function(){$('#txt_' + text).fadeOut(0)});
                }
            }

            // erro
            else {
                userMessage.show(data.title, data.text, data.className);
            }
        }
    , "json");

} // fim setTextStatus()

/*
 * Envia um comentario
 * Parametros:
 *  - name      : Nome do usuario
 *  - email     : E-mail do usuario
 *  - gn        : Receber novidades
 *  - comment   : Comentario
 *  - rsc_type  : Tipo do Recurso (noticia, artigo, etc)
 *  - rsc_id_val: Valor do Identificador
 */
function sendComment(form, rsc_type, rsc_id_val)
{
    // recebe os dados do formulario
	var name    = trim(form.com_nome.value);
	var email   = trim(form.com_email.value);
	var gn    = form.com_rn.checked ? 1 : 0;
	var comment = trim(form.com_comentario.value);

	// verifica se o nome foi digitado
    if(name == ''){
        userMessage.show('Nome N&atilde;o Informado', '<p>Favor informar seu <strong>Nome</strong>.</p>', 'alert');
        return;
    }
    
    if(email == ''){
        userMessage.show('E-mail N&atilde;o Informado', '<p>Favor informar seu <strong>E-mail</strong>.</p>', 'alert');
        return;
    }
    
    // verifica se o Email e valido
    if(!isEmail(email)){
        userMessage.show('E-Mail Inv&aacute;lida', '<p>O <strong>E-Mail</strong> informado n&atilde;o &eacute; v&aacute;lido.</p>', 'alert');
        return;
    }
    
	if(comment == ''){
        userMessage.show('Coment&aacute;rio N&atilde;o Digitado', '<p>Favor digitar seu <strong>Coment&aacute;rio</strong>.</p>', 'alert');
        return;
    }

    // exibe a mensagem de processamento
    showAjaxMessage();

    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php?name=' + escape(name) + '&email=' + escape(email) + '&comentario=' + escape(comment), { fun: 'sendComment', gn: gn, rsc_type: rsc_type, rsc_id_val: rsc_id_val },
        function(data)
        {
            // exibe a mensagem ao usuario
            userMessage.show(data.title, data.text, data.className);
            
            // fecha o formulario
            hideElement(form);
            
            // reinicia o formulario
            form.reset();
            
            // altera o valor do link para enviar comentario
            toggleText($('#enviar-comentario a')[0], 'Enviar Coment&aacute;rio', 'Cancelar Coment&aacute;rio');
        }
    , "json");

} // fim-sendComment()

/* Carregar Fotos ************************************************************/

// novo nome das fotos
// tambem sera acessada por 'swfu.uploadStart()'
var swfu_new_photo_name = [];
var swfu_type  = '';
var swfu_label = '';
var dir = '';

// salva os dados das fotos no bd
function savePhotosData(src_url)
{
    var comment, // comentario de uma foto
        textareas = $('#swfu_photos .n_photo textarea'),
        ta_size = textareas.size(),
        callback,
        npn;

    // re-inicializa a variavel
    swfu_new_photo_name = [];

    // gera o nome das fotos
    textareas.each(function(i){

        // novo nome da foto
        comment = ( ($(this).attr('value') == 'Comentário...') || ($(this).attr('value') == '') ) ? $('#titulo').attr('value') : $(this).attr('value');

        npn = name_from_comment(comment);
        swfu_new_photo_name[ parseInt(($(this).parent().get(0).id).substr(8)) ] = npn;

        // define o callback
        callback = (i == (ta_size -1)) ? function(){ upload_photos(src_url); } : function(){};

        // salva o comentario
        savePhotoData(npn + '.jpg', src_url, comment, callback);
    });

} // fim-function (savePhotosData())

/*
 * Salva o comentario de uma foto
 * Parametros:
 *  - photo   : Foto
 *  - src_url : Materia/Produto/...
 *  - comment : Comentario
 *  - callback: Funcao a ser executada os dados serem salvos
 */
function savePhotoData(photo, src_url, comment, callback)
{
    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php?comentario=' + escape(comment), { fun: 'savePhotoData', foto: photo, src_url: src_url, label: swfu_label },
        function(data)
        {
            if(callback) callback(src_url);
        }
    , "json");

} // fim-savePhotoData()

/*
 * Salva o comentario de uma foto
 * Parametros:
 *  - photo   : Foto
 *  - comment : Comentario
 *  - src_url : Materia/Produto/...
 */
function savePhotoComment(photo, comment, label)
{
    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php?comentario=' + escape(comment), { fun: 'savePhotoComment', foto: photo, label: label },
        function(data)
        {}
    , "json");

} // fim-savePhotoData()

/*
 * Faz upload das fotos
 */
function upload_photos(src_url)
{
    // envia um parametro para o sistema de upload
    swfu.addPostParam("upload_dir", 'image/' + swfu_type + '/' + src_url);
    swfu.addPostParam("page_dir", dir);
    swfu.addPostParam("label", swfu_label);

    // faz upload das fotos
    swfu.startUpload();

} // fim-upload_photos()

/*
 * Apaga alguma foto
 */
function deletePhoto(photo, photo_li, swfu_type, type_url)
{
    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php', { fun: 'deletePhoto', foto: photo, tipo: swfu_type, tipo_url: type_url },
        function(data)
        {
            // caso tenha ocorrido sucesso
            if(data.className == 'success'){
                hideElement(photo_li);
            }

            // exibe a mensagem de aviso/erro
            else
                userMessage.show(data.title, data.text, data.className);
        }
    , "json");

} // fim-deletePhoto()

/* Fim Carregar Fotos ********************************************************/

// Salva um recado
function saveScrap(form)
{
    // verifica se o Nome foi digitado
    if(form.erl_nome.value == ''){
        userMessage.show('Nome N&atilde;o Informado', '<p>Favor informar seu <strong>Nome</strong>.</p>', 'alert');
        return;
    }

    // verifica se o recado foi digitado
    if(form.erl_recado.value == ''){
        userMessage.show('Recado N&atilde;o Digitado', '<p>Favor digitar seu <strong>Recado</strong>.</p>', 'alert');
        return;
    }

    // exibe a mensagem de processamento
    showAjaxMessage();

    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php?nome=' + escape(form.erl_nome.value) + '&recado=' + escape(form.erl_recado.value), { fun: 'sendScrap' },
        function(data)
        {
            // reinicia o formulario
            form.reset();
            hideElement('#enviar-recado-lateral');
            changeText($('#erl-link'), 'Escrever recado');

            // exibe a mensagem ao usuario
            userMessage.show(data.title, data.text, data.className);
        }
    , "json");

} // fim saveScrap()

// Atualiza um recado
function updateScrap(scrap, id)
{
    // verifica se o recado foi digitado
    if(scrap == ''){
        userMessage.show('Recado N&atilde;o Digitado', '<p>Favor digitar o <strong>Recado</strong>.</p>', 'alert');
        return;
    }

    // exibe a mensagem de processamento
    showAjaxMessage();

    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php?recado=' + escape(scrap), { fun: 'updateScrap', id: id },
        function(data)
        {
            // exibe a mensagem ao usuario
            userMessage.show(data.title, data.text, data.className);
        }
    , "json");

} // fim updateScrap()

// Atualiza o status de um recado
function updateScrapStatus(scrap, status)
{
    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php', { fun: 'updateScrapStatus', recado: scrap, status: status },
        function(data)
        {
            // caso tenha ocorrido sucesso
            if(data.className == 'success'){

                // elemento da lista
                var li = $('#rec_' + scrap);

                // aprovacao
                if(status == '1'){
                    $(li).removeClass('pendente');
                    $('#rec_' + scrap + ' .aprovar').fadeOut(700);
                }

                // exclusao
                else {

                    // exclui a linha
                    $(li).css("background", "#f55");
                    $(li).fadeTo(1000, 0, function(){$(li).fadeOut(0)});

                    // verifica se nenhum recurso esta sendo exibido
                    if($('#recados li:visible').length <= 1){
                        $('#recados').append("<li id=\"rec_00\" class=\"dHide\">Nenhum recado foi encontrado nesta p&aacute;gina...</li>");
                        showElement($('#rec_00'));
                    }
                }
            }
            
            // erro
            else {
                userMessage.show(data.title, data.text, data.className);
            }
        }
    , "json");

} // fim updateScrapStatus()

// Atualiza um recado
function updateComment(type, comment, id)
{
    // verifica se o recado foi digitado
    if(comment == ''){
        userMessage.show('Coment&aacute;rio N&atilde;o Digitado', '<p>Favor digitar o <strong>Coment&aacute;rio</strong>.</p>', 'alert');
        return;
    }

    // exibe a mensagem de processamento
    showAjaxMessage();

    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php?comentario=' + escape(comment), { fun: 'updateComment', type: type, id: id },
        function(data)
        {
            // exibe a mensagem ao usuario
            userMessage.show(data.title, data.text, data.className);
        }
    , "json");

} // fim updateComment()

// Atualiza o status de um comentario
function updateCommentStatus(type, comment, status)
{
    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php', { fun: 'updateCommentStatus', tipo: type, comentario: comment, status: status },
        function(data)
        {
            // caso tenha ocorrido sucesso
            if(data.className == 'success'){

                // elemento da lista
                var li = $('#com_' + type + '_' + comment);

                // aprovacao
                if(status == '1'){
                    $(li).removeClass('pendente');
                    $('#com_' + type + '_' + comment + ' .aprovar').fadeOut(700);
                }

                // exclusao
                else {

                    // exclui a linha
                    $(li).css("background", "#f55");
                    $(li).fadeTo(1000, 0, function(){$(li).fadeOut(0)});

                    // verifica se nenhum recurso esta sendo exibido
                    if($('#comentarios_' + type + 's li:visible').length <= 1){
                        $('#comentarios_' + type + 's').append("<li id=\"com_" + type + "_00\" class=\"dHide\">Nenhum coment&aacute;rio foi encontrado nesta p&aacute;gina...</li>");
                        showElement($('#rec_00'));
                    }
                }
            }
            
            // erro
            else {
                userMessage.show(data.title, data.text, data.className);
            }
        }
    , "json");

} // fim updateCommentStatus()

// Atualiza o status de um usuario
function setUserStatus(user, status)
{
    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php', { fun: 'setUserStatus', usuario: user, status: status },
        function(data)
        {
            // caso tenha ocorrido sucesso
            if(data.className == 'success'){

                // Desativar
                if(status == '0'){
                	$('#us_' + user + " .desativar")[0].onclick = function(){
                		setUserStatus(user, '1');
                	};  
                    $('#us_' + user + " .desativar").attr('title', 'Ativar Usuário');
                    $('#us_' + user + " .desativar").attr('class', 'ativar');
                    $('#us_' + user).addClass('inativo');
                }

                // Ativar
                else if(status == '1') {
                	$('#us_' + user + " .ativar")[0].onclick = function(){
                		setUserStatus(user, '0');
                	}; 
                    $('#us_' + user + " .ativar").attr('title', 'Desativar Usuário');
                    $('#us_' + user + " .ativar").attr('class', 'desativar');
                    $('#us_' + user).removeClass('inativo');
                }
                
                // Excluir
                else if(status == '2') {
                    $('#us_' + user).css("background", "#f55");
                    $('#us_' + user).fadeTo(1000, 0, function(){$('#us_' + user).fadeOut(0)});
                }
            }

            // erro
            else {
                userMessage.show(data.title, data.text, data.className);
            }
        }
    , "json");

} // fim setUserStatus()

//Atualiza o status de uma pergunta
function setQuestionStatus(question, status)
{
    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php', { fun: 'setQuestionStatus', pergunta: question, status: status },
        function(data)
        {
            // caso tenha ocorrido sucesso
            if(data.className == 'success'){

            	// numero de perguntas publicadas
            	var n_pg_pub = parseInt($('#n_pg_pub').text());
                
            	// Nao Publicar
                if(status == '0'){
                	$('#pg_' + question + " .nao_publicar")[0].onclick = function(){
                		setQuestionStatus(question, '1');
                	};                	
                	$('#pg_' + question + " .nao_publicar").attr('title', 'Publicar Pergunta');
                    $('#pg_' + question + " .nao_publicar").attr('class', 'publicar');
                    $('#pg_' + question).attr('class', 'nao_publicada');
                    $('#n_pg_pub').text( (n_pg_pub > 0) ? --n_pg_pub : 0 );
                }

                // Publicar
                else if(status == '1'){
                	$('#pg_' + question + " .publicar")[0].onclick = function(){
                		setQuestionStatus(question, '0');
                	};  
                    $('#pg_' + question + " .publicar").attr('title', 'Cancelar Publica&ccedil;&atilde;o da Pergunta');
                    $('#pg_' + question + " .publicar").attr('class', 'nao_publicar');
                    $('#pg_' + question).attr('class', 'publicada');
                    $('#n_pg_pub').text(++n_pg_pub);
                }
                
                // Excluir
                else if(status == '2') {
                    $('#pg_' + question).css("background", "#f55");
                    $('#pg_' + question).fadeTo(1000, 0, function(){$('#pg_' + question).fadeOut(0)});
                    if($('#pg_' + question).attr('class') == 'publicada')
                    	$('#n_pg_pub').text( (n_pg_pub > 0) ? --n_pg_pub : 0 );
                }
            }

            // erro
            else {
                userMessage.show(data.title, data.text, data.className);
            }
        }
    , "json");

} // fim setQuestionStatus()

//Atualiza o status de um evento
function setEventStatus(event, status)
{
    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php', { fun: 'setEventStatus', evento: event, status: status },
        function(data)
        {
            // caso tenha ocorrido sucesso
            if(data.className == 'success'){
                
            	// Nao Publicar
                if(status == '0'){
                	$('#pg_' + event + " .nao_publicar")[0].onclick = function(){
                		setEventStatus(event, '1');
                	};                	
                	$('#pg_' + event + " .nao_publicar").attr('title', 'Publicar Evento');
                    $('#pg_' + event + " .nao_publicar").attr('class', 'publicar');
                    $('#pg_' + event).attr('class', 'nao_publicada');
                }

                // Publicar
                else if(status == '1'){
                	$('#pg_' + event + " .publicar")[0].onclick = function(){
                		setEventStatus(event, '0');
                	};  
                    $('#pg_' + event + " .publicar").attr('title', 'Cancelar Publica&ccedil;&atilde;o do Evento');
                    $('#pg_' + event + " .publicar").attr('class', 'nao_publicar');
                    $('#pg_' + event).attr('class', 'publicada');
                }
                
                // Excluir
                else if(status == '2') {
                    $('#pg_' + event).css("background", "#f55");
                    $('#pg_' + event).fadeTo(1000, 0, function(){$('#pg_' + event).fadeOut(0)});
                }
            }

            // erro
            else {
                userMessage.show(data.title, data.text, data.className);
            }
        }
    , "json");

} // fim setEventStatus()

/*
 * Envia um email
 */
function sendEmail(form)
{
    /* Inicio Verificacao dos dados ---------------------------------------- */

    // verifica se o Nome Completo foi informado
    if(trim(form.nome.value).length < 15){
        userMessage.show('Nome Completo N&atilde;o Informado', '<p>Favor informar seu <strong>Nome Completo</strong>.</p>', 'alert');
        return;
    }

    // verifica se o Email foi informado
    if(trim(form.email.value) == ''){
        userMessage.show('E-Mail N&atilde;o Informado', '<p>Favor informar seu <strong>E-Mail</strong>.</p>', 'alert');
        return;
    }
    // verifica se o Email e valido
    if(!isEmail(trim(form.email.value))){
        userMessage.show('E-Mail Inv&aacute;lida', '<p>O <strong>E-Mail</strong> informado n&atilde;o &eacute; v&aacute;lido.</p>', 'alert');
        return;
    }

    // verifica se o Assunto foi informado
    if(trim(form.assunto.value) == ''){
        userMessage.show('Assunto N&atilde;o Informado', '<p>Favor informar o <strong>Assunto</strong> do e-mail.</p>', 'alert');
        return;
    }
    
    // verifica se a Mensagem foi escrita
    if(trim(form.mensagem.value) == ''){
        userMessage.show('Mensagem N&atilde;o Escrita', '<p>Favor escrever a <strong>Mensagem</strong>.</p>', 'alert');
        return;
    }

    /* Fim Verificacao dos dados ------------------------------------------- */

    // exibe a mensagem de processamento
    showAjaxMessage();

    var params = '?';
    for(var i = 0; i < form.length - 2; i++){ // -2 para nao enviar o botao submit e reset
        params += (i > 0) ? '&' : '';
        params += form[i].id + '=' + escape(trim(form[i].value));
    }

    // envia a chamada ajax
    $.post(pageRoot + '/generalAjaxFunctions.php' + params, { fun: 'sendEmail' },
        function(data)
        {
            // caso a operacao tenha falhado
            if(data.className != 'success'){
                userMessage.show(data.title, data.text, data.className);
            }

            // caso a operacao tenha sido efetuado com sucesso
            else {
                form.reset();
                userMessage.show('E-mail Enviado', '<p>Obrigado por entrar em contato conosco! Em breve lhe responderemos.</p>', 'success');
            }
        }
    , "json");

} // fim-sendEmail()

