/******************************************************* 
COOKIE FUNCTIONALITY 

/****************************
ADVANCED FUNCTIONS

//Initializing a Cookie
var bobCookie = new cookie('name', 'value', integer_daysuntilexpire, '/');
//Setting a Cookie
bobCookie.set();
// Reading a Cookie
bobCookie.read();
// Killing a Cookie
bobCookie.kill();
// This changes the inner name of the cookie, 
// which is not used in this function.
bobCookie.changeName('newCookieName');
bobCookie.changeVal('newValue'); // Change value.
bobCookie.changeExp(10); // Change expiration (in days)
bobCookie.changePath('/home/'); // Change path.
bobCookie.changeDomain('.skyzyx.com'); // Change domain.
bobCookie.changeSecure('false'); // Change security.

/****************************
SIMPLE FUNCTIONS

/*****************************
SETTING A COOKIE
Parameters are:
Name, Value, Expire in days, Path, Domain, Secure
Only Name and Value are required.  Others are optional.
*****************************/
//new cookie('myCookie', 'Yessir!', 7, '/').set();


/*****************************
READING A COOKIE
The only parameter is Name
*****************************/
//new cookie('myCookie').read();


/*****************************
KILLING A COOKIE
Name is required.  Path, and Domain are only required 
if they were used in setting the cookie.
*****************************/
//new cookie('myCookie', '/').kill();

//*******************************************************/ 
function cookie(name, value, expires, path, domain, secure) 
{ 
    // Passed Values 
    this.name=name; 
    this.value=value; 
    this.expires=expires; 
    this.path=path; 
    this.domain=domain; 
    this.secure=secure; 

    // Read cookie 
    this.read=function() 
    { 
        // To allow for faster parsing 
        var ck=document.cookie; 

        var arg = this.name + "="; 
        var alen = arg.length; 
        var clen = ck.length; 
        var i = 0; 

        while (i < clen) 
        { 
            var j = i + alen; 
            if (ck.substring(i, j) == arg) 
            { 
                var endstr = ck.indexOf (";", j); 
                if (endstr == -1) endstr = ck.length; 
                return unescape(ck.substring(j, endstr)); 
            } 
            i = ck.indexOf(" ", i) + 1; 
            if (i == 0) break; 
        } 
        return null; 
    } 

    // Set cookie 
    this.set=function() 
    { 
        // Store initial value of "this.expires" for re-initialization. 
        expStore=this.expires; 

        // Set time to absolute zero. 
        exp = new Date(); 
        base = new Date(0); 
        skew = base.getTime(); 
        if (skew > 0)  exp.setTime (exp.getTime() - skew); 
        exp.setTime(exp.getTime() + (this.expires*24*60*60*1000)); 
        this.expires=exp; 

        document.cookie = this.name + "=" + escape (this.value) + 
                ((this.expires) ? "; expires=" + this.expires.toGMTString() : "") + 
                ((this.path) ? "; path=" + this.path : "") + 
                ((this.domain) ? "; domain=" + this.domain : "") + 
                ((this.secure) ? "; secure" : ""); 

        // Re-initialize 
        this.expires=expStore; 
    } 

    // Kill cookie 
    this.kill=function() 
    { 
        document.cookie = this.name + "=" + 
                ((this.path) ? "; path=" + this.path : "") + 
                ((this.domain) ? "; domain=" + this.domain : "") + 
                "; expires=Thu, 01-Jan-70 00:00:01 GMT"; 
    } 

    // Change cookie settings. 
    this.changeName=function(chName) { this.kill(); this.name=chName; this.set(); } 
    this.changeVal=function(chVal) { this.kill(); this.value=chVal; this.set(); } 
    this.changeExp=function(chExp) { this.kill(); this.expires=chExp; this.set(); } 
    this.changePath=function(chPath) { this.kill(); this.path=chPath; this.set(); } 
    this.changeDomain=function(chDom) { this.kill(); this.domain=chDom; this.set(); } 
    this.changeSecurity=function(chSec) { this.kill(); this.secure=chSec; this.set(); } 
} 
