﻿function trackPage(tracker, state) {

    var data = isNull(window.trackingData, {});

    // Special case for tracking pages opened in AdminConsole hybrid
    if (window.name == "hybrid") {
        if (trackingData.pageName.substr(0, 7) == "AdminV2") {
            trackingData.pageName = "V3" + trackingData.pageName.substr(7);
        }

        tracker.setSourceFromHybrid(window.parent.hybridChrome.getOmnitureData());

        trackingData.channel = "V3";
    }

    // Standard tracking (channel, pageName, userType, siteType) - for ALL pages
    tracker.setChannel(isNull(trackingData.channel, "Unknown"));
    tracker.setPageName(isNull(trackingData.pageName, "Unknown"));

    tracker.setUserType(isNull(trackingData.userType, "N/A"));
    tracker.setSiteType(isNull(trackingData.siteType, "N/A"));
    tracker.setReferredPartner(isNull(trackingData.referredPartner, "N/A"));
	tracker.setCountry(isNull(trackingData.country, "Unknown"));

    // Custom tracking
    var path = window.location.pathname.toLowerCase().replace(/\/$/, "");
	if (path == "/default.aspx") {
		path = getQSParameter("ID").toLowerCase();
	}
	
    var customTracker = null;

    switch (path) {
	
		// Partner Portal
        case "/partnerportal/upgradeplan.aspx":
            customTracker = new partnerUpgradeTracker();
            break;
        case "/partnerportal/utilities/partnerupgradeconfirmation.aspx":
            customTracker = new partnerUpgradeSuccessTracker();
            break;
        case "/partnerportal/forms/siteupgrade.aspx":
            customTracker = new siteUpgradeTracker();
            break;
        case "/partnerportal/freetrialsignup.aspx":
            customTracker = new freeTrialSignupTracker();
            break;
        case "/partnerportal/createsite.aspx":
            customTracker = new createSiteTracker();
            break;
        case "/signup/obb.aspx":
            customTracker = new rebrandedCreateSiteTracker();
            break;
        case "/partnerportal/partnersignup.aspx":
            customTracker = new wsiPartnerSignupTracker();
            break;
        case "/partnerportal/index.aspx":
            customTracker = new ppLoginTracker();
            break;
		case "/partnerportal/changesiteplan.aspx":
			customTracker = new changeSitePlanTracker("PP");
			break;
		case "/partnerportal/changebillingoffer.aspx":
			customTracker = new campaign8Tracker();
			break;

		// Admin
        case "/admin/dashboardv4.aspx":
            customTracker = new adminLoginTracker();
            break;
        case "/admin/webpages_detail.aspx":
            customTracker = new editPageTracker();
            break;
        case "/customize/affiliateprogramtemplates.aspx":
        case "/customize/blogtemplates.aspx":
        case "/customize/cataloguetemplates.aspx":
        case "/customize/contenttemplates.aspx":
        case "/customize/customcontenttemplate.aspx":
        case "/customize/customerrors.aspx":
        case "/customize/favoritetemplates.aspx":
        case "/customize/forumtemplates.aspx":
        case "/customize/outboundemails.aspx":
        case "/customize/ratingtemplates.aspx":
        case "/customize/shippingtemplates.aspx":
        case "/customize/sitesearchtemplates.aspx":
            customTracker = new editLayoutTracker();
            break;
        case "/utilities/supportcentral.aspx":
            customTracker = new supportTracker();
            break;
        case "/utilities/modulemanager.aspx":
            customTracker = new moduleManagerTracker();
            break;
		case "/admin/changesiteplan.aspx":
			customTracker = new changeSitePlanTracker("Admin");
			break;
        case "/admin/_holder.aspx":
            var userControlId = getQSParameter("OID");
            switch (userControlId) {
                case "410":
                    customTracker = new siteCancellationTracker();
                    break;
            }
			break;
			
		// BC.com
		case "/support/home":
		case "/search/index.html":
		case "/partnerportal/support.aspx":
		case "/utilities/support.aspx":
			customTracker = new supportHomeTracker();
			break;
		case "/support/community-forums-search-results":
		case "/search-results":
			customTracker = new supportForumsTracker();
			break;
		case "/forumretrieve.aspx":
			customTracker = new forumTopicsTracker();
			break;
    }

    if (customTracker != null) {
        return customTracker.track(tracker, isNull(window.trackingData, {}), state);
    } else {
        return true;
    }
}

// ==============================================
// ====            PARTNER PORTAL            ====
// ==============================================

function partnerUpgradeTracker() {

    var PAGE_STATES = { unknown: 0, loaded: 1, planSelected: 2, failure: 3 };

    var getPageState = function () {
        if (jQuery("div[id$=panelErrorMsg]").hasClass("syserror")) {
            return PAGE_STATES.failure;
        }
        if (jQuery("table[id$=radioPlan] input:radio:checked").length > 0) {
            return PAGE_STATES.planSelected;
        }
        return PAGE_STATES.loaded;
    }

    this.track = function (tracker, data, state) {
        var pageState = getPageState();

        switch (pageState) {

            case PAGE_STATES.loaded:
                tracker.setPageName("PP > Partner Upgrade");
                return true;

            case PAGE_STATES.planSelected:
                tracker.setPageName("PP > Partner Upgrade > " + isNull(data.partnerPlan, "Unknown") + " Plan");
                tracker.setProductEvent(isNull(data.partnerPlan, "Unknown") + " partner plan", null, productEvents.view, productEvents.addToCart);
                return true;

            case PAGE_STATES.failure:
                tracker.setPageName("PP > Partner Upgrade > Partner Upgrade Fail");
                tracker.setPartnerPlan(isNull(data.partnerPlan, "Unknown"));
                tracker.setConversionError("[Partner upgrade]: " + isNull(data.error, "Unknown error"));
                tracker.setCustomEvent(customEvents.partnerUpgradeFailure);
                return true;

            default:
                return false;
        }
    }
}

function partnerUpgradeSuccessTracker() {

    this.track = function (tracker, data, state) {
        tracker.setPageName("PP > Partner Upgrade > Partner Upgrade Success");
        tracker.setCurrencyCode(isNull(data.currencyCode), "USD");
        tracker.setPurchaseIdentifier(isNull(data.orderId, "Unknown"));
        tracker.setPartnerPlan(isNull(data.partnerPlan, "Unknown"));
        tracker.setPartnerDiscountCode(isNull(data.partnerDiscountCode, "None"));

        tracker.setProductEvent(
            isNull(data.partnerPlan, "Unknown") + " partner plan",
            isNull(data.price, null),
            productEvents.purchase);

        // Track conversion in test&target
        mboxDefine("conversionMbox", "Paid Partnership Purchased");
        mboxUpdate("Paid Partnership Purchased");

        return true;
    }
}

function siteUpgradeTracker() {

    var PAGE_STATES = { unknown: 0, loaded: 1, planSelected: 2, billingMethodSelected: 3, success: 4, failed: 5 };

    var getPageState = function (data) {
        if (data.error != null) {
            return PAGE_STATES.failed;
        }
        if (jQuery("div[id$=panelErrorMsg]").hasClass("ok")) {
            return PAGE_STATES.success;
        }
        if (jQuery("div[id$=panelErrorMsg]").hasClass("error") ||
            jQuery("span[id$=ltrlPromoCodeValidateMsg]").text().search("ERROR") >= 0) {
            return PAGE_STATES.failed;
        }
        if (jQuery("table[id$=radioBillingMethod] input:radio:checked").length > 0) {
            return PAGE_STATES.billingMethodSelected;
        }
        if (jQuery("table[id$=radioPlans] input:radio:checked").length > 0) {
            return PAGE_STATES.planSelected;
        }
        return PAGE_STATES.loaded;
    }

    this.track = function (tracker, data, state) {
        var pageState = getPageState(data);

        switch (pageState) {

            case PAGE_STATES.loaded:
                tracker.setPageName('PP > Clients > Site > Upgrade');
                return true;

            case PAGE_STATES.planSelected:
                tracker.setPageName('PP > Clients > Site > Upgrade Plan Selected');
                tracker.setPartnerPlan(isNull(data.partnerPlan, "Unknown"));
                tracker.setProductEvent(getSitePlanProductName(data.sitePlan, data.billingFrequency), null, productEvents.view, productEvents.addToCart);
                return true;

            case PAGE_STATES.billingMethodSelected:
                tracker.setPageName('PP > Clients > Site > Upgrade Billing Selected');
                tracker.setPartnerPlan(isNull(data.partnerPlan, "Unknown"));
                tracker.setSitePlan(isNull(data.sitePlan, "Unknown"));
                tracker.setBillingMethod(isNull(data.billingMethod, "Unknown"));               
                tracker.setProductEvent(getSitePlanProductName(data.sitePlan, data.billingFrequency), null, productEvents.checkout);
                return true;

            case PAGE_STATES.success:
                tracker.setPageName('PP > Clients > Site > Upgrade Success');
                tracker.setPartnerPlan(isNull(data.partnerPlan, "Unknown"));
                tracker.setSitePlan(isNull(data.sitePlan, "Unknown"));
                tracker.setBillingMethod(isNull(data.billingMethod, "Unknown"));
                tracker.setPromoCode(isNull(data.promoCode, "None"));
                tracker.setCurrencyCode(isNull(data.currencyCode, "USD"));
                tracker.setProductEvent(getSitePlanProductName(data.sitePlan, data.billingFrequency), isNull(data.price, null), productEvents.purchase);
                tracker.setPurchaseIdentifier(data.orderId);

                // Track conversion in test&target
                mboxDefine("conversionMbox", "Site Purchased");
                mboxUpdate("Site Purchased");
                return true;

            case PAGE_STATES.failed:
                tracker.setPageName('PP > Clients > Site > Upgrade Failed');
                tracker.setPartnerPlan(isNull(data.partnerPlan, "Unknown"));
                tracker.setSitePlan(isNull(data.sitePlan, "Unknown"));
                tracker.setBillingMethod(isNull(data.billingMethod, "Unknown"));
                tracker.setConversionError("[Site upgrade]: " + isNull(data.error, "Unknown error"));
                tracker.setCustomEvent(customEvents.siteUpgradeFailure);
                return true;

            default:
                return false;
        }
    }
}

function freeTrialSignupTracker() {

    var PAGE_STATES = { splash: 0, siteTemplates: 1, siteDetails: 2, success: 3, failure: 4, hostnameNotPropagated: 5 }

    var getPageState = function (wizardStep, data) {
        if (data.error != null) {
            // If we have an error we always track the 'failure' page state
            return PAGE_STATES.failure;
        }

        switch (wizardStep) {
            case "splashScreen":
                return PAGE_STATES.splash;
            case "siteTemplates":
                return PAGE_STATES.siteTemplates;
            case "siteDetails":
                return PAGE_STATES.siteDetails;
            case "success":
                return PAGE_STATES.success;
			case "hostnameNotPropagated":
				return PAGE_STATES.hostnameNotPropagated;
        }

        return -1;
    }

    this.track = function (tracker, data, state) {
        if (state == null) {
            // The first time the page is loaded the trackPage method is called but without a wizard step; we don't want to track anything at this point
            return false;
        }

        var pageState = getPageState(state, data);
        var result = false;

        switch (pageState) {

            case PAGE_STATES.splash:
                tracker.setPageName("Business Catalyst > Signup > Splash");
                if (window.alreadyTrackedSignupInitiation == null) {
                    // Check to make sure we don't track the signup initiation multiple times when the user presses the back button
                    tracker.setCustomEvent(customEvents.partnerSignupInitiation);
                    window.alreadyTrackedSignupInitiation = true;
                }
                result = true;
                break;

            case PAGE_STATES.siteTemplates:
                tracker.setPageName("Business Catalyst > Signup > Site templates");
                result = true;
                break;

            case PAGE_STATES.siteDetails:
                tracker.setPageName("Business Catalyst > Signup > Site details");
                result = true;
                break;

            case PAGE_STATES.success:
                tracker.setPageName("Business Catalyst > Signup > Success");
                result = true;
                break;

            case PAGE_STATES.failure:
                tracker.setPageName("Business Catalyst > Signup > Error");
                tracker.setCountry(isNull(data.country, "Unknown"));
                tracker.setConversionError("[Signup]: " + isNull(data.error), "Unknown error");
                tracker.setCustomEvent(customEvents.partnerSignupFailure);
                result = true;
                break;
				
			case PAGE_STATES.hostnameNotPropagated:
                tracker.setPageName("Business Catalyst > Signup > Hostname Not Propagated ");
                result = true;
                break;
        }

        // Clear the tracking data so that it does not interfere with tracking of subsequent wizard steps
        data.error = null;

        return result;
    }
}

function createSiteTracker() {

    var PAGE_STATES = { siteOptions: 0, siteTemplates: 1, siteDetails: 2, success: 3, failure: 4 }

    var getPageState = function (wizardStep, data) {
        if (data.error != null) {
            // If we have an error we always track the 'failure' page state
            return PAGE_STATES.failure;
        }

        switch (wizardStep) {
            case "siteOptionsStep":
                return PAGE_STATES.siteOptions;
            case "chooseSiteTemplateStep":
                return PAGE_STATES.siteTemplates;
            case "siteDetailsStep":
                return PAGE_STATES.siteDetails;
            case "congratulationsStep":
                return PAGE_STATES.success;
        }

        return -1;
    }

    this.track = function (tracker, data, state) {
        if (state == null) {
            // The first time the page is loaded the trackPage method is called but without a wizard step; we don't want to track anything at this point
            return false;
        }

        var pageState = getPageState(state, data);
        var result = false;

        switch (pageState) {

            case PAGE_STATES.siteOptions:
                tracker.setPageName("PP > Create Site > Site options");
                result = true;
                break;

            case PAGE_STATES.siteTemplates:
                tracker.setPageName("PP > Create Site > Site templates");
                result = true;
                break;

            case PAGE_STATES.siteDetails:
                tracker.setPageName("PP > Create Site > Site details");
                result = true;
                break;

            case PAGE_STATES.success:
                tracker.setPageName("PP > Create Site > Success");
                tracker.setSiteCreationMethod(isNull(data.siteCreationMethod, "Unknwon"));
                tracker.setCustomEvent(customEvents.siteCreationSuccess);
                result = true;
                break;

            case PAGE_STATES.failure:
                tracker.setPageName("PP > Create Site > Error");
                tracker.setSiteCreationMethod(isNull(data.siteCreationMethod, "Unknwon"));
                tracker.setConversionError("[Create site]: " + isNull(data.error), "Unknown error");
                tracker.setCustomEvent(customEvents.siteCreationFailure);
                result = true;
                break;
        }

        // Clear the tracking data so that it does not interfere with tracking of subsequent wizard steps
        data.error = null;

        return result;
    }
}

function rebrandedCreateSiteTracker() {

    var PAGE_STATES = { siteOptions: 0, siteDetails: 1, success: 2, failure: 3 }

    var getPageState = function(data) {
        if (data.error != null) {
            // If we have an error we always track the 'failure' page state
            return PAGE_STATES.failure;
        }
        if (jQuery("#panelErrorMsg").hasClass("syserror")) {
            return PAGE_STATES.failure;
        }
        if (jQuery("#panelFinish").length > 0) {
            return PAGE_STATES.success;
        }
        if (jQuery("#panelDetails").length > 0) {
            return PAGE_STATES.siteDetails;
        }
        return PAGE_STATES.siteOptions;
    }

    this.track = function (tracker, data, state) {
        var pageState = getPageState(data);
        var result = false;

        tracker.setChannel("PartnerPortal"); // We track the rebranded site creation as part of the PP channel even if the actual page is in the Admin project
        tracker.setUserType("SBO");

        switch (pageState) {

            case PAGE_STATES.siteOptions:
                tracker.setPageName("PP > Rebranded Create Site > Site options");
                result = true;
                break;

            case PAGE_STATES.siteDetails:
                tracker.setPageName("PP > Rebranded Create Site > Site details");
                result = true;
                break;

            case PAGE_STATES.success:
                tracker.setPageName("PP > Rebranded Create Site > Success");
                tracker.setSiteCreationMethod(isNull(data.siteCreationMethod, "Unknwon"));
                tracker.setCustomEvent(customEvents.rebrandedSiteCreationSuccess);
                result = true;
                break;

            case PAGE_STATES.failure:
                tracker.setPageName("PP > Rebranded Create Site > Error");
                tracker.setSiteCreationMethod(isNull(data.siteCreationMethod, "Unknwon"));
                tracker.setConversionError("[Rebranded create site]: " + isNull(data.error), "Unknown error");
                tracker.setCustomEvent(customEvents.rebrandedSiteCreationFailure);
                result = true;
                break;
        }

        // Clear the tracking data so that it does not interfere with tracking of subsequent wizard steps
        data.error = null;

        return result;
    }
}

function wsiPartnerSignupTracker() {

    var PAGE_STATES = { loaded: 0, success: 1, failure: 2 }

    var getPageState = function () {
        if (data.error != null) {
            return PAGE_STATES.failure;
        }
        if (jQuery("div[id$=panelErrorMsg]").hasClass("syserror")) {
            return PAGE_STATES.failure;
        }
        if (jQuery("div[id$=panelErrorMsg]").hasClass("syserror")) {
            return PAGE_STATES.success;
        }
        return PAGE_STATES.loaded;
    }

    this.track = function(tracker, data, state) {
        var pageState = getPageState(data);

        switch (pageState) {

            case PAGE_STATES.loaded:
                tracker.setPageName("PP > Rebranded signup");
                return true;

            case PAGE_STATES.success:
                tracker.setPageName("PP > Rebranded signup > Success");
                tracker.setCustomEvent(customEvents.partnerSignupSuccess);
                return true;

            case PAGE_STATES.failure:
                tracker.setPageName("PP > Rebranded signup > Error");
                tracker.setConversionError("[WSI Signup]: " + isNull(data.error, "Unknown error"));
                tracker.setCustomEvent(customEvents.partnerSignupFailure);
                return true;
        }

        return false;
    }
}

function changeSitePlanTracker(from) {

	var PAGE_STATES = { planDetails: 0, billingDetails: 1, confirmation: 2, success: 3, failure: 4 }
	var source = from;
	
	var getPageNamePrefix = function() {
		return source == "PP" ? "PP > Clients > Change Site Plan > " : "AdminV2 > MyAccount > Change Site Plan > ";
	}
	
	var getError = function() {
		if (source == "PP") {
			return jQuery("div.error div").html();
		} else {
			return jQuery("div[id$=panelFail] h4").html();
		}
	}
	
	var getPageState = function() {
		if (getError() != null) {
			return PAGE_STATES.failure;
		}
		if (jQuery("div[id$=panelSelectPlan]").length > 0) {
			return PAGE_STATES.planDetails;
		}
		if (jQuery("div[id$=panelBillingDetails]").length > 0) {
			return PAGE_STATES.billingDetails;
		}
		if (jQuery("div[id$=panelConfirm]").length > 0) {
			return PAGE_STATES.confirmation;
		}
		if (jQuery("div[id$=panelSuccess]").length > 0) {
			return PAGE_STATES.success;
		}
	}
	
	this.track = function (tracker, data, state) {
		var pageState = getPageState(data);

        switch (pageState) {

            case PAGE_STATES.planDetails:
                tracker.setPageName(getPageNamePrefix() + "Plan Details");
                return true;
			
			case PAGE_STATES.billingDetails:
                tracker.setPageName(getPageNamePrefix() + "Billing Details");
                return true;
			
			case PAGE_STATES.confirmation:
                tracker.setPageName(getPageNamePrefix() + "Confirmation");
                return true;
			
			case PAGE_STATES.success:
				tracker.setCurrencyCode(isNull(data.currencyCode, "USD"));
                tracker.setPageName(getPageNamePrefix() + "Success");
				tracker.setCustomEvent(customEvents.changeSitePlan, customEvents.lostRevenue);
				tracker.setOldSitePlan(getSitePlanProductName(data.oldPlan, data.oldBillingFrequency));
				tracker.setProductEvent(getSitePlanProductName(data.newPlan, data.newBillingFrequency), isNull(data.orderAmount, null), productEvents.purchase);
				tracker.setPurchaseIdentifier(data.orderId);
				tracker.setCustomEventValue(customEvents.lostRevenue, isNull(data.oldOrderAmount, 0));	// add old order amount to 'lostRevenue'
				return true;
			
			case PAGE_STATES.failure:
                tracker.setPageName(getPageNamePrefix() + "Failure");
				tracker.setConversionError("[CSP]: " + getError());
                return true;
        }

        return false;
	}

}

function campaign8Tracker() {

	var PAGE_STATES = { landingPage: 0, siteList: 1, billingDetails: 2, success: 3, failure: 4 }
		
	var getPageState = function(data) {
		if (data.error != null) {
			return PAGE_STATES.failure;
		}
		if (jQuery("div[id$=panelBillingDetails]").length > 0) {
			return PAGE_STATES.billingDetails;
		}
		if (jQuery("div[id$=panelSuccess]").length > 0) {
			return PAGE_STATES.success;
		}
		if (jQuery("div[id$=campaignLandingPanel]").length > 0) {
			return PAGE_STATES.landingPage;
		}
		if (jQuery("div[id$=billingFrequencyPanel]").length > 0) {
			return PAGE_STATES.siteList;
		}
	}
	
	this.track = function (tracker, data, state) {
		var pageState = getPageState(data);

		tracker.setChannel("PartnerPortal");
		
        switch (pageState) {

            case PAGE_STATES.landingPage:
                tracker.setPageName("PP > Campaign M2Y > Landing Page");
                return true;
			
			case PAGE_STATES.siteList:
                tracker.setPageName("PP > Campaign M2Y > Site List");
                return true;
			
			case PAGE_STATES.billingDetails:
                tracker.setPageName("PP > Campaign M2Y > Billing Details");
                return true;
			
			case PAGE_STATES.success:
                tracker.setPageName("PP > Campaign M2Y > Success");
				tracker.setCustomEvent(customEvents.changeSitePlan);
				tracker.setOldSitePlan(getSitePlanProductName(data.oldPlan, data.oldBillingFrequency));
				tracker.setProductEvent(getSitePlanProductName(data.newPlan, data.newBillingFrequency), isNull(data.orderAmount, null), productEvents.purchase);
				tracker.setPurchaseIdentifier(data.orderId);
								
				// Track conversion in test&target
				mboxDefine("conversionMbox", "Campaign M2Y Success", 'productPurchasedId=' + data.product, 'orderTotal=' + data.orderAmount, 'orderId=' + data.orderId);
				mboxUpdate("Campaign M2Y Success");		
                return true;
			
			case PAGE_STATES.failure:
                tracker.setPageName("PP > Campaign M2Y > Failure");
				tracker.setConversionError("[CampaignM2Y]: " + data.error);
                return true;
        }

        return false;
	}

}


// =====================================
// ====            ADMIN            ====
// =====================================

function adminLoginTracker() {

    this.track = function (tracker, data, state) {
        if (data.returningUser != null) {
            tracker.setCustomEvent(customEvents.returnToAdmin);
        }
        if (data.trackSignup != null) {
            tracker.setCountry(isNull(data.country, "Unknown"));
            tracker.setCustomEvent(customEvents.partnerSignupSuccess);

            // Track conversion in test&target
            mboxDefine("conversionMbox", "Successful Partner Signup");
            mboxUpdate("Successful Partner Signup");
        }

        return true;
    }
}

function ppLoginTracker() {

    this.track = function (tracker, data, state) {
        tracker.setCustomEvent(customEvents.loginToPP);
		if (data.partnerActivated) {
			tracker.setCustomEvent(customEvents.partnerActivationSuccess);
		}
        return true;
    }
}

function editPageTracker() {

    this.track = function (tracker, data, state) {
        tracker.setCustomEvent(customEvents.editPage);
        return true;
    }
}

function editLayoutTracker() {

    this.track = function (tracker, data, state) {
        tracker.setCustomEvent(customEvents.editLayout);
        return true;
    }
}

function supportTracker() {

    this.track = function (tracker, data, state) {
        tracker.setCustomEvent(customEvents.getHelp);
        return true;
    }
}

function moduleManagerTracker() {

    this.track = function (tracker, data, state) {
        tracker.setCustomEvent(customEvents.insertModule);
        return true;
    }
}

function siteCancellationTracker() {

    this.track = function (tracker, data, state) {
        var siteCancelled = isNull(data.siteCancelled, "false");
        if (siteCancelled == "true") {
            var recurrentRevenue = isNull(data.recurrentRevenue, 0);
			if (recurrentRevenue > 0) {
				// track site cancellation and lost revenue				
				tracker.setCurrencyCode(data.currencyCode);
				tracker.setCustomEventValue(customEvents.lostRevenue, recurrentRevenue);
				tracker.setCustomEvent(customEvents.siteCancellation, customEvents.lostRevenue);
			}
			else {
				// track site cancellation only
				tracker.setCustomEvent(customEvents.siteCancellation);
			}
        }
        return true;
    }
}


// ======================================
// ====            BC.COM            ====
// ======================================

function supportHomeTracker() {
	
	this.track = function (tracker, data, state) {
		if (data.searchKeywords != null) {
			tracker.setSearchKeywords(data.searchKeywords);
		}
		if (data.searchResultCount != null) {
			tracker.setSearchResultCount(data.searchResultCount);
		}
		return true;
	}
}

function supportForumsTracker() {

	this.track = function (tracker, data, state) {
		var searchKeywordInputs = jQuery("input[type=hidden][id^=searchkeywords]");
		if (searchKeywordInputs.length > 0) {
			tracker.setSearchKeywords(searchKeywordInputs.val());
		}
		
		var searchResultCountInputs = jQuery("input[type=hidden][id^=searchresults]");
		if (searchResultCountInputs.length > 0) {
			tracker.setSearchResultCount(searchResultCountInputs.val());
		}
		
		return true;
	}
}

function forumTopicsTracker() {

	this.track = function (tracker, data, state) {
		var topicIdParameter = /TopicID=/
		var forumLink = jQuery("li.breadcrumb span.forum a")
		
		if (document.location.search.search(topicIdParameter) == -1 || forumLink.length == 0) {
			return false;
		}
		
		var forumName = forumLink.text();
		var topicName = jQuery(document.createElement("div")).html(document.title).text(); // Strip HTML tags from document.title
		
		tracker.setPageName("Business Catalyst Support > Forums > " + forumName + " > " + topicName);
		
		return true;
	}
}


// ======================================
// ====           Helpers            ====
// ======================================

function getSitePlanProductName(sitePlan, billingFrequency) {
	return isNull(sitePlan, "Unknown") + " site plan (" + getCycleName(billingFrequency) + ")";
}

function getCycleName(billingFrequency) {
	if (billingFrequency != null ) {
		billingFrequency = billingFrequency.toLowerCase();
	}
	
	switch (billingFrequency) {
		case "biyearly":
			return "BiYearly";
		case "annually":
		case "yearly":
			return "Annually";
		default:
			return "Monthly";
	}
}

        


