//Analytics event configurations //place right after Omniture.Gerry configuration //Annie is executed in place for now, the use of jQuery.live method doesn't require sequencing with the dom $A = {}; //Annie, analytics manager //SliceList property to track slice usage on page $A.SliceList = {}; $A.Init = function() { $A.Annie = true; //Default Annie state is on var p = window.location.toString(); if( p.indexOf('$A.Debug=true') >= 0) { $A.Debug = true; } if (p.indexOf('$A.Annie=false')>=0 || $O.Preview)//Allow Annie disable, disable for preview { $A.Annie = false; } if($A.Annie) { $A.Events.Init(); } }; $A.DebugHandler = function(d) { alert(d); }; $A.Events = {}; $A.Events.Init = function() { this.PageReady(); this.Header(); this.Footer(); this.TextSlice(); this.StoryNavFixed(); this.StoryNavFloat(); this.Slice(); this.SlideShowSlice(); }; //Executes after page is rendered and ready, this probably executes before the quilt code $A.Events.PageReady = function() { $(function(){ $O.G.PageReady(); }); }; $A.Events.Header = function() { //Header breadcrumbs click event handler $('div#breadcrumbs ul.breadcrumbs a, div#breadcrumbs div#msnbc-logo img').live('click',function(e){ var pe = {}; pe.a = 'Header'; pe.b = 'breadcrumb'; pe.last = ''; if (e && e.target) { pe.last = $O.G.GetText(e.target); } $O.G.PageExit(pe); }); //Header menu event handler $('div#breadcrumbs ul#breadcrumb_links a').live('click',function(e){ var pe = {}; pe.a = 'Header'; pe.b = 'nmDefault'; pe.last = ''; if (e && e.target) { if(e.target.parentNode.parentNode.id === 'breadcrumb_links' ) { pe.b = 'nm0'; } else { pe.b = $(e.target).attr('nm'); } pe.last = $O.G.GetText(e.target); } $O.G.PageExit(pe); }); //Header search terms click event handler $('ul#search_links a').live('click',function(e){ var pe = {}; pe.a = 'Header'; pe.b = 'SearchTerms'; pe.last = ''; if (e && e.target) { pe.last = $O.G.GetText(e.target); } $O.G.PageExit(pe); }); //Header Searchbox keypress handler $('div#header div.search input#q').live('keypress',function(e){ if (e && e.keyCode && e.keyCode === 13) { var pe = {}; pe.a = 'Header'; pe.b = 'SearchBox'; pe.last = ''; var t = $('#header .search input#q').get(0); if (t && t.value) { pe.last = t.value; } $O.G.PageExit(pe); } }); //Header search button handler $('div#header div.search input.sw_qbtn').live('click',function(e){ var pe = {}; pe.a = 'Header'; pe.b = 'SearchBox'; pe.last = ''; var t = $('#header .search input#q').get(0); if (t && t.value) { pe.last = t.value; } $O.G.PageExit(pe); }); }; $A.Events.Footer = function() { //Footer menu click event handler $('.newsmenu .newsmenu3 a').live('click',function(e){ var pe = {}; pe.a = 'Footer'; pe.b = 'BottomNav'; pe.last = ''; if (e && e.target) { pe.last = $O.G.GetText(e.target); } $O.G.PageExit(pe); }); //Business Cell handler $('div#default-footer #cell1 a').live('click',function(e){ var pe = {}; pe.a = 'Footer'; pe.b = 'Business'; pe.last = ''; if (e && e.target) { pe.last = $O.G.GetText(e.target); } $O.G.PageExit(pe); }); //Top Stories Cell handler $('div#default-footer #cell2 a').live('click',function(e){ var pe = {}; pe.a = 'Footer'; pe.b = 'Top Stories'; pe.last = ''; if (e && e.target) { pe.last = $O.G.GetText(e.target); } $O.G.PageExit(pe); }); }; $A.Events.StoryNavFixed = function() { //next story click event handler $('div#next-story a').live('click',function(e){ var pe = {}; pe.a = 'topnav'; pe.b = 'NextStoryV2'; pe.last = ''; if (e && e.target) { pe.last = $O.G.GetText(e.target); } $O.G.PageExit(pe); }); //tease handler $('div#story-nav div.nav-item').live('click',function(e){ var label = $O.G.GetText($(this).find('div.label').get(0)); var title = $O.G.GetText($(this).find('div.title').get(0)); var p27 = {}; p27.a = 'topnav'; p27.b = label; p27.last = title; var p35 = {}; p35.a = 'topnav'; p35.b = label p35.last = title; $O.G.PageView(p27,p35); }); }; $A.Events.StoryNavFloat = function() { //tease handler $('div#floating-nav div.nav-item').live('click',function(e){ var label = $O.G.GetText($(this).find('div.label').get(0)); var title = $O.G.GetText($(this).find('div.title').get(0)); var p27 = {}; p27.a = 'floatnav'; p27.b = label; p27.last = title; var p35 = {}; p35.a = 'floatnav'; p35.b = label p35.last = title; $O.G.PageView(p27,p35); }); //move handler $('div#floating-nav span.move').live('click',function(e){ var top = $(this).parents('#floating-nav').hasClass('top'); var ev = {}; ev.a = 'floatnav'; ev.b = 'Move'; ev.last = (top ? 'Top' : 'Bottom'); $O.G.NonPageView(ev); }); //show/hide handler $('div#floating-nav span.hide').live('click',function(e){ var hide = $(this).parents('#floating-nav').hasClass('hide'); var ev = {}; ev.a = 'floatnav'; ev.last = (hide ? 'Hide' : 'Show'); $O.G.NonPageView(ev); }); }; $A.Events.Slice = function() { //slice expand/collapse tracking $('#story div.module-header h2 span.exp, #story div.module-header h2 span.label').live('click',function(e){ var ev = {}; ev.a = 'slc'; ev.b = ''; ev.c = 'View'; ev.last = ''; if (e && e.target) { var sm = $(e.target).parents('.stacked-module').get(0); var ex = $(sm).hasClass('expanded'); ev.b = $A.Utils.GetSliceType(sm); ev.last = (ex ? 'Expand' : 'Collapse'); } if (ex) { $A.Utils.NonPageViewSliceUseHandler(ev,sm,null); } else { $O.G.NonPageView(ev); } }); //share handler $('div.share-feeds a, div.share-options a, span.share-fly span.svc a').live('click',function(e){ var ev = {}; ev.a = 'slc'; ev.b = 'Share'; ev.last = ''; if (e && e.target) { ev.last = $O.G.GetText(e.target); } $O.G.NonPageView(ev); }); }; $A.Events.TextSlice = function() { //Text font tracking $('div#default-story-text span.text-tools span').live('click',function(e){ var ev = {}; ev.a = 'slc'; ev.b = ''; ev.c = ''; ev.last = ''; if(e && e.target) { var $sm = $(e.target).parents('.stacked-module'); ev.b = $A.Utils.GetSliceType($sm.get(0)); var da = $sm.find('div#article').get(0); var gt = $O.G.GetText(e.target).toLowerCase(); if (gt === '+' || gt === '-') { ev.c = 'FontSize'; ev.last = $(da).attr('style'); } else if (gt === 'font:') { ev.c = 'FontType'; var cl = $(e.target).attr('class'); ev.last = (cl?cl:'default'); } } $O.G.NonPageView(ev); }); //Text print tracking $('div#default-story-text span.print a').live('click',function(e){ var ev = {}; ev.a = 'slc'; ev.b = ''; ev.last = 'Print'; if(e && e.target) { var $sm = $(e.target).parents('.stacked-module'); ev.b = $A.Utils.GetSliceType($sm.get(0)); } $O.G.NonPageView(ev); }); //Text slice related stories click event handler $('div#related div a, div#related div img').live('click',function(e){ var pe = {}; pe.a = 'Text'; pe.last = ''; if (e && e.target) { if (e.target.nodeName.toLowerCase() === 'a' || e.target.parentNode.nodeName.toLowerCase() === 'a') { pe.last = $O.G.GetText(e.target); } } $O.G.PageExit(pe); }); //Text slice byline profile handler $('div#byline span.profile a').live('click',function(e){ var pe = {}; pe.a = 'slc'; pe.b = 'Text'; pe.c = 'Byline'; pe.last = 'Profile'; $O.G.PageExit(pe); }); //Text slice byline email handler $('div#byline span.email a').live('click',function(e){ var pe = {}; pe.a = 'slc'; pe.b = 'Text'; pe.c = 'Byline'; pe.last = 'Email'; $O.G.NonPageView(pe); }); //Text slice pagination handler $('div#default-story-text div#article h3.br').live('click',function(e){ var open = false; if (e && e.target) { open = $(e.target).hasClass('a-tracked'); } if (!open) { if(!$A.Page) { $A.Page = 1; } var p27 = {}; p27.a = 'slc'; p27.b = 'Text'; p27.last = 'NextPage'; var p35 = {}; p35.last = 'p'+ ($A.Page + 1); $A.Page ++; //$O.G.PageView(p27,p35); var sm = $(e.target).parents('.stacked-module').get(0); $A.Utils.PageViewSliceUseHandler(p27,p35,sm); $(e.target).addClass('a-tracked'); } }); }; $A.Events.SlideShowSlice = function() { //Slide Show view large handler $('div#story div.slideshow div.controls span.fullscreen').live('click',function(e){ var pe = {}; pe.a = 'slc'; pe.b = 'Photo'; pe.c = 'View'; pe.last = 'Large'; $O.G.PageExit(pe); $A.Utils.SliceUseHandler(e); }); //Slide Show hitstate next/previous handler $('div#story div.slideshow div.slideshow-photo span.hitstate').live('click',function(e){ if (e && e.target) { var isPrev = $(e.target).hasClass('prev'); var p27 = {}; p27.a = 'slc'; p27.b = 'Photo'; p27.c = 'View'; p27.d = 'OverImage'; p27.last = (isPrev?'Prev':'Next'); var p35 = {}; p35.a = 'slc'; p35.b = 'Photo'; p35.c = 'View'; var sm = $(e.target).parents('.stacked-module').get(0); var sn = $A.Utils.GetSlideShowSlideNumber(sm); p35.last = (sn?'Slide'+sn:''); //$O.G.PageView(p27,p35); $A.Utils.PageViewSliceUseHandler(p27,p35,sm); } }); //Slide Show control section next/previous handler $('div#story div.slideshow div.controls span.prev,#story div.slideshow div.controls span.next').live('click',function(e){ if (e && e.target && !$(e.target).hasClass('disabled')) { var p27 = {}; p27.a = 'slc'; p27.b = 'Photo'; p27.c = 'View'; p27.d = 'Controls'; p27.last = $O.G.GetText(e.target); var p35 = {}; p35.a = 'slc'; p35.b = 'Photo'; p35.c = 'View'; var sm = $(e.target).parents('.stacked-module').get(0); p35.last = $A.Utils.GetSlideShowSlideNumber(sm); //$O.G.PageView(p27,p35); $A.Utils.PageViewSliceUseHandler(p27,p35,sm); } }); //Slide Show progress button handler $('div#story div.slideshow div.related ul li').live('click',function(e){ if (e && e.target && !$(e.target).hasClass('disabled')) { var sm = $(e.target).parents('.stacked-module').get(0); var p27 = {}; p27.a = 'slc'; p27.b = 'Photo'; p27.c = 'View'; p27.last = 'ProgressBar'; var p35 = {}; p35.a = 'slc'; p35.b = 'Photo'; p35.c = 'View'; p35.last = $A.Utils.GetSlideShowSlideNumber(sm); //$O.G.PageView(p27,p35); $A.Utils.PageViewSliceUseHandler(p27,p35,sm); } }); }; $A.Events.SliceUse = function() { //any click inside these slices results in slice use tracking call $('div.t-TestVideoPlayer div.module-content').live('mousedown',function(e){ $A.Utils.SliceUseHandler(e); }); $('div.t-BasicInteractive div.module-content').live('mousedown',function(e){ $A.Utils.SliceUseHandler(e); }); $('div.t-Map div.module-content').live('mousedown',function(e){ $A.Utils.SliceUseHandler(e); }); //sets the hover business logic for interactives, must hover 3 seconds to activate tracking //shorter duration is just mouse noise $('div.t-BasicInteractive div.module-content').live('mouseover',function(e){ var t = window.setTimeout(function(){$A.Utils.SliceUseHandler(e);},3000); //clear the timeout if mouse moves out before tracking call $(this).one('mouseout',function(e){ window.clearTimeout(t); }); }); }; //Utilities bucket $A.Utils = {}; //slice use handler, check if the slice is tracked, if not track slice use $A.Utils.SliceUseHandler = function(e) { if(e && e.target) { var sid = null; var $sm = $(e.target).parents('.stacked-module'); sid = $sm.attr('id'); if(sid && !$A.SliceList[sid]) { var ev7 = {}; ev7.last = $A.Utils.GetSliceType($sm.get(0)); $O.G.SliceUse(ev7); $A.SliceList[sid]= true; } } }; $A.Utils.PageViewSliceUseHandler = function (p27,p35,sm) { var sid = null; if (sm) { sid = $(sm).attr('id'); } if(sid && !$A.SliceList[sid]) { var ev7 = {}; ev7.last = $A.Utils.GetSliceType(sm); $O.G.PageView(p27,p35,ev7); $A.SliceList[sid]= true; } else { $O.G.PageView(p27,p35); } }; $A.Utils.NonPageViewSliceUseHandler = function (ev,sm,ob) { var sid = null; if (sm) { sid = $(sm).attr('id'); } else if(ob) { sid = $A.Utils.GetSliceId(ob); sm = ob; } if(sid && !$A.SliceList[sid]) { var ev7 = {}; ev7.last = $A.Utils.GetSliceType(sm); $O.G.NonPageView(ev,ev7); $A.SliceList[sid]= true; } else { $O.G.NonPageView(ev); } }; //slice show/hide handler $A.Utils.SliceShowHideHelper = function(ob) { var ev = {}; ev.a = 'slc'; ev.b = ''; ev.c = 'Always'; ev.last = ''; if (ob) { ev.b = $A.Utils.GetSliceType(ob); var hr = $(ob).hasClass('slice-hidden'); ev.last = (hr?'Show':'Hide'); } if (hr) { $A.Utils.NonPageViewSliceUseHandler(ev,null,ob); } else { $O.G.NonPageView(ev); } }; $A.Utils.SlideShowSliceHelper = function(ob) { if (ob && ob.markup && ob.markup.context) { var sm = $(ob.markup.context).get(0); var p27 = {}; p27.a = 'slc'; p27.b = 'Photo'; p27.c = 'View'; p27.last = 'AutoPlay'; var p35 = {}; p35.a = 'slc'; p35.b = 'Photo'; p35.c = 'View'; p35.last = $A.Utils.GetSlideShowSlideNumber(sm); $O.G.PageView(p27,p35); } }; $A.Utils.GetSlideShowSlideNumber = function(sm) { var str = ''; var count = $(sm).find('div.module-content div.imgcount span.count').get(0); if (count) { str = $O.G.GetText(count); } return 'Slide-' + str; }; $A.Utils.GetSliceType = function(slice) { var it = ''; if (slice) { var ca = $(slice).attr('class').split(' '); $.each(ca,function(name,value) { if (value.indexOf('t-') >= 0) { it = value.replace(/t-/,''); } }); } return it; }; $A.Utils.GetSliceId = function(el) { var it = ''; if (el) { var ca = $(el).attr('class').split(' '); $.each(ca,function(name,value) { if (value.indexOf('tid-') >= 0) { it = value.replace(/tid-/,''); } }); } return it; }; //Analysis page namespace $A.P = {}; //stuff to process after page post render event $A.P.PostRender = function () { //check if annie is enabled, otherwise return if(!$A.Annie) { return; } //add omniture tracking id for slice hide control after page is ready $(function(){ $('div.stacked-module').each(function(){ var sid = $(this).attr('id').toString(); $(this).find('span.rusure input.slice-hidden').each(function(){ $(this).addClass('tid-' + sid); }); }); //configure sliceuse event handlers $A.Events.SliceUse(); }); }; //General public track handler $A.Track = function(ob) { if($A.Annie && ob) { if (ob.SHORT_NAME === 'ss') { this.Utils.SlideShowSliceHelper(ob); } else if(ob.type === 'checkbox' && ob.value ==='hide') { this.Utils.SliceShowHideHelper(ob); } } }; $A.Init();