﻿RcashUrl = new Array();
var Rurl;
function itemDisp(page,genr){
//ロードレイヤー表示
if(nowMall == 'rakuten'){LayerDiv.style.display = 'block';}
var k_word;
if(page){R_page = page;}
if(genr){
	if(genr == 1){searchGenreId = firstGenreId;}
}

//ショップを絞込んでない時
if(!RnowShop.type){
	delete RnowShop.name;
	delete RnowShop.code;
	delete RnowShop.word;
	NG_WORD = ng_word;		//除外キーワードを含める
	KeyWord();
}
else if(RnowShop.type == 'A'){
	R_KensakuType = 'and';	//アンド検索に
	R_Field = 'all'		//検索量最大に
	if(RnowShop.word){//検索ワードがある場合は検索ワードのみ代入
		k_word = RnowShop.word;
	}
	else{//検索ワードがない場合[ショップ名の最初の１文字＋・を代入]
		//k_word = RnowShop.name.toString().charAt(0) + '・';
		k_word = RnowShop.name.toString().charAt(0) + RnowShop.name.toString().charAt(1);
	}
	NG_WORD = '';			//除外キーワードをはずす
}
else if(RnowShop.type == 'B'){
	delete RnowShop.word;
	k_word = kensaku_word;
	R_Field = 'all'//検索量最大に
	NG_WORD = ng_word;		//除外キーワードを含める
}








//バグチェック用
if(jyogaigo == 'on' || jyogaigo == 'onon'){
	if(checkNgWord && !RnowShop.type && !PlusWord){
	if(ng_word){NG_WORD += ' ' + checkNgWord;}
	else{NG_WORD = checkNgWord;}
	}

}


function KeyWord(){
	if(keyList > 1){
	R_Field = "all";//検索量最大
	R_KensakuType = 'and';
	k_word = RWord;
		if(Rsize){

			k_word += ' ' + Rsize;
		}
		if(RColorWord){

			k_word += ' ' + RColorWord;
		}
		if(RBestWord){

			k_word += ' ' + RBestWord;
		}
		if(PlusWord){

			k_word += ' ' + PlusWord;
		}
		if(keyWordList.no == 1&&!Rsize&&!RColorWord&&!RBestWord&&!PlusWord){
		R_Field = def_R_Field;//検索量最大
		}
	}
	else{
	k_word = kensaku_word;
		if(Rsize){

			k_word += ' ' + Rsize;
		}
		if(RColorWord){

			k_word += ' ' + RColorWord;
		}
		if(RBestWord){

			k_word += ' ' + RBestWord;
		}
		if(PlusWord){

			k_word += ' ' + PlusWord;
		}

	}

}

//検索タイプ
var kensakuType = 1;
if(R_KensakuType == 'and'){kensakuType = 0;}

var fieldType = 1;
if(R_Field == 'all'){fieldType = 0;}


var shopCode = '';
if(RnowShop.code){shopCode = RnowShop.code;}
//チェック用アラート
if(kensakuType == 0){var ttttt = 'and'}else{var ttttt = 'or'}
if(fieldType == 0){var kkkkk = '最大最大最大'}else{var kkkkk = '普通普通普通'}
//alert('楽天【' + k_word +'】\nNGワード【'+ NG_WORD +'】\n検索タイプ【' + ttttt + '】\n親ジャンル【' + firstGenreId + '】\n現在ジャンル【' + searchGenreId + '】\nショップコード【' + shopCode + '】\n検索量【' + kkkkk + '】');
//チェック用アラート
	//NG_WORD = '';//応急処置
var url = "../api_lib/ItemSearch.php";
var paramList = "keyword=" + encodeURIComponent(k_word);
paramList += "&hits=" + hits;
paramList += "&page=" + R_page;
paramList += "&sort=" + encodeURIComponent(Rsort);
paramList += "&imageFlag=1";
paramList += "&orFlag=" + kensakuType;
paramList += "&genreId=" + searchGenreId;
paramList += "&genreInformationFlag=1";
paramList += "&NGKeyword=" + encodeURIComponent(NG_WORD);
paramList += "&shopCode=" + shopCode;
paramList += "&maxPrice=" + R_Hei_kakaku;
paramList += "&minPrice=" + R_Low_kakaku;
paramList += "&field=" + fieldType;
Rurl = paramList;
if(RcashUrl[Rurl]){Rreload = RcashUrl[Rurl];}
else{RcashUrl[Rurl] = 0;}
Rreload = RcashUrl[Rurl];
paramList += "&Rreload=" + Rreload;
					//==========通信=============
					new Ajax.Request(url,
					{
						method: 'get',
						onSuccess: getData,
						onFailure: showErrMsg,
						parameters: paramList
					});
					//===========================

//----------アイテム通信の成功時に実行する関数----------
function getData(data){
	p_c += 1;
	var mall = "rakuten";
	//xmlの最親要素の参照
	var response = data.responseXML.getElementsByTagName('Response');
	if(!response[0]){
		RcashUrl[Rurl] += 500;
		R_relode += 1;
			if(nowMall == 'rakuten'){
				LayerDiv.innerHTML = 'アクセスが集中しています。しばらくお待ちください。m(_' + R_relode + ' _)m　エラーNO503';
			}
		
		if(R_relode < 4){
			setTimeout("itemDisp()",2000);
		}
		else{
			R_relode = 0;
			if(nowMall == 'rakuten'){
				LayerDiv.style.display = 'block';
				LayerDiv.innerHTML = '';
			}
			state.innerHTML ="楽天に接続できませんでした。少し時間をおいてからご利用ください。";
			}
		return;
	}
	//▼▼▼▼▼レスポンス有り▼▼▼▼▼
	//status要素の参照
	var status = getValue(response[0], 'Status');
	var StatusMsg =  getValue(response[0], 'StatusMsg');
	if(!(status == "Success")){
		if(status == 'ServerError'){
			RcashUrl[Rurl] += 500;
			R_relode += 1;

			
			if(R_relode < 4){
				if(nowMall == 'rakuten'){
					LayerDiv.innerHTML = '楽天サーバーエラーです。しばらくお待ちください。m(_' + R_relode + ' _)m';
				}
				setTimeout("itemDisp()",2000);
				return;
			}
			else{
				R_relode = 0;
				state.innerHTML ="楽天サーバーエラーです。少し時間をおいてからご利用ください。";
			}
		}
		else if(status == 'AccessForbidden'){
			state.innerHTML ='アクセス制限中です。';
		}
		else if(status == 'ClientError'){
			state.innerHTML ='デベロッパーの入力に起因するエラー。' + StatusMsg;
		}
		else if(status == 'Maintenance'){
			state.innerHTML ='メンテナンス中です。';
		}
		else if(status == 'NotFound'){
			pagelist.innerHTML			= "";
			bottom_pagelist.innerHTML	= "";
			state.innerHTML ="楽天の商品は見つかりませんでした。";
			result.innerHTML = '';
			bottom_state.innerHTML = "";
		}
		if(nowMall == 'rakuten'){
			LayerDiv.style.display = 'none';
		}
	return;
	}
	//▼▼▼▼▼成功▼▼▼▼▼
	else{
		R_relode = 0;
		if(nowMall == 'rakuten'){LayerDiv.style.display = 'none';}
		LayerDiv.innerHTML = '';
		pagelist.innerHTML			= "";
		bottom_pagelist.innerHTML	= "";
		//商品Item要素の参照
	var item = response[0].getElementsByTagName('Item');
	result.innerHTML = "";
	shopCodeShopName = new Object();
	//商品の数だけ繰り返し実行
	for(var i = 0; i < item.length; i++){
	var itemNameValue = getValue(item[i], 'itemName');
	var itemPriceValue = getValue(item[i], 'itemPrice');
	var itemCaptionValue = getValue(item[i], 'itemCaption');
	var affiliateUrlValue = getValue(item[i], 'affiliateUrl');
	var mediumImageUrlValue = getValue(item[i], 'mediumImageUrl');
	var creditCardFlagValue = getValue(item[i], 'creditCardFlag');
	var souryouKomiFlagValue = getValue(item[i], 'postageFlag');
	var shopNameValue = getValue(item[i], 'shopName');
	var shopCodeValue = getValue(item[i], 'shopCode');
	var reviewCountValue = getValue(item[i], 'reviewCount');
	shopNameValue = shopNameValue.replace("\u301c","");//全角ダッシュ波ダッシュ問題
	shopNameValue = shopNameValue.replace("\u301c","");//全角ダッシュ波ダッシュ問題
	shopNameValue = shopNameValue.replace("\u2212","-");//マイナス問題

	shopNameValue = shopNameValue.replace("\u2014","ー");

var ng = 0;		//商品名に除外キーワードがある場合は表示をしない処理	

RRng_words = Rng_word;



//↓↓↓↓↓↓↓↓↓↓除外キーチェック用↓↓↓↓↓↓↓↓↓↓
if(jyogaigo=='onon'){

if(check != 1){
	if(Rng_word){
		for(h = 0; h < ItemName_key.length; h++){
			if(h == 0){
				RRng_words = Rng_word + ' ' + ItemName_key[h]
			}
			else{
				RRng_words += ' ' + ItemName_key[h];
			}
		}
	}
	else{
	if(ItemName_key[0]){RRng_words = ItemName_key[0]}
	if(ItemName_key[1]){RRng_words += ' ' + ItemName_key[1]}
	if(ItemName_key[2]){RRng_words += ' ' + ItemName_key[2]}
	if(ItemName_key[3]){RRng_words += ' ' + ItemName_key[3]}
	if(ItemName_key[4]){RRng_words += ' ' + ItemName_key[4]}
	if(ItemName_key[5]){RRng_words += ' ' + ItemName_key[5]}
	if(ItemName_key[6]){RRng_words += ' ' + ItemName_key[6]}
	}

}
else{RRng_words = Rng_word;}
}
//↑↑↑↑↑↑↑↑↑↑除外キーチェック用↑↑↑↑↑↑↑↑↑↑

if(RnowShop.type != 'A'){
	if(RRng_words){
		RRng_words = new String(RRng_words);
		word = RRng_words.split(" ");
			for(p = 0; p < word.length; p++){
				rf = new RegExp(word[p],"i");
				if(itemNameValue.match(rf)){
				ng = 1;
				break;
				}
			}
	}
	if(Rng_shop){
		Rng_shops = new String(Rng_shop);
		word = Rng_shops.split(":");
			for(p = 0; p < word.length; p++){
				if(word[p] == shopNameValue){
				ng = 1;
				break;
				}
			}
	}
//↓↓↓↓↓↓↓↓↓↓送料チェック用↓↓↓↓↓↓↓↓↓↓
if(X && souryouCheck == 'on' && X[shopNameValue + shopCodeValue]){
	ng = 1;
}
//↑↑↑↑↑↑↑↑↑↑送料チェック用↑↑↑↑↑↑↑↑↑↑
	if(ng == 1){
		if(nowMall == 'rakuten'){
			LayerDiv.style.display = 'none';
			LayerDiv.innerHTML = '';
		}
		continue;
	}			//商品名に除外キーワードがある場合は表示をしない処理	↑









}
if(i == (item.length - 1))var last = 'last';
		//画像をアフィリエイトリンク作成
		affiliateImgLink = '<table><tr><td><a href="' + affiliateUrlValue + '" target= "_blank"><img src="' + mediumImageUrlValue + '" alt="商品詳細" title="' + itemNameValue + '"></a></td></tr></table>';












reviewUrlValue = '';



	SyouhinSet(	//関数呼び出し
	mall,
	result,
	itemNameValue,
	itemCaptionValue,
	affiliateImgLink,
	itemPriceValue,
	creditCardFlagValue,
	shopNameValue,
	shopCodeValue,
	souryouKomiFlagValue,
	reviewCountValue,
	reviewUrlValue,
	last
	);
		//ショップリスト取得
	var shopCodeValue = getValue(item[i], 'shopCode');
	var shopNameValue = getValue(item[i], 'shopName');
	shopNameValue = shopNameValue.replace("\u301c","");//全角ダッシュ波ダッシュ問題
	shopNameValue = shopNameValue.replace("\u301c","");//全角ダッシュ波ダッシュ問題
	shopNameValue = shopNameValue.replace("\u2212","-");//マイナス問題
	shopNameValue = shopNameValue.replace("\u2014","ー");
	shopCodeShopName[shopCodeValue] = [shopNameValue];

	}//for文おわり
	RshopList.innerHTML			= '';
	RshopListTitle.innerHTML	= '';
	ShopList(	//関数呼び出し
	mall
	);

		//-----ページステータスを表示-----
var count = getValue(response[0], 'count');	//全商品数
var first = getValue(response[0], 'first');	//商品始番
var last  = getValue(response[0], 'last');	//商品終番

	PageStatus(	//関数呼び出し
	state,
	bottom_state,
	count,
	first,
	last
	);


		//-----ページリスト表示-----
var pageCount = getValue(response[0], 'pageCount');	//全ページ数


	PageList(	//関数呼び出し
	mall,
	pagelist,
	bottom_pagelist,
	pageCount
	);



	//ジャンルid別の商品数取得　genreId_betsu_itemCounts[ジャンルid] = 商品		数となる
	var child = response[0].getElementsByTagName('child');
	genreId_betsu_itemCounts = new Array();
	for(i = 0; i < child.length; i++) {
	var genreIdeValue = getValue(child[i], 'genreId');
	var genreNameValue = getValue(child[i], 'genreName');
	var itemCountValue = getValue(child[i], 'itemCount');
	genreId_betsu_itemCounts[genreIdeValue] = itemCountValue;
					}

if(searchGenreId != firstGenreId && NowGenreR != searchGenreId){
				//==========ジャンル通信=============
				var url = "../api_lib/GenreSearch.php";

				var paramList = "&genreId=" + searchGenreId;
				paramList += "&genrePath=1";

						new Ajax.Request(url,
						{
						method: 'get',
						onSuccess: getJanre,
						onFailure: showErrMsg,
						parameters: paramList
						});
				//===========================
	}
else{getJanre();}
	}
	//-----ジャンル通信の成功時に実行する関数
	function getJanre(data){
NowGenreR = searchGenreId;

	var pa='';
	if(data){
	var G_response = data.responseXML.getElementsByTagName('Response');
	pa  = G_response[0].getElementsByTagName('parent');	//親
	}
	var cu  = response[0].getElementsByTagName('current');	//自
	var ch  = response[0].getElementsByTagName('child');	//子




	if(searchGenreId==firstGenreId){
		back_genre.innerHTML = "";
		ul = document.createElement('ul');
		back_genre.appendChild(ul);


	}
	if(data){
		back_genre.innerHTML		= "";
		ul = document.createElement('ul');
		back_genre.appendChild(ul);
		if(firstGenreId == 0){
			li = document.createElement('li');
			ul.appendChild(li);
				if(0 < cu.length){
					li.setAttribute('id', '0');
					li.innerHTML = '全カテゴリー'+ '<br>∨';
					li.onclick = function(){
						searchGenreId = this.getAttribute('id');
						page = 1;
						R_page = 1;
						itemDisp();
					}
				}
				else{
				li.innerHTML = '全カテゴリー';
				li.setAttribute('id', 'jigenre');
				}
		i=0;
		}
		else{
			for(i = 0; i < pa.length; i++){
				if(firstGenreId == getValue(pa[i], 'genreId')){
				break;
				}
			}
		}
		for(i = i; i < pa.length; i++){
			var pN = getValue(pa[i], 'genreName');
			var pI = getValue(pa[i], 'genreId');
			li = document.createElement('li');
			li.setAttribute('id', pI);
			li.innerHTML = pN + '<br>∨';
			ul.appendChild(li);
			li.onclick = function(){
			searchGenreId = this.getAttribute('id');
			page = 1;
			R_page = 1;
			itemDisp();
			}

		}




	if(cu.length > 0){
		li = document.createElement('li');
				li.setAttribute('id','jigenre');
		var cuN = getValue(cu[0], 'genreName');
		ul.appendChild(li);
		li.innerHTML = cuN;
	}
	}




		//ジャンルリスト表示
	genre.innerHTML				= "";
	var genre_ul = document.createElement('ul');
	genre.appendChild(genre_ul);
		for(i = 0; i < ch.length; i++){
		var NG = 0;
		var gN = getValue(ch[i], 'genreName');
		var gI = getValue(ch[i], 'genreId');
		var gH = genreId_betsu_itemCounts[gI];
		if(Rng_genr){
			Rng_genrL = new String(Rng_genr).split(" ");
			for(var l = 0; l < Rng_genrL.length; l++){
				if(Rng_genrL[l] == gI){
				NG = 1;
				}
			}
		}
		if(NG == 1){continue;}
	Genre(	//関数呼び出し
	mall,
	genre_ul,
	gI,
	gN,
	gH
	);
		}
	}//-----関数getJanre終わり

	}//関数getData終わり













}//関数itemDisp終わり

