var _gaCustomEvents = {
	fileTypes: new RegExp(/\.(docx*|xlsx*|pptx*|exe|zip|pdf|jpg|png|txt)$/i),
	handleGAclick: function(e) {
	    var ev = (typeof event == "undefined") ? e : event;
	    if (ev.which ? (ev.which == 1) : (ev.button == 0)) {
	        var srcElement = ev.srcElement || ev.target;
	        var linkelement = srcElement.tagName == "A" ? srcElement : (srcElement.parentNode.tagName == "A" ? srcElement.parentNode : null);
	        if (linkelement) {
	            var url = linkelement.href;
				
				if (this.fileTypes.test(linkelement.pathname)) {
					var pathname = (linkelement.pathname).replace(/^\/+/, '');
					_gaq.push(['_trackEvent', 'download', 'click', pathname]);					
				}
	            else if (url.indexOf("mailto:") == 0) {
	                _gaq.push(['_trackEvent', 'mailto', 'click', url.substring(7)]);
	            }
	            else {					
	                var temp = location.href.indexOf('/', 8);
	                var currentHost = location.href.substring(0, temp + 1);
	                temp = url.indexOf('/', 8);
	                var targetHost = url.substring(0, temp + 1);
	                var isExternal = currentHost != targetHost;
					
					if (url.indexOf("javascript:") == 0) isExternal = false;

                    if (isExternal) {
                        _gaq.push(['_trackEvent', 'outbound', 'click', url]);
                    }

	            }
	        }
	    }
	},
	addEvent: function(){
		if (window.addEventListener) {
			return function(el, type, fn) {
				el.addEventListener(type, fn, false);				
			};
		} else if (window.attachEvent) {
			return function(el, type, fn) {
				var f = function() {
					fn.call(el, window.event);
				};
				el.attachEvent('on' + type, f);
			};
		}		
	}()
}

_gaCustomEvents.addEvent(window, 'load', function(e) {
	_gaCustomEvents.addEvent(document, 'click', function(e){
		_gaCustomEvents.handleGAclick(e);	
	});
});

