/*------------------------------------------------------------------
    Author      :   Hotel.M.Hou
    Create Date :   2008-01-30
    Function    :   Access to client cookies
    NameSpace   :   Newegg.Xpert.Cookie
-------------------------------------------------------------------*/

/*-------- Register Namespace (Start)------------------------------*/
var Newegg = ( ( "undefined" == typeof( Newegg ) ) ? {} : Newegg );
Newegg.Xpert = ( ( "undefined" == typeof( Newegg.Xpert ) ) ? {} : Newegg.Xpert );
Newegg.Xpert.Cookie = ( ( "undefined" == typeof( Newegg.Xpert.Cookie ) ) ? {} : Newegg.Xpert.Cookie );
/*-------- Register Namespace (Start)------------------------------*/

/*-------- Cookie Method (Start)------------------------------------*/

Newegg.Xpert.Cookie.exist = function ( keyName )
{
    var internalName;
    internalName = escape( keyName );
    return !( document.cookie.indexOf( internalName + "=" ) == -1 );
};

Newegg.Xpert.Cookie.add = function ( keyName, keyValue, expireDate )
{
    var oldLen =0, newLen = 0, newCookie;
    // keyName already exists.
    if ( Newegg.Xpert.Cookie.exist( keyName ) )
    {
        return false;
     }
    
    oldLen = document.cookie.length;
    if ( expireDate instanceof Date )
    {
        newCookie = escape(keyName) + "=" + escape(keyValue) +"; expire=" + expireDate.toGMTString();
     }
    else
    {        
        newCookie = escape(keyName) + "=" + escape(keyValue);
     } 
    document.cookie = newCookie;
    newLen = document.cookie.length;
    
    return ( newLen == oldLen + newCookie.length );
};

Newegg.Xpert.Cookie.update = function ( keyName, keyValue, expireDate  )
{
    var oldLen =0, newLen = 0, newCookie;
    // keyName does not exists.
    if ( !Newegg.Xpert.Cookie.exist( keyName ) )
    {
        return false;
    }
        
    oldLen = document.cookie.length;
    if ( expireDate instanceof Date )
    {
        newCookie = escape(keyName) + "=" + escape(keyValue) +"; expires=" + expireDate.toGMTString();
     }
    else
    {        
        newCookie = escape(keyName) + "=" + escape(keyValue);
     } 
    //put a new value again to update old value;
    document.cookie = newCookie;
    newLen = document.cookie.length;
    
    return ( newLen == oldLen + newCookie.length );
};

Newegg.Xpert.Cookie.getValue = function ( keyName )
{
    var start,start1,end,value,internalName;
    internalName = escape( keyName );
    start1 = document.cookie.indexOf( internalName + "=");
    if ( !Newegg.Xpert.Cookie.exist( keyName ) )
    {
        return "";
    }
    else
    {
        start = document.cookie.indexOf( "=", start1 ) + 1; 
        end = document.cookie.indexOf( ";" , start );
        if ( end ==-1 )
        {
            end = document.cookie.length;
         }
        value = unescape( document.cookie.substring( start, end ) );
        return ( value == null ? "" : value );
     }   
};

Newegg.Xpert.Cookie.setExpire = function ( keyName, expireDate )
{
    var value = Newegg.Xpert.Cookie.getValue(keyName);
    Newegg.Xpert.Cookie.update(keyName,value, expireDate);
};

Newegg.Xpert.Cookie.remove = function ( keyName )
{
    var value = Newegg.Xpert.Cookie.getValue(keyName);
    var date = new Date();
    date.setTime(date.getTime()-(86400 * 1000 * 1));
    Newegg.Xpert.Cookie.update(keyName,value, date);
};

/*-------- Cookie Method (End)------------------------------------*/