var sDefaultLifeTime = 65;
var sPATH  = ";path=/";
var sEXPIRES = ";expires=";
var sDOMAIN =  ";domain=";

CookieUtility = function() {}

    // if non-blank, cookies shared among servers in this domain
CookieUtility.COOKIE_DOMAIN = "";

//APIs to be supported for MyFolder. Please remove/modify them after 8.14
CookieUtility.createCookie = function(name,value,days)
{
    CookieUtility.setCookieValue(name,value,days);
}

CookieUtility.readCookie = function(name)
{
    return CookieUtility.getCookieValue(name);
}

CookieUtility.eraseCookie = function(name)
{
    CookieUtility.eraseCookie(name,CookieUtility.COOKIE_DOMAIN);
}

CookieUtility.eraseCookie = function(name,domain)
{
    CookieUtility.setCookieValue(name,"",0,domain);
}

  /* Public Functions  Ported from Ford Vehicles for maintaining consistency of the Cookie Storage and retrieval from a sub-cookie format*/         
CookieUtility.setCookieValue = function(name,val,nDays)
{ 
    CookieUtility.setCookieValue(name,val,nDays,CookieUtility.COOKIE_DOMAIN);
}

CookieUtility.setCookieValue = function(name,val,nDays,domain)
{ 
    var sCookie = "" ; 
    var oToday = new Date(); 
    var oExpire = new Date();
    
    if(typeof(domain) != "string" || domain == null || domain == "")
    {
        domain = CookieUtility.COOKIE_DOMAIN;
    }
    
    if(name == "MyFolderUserId")
    {
        CookieUtility.COOKIE_DOMAIN = '.fordvehicles.com';
        domain = '.fordvehicles.com';  
        nDays = "";
    }

    if (typeof(name) == "string")
    { 
        if (name.length != 0)
        { 
            sCookie = name+"="+escape(val)+ sPATH ; 
            if (typeof(nDays) == "number")
            { 
                oExpire.setTime(oToday.getTime() + 60*60*1000*24*nDays);
                sCookie = sCookie + sEXPIRES +oExpire.toGMTString();
            }
            if (domain != '')
            {
              domain = sDOMAIN + domain; //Add domain prefix
            }
            sCookie = sCookie + domain;
            document.cookie = sCookie ; 
        } 
    } 
}         

CookieUtility.setSubCookieValue = function(sname, subname,val,nDays)
{ 
    var cookie=document.cookie; 
    var chkdCookie=CookieUtility.removeBlanks(cookie); 
    var aCookie =chkdCookie.split(";"); 
    var iCookie = CookieUtility.getCookieIndex(aCookie, sname) ; 
   
    if (iCookie >=0)
    { 
        var aSubCookie=aCookie[iCookie].split("&"); 
        var iSubCookie = CookieUtility.getSubCookieIndex(aSubCookie, subname) ; 
    } 
    
    var sCookie = ""  ;
    var oToday = new Date(); 
    var oExpire = new Date(); 

    if (typeof(sname) == "string")
    { 
        if (subname.length != 0){ 
        // Replace subcookie 
        if (Number(iSubCookie) >=0)
        { 
            for (j=0;j<aSubCookie.length;++j)
            { 
                splitValues=aSubCookie[j].split("="); 
                if (splitValues[0]==subname)
                { 
                    aSubCookie[j]=subname + "=" + escape(val); 
                } else if (splitValues[0]==sname)
                { 
                    if (splitValues[1]==subname)
                    { 
                        aSubCookie[j]=sname + "=" + subname + "=" + escape(val) ; 
                    } 
                } 
                
                if ((j > 0) &&  (j<aSubCookie.length))
                { 
                    sCookie = sCookie + "&" ; 
                }                                                 
                sCookie = sCookie + aSubCookie[j] ; 
            } 
            sCookie = sCookie + sPATH ; 
        } else 
        { 
            if (iCookie >=0)
            { 
            // Add to existing cookie         
                sCookie = aCookie[iCookie] + "&" + subname + "=" + escape(val) + sPATH ; 
            } else 
            { 
                sCookie = sname + "="+subname + "=" + escape(val) + sPATH ; 
            } 
        }                                 
        if (typeof(nDays) == "number")
        { 
            var sDomain = CookieUtility.getDomain();
            oExpire.setTime(oToday.getTime() + 3600000*24*nDays); 
            sCookie = sCookie  + sEXPIRES + oExpire.toGMTString() + sDomain ; 
        } 
        document.cookie = sCookie ; 
    } 
   } 
 }                 

CookieUtility.getCookieValue = function(cname)
{ 
    var nameEQ = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++)
    {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
} 

CookieUtility.getSubCookieValue = function(cname, subname)
{ 
    var cookie=document.cookie; 
    var chkdCookie=CookieUtility.removeBlanks(cookie); 
    var aCookie=chkdCookie.split(";"); 
    var iCookie = CookieUtility.getCookieIndex(aCookie, cname) ; 
    var iSubCookie = -1; 
    
    if (iCookie >=0)
    {         
        var aSubCookie=aCookie[iCookie].split("&"); 
        var iSubCookie = CookieUtility.getSubCookieIndex(aSubCookie, subname) ; 
    } 
    
    var sReturn = "" ;
    if (iSubCookie >= 0)
    { 
        var aT = aSubCookie[iSubCookie].split("=") ; 
        if (iSubCookie > 0)
        {               
            sReturn = aT[1];        
        } 
        else 
        {
            sReturn = aT[2];
        }
    } 
    return sReturn  ;
}                 

//Method to get the domain string in case the cookie is shared accross servers
CookieUtility.getDomain = function()
{
  var domain = '';
  if (CookieUtility.COOKIE_DOMAIN != '')
    {
      domain = sDOMAIN+CookieUtility.COOKIE_DOMAIN;
    }
    return domain;
}

CookieUtility.getSubCookieIndex = function(aSubCookies, thename)
{ 
    var splitValues; 
    var i; 
    for (i=0;i<aSubCookies.length;++i)
    { 
        if (i==0)
        { 
            splitValues=aSubCookies[i].split("="); 
            if (splitValues[1]==thename)
            { 
                return i; 
            }                         
        } else 
        { 
            splitValues=aSubCookies[i].split("="); 
            if (splitValues[0]==thename)
            { 
                return i; 
            } 
        } 
    } 
    return -1;         
}         

CookieUtility.getCookieIndex = function(aCookies, thename)
{ 
    var splitValues; 
    var i; 
    for (i=0;i<aCookies.length;++i)
    { 
        splitValues=aCookies[i].split("="); 
        if (splitValues[0]==thename)
        { 
            return i; 
        } 
    } 
    return -1;         
} 

CookieUtility.removeBlanks = function(strng)
{ 
    var result=""; 
    var i; 
    var chrn; 
    for (i=0;i<strng.length;++i) 
    { 
        chrn=strng.charAt(i); 
        if (chrn!=" ") result += chrn; 
    } 
    return result; 
} 


