function Enalytics(tracker,campaign){this._gaTrackerID=tracker;var self=this,gaCheckTimeout=100,ignore='',folderClickouts='/clickout/',folderMailtos='/mailto/',folderDownloads='',campaign=(typeof(campaign)==='undefined'?{}:campaign);this.pageTracker=null;document.write(unescape("%3Cscript src='"+(("https:"==document.location.protocol)?"https://ssl.":"http://www.")+"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));this._gaIsLoaded=function(){return(typeof(window['_gat'])!=='undefined');}
this._gaCheckLoaded=function(){if(self._gaIsLoaded()){self._init();}else{setTimeout(self._gaCheckLoaded,gaCheckTimeout);}}
this._init=function(){this.pageTracker=window['_gat']._getTracker(this._gaTrackerID);if(campaign.campaignSource){this.pageTracker._setCampSourceKey(campaign.campaignSource);}
if(campaign.campaignMedium){this.pageTracker._setCampMediumKey(campaign.campaignMedium);}
if(campaign.campaignName){this.pageTracker._setCampNameKey(campaign.campaignName);}
this.pageTracker._setCustomVar(1,'Viewport',self.getViewport(),3);this.pageTracker._trackPageview();this.trackExtras();}
this.trackPageview=function(path){if(this._gaIsLoaded()){this.pageTracker._trackPageview(path);}}
this.trackExtras=function(){var anchors=document.getElementsByTagName('a');for(var i=0,j=anchors.length;i<j;i++){var path=anchors[i].href+'',anchorUri=this._parseUrl(anchors[i].href);if(path.match(/\.(ppt|pdf|zip|doc|docx|rar|wma|mov|avi|wmv|mp3)/)!=null){if((path.indexOf("http://"+location.host)>-1)||(this.checkInternal(path)==false)){this.addEvent(anchors[i],'click',this.createTrigger(folderDownloads+anchorUri['path']));}}
if(path.indexOf("mailto:")>-1){this.addEvent(anchors[i],'click',this.createTrigger(folderMailtos+anchors[i].href.substr(7)));}
if((this.checkInternal(path))&&(path.indexOf("mailto:")==-1)&&(path.indexOf("javascript:")==-1)){this.addEvent(anchors[i],'click',this.createTrigger(folderClickouts+anchorUri['host']+anchorUri['path']));}}};this.createTrigger=function(path){return function(){self.trackPageview(path);}}
this._parseUrl=function(input,component){var reg=/^((https|http|ftp)?:\/\/)?(([a-z0-9_-]+):(.+)@)?([^/:]+)?(:([0-9]+))?([^\?]+)?(\?([^#]+))?(#(.+))?$/i;var url=reg.exec(input);if(!url||url.length!==14){return false;}else{var parsed=new Array();parsed['scheme']=url[2];parsed['user']=url[4];parsed['pass']=url[5];parsed['host']=url[6];parsed['port']=url[8];parsed['path']=url[9];parsed['query']=url[11];parsed['fragment']=url[13];if(component!==undefined){return parsed[component];}else{return parsed;}}}
this.addEvent=function(element,type,handler){var self=this;this.fixEvent=function(event){event.preventDefault=function(){this.returnValue=false;}
event.stopPropagation=function(){this.cancelBubble=true;}
return event;}
if(typeof this.guid=="undefined"){this.guid=1;}
if(element.addEventListener){element.addEventListener(type,handler,false);}else{if(!handler.$$guid){handler.$$guid=this.guid++;}
if(!element.events){element.events={};}
var handlers=element.events[type];if(!handlers){handlers=element.events[type]={};if(element['on'+type]){handlers[0]=element['on'+type];}
element['on'+type]=function(event){event=event||self.fixEvent(window.event);var returnValue=true;var handlers=this.events[event.type];for(var i in handlers){if(!Object.prototype[i]){this.$$handler=handlers[i];if(this.$$handler(event)===false){returnValue=false;}}}
if(this.$$handler){this.$$handler=null;}
return returnValue;};}
handlers[handler.$$guid]=handler;}}
this.checkInternal=function(url){ignore=document.domain+" "+ignore;ignore=ignore.replace(/^\s+/,'').replace(/\s+$/,'');ignore=ignore.split(" ");for(var i=0;i<=ignore.length;i++){if(url.indexOf(ignore[i])>-1){return false;}}
return true;}
this.roundDown=function(nr){return Math.floor(nr/50)*50;}
this.getViewport=function(){var width=(window.innerWidth?window.innerWidth:(document.documentElement.clientWidth?document.documentElement.clientWidth:document.body.clientWidth)),height=(window.innerHeight?window.innerHeight:(document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight));return self.roundDown(width)+'x'+self.roundDown(height);}
this._gaCheckLoaded();}
