var System = {
    /*CRIACAO DE CAMADAS DINAMICAS*/
    createdata  : {
        create  : function(to, id){ $(to).append("<div id='"+id+"'></div>"); },
        message : function(to){ $(to).append("<div class='top-message'><h2>Ops, faltou alguma coisa:</h2><ol></ol><div class='close'><a href='#fechar' id='closeTopMessage'>FECHAR</a></div></div>"); $('#closeTopMessage').click(function(){ $('div.top-message').slideUp(); }) },
        modal   : function(to){ $(to).append("<div id='conteudo-ajax'></div>");   }
    },
    /*TRATAMENTO DE TAGS OU INPUTS DO CORPO*/
    bodydata : {
        disable:    function(id){   $(id).attr("disabled", "disabled"); },
        even:       function(id){   $(id+":even").css("background-color", "#e8ebf0"); },//deve ser passado o id como "#minhaul > li", ou se for tabela "table > tr"
        accordion:  function(id){},//requer plugin accordion, dimensions e easing
        calendar:   function(id, params){ $(id).datepicker(params); },//requer plugin datepicker - já incluso na jqueryUI
        toTab:      function(id)
        {
                $(id).tabs();
        },
        loader:     function(id, toload){ $(id).load(toload); },
        toClone:    function(id, toappend)
        {
            $(id).click(function()
            {
                $(toappend).append('<li><div style="float:left;"><label>Imagem:</label><br /><input type="file" name="itemFile[]"  /></div></li><br />');
            });
        },
        toSrc: function(to)
        {
            $("a[id^='src']").hover(function()
            {
               $(to).attr("src", $(this).attr("href"));
               return false;
            });
        }
    },
/*TRATAMENTOS DE ERROS AO SISTEMA*/
    errordata : {
        slideMessage: function(message, go, time)
        {
            if(message == undefined){ $("div.top-message").slideUp();  }
            else
            {
                $("div.top-message").html(message);
                $("div.top-message").slideDown();
                if(go)  {	setTimeout(function(){ location.href = go; }, time); }
                else    {   setTimeout(function(){ $("div.top-message").slideUp(); }, time); }

            }
            return false;
        },
        modalMessage:   function()
        {
            
        },
        alert:  function()
        {
            alert("testando");
        }
    },
    /*JANELAS MODAIS AO SISTEMA - requer até então, o plugin simple-modal*/
    modaldata : {
        onClick: function(id, inner, type, params)
        {
            $("a[id='"+id+"']").click(function()
            {
                System.createdata.modal("body");
                $("#conteudo-ajax").load($(this).attr("href"));
                if(type)
                {
                    if(type == "dialog"){ $("#conteudo-ajax").dialog(params); return false; }
                    else if(type == "modal") { $.modal($("#"+inner));  return false;}
                    else if(type == "lightbox"){ alert('lighbox');  return false;}
                }
            });
        },
        openDialog: function(id, params)
        {
            //alert($(id).dialog( 'isOpen' ));
            if($(id).dialog( 'isOpen' )!=undefined)
                $(id).dialog();
            else
                $(id).dialog(params);
        }
    },
/*TRATAMENTO DE FORMULARIOS - requer plugins validate, form, metadata*/
    formdata : {
        save: function (tabbed)
        {
            var tabs = $(tabbed).tabs();
            var redirect    = $('#redirect').val();
            System.createdata.message("body");
            var container = $('div.top-message');
            var validator = $("form[name^='save']").each(function()
            {
                $(this).validate({
                    errorContainer: container,
                    errorLabelContainer: $("ol", container),
                    wrapper: 'li',
                    meta: "validate",
                    submitHandler: function(form)
                    {
                       var options =
                         {
                             url: $(form).attr("action"),
                             type: 'post',
                             success:
                             function(response)
                             {
                                 if($("#dialog").val() == 'true')
                                 {
                                     System.errordata.slideMessage(response, '/', 2000);
                                 }
                                 else
                                 {
                                     if($("#redirect").val() != undefined)
                                         location.href = $("#redirect").val();
                                     else
                                        System.errordata.slideMessage(response, $("#locate").val(), 1500);
                                 }
                             }
                         };
                         $(form).ajaxSubmit(options);
                         return false;
                   }
                });
            });
        },
        remove: function()
        {
            $("a[id=delete]").click(function(){
            if(confirm("Tem certeza que deseja excluir esse registro?\nTodas as dependências dele serão excluídas.\nApós a exclusão, aguarde o recarregamento da página."))
            {
   
                    $.post($(this).attr("href"), {
                    }, function(response) {
                          location.href =  $("#locate").val();
                    });

                    return false;
             }
             else
                    return false;
            });
           
        },

        votar: function()
        {
            $("a[id=votacao]").click(function()
            {
                var action  = $(this).attr("href");
                var idvoto  = $(this).attr("rel");
                $.post(action, {
                }, function(response) {
                    $("#new-voto"+idvoto).html(response);
                });

                return false;
            });

        },
        editor: function(theme, style, html)
        {
            if(theme == "advanced")
            {
                    var btns1 = "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,link,unlink,anchor";
                    var btns2 = "cut,copy,paste,pastetext,|,search,replace,|,bullist,numlist,|,image,insertdate,inserttime,|,forecolor";
                    var btns3 = "tablecontrols,|,hr,media,fullscreen";
                    /*
                    var btns1 = "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect";
                    var btns2 = "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor";
                    var btns3 = "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen";
                    */
            }
            else
            {
                    var btns1 = "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,link,unlink";
                    var btns2 = "";
                    var btns3 = "";
            }

            if(html = 'true')
                    var btns1 = btns1 + ",|,code";

            tinyMCE.init({
            // General options
            mode : "textareas",
            theme : "advanced",
            language :	"pt",
            editor_selector : style,
            plugins : "safari,spellchecker,table,save,advhr,advimage,insertdatetime,media,contextmenu,paste,directionality,fullscreen",
            theme_advanced_buttons1 : btns1,
            theme_advanced_buttons2 : btns2,
            theme_advanced_buttons3 : btns3,
            theme_advanced_toolbar_location : "top",
            theme_advanced_toolbar_align : "left",
            theme_advanced_statusbar_location : "bottom",
            theme_advanced_resizing : true
            });
        },
        removeAcento: function(text)
        {
          //alert('aeae');
          text = text.replace(new RegExp('[ÁÀÂÃ]','gi'), 'a');
          text = text.replace(new RegExp('[ÉÈÊ]','gi'), 'e');
          text = text.replace(new RegExp('[ÍÌÎ]','gi'), 'i');
          text = text.replace(new RegExp('[ÓÒÔÕ]','gi'), 'o');
          text = text.replace(new RegExp('[ÚÙÛ]','gi'), 'u');
          text = text.replace(new RegExp('[Ç]','gi'), 'c');
          text = text.replace(/ /g, "-");
          text = text.toLowerCase();
          //alert(text);
          return text;
        },
        numeracao:0,
        uploader: function(id, img, inpt, show)//uploader de imagem temporario- requer plugin uploadify
        {
            
            $(id).uploadify({
                    'uploader'  : 'http://localhost:69/js/uploadify.swf',
                    'script'    : 'midia/upload/upload.php',
                    'auto'      : true,
                    'folder'    : '/midia/upload/tmp/',
                    'buttonText': 'Incluir foto',
                    'scriptAccess':  'always',
                    'fileExt'   :   '*.jpg;*.gif;*.jpeg',
                    'fileDesc'  :   '*.jpg;*.gif;*.jpeg',
                    onSelect    : function(event, queueID, fileObj, response, data)
                    {
                        $("body").append('<div id="janelaImagem" style=" width:700px; height:450px;display:none;"></div>');
                    },
                    onComplete	: function(event, queueID, fileObj, response, data)
                    {

                            System.formdata.numeracao++;
                            $("body").append('<div id="janelaImagem'+System.formdata.numeracao+'" style=" width:700px; height:450px;display:none;"></div>');
                            var pathlocal='http://localhost:69/';
                            System.modaldata.openDialog("#janelaImagem"+System.formdata.numeracao, { modal: true, width:'510px',height:'500' });

                            //$("#janelaImagem").html('testa');
                            //$("#janelaImagem").dialog({ modal: true, width:'510px',height:'500' });
                            //$("#janelaImagem").html("<br /><img id='imgCropbox'  />");
                            $("#janelaImagem"+System.formdata.numeracao).html("<br /><img id='imgCropbox"+System.formdata.numeracao+"'  /><input type=\"hidden\" id=\"posX\" name=\"posX\" value=\"0\" /><input type=\"hidden\" id=\"posY\" name=\"posY\" value=\"0\" /><input type=\"hidden\" id=\"posW\" name=\"posW\" value=\"150\" /><input type=\"hidden\" id=\"posH\" name=\"posH\" value=\"150\" /><div class=\"minhalistaBotaoPassos\"><div class=\"contemBotaoPadrao\"><input class=\"botao1\" id=\"bt_crop"+System.formdata.numeracao+"\" name=\"bt_crop"+System.formdata.numeracao+"\" type=\"button\" value=\"Salvar\"></div></div>");
                            $('#imgCropbox'+System.formdata.numeracao).attr('src',pathlocal+"midia/upload/tmp/"+System.formdata.removeAcento(fileObj.name)).Jcrop({
                                    aspectRatio: 1,
                                    setSelect:[0,0,100,150],
                                    onSelect: function(c)
                                    {
                                        $('#posX').val(c.x);
                                        $('#posY').val(c.y);
                                        $('#posW').val(c.w);
                                        $('#posH').val(c.h);
                                    }
                            });
                            $('#bt_crop'+System.formdata.numeracao).click(function(){
                                var data={
                                    x:$('#posX').val(),
                                    y:$('#posY').val(),
                                    w:$('#posW').val(),
                                    h:$('#posH').val(),
                                    pathIMG:"../../midia/upload/tmp/",
                                    nameIMG:System.formdata.removeAcento (fileObj.name)
                                };
                                $.post("/midia/crop-image", data,
                                  function(data){
                                        $("#usermidia").attr("src", pathlocal+"midia/upload/tmp/"+data);
                                        $("#usermidia").attr("alt", fileObj.name);
                                        $("#tmpimg").attr("value", pathlocal+"midia/upload/tmp/"+data);

                                        $("#janelaImagem"+System.formdata.numeracao).dialog( 'close' );
                                        //$.modal.close();
                                  });
                            });

                            //$("#"+img).attr("src", "http://localhost:69/img/global/midia/tmp/"+fileObj.name);
                            //$("#"+inpt).attr("value", "http://localhost:69/img/global/midia/tmp/"+fileObj.name);
                    },
                    onSelect        : function(event, queueID, fileObj) { if(show) return false; }
            });
        },
        cropImage: function()
        {

        },
        editInPlace: function(action)//requer o plugin jeditable
        {
            $("div[edit='true']").editable(action, {
            onblur    : "submit",
            indicator : "Aguarde...",
            tooltip   : "Clique para editar...",
            name:     $(this).attr("myname"),
            style  : "inherit"
            });
        },
        /*ESPECIFICO PARA CRM*/
        CRM: function(to)
        {
            $().ajaxStart(function(){ $('#result-crm').text('Aguarde...'); });
            System.createdata.message("body");
            var container = $('div.top-message');
            $('#catchCRM').validate({
                errorContainer: container,
                errorLabelContainer: $("ol", container),
                wrapper: 'li',
                meta: "validate",
                submitHandler: function(form)
                {
                   var options =
                     {
                         url: $(form).attr("action"),
                         type: 'post',
                         success:
                         function(response)
                         {
                            if(response == "false")
                                $('#result-crm').text('Dados incorretos!');
                            else if(response == "registrado")
                                $('#result-crm').text('Usuário já cadastrado. Esqueceu sua senha? acesse aqui.');
                            else
                            {
                                $('#result-crm').text('CRM encontrado, redirecionando...');
                                setTimeout(function(){ $(to).html(response); }, 1000);
                            }
                         }
                     };
                    $(form).ajaxSubmit(options);
                    return false;
               }
            });
        },
        login: function()
        {
            System.createdata.message("body");
            var container = $('div.top-message');
            var validator = $("form[name^='login']").each(function()
            {
                
                $(this).validate({
                    errorContainer: container,
                    errorLabelContainer: $("ol", container),
                    wrapper: 'li',
                    meta: "validate",
                    submitHandler: function(form)
                    {
                       var options =
                         {
                             url: $(form).attr("action"),
                             type: 'post',
                             success:
                             function(response)
                             {
                                System.errordata.slideMessage(response, '', 7000);
                             }
                         };
                         $(form).ajaxSubmit(options);
                         return false;
                   }
                });
            });
        },
        btn : function()
        {
            //todos os inputs que começam com btn, devem executar essa ação
            $("input[name^='btn']").click(function()
            {
                if($(this).attr("alvo") != undefined){location.href=$(this).attr("alvo");}
                else if($(this).attr("ajax") != undefined){ System.loaddata.innerPage($(this).attr("action"), $(this).attr("inner"), {itemPage:$(this).attr("page"), itemId: $(this).attr("edit")});}
            });
        }
    },
    /*CARREGAR PAGINAS POR AJAX*/
    loaddata : {
        innerPage: function(action, to, params){  $.post(action, params , function(response) { $(to).html(response); return false;  });  },
        innerText: function(to, text){ $(to).html(text); },
        onChange: function(id, value)//Carrega um conteudo no evento change.
        {
            $(id).change(function()
            {
                if(value){ var data = $(this).attr("value")} else{ var data = $(this).attr("page") }
                this.inner($(this).attr("action"), data, $(this).attr("inner"));
            });
        },
        onClick: function(id, to, params)
        {

            $("a[id='"+id+"']").click(function(){
                System.loaddata.innerPage($(this).attr("href"), to, params);
                return false;
            });
        },
        addFriend: function(id, to, params, toclear)
        {
            $("a[id='"+id+"']").click(function(){
                $.post($(this).attr("href"), params , function(response) { if(response == "true"){ $(to).html('<h3>Amigo adicionado. Aguarde a confirmação do mesmo.</h3>'); $(toclear).hide(); } return false;  });
                return false;
            });
        }
    },
    showdata : {
        onChange: function(id, div)
        {
            $(id).change(function()
            {
                if($(this).val() == "true") { $(div).show(); }
                else{ $(div).hide(); }
            });
        },
        onHover:  function(id, div, sub)
        {
            $(id).hover(function() {    $(div).show();  });
            $(div).hover(function(){}, function(){ $(this).hide();});
        },
        onClic: function(id, div, toclear)
        {
            $("input[id='"+id+"']").click(function()
            {
                if($(this).val() == 'true')
                    $(div).show();
                else
                {
                    $(toclear).val('');
                    $(div).hide();
                }
                    
            });
        }
    },
    preloaddata : {
        setajax : function(to, text)
        {
            $().ajaxStart(function(){ System.loaddata.innerText(to, text); });
            $().ajaxStop(function(){ System.loaddata.innerText(to, ''); });
        }
    }
}