/**
 * ÄíÅ° ¼³Á¤
 * @param name
 * @param value
 * @param expires
 * @param path
 * @param domain
 */
function setCookie(name, value, expires, path, domain) {
    var todayDate = new Date();
    todayDate.setDate(todayDate.getDate() + expires);
    document.cookie = name + "=" + escape(value) + ";" + "path=" + path + ";domain=" + domain + ";expires=" + todayDate.toGMTString();
}

/**
 * Äí±â Ã£±â
 * @param Name
 * @returns
 */
function getCookie(Name) {
    var search = Name + "=";
    if (document.cookie.length > 0) {
        offset = document.cookie.indexOf(search);
        if (offset != -1) {
            offset += search.length;
            end = document.cookie.indexOf(";", offset);
            if (end == -1) end = document.cookie.length;
            return document.cookie.substring(offset, end);
        }
    }
    return '';
}

/**
 * ¸á·Ð ·Î±×ÀÎ ¿©ºÎ
 * @returns {Boolean}
 */
function isMelonLogin() {

    var memberKey = getMUACHeaderCookie("memberKey");
    if (memberKey == "undefined" || memberKey == undefined || memberKey.length <= 0) return false;
    return true;
}

/**
 * È¸¿øÅ°
 * @returns
 */
function getMemberKey() {

    return getMUACHeaderCookie("memberKey");
}

/**
 * È¸¿ø¾ÆÀÌµð
 * @returns
 */
function getMemberId() {

    return getMHCHeaderCookie("memberId");
}

/**
 * È¸¿ø´Ð³×ÀÓ
 * @returns
 */
function getMemberNickName() {

	return getMUACHeaderCookie("memberNickName");

}

/**
 * È¸¿ø³ªÀÌ
 * @returns
 */
function getMemberAge() {

    return getMUACHeaderCookie("memberAge");
}

/**
 * È¸¿ø¼ºº°
 * @returns
 */
function getMemberSex() {

	return getMUACHeaderCookie("memberSex");

}

/**
 * È¸¿øÀÓ½Ãºñ¹Ð¹øÈ£¿©ºÎ
 * @returns
 */
function getMemberTempPwdYn() {

	return getMUACHeaderCookie("memberTempPwdYn");

}

/**
 * È¸¿ø»ý³â¿øÀÏ
 * @returns {String}
 */
function getMemberBirthDay() {

    var age = getMUACHeaderCookie("memberAge");
    var curDate = new Date();
    var year = curDate.getYear();
    var birth = year - age + 1;
    return birth + "0101";
}

/**
 * È¸¿ø ¼ºÀÎ¿©ºÎ
 * @returns {String} : 0:¹Ì¼º³âÀÚ, 1:¼ºÀÎ ½Ç¸íÀÎÁõ, 2:¼ºÀÎ ½Ç¸í¹ÌÀÎÁõ
 */
function isMemberAdult() {

    var memberAge = getMUACHeaderCookie("memberAge");
    var realNameYn = getMUACHeaderCookie("realNameYn");
    if (memberAge < 19) {
        return "0";
    } else if (memberAge >= 19 && realNameYn == "Y") {
        return "1";
    } else if (memberAge >= 19 && realNameYn == "N") {
        return "2";
    }
}

/**
 * »óÇ°À¯¹«???
 * @returns {Boolean}
 */
function isFreeUser() {
    var svcName = getMHCHeaderCookie("prodId");
    if (svcName == "undefined" || svcName == undefined || svcName.length <= 0) return true;
    return false;
}

/**
 * ¸á·ÐÄ³½¬
 * @returns
 */
function getMelonCash() {
    return getMHCHeaderCookie("melonCash");
}

/**
 * È¸¿ø ¹ÞÀº ¼±¹° °Ç¼ö
 * @returns
 */
function getMemberGiftCnt() {
    return getMHCHeaderCookie("memberGiftCnt");
}

/**
 * ¸á·ÐÆ÷ÀÎÆ®
 * @returns
 */
function getMelonPoint() {
    return getMHCHeaderCookie("melonPoint");
}

/**
 * »óÇ°¾ÆÀÌµð
 * @returns
 */
function getProdId() {
    return getMHCHeaderCookie("prodId");
}

/**
 * »óÇ°¸í
 * @returns
 */
function getProdName() {
	return getMHCHeaderCookie("prodName");
}

/**
 * »óÇ°Á¾·áÀÏ
 * @returns
 */
function getProdToDate() {
	return getMHCHeaderCookie("prodToDate");
}

/**
 * ÀÚµ¿°áÀç½ÇÆÐ Á¤º¸
 * Y : ÇÁ¸®Å¬·´ ÀÚ°á½ÇÆÐ , M : MP3 ÀÚ°á½ÇÆÐ  º¯°æ¾Ë¸².
 * @returns
 */
function getAutoRechargeFail() {
	return getMHCHeaderCookie("autoRechargeFail");
}

/**
 * °í°´¼¼ºÐÈ­ Á¤º¸
 * ¼¼±×¸ÕÆ®ÄÚµå|»óÇ°¾ÆÀÌµð|....,¼¼±×¸ÕÆ®ÄÚµå|»óÇ°¾ÆÀÌµð,¼¼±×¸ÕÆ®.... .
 * @returns
 */
function getSeqmtCode() {
	return getMHCHeaderCookie("seqmtCode");
}

/**
 * ºñ¹Ð¹øÈ£º¯°æ Á¤º¸
 * Y ÀÏ¶§ ºñ¹Ð¹øÈ£º¯°æ ¾Ë¸².
 * @returns
 */
function getMemberTempPwdYn() {
	return getMUACHeaderCookie("memberTempPwdYn");
}

/**
 * androidCarrier°¡ 0ÀÌ¸é Æù¹øÈ£, 1ÀÌ¸é ÇöÀç È¸¿ødbÀÇ min¹øÈ£ ¶Ç´Â °¡»ómin¹øÈ£
 */
function getAndroidCkMdn() {
	return getMUADHeaderCookie("androidCkMdn");
}

/**
 * dcfÁö¿ø¿©ºÎ( 0:¹ÌÁö¿ø or 1:Áö¿ø)
 * Y/N
 * @returns
 */
function getAndroidCkDcf() {
	return getMUADHeaderCookie("androidCkDcf");
}

function chkMACAuth() {
    var buf = getCookie("MAC");

    return (buf == null || buf == '') ? false : true;
}

function chkMUACAuth() {
    var bug1 = getCookieMUAC();
    return (buf1 == null || buf1 == '') ? false : true;
}

/**
 * »óÇ°¿¡ ´ëÇÑ MHC cookieÁ¤º¸¸¦ °¡Á®¿Â´Ù.
 * @param Name
 * @returns
 *
 * ex)getMHCHeaderCookie("memberId");
 */
function getMHCHeaderCookie(Name) {

    var cookieNameArray = new Array();
    var strBuf = unescape(decodeURIComponent(Base64.decode(getCookie("MHC"))));
    //var strBuf = Base64.decode(getCookie("MHC"));

    if (strBuf == null) return null;

    var arrStr = strBuf.split(";");
    cookieNameArray['memberId'] = arrStr[0];
    cookieNameArray['melonCash'] = arrStr[1];
    cookieNameArray['memberGiftCnt'] = arrStr[2];
    cookieNameArray['melonPoint'] = arrStr[3];
    cookieNameArray['prodId'] = arrStr[4];
    cookieNameArray['prodName'] = arrStr[5];
    cookieNameArray['prodToDate'] = arrStr[6];
    cookieNameArray['autoRechargeFail'] = arrStr[7];
    cookieNameArray['seqmtCode'] = arrStr[8];

    return cookieNameArray[Name];
}

/**
 * singleton ÆÐÅÏÀ» ÀÌ¿ëÇÏ±â À§ÇØ¼­ ÀÛ¼º
 * ½Ç¸íÀÎÁõ Á¤º¸(MUAC)´Â ÇÑ¹ø µî·ÏÇÏ°í ¶Ç ÀÐÀ» ÇÊ¿ä¾øÀ½.
 * @returns
 */
var singletonCookieMUAC; //singleton Àü¿ªº¯¼ö

function getCookieMUAC() {
    if (singletonCookieMUAC == undefined) {
        var strBuf = getCookie('MUAC');
        if (strBuf != null) {
            singletonCookieMUAC = unescape(decodeURI(Base64.decode(strBuf)));
        }
    }
    return singletonCookieMUAC;
}

/**
 * ½Ç¸íÀÎÁõ Á¤º¸¿¡ ´ëÇÑ MUAC cookie Á¤º¸¸¦ °¡Á®¿Â´Ù.
 * @param Name
 * @returns
 *
 * ex)getMUACHeaderCookie("memberKey");
 */
function getMUACHeaderCookie(Name) {
    var cookieNameArray = new Array();
    var strBuf = getCookieMUAC();
    if (strBuf == null) return null;

    var arrStr = strBuf.split(";");
    cookieNameArray['memberKey'] = arrStr[0];
    cookieNameArray['memberAge'] = arrStr[1];
    cookieNameArray['realNameYn'] = arrStr[2];
    cookieNameArray['memberNickName'] = arrStr[3];
    cookieNameArray['memberSex']= arrStr[4];
    cookieNameArray['memberTempPwdYn'] = arrStr[5];
    return cookieNameArray[Name];
}


var singletonCookieMUAD;

function getCookieMUAD(){
    if(singletonCookieMUAD==undefined){
        var strBuf = getCookie('MUAD');
        if(strBuf != null){
            singletonCookieMUAD = Base64.decode(strBuf);
        }
    }
    return singletonCookieMUAD;
}

function getMUADHeaderCookie(Name){
    var cookieNameArray = new Array();
    var strBuf = getCookieMUAD();
    if(strBuf == null) return null;

    var arrStr = strBuf.split(";");
    cookieNameArray['androidCkMdn'] = arrStr[0];
    cookieNameArray['androidCkDcf'] = arrStr[1];
    return cookieNameArray[Name];
}

/**
*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*
**/

var Base64 = {

	// private property
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

	// public method for encoding
	encode : function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;

		input = Base64._utf8_encode(input);

		while (i < input.length) {

			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);

			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;

			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}

			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

		}

		return output;
	},

	// public method for decoding
	decode : function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;

		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

		while (i < input.length) {

			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));

			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;

			output = output + String.fromCharCode(chr1);

			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}

		}

		output = Base64._utf8_decode(output);

		return output;

	},

	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";

		for (var n = 0; n < string.length; n++) {

			var c = string.charCodeAt(n);

			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}

		}

		return utftext;
	},

	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;

		while ( i < utftext.length ) {

			c = utftext.charCodeAt(i);

			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}

		}

		return string;
	}

}
