/*!
 * DynamicAnchors v1.0.2
 * http://www.esencia.cz/
 *
 * Copyright 2010, Esencia.cz
 * Author Michal Suran, suran@esencia.cz
 *
 * Release: 2010-08-10 23:40
 */
 jQuery.extend({
    esenciaAjaxLink: {
    //ajaxLink: {
        onloadUrlCheck: function(){    
            var rq = this.buildRequest(location.href);
                 
                 
            if(rq.path != rq.actualPage){
                 
                //alert(rq.protocol+'://'+rq.host+rq.actualPage+"#"+rq.pageAnchor);
                $("body").html('');     
                                
                if(rq.pageAnchor){
                    var anchor = "#"+rq.pageAnchor;
                }else{
                    var anchor = ''; //fix na IE
                }                       
                //alert(rq.protocol+'://'+rq.host+rq.actualPage+anchor);
                location.href = rq.protocol+'://'+rq.host+rq.actualPage+anchor;
                return;
            }
            
             return false;
            
        },
        click: function(a){          
            var loc = this.buildRequest(location.href);
            var request = this.buildRequest(a);
            //1. - otevirame nove okno?
            
            if($(a).attr('target') == '_blank'){
                $('html').css({'cursor': 'default'});
                window.open(a.href, '_blank');
            }else if(loc.host != request.host){
                //jdeme na jinou domenu? (bez ajaxu)
                location.href = a.href;
            }else if(request.anchor != null){
                //jdeme na kotvu
                //alert(request.relative);
                if(request.path == loc.actualPage){
                    //kotva na stejne strance
                    this.scrollToAnchor(request.anchor);
                    location.hash = "page="+request.path+"&anchor="+request.anchor;
                }else{
                    if(document.getElementById(request.anchor)){
                        //anonymni kotva (href="#")
                        location.hash = "page="+loc.actualPage+"&anchor="+request.anchor;
                        //$.esenciaAjaxLink.scroolToAnchor(request.anchor);
                        //this.scroolToAnchor(request.anchor);
                        var pos = $("#" + request.anchor).offset().top;
                        //$(window).scrollTop();
                        if($.browser.safari){
                            var elm = $('body');
                        }else{
                            var elm = $('html');
                        }
                        elm.animate({'scrollTop': pos}, 500);
                        $('html').css('cursor', 'default');
                        return false;
                        
                    }
                    //kotva na jine strance
                    location.hash = "page="+request.path+"&anchor="+request.anchor;
                    
                    var urlObj = this.buildRequest(a);
                    var url = urlObj.protocol+'://'+urlObj.host+urlObj.path;
                   
                   $.get(url, function(payload){
                        $.esenciaAjaxLink.updateSnippets(payload, request.path);
                        
                    });
                }
                   
            }else{               
                //update kotvy v url
                location.hash = "page="+request.relative;
                //alert(a.href);
                //var url = 'http://atlant.dev.esencia.cz/cs/reklama';
                $.get(a.href, function(payload){
                        $.esenciaAjaxLink.updateSnippets(payload, request.path);
                        
                    });
                    
                //return false;
            } 
             
        },
        scrollToAnchor: function(anchor){
             
            if($("#"+anchor).offset() == null){
                //neznamy prvek
                $('html').css('cursor', 'default');
                return false;
            }
            var pos = $("#" + anchor).offset().top;
            //$(window).scrollTop();
            if($.browser.safari){
                            var elm = $('body');
                        }else{
                            var elm = $('html');
                        }
            //elm.animate({'scrollTop': pos}, 500);
            elm.animate({'scrollTop': pos}, 0);
            $('html').css('cursor', 'default');
            this.afterScroll();
            return false;
            
        },
        scrollTo: function(scr, time){
            if($.browser.safari){
                            var elm = $('body');
                        }else{
                            var elm = $('html');
                        }
            elm.animate({'scrollTop': scr}, time);
            this.afterScroll();
            return false;
        
        },
        afterScroll: function(){},
        updateSnippets: function(payload, trackPath){
            //alert(payload.snippets);
            //if(!payload){return;}
            if (payload.redirect) {
                window.location.href = payload.redirect;
                return;
            }
            
            //trackmene analytics
            pageTracker._trackPageview(trackPath);
                  
            // snippets
            if (payload.snippets) {
                for (var i in payload.snippets) {
                    $.esenciaAjaxLink.updateSnippet(i, payload.snippets[i]);
                }
            }
            
            
        },
        updateSnippet: function(id, html){
            alert('Nebyla definována funkce "$.esenciaAjaxLink.updateSnippet"');                   
        },
        snippetUpdated: function(id){          
            //zpracujeme pripadny anchory
            var rq = this.buildRequest(location.href);
            if(rq.pageAnchor){
                this.scrollToAnchor(rq.pageAnchor);
                
            }
        },
        buildRequest: function(a){
            $.url.setUrl(a.href);
            //alert(this.getActualPage());
            return {
                'protocol' : $.url.attr('protocol'),
                'host' : $.url.attr('host'),
                'query': $.url.attr('query'),
                'anchor' : $.url.attr('anchor'),
                'path' : $.url.attr('path'),
                'relative' : $.url.attr('relative'),
                'actualPage': this.getActualPage(),
                'pageAnchor': this.getPageAnchor()
            };
        },
        getActualPage: function(){
            $.url.setUrl(location.href);
            //prazdny anchor, jsme na strance podle url
            if($.url.attr('anchor') == null){
                return $.url.attr('path');
            }else{
                parts = $.url.attr('anchor').split('&');
                for(var i in parts){
                    if(parts[i].substring(0, 5) == 'page='){
                        return parts[i].substring(5, parts[i].length);
                    }
                    
                }
                return $.url.attr('path');
            }
        },
        getPageAnchor: function(){
            $.url.setUrl(location.href);
            //prazdny anchor, jsme na strance podle url
            if($.url.attr('anchor') == null){
                return null
            }else{
                parts = $.url.attr('anchor').split('&');
                for(var i in parts){
                    if(parts[i].substring(0, 7) == 'anchor='){
                        return parts[i].substring(7, parts[i].length);
                    }
                    
                }
            }
        },
        getHost: function(){
            $.url.setUrl(location.href);
            return $.url.attr('host');
        }
        
    //}
    }});
    

