
/**
 * cookie path
 */
var DEFAULT_COOKIE_PATH = "/";
/**
 * cook domain
 */
var DEFAULT_COOKIE_DOMAIN = ".interpark.com";	// 218.144.89.9, .interpark.com
/**
 * cookie expire time in seconds
 */
var DEFAULT_COOKIE_EXPIRY = -1;    // user's session dependant

var DEFAULT_COOKIE_STAMPTIME = 3600;	// ÄíÅ° Å¸ÀÓ¾Æ¿ô - 1½Ã°£

var COOKIE_DILIM = "^";

/**
 * set a cookie value.
 * ÀÏ¹ÝÀûÀÎ Å¸ÀÓ¾Æ¿ôÀÌ ¾ø´Â(ºê¶ó¿ìÀú ¼¼¼Ç¿¡ Á¾¼ÓÀûÀÎ) ÄíÅ°¸¦ »ý¼ºÇÔ.
 *
 * @param name Cookie name - required
 * @param value Cookie value - required
 * @param secure make cookie secure(SSL, HTTPS) - optional 
 */
function setCookie(name, value, secure) {
	_setCookie(name, value, secure);
}

/**
 * Å¸ÀÓ¾Æ¿ôÀÌ ÀÖ´Â(¼³Á¤µÈ ½Ã°£¸¸Å­ Å¬¶óÀÌ¾ðÆ®¿¡ ÀúÀåµÇ´Â) ÄíÅ°¸¦ »ý¼ºÇÔ.
 *
 * @param name Cookie name - required
 * @param value Cookie value - required
 * @param secure make cookie secure(SSL, HTTPS) - optional 
 */
function setCookieTimeout(name, value, secure) {
	_setCookieDefault(name, value, DEFAULT_COOKIE_STAMPTIME, secure);
}

/**
 * ÄíÅ°¸¦ »ý¼ºÇÔ.
 *
 * @param name Cookie name - required
 * @param value Cookie value - required
 * @param expire Cookie timeout in seconds
 * @param secure make cookie secure(SSL, HTTPS) - optional 
 */
function _setCookieDefault(name, value, expire, secure) {
	var cookie = name + "=" + escape(value);

	if (expire >= 0) {
		var date = new Date();
		date.setSeconds(date.getSeconds() + expire);
		cookie += "; expires=" + date.toGMTString();
	}

	cookie += "; domain=" + DEFAULT_COOKIE_DOMAIN
		    + "; path=" + DEFAULT_COOKIE_PATH;

	if (secure) cookie += ";secure;";

	document.cookie = cookie;
}

/**
 * ÄíÅ°¸¦ ¼³Á¤ÇÔ.
 *
 * @param name Cookie name - required
 * @param value Cookie value - required
 * @param secure make cookie secure(SSL, HTTPS) - optional 
 */
function _setCookie(name, value, secure) {
	_setCookieDefault(name, value, DEFAULT_COOKIE_EXPIRY, secure);
}

/**
 * get a cookie value.
 *
 * @param name cookie name
 * @return cookie value
 */
function getCookie(name) {
	return _getCookie(name);
}

/**
 * get a cookie value.
 *
 * @param name cookie name
 * @return cookie value
 */
function _getCookie(name) {
	var nameOfCookie = name + "=";
	var x = 0;
	while ( x <= document.cookie.length )
	{
		var y = (x+nameOfCookie.length);
		if ( document.cookie.substring( x, y ) == nameOfCookie ) {
			if ( (endOfCookie=document.cookie.indexOf( ";", y )) == -1 )
				endOfCookie = document.cookie.length;
			return unescape( document.cookie.substring( y, endOfCookie ) );
		}
		x = document.cookie.indexOf( " ", x ) + 1;
		if ( x == 0 )
			break;
	}
	return "";
}

/**
 * get cookie count
 *
 * @return cookie count
 */
function getCookieCount() {
	return _getCookieCount();
}

/**
 * get cookie count
 *
 * @return cookie count
 */
function _getCookieCount() {
	var cookies = document.cookie.split("; ");
	return cookies == null ? -1 : cookies.length;
}

/**
 * ÇÑ ÄíÅ°¿¡ ¿©·¯°³ÀÇ °ªÀ» ¼³Á¤ÇÑ °æ¿ì¿¡ ±× °ªµéÀ» ¹è¿­·Î ¾ò´Â´Ù.
 * °¢ °ªÀ» ±¸ºÐÇÏ´Â ¹®ÀÚ´Â ^(caret)ÀÌ´Ù.
 *
 * @param name cookie name
 * @return array of cookie value
 */
function getCookieValues(name) {
	var cookie = _getCookie(name);
	return cookie.split(COOKIE_DILIM);
}
