/*
 * class="featureSite"を持つinputタグのvaluから、featureSite()を飛ばします。
 * bittokuen.js を先に読み込んでください。
 * <input type="hidden" class="featureSite" value="tag,120,block,#pickupSite[,2]" />
 * → featureSite("tag","120","block","#pickupSite","2");
 *
 */
$(function(){
	getFeatureSite();
});

function getFeatureSite(){
	featureSiteCB = new featureSiteCallBack();
	var sitelists = $("input.featureSite");
	for(var i =0; i < sitelists.length; i++){
		// value="tag,120,block,#pickupSite"
		var method	  = sitelists[i].value.split(",")[0];
		var id		  = sitelists[i].value.split(",")[1];
		var cbFnc	  = sitelists[i].value.split(",")[2];
		var targetObjXpath = sitelists[i].value.split(",")[3];
		var page	  = sitelists[i].value.split(",")[4];
		var limit	  = sitelists[i].value.split(",")[5];
		
		if(typeof(featureSiteCB[cbFnc]) == "function"){
			pointSite(method , id , "featureSiteCB." + cbFnc, targetObjXpath , page , limit);
		}
	}
}

/* featureSite() の callback
 * this.formalize すると使いやすいかも。
 */
function featureSiteCallBack(){


	this.gamepcBlock  = function(json,targetObjXpath,max){
		var result = eval(json);
		var items	= result["data"]["records"];
		var argument = this.checkArgument(eval(json)["method"]);

		var lists = "";


		for(var i = 0; i < items.length; i++){
			var item = this.item_formalize(items[i],argument.method,argument.id);

			var spec = {};
			var pickup = document.createElement("div");
			$(pickup).html(item.info2);
			$(pickup).find("span").each(function(){
				if($(this).attr("class") != undefined){
					spec[$(this).attr("class")] = $(this).html();
				}
			});
			// html
			lists += "<li class=\"item\">\n";
			lists += "	<div class=\"item-head\">\n";
			lists += "		<h3><a href=\"" + item.url + "\">" + item.title + "</a></h3>\n";
			lists += "	</div>\n";
			lists += "	<div class=\"item-body\">\n";
			lists += "		<div class=\"image\"><a href=\"" + item.url + "\"><img class=\"btn\" src=\"http://static.bitcash.jp/bittokuen/feature/gamepc/item/pc_" + item.id +".jpg\" />" + "</a></div>\n";
			lists += "		<div class=\"spec\">\n";
			lists += "			<ul>\n";
			if(spec.cpu){
				lists += "				<li>" + spec.cpu + "</li>\n";
			}
			if(spec.vga){
				lists += "				<li>" + spec.vga + "</li>\n";
			}
			if(spec.disp){
				lists += "				<li>" + spec.disp + "</li>\n";
			}
			if(spec.weight){
				lists += "				<li>" + spec.weight + "</li>\n";
			}
			if(spec.os){
				lists += "				<li>" + spec.os + "</li>\n";
			}
			if(spec.resolution){
				lists += "				<li>" + spec.resolution + "</li>\n";
			}
			if(spec.input){
				lists += "				<li>" + spec.input + "</li>\n";
			}
			lists += "			</ul>\n";
			lists += "		</div>\n";

			lists += "		<div class=\"info\">\n";
			lists += "			<div class=\"info-inner\">\n";
			lists += "				<p>" + item.info + "</p>\n";
			lists += "			</div>\n";
			lists += "		</div>\n";

			lists += "		<div class=\"detail\">\n";
			lists += "			<div class=\"bittoku\">\n";
			lists += "				<ul>\n";
			lists += "					<li class=\"price\">価格 <strong>" + putComma(item.price) + "</strong> 円</li>\n";
			lists += "					<li class=\"point\"><strong>" + putComma(item.point) + "</strong>ポイント</li>\n";
			lists += "					<li class=\"shop\"><a href=\"" + item.shopurl + "\">" + item.shop + "</a></li>\n";
			lists += "				</ul>\n";
			lists += "			</div>\n";
			lists += "		</div>\n";

			lists += "		<div class=\"getbtn\">\n";
			lists += "			<a href=\"" + item.url + "\"><img class=\"btn\" src=\"http://static.bitcash.jp/bittokuen/feature/gamepc/20101125/bt_detail_off.gif\" width=\"190\" height=\"28\" /></a>\n";
			lists += "		</div>\n";
			lists += "	</div>\n";
			lists += "</li>\n";


		}
		$(targetObjXpath).html("<ul>" + lists + "</ul>");

		$(targetObjXpath + " img.btn").hover(
			function(){
				$(this).attr("src",$(this).attr("src").replace("_off.","_on."));
			},
			function(){
				$(this).attr("src",$(this).attr("src").replace("_on.","_off."));
			}
		);

	};

	this.gamepcNavBlock = function(json,targetObjXpath,max){
		var result = eval(json);
		var items	= result["data"]["records"];
		var argument = this.checkArgument(eval(json)["method"]);

		var lists = "";
		for(var i = 0; i < items.length; i++){
			var item = this.item_formalize(items[i],argument.method,argument.id);

			// html
			if(i == items.length-1){
				lists += "<li class=\"item last\">\n";
			}else{
				lists += "<li class=\"item\">\n";
			}
			lists += "	<div class=\"item-body\">\n";
			lists += "		<div class=\"image\">" + item.banner + "</div>\n";
			lists += "		<div class=\"detail\">\n";
			lists += "			<h3><a href=\"" + item.url + "\">" + item.title + "</a></h3>\n";
			lists += "			<div class=\"bittoku\">\n";
			lists += "				<ul>\n";
			lists += "					<li class=\"price\"><strong>￥" + item.price + "</strong></li>\n";
			lists += "					<li class=\"point\"><strong>" + item.point + "</strong>ポイント" + "</li>\n";
			lists += "					<li class=\"shop\"><a href=\"" + item.shopurl + "\">" + item.shop + "</a></li>\n";
			lists += "				</ul>\n";
			lists += "			</div>\n";
			lists += "			<div class=\"getbtn\">\n";
			lists += "				<a href=\"" + item.url + "\"><img class=\"btn\" src=\"http://static.bitcash.jp/bittokuen/feature/gamepc/20101125/bt_detail_s_off.gif\" width=\"105\" height=\"31\" /></a>\n";
			lists += "			</div>\n";
			lists += "		</div>\n";
			lists += "		<div class=\"info\">\n";
			lists += "			<div class=\"info-inner\">\n";
			lists += "				<p>" + item.info + "</p>\n";
			lists += "			</div>\n";
			lists += "		</div>\n";
			lists += "	</div>\n";
			lists += "</li>\n";
		}
		$(targetObjXpath).html("<ul>" + lists + "</ul>");

		$(targetObjXpath + " img.btn").hover(
			function(){
				$(this).attr("src",$(this).attr("src").replace("_off.","_on."));
			},
			function(){
				$(this).attr("src",$(this).attr("src").replace("_on.","_off."));
			}
		);

	};

	this.gamepcNavBlock2 = function(json,targetObjXpath,max){
		var result = eval(json);
		var sites	= result["data"]["records"];
		var argument = this.checkArgument(eval(json)["method"]);

		var lists = "";
		for(var i = 0; i < sites.length; i++){
			var site = this.formalize(sites[i],argument.method,argument.id);
			var gicon = this.groupIcon(sites[i]);

			if(i == sites.length-1){
				lists += "<li class=\"site last\">\n";
			}else{
				lists += "<li class=\"site\">\n";
			}
			lists += "	<div class=\"site-inner\">\n";
			lists += "		<div class=\"site-body\">\n";
			lists += "			<div class=\"image\">" + site.banner + "</div>\n";
			lists += "			<div class=\"bittoku\">\n";
			lists += "				<ul>\n";
			lists += "					<li class=\"action\">" + site.action + "</li>\n";
			lists += "					<li class=\"point\"><strong>" + site.point + "</strong>" + site.pointType + "</li>\n";
			lists += "					<li class=\"date\">" + site.date + "</li>\n";
			lists += "				</ul>\n";
			lists += "			</div>\n";
			lists += "		</div>\n";
			lists += "	</div>\n";
			lists += "</li>\n";
		}
		$(targetObjXpath).html("<ul>" + lists + "</ul>");
	};

	// 特集商品
	this.featureItemBlock = function(json,targetObjXpath,max){
		var result = eval(json);
		var items	= result["data"]["records"];
		var argument = this.checkArgument(eval(json)["method"]);

		var lists = "";
		for(var i = 0; i < items.length; i++){
			var item = this.item_formalize(items[i],argument.method,argument.id);

			// html
			lists += "<li class=\"item\">\n";
			lists += "	<div class=\"item-inner\">\n";
			lists += "		<div class=\"item-body\">\n";
			lists += "			<div class=\"image\">" + item.banner + "</div>\n";
			lists += "			<div class=\"detail\">\n";
			lists += "				<h3><a href=\"" + item.url + "\">" + item.title + "</a></h3>\n";
			lists += "				<div class=\"bittoku\">\n";
			lists += "					<ul>\n";
			lists += "						<li class=\"price\"><strong>￥" + item.price + "</strong></li>\n";
			lists += "						<li class=\"point\"><strong>" + item.point + "</strong>ポイント" + "</li>\n";
			lists += "					</ul>\n";
			lists += "				</div>\n";
			lists += "			</div>\n";
			lists += "		</div>\n";
			lists += "	</div>\n";
			lists += "</li>\n";
		}
		$(targetObjXpath).html("<ul>" + lists + "</ul>");

	};

	//右ブロック商品用
	this.rightItemBlock = function(json,targetObjXpath,max){
		var result = eval(json);
		var items	= result["data"]["records"];
		var argument = this.checkArgument(eval(json)["method"]);

		var lists = "";
		for(var i = 0; i < items.length; i++){
			var item = this.item_formalize(items[i],argument.method,argument.id);

			// html
			if(i == items.length-1){
				lists += "<li class=\"item last\">\n";
			}else{
				lists += "<li class=\"item\">\n";
			}
			lists += "	<div class=\"item-inner\">\n";
			lists += "		<div class=\"item-body\">\n";
			lists += "			<div class=\"image\">" + item.banner + "</div>\n";
			lists += "			<div class=\"detail\">\n";
			lists += "				<h3><a href=\"" + item.url + "\">" + item.title + "</a></h3>\n";
			lists += "				<div class=\"bittoku\">\n";
			lists += "					<ul>\n";
			lists += "						<li class=\"price\"><strong>￥" + item.price + "</strong></li>\n";
			lists += "						<li class=\"point\"><strong>" + item.point + "</strong>ポイント" + "</li>\n";
			lists += "					</ul>\n";
			lists += "				</div>\n";
			lists += "			</div>\n";
			lists += "		</div>\n";
			lists += "	</div>\n";
			lists += "</li>\n";
		}
		$(targetObjXpath).html("<ul>" + lists + "</ul>");
	};

	// 特集店舗用
	this.featureStoreBlock = function(json,targetObjXpath,max){
		var result = eval(json);
		var sites	= result["data"]["records"];
		var argument = this.checkArgument(eval(json)["method"]);

		var lists = "";
		for(var i = 0; i < sites.length; i++){
			var site = this.formalize(sites[i],argument.method,argument.id);
			var icon = "";

			if(sites[i]["groups"]){
				for(var j = 0; j < sites[i]["groups"].length; j++){
					if(sites[i]["groups"][j]["pickup_id"]){
						if(sites[i]["groups"][j]["pickup_id"]=="20004"){
							icon = "<li class=\"icon\"><img src=\"http://static.bitcash.jp/bittokuen/cmn/icon_pointup_wide.gif\" alt=\"\" /></li>\n";
						}
					}
				}
			}

			// html
			lists += "<li class=\"site\">\n";
			lists += "	<div class=\"site-inner\">\n";
			lists += "		<div class=\"site-body\">\n";
			lists += "			<div class=\"image\">" + site.banner + "</div>\n";
			lists += "			<div class=\"detail\">\n";
			lists += "				<h3><a href=\"" + site.url + "\">" + site.title + "</a></h3>\n";
			lists += "				<div class=\"bittoku\">\n";
			lists += "					<ul>\n";
			lists += "						<li class=\"point\"><strong>" + site.point + "</strong>" + site.pointType + "</li>\n";
			lists += icon;
			lists += "					</ul>\n";
			lists += "				</div>\n";
			lists += "			</div>\n";
			lists += "		</div>\n";
			lists += "	</div>\n";
			lists += "</li>\n";
		}
		$(targetObjXpath).html("<ul>" + lists + "</ul>");
	};

	// 商品用サンプル
	this.itemBlock = function(json,targetObjXpath,max){
		var items	= result["data"]["records"];
		var argument = this.checkArgument(eval(json)["method"]);

		var lists = "";
		for(var i = 0; i < items.length; i++){
			var item = this.item_formalize(items[i],argument.method,argument.id);

			// html
			lists += "<li class=\"site\">\n";
			lists += "	<div class=\"site-inner\">\n";
			lists += "		<div class=\"site-head\">\n";
			lists += "			<h3><a href=\"" + item.url + "\">" + item.title + "</a></h3>\n";
			lists += "		</div>\n";
			lists += "		<div class=\"site-body\">\n";
			lists += "		<div class=\"itemdetail\">\n";
			lists += "			<div class=\"image\">" + item.banner + "</div>\n";
			lists += "			<div class=\"bittoku\">\n";
			lists += "				<ul>\n";
			lists += "					<li class=\"action\">" + item.action + "</li>\n";
			lists += "					<li class=\"shop\">" + item.shop + "</li>\n";
			lists += "					<li class=\"shopinfo\"><a href=\"" + item.shopurl + "\">ショップ情報</a></li>\n";
			lists += "					<li class=\"price\"><strong>￥" + item.price + "</strong></li>\n";
			lists += "					<li class=\"point\"><strong>" + item.point + "</strong>ポイント<br />（商品購入金額の<p class=\"rate\">" + item.pointper + "</p>％）" + "</li>\n";
			lists += "					<li class=\"date\">" + item.date + "</li>\n";
			lists += "				</ul>\n";
			lists += "			</div>\n";
			lists += "			<div class=\"detail\">\n";
			lists += "				<p>" + item.info + "</p>\n";
			lists += "			</div>\n";
			lists += "		</div>\n";
			lists += "		</div>\n";
			lists += "	</div>\n";
			lists += "</li>\n";
		}
		$(targetObjXpath).html("<ul>" + lists + "</ul>");

		$(targetObjXpath + " img.btn").hover(
			function(){
				$(this).attr("src",$(this).attr("src").replace("_off.","_on."));
			},
			function(){
				$(this).attr("src",$(this).attr("src").replace("_on.","_off."));
			}
		);

	};

	// グループアイコンの表示
	this.groupIcon = function(data){
		var iconBlock = "";
		var icons = {
			"20001" : "icon_bigpoint_group.gif",
			"20002" : "icon_hot_group.gif",
			"20003" : "icon_new_group.gif",
			"20004" : "icon_pointup_group.gif",
			"20020" : "icon_pointup_wide.gif"
		}
		// group の有無
		if(data["groups"]){
			var icon = "";
			for(var i = 0; i < data["groups"].length; i++){
				if(data["groups"][i]["pickup_id"]){
					for(var key in icons){
						if(key == data["groups"][i]["pickup_id"]){
							if(key == "20001"){
								icon += "<a href=\"/bittokuen/list/tag/id/140/\"><img src=\"http://static.bitcash.jp/bittokuen/cmn/" + icons[key] + "\" alt=\"\" /></a>";
								break;
							}else if(key == "20002"){
								icon += "<a href=\"/bittokuen/list/group/id/1/\"><img src=\"http://static.bitcash.jp/bittokuen/cmn/" + icons[key] + "\" alt=\"\" /></a>";
								break;
							}else if(key == "20003"){
								icon += "<a href=\"/bittokuen/list/tag/id/124/\"><img src=\"http://static.bitcash.jp/bittokuen/cmn/" + icons[key] + "\" alt=\"\" /></a>";
								break;
							}else if(key == "20004"){
								icon += "<a href=\"/bittokuen/list/group/id/20004/\"><img src=\"http://static.bitcash.jp/bittokuen/cmn/" + icons[key] + "\" alt=\"\" /></a>"
								break;
							}else if(key == "20020"){
								icon += "<img src=\"http://static.bitcash.jp/bittokuen/cmn/" + icons[key] + "\" alt=\"\" />"
								break;
							}
						}
					}
				}
			}
		}
		if(icon != ""){
			iconBlock = "<li class=\"icon\">" + icon + "</li>";
		}
		return iconBlock;
	}

	// 集合タイプ
	this.checkArgument = function(data){
		var argument = {}
		argument.method = data["type"];
		if(data["type"] == "tag"){
			argument.id = data["tag_id"];
		}else if(data["type"] == "group" || data["type"] == "item"){
			argument.id = data["pickup_id"];
		}else{
			return;
		}
		return argument;
	};

	// json のままじゃ長いので変数に入れて戻します。
	this.formalize = function(siteData,type,id){
		obj = {};
		obj.title  = siteData["programname"];

		var server = "http://www.bitcash.jp";
		obj.url    = server +  "/bittokuen/list/detail/id/" + siteData["affiliate_id"] + "/" + type + "/" + id + "/";
		obj.banner = siteData["bannerhtml"].replace('[url]',obj.url).replace('target="_blank"',"");
		obj.action = siteData["actiontext"]
		obj.date   = siteData["pointcommitday"];
		obj.info   = siteData["bccomment"];
		obj.click  = siteData["clickpresent"];
		obj.point  = siteData["present"];
		obj.id	   = siteData["affiliate_id"];
		obj.pointType	= "";
		if(siteData["point_type"] == 1){
			obj.pointType = "％";
		}else if(siteData["point_type"] == 2){
			obj.pointType = "ポイント";
		}
		return obj;
	};

	// 商品用
	this.item_formalize = function(siteData,type,id){
		obj = {};
		obj.title		= siteData["programname"];

		obj.url			= "/bittokuen/list/detail/id/" + siteData["affiliate_id"] + "/" + type + "/" + id + "/";

		obj.shop		= siteData["sitename"];
		obj.shopurl		= "/bittokuen/list/detail/id/" + siteData["parent_id"] + "/" + type + "/" + id + "/";

		obj.banner		= siteData["bannerhtml"].replace('[url]',obj.url).replace('target="_blank"',"");
		obj.action		= siteData["actiontext"]
		obj.date		= siteData["pointcommitday"];
		obj.info		= siteData["bccomment"];
		obj.info2		= siteData["bccomment2"];
		obj.click		= siteData["clickpresent"];
		obj.price		= siteData["itemprice"]
		obj.pointper	= "-";
		obj.point		= "-";
		if(siteData["point_type"] == 1){
			obj.pointper= siteData["present"];
			// ポイント計算
			obj.point	= Math.floor(siteData["present"] / 100 * siteData["itemprice"]);
		} else if(siteData["point_type"] == 2){
			// 固定報酬
			obj.point	= siteData["present"];
		}
		obj.id	   = siteData["affiliate_id"];

		return obj;
	};
}

/* 3桁ごとに「，」をつける */
function putComma(num){
	return num.toString().replace(/([\d]+?)(?:(\d{3}\.\d+)|(?=(?:\d{3})+(?:\.\d+)?$))/g, "$1,$2");
}

