/**
*このファイルは、Ajaxの動作を動かせるために作成する。
*/
//DWRに必要なJSをインポートする
document.write("<script type=\"text\/javascript\" src=\"\/dwr\/engine.js\"><\/script>");
document.write("<script type=\"text\/javascript\" src=\"\/dwr\/util.js\"><\/script>");
document.write("<script type=\"text\/javascript\" src=\"\/dwr\/interface\/ThrowProduct.js\"><\/script>");


//二度押し対応
var clickCount = 0;
//画面完成フラグ
var finish_flag = 0;
//OZIO用詳細名
var productDetailName = null;

/**
* DWRを利用し、カートに投入処理
* param:returnKey 実行結果を格納するキー。add_cart_ovo:カートに投入　favorite_ovo:欲しいものリスト投入
* param:buttonId FRONT側定義するボタンID 例:01
* param:scId 画面ID 例：goods_detail
* param:formName 該当処理が所属しているFormの名前
* param:index  商品INDEX
* catalog カタログ番号
* product_code 商品番号
* color_code 色コード
* size_code サイズコード
* quantity 数量
*
*/
function executeAjax(returnKey, buttonId, scId, formName, index , catalog_code, product_code, color_code, size_code, quantity) {
        // 画面が完了する前に、ボタンを押すことができない
        if(finish_flag == 1){
        	clickCount += 1;
        }
        //二度押し防止。請求した処理が終わるまで二度処理受け付けない。
        if(clickCount == 1){
            // 処理待ち表示。サーバから結果を返すまで、待ち提示を表示する
	        showWait(returnKey);
	        // URLからジャンルを取得。
	        if(document.URL.split("/")[3] == "01"){
	        	genre = document.URL.split("/")[4];
		    }else{
		    	genre = document.URL.split("/")[5];
		    
		    }
		    var fromScId = scId;
	        //カートに投入商品の情報を設定
	        var product = setProductVal(formName ,index ,catalog_code, product_code, color_code, size_code, quantity);
	        // カート投入処理を実行
	        ThrowProduct.throwProduct(genre, product.catalog_code, product.product_code, product.color_code, 
	        	product.size_code, product.quantity, scId, buttonId, fromScId, returnKey, index,function(data) {
	            var result = eval("(" + data + ")");
	            // "null"filter キーに対応する値が"null"の場合、""と設定する
	            for(var k in result){
	            	if(result[k] == "null"){
	            		result[k] = null;
	            	}
	            }
	            // クッキー情報を取得し、ヘッダーに設定
	            
	            if(returnKey == "add_cart_ovo"){
	            	var domain = document.URL.split("/")[2];
	            	getCookie(scId); 
	            }
	            // kbmjビーコンを送付
	            Bcon(result,scId,catalog_code,product_code);
	            // popupを表示する
	            callShowPopup(result,returnKey,scId);
	        });
	    }
	    return true;
}

// KBMJビーコン用
function Bcon(obj,scId,catalog_code,product_code){

	var flag = obj.layer_output_flag;
	if(flag == 1)
	{
		var reco_genre = "";
		if(document.form1.recommend_genre_code){
            reco_genre = document.form1.recommend_genre_code.value;
        }else{
        	reco_genre = special_reco_genre;
        }
        if(catalog_code="null"){
        	catalog_code=obj.catalog_code;
        }
        if(product_code="null"){
        	product_code=obj.product_code;
        }
		var item_code = catalog_code + "-" + product_code;

		try{
			sendBcon(item_code,reco_genre);
		}catch(e){

		}

	}
}
// オージオ系の場合に商品詳細名称を設定する。
function callShowPopup(resultObj ,returnKey ,scId) {
	// オージオ系且つ、空文字じゃない且つ欲しい物リストじゃない場合に商品詳細名を設定する
	if (productDetailName && resultObj.layer_output_flag == 1) {
		resultObj.product_name = productDetailName;
	}
	// 名称を初期化
	productDetailName = null;
	showPopup(resultObj ,returnKey ,scId);
}

// ポップアップ表示関数
function showPopup(obj,returnKey,scId)
{	
	//待ち提示を非表示
	hideWait();
	var flag = obj.layer_output_flag;
    // エラーメッセージ
    if(flag == 0 || flag == "" || flag == null){
    	// ポップアップを非表示
		closePopup();
	}else{
		if(flag == 1){
			// カート投入ポップアップ
			// 色名称がnull場合、非表示とする
			if(!obj.color_name && document.getElementById("color_name_display")){
				document.getElementById("color_name_display").style.display='none';
			}
			// サイズ名称がnull場合、非表示とする
			if(!obj.size_name && document.getElementById("size_name_display")){
				document.getElementById("size_name_display").style.display='none';
			}
			//商品情報を表示
		    document.getElementById("product_name").innerHTML=(obj.product_name ? obj.product_name : "");
            document.getElementById("color_name").innerHTML=(obj.color_name ? obj.color_name : "");
            document.getElementById("size_name").innerHTML=(obj.size_name ? obj.size_name : "");
            document.getElementById("cart_quantity").innerHTML=(obj.quantity ? obj.quantity : "");
			//在庫一覧のカート投入ポップアップ
            if(scId == 'stock_conf'){
            	document.getElementById("close_botton_display").style.display='block';
            }else if(document.getElementById("cart_popup")){
            	document.getElementById("cart_botton_display").style.display='block';
            }
            //カートポップアップ
           	popupLocation("cart_popup");
            document.getElementById( 'cart_popup' ).style.visibility = 'visible';
        }else if(flag == 2){
			// 売り切れポップアップ
			popupLocation("cart_err2_popup");
			if(obj.sold_out_error != null){
               document.getElementById( 'sold_out_poperr' ).innerHTML = obj.sold_out_error;
            }
            document.getElementById( 'cart_err2_popup' ).style.visibility = 'visible';
		}else if(flag == 3){
			// カラー・サイズ未選択ポップアップ
            popupLocation("cart_err1_popup");
			//エラーメッセージ表示
            if(obj.color_code != null){
               	document.getElementById( 'cocd_popuperr_display' ).style.display = 'block';
             }
            if(obj.size_code != null){
               	document.getElementById( 'sicd_popuperr_display' ).style.display = 'block';
             }
             if(obj.quantity != null){
               	document.getElementById( 'quantity_popuperr_display' ).style.display = 'block';
             }
             document.getElementById( 'cart_cocd_poperr' ).innerHTML = (obj.color_code ? obj.color_code : "");
             document.getElementById( 'cart_sicd_poperr' ).innerHTML = (obj.size_code ? obj.size_code : "");
             document.getElementById( 'cart_quantity_poperr' ).innerHTML = (obj.quantity ? obj.quantity : "");
             document.getElementById( 'cart_err1_popup' ).style.visibility = 'visible';
             
		}else if(flag == 4){
			// 欲しいものリストに投入ポップアップ
			popupLocation('wishlist_popup');
			document.getElementById( 'fav_product_name' ).innerHTML = (obj.product_name ? obj.product_name : "");
			
			document.getElementById( 'wishlist_popup' ).style.visibility = 'visible';
			if(document.getElementById( 'nonframe-msg-wnd-btn' )){
				document.getElementById( 'nonframe-msg-wnd-btn' ).style.visibility = 'visible';
			}
		}else{
			// エラー、Exceptionポップアップ
            //エラーメッセージ表示
            if(obj.sys_error_msg != null){
            	if(document.getElementById( 'cart_sys_popuperr_display' )){
            		document.getElementById( 'cart_sys_popuperr_display' ).style.display = 'block';
            	}
            }
            // カート投入サービスエラー
            if(returnKey == 'add_cart_ovo' && document.getElementById( 'cart_err1_popup' )){
            	popupLocation("cart_err1_popup");
				document.getElementById( 'cart_err1_popup' ).style.visibility = 'visible';
				document.getElementById( 'cart_sys_popuperr_msg' ).innerHTML = (obj.sys_error_msg ? obj.sys_error_msg : "");
            }
            if(returnKey == 'favorite_ovo' && document.getElementById( 'fav_err_popup' )){
            	popupLocation("fav_err_popup");
				document.getElementById( 'fav_err_popup' ).style.visibility = 'visible';
				document.getElementById( 'fav_err' ).innerHTML = (obj.sys_error_msg ? obj.sys_error_msg : "");
		    }
		}
		//商品詳細画面のエラーメッセージエリアを表示する
        if(scId == "goods_detail"){	
        	showError(obj,returnKey);
        }
		// popupを閉じる
		objTimerID = setTimeout( "closePopup();", 1000*10);
	}
	
}

//商品詳細画面のエラーメッセージエリアにメッセージを表示する
function showError(obj,returnKey){
	if(document.getElementById( 'sold_out_err_display' )){
		(obj.layer_output_flag ==2 && obj.sold_out_error != null) ? document.getElementById( 'sold_out_err_display' ).style.display = "block" : document.getElementById( 'sold_out_err_display' ).style.display = "none";
		if(document.getElementById( 'sold_out_err' )){
			document.getElementById( 'sold_out_err' ).innerHTML = obj.sold_out_error;
		}
	}
	
	if(document.getElementById( 'cocd_err_display' )){
		(obj.layer_output_flag ==3 && obj.color_code != null) ? document.getElementById( 'cocd_err_display' ).style.display = "block" : document.getElementById( 'cocd_err_display' ).style.display = "none";
		if(document.getElementById( 'cart_cocd_err' )){
			document.getElementById( 'cart_cocd_err' ).innerHTML = obj.color_code;
		}
	}
	if(document.getElementById( 'sicd_err_display' )){
		(obj.layer_output_flag ==3 && obj.size_code != null) ? document.getElementById( 'sicd_err_display' ).style.display = "block" : document.getElementById( 'sicd_err_display' ).style.display = "none";
		if(document.getElementById( 'cart_sicd_err' )){
			document.getElementById( 'cart_sicd_err' ).innerHTML = obj.size_code;
		}
	}
	if(document.getElementById( 'quantity_err_display' )){
		(obj.layer_output_flag == 3 && obj.quantity != null) ? document.getElementById( 'quantity_err_display' ).style.display = "block" : document.getElementById( 'quantity_err_display' ).style.display = "none";
		if(document.getElementById( 'cart_quantity_err' )){
			document.getElementById( 'cart_quantity_err' ).innerHTML = obj.quantity;
		}
	}
	
	if(document.getElementById( 'cart_sys_err_display' )){
		(returnKey == 'add_cart_ovo' && obj.sys_error_msg != null) ? document.getElementById( 'cart_sys_err_display' ).style.display = "block" : document.getElementById( 'cart_sys_err_display' ).style.display = "none";
		if(document.getElementById( 'cart_sys_err_msg' )){
			document.getElementById( 'cart_sys_err_msg' ).innerHTML = obj.sys_error_msg;
		}
	}
	if(document.getElementById( 'fav_sys_err_display' )){
		(returnKey == 'favorite_ovo' && obj.sys_error_msg != null) ? document.getElementById( 'fav_sys_err_display' ).style.display = "block" : document.getElementById( 'fav_sys_err_display' ).style.display = "none";
		if(document.getElementById( 'fav_sys_err_msg' )){
			document.getElementById( 'fav_sys_err_msg' ).innerHTML = obj.sys_error_msg;
		}
	}
	
}
// ポップアップ表示位置
function popupLocation(id){
    if(document.getElementById(id)){
    	var mydiv = document.getElementById(id);
    	//ブラウザの表示ワイド
    	var x = document.documentElement.clientWidth || document.body.clientWidth;
    	//ブラウザの表示高さ
    	var y = document.documentElement.clientHeight || document.body.clientHeight;
    	//ブラウザのScrollサイズ
    	var scroX = document.documentElement.scrollLeft;
    	var scroY = document.documentElement.scrollTop;
    	// ポップアップの表示位置を計算
    	var leftX = scroX  + x/2 - mydiv.offsetWidth/2;
    	var leftY = scroY  + y/2 - mydiv.offsetHeight/2;
    	mydiv.style.position = "absolute";
    	// ポップアップがguard-wndの場合、全画面表示と設定する
    	if(id == 'guard-wnd'){
    		if (document.documentElement.clientWidth < document.documentElement.scrollWidth ) {
    			mydiv.style.width = document.documentElement.scrollWidth + 'px';
			} else {
				mydiv.style.width = document.documentElement.clientWidth + 'px';
			}
			if (document.documentElement.clientHeight < document.documentElement.scrollHeight ) {
				mydiv.style.height = document.documentElement.scrollHeight + 'px';
			} else {
				mydiv.style.height = document.documentElement.clientHeight + 'px';
			}
    	}else{
    	// 普通のポップアップ、指定位置で表示する
    		mydiv.style.left = leftX + "px";
    		mydiv.style.top =  leftY + "px";
    	}
    }
}

// ポップアップ終了関数、すべてのポップアップを閉じる
function closePopup()
{	
	clearTimeout( objTimerID );
	// select項目を表示する
	showSelect();
	if(document.getElementById( 'cart_popup' )){
		document.getElementById( 'cart_popup' ).style.visibility = 'hidden';
	}
	if(document.getElementById( 'cart_stock_popup' )){
		document.getElementById( 'cart_stock_popup' ).style.visibility = 'hidden';
	}
	if(document.getElementById( 'cart_err2_popup' )){
		document.getElementById( 'cart_err2_popup' ).style.visibility = 'hidden';
	}
	
	if(document.getElementById( 'cart_err1_popup' )){
		document.getElementById( 'cart_err1_popup' ).style.visibility = 'hidden';
	}
	
	if(document.getElementById( 'wishlist_popup' )){
		document.getElementById( 'wishlist_popup' ).style.visibility = 'hidden';
	}
	
	if(document.getElementById( 'nonframe-msg-wnd-btn' ) != null){
		document.getElementById( 'nonframe-msg-wnd-btn' ).style.visibility = 'hidden';
	}
	if(document.getElementById("wait_popup") != null){
		document.getElementById("wait_popup").style.visibility = 'hidden';
	}
	if(document.getElementById("fav_err_popup")){
		document.getElementById("fav_err_popup").style.visibility = 'hidden';
	}
	if(document.getElementById("color_name_display")){
		document.getElementById("color_name_display").style.display='block';
    }
    if(document.getElementById("size_name_display")){
		document.getElementById("size_name_display").style.display='block';
    }
	if(document.getElementById( 'cocd_popuperr_display' )){
		document.getElementById("cocd_popuperr_display").style.display = 'none';
    }
    if(document.getElementById( 'sicd_popuperr_display' )){
		document.getElementById("sicd_popuperr_display").style.display = 'none';
    }
    if(document.getElementById( 'quantity_popuperr_display' )){
		document.getElementById("quantity_popuperr_display").style.display = 'none';
    }
    if(document.getElementById( 'cart_sys_popuperr_display' )){
		document.getElementById("cart_sys_popuperr_display").style.display = 'none';
    }
    if(document.getElementById( 'close_botton_display' )){
		document.getElementById("close_botton_display").style.display = 'none';
    }
    if(document.getElementById( 'cart_botton_display' )){
		document.getElementById("cart_botton_display").style.display = 'none';
    }
	document.getElementById( 'guard-wnd' ).style.visibility = 'hidden';
	//押す回数を0に設定
	clickCount = 0;
}

// 画面のselect項目を非表示する
function hideSelect(){
	if(document.getElementById( 'color_code' )){
		//document.form1.color_code.disabled = true;
		document.getElementById("color_code").style.visibility = 'hidden';
	}
	
	if(document.getElementById( 'size_code' )){
		//document.form1.size_code.disabled = true;
		document.getElementById("size_code").style.visibility = 'hidden';
	}
	
	if(document.getElementById( 'quantity' )){
		//document.form1.quantity.disabled = true;
		document.getElementById("quantity").style.visibility = 'hidden';
	}
	if(document.getElementById( 'input_min_price' )){
		document.getElementById( 'input_min_price' ).style.visibility = 'hidden';
	}
	if(document.getElementById( 'input_max_price' )){
		document.getElementById( 'input_max_price' ).style.visibility = 'hidden';
	}
	if(document.getElementById( 'input_default_display_quantity' )){
		document.getElementById( 'input_default_display_quantity' ).style.visibility = 'hidden';
	}
	var i = 1;
	// 特集エリア画面のSELECT項目を非表示
	while(i <= 30){
		if(document.getElementById("color_bean_list_" + i)){
			document.getElementById("color_bean_list_" + i).style.visibility = 'hidden';
		}
		if(document.getElementById("size_bean_list_" + i)){
			document.getElementById("size_bean_list_" + i).style.visibility = 'hidden';
		}
		if(document.getElementById("quantity_" + i)){
			document.getElementById("quantity_" + i).style.visibility = 'hidden';
		}
		i++;
	}
	
}

// select項目を表示する
function showSelect(){
	if(document.getElementById( 'color_code' )){
		//document.form1.color_code.disabled = false;
		document.getElementById("color_code").style.visibility = 'visible';
	}
	
	if(document.getElementById( 'size_code' )){
		//document.form1.size_code.disabled = false;
		document.getElementById("size_code").style.visibility = 'visible';
	}
	
	if(document.getElementById( 'quantity' )){
		//document.form1.quantity.disabled = false;
		document.getElementById("quantity").style.visibility = 'visible';
	}
	if(document.getElementById( 'input_min_price' )){
		document.getElementById( 'input_min_price' ).style.visibility = 'visible';
	}
	if(document.getElementById( 'input_max_price' )){
		document.getElementById( 'input_max_price' ).style.visibility = 'visible';
	}
	if(document.getElementById( 'input_default_display_quantity' )){
		document.getElementById( 'input_default_display_quantity' ).style.visibility = 'visible';
	}
	// 特集エリア画面のSELECT項目を表示
	var i = 1;
	while(i <= 30){
		if(document.getElementById("color_bean_list_" + i)){
			document.getElementById("color_bean_list_" + i).style.visibility = 'visible';
		}
		if(document.getElementById("size_bean_list_" + i)){
			document.getElementById("size_bean_list_" + i).style.visibility = 'visible';
		}
		if(document.getElementById("quantity_" + i)){
			document.getElementById("quantity_" + i).style.visibility = 'visible';
		}
		i++;
	}
	
}
//待ち提示を表示
function showWait(returnKey){
	popupLocation("guard-wnd");
	document.getElementById( 'guard-wnd' ).style.visibility = 'visible';
	hideSelect();
	if(returnKey == 'add_cart_ovo'){
		popupLocation("wait_popup");
		if(document.getElementById("wait_popup")){
			document.getElementById("wait_popup").style.visibility = 'visible';
		}
	}
}
// 待ち提示を非表示
function hideWait(){
	if(document.getElementById("wait_popup")){
		document.getElementById("wait_popup").style.visibility = 'hidden';
	}
}

// 商品情報を設定する
function setProductVal(formName ,index ,catalog_code, product_code, color_code, size_code, quantity) {
	var form = eval("window.document."+ formName);
	color_code = color_code ? color_code : (form.color_code ? form.color_code.value : "");
	size_code = size_code ? size_code : (form.size_code ? form.size_code.value : "");
	quantity = quantity ? quantity : (form.quantity ? form.quantity.value : "");
	// 特殊エリアの場合
	if(eval("form.catalog_code_" + index) != null){
		catalog_code = eval("form.catalog_code_" + index).value;
	}
	if(eval("form.product_code_" + index) != null){
	    product_code = eval("form.product_code_" + index).value;
	}
	if(eval("form.color_bean_list_" + index) != null){
	    color_code = eval("form.color_bean_list_" + index).value;
	}
	if(eval("form.size_bean_list_" + index) != null){
	    size_code = eval("form.size_bean_list_" + index).value;
	}
	if(eval("form.quantity_" + index) != null){
	    quantity = eval("form.quantity_" + index).value;
	}
	return {"catalog_code":catalog_code,"product_code":product_code,"color_code":color_code,"size_code":size_code,"quantity":quantity};
}


// クッキーからカート情報を取得する
function getCookie(siId) {
	if(document.cookie == null){
		return false;
	}
	var cookies = document.cookie.split(";");
	var value;
	var quantity = '0点';
	var price = 0;
	var price_jp = '￥';
	for(var count in cookies){
		var key = cookies[count].split("=")[0];
		if('header_cart' == key.replace(/(^\s*)|(\s*$)/g,'')){
			value = cookies[count].split("=")[1];	
			price = value.split("-")[0];
			quantity = value.split("-")[1] + '点';
		}
	}
	//価格表示変換
	var temp = "";
	while(true){
		temp = price%1000 + temp;
		
		amari = price%1000;
		amari = amari + '';
		
		if(price < 1000){
			price_jp += temp;
			break;
		}
		if(amari == '0'){
			temp = '00' + temp;
		}else if(amari.length == 2){
			temp = '0' + temp;
		}else if(amari.length == 1){
			temp = '00' + temp;
		}
		temp = ',' + temp;
		price = Math.floor(price/1000);


	}
	//ヘッダーに表示する
	if(document.getElementById("total_quantity")){
		document.getElementById("total_quantity").innerHTML = quantity;
	}
	if(document.getElementById("order_price")){
		document.getElementById("order_price").innerHTML = price_jp;
	}
	//親ブラウザが存在する場合、親ブラウザに表示する
	try{
		if(window.opener && siId == "stock_conf"){
			if(window.opener.document.getElementById("total_quantity")){
				window.opener.document.getElementById("total_quantity").innerHTML = quantity;
			}
			if(window.opener.document.getElementById("order_price")){
				window.opener.document.getElementById("order_price").innerHTML = price_jp;
			}
		}
    }catch(e){
    }
    
}
//画面が完成したかどうかを判断する
function checkFinish(){
	finish_flag = 1;
}

//数量プルダウンの値設定用
function setSelectedQuantity(value , param) {
    document.getElementById(param).value = value;
}

// OZIO商品詳細にて数量プルダウンから値を取得
/**
* OZIO用のカート投入前処理
* 
* param:returnKey 実行結果を格納するキー。add_cart_ovo:カートに投入　favorite_ovo:欲しいものリスト投入
* param:buttonId FRONT側定義するボタンID 例:01
* param:scId 画面ID 例：goods_detail
* param:formName 該当処理が所属しているFormの名前
* param:index  商品INDEX
* catalog カタログ番号
* product_code 商品番号
* color_code 色コード
* size_code サイズコード
* request_code 申込番号
* quantity 数量
* product_name 商品詳細名
*/
function callCart(returnKey , buttonId , scId ,formName, index ,catalog_code ,product_code ,color_code ,size_code ,request_code ,kazu ,product_name) {
	var quantity = null;
	productDetailName = product_name;
	// 申込番号の有無で商品詳細か特集エリアか判定
	if (request_code) {
		// 商品詳細
		quantity = document.getElementById(request_code).value;
	} else {
		// 特集エリア
		quantity = kazu;
	}
	var flag = false;
	flag = executeAjax(returnKey ,buttonId ,scId ,formName ,index ,catalog_code ,product_code ,color_code ,size_code ,quantity);
	return flag;
}

// 特集用のカート呼び出し用関数
/**
* OZIO用の特集エリアカート投入前処理
* 
* param:returnKey 実行結果を格納するキー。add_cart_ovo:カートに投入　favorite_ovo:欲しいものリスト投入
* param:buttonId FRONT側定義するボタンID 例:01
* param:scId 画面ID 例：goods_detail
* param:formName 該当処理が所属しているFormの名前
* param:index  商品INDEX
* catalog カタログ番号
* product_code 商品番号
* color_code 色コード
* size_code サイズコード
* quantity 数量
* product_name 商品詳細名
*/
function specialCart(returnKey ,buttonId ,scId ,formName ,index ,catalog_code ,product_code ,color_code ,size_code ,quantity ,product_name) {
	callCart(returnKey ,buttonId ,scId ,formName ,index ,catalog_code ,product_code ,color_code ,size_code ,null ,quantity ,product_name);
}


