// Corre sempre em cada página para aplicar o ajax indicator
jQuery(document).ready(function() {
    jQuery.MyJavaScript.setupAjaxIndicator();
});

(function($)
{
    //Aqui defines o namespace. Não necessita de ser igual ao nome do ficheiro.
    $.MyJavaScript = {
        /* AJAX INDICATOR */
        showAjaxIndicator: function() {
            jQuery.blockUI('<img src="images/progressIndicator.gif" alt="A processar..." />&nbsp;&nbsp;&nbsp;Um momento, por favor...',{ backgroundColor: '#F0F0F0', color:'#404040', padding: '10px', border: 'solid 2px #404040'});
        },
        
        hideAjaxIndicator: function() {
            jQuery('#progress').empty();
            jQuery.unblockUI();
        },

        setupAjaxIndicator: function() {
            jQuery('#progress').ajaxStart($.MyJavaScript.showAjaxIndicator).ajaxStop($.MyJavaScript.hideAjaxIndicator);
        },
        
        removeAjaxIndicator: function() {
            jQuery('#progress').unbind("ajaxStart", $.MyJavaScript.showAjaxIndicator);
            jQuery('#progress').unbind("ajaxStop", $.MyJavaScript.hideAjaxIndicator);
        },
        
        /* Synchronized AJAX */
        synchronizedAjax: function(url, data, callback, type) { 
            if ( $.isFunction( data ) ) { callback = data; data = null; } 
            return $.ajax({
                type: "GET",
                url: url,
                async: false,
                data: data,
                success: callback,
                dataType: type
            });
        },
        
        /* AJAX without indicator */
        getWithoutAjaxIndicator: function(url, data, callback, type) { 
            if ( $.isFunction( data ) ) { callback = data; data = null; } 
            return $.ajax({
                type: "GET",
                url: url,
                data: data,
                success: callback,
                dataType: type,
                global: false
            });
        },
        
        /*verifica timing*/
        checkData: function(idSMS, pageId){           	
	        $.MyJavaScript.getWithoutAjaxIndicator('checkSMS.php', 
		  	    {'date' : new Date(), 'idSMS' : idSMS, 'pageId' : pageId }, 
                      	function(data) { $('#contentSMSControl').empty().append(data); 
					        if(data && data.indexOf('SMSNOTRECEIVED')>=0){
						       eval("setTimeout('jQuery.MyJavaScript.checkData("+idSMS+"," + pageId + ")',5000);");
						    }
			            },
			            "html");
			           //alert('teste:' + idSMS);
        },
        
        /* Marcas */
        bindEventsMarcas : function() {
            // Aqui está a fazer o bind. Usa-se cardinais '#' para os ids e '.' para as classes.
            // Aqui está a aplicar o change ao objecto com o id "comboMarcas" que está dentro do id "marcasContent".
            $('#divConteudoPesquisa #idMarca').change(function() {
                var idMarca = $('#divConteudoPesquisa #idMarca').val(); //o valor seleccionado
                //alert(idMarca); //Mensagem no ecra
                $.MyJavaScript.getWithoutAjaxIndicator('partialModelo.php',
                        { //vai carregar o partial.html passando os parametros:
                            'date' : new Date(),    //data - deixa sempre este parametro, para não utilizar a cache no IE6
                            'idMarca' : idMarca     //o parametro id
                        }, 
                        function(data) { $('#divConteudoPesquisa #modelosPartialContent').empty().append(data); }, //pega no resultado do get e coloca em marcasPartialContent. Att: o resultado do get não pode trazer <html></html> nem head nem body.
                        "html");
                $.MyJavaScript.getWithoutAjaxIndicator('partialPorta.php',
                        { //vai carregar o partial.html passando os parametros:
                            'date' : new Date(),    //data - deixa sempre este parametro, para não utilizar a cache no IE6
                            'idMarca' : idMarca     //o parametro id
                        },
                        function(data) { $('#divConteudoPesquisa #portasPartialContent').empty().append(data); },
                        "html");
                //alert(idMarca);
                $.MyJavaScript.getWithoutAjaxIndicator('partialAno.php',
                        { //vai carregar o partial.html passando os parametros:
                            'date' : new Date(),    //data - deixa sempre este parametro, para não utilizar a cache no IE6
                            'idMarca' : idMarca     //o parametro id
                        },
                        function(data) { $('#divConteudoPesquisa #anosPartialContent').empty().append(data); },
                        "html");
                return false;
            });
		},
        bindEventsModelos : function() {
            // Aqui está a fazer o bind. Usa-se cardinais '#' para os ids e '.' para as classes.
            // Aqui está a aplicar o change ao objecto com o id "comboMarcas" que está dentro do id "marcasContent".
            $('#divConteudoPesquisa #idModelo').change(function() {
                var idModelo = $('#divConteudoPesquisa #idModelo').val(); //o valor seleccionado
                //alert(idModelo); //Mensagem no ecra
                $.MyJavaScript.getWithoutAjaxIndicator('partialPorta.php',
                        { //vai carregar o partial.html passando os parametros:
                            'date' : new Date(),    //data - deixa sempre este parametro, para não utilizar a cache no IE6
                            'idModelo' : idModelo     //o parametro id
                        },
                        function(data) { $('#divConteudoPesquisa #portasPartialContent').empty().append(data); },
                        "html");
                //alert(idModelo);
                $.MyJavaScript.getWithoutAjaxIndicator('partialAno.php',
                        { //vai carregar o partial.html passando os parametros:
                            'date' : new Date(),    //data - deixa sempre este parametro, para não utilizar a cache no IE6
                            'idModelo' : idModelo     //o parametro id
                        },
                        function(data) { $('#divConteudoPesquisa #anosPartialContent').empty().append(data); },
                        "html");
                return false;
            });
		},
	    
        refreshStock: function(idMarca, idModelo, idParte){
            $.get('partials/stock.php', 
                  {'date' : new Date(), 'idMarca' : idMarca, 'idModelo' : idModelo, 'idParte' : idParte},
                  function(data) { $('#divResultadoPesquisa').empty().append(data); },
                  'html');
            return true;
        },
	
		bindEventsStock : function() {
            $('#textClean #idMarca').change(function() {
                var idMarca = $('#textClean #idMarca').val();
                var idModelo = 0;
                var idParte = $('#textClean #idParte').val();
                $.MyJavaScript.refreshStock(idMarca, idModelo, idParte);
                return true;
            });
            $('#textClean #idModelo').change(function() {
                var idMarca = $('#textClean #idMarca').val();
                var idModelo = $('#textClean #idModelo').val();
                var idParte = $('#textClean #idParte').val();
                $.MyJavaScript.refreshStock(idMarca, idModelo, idParte);
                return true;
            });
            $('#textClean #idParte').change(function() {
                var idMarca = $('#textClean #idMarca').val();
                var idModelo = $('#textClean #idModelo').val();
                var idParte = $('#textClean #idParte').val();
                $.MyJavaScript.refreshStock(idMarca, idModelo, idParte);
                return true;
            });

		},
       
        bindEventsCar: function(){       
            $("#divCar img").click(function() {
                var pos=$(this).attr("pos");
                eval("if (document.formPesquisa."+pos+".value==1) { document.formPesquisa."+pos+".value=0; }else{ document.formPesquisa."+pos+".value=1; }");
                var tras=document.formPesquisa.tras.value;
                var esquerda=document.formPesquisa.esquerda.value;
                var centro=document.formPesquisa.centro.value;
                var direita=document.formPesquisa.direita.value;
                var frente=document.formPesquisa.frente.value;                 
                $.MyJavaScript.getWithoutAjaxIndicator('partials/carImage.php', 
                    {'date' : new Date(), 'tras' : tras, 'esquerda' : esquerda, 'centro' : centro, 'direita' : direita, 'frente' : frente },
                    function(data) { $('#divCar').empty().append(data); },
                    'html');
                return true;
            })
        },
        
        /* Rede de oficinas e stands */
        showRedeOficinas: function(pag){
            var idConcelho = $('#socios #idConcelho').val(); //o valor seleccionado
            var idDistrito = $('#socios #idDistrito').val();
            $.get('partialInfoDiretorio.php',
                { //vai carregar o partial.html passando os parametros:
                    'date' : new Date(),    //data - deixa sempre este parametro, para não utilizar a cache no IE6
                    'idConcelho' : idConcelho,     //o parametro id
                    'idDistrito' : idDistrito,     //o parametro id
                    'pag' : pag
                },
                function(data) { $('#socios #result').empty().append(data); },
                "html");
            return true;
        },
        
        bindEventsConcelhosRede : function() {
            // Aqui está a fazer o bind. Usa-se cardinais '#' para os ids e '.' para as classes.
            // Aqui está a aplicar o change ao objecto com o id "comboMarcas" que está dentro do id "marcasContent".
            $('#socios #idConcelho').change(function() {
                $.MyJavaScript.showRedeOficinas(0);
                return true;
            })
        },
        
        bindEventsConcelhosRedeNavigation : function() {           
            $("#socios .next").click(function() {
                var pag = $(this).attr("pag");
                $.MyJavaScript.showRedeOficinas(pag);
                return true;
            });
            $("#socios .previous").click(function() {
                var pag = $(this).attr("pag");
                $.MyJavaScript.showRedeOficinas(pag);
                return true;
            })                        
		},
       
        /* Informação do cartão de desconto - parceiros */
        showParceiros: function(pag){
            var idTipoParceiro = $('#socios #idTipoParceiro').val();
            var idConcelho = $('#socios #idConcelho').val(); //o valor seleccionado
            var idDistrito = $('#socios #idDistrito').val();
            $.get('partialInfoParceiros.php',
                { //vai carregar o partial.html passando os parametros:
                    'date' : new Date(),    //data - deixa sempre este parametro, para não utilizar a cache no IE6
                    'idTipoParceiro' : idTipoParceiro,     //o parametro id
                    'idConcelho' : idConcelho,     //o parametro id
                    'idDistrito' : idDistrito,     //o parametro id
                    'pag' : pag
                },
                function(data) { $('#socios #result').empty().append(data); },
                "html");
            return true;
        },
        
        bindEventsParceiros: function() {
            // Aqui está a fazer o bind. Usa-se cardinais '#' para os ids e '.' para as classes.
            // Aqui está a aplicar o change ao objecto com o id "comboMarcas" que está dentro do id "marcasContent".
            $('#socios #idConcelho').change(function() {
                $.MyJavaScript.showParceiros(0);
                return true;
            });
            $('#socios #idTipoParceiro').change(function() {
                $.MyJavaScript.showParceiros(0);
                return true;
            })
        },
        
        bindEventsParceirosNavigation : function() {           
            $("#socios .next").click(function() {
                var pag = $(this).attr("pag");
                $.MyJavaScript.showParceiros(pag);
                return true;
            });
            $("#socios .previous").click(function() {
                var pag = $(this).attr("pag");
                $.MyJavaScript.showParceiros(pag);
                return true;
            })                        
		},
       
        bindEventsRespondeEmail: function(){     
            $("#botoes .sendEmail").click(function() {
                var idClienteRemetente=document.formResponderEmail.idClienteRemetente.value;
                var idClienteDestinatario=document.formResponderEmail.idClienteDestinatario.value;
                var assunto=document.formResponderEmail.assunto.value;
                var idTicket=document.formResponderEmail.idTicket.value;
                var idTipoEmail=document.formResponderEmail.idTipoEmail.value;
                var mensagem=document.formResponderEmail.mensagem.value;
                var idEmail=document.formResponderEmail.idEmail.value;                
                if (idClienteRemetente!="" && idClienteDestinatario!="" && assunto!="" && idTicket!="" && idTipoEmail!=""){
                    if (mensagem!=""){
                        document.getElementById("errorPedidoPecas").innerHTML="&nbsp;"; 
                        $.get('partialResponderEmail.php', 
                            {'idClienteRemetente': idClienteRemetente, 'idClienteDestinatario' : idClienteDestinatario, 
                            'assunto': assunto, 'idTicket': idTicket, 'idTipoEmail': idTipoEmail, 
                            'mensagem': mensagem, 'idEmail': idEmail, 'date' : new Date()},
                            function(data) { $('#errorPedidoPecas').empty().append(data); },
                            'html');                               
                    }
                    else{
                        document.getElementById("errorPedidoPecas").innerHTML="preencher mensagem";
                    }
                }
                else{
                    document.getElementById("errorPedidoPecas").innerHTML="erro ao enviar email";
                }
                return true;                
            })
        },
        
        //actualiza a data de actualizao de stocks
        //att: deve-se repetir no javascript dos clientes por causa das pesquisas privadas
        //trocar para formPesquisaPecas
        bindEventsActualizaDataStocks : function() {           
            $("#socios a").click(function() {                     
                var numProvider = $(this).attr("numProvider");                
                var idCliente = $(this).attr("idCliente");                 
                if (numProvider!=0){
	                var len = document.formPesquisaPecas.length;
	                var selectedName="selected"+numProvider;
                    var linkName="linkDetalhe"+numProvider;	            
    	            var providerName="provider"+numProvider+"_type";
    	            var selected="";
                    for(i=0; i<len; i++){
                        if (document.formPesquisaPecas[i].name.indexOf(selectedName)!=-1 && document.formPesquisaPecas[i].checked==true)
                            selected+=document.formPesquisaPecas[i].value+";";      
  	                }
  	               //alert($(this).attr("href"));
                   // toggleDetailShow(providerName,3); 
                   if (document.getElementById(linkName)!=null){
  	                  document.getElementById(linkName).innerHTML="<a href=javascript:toggleDetail('"+providerName+"',3) numProvider=0>detalhe</a>";
                      $.get('partialActualizaDataStocks.php',
                        { //vai carregar o partial.html passando os parametros:
                            'date' : new Date(),    //data - deixa sempre este parametro, para não utilizar a cache no IE6
                            'selected' : selected,
                            'idCliente' : idCliente                            
                        },
                        function(data) { $('#divResActualizaDataStocks').empty().append(data); },
                        "html");
  	                  //eval($(this).attr("href"));
  	                  toggleDetailShow(providerName,3);
  	                }
                    return true;  	                
  	            }
            })                      
		},
		
        bindEventsDistritos : function() {
            // Aqui está a fazer o bind. Usa-se cardinais '#' para os ids e '.' para as classes.
            // Aqui está a aplicar o change ao objecto com o id "comboMarcas" que está dentro do id "marcasContent".
            $('#mainDIV #idDistrito').change(function() {
                var idDistrito = $('#mainDIV #idDistrito').val(); //o valor seleccionado
                //alert(idModelo); //Mensagem no ecra
                $.MyJavaScript.getWithoutAjaxIndicator('partialConcelho.php',
                        { //vai carregar o partial.html passando os parametros:
                            'date' : new Date(),    //data - deixa sempre este parametro, para não utilizar a cache no IE6
                            'idDistrito' : idDistrito     //o parametro id
                        },
                        function(data) { $('#mainDIV #concelhoPartialContent').empty().append(data); },
                        "html");
                return false;
            });
		},
		
       
        bindEventsNewsletter: function(){       
            $("#stats .cmdNewsletter").click(function() {
                var emailNewsletter=document.formNewsletter.emailNewsletter.value;
                if (emailNewsletter!=""){
                    if ($.MyJavaScript.checkEmail(emailNewsletter)==true){
                        $.get('partialNewsletter.php', 
                            {'date' : new Date(), 'emailNewsletter' : emailNewsletter},
                            function(data) { $('#stats').empty().append(data); },
                            'html');
                    }
                    else
                        document.getElementById("errorNewsletter").innerHTML="<span class=erro>email incorrecto</span>";                     
                }
                else{
                    document.getElementById("errorNewsletter").innerHTML="<span class=erro>preencher email</span>";
                }
                return true;
            })
        },

        bindEventsBannerPublicidade : function() {
            $('.bannerPublicidade').click(function() {
                var idPublicidade = $(this).attr("idPublicidade"); 
                $.MyJavaScript.getWithoutAjaxIndicator('partialBannerPublicidade.php',
                        { //vai carregar o partial.html passando os parametros:
                            'date' : new Date(),    //data - deixa sempre este parametro, para não utilizar a cache no IE6
                            'idPublicidade' : idPublicidade     //o parametro id
                        },
                        function(data) { $('#bannerPublicidade #refreshBannerPublicidade').empty().append(data); },
                        "html"); 
                //alert('DEU');                        
                return true;
            })
        },

	    /* função que lança a janela */
	    showBlockUI: function(data){
            jQuery.blockUI(data, {width: '800px', height: '532px', margin:'-290px -350px', border: 'none'});
        },
        
	    /* função que fecha a janela */
        hideBlockUI: function(){
            $.unblockUI();
        },

	    /* Exemplo */
	    showImagePopup: function(imageURL){
            //$.MyJavaScript.removeAjaxIndicator(); // ATT: tens que fazer isto senão o ajax indicator aparece por cima!!
            $.MyJavaScript.getWithoutAjaxIndicator('imagePopup.php', 
                    {'date' : new Date(), 
                    'imageURL' : imageURL},
                    function(data) {
                        $.MyJavaScript.showBlockUI(data);
                    }, 
                    "html");
        },

        /* Links a carregar na contents */
        bindEventsImagePopup: function(){
            $("#textClean .imagePopup").click(function() {
                var imageURL = $(this).attr("src");
                $.MyJavaScript.showImagePopup(imageURL);
                return true;
            })
        }, 


        checkEmail: function (str) {
		    var at="@";
		    var dot=".";
		    var lat=str.indexOf(at);
		    var lstr=str.length;
		    var ldot=str.indexOf(dot);
		    if (str.indexOf(at)==-1){
		       return false;
		    }

		    if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		       return false;
		    }

		    if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		        return false;
		    }

		     if (str.indexOf(at,(lat+1))!=-1){
		        return false;
		     }

		     if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		        return false;
		     }

		     if (str.indexOf(dot,(lat+2))==-1){
		        return false;
		     }
    		
		     if (str.indexOf(" ")!=-1){
		        return false;
		     }

 		     return true					
	    }        			 		        
		
    }
    
})(jQuery);
