var ckDays = 5000;                     // クッキーの有効期限（日）（ダブルクオートやクオートで括らない）
var ckPath = "/"                    // クッキーのパス（必ずダブルクオートかクオートで括る。指定がいらない場合は"/"にする）


function SetCookie(ckName , ckval){
	// cookie削減のための対応
	// MenuColor,loginmode,Zsmile,BeansMyPage,beans_syokiGamenの場合はmnxsetに設定する

	if ( ckName == "MenuColor" || ckName == "loginmode" || ckName == "Zsmile" || ckName == "BeansMyPage" || ckName == "beans_syokiGamen" || ckName ==  "BeansDaikoAccountNo" || ckName == "syokigamen_set") {
		RemoveCookie(ckName);
		SetSubCookie("mnxset",ckName,ckval);
		return;
	}
	var dobj = new Date();
	dobj.setTime( dobj.getTime() + 24 * 60 * 60 * ckDays * 1000);
	var expiryDate = dobj.toGMTString();
	var dm = "";
	if ( document.domain.indexOf(".monex.co.jp") != -1){
		dm = ";domain=.monex.co.jp";
	}
	document.cookie = ckName + '=' + ckval + ';expires=' + expiryDate + ';path=' + ckPath + dm;
}


function GetSubCookie(ckName,subName) {
	var CookieVal = GetCookie(ckName);
	if ( CookieVal == null ){
		return null;
	} else {
		var cookieArray    = new Array();
		var cookieSubArray = new Array();

		cookieArray=decodeURIComponent(CookieVal).split("&");
		for (x in cookieArray){
			cookieSubArray = cookieArray[x].split("=");
			if ( cookieSubArray[0] == subName) {
				return cookieSubArray[1];
			}
		}
		return null;
	}
}

function SetSubCookie(ckName,subName,ckval) {
	var CookieVal;
	var cookieArray     = new Array();
	var cookieSubArray  = new Array();
	var cookieSubArray2 = new Array();

	CookieVal = GetCookie(ckName);
	if ( CookieVal == null ) {
		SetCookie(ckName ,encodeURIComponent(subName + "=" + ckval));
		return;
	}
	cookieArray=decodeURIComponent(CookieVal).split("&");
	for (x in cookieArray){
		cookieSubArray = cookieArray[x].split("=");
		cookieSubArray2[cookieSubArray[0]] = cookieSubArray[1];
	}
	var StoreCookieVal = "";
	for (x in cookieSubArray2){
		if(  x != subName ) { // subNameに一致しないものは連結し、subNameは最後に連結
			StoreCookieVal = StoreCookieVal + x + "=" + cookieSubArray2[x] + "&" ;
		}
	}
	if ( StoreCookieVal != "") {
		StoreCookieVal = StoreCookieVal + subName + "=" + ckval;
	} else {
		StoreCookieVal = subName + "=" + ckval;
	}
	var dobj = new Date();
	dobj.setTime( dobj.getTime() + 24 * 60 * 60 * ckDays * 1000);
	var expiryDate = dobj.toGMTString();
	var dm = "";
	if ( document.domain.indexOf(".monex.co.jp") != -1){
		dm = ";domain=.monex.co.jp";
	}
	document.cookie = ckName + '=' + encodeURIComponent(StoreCookieVal) + ';expires=' + expiryDate + ';path=' + ckPath + dm;
}

function GetCookie(ckName){
	// MenuColor,loginmode,Zsmile,BeansMyPage,beans_syokiGamenの場合は
	// まず、mnxsetから検索して、無い場合は、その名前で検索し、書き込んだ後に削除する

	var CookieVal;

	if ( ckName == "MenuColor" || ckName == "loginmode" || ckName == "Zsmile" || ckName == "BeansMyPage" || ckName == "beans_syokiGamen" || ckName ==  "BeansDaikoAccountNo" || ckName == "syokigamen_set") {
		CookieVal = GetSubCookie("mnxset",ckName);
		if ( CookieVal != null ) {
			// 複数個ある場合があるので、再度チェックして、無理矢理削除
			RemoveCookie(ckName);
			return CookieVal;
		}
	}
	var arg  = ckName + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	var i2 = 0;

	// 別pathでcustom_numがある（＝クッキー内に同じ名前が複数ある）場合の対応	
	var custom_numArray  = new Array();
	var custom_num_cnt   = 0 ;

	if ( ckName == "custom_num") {
		while (i2 < clen){
			var j2 = i2 + alen;
			if (document.cookie.substring(i2, j2) == arg) {
				custom_numArray[custom_num_cnt] = getCookieVal(j2,ckName);
				custom_num_cnt++;
			}
			i2 = document.cookie.indexOf(" ", i2) + 1;
			if (i2 == 0) break;
		}
		if ( custom_num_cnt > 1 ) { // ダブっている場合（"2"のみを想定）
			for (var i3 = 0 ; i3 < custom_num_cnt ; i3++ ) {
				RemoveCookie("custom_num"); // 一旦、全て削除
			}
			SetCookie("custom_num" , custom_numArray[0]); 
		}
	}

	while (i < clen){
		var j = i + alen;
		if (document.cookie.substring(i, j) == arg) {
			CookieVal = getCookieVal(j,ckName);
			if ( ckName == "MenuColor" || ckName == "loginmode" || ckName == "Zsmile" || ckName == "BeansMyPage" || ckName == "beans_syokiGamen" || ckName ==  "BeansDaikoAccountNo" || ckName == "syokigamen_set") {
				SetSubCookie("mnxset", ckName , CookieVal);
				RemoveCookie(ckName);
			}
			return CookieVal;
		}
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) break;
	}
	return null;
}

function getCookieVal (offset,ckName){
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1)
	endstr = document.cookie.length;
	return document.cookie.substring(offset,endstr);
}

function RemoveCookie(ckName) {
	dTime = new Date();
	dTime.setYear(dTime.getYear() - 1);
	document.cookie = ckName + "="  + ";expires=" + dTime.toGMTString() + ";path=" + ckPath;
}
