    
function CookieManagerBase(baseDomain){
    this.domain = baseDomain ? baseDomain : this.getBaseDomain();
}

CookieManagerBase.prototype.domain = new String();

CookieManagerBase.prototype.get = function( c_name ){

    if (document.cookie.length>0){
        var c_start=document.cookie.indexOf(c_name+"=");
        if (c_start!=-1){
            c_start=c_start + c_name.length+1;
            var c_end=document.cookie.indexOf(";",c_start);
            if (c_end==-1){
                c_end=document.cookie.length;
            }
            return unescape(document.cookie.substring(c_start,c_end));
        }
    }
    return false;
}

CookieManagerBase.prototype.set = function( c_name, val, days ){
    days = days ? days : 3000;
    var exp = new Date();
    exp.setDate(exp.getDate() + days);
    document.cookie=c_name+"="+val+";expires="+exp.toGMTString()+";path=/;domain=." + this.domain + ";";
}
    
CookieManagerBase.prototype.remove = function( c_name ){
    var exp = new Date();
    if(get_cookie(c_name)){
        exp.setDate(exp.getDate()-3000); // expires 10 years ago
        document.cookie=c_name+"=;expires="+exp.toGMTString()+";path=/;domain=." + this.domain + ";";
    }
}

CookieManagerBase.prototype.getBaseDomain = function(){
    var full_domain = document.domain;
    var domain_bits = full_domain.split(".");
    var bit_count = domain_bits.length - 1;
    var top_level_domain = domain_bits[bit_count - 1] + "." + domain_bits[bit_count];
    return top_level_domain;
}
