// Corre sempre em cada página para aplicar o ajax indicator
jQuery(document).ready(function() {
    jQuery.airbagszentrum.setupAjaxIndicator();
});

(function($abz)
{
    $abz.airbagszentrum = {
    
         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".
            $('#content #idDistrito').change(function() {
                var idDistrito = $('#content #idDistrito').val(); //o valor seleccionado
                //alert(idDistrito);
                $.get('partialConcelhos.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) { $('#content .concelhoPartialContent').empty().append(data); },
                        "html");
                        
                $.airbagszentrum.showAgentes(0, 0);
                return false;
            });

            $('#contentSmallR #idDistritoAgente').change(function() {
                var idDistrito = $('#contentSmallR #idDistritoAgente').val(); //o valor seleccionado
                //alert(idDistrito);
                $.get('partialConcelhosAgente.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) { $('#contentSmallR .concelhoAgentePartialContent').empty().append(data); },
                        "html");
                return false;
            });
		},
		
		/* Informação do agente */
        showStockPecas: function(pag){
            //var idConcelho = $('#content #idConcelho').val(); //o valor seleccionado
            var idMarca = $('#contentSmallR #idMarca').val();
            var idModelo = $('#contentSmallR #idModelo').val();
            var idAno = $('#contentSmallR #idAno').val();
            $.get('partialStockPecas.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
                    'idModelo' : idModelo,     //o parametro id
                    'idAno' : idAno,
                    'pag' : pag
                },
                function(data) { $('#content #pecasResult').empty().append(data); },
                "html");
            return true;
        },    
        
        		/* Informação do agente */
        showStockPecasNav: function(pag, idMarca, idModelo, idAno){
            //var idConcelho = $('#content #idConcelho').val(); //o valor seleccionado
            $.get('partialStockPecas.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
                    'idModelo' : idModelo,     //o parametro id
                    'idAno' : idAno,
                    'pag' : pag
                },
                function(data) { $('#content #pecasResult').empty().append(data); },
                "html");
            return true;
        },   
		
        bindEventsStockPecasNavigation : function() {           
            $("#content .next").click(function() {
                var pag = $(this).attr("pag");
                var idMarca = $(this).attr("idMarca");
                var idModelo = $(this).attr("idModelo");
                var idAno = $(this).attr("idAno");
                $.airbagszentrum.showStockPecasNav(pag, idMarca, idModelo, idAno);
                return true;
            });
            $("#content .previous").click(function() {
                var pag = $(this).attr("pag");
                var idMarca = $(this).attr("idMarca");
                var idModelo = $(this).attr("idModelo");
                var idAno = $(this).attr("idAno");
                $.airbagszentrum.showStockPecasNav(pag, idMarca, idModelo, idAno);
                return true;
            })                        
		},
		
        /* Informação do agente */
        showAgentes: function(pag, idConcelho){
            //var idConcelho = $('#content #idConcelho').val(); //o valor seleccionado
            var idDistrito = $('#content #idDistrito').val();
            $.get('partialAgentes.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) { $('#content #result').empty().append(data); },
                "html");
            return true;
        },    
    
        // 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".
        bindEventsAgentes: function() {
           $('#content #idConcelho').change(function() {
                var idConcelho = $('#content #idConcelho').val();           
                $.airbagszentrum.showAgentes(0, idConcelho);
                return true;
           })
        },
        
        bindEventsAgentesNavigation : function() {           
            $("#content .next").click(function() {
                var idConcelho = $('#content #idConcelho').val();
                var pag = $(this).attr("pag");
                $.airbagszentrum.showAgentes(pag, idConcelho);
                return true;
            });
            $("#content .previous").click(function() {
                var idConcelho = $('#content #idConcelho').val();
                var pag = $(this).attr("pag");
                $.airbagszentrum.showAgentes(pag, idConcelho);
                return true;
            })                        
		},
		  
        /*validação do formulário de agentes*/
        agenteValidation: function(){
            var name=document.agenteForm.nome.value;
            var adress=document.agenteForm.morada.value;
            var idDistrito=document.agenteForm.idDistritoAgente.value;
            var idConcelho=document.agenteForm.idConcelhoAgente.value;
            var phone=document.agenteForm.telefone.value;
            var email=document.agenteForm.email.value;
            if (name!="" && phone!="" && email!="" && idDistrito!=0 && idConcelho!=0){                           
                if ($.airbagszentrum.checkEmail(email)==true){
                    if (isNaN(phone)==false){
                        document.agenteForm.submit();
                        return true;
                    }
                    else
                        document.getElementById("errorAgente").innerHTML="telefone incorrecto";                    
                }
                else{
                    document.getElementById("errorAgente").innerHTML="email incorrecto";
                }               
            }
            else{
                document.getElementById("errorAgente").innerHTML="preencher todos os campos";
            }
            return false;
        }, 
		    
        /*validação do formulário de contactos*/
        contactValidation: function(){
            var name=document.contactForm.nome.value;
            var phone=document.contactForm.telefone.value;
            var email=document.contactForm.email.value;
            var message=document.contactForm.mensagem.value;
            if (name!="" && phone!="" && email!="" && message!=""){                           
                if ($.airbagszentrum.checkEmail(email)==true){
                    if (isNaN(phone)==false){
                        document.contactForm.submit();
                        return true;
                    }
                    else
                        document.getElementById("errorContact").innerHTML="telefone incorrecto";                    
                }
                else{
                    document.getElementById("errorContact").innerHTML="email incorrecto";
                }               
            }
            else{
                document.getElementById("errorContact").innerHTML="preencher todos os campos";
            }
            return false;
        },    
    
    
        /* AJAX INDICATOR */
        showAjaxIndicator: function() {
            jQuery.blockUI('A processar...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($abz.airbagszentrum.showAjaxIndicator).ajaxStop($abz.airbagszentrum.hideAjaxIndicator);
        },
        
        removeAjaxIndicator: function() {
            jQuery('#progress').unbind("ajaxStart", $abz.airbagszentrum.showAjaxIndicator);
            jQuery('#progress').unbind("ajaxStop", $abz.airbagszentrum.hideAjaxIndicator);
        },
        
        /* Synchronized AJAX */
        synchronizedAjax: function(url, data, callback, type) { 
            if ( $abz.isFunction( data ) ) { callback = data; data = null; } 
            return $abz.ajax({
                type: "GET",
                url: url,
                async: false,
                data: data,
                success: callback,
                dataType: type
            });
        },
        
        /* AJAX without indicator */
        getWithoutAjaxIndicator: function(url, data, callback, type) { 
            if ( $abz.isFunction( data ) ) { callback = data; data = null; } 
            return $abz.ajax({
                type: "GET",
                url: url,
                data: data,
                success: callback,
                dataType: type,
                global: false
            });
        },
        
        /* MENU */
        bindEventsMenu: function(){
            $abz("#menu a").click(function() {
                var url = $abz(this).attr("url");
                url="partials/" + url;       
                $abz.airbagszentrum.getWithoutAjaxIndicator(url, 
                          {'date' : new Date()},
                          function(data) { $abz('#displayed').empty().append(data); },
                          'html');                
                return true;
            });
            $abz("#logo a").click(function() {
                var url = $abz(this).attr("url");
                if (url!=undefined){
                    url="partials/" + url;       
                    $abz.airbagszentrum.getWithoutAjaxIndicator(url, 
                          {'date' : new Date()},
                          function(data) { $abz('#displayed').empty().append(data); },
                          'html');
                }    
                return true;
            })                
        },
         
        /* Links a carregar na contents */
        bindEventsLinks: function(){
            $abz("#contents a").click(function() {          
                var url = $abz(this).attr("url");
                var showDiv = $abz(this).attr("showDiv");                
                if (showDiv==undefined)
                    showDiv='#displayed';
                if (url!=undefined){
                    url="partials/" + url;       
                    $abz.airbagszentrum.getWithoutAjaxIndicator(url, 
                          {'date' : new Date()},
                          function(data) { $abz(showDiv).empty().append(data); },
                          'html');
                }    
                return true;
            })        
        },        
        
        /* Pedido peças */
        /*bindEventsPedidoPecas : function() {
        alert('entrou');
            $abz('#contents #pedido').click(function() {
                //var idMarca = $abz('#divConteudoPesquisa #idMarca').val(); //o valor seleccionado
                //alert(idMarca); //Mensagem no ecra
                //$abz.airbagszentrum.getWithoutAjaxIndicator('partials/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) { $abz('#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");
                alert('deu');
                return false;
            });
		},        */
        
        showImage: function(imageUrl){
	        document.image.src = imageUrl;
        },    
        
        controleWithData: function (form, excepcoes, url, errorDiv, intValuesArray, emailsArray){
            var count = form.elements.length;
            var value=true;
            var verifyData=true;
            for (i=0; i<count; i++)
            {
                var element = form.elements[i];
                if ((element.value=="0" || element.value=="") && $abz.airbagszentrum.in_array(element.name, excepcoes)==false){
                    value=false;
                }
                if ($abz.airbagszentrum.in_array(element.name, intValuesArray)==true){
                    if (element.value!="" && isNaN(element.value)){
                        verifyData=false;
                    }
                }
                if ($abz.airbagszentrum.in_array(element.name, emailsArray)==true){
                    if ($abz.airbagszentrum.checkEmail(element.value)==false){
                        verifyData=false;
                    }
                }
            }
            if (value==false){
                document.getElementById(errorDiv).innerHTML="preencher campos obrigatórios";
            }
            else{
                if (verifyData==false){
                    document.getElementById(errorDiv).innerHTML="dados mal preenchidos";
                }
                else{
                    document.getElementById(errorDiv).innerHTML="&nbsp;";
                    $abz.airbagszentrum.showValues(form, url);
                }
            }    
            return true;
        },
        
        showValues: function(form, url){
            //$abz.airbagszentrum.showAjaxIndicator();
	        //var values = url;
	        //url="partials/" + url;
	        var len = form.length; //Leave off Submit Button
            var values = "{ 'date' : '"  + new Date() + "'";
            for(i=0; i<len; i++){
		        if(form[i].id.indexOf("selected")!=-1) //Skip objects with name selected and Back Buttons
			        continue;
                if(form[i].type=="checkbox"){
                    if (form[i].checked){
                        values +=", '"
                        values += form[i].id;
    		            values += "' : '";
	        	        values += form[i].value;
	    	            values += "'";
                    }
                }else{
                    values +=", '"
                    values += form[i].id;
    		        values += "' : '";
	    	        values += form[i].value;
	    	        values += "'";
		        }
	        }
	        //values += ", 'date' : new Date() ";
	        values += " }";
	        values=values.replace(/\r\n/g, '\\n');
	        //alert(values);
            eval("$abz.get(url, " + values + " , function(data) { $abz('#contents').empty().append(data); }, 'html');");
            return true;
        },
        
        /* 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".
            $abz('#divConteudoPesquisa #idMarca').change(function() {
                var idMarca = $abz('#divConteudoPesquisa #idMarca').val(); //o valor seleccionado
                //alert(idMarca); //Mensagem no ecra
                $abz.airbagszentrum.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) { $abz('#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");
                $abz.airbagszentrum.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) { $abz('#divConteudoPesquisa #portasPartialContent').empty().append(data); },
                        "html");
                //alert(idMarca);
                $abz.airbagszentrum.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) { $abz('#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".
            $abz('#divConteudoPesquisa #idModelo').change(function() {
                var idModelo = $abz('#divConteudoPesquisa #idModelo').val(); //o valor seleccionado
                //alert(idModelo); //Mensagem no ecra
                $abz.airbagszentrum.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) { $abz('#divConteudoPesquisa #portasPartialContent').empty().append(data); },
                        "html");
                //alert(idModelo);
                $abz.airbagszentrum.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) { $abz('#divConteudoPesquisa #anosPartialContent').empty().append(data); },
                        "html");
                return false;
            });
		},        
		
	    /* função que lança a janela */
	    showBlockUI: function(data){
            jQuery.blockUI(data, {width: '700px', height: '490px', margin:'-290px -350px', border: 'none'});
            //jQuery.blockUI('A processar...Um momento, por favor...',{ backgroundColor: '#F0F0F0', color:'#404040', padding: '10px', border: 'solid 2px #404040'});            
        },
        
	    /* função que fecha a janela */
        hideBlockUI: function(){
            $abz.unblockUI();
            $abz.airbagszentrum.setupAjaxIndicator();
        },

	    /* Exemplo */
	    showImagePopup: function(imageURL){
            $abz.airbagszentrum.removeAjaxIndicator(); // ATT: tens que fazer isto senão o ajax indicator aparece por cima!!
            $abz.get('partials/imagePopup.php', 
                    {'date' : new Date(), 
                    'imageURL' : imageURL},
                    function(data) {
                        $abz.airbagszentrum.showBlockUI(data);
                    }, 
                    "html");
        },
        
        /* Links a carregar na contents */
        bindEventsImagePopup: function(){
            $abz("#displayed .imagePopup").click(function() {
                var imageURL = $abz(this).attr("src");
                $abz.airbagszentrum.showImagePopup(imageURL);
                return true;
            })
        }, 
        
        runSlideShow: function(imagePos, imageArray, imageDiv){
            var fadeDuration=3;           
            if (document.getElementById(imageDiv)!= null && imagePos!=undefined && imageArray!=undefined && imagePos>0){
                if (document.all){
                    document.getElementById(imageDiv).style.filter="blendTrans(duration=2)";
                    document.getElementById(imageDiv).style.filter="blendTrans(duration=CrossFadeDuration)";
                    document.getElementById(imageDiv).filters.blendTrans.Apply();
                }
        
                document.getElementById(imageDiv).src = imageArray[imagePos-1];
                if (document.all)
                    document.getElementById(imageDiv).filters.blendTrans.Play();
                imagePos = imagePos + 1;
                
                if (imagePos > (imageArray.length)) 
                   imagePos=1;
                
                setTimeout({                
                    run: function() {
                        jQuery.airbagszentrum.runSlideShow(imagePos, imageArray, imageDiv);
                    }
                  }.run, 5000);
           }//else
              // alert('Nao deu');
        },    
        
        /*verifica timing*/
        runSlideShowStock: function(){
            if (document.getElementById("r2home")!= null){
                jQuery.airbagszentrum.getWithoutAjaxIndicator('partials/stockDestaque.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
                        },
                        function(data) { jQuery('#r2home').empty().append(data); },
                        "html");       
                eval("setTimeout('jQuery.airbagszentrum.runSlideShowStock()',10000);");            
            }
            return false;                               
        },             

        /*slide show para as noticias*/
        runSlideShowNoticias: function(){
            //alert('Entrou');
            if (document.getElementById("r3home")!= null){
                jQuery.airbagszentrum.getWithoutAjaxIndicator('partials/noticiaDestaque.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
                        },
                        function(data) { jQuery('#r3home').empty().append(data); },
                        "html");   
                eval("setTimeout('jQuery.airbagszentrum.runSlideShowNoticias()',10000);");                                   
            }
            return false;            
        },  
                
        in_array: function(needle, haystack, strict) {
            var found = false, key, strict = !!strict;
            for (key in haystack) {
                if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
                    found = true;
                    break;
                }
            }
            return found;
        },
        
        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);


