
function tagOnPartnerCID(UrlToModify)
{
    var defaultPartnerCID   = 0;
    var TCPartnerCookie     = "";
    
    TCPartnerCookie = getBrowserCookie("taxcutQSCookie");
    TCPartnerCookie = "&" + TCPartnerCookie;
    
    var partnerCID = getParameterValue(TCPartnerCookie, 'CID', false);

    if (  (typeof partnerCID)=="undefined"  )
    {   partnerCID = defaultPartnerCID;
    }
    else if (   (partnerCID=="") || (partnerCID==null)   )
    {   partnerCID = defaultPartnerCID;
    }
    
    UrlToModify += "&CID="+partnerCID;

    return UrlToModify;
}

function appendLinkshareData(urlToModify, destination)
{
    // If link is to Digital River, pass linkshare partner id as &API2=XXXX, otherwise if going to OTP pass it as &siteId=XXXX.
    // Do not pass time_entered linkshare data to Digital River it will break their pages.
      
    if (destination.toLowerCase()=="software")
    {
        urlToModify += getLinkshareData("API2", true, "time_entered", false);
    }
    else if (destination.toLowerCase()=="onlinetax")
    {
        urlToModify += getLinkshareData("siteID", true, "time_entered", true);   
    }
    else
    {
    }
    
    return urlToModify;

}


// ************************************************************************
// BEGIN LINKSHARE FUNCTIONS
// ************************************************************************

function getLinkshareData(siteIdParmName, bSiteId, timeEnteredParmName, bTimeEntered)
{   

    var SiteID          = getLinkshareSiteID();
    var Time_entered    = getLinkshareTimeEntered();
    
    if (SiteID!= "" && SiteID!=false && SiteID !="null")    
    {
        var strLinkshareData = "";
        
        if (bSiteId)
        {
            strLinkshareData += "&"+siteIdParmName+"=" + escape(SiteID);
            if (siteIdParmName.toLowerCase()=="api2")
            {
                strLinkshareData += "&API1=13"; // Digital River REQUIRES API1=13 to accompany an API2 value
            }
        }
        
        if (bTimeEntered)
        {
            strLinkshareData += "&"+timeEnteredParmName+"=" + Time_entered.substring(4,Time_entered.length);
        }
        
        return strLinkshareData;
    }
    else
    {
        // no linkshare cookie was found
    
        return "";
    }
}

function getLinkshareTimeEntered()
{
    var Time_entered = getBrowserCookie('Time_entered'); 
    
    if (Time_entered)
    {
        return Time_entered;
    }
    else
    {
        return "";        
    }
}



function getLinkshareSiteID()
{   
    var SiteID = getBrowserCookie('siteID'); 

    if (SiteID)
    {
        SiteID = convert_spec(SiteID);
        return SiteID;
    }
    else
    {
        return "";        
    }
}

function convert_spec(str)
{
    var temp_str; 
    temp_str = "";
    
    var temp_id = new Array(str.length)
    
    for (var i = 0; i < str.length; i++)
    {
        temp_id[i] =str.charAt(i);
        
        if (temp_id[i] == ".") 
        {
            temp_id[i]="*";
        }
        else if (temp_id[i] == "_") 
        {
            temp_id[i]="/";
        }
        else
        {
        }
        
        temp_str = temp_str + temp_id[i];
    }
    return temp_str;
}

// ************************************************************************
// END LINKSHARE FUNCTIONS
// ************************************************************************


function setBrowserCookie(cookieName, cookieValue, expires, path, domain, secure)
{ 
    // NOTE: expires parm examples are "session", "30d", "8h", "365d", "5y", etc.
    // alert("setBrowserCookie: cookieName='"+cookieName+"',cookieValue='"+cookieValue+"',\nexpires='"+getCookieExpirationDate(expires)+"',path='"+path+"',\ndomain='"+domain+"',secure='"+secure+"'");
    document.cookie = cookieName + "=" + escape (cookieValue)+
    ((expires == "" || expires == "session") ? ""         : ("; expires = " + getCookieExpirationDate(expires))) +
    ((path    == "") ? ""         : ("; path=   "   + path))   +
    ((domain  == "") ? ""         : ("; domain=   " + domain)) +
    ((secure  == "true") ? "; secure" : "");
    //alert(document.cookie);
}

function getCookieExpirationDate(cookieLifetime)
{ 
    // specify one of the following: days, hours or minutes

    var UTCstring;

    var expDate       = new Date();
    var nomilli       = Date.parse(expDate);

    var measure = cookieLifetime.charAt((cookieLifetime.length)-1);

    cookieLifetime  = cookieLifetime.slice(0,-1);

    if      (measure=="y")
    {
        expDate.setTime(nomilli+(cookieLifetime*365*24*60*60*1000));
    }
    else if (measure=="d")
    {
        expDate.setTime(nomilli+(cookieLifetime*24*60*60*1000));
    }
    else if (measure=="h")
    {
        expDate.setTime(nomilli+(cookieLifetime*60*60*1000));
    }
    else if (measure=="m")
    {
        expDate.setTime(nomilli+(cookieLifetime*60*1000));
    }

    var UTCstring     = expDate.toUTCString();

    return UTCstring;
}

function getBrowserCookie(Name)
{ 
    var search = Name + "=";
    if (document.cookie.length > 0)
    {
        // if there are any cookies
        offset = document.cookie.indexOf(search);
        if (offset != -1)
        {   // cookie exists
            offset += search.length;

            // set index of beginning of value
            end = document.cookie.indexOf(";", offset);

            // set index of end of cookie value
            if (end == -1)
            {   end = document.cookie.length;
            }

            return unescape(document.cookie.substring(offset, end));
        }
    }
}

function processTCPartnerCookie()
{ 
    var queryString     = "";
    var cookiePID       = "";
    var CID_phrase  = "";
    var urlPID          = "";
    var TCPartnerCookie = "";
    var qs              = "";
    var tempQS          = "";
    var iBegPos         = 0;
    var iEndPos         = 0;

    // ********
    // FIRST: try to get otpPartnerId from cookie
    // ********
    TCPartnerCookie = getBrowserCookie("taxcutQSCookie");
    TCPartnerCookie = "&" + TCPartnerCookie;
    cookiePID       = getParameterValue(TCPartnerCookie, 'otpPartnerId', false);

    if ((typeof cookiePID)=="undefined" || cookiePID=="" || cookiePID==null)
    {   cookiePID   = null;
    }


    // ********
    // SECOND: try to get otpPartnerId from the url
    // ********
    qs  = location.search;
    urlPID = getParameterValue(location.search, 'otpPartnerId', false);

    if ((typeof urlPID)=="undefined" || urlPID=="" || urlPID==null)
    {   urlPID      = null;
    }

      //*****ADD 01-19*****
      
        if (urlPID == null && cookiePID == null)
      
          {
      
              // check if visitor came from paid search
      
              var paidSearch = 0;
      
       
      
              if (window.location.search.indexOf('omnisource=') != -1)
      
              {
      
                  paidSearch = 1;
      
              }
      
              
      
              if (paidSearch!="1")
      
              {
      
       
      
                  // check if a search engine did the referral
      
                  // get referring search engine and set appropriate partner ID
      
       
      
                  // this line allows us to simulate search engine referrals
      
       
      
                  srchsim = getParameterValue(location.search, 'srchsim', false);
      
       
      
                  if (srchsim==null) 
      
                  {   srchsim="";
      
                  }
      
       
      
                  referrer        = document.referrer;
      
       
      
                  bRefererNotNull = false;
      
       
      
                  if (referrer != null && referrer != "")
      
                  {   bRefererNotNull = true;        
      
                  }
      
       
      
                  if (  (bRefererNotNull && (referrer.indexOf("google.com") > -1))            || (srchsim=="google") )
      
                  {
      
                  CID_phrase      = "&CID=218993";
      
                      urlPID              = "2260";
      
                  } else if (  (bRefererNotNull && (referrer.indexOf("yahoo.com") > -1))      || (srchsim=="yahoo") )
      
                  {
      
                  CID_phrase      = "&CID=218985";
      
                      urlPID              = "2259";
      
                  } else if (  (bRefererNotNull && (referrer.indexOf("msn.com") > -1))        || (srchsim=="msn") )
      
                  {
      
                  CID_phrase      = "&CID=218987";
      
                      urlPID              = "2258";
      
                  } else if (  (bRefererNotNull && (referrer.indexOf("aol.com") > -1))        || (srchsim=="aol") )
      
                  {
      
                  CID_phrase      = "&CID=218989";
      
                      urlPID              = "2263";
      
                  } else if (  (bRefererNotNull && (referrer.indexOf("netscape.com") > -1))   || (srchsim=="netscape") ) 
      
                  {
      
                  CID_phrase      = "&CID=218991";
      
                      urlPID              = "2261";
      
                  } else if (  (bRefererNotNull && (referrer.indexOf("ask.com") > -1))        || (srchsim=="ask") )
      
                  {
      
                  CID_phrase      = "&CID=218995";
      
                      urlPID              = "2262";
      
                  }    
      
              }
      
          }
      
      //*****END ADD 01-19*****


    // *******************************
    // THIRD: determine what, if any, value to write to cookie
    // *******************************

    if (urlPID==null && cookiePID==null)
    {   // cookiePID and urlPID not found, write cookie with value 2246 (taxcut.com) as session cookie
        partnerId   = 2246;
        setBrowserCookie("taxcutQSCookie", "otpPartnerId="+partnerId+"&PartnerID="+partnerId, "session", "/", "", "");
    }
    else if (  (urlPID != null && cookiePID == null) || ((urlPID != null && cookiePID != null) && urlPID != cookiePID)  )
    {   
        // No cookie but urlPID present, or both present but not equal (urlPID wins), so 
        // write entire query string to cookie as session cookie
        
        partnerId   = urlPID;

        if (qs.indexOf("?")!=-1) qs = qs.slice(qs.indexOf("?")+1);

        tempQS  = qs.toLowerCase();

        // BEGIN: strip &otpParnterId= and its value from the query string

        iBeginPos   = tempQS.indexOf("otppartnerid");

        if (iBeginPos != -1)
        {   
            iEndPos = tempQS.indexOf("&", iBeginPos);
            if (iEndPos != -1)
            {
                    qs = qs.substring(0,iBeginPos)+qs.substring(iEndPos+1,qs.length);
            }
            else
            {
                    qs = qs.substring(0,iBeginPos);
            }   
        }

        // END: strip &otpParnterId= and its value from the query string

        setBrowserCookie("taxcutQSCookie", "otpPartnerId="+urlPID+"&PartnerID="+urlPID+CID_phrase+"&"+qs, "session", "/", "", "");
    }
    else if (urlPID == null && cookiePID != null)
    {   // do nothing, cookie already exists and no url value
        partnerId   = cookiePID;
    }
}

function getParameterValue(strURL, strParmName, bCaseSpecific)
{  
    // Description: returns value of a name/value pair in the passed URL string
    // Usage: getParameterValue(url, 'otpPartnerId', '1');
    //
    // Parameters:
    //   strURL: url to extract the name/value pair from
    //   strParmName: name part of name/value pair
    //   bCaseSpecific: when searching for name, use case passed to function. 1==true; 0==false
    //
    // Returns:
    //  the value of the nvp if found and "" if not found

    if (bCaseSpecific)
    {
    }
    else
    {
        strParmName = strParmName.toLowerCase();
        strURL      = strURL.toLowerCase();
    }

    var strChar = "";

    if (strURL.indexOf("?"+strParmName+"=") != -1)
    {   strChar = "?";
    }
    else if (strURL.indexOf("&"+strParmName+"=") != -1)
    {   strChar = "&";
    }
    else
    {   return "";
    }

    var strTemp1 = strURL.substring(strURL.indexOf(strChar+strParmName+"=")+strParmName.length+2, strURL.length);

    if (strTemp1.indexOf("&", 0) == -1)
    {   return strTemp1;
    }
    else
    {   return strTemp1.substring(0, strTemp1.indexOf("&"));
    }
}

var partnerId   = "";
processTCPartnerCookie();
