/*
 * Function to set a cookie
 * @param cookie_name - string
 *     name of the cookie
 * @param cookie_key - string
 *     the key
 * @param cookie_value - string
 *     the value to be assigned to the key
 * 
 * Requires: readCookie(), createCookie()
 */
function modCookie(cookie_name, cookie_key, cookie_value){
	
	var change_value=false;
  var cookie_changed = false;
	var str_newcookie="";
	
	var cookie = readCookie(cookie_name);

	if (cookie){
		cookie = unescape(cookie);
		var arr_cookie_fields = cookie.split("&");

		for(var i=0; i<arr_cookie_fields.length; i++)
		{
      if (change_value) { 
         arr_cookie_fields[i] = cookie_value + "";
         change_value = false;
         cookie_changed = true;
      }
			else if (arr_cookie_fields[i] && arr_cookie_fields[i].indexOf(cookie_key) == 0)
			{
				change_value = true;
			}		
			if (arr_cookie_fields[i].length>0) {
        str_newcookie += arr_cookie_fields[i];
      }
      if(i+1 < arr_cookie_fields.length) {
         str_newcookie += '&';
      }
		}
	  if (cookie_changed) {
	    createCookie(cookie_name, str_newcookie, 1);
	  } else {  // value not set in cookie
      str_newcookie += cookie_key+"&"+cookie_value;
	    createCookie(cookie_name, str_newcookie, 1);
    }
	} else { // no cookie found
    str_newcookie += cookie_key+"&"+cookie_value;
    createCookie(cookie_name, str_newcookie, 1);
  }
	

}

/*
 * Function to read a cookie
 * @param name - string
 *     name of the cookie
 * @returns string with all cookie keys and values
 */
function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

/*
 * Function to create a cookie
 * @param name - string
 *     name of the cookie
 * @param value - string
 *     the list of values and key to be assigned to the cookie
 */
function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else
		var expires = "";
	document.cookie = name+"="+value+expires+"; domain=.guba.com; path=/";
	readCookie(name);
}

function getCookie( _name )
{
    var _value = '';
    if (typeof document.cookie != 'undefined' && document.cookie != null)
    {
        var _cookieStr = document.cookie.replace (new RegExp (' ','g'),'');
        var _cookies = _cookieStr.split (';');
        
        for (var _cookieNo = 0; _cookieNo < _cookies.length; _cookieNo++)
        {
            var _cookie = _cookies [_cookieNo].split ('=');
            
            if (unescape (_cookie [0]) == _name)
            {
                _value = (typeof _cookie [1] == 'string') ? unescape (_cookie [1]) : '';
                break;
            }
        }
    }
    return _value;
};
