﻿
function SendGooglePageView(googlePageTracker) {
    try {
        if (googlePageTrackerCode != '') {
            var pageTracker = _gat._getTracker(googlePageTrackerCode);
            pageTracker._trackPageview(googlePageTracker);
        }
    } catch (err) { }
    //alert("Google Page Tracker:  " + googlePageTracker);
}

function SendGoogleGoal(googleGoal) {
    try {
            SendGooglePageView(googleGoal);
    } catch (err) { }
    //alert("Google Page Tracker:  " + googlePageTracker);
}

function OpenWindow(pageUrl) {
    if (endsWith(pageUrl, '.doc') || endsWith(pageUrl, '.docx')) {
        window.location = pageUrl;
    }
    else {
        window.open(pageUrl, "_blank");
    }
}

function endsWith(testString, endingString){
      if(endingString.length > testString.length) return false;
      return testString.indexOf(endingString)==(testString.length-endingString.length);
}


// External Link Link Out
function LinkOut(userId, panelId, audienceId, categoryId, externalLinkId, pageUrl, googlePageTracker) {
    TrackingInfo.initExternalLink(panelId, audienceId, categoryId, externalLinkId, userId, pageUrl, googlePageTracker);
    TrackingInfo.invokeExternalLink();
}
function LinkOutA(panelId, audienceId, categoryId, externalLinkId, pageUrl, googlePageTracker) {
    LinkOut(0, panelId, audienceId, categoryId, externalLinkId, pageUrl, googlePageTracker);
}

// Tab Item Link Out
function TabItemLinkOut(userId, tabItemId, pageUrl, googlePageTracker) {
    TrackingInfo.initTabItem(tabItemId, userId, pageUrl, googlePageTracker);
    TrackingInfo.invokeTabItem();
}
function TabItemLinkOutA(tabItemId, pageUrl, googlePageTracker) {
    TabItemLinkOut(0, tabItemId, pageUrl, googlePageTracker);
}

// Ticker Item Link Out
function TickerItemLinkOut(userId, tabItemId, pageUrl, googlePageTracker) {
    TrackingInfo.initTabItem(tabItemId, userId, pageUrl, googlePageTracker);
    TrackingInfo.invokeTickerItem();
}
function TickerItemLinkOutA(tabItemId, pageUrl, googlePageTracker) {
    TickerItemLinkOut(0, tabItemId, pageUrl, googlePageTracker);
}

// Search Item Link Out
function SearchItemLinkOut(userId, itemId, itemType, pageUrl, googlePageTracker) {
    TrackingInfo.initSearchItem(userId, itemId, itemType, pageUrl, googlePageTracker);
    TrackingInfo.invokeSearchItem();
}
function SearchItemLinkOutA(itemId, itemType, pageUrl, googlePageTracker) {
    SearchItemLinkOut(0, itemId, itemType, pageUrl, googlePageTracker);
}


// External Link Viewed
function LinkViewed(userId, panelId, audienceIds, categoryId) {
    TrackingInfo.initExternalLinkViewing(panelId, audienceIds, categoryId, userId);
    TrackingInfo.invokeExternalLinkViewing();
}
function LinkViewedA(panelId, audienceIds, categoryId) {
    LinkViewed(0, panelId, audienceIds, categoryId);
}

// Tab Item Viewed
function TabSectionViewed(userId, tabSectionId) {
    TrackingInfo.initTabViewing(tabSectionId, userId);
    TrackingInfo.invokeTabViewing();
}
function TabSectionViewedA(tabSectionId) {
    TabSectionViewed(0, tabSectionId);
}

// Panel Viewed
var c_PanelViewEntrance = 0;
var c_PanelViewNavigation = 1;
var c_PanelViewArrow = 2;

function PanelViewedFromWhere(userId, panelId, fromWhere) {
    TrackingInfo.initPanelViewed(userId, panelId, fromWhere);
    TrackingInfo.invokePanelViewed();
}
function PanelViewedFromWhereA(panelId, fromWhere) {
    PanelViewedFromWhere(0, panelId, fromWhere);
}
function PanelViewedEntrance(userId, panelId) {
    PanelViewedFromWhere(userId, panelId, c_PanelViewEntrance);
}
function PanelViewedEntranceA(panelId) {
    PanelViewedFromWhere(0, panelId, c_PanelViewEntrance);
}
function PanelViewedNavigation(userId, panelId) {
    PanelViewedFromWhere(userId, panelId, c_PanelViewNavigation);
}
function PanelViewedNavigationA(panelId) {
    PanelViewedFromWhere(0, panelId, c_PanelViewNavigation);
}
function PanelViewedArrow(userId, panelId) {
    PanelViewedFromWhere(userId, panelId, c_PanelViewArrow);
}
function PanelViewedArrowA(panelId) {
    PanelViewedFromWhere(0, panelId, c_PanelViewArrow);
}

function EntranceAudienceSelected(audienceIds) {
    TrackingInfo.initEntranceAudience(audienceIds);
    TrackingInfo.invokeEntranceAudience();
}



var TrackingInfo =
        {
            _PanelId: 0,
            _AudienceId: 0,
            _CategoryId: 0,
            _ExternalLinkId: 0,
            _UserId: 0,
            _GooglePageTracker: "",
            _PageUrl: "",
            _TabItemId: 0,
            _AudienceIds: "",
            _TabSectionId: 0,
            _SearchItemType: "",
            _ExtraInformation: "",
            initExternalLink: function(panelId, audienceId, categoryId, externalLinkId, userId, pageUrl, googlePageTracker) {
                TrackingInfo._PanelId = panelId;
                TrackingInfo._AudienceId = audienceId;
                TrackingInfo._CategoryId = categoryId;
                TrackingInfo._ExternalLinkId = externalLinkId;
                TrackingInfo._UserId = userId;
                TrackingInfo._PageUrl = pageUrl;
                TrackingInfo._GooglePageTracker = googlePageTracker;
            },
            invokeExternalLink: function() {
                Sys.Net.WebServiceProxy.invoke("/Services/Tracking/LinkOut.asmx", "ExternalLink", false,
               {
                   panelId: TrackingInfo._PanelId,
                   audienceId: TrackingInfo._AudienceId,
                   categoryId: TrackingInfo._CategoryId,
                   externalLinkId: TrackingInfo._ExternalLinkId,
                   userId: TrackingInfo._UserId
               },
                OnSuccess, OnFail);
                SendGooglePageView(TrackingInfo._GooglePageTracker);
                OpenWindow(TrackingInfo._PageUrl);
            },
            initTabItem: function(tabItemId, userId, pageUrl, googlePageTracker) {
                TrackingInfo._TabItemId = tabItemId;
                TrackingInfo._UserId = userId;
                TrackingInfo._PageUrl = pageUrl;
                TrackingInfo._GooglePageTracker = googlePageTracker;
            },
            invokeTabItem: function() {
                Sys.Net.WebServiceProxy.invoke("/Services/Tracking/LinkOut.asmx", "TabItem", false,
               {
                   tabItemId: TrackingInfo._TabItemId,
                   userId: TrackingInfo._UserId
               },
                OnSuccess, OnFail);
                SendGooglePageView(TrackingInfo._GooglePageTracker);
                OpenWindow(TrackingInfo._PageUrl);
            },
            initSearchItem: function(userId, itemId, itemType, pageUrl, googlePageTracker) {
                TrackingInfo._TabItemId = itemId;
                TrackingInfo._SearchItemType = itemType;
                TrackingInfo._UserId = userId;
                TrackingInfo._PageUrl = pageUrl;
                TrackingInfo._GooglePageTracker = googlePageTracker;
            },
            invokeSearchItem: function() {
                Sys.Net.WebServiceProxy.invoke("/Services/Tracking/LinkOut.asmx", "Search", false,
               {
                   itemId: TrackingInfo._TabItemId,
                   itemType: TrackingInfo._SearchItemType,
                   userId: TrackingInfo._UserId
               },
                OnSuccess, OnFail);
                SendGooglePageView(TrackingInfo._GooglePageTracker);
                OpenWindow(TrackingInfo._PageUrl);
            },
            invokeTickerItem: function() {
                Sys.Net.WebServiceProxy.invoke("/Services/Tracking/LinkOut.asmx", "TickerItem", false,
               {
                   tabItemId: TrackingInfo._TabItemId,
                   userId: TrackingInfo._UserId
               },
                OnSuccess, OnFail);
                SendGooglePageView(TrackingInfo._GooglePageTracker);
                OpenWindow(TrackingInfo._PageUrl);
            },
            initExternalLinkViewing: function(panelId, audienceIds, categoryId, userId) {
                TrackingInfo._PanelId = panelId;
                TrackingInfo._AudienceIds = audienceIds;
                TrackingInfo._CategoryId = categoryId;
                TrackingInfo._UserId = userId;
            },
            invokeExternalLinkViewing: function() {
                Sys.Net.WebServiceProxy.invoke("/Services/Tracking/ViewItem.asmx", "ExternalLink", false,
               {
                   panelId: TrackingInfo._PanelId,
                   audienceIds: TrackingInfo._AudienceIds,
                   categoryId: TrackingInfo._CategoryId,
                   userId: TrackingInfo._UserId
               },
                OnSuccess, OnFail);
            },
            initTabViewing: function(tabSectionId, userId) {
                TrackingInfo._TabSectionId = tabSectionId;
                TrackingInfo._UserId = userId;
            },
            invokeTabViewing: function() {
                Sys.Net.WebServiceProxy.invoke("/Services/Tracking/ViewItem.asmx", "TabItem", false,
               {
                   tabSectionId: TrackingInfo._TabSectionId,
                   userId: TrackingInfo._UserId
               },
                OnSuccess, OnFail);
            },
            initEntranceAudience: function(audienceIds) {
                TrackingInfo._AudienceId = audienceIds;
            },
            invokeEntranceAudience: function() {
                Sys.Net.WebServiceProxy.invoke("/Services/Tracking/ViewItem.asmx", "EntranceAudience", false,
               {
                   audienceIds: TrackingInfo._AudienceId
               },
                OnSuccess, OnFail);
            },
            initPanelViewed: function(userId, panelId, fromWhere) {
                TrackingInfo._PanelId = panelId;
                TrackingInfo._UserId = userId;
                TrackingInfo._ExtraInformation = fromWhere;
            },
            invokePanelViewed: function() {
                Sys.Net.WebServiceProxy.invoke("/Services/Tracking/ViewItem.asmx", "Panel", false,
               {
                   panelId: TrackingInfo._PanelId,
                   userId: TrackingInfo._UserId,
                   fromWhere: TrackingInfo._ExtraInformation
               },
                OnSuccess, OnFail);
            }
        }







// This is the callback function that processes the Web Service return value in JSON format.
function OnSucceeded(result) {
    //var myresult = document.getElementById("Text1");
    //myresult.value = result;
    //alert("succeeded");
}

// XML Formats
function OnSuccess(result) {
    //var myresult = document.getElementById("Text1");
    //myresult.value = "Success: " + result.documentElement.text;
   //alert("success");
}

function OnFail(error) {
    //var myresult = document.getElementById("Text1");
    //myresult.value = "Error: " + error.get_message();
    //alert(error.get_message());
}

