/***************************************************************************/
/***************************************************************************/
/** The following scripts are IP of David B. McClung 					  **/
/**	Unlimited use licence given freely to the City of Calgary,			  **/
/**	With the condition that this message header remains intact.			  **/
/**																		  **/
/** Copyright 2008 David B. McClung  									  **/
/***************************************************************************/
/***************************************************************************/

function getAllBookmarkCookieNamesInUse() {
	var all_cookies = document.cookie.split( ';' );
	var temp_cookie = '';
	var cookie_name = '';
	var cookie_name_check = '';
	var bookmark_cookie_found = false;
	var cookiesFound = '';
	for ( i = 0; i < all_cookies.length; i++ )
	{
		temp_cookie = all_cookies[i].split( '=' );
		cookie_name = temp_cookie[0].replace(/^\s+|\s+$/g, '');
			if ( temp_cookie.length > 1 )
			{
				cookie_name_check=cookie_name.replace(/[0-9]/g, '*');
				if (cookie_name_check=='BC*'||cookie_name_check=='BC**'){
					bookmark_cookie_found = true;
					cookiesFound += cookie_name + ',';	
				}
			}else{
				// if cookie is initialized but has no value delete it since it really is useless.
				deleteCookie(cookie_name);	
			}
		cookie_name = '';
	}
	if (cookiesFound.substr(cookiesFound.length-1,1)==','){
		cookiesFound = cookiesFound.substr(0,cookiesFound.length-1);	
	}
	if ( !bookmark_cookie_found ) 
	{
		return null;
	}else{
		return cookiesFound;	
	}
}

function getAllBookmarkCookieValues( ReturnType ){
	var all_cookies = document.cookie.split( ';' );
	var temp_cookie = '';
	var cookie_name = '';
	var cookie_name_check = '';
	var bookmark_cookie_found = false;
	var valuesFound = '';
	for ( i = 0; i < all_cookies.length; i++ )
	{
		temp_cookie = all_cookies[i].split( '=' );
		cookie_name = temp_cookie[0].replace(/^\s+|\s+$/g, '');
			if ( temp_cookie.length > 1 )
			{
				cookie_name_check=cookie_name.replace(/[0-9]/g, '*');
				if (cookie_name_check=='BC*'||cookie_name_check=='BC**'){
					bookmark_cookie_found = true;
					valuesFound += temp_cookie[1].replace(/^\s+|\s+$/g, '').replace(/(%2C)/g, ',') + ',';	
				}
			}else{
				// if cookie is initialized but has no value delete it since it really is useless.
				deleteCookie(cookie_name);	
			}
		cookie_name = '';
	}
	if (valuesFound.substr(valuesFound.length-1,1)==','){
		valuesFound = valuesFound.substr(0,valuesFound.length-1);	
	}
	if ( !bookmark_cookie_found ) 
	{
		return null;
	}else{
		switch (ReturnType){
			case 'csv':
				return valuesFound;
				break;
			case 'string':
				return valuesFound.replace(/[,]/g, ' ');
				break;
			default:
				// default is Array
				getAllBookmarkValues = valuesFound.split(',');
				return getAllBookmarkValues;
				break;
		}
	}
}

function deleteAllBookmarkCookies(){
	var all_cookies = document.cookie.split( ';' );
	var temp_cookie = '';
	var cookie_name = '';
	var bookmark_cookie_found = false;
	var cookie_name_check = '';
	var valuesFound = '';
	for ( i = 0; i < all_cookies.length; i++ )
	{
		temp_cookie = all_cookies[i].split( '=' );
		cookie_name = temp_cookie[0].replace(/^\s+|\s+$/g, '');
			if ( temp_cookie.length > 1 )
			{
				cookie_name_check=cookie_name.replace(/[0-9]/g, '*');
				if (cookie_name_check=='BC*'||cookie_name_check=='BC**'){
					deleteCookie(cookie_name);	
				}
			}else{
				// if cookie is initialized but has no value delete it since it really is useless.
				deleteCookie(cookie_name);	
			}
		cookie_name = '';
	}
}

function countChars( item ) {
	return item.length;	
}

/***************************************************************************/
/***************************************************************************/
/** This script is Public Domain with slight modification. 				  **/
/**																		  **/
/** Modifications by David B. McClung	 								  **/
/***************************************************************************/
/***************************************************************************/

// this fixes an issue with the old method, ambiguous values 
// with this test document.cookie.indexOf( name + "=" );

// To use, simple do: Get_Cookie('cookie_name'); 
// replace cookie_name with the real cookie name, '' are required


function getCookie( 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;
	}
}

/*
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 (by default) the cookie
lasts, if you want it to be minutes pass 'mins', hours pass 'hrs' etc.
Valid units are 'mins', 'hrs', 'days', 'wks', 'yrs'
Anything else will default back to days.

Generally you don't need to worry about domain, path or secure for most applications
so unless you need that, leave those parameters blank in the function call.
*/
function setCookie( name, value, expires, expiresUnits, 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 )
	{
		if (expiresUnites){
			switch (expiresUnits){
				case 'mins':
					expires = expires * 1000 * 60;
					break;
				case 'hrs':
					expires = expires * 1000 * 60 * 60;
					break;
				case 'days':
					expires = expires * 1000 * 60 * 60 * 24;
					break;
				case 'wks':
					expires = expires * 1000 * 60 * 60 * 24 * 7;
					break;
				case 'yrs':
					expires = expires * 1000 * 60 * 60 * 24 * 7 * 52;
					break;
				default:
					expires = expires * 1000 * 60 * 60 * 24;
					break;
			}
		}else{
			expires = expires * 1000 * 60 * 60 * 24;
		}
	}
	//alert( 'today ' + today.toGMTString() );// this is for testing purpose only
	var expires_date = new Date( today.getTime() + (expires) );
	//alert('expires ' + expires_date.toGMTString());// this is for testing purposes only

	document.cookie = name + "=" +escape( value ) +
		( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + //expires.toGMTString()
		( ( path ) ? ";path=" + path : "" ) + 
		( ( domain ) ? ";domain=" + domain : "" ) +
		( ( secure ) ? ";secure" : "" );
}

// this deletes the cookie when called
function deleteCookie( 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";
}
