﻿//ExternalLinks - tracking based on http://www.iqcontent.com/blog/2007/02/tracking-documents-and-external-links-in-google-analytics/
(function($) {
    $.fn.extend({
        ExternalLinks : function() {            
            return this.each(function() {
                $(this).click(function() {                    
                    if (this.tagName != 'A') {
                        return false;
                    }
                    
                    var link = String(this);
                    var linkHost = this.hostname;
                    var siteHost = location.host;
                    
		            if (link.match(/^mailto:/i)) 
		            {
		                return HandleMailToLink(this);
		            }
		            else if (linkHost == siteHost) 
		            {
			            if(link.match(/\.(doc|pdf|xls|ppt|zip|txt|vsd|vxd|js|css|rar|exe|wma|mov|avi|wmv|mp3)$/)) 
			            {
		                    return HandleDocumentLink(this);
			            }
			            else
			            {
		                    return HandleInternalLink(this);
			            }
		            }
		            else 
		            {
		                return HandleExternalLink(this);
		            }
                });
            });
        
            function HandleMailToLink(anchor)
            {
                var email = anchor.href.substring(7);
                TrackLink('mailto', email);
                
                return true;
            }
            
            function HandleDocumentLink(anchor)
            {
                var doc = CleanURL(anchor.pathname, false);
                TrackLink('download', doc);                
                
                window.open(anchor.href);		            
                return false;
            }
            
            function HandleInternalLink(anchor)
            {                
                window.open(anchor.href);		            
                return false;
            }
            
            function HandleExternalLink(anchor)
            {
                var link = CleanURL(anchor.hostname+'/'+anchor.pathname, true);
                TrackLink('external', link);
                
                window.open(anchor.href);		            
                return false;
            }
            
            function TrackLink(type, virtualPath)
            {
                if (typeof(pageTracker) != 'undefined')
                {
	                var url = CleanURL(window.location.pathname, true);
	                if (url.length == 0)
	                {
	                    url = '/home';
	                }
	                var linkStr = CleanURL('/virtual/'+type+url+'/'+virtualPath, true);
	                pageTracker._trackPageview(linkStr);
	            }
            }
            
            function CleanURL(url, end)
            {
	            var url = url.toString();
	            var urlLen = url.length;
            	
	            if (end)
	            {
		            if (url.charAt((urlLen-1))=='/') {
			            url = url.substring(0,(urlLen-1));
			        }
	            }
	            else
	            {
		            if (url.charAt(0)=='/') {
			            url = url.substring(1,urlLen);
			        }
	            }
	            return url;
            }
        }
    });
})(jQuery);

//ImageSwap
(function($) {
    $.fn.extend({
        ImageSwap : function(swapSrc) {
            this.each(function() {
                if (this.tagName != 'IMG' || this.tagName != 'INPUT') {
                    return false;
                }
            });
                           
            return this.each(function() {
                var img = $(this);
                var origSrc = img.attr('src')
                if (typeof(swapSrc) == 'undefined')
                {
                    var path = origSrc.substring(0, origSrc.lastIndexOf('.'));
                    var ext = origSrc.substring(origSrc.lastIndexOf('.'), origSrc.length);
                    path += '-on';
                    swapSrc = path + ext;
                }
                img.data('OrigSrc', origSrc);
                img.data('SwapSrc', swapSrc); 
                
                var preloader = new Image();
                preloader.src = swapSrc;
                
                $(this).hover(
                    function() {
                        $(this).attr('src', $(this).data('SwapSrc'));
                    },
                    function() {
                        $(this).attr('src', $(this).data('OrigSrc'));
                    }
                );
            });
        }
    });
})(jQuery);

(function($) {
    $.fn.extend({
        iFrameResize : function() {
		    // Set specific variable to represent all iframe tags.
		    var iFrames = document.getElementsByTagName('iframe');

		    // Resize heights.
		    function iResizeAll()
		    {
			    // Iterate through all iframes in the page.
			    for (var i = 0, j = iFrames.length; i < j; i++)
			    {
				    iResize(iFrames[i]);
			    }
		    }
		    
		    function iResize(frame)
		    {
			    // Set inline style to equal the body height of the iframed content.
			    frame.style.height = frame.contentWindow.document.body.offsetHeight + 'px';
		    }

		    // Check if browser is Safari or Opera.
		    if ($.browser.safari || $.browser.opera)
		    {
			    // Start timer when loaded.
			    $('iframe').load(function()
				    {
					    setTimeout(iResizeAll, 0);
				    }
			    );

			    // Safari and Opera need a kick-start.
			    for (var i = 0, j = iFrames.length; i < j; i++)
			    {
				    var iSource = iFrames[i].src;
				    iFrames[i].src = '';
				    iFrames[i].src = iSource;
			    }
		    }
		    else
		    {
			    // For other good browsers.
			    $('iframe').load(function()
				    {
					    // Set inline style to equal the body height of the iframed content.
					    iResize(this);
				    }
			    );
		    }
	    }
	})
})(jQuery);

$(document).ready(function() {    
    $('a[rel="external"]').ExternalLinks();
});
