

var doc_cookieCutter = function(domain){
    if(domain==null||domain.length==0){
        return null;
    }
    this.cookieLifeDays=90;
    this.cjCookieLifeDays=30;  //allow for shorter storage of Commission Junction cookies
    this.isCJ = false; //determined by source_id begining with 'cj'
    this.cjCookie="";
    this.domain = domain;

    this.source_id = null;// source, engine, vid etc...
    this.lli = null;//last login timestamp
    this.offer_code = null;
    this.last_kw = null;//last KW phrase used, passed in from search engine

    var me = this;
    this.getQueryStringValue = function(qName) {
        var qs = window.location.search.substring(1);
        var qa = qs.split("&");
        var retString = "";
        for (i=0;i<qa.length;i++) {
            qi = qa[i].split("=");
            if (qi[0] == qName) {
                retString = qi[1];
            }
        }
        return retString;
    };
    this.KeyWordReplace = function (OrgVal,SearchVal,ReplaceVal)
    {
      var Val;
      var RegExp = eval("/" + SearchVal + "/g");
      if (OrgVal.indexOf(SearchVal) <1) {  return OrgVal; }
      Val = OrgVal.replace(RegExp,ReplaceVal);
      return Val;
    };
    this.getKeyWordsFromQueryString = function ()
    {
        var keyword = "";
        var ref = document.referrer;
        //test
        //ref = "http://www.digg.com/search?s=internet fax digg service&go=&form=QBRE&qs=n&sk=&sc=8-20";
        var pair;
        var qIndex = 0;
        var qs;
        var prm;
        var SearchEngineVariable = 'q';

        if (ref.toUpperCase().indexOf('YAHOO.COM') > 0) {
            SearchEngineVariable = 'p';
        }
        if (ref.toUpperCase().indexOf('DIGG') > 0) {
            SearchEngineVariable = 's';
        }

        try
        {
            qIndex = ref.indexOf('?');
            if (qIndex < 1) {
                return keyword;
            }
            ref = me.KeyWordReplace(ref, '%22', '');
            qs = ref.substring(qIndex + 1, ref.length);
            prm = qs.split('&');
            for (i = 0; i < prm.length; i++)
            {
                pair = prm[i].split('=');
                var temp = unescape(pair[0]).split('+');
                var name = temp.join(' ');
                if (name != SearchEngineVariable) {
                    continue;
                }
                temp = unescape(pair[1]).split('+');
                name = temp.join(' ');
                if (name&&name.length > 0) {
                    keyword = name;
                }

            }

        }
        catch (exception) {
        }
        return keyword;
    };

    this.getRefererURL = function (){
        var retURL = "No Referrer";
        var ref = document.referrer;
        var pair;
        try
        {
            pair = ref.split('?');
            if (pair[0]!=null&&pair[0].toLowerCase().indexOf(me.domain.toLowerCase())==-1) {
                retURL=pair[0];
            }
        }
        catch (exception) {
        }
        return retURL;
    };
    this.putCookie = function(name, value, domain, path, days) {
        value = escape(value);
        var pc = name + "=" + value;
        var expr;
        if (domain)
            pc += ";domain=" + domain;
        if (path)
            pc += ";path=" + path;
        if (days) {
            expr = new Date();
            expr.setTime(days * 86400000 + expr.getTime());
            pc += ";expires=" + expr.toGMTString();
        }
        document.cookie = pc;
    };
    this.getCookie = function(name){
        var srch = name + "=";
        var indxPos = 0;
        while (indxPos < document.cookie.length) {
            var valueOffset = indxPos + srch.length;
            if (document.cookie.substring(indxPos, valueOffset) == srch) {
                var endIndex = document.cookie.indexOf(";", valueOffset);
                if (endIndex == -1) { // Last cookie
                    endIndex = document.cookie.length;
                }
                return unescape(document.cookie.substring(valueOffset, endIndex));
            }
            indxPos=document.cookie.indexOf(" ",indxPos)+1;
            if (indxPos == 0) {
                break;
            }
        }
        return null;
    };
    this.runDocCookieCutter = function (){
        var src = me.getQueryStringValue("src");
        var source_id = me.getQueryStringValue("source_id");
        var engine = me.getQueryStringValue("engine");
        var VID = me.getQueryStringValue("VID");
        var oc = me.getQueryStringValue("oc");
        var cjs = me.getQueryStringValue("cjs");

        var thisEngine = "No Referrer";
        var thisKW = "";
        var thisOfferCode = "";
        var thisLLI= "";

        var cookieReferrer = me.getCookie("ReferringUrl");
        var cookieEngine = me.getCookie("engine");
        var cookieTrack = me.getCookie("track");
        var cookieOfferCode = me.getCookie("offer_code");
        var cookieLastKW = me.getCookie("last_kw");
        var cookieLLI = me.getCookie("lli");
        var cookieSource = me.getCookie("source_id");

        //isCJ cookie
        if(cookieTrack&&cookieTrack.length>0&&cookieTrack.indexOf("cj")==0){
            me.isCJ = true;
            me.cjCookie = cookieTrack;
        }
        if(cookieSource&&cookieSource.length>0&&cookieSource.indexOf("cj")==0){
            me.isCJ = true;
            me.cjCookie = cookieSource;
        }
        
        if(cjs&&cjs.length>0&&cjs=="y"){
            me.isCJ = true;
            me.cjCookie = "cj";
        }
        //offerCode
        if(oc&&oc.length>0){
            thisOfferCode = oc;
        }else{
            if(cookieOfferCode&&cookieOfferCode.length>0){
               thisOfferCode = cookieOfferCode;
            }
        }
        
        if(src&&src.length>0){
            thisEngine=src;
        }
        if(VID&&VID.length>0){
            thisEngine=VID;
        }
        if(engine&&engine.length>0){
            thisEngine=engine;
        }
        if(source_id&&source_id.length>0){
            thisEngine=source_id;
        }
        if(thisEngine&&thisEngine.length==0){
             if(cookieReferrer&&cookieReferrer.length>0){
                 thisEngine=cookieReferrer;
             }
             if(cookieTrack&&cookieTrack.length>0){
                 thisEngine=cookieTrack;
             }
             if(cookieEngine&&cookieEngine.length>0){
                 thisEngine=cookieEngine;
             }
             if(cookieSource&&cookieSource.length>0){
                 thisEngine=cookieSource;
             }
        }
         if(thisEngine&&thisEngine.length==0){
             thisEngine = me.getRefererURL();
         }
         if(thisEngine&&thisEngine.length>0&&thisEngine.indexOf("cj")==0){
             me.isCJ = true;
             me.cjCookie = thisEngine;
         }

        //KEYWORDS
        var kw =  me.getKeyWordsFromQueryString();
        if(kw&&kw.length>0){
            thisKW = kw;
        }else{
            if(cookieLastKW&&cookieLastKW.length>0){
                thisKW=cookieLastKW;
            }
        }

        //Last Login
        if(cookieLLI&&cookieLLI.length>0){
            thisLLI = cookieLLI;
        }

        if(me.isCJ){
            thisEngine=me.cjCookie;
        }

        if(thisEngine&&thisEngine.length>0){
             if(me.isCJ){
                me.putCookie("source_id",thisEngine, me.domain,"/",me.cjCookieLifeDays);
             }else{
                me.putCookie("source_id",thisEngine, me.domain,"/",me.cookieLifeDays);
             }
            me.source_id=thisEngine;
        }
        if(thisKW&&thisKW.length>0){
            me.putCookie("last_kw",thisKW, me.domain,"/",me.cookieLifeDays);
            me.last_kw=thisKW;
        }
        if(thisLLI&&thisLLI.length>0){
            me.putCookie("lli",thisLLI, me.domain,"/",me.cookieLifeDays);
            me.lli=thisLLI;
        }
        if(thisOfferCode&&thisOfferCode.length>0){
            me.putCookie("offer_code",thisOfferCode, me.domain,"/",me.cookieLifeDays);
            me.offer_code=thisOfferCode;
        }
         

    };
};


