
/*
Script Name: Javascript Cookie Script
Author: Public Domain, with some modifications
Script Source URI: http://techpatterns.com/downloads/javascript_cookies.php
Version  1.1.1
File Last Modified: October 04, 2007. 12:06:16 pm

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
*/




//////////////////////////////////////////////////////////////////////////////////////////
//
// Sample Usage
//
				
/*
Sample Page Code for Javascript Cookies

<script type="text/javascript">
  // remember, these are the possible parameters for Set_Cookie:
  // name, 
  // value, 
  // expires, 
  // path, 
  // domain, 
  // secure
  
  Set_Cookie('test', 'it works', '', '/', '', '' );
  
  if(Get_Cookie('test')) alert(Get_Cookie('test'));
  
  
  // and these are the parameters for Delete_Cookie:
  // name, 
  // path, 
  // domain
  // make sure you use the same parameters in Set and Delete Cookie.

  // WARNING: Do not assume the Cookie has actually been deleted during that session, 
  //          both Opera and IE have in some of their browser versions maintained the 
  //          cookie until you restart your browser even if you have deleted it in the 
  //          script. If script functionality depends on the delete action having 
  //          happened, make sure you do another Get_Cookie test on the deleted cookie 
  //          to make sure it's actually deleted. 
  
  Delete_Cookie('test', '/', '');
  (Get_Cookie('test')) ? alert(Get_Cookie('test')) :
  alert( 'it is gone');
</script>
*/




//////////////////////////////////////////////////////////////////////////////////////////
//
// Function: Get_Cookie
//
				
// this function gets the cookie, if it exists

/*
This will retrieve the cookie by name, if the cookie does not exist, it will return 
false, so you can do things like if (Get_Cookie('your_cookie')) do something. 
*/

function Get_Cookie( check_name ) {
    // first we'll split this cookie up into name/value pairs
    // note: document.cookie only returns name=value, not the other components
    var a_all_cookies = document.cookie.split( ';' );
    var a_temp_cookie = '';
    var cookie_name = '';
    var cookie_value = '';
    var b_cookie_found = false; // set boolean t/f default f

    for ( i = 0; i < a_all_cookies.length; i++ ) {
        // now we'll split apart each name=value pair
        a_temp_cookie = a_all_cookies[i].split( '=' );


        // and trim left/right whitespace while we're at it
        cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

        // if the extracted name matches passed check_name
        if ( cookie_name == check_name ) {
            b_cookie_found = true;
            // we need to handle case where cookie has no value but exists (no = sign, that is):
            if ( a_temp_cookie.length > 1 ) {
                cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
            }
            // note that in cases where cookie is initialized but no value, null is returned
            return cookie_value;
            break;
        }
        a_temp_cookie = null;
        cookie_name = '';
    }
    
    if ( !b_cookie_found ) {
        return null;
    }
}




//////////////////////////////////////////////////////////////////////////////////////////
//
// Function: Set_Cookie
//
				
/*
only the first 2 parameters are required, the cookie name, the cookie
value. Cookie time is in milliseconds, so the below expires will make the 
number you pass in the Set_Cookie function call the number of days the cookie
lasts, if you want it to be hours or minutes, just get rid of 24 and 60.

If no value is set for expires, it will only last as long as the current session of 
the visitor, and will be automatically deleted when they close their browser. 

If you want the cookie available only in one folder, you will need to add '/folder_name/' 
as a path variable, that tells the script to set the cookie for just that path, not for 
the whole domain. As a good general rule, set the path to '/', the root of your website. 

Generally 'domain' and 'secure' are not something you will be needing to use unless you set 
the cookie on a subdomain, in which case you may want to set the domain to your primary domain 
if you want it to be accessible from the main domain, or other subdomains


*/
function Set_Cookie( name, value, expires, path, domain, secure ) {
    // set time, it's in milliseconds
    var today = new Date();
    today.setTime( today.getTime() );

    /*
    if the expires variable is set, make the correct
    expires time, the current script below will set
    it for x number of days, to make it for hours,
    delete * 24, for minutes, delete * 60 * 24
    */
    if ( expires ) {
        expires = expires * 1000 * 60 * 60 * 24;
    }
    
    var expires_date = new Date( today.getTime() + (expires) );

    document.cookie = name + "=" +escape( value ) +
    ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
    ( ( path ) ? ";path=" + path : "" ) +
    ( ( domain ) ? ";domain=" + domain : "" ) +
    ( ( secure ) ? ";secure" : "" );
}




//////////////////////////////////////////////////////////////////////////////////////////
//
// Function: Delete_Cookie
//
				
// this deletes the cookie when called
/*
Here all you need to do is put in: Delete_Cookie('cookie name', '/', '') and the cookie 
will be deleted. Remember to match the cookie name, path, and domain to what you have it 
in Set_Cookie exactly, or you may get some very hard to diagnose errors. 
*/

function Delete_Cookie( name, path, domain ) {
  if ( Get_Cookie( name ) ) document.cookie = name + "=" +
      ( ( path ) ? ";path=" + path : "") +
      ( ( domain ) ? ";domain=" + domain : "" ) +
      ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}