/* Functions to record a tracking hit in Omniture */

//Set on page load, server side - if you want
var serverName = "";     
var memberId = "";       
var loginStatus = "";    
var ptUserType = "";
var ptNewRenewal = "";
var siteSection = "";
var justLoggedIn = false;   //when true, add the myeq login event
var justRegistered = false; //when true, add the registration event
var loginTransID = 0;
var registrationTransID = 0;

//Basic page JS

function WriteTrackingJS()
{   
    WriteTrackingJSDetail(autoGetPageName(), "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "");
}

//Basic page JS - override page name
function WriteTrackingJSPageName(pageName)
{  
    WriteTrackingJSDetail(formatPageName(pageName), "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "");
}

//Basic page JS for error pages
function WriteTrackingJSError()
{
    WriteTrackingJSDetail(autoGetPageName(), "errorPage", "", "", "Error", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "");
}

//Base page JS with the ability to specify page name and category
function WriteTrackingJSSiteSection(pageName, siteLevel1, siteLevel2, siteLevel3, siteLevel4)
{
    WriteTrackingJSDetail(formatPageName(pageName), "", "", "", siteLevel1, siteLevel2, siteLevel3, siteLevel4, "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "");
}


//-- Gift Card / PT Wizard

function WriteTrackingJSeCommerceWizard(pageName, applicationType, events, productList, purchaseID)
{
    WriteTrackingJSDetail(formatPageName(pageName), "", "", "", "", "", "", "", applicationType, "", "", "", "", "", "", "", "", "", "", events, productList, purchaseID, "", "");
}

//-- Inquiry Form / Equifit / Request App

function WriteTrackingJSInquiryForms(pageName, applicationType, events, transactionID)
{
    WriteTrackingJSDetail(formatPageName(pageName), "", "", "", "", "", "", "", applicationType, "", "", "", "", "", "", "", "", "", "", events, "", transactionID, "", "");
}

//Registration

function WriteTrackingJSRegistration(pageName, events, currentStep)
{
    WriteTrackingJSDetail(formatPageName(pageName), "", "", "", "", "", "", "", "MYEQ Registration", "", "", "", "", "", "", "", "", "", "", events, "", "", "", "");
}

// myEQ/Freeze

function WriteTrackingCodeFreeze(pageName, events, currentStep)
{
    WriteTrackingJSDetail(formatPageName(pageName), "", "", "", "", "", "", "", "MYEQ Freeze", "", "", "", "", "", "", "", "", "", "", events, "", "", "", "");
}

//Book a Bike

function WriteTrackingJSBookABike(pageName, events, currentStep)
{
    WriteTrackingJSDetail(formatPageName(pageName), "", "", "", "", "", "", "", "Book A Bike", "", "", "", "", "", "", "", "", "", "", events, "", "", "", "");
}

//Referral

function WriteTrackingJSReferral(pageName, events, currentStep, transactionID)
{
    WriteTrackingJSDetail(formatPageName(pageName), "", "", "", "", "", "", "", "Member Referral", "", "", "", "", "", "", "", "", "", "", events, "", transactionID, "", "");
}

//Renewal

function WriteTrackingJSRenewal(pageName, events, currentStep, transactionID)
{
    WriteTrackingJSDetail(formatPageName(pageName), "", "", "", "", "", "", "", "Membership Renewal", "", "", "", "", "", "", "", "", "", "", events, "", transactionID, "", "");
}

//Renewal

function WriteTrackingJSFreeze(pageName, events, currentStep)
{
    WriteTrackingJSDetail(formatPageName(pageName), "", "", "", "", "", "", "", "Membership Freeze", "", "", "", "", "", "", "", "", "", "", events, "", "", "", "");
}

//MyEQ Login Success - DEPRECATED
/*
function WriteTrackingJSLogin(pageName,  uniqueID)
{
    WriteTrackingJSDetail(formatPageName(pageName), "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", uniqueID, "");
}
*/

//-- Group fitness search

function WriteTrackingJSGFSearch(currentRegion, currentLocations, currentClassDay, currentClassType, currentInstructor, currentClassTime, currentClass, numSearchResults)
{
    var searchTerms = currentRegion + " " + currentLocations + " " + currentClassDay + " " + currentClassType + " " + currentInstructor + " " + currentClassTime + " " + currentClass + " " + numSearchResults;
    
    searchTerms = searchTerms.replace("  ", "");    //Replace all double spaces - empty spaces with nothing
    
    if(currentRegion == ""){
        currentRegion = "Any";
    }
    if(currentLocations == ""){
        currentLocations = "Any";
    }
    if(currentClassDay == ""){
        currentClassDay = "Any";
    }
    if(currentClassType == ""){
        currentClassType = "Any";
    }
    if(currentInstructor == ""){
        currentInstructor = "Any";
    }
    if(currentClassTime == ""){
        currentClassTime = "Any";
    }
    if(currentClass == ""){
        currentClass = "Any";
    }
    if(numSearchResults == ""){
        numSearchResults = "Any";
    }
       

    WriteTrackingJSDetail("/GroupFitness/FindAClass", "", searchTerms, numSearchResults, "", "", "", "", "Group Fitness Search", "", currentRegion, currentLocations, currentClassDay, currentClassType, currentInstructor, currentClassTime, currentClass, numSearchResults, "", "", "", "", "", "", "", "");
}


//Custom function for all custom events - send "" (empty string) for all values you want to ignore

function WriteTrackingJSDetail(
    pageName,
    is404,
    searchTerms,
    searchResultNum,
    siteLevel1,
    siteLevel2,
    siteLevel3,
    siteLevel4,
    applicationType,
    membershipOptions,
    searchRegion,
    searchLocation,
    searchClassDay,
    searchClassType,
    searchClassInstructor,
    searchClassTime,
    searchClass,
    numSearchResults,
    campaignCode,
    eventList,
    productList,
    purchaseID,
    loginID,
    transactionID
    )
{
    /* You may give each page an identifying name, server, and channel on the next lines. */
    
    s.pageName = pageName.toLowerCase();   //Get everything after domain, exclude .aspx page
    s.server = serverName    //Web03 / web04
    
    if(is404)
    {
        s.pageType = "errorPage"   //errorPage if 404
    }
    
    s.prop1 = searchTerms      //Internal Search terms
    s.prop2 = searchResultNum      //# of Search results
    
    if(siteLevel1 != ""){       //Site Section Level 1
        s.channel = siteLevel1.toUpperCase();   
    }else{
        s.channel = siteSection.toUpperCase();
    }
    //Change "MYEQ" to "MYEQ - LOGIN NOT REQUIRED"
    if(s.channel == "MYEQ")
    {
        s.channel = "MYEQ - LOGIN NOT REQUIRED";
    }
    
    s.prop3 = siteLevel2.toUpperCase()      //Site section level 2
    s.prop4 = siteLevel3.toUpperCase()      //Site section level 3
    s.prop5 = siteLevel4.toUpperCase()      //Site ssection level 4
    s.prop10 = memberId   //MemberId
    s.prop11 = applicationType   //Lead Type
    s.prop12 = membershipOptions   //Membership Options
    s.prop13 = searchRegion   //Search - Region
    s.prop14 = searchLocation   //Search - Locations
    s.prop15 = searchClassDay //Search - Class Day
    s.prop16 = searchClassType   //Search - Class Type
    s.prop17 = searchClassInstructor   //Search - Class Instructor
    s.prop18 = searchClassTime   //Search - Class Time
    s.prop19 = searchClass   //Search - Class
    s.prop20 = numSearchResults   //# of search results
    s.prop21 = loginStatus   //Logged in / Not logged in
    s.prop23 = ptUserType   //PT User Type
    s.prop27 = ptNewRenewal //PT New / Renewal
    
    /* Conversion Variables */
    s.campaign = campaignCode   //campaign codes for email / SEO / etc
    s.events = eventList     //event list
    
    //Track MYEQ Logins
    if(justLoggedIn){
        if(eventList.length > 0){
            s.events = eventList + ",event4"; //login event
        }
        else
        {
            s.events = "event4";  //login event
        }
    }
    
    //Track MYEQ Registrations
    if(justRegistered)
    {
        if(eventList.length > 0){
            s.events = eventList + ",event5,event32"; //registration event
        }
        else
        {
            s.events = "event5,event32";  //registration event
        }
    }
    
    s.products = productList   //products
    
    //TODO - get real purchase IDs from DB
    //s.purchaseID = purchaseID //purchase ID
    
    s.eVar10 = memberId   //Member ID
    s.eVar11 = applicationType   //lead type - Name of lead registration type - referral / registration - application type
    s.eVar20 = loginID   //Login ID - on the login success page
    s.eVar22 = ptUserType   //PT User Type
    s.eVar25 = ptNewRenewal //PT New / Renewal
    
    //TODO - get real transaction IDs from DB
    //s.transactionID = transactionID
    
    /************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
    var s_code=s.t();if(s_code)document.write(s_code)
}

//--- Helper functions ---

function autoGetPageName()
{
    //TODO - get from server

    var formattedName = formatPageName(window.location.pathname)
    
    formattedName += window.location.search;
    
    //formattedName += window.location.hash;
    
    return formattedName;
}

function formatPageName(currentPageName)
{
    var pageName = stripFileExtension(currentPageName).replace("default", "Home");
    pageName = pageName.replace("Default", "Home");
    pageName = pageName.replace("MyEQ", "MYEQ");
    
    if(!pageName.startsWith("../index.html"))
    {
        pageName += "/" + pageName;
    }
    
    if(pageName.endsWith("../index.html")){
        pageName += "Home";
    }

    return pageName;
}

function stripFileExtension(pathStr)
{
    return pathStr.replace(".aspx", "").replace(".asp", "");
}