/* 11/22/2011 Requires jquery.cookie.js */

/******** cookie util *********/

var PERSISTENT_SESSION_NAME = "UserInfo";
var NOT_PERSISTENT_SESSION_NAME = "SessionInfo";

if (typeof portalId != 'undefined' && portalId != null){
    PERSISTENT_SESSION_NAME += portalId;
    NOT_PERSISTENT_SESSION_NAME += portalId;
}

function getCookieName(key){
    var name = '';
    switch(key.toUpperCase()){
        case "WEBID":
        case "WEBNAME":
        case "FURNITUREWEBID":
        case "ZIP":
        case "CITY":
        case "STATE":
        case "STATECODE":
        case "COUNTRY":
        case "COUNTRYCODE":
        case "ZIPSTATUS":
        case "ZIPTYPE":
        case "ZIPSTATUSBORNDATE":
        case "VIRTUALZIP":
        case "INFERREDVIRTUALZIP":
        case "PORTALID":
        case "PORTALCOMPANYID":
        case "PORTALCOMPANYNAME":
        case "PORTALREGIONID":
        case "PORTALRETAILERID":
        case "PORTALRETAILERNAME":
        case "FURNITUREWEBNAME":
        case "USERID":
        case "FIRSTNAME":
        case "LASTNAME":
        case "CUSTOMERTYPE":
        case "LSSITEID":			// LinkShare SiteId
        case "LSSITEIDDATETIME":	// LinkShare TimeStamp
        case "MYSTOREID":           // My Store
        case "CULTUREID":           // Culture Id
        case "CULTURENAME":         // Culture Name
        case "UICULTUREID":         // UI Culture Id
        case "UICULTURENAME":       // UI Culture Name
        case "CARTADDS":            // Used to track cart additions
        case "STOREID":             // StoreId
        case "CCAMEDIAWHIZLOCALVSNATIONAL": // Used to tag customers who go to www.flooringamerica.com   
        case "DEFAULTGEOGRAPHY":
            name = PERSISTENT_SESSION_NAME;
            break;
        case "FURNITURESESSION":                
        case "CURURL":
        case "ISSIGNEDON":
        case "ISREGISTERED":
        case "DBMODE":
        case "ENCRYPTION":
        case "SHOPPINGCARTITEMADDSTHISSESSION":
        case "KIOSKID":
        case "SEARCHQUERYSTRING":
        case "PSSELECTEDSTORE":
        case "LM_TAB":              // Flooring America - Learn More tabs
        case "CAROUSEL_TAB":        // Flooring America - Carousel tabs
        case "REGISTRATIONZIP":      // Customer RegistrationZip
            name = NOT_PERSISTENT_SESSION_NAME;  
            break;          
        default:
            name = NOT_PERSISTENT_SESSION_NAME;
            break;
    }    
    return name;
}

/*============ get cookie ===============*/ 
function getCookie(name, key){             
    var val = '';                        
    $.each($.cookie(name).split('&'), function(){                                
        var subCookie = this.split('=');                     
        if (subCookie[0].toLowerCase() == key.toLowerCase()){
            val = subCookie[1];
            return;
        }                                                     
    });    
    return val;
}

/*======= set cookie ==================*/
function setCookie(name, key, value){
    var newVal = '';  
    if (getCookie(name, key) != ''){    
        $.each($.cookie(name).split('&'), function(){                                
            var subCookie = this.split('=');                     
            if (subCookie[0].toLowerCase() == key.toLowerCase())
                newVal += subCookie[0] + '=' + value + '&';          
            else
                newVal += subCookie[0] + '=' + subCookie[1] + '&';
        });    
        if (newVal != '')
            newVal = newVal.substr(0, newVal.length-1);
    } else{
        newVal = $.cookie(name) + '&' + key + '=' + value;
    }        
    // {domain: '.blueport.com'}
    var d = "";;
    var host = '';
    if (typeof SSLModeAbsoluteHost != 'undefined' && SSLModeAbsoluteHost != null){
        host = SSLModeAbsoluteHost;
    }else{
        var re = new RegExp('^(?:f|ht)tp(?:s)?\://([^/]+)', 'im'); 
        host = window.location.href.toString().match(re)[1].toString(); 
    }
    if (host.indexOf('.') != -1){    
        var dl = host.split('.');        
        if (dl.length == 3)
            d = dl[1] + "." + dl[2];
    }    
    $.cookie(name, newVal, {domain: d});   
}

/*=== get key value of a corresponding cookie ===*/
function getSession(key){
    var value = '';
    var cookieName = getCookieName(key);
    if (cookieName != 'undefined' && cookieName != ''){
        switch (cookieName){
            case PERSISTENT_SESSION_NAME:
               value = getCookie(PERSISTENT_SESSION_NAME, key); 
               break;
            case NOT_PERSISTENT_SESSION_NAME:
                value = getCookie(NOT_PERSISTENT_SESSION_NAME, key); 
                break;
        }
    }
    return value;
}

/*=== set value for key of a corresponding cookie ===*/
function setSession(key, value){
    var cookieName = getCookieName(key);
    if (cookieName != 'undefined' && cookieName != ''){
        switch (cookieName){
            case PERSISTENT_SESSION_NAME:
               setCookie(PERSISTENT_SESSION_NAME, key, value); 
               break;
            case NOT_PERSISTENT_SESSION_NAME:
               setCookie(NOT_PERSISTENT_SESSION_NAME, key, value); 
               break;
        }
    }
}
