
var WSGat=(function(){if(!Function.bind){Function.prototype.bind=function(scope){var _function=this;return function(){return _function.apply(scope,arguments);}};}
if(!Array.indexOf){Array.prototype.indexOf=function(test){var a;for(a=0;a<this.length;a++){if(this[a]==test){return a;}}
return-1;}}
return{Types:{'page':0,'event':1},Settings:{'doc_re':/\.(?:doc|eps|jpg|png|svg|xls|ppt|pdf|xls|zip|txt|vsd|vxd|js|css|rar|exe|wma|mov|avi|wmv|mp3)($|\&|\?)/i,'transfer_timeout':100,'domain':'none'},Tracked:[],Create:function(options){var _cls,_observe,_enable,_set_defaults,_log,_settings;_settings=WSGat.Settings;_cls=new function(){return{options:(options||{}),active:false,async:false,register:function(elements,type,data,event){var a,element,href;type=type||WSGat.Types.page;event=event||"click";data=data||{};if(typeof elements!="object"||!elements.length){elements=[elements];}
for(a=0;a<elements.length;a++){element=elements[a];try{if(element.tagName=="A"||element.tagName=="AREA"){if(element.getAttribute){href=element.getAttribute("href");}else{href=element.readAttribute("href");}
data=_set_defaults(data,{'uri':href});}}catch(e){throw"Invalid/undefined element passed";}
if(type==WSGat.Types.page){if(data.uri!==undefined){_observe(element,event,function(event){return this.track(data.uri,data.track_uri,event||window.event);}.bind(this));}else{throw"Invalid data for page tracking registration supplied";}}else if(type==WSGat.Types.event){if(data.category!==undefined&&data.action!==undefined){_observe(element,event,function(){this.track_event(data.category,data.action,(data.label?data.label:undefined),(data.value?data.value:undefined),Boolean(data.runonce))}.bind(this));}else{throw"Invalid data for page tracking registration supplied";}}}},track:function(uri,track_uri,event){var hostname,test,redirect;if(!this.active){return;}
if(typeof(track_uri)!=="string"||track_uri==""){track_uri=uri;}
test=_test_uri(uri);redirect=function(){window.setTimeout(function(){location.href=uri;}.bind(this),_settings.transfer_timeout);}
_log("Tracking"+(test.external?" external":"")+" page: '"+track_uri+"'"+(this.async?" (async)":""));if(test.external){if(event!==undefined){if(event.preventDefault){event.preventDefault();}}
if(test.hostname&&this.options.hosts.indexOf(test.hostname)!==-1){if(this.async){_gaq.push(['_setDomainName',_settings.domain]);_gaq.push(['_link',uri]);}else{pageTracker._setDomainName(_settings.domain);pageTracker._link(uri);}}else{if(this.async){_gaq.push(['_trackPageview','/external/'+track_uri]);}else{pageTracker._trackPageview('/external/'+track_uri);}
if(event!==undefined){redirect();}}}else{if(test.document&&event!==undefined){if(event.preventDefault){event.preventDefault();}}
if(this.async){_gaq.push(['_trackPageview',track_uri]);if(test.document&&event!==undefined){redirect();}}else{pageTracker._trackPageview(track_uri);if(test.document&&event!==undefined){redirect();}}}
if(test.external||test.document){return(event===undefined);}else{return true;}},track_event:function(category,action,label,value,runonce){var identifier,tracked;identifier=category+"/"+action+"["+label+"]";tracked=false;if(!this.active){return false;}
if(runonce&&WSGat.Tracked.indexOf(identifier)!==-1){return false;}
if(label!==undefined&&label!==null){_log("Tracking event: "+category+", "+action+" ("+label+": '"+value+"')");if(!isNaN(value)&&value!==null){value=parseInt(value);}else{value=0;}
if(this.async){tracked=(_gaq.push(['_trackEvent',category,action,label,value])===0);}else{tracked=pageTracker._trackEvent(category,action,label,value);}}else{_log("Tracking event: "+category+", "+action);if(this.async){tracked=(_gaq.push(['_trackEvent',category,action])===0);}else{tracked=pageTracker._trackEvent(category,action);}}
WSGat.Tracked.push(identifier);return tracked;}}}
_enable=function(){var links,i,href,rel,a,ga_host_prefix;this.options=_set_defaults(this.options,{'async':true,'vectors':{'mailto':{'type':WSGat.Types.page}}});if(this.options.hosts===undefined){this.options.hosts=[];}
if(this.options.async){window._gaq=window._gaq||[];if(typeof this.options.account=="string"&&this.options.account!==""){_gaq.push(['_setAccount',this.options.account]);}else{throw"Invalid/undefined google account number supplied";}
_gaq.push(['_trackPageview']);if(this.options.domain){_gaq.push(['_setDomainName',this.options.domain]);}
(function(){var ga,s;ga=document.createElement("script");ga.type='text/javascript';ga.async=true;ga.src=('https:'==document.location.protocol?'https://ssl':'http://www')+'.google-analytics.com/ga.js';s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ga,s);})();this.async=true;if(this.options.hosts.length>0){_gaq.push(['_setAllowLinker',true]);}}else if(typeof(window._gat)=="object"){this.async=false;if(this.options.hosts.length>0){pageTracker._setAllowLinker(true);}}else{throw"Neither async was requested nor _gat object could be found.";}
_log("Extended tracking initialized (async "+(this.async?"enabled":"disabled")+")");links=document.getElementsByTagName("a");for(i=0;i<links.length;i++){a=links[i];if(a.getAttribute){href=a.getAttribute("href");rel=a.getAttribute("rel");}else{href=a.readAttribute("href");rel=a.readAttribute("rel");}
if(href.indexOf("#")!==0&&(rel===null||!rel.match(/no-track/))){switch(a.protocol){case"mailto:":if(this.options.vectors.mailto.type==WSGat.Types.page){this.register(a,WSGat.Types.page,{'uri':href,'track_uri':'/mailto/'+href.substring(7)});}else if(this.options.vectors.mailto.type==WSGat.Types.event){this.register(a,WSGat.Types.event,{'category':'mailto','action':href.substring(7)});}
break;case"http:":case"https:":case"ftp:":if(href.match(_settings.doc_re)){this.register(a,WSGat.Types.Page,{'uri':href,'track_uri':'/downloads/'+href});}else if(_test_uri(href).external){this.register(a,WSGat.Types.Page,{'uri':href});}
break;}}}
this.active=true;}.bind(_cls);_test_uri=function(uri){var result,hostname;result={'external':false,'document':false}
hostname=null;if(uri!==undefined){hostname=uri.match(/:\/\/([^\/]*)/);if(hostname!==null&&(hostname[1].length>3&&hostname[1]!=location.hostname&&hostname[1]!='')){result.external=true;}
if(uri.match(_settings.doc_re)){result.document=true;}}
result.hostname=(hostname!==null?hostname[1]:null);return result;}.bind(_cls);_set_defaults=function(ob,defaults){var key;for(key in defaults){if(typeof(defaults[key])=="object"&&defaults[key]!==null){ob[key]=_set_defaults(ob[key]||{},defaults[key]);}else{if(ob[key]===undefined){ob[key]=defaults[key];}}}
return ob;}.bind(_cls);_log=function(msg){if(typeof console!="undefined"){console.log(msg);}}.bind(_cls);_observe=function(element,event,fn){if(element.addEventListener){element.addEventListener(event,fn,false);}else if(element.attachEvent){element.attachEvent("on"+event,fn);}}
_enable();return _cls;}}}());
