
OneWeb.Analytics={
"TRACK_DOWNLOAD_CLASS":"trackDownload",
"TRACK_EXTERNAL_CLASS":"trackExternal",
"includeSubDirs":false,
"providers":[],
"trackingClasses":{},
"formatLink":function(address,fileOnly){
var host="",query="",i=0;
if(address==null||address=="")return "/";
if(address.indexOf("://")>0)address=address.substring(address.indexOf("://")+3);
if(address.indexOf("?")>0){
query=address.substring(address.indexOf("?"),address.length);
address=address.substring(0,address.indexOf("?"));}
if(address.charAt(0)!="/"){
if((i=address.indexOf("/"))<0){
host=address;
address="";}else{
host=address.substring(0,i);
address=address.substring(i,address.length);}
if(document.location.hostname==host)host="";
host=host.replace(/\./g,"_");}
if(address.charAt(0)!="/")address="/"+address;
if(fileOnly)
address=address.substring(address.lastIndexOf("/",address.length));
if(host.length>0)
return "/"+host+address+query;
else
return address+query;},
"track":function(address){
var trackers=OneWeb.Analytics.providers;
if(trackers&&trackers.length>0)
for(var tracker in trackers)
if(trackers[tracker]&&typeof trackers[tracker].track!="undefined")
trackers[tracker].track(address);},
"trackOnClick":function(){
var OA=OneWeb.Analytics,OU=OneWeb.Util;
var a=this;
if(window.event)a=event.srcElement;
while(a.parentNode!=null&&a.tagName.toLowerCase()!="a"&&a.tagName.toLowerCase()!="area")
a=a.parentNode;
var address="";
if(a.getAttribute("track")&&a.getAttribute("track")!="")
address=a.getAttribute("track");
else if(a.href!=null&&a.href!=""){
for(var c in OA.trackingClasses){
if(OU.hasClass(a,c)){
address=OA.trackingClasses[c].prefix+OA.formatLink(a.href,OA.trackingClasses[c].fileOnly);
break;}}}
if(address=="")
return;
OA.track(address);},
"trackAndRedirect":function(address,redirect){
OneWeb.Analytics.track(address);
document.location.href=redirect;},
"setTrackingLinks":function(){
var OA=OneWeb.Analytics,OU=OneWeb.Util;
var links=document.getElementsByTagName("a");
var a=null;
for(var i=0;i<links.length;i++){
a=links[i];
if(a.getAttribute("track")!=null&&a.getAttribute("track")!="")
OU.addEvent(a,"click",OA.trackOnClick,false);
else if(a.href!=null&&a.href!=""){
for(var c in OA.trackingClasses){
if(OU.hasClass(a,c)){
OU.addEvent(a,"click",OA.trackOnClick,false);
break;}}}}
links=document.getElementsByTagName("area");
a=null;
for(var i=0;i<links.length;i++){
a=links[i];
if(a.getAttribute("track")!=null&&a.getAttribute("track")!="")
OU.addEvent(a,"click",OA.trackOnClick,false);
else if(a.href!=null&&a.href!=""){
for(var c in OA.trackingClasses){
if(OU.hasClass(a,c)){
OU.addEvent(a,"click",OA.trackOnClick,false);
break;}}}}},
"addTrackingClass":function(className,trackPrefix,fileOnly){
if(className!=""&&!OneWeb.Analytics.trackingClasses[className]&&trackPrefix!=""){
OneWeb.Analytics.trackingClasses[className]={prefix:trackPrefix,fileOnly:fileOnly}}},
"trackEvent":function(){
var trackers=OneWeb.Analytics.providers;
if(trackers&&trackers.length>0){
for(var tracker in trackers){
if(trackers[tracker]&&typeof trackers[tracker].trackEvent!=="undefined"){
try{
trackers[tracker].trackEvent.apply(trackers[tracker],arguments);}catch(e){}}}}},
"trackEventOnEvent":function(e){
if(!e)var e=window.event;
var type=e.type;
var el=(e.srcElement)?e.srcElement:this;
var attr="trackEvent_"+type;
while(el.getAttribute(attr)==null&&el.parentNode!=null)
el=el.parentNode;
if(el.getAttribute(attr)==null)
return;
var args=el.getAttribute(attr).split(",");
OneWeb.Analytics.trackEvent.apply(OneWeb.Analytics,args);
return true;},
"setTrackingEvents":function(){
var els=document.getElementsByTagName("*");
var el=null;
for(var i=0;i<els.length;i++){
el=els[i];
if(el.getAttribute("trackEvent")!==null||el.getAttribute("trackevent")!=null){
var attr=el.getAttribute("trackEvent")||el.getAttribute("trackevent");
if(attr.length==0)
continue;
var evs=el.getAttribute("trackEvent").split(";");
for(var j=0;j<evs.length;j++){
var args=evs[j].split(",");
if(args.length<2)
continue;
args[0]=args[0].toLowerCase();
if(args[0].substring(0,2)=="on")
args[0]=args[0].substring(2,args[0].length);
else if(args[0].length==0)
args[0]="click";
el.setAttribute("trackEvent_"+args[0],args.slice(1).join(","));
OneWeb.Util.addEvent(el,args[0],OneWeb.Analytics.trackEventOnEvent,true);}}}},
"addProvider":function(provider){
if(provider instanceof OneWeb.Analytics.Provider)
OneWeb.Analytics.providers.push(provider);},
"initialize":function(options){
var OA=OneWeb.Analytics;
if(OA.providers.length>0){
for(var provider in OneWeb.Analytics.providers){
try{
if(typeof OA.providers[provider].initialize!="undefined")
OA.providers[provider].initialize();}catch(e){}}
var body=document.getElementsByTagName("body")[0];
if(body!==null&&body.getAttribute("track")!==null&&body.getAttribute("track").length>0)
OA.track(body.getAttribute("track"));
else if(body!==null&&body.getAttribute("trackAndRedirect")!==null&&body.getAttribute("trackAndRedirect").length>0){
var addrs=body.getAttribute("trackAndRedirect").split(",",2);
if(addrs.length===1)
OA.trackAndRedirect(null,addrs[0]);
else if(addrs[0].length===0)
OA.trackAndRedirect(null,addrs[1]);
else
OA.trackAndRedirect(addrs[2],addrs[1]);
return;}else
OA.track();
OA.setTrackingLinks();
if(options!=null&&typeof(options.eventTracking)=="boolean"&&options.eventTracking===true)
OA.setTrackingEvents();}},
"initializeClasses":function(){
var reo=OneWeb.Admin.RadEditorOverrides;
if(reo!=null){
for(var c in OneWeb.Analytics.trackingClasses)
reo.addStyleClass("A."+c);
reo.addClasses();}}};
OneWeb.Analytics.addTrackingClass(OneWeb.Analytics.TRACK_DOWNLOAD_CLASS,"/download",!OneWeb.Analytics.includeSubDirs);
OneWeb.Analytics.addTrackingClass(OneWeb.Analytics.TRACK_EXTERNAL_CLASS,"/external",false);
OneWeb.Analytics.Provider=function(account){
this.getAccount=function(){return account;}
this.setAccount=function(newAccount){account=newAccount;}}
OneWeb.Analytics.Provider.prototype={
"initialize":function(){},
"track":function(address){},
"trackEvent":function(){}}


