/**
 * $Rev: 224 $
 */

if ('undefined' === typeof SWA) var SWA = {};

SWA.PageFader = {
        
    IN_DURATION  : 800,
    OUT_DURATION : 500,
    
    initialize: function() {
        SWA.PageFader._fadeIn();
        $('a').filter(SWA.PageFader._linkFilter).bind('click.SWA_PageFader', SWA.PageFader.onClick);
    },
    
    onClick: function(e) {
        // middle mouse btn == 1
    	if (e.button >= 1) return;
        
    	e.preventDefault();
        e.stopPropagation();
        var linkUrl = $(this).get(0).href;
        SWA.PageFader._fadeOut(function() {window.location.href = linkUrl;});
    },
    
    _fadeOut: function(callback) {
        $('.fade').animate(
            {opacity: "0"}, 
            {
                duration: SWA.PageFader.OUT_DURATION, 
                complete: callback
            });
    },
    
    _fadeIn: function() {
        $('.fade').css({
            'opacity'   : 0, 
            'visibility': 'visible'
         })
         .animate({opacity: "1"}, 
             {  
                 queue: false, 
                 duration: SWA.PageFader.IN_DURATION
             });
    },
    
    _linkFilter: function(index) {
        var pf = SWA.PageFader;
        
        if (pf._isThumbnail($(this).attr("rel"))) {
            return false; 
        }
        
        if ($(this).hasClass('nofade')) {
        	return false;
        }
        
        var linkUrl = $(this).attr("href");
        
        if (typeof linkUrl == 'undefined' || linkUrl.length == 0) {
        	return false;
        }
        
        if (!pf._isSamePage(linkUrl) && pf._isLocal(linkUrl)) {
            return true;
        } else {
            return false;
        }
    },
    
    _isLocal: function(linkUrl) {
        return  0 == linkUrl.indexOf("http://" + window.location.hostname) ||
        		0 == linkUrl.indexOf('/') ||
        		0 == linkUrl.indexOf('?');
    },
    
    _isSamePage: function(linkUrl) {
    	var samePage = -1 != linkUrl.indexOf(window.location.pathname + '#');
    	return samePage;
    },
    
    _isThumbnail: function(linkRel) {
        return 0 == linkRel.indexOf("thumbs");
    }
};

$(document).ready(SWA.PageFader.initialize);