
OneWeb.Analytics={
"TRACK_DOWNLOAD_CLASS":"trackDownload",
"TRACK_EXTERNAL_CLASS":"trackExternal",
"TRACK_MAILTO_CLASS":"trackMailTo",
"TRACK_DOWNLOAD_EVENTARGS":"OneWeb,Download,{address}",
"TRACK_EXTERNAL_EVENTARGS":"OneWeb,ExternalLink,{address}",
"TRACK_FORM_SUBMIT_EVENTARGS":"OneWeb,Submission,{address}",
"TRACK_MAILTO_EVENTARGS":"OneWeb,MailTo,{address}",
"settings":{},
"includeSubDirs":false,
"providers":[],
"trackingClasses":{},
"OneWebActionMethod":{
"PageView":0,
"Event":1},
"formatLink":function(address,fileOnly){
var host="",query="",user="",i=0;
if(address==null||address=="")return "/";
if(address.indexOf("://")>0)
address=address.substring(address.indexOf("://")+3);
else if(address.indexOf(":")>0)
address=address.substring(address.indexOf(":")+1);
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((i=host.indexOf("@"))>0){
user="/"+host.substring(0,i);
host=host.substring(i+1,host.length);}
if(document.location.hostname==host)host="";
host=host.replace(/\./g,"_");}
if(address.charAt(0)!="/")address="/"+address;
if(fileOnly)
address=user+address.substring(address.lastIndexOf("/",address.length));
if(host.length>0)
return "/"+host+user+address+query;
else
return user+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(useTrackingClasses){
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(useTrackingClasses&&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(useTrackingClasses&&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,eventArgs){
if(className!=""&&!OneWeb.Analytics.trackingClasses[className]&&trackPrefix!=""){
OneWeb.Analytics.trackingClasses[className]={prefix:trackPrefix,fileOnly:fileOnly,eventArgs:eventArgs}}},
"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(useTrackingClasses){
var OA=OneWeb.Analytics,OU=OneWeb.Util;
var els=document.getElementsByTagName("*");
var el=null;
for(var i=0,l=els.length;i<l;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,jl=evs.length;j<jl;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(","));
OU.addEvent(el,args[0],OA.trackEventOnEvent,true);}}else if(useTrackingClasses&&(el.tagName=="A"||el.tagName=="AREA")){
if(el.getAttribute("track")===null){
if(el.href!=null&&el.href!=""){
for(var c in OA.trackingClasses){
if(OU.hasClass(el,c)){
var args=OA.trackingClasses[c].eventArgs.replace("{address}",OA.formatLink(el.href,OA.trackingClasses[c].fileOnly));
el.setAttribute("trackEvent_click",args);
OU.addEvent(el,"click",OA.trackEventOnEvent,true);
break;}}}}}}},
"addProvider":function(provider){
if(provider instanceof OneWeb.Analytics.Provider)
OneWeb.Analytics.providers.push(provider);},
"initialize":function(){
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();
var options=OneWeb.Analytics.settings;
var eventTrackingEnabled=(options!=null&&typeof(options.eventTracking)=="boolean"&&options.eventTracking===true);
var useEventTrackingForOneWeb=(eventTrackingEnabled&&typeof(options.oneWebActionMethod)=="number"&&options.oneWebActionMethod===OA.OneWebActionMethod.Event);
OA.setTrackingLinks(!useEventTrackingForOneWeb);
if(eventTrackingEnabled)
OA.setTrackingEvents(useEventTrackingForOneWeb);}},
"initializeClasses":function(){
var ss=null;
if(document.createStyleSheet){
ss=document.createStyleSheet();}else if(document.styleSheets){
var st=document.createElement("style");
st.setAttribute("type","text/css");
document.getElementsByTagName("head")[0].appendChild(st);
if(!window.createPopup)
st.appendChild(document.createTextNode(''));
ss=document.styleSheets[document.styleSheets.length-1];}
if(ss!=null){
var appendRule=(ss.insertRule)?function(selector,rules){ss.insertRule(selector+"{"+rules+"}",ss.cssRules.length);}:(ss.addRule)?function(selector,rules){ss.addRule(selector,rules,-1);}:
null;
if(appendRule){
for(var c in OneWeb.Analytics.trackingClasses){
appendRule("A."+c,"display:inline;");
appendRule("AREA."+c,"display:inline;");}}}}};
OneWeb.Analytics.addTrackingClass(OneWeb.Analytics.TRACK_DOWNLOAD_CLASS,"/download",!OneWeb.Analytics.includeSubDirs,OneWeb.Analytics.TRACK_DOWNLOAD_EVENTARGS);
OneWeb.Analytics.addTrackingClass(OneWeb.Analytics.TRACK_EXTERNAL_CLASS,"/external",false,OneWeb.Analytics.TRACK_EXTERNAL_EVENTARGS);
OneWeb.Analytics.addTrackingClass(OneWeb.Analytics.TRACK_MAILTO_CLASS,"/mailto",false,OneWeb.Analytics.TRACK_MAILTO_EVENTARGS);
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(){}}

