// JavaScript Document
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

var ie=document.all?1:0
var ns6=document.getElementById&&!document.all?1:0
var opera=window.opera?1:0

//グローバル変数の宣言

var folders=new Array();
var images=new Array();
var sw="/modpub/images/show.gif"        //フォルダ表示時のアイコン画像
var hd="/modpub/images/hide.gif"        //フォルダ非表示時のアイコン画像

function changeFolder(MaxItems,ActiveItems,subobjname,imgobjname) {
//動作をトグルに変更
    if (ie||ns6||opera) {
        for (i=0;i<MaxItems;i++){
            folders[i]=ns6?document.getElementById(subobjname+i).style:document.all(subobjname+i).style
            images[i]=ns6?document.getElementById(imgobjname+i):document.all(imgobjname+i)
        }
        if (folders[ActiveItems].display=="none") {
            folders[ActiveItems].display=""
            images[ActiveItems].src=sw
        }else{
            folders[ActiveItems].display="none"
            images[ActiveItems].src=hd
        }
        saveFolder(MaxItems,subobjname);
    }
}
function saveFolder(MaxItems,subobjname){
    if (ie||ns6||opera) {
        cookie_str="";

        for (i=0;i<MaxItems;i++){
            folders[i]=ns6?document.getElementById(subobjname+i).style:document.all(subobjname+i).style
            cookie_str+=(folders[i].display=="none")?"0":"1";
        }
        setCookie("leftGenre",cookie_str);
    }
}
function loadFolder(MaxItems,subobjname,imgobjname){
    if (ie||ns6||opera) {
        cookie_str=getCookie("leftGenre");
        for (i=0;i<MaxItems;i++){
            folders[i]=ns6?document.getElementById(subobjname+i).style:document.all(subobjname+i).style
            images[i]=ns6?document.getElementById(imgobjname+i):document.all(imgobjname+i)
        }
        if(cookie_str!=""){
            for (i=0;i<MaxItems;i++){
                if (cookie_str.substr(i,1)=="1") {
                    folders[i].display=""
                    images[i].src=sw
                }else{
                    folders[i].display="none"
                    images[i].src=hd
                }
            }
        }else{
            folders[0].display=""
            images[0].src=sw
            for (i=1;i<MaxItems;i++){
                folders[i].display="none"
                images[i].src=hd
            }
        }
    }
}
function getCookieVal(offset){
    endstr=document.cookie.indexOf(";",offset);
    if(endstr == -1){
        endstr=document.cookie.length;
    }
    return unescape(document.cookie.substring(offset,endstr));
}
function getCookie(name){
    arg=name+"=";
    alen=arg.length;
    clen=document.cookie.length;
    i=0;
    while(i<clen){
        j=i+alen;
        if(document.cookie.substring(i,j)==arg){
            return getCookieVal(j);
        }
        i=document.cookie.indexOf(" ",i)+1;
        if(i==0) break;
    }
    return "";
}
function setCookie(name,value){

    // pathの指定が無いためleftGenreのツリーが開いたり閉じたりしていたのを修正
    document.cookie = name+"="+escape(value)+"; domain=.dlsite.com; path=/;";

//    domain = ".dlsite.com";
//    document.cookie+= "; domain="+domain;


//    document.cookie=name+"="+escape(value);

    //本当はMO_COOKIE_DOMAINを使いたいけど、暫定処理

//    document.cookie="path=/";

}
function Display(id){
    if(document.all){
        if(document.all(id).style.display == "block"){
            document.all(id).style.display = "none";
        }else if(document.all(id).style.display == "none"){
            document.all(id).style.display = "block";
        }
    }else if(document.getElementById){
        if(document.getElementById(id).style.display == "block"){
            document.getElementById(id).style.display = "none";
        }else if(document.getElementById(id).style.display == "none"){
            document.getElementById(id).style.display = "block";
        }
    }
}


/* カートの中身のポップアップ表示用メソッド */
var popupCart_start = null;
/* カートポップアップ制御用フラグ */
var popupCart_Display = false;


/*
   カートポップアップを表示する　
    method   openPopupCart(event, url)
    param    event    マウスイベント
    param    url      TargetajaxのURL
*/
function openPopupCart(event, url) {
    
    var evetTime = eventTime = getPopupCartEventTime();
	var popup_cartDiv = document.getElementById('popup_cart');
    
    popupCart_Display = true;
      
    if (popup_cartDiv) {       
        //短時間(1秒未満)でポップアップイベントが発生した場合は、
        //前回に取得した内容を表示する
        if (eventTime == 0 && popup_cartDiv.innerHTML != "") {       
        	popup_cartDiv.style.top = y + "px";
        	popup_cartDiv.style.left = x + "px";
    		popup_cartDiv.style.display = 'block';
           
            return;
        }
              
    	popup_cartDiv.style.display = 'none';
    
    	if (!document.all) {
    		x = event.pageX - 0;
    		y = event.pageY + 25;
    	} else {
    		x = event.clientX + document.documentElement.scrollLeft - 0;
    		y = event.clientY + document.documentElement.scrollTop + 25;
    	}
    	popup_cartDiv.style.top = y + "px";
    	popup_cartDiv.style.left = x + "px";
    
    	sendRequest(callbackPopupCart, 'dummy', 'POST', url, true, true);
	}  
}

/*
   カートポップアップを非表示にする　
    method   closePopupCart()
*/
function closePopupCart() {
    
	var popup_cartDiv = document.getElementById('popup_cart');
	popup_cartDiv.style.display = 'none';
    
    popupCart_Display = false;
}


/*
   カートポップアップのCallBack関数(ajaxCallBack)
    method   callPopupCart()
    param    event    ajaxからの戻り値(cartのtemplate)
*/
function callbackPopupCart(response) {

	var popup_cartDiv = document.getElementById('popup_cart');
    var popup_cartTag = response.responseText;
    
	if (popup_cartDiv && popup_cartTag && popupCart_Display) {
    	popup_cartDiv.innerHTML = popup_cartTag;
		popup_cartDiv.style.display = 'block';
	} else {
    	popup_cartDiv.style.display = 'none';        
    }
}

/*
   カートポップアップのイベント発生時間を返す
    method   getPopupCartEventTime()
*/
function getPopupCartEventTime() {
    
    var eventTime = 0;
    var popupCart_end = new Date();
    
    if (popupCart_start) {
        eventTime = popupCart_end.getTime() - popupCart_start.getTime();
        eventTime = Math.floor(eventTime/1000);
        popupCart_start = popupCart_end;
    } else {
        popupCart_start = new Date();      
    }
    
    return eventTime;
}

/****
 * フィルタ対象となる画像を差替える
 ****/
function openImageFilter() {

	var elements = document.getElementsByName('filter_target');
	var filter_type = new Array();
	var target_type = new Array();
	var target_product_id = '';
	var id_suffix = '';

	//alert (getCookieValue('DL_DISPSETTING'));

	var domain = document.domain;

	if (domain.match(/eng.dlsite.com/i)) {
		filter_type = getCookieValue('DL_DISPSETTING_ENG').split('_');
	} else {
		filter_type = getCookieValue('DL_DISPSETTING').split('_');
	}

	for (i=0; i<elements.length; i++) {
		// 画像の属性を取得
		target_type = (elements[i].className).substring(12).split('_');
		// worknoを取得
		target_product_id = (elements[i].id).substring(12);

		filtering:
		for (j=0; j<filter_type.length; j++) {
			for (k=0; k<target_type.length; k++) {
				// 画像の属性がフィルタ対象だった場合
				if (filter_type[j] == target_type[k]) {
					id_suffix = target_product_id + '_' + getImageFileName(elements[i].src);

					// 親のAタグにidを付与(target_link_ + workno + 画像ファイル名) 親Aタグのhrefを置換
					elements[i].parentNode.id   = 'target_link_' + id_suffix;
					elements[i].parentNode.href = "javascript:openImage('" + id_suffix + "', '" + elements[i].parentNode.href + "', '" + elements[i].src + "');";

					// 自身のidとsrcを置換
					elements[i].id  = 'target_type_' + id_suffix;
                    
                	if (domain.match(/books.dlsite.com/i)) {
                        elements[i].src = 'http://maniax.dlsite.com/modpub/images/caution_img_sam3.gif';
                    } else {
                        elements[i].src = 'http://maniax.dlsite.com/modpub/images/caution_img_sam.gif';
                    }

					// ループを抜けて次の画像へ
					break filtering;
				}
			}
		}
	}
}

function openImage(product_id, img_href, img_src) {
	document.getElementById('target_link_' + product_id).href = img_href;
	document.getElementById('target_type_' + product_id).src = img_src;
}

function getImageFileName(str_src) {
	return str_src.substring(str_src.lastIndexOf("/") + 1, str_src.length);
}

/***
 * cookie取得用
 ***/
function getCookieValue(key) {
	cookieString = " " + document.cookie + ";";

	// 作業用
	tmpOffset1 = 0;
	tmpOffset2 = 0;
	tmpOffset3 = 0;

	tmpString1 = '';
	tmpString2 = '';

	len = cookieString.length;

	while (tmpOffset1 < len) {
		// ;までの文字列切り出し
		tmpOffset2 = cookieString.indexOf(";", tmpOffset1);
		tmpString1 = cookieString.substring(tmpOffset1 + 1, tmpOffset2);

		// 切り出した文字列を'='で分割
		tmpOffset3 = tmpString1.indexOf("=");

		if (tmpString1.substring(0, tmpOffset3) == key) {
			return(unescape(tmpString1.substring(tmpOffset3 + 1, tmpOffset2 - tmpOffset1 - 1)));
		}
		tmpOffset1 = tmpOffset2 + 1;
	}
	return("");
}

/***
 * cookie登録用
 ***/
function setCookieValue(key, value, expire){
    document.cookie = key + "=" + escape(value) + "; domain=.dlsite.com; path=/; expires=" + expire;
}

/***
 * 占い結果を表示
 ***/
function loadFortuneMain() {
    var target_element = document.getElementById('fortune_main');
    if (target_element) {
        var domain = document.domain;
        var star_id = getCookieValue('DL_STAR_ID');
        if (star_id != '') {
            var url = "http://" + domain + "/fortune/daily/=/star_id/" + star_id;
        } else {
            var url = "http://" + domain + "/fortune/daily/";
        }

        sendRequest(callbackFortuneMain, 'dummy', 'POST', url, true, true);
    }
}

/***
 * 占い結果取得後のcallback関数
 ***/
function callbackFortuneMain(obj) {
    var state = obj.status;
    if (state == '200') {
        var res = obj.responseText;
        document.getElementById('fortune_main').innerHTML = res;
    } else {
        document.getElementById('fortune_main').innerHTML = '現在使用できません';
    }
}

/***
 * 星座変更時の処理
 ***/
function chgStar() {
    var star_id = document.getElementById('star_select').value;
    var exp = new Date();

    // 有効期限を1年に
    exp.setTime(exp.getTime() + 1000*60*60*24*365);

    setCookieValue('DL_STAR_ID', star_id, exp.toGMTString());

    // 占い再読み込み
    loadFortuneMain();
}

//前回表示サイトのCookieセット

function setSite() {
    var exp = new Date();
    var domain = document.domain;
    exp.setTime(exp.getTime() + 1000*60*60*24*365);
    setCookieValue('DL_SITE_DOMAIN', domain, exp.toGMTString());

}
