﻿//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);

(function($) {
    $.fn.extend({
        BrowserDetect : function() {
            //Adapted from http://www.tvidesign.co.uk/blog/CSS-Browser-detection-using-jQuery-instead-of-hacks.aspx
            var element = $(this);
            
            var userAgent = navigator.userAgent.toLowerCase();
            $.browser.chrome = /chrome/.test(navigator.userAgent.toLowerCase()); 
            
            if($.browser.msie)
            {
                element.addClass('ie');
                
                element.addClass('ie' + $.browser.version.substring(0,1));
            }
            
            if($.browser.chrome)
            {            
                element.addClass('chrome');
                
                userAgent = userAgent.substring(userAgent.indexOf('chrome/') +7);
                userAgent = userAgent.substring(0,1);
                element.addClass('chrome' + userAgent);
                
                // If it is chrome then jQuery thinks it's safari so we have to tell it it isn't
                $.browser.safari = false;
            }
            
            if($.browser.safari)
            {
                element.addClass('safari');
                
                userAgent = userAgent.substring(userAgent.indexOf('version/') +8);
                userAgent = userAgent.substring(0,1);
                element.addClass('safari' + userAgent);
            }
            
            if($.browser.mozilla)
            {                
                if(navigator.userAgent.toLowerCase().indexOf('firefox') != -1)
                {
                    element.addClass('firefox');
                    
                    userAgent = userAgent.substring(userAgent.indexOf('firefox/') +8);
                    userAgent = userAgent.substring(0,1);
                    element.addClass('firefox' + userAgent);
                }
                else
                {
                    // If not then it must be another Mozilla
                    element.addClass('mozilla');
                }
            }
            
            if($.browser.opera)
            {
                element.addClass('opera');
            }
	    }
	})
})(jQuery);

function TrackPage(pageName)
{
    if (typeof(pageTracker) != 'undefined')
    {
        pageTracker._trackPageview(pageName);
    }
}

$(document).ready(function() {    
    $('a[rel="external"]').ExternalLinks();
    $('body').BrowserDetect();
    $('div#stockistSearchButton input.submit').click(function(){
        TrackPage('/stockist-search');
    });
});

