// 本番URL
var liveUri = "/";

try { document.execCommand("BackgroundImageCache", false, true); } catch (e) { }

//----------------------------------------------------------
// ナビゲーションプルダウン動作用
//----------------------------------------------------------

var gcBtnTimmer1 = null;
var gcBtnTimmer2 = null;

/*
//マウスオーバー動作
function actionOver(e) {
//var sBtn = $(this); //イベントを起こしたカテゴリ

window.focus();

gcBtnTimmer1 = setTimeout(function () {
$j("li.gnaviCtgry div.pulldownBox").removeClass("visivleBlock");
/ *
var other_obj = $j("li.gnaviCtgry div.pulldownBox").get();
for (var i = 0; i < other_obj.length; i++) {
other_obj[i].removeClass("visivleBlock");
}
* /

/*
var other_obj = $$("li.gnaviCtgry div.pulldownBox");
for (var i = 0; i < other_obj.length; i++) {
other_obj[i].removeClassName("visivleBlock");
}
* /

//pulldown_obj = sBtn.getElementsByClassName("pulldownBox");
//pulldown_obj = $j(e).getElementsByClassName("pulldownBox");
//pulldown_obj[0].addClassName("visivleBlock");
$j(e).find("div.pulldownBox").addClass("visivleBlock");
//pulldown_obj.addClass("visivleBlock");
}, 0);

clearTimeout(gcBtnTimmer2);
if (lastFocuseTimerFlag) clearTimeout(lastSelectTimer);

}
*/

/*
//マウスアウト動作
function actionOut(){

clearTimeout(gcBtnTimmer1);

focusOnLastFocusedElement();

gcBtnTimmer2 = setTimeout( function(){

$j("li.gnaviCtgry div.pulldownBox").removeClass("visivleBlock");
/*
var pulldown_obj2 = $j("li.gnaviCtgry div.pulldownBox");
for (var i = 0; i < pulldown_obj2.length; i ++) {
pulldown_obj2[i].removeClassName("visivleBlock");
}
* /

}, 300);
}
*/

//=========================================================
//
//			ウィンドウロード完了の共通処理を入れる
//
//=========================================================

function windowLoad() {
	// Cookieを見てログイン状態を判断する
	loginUserManager_checkLogin();

	// twitthisの実装
	var twitThisUri = "http://twitter.com/home/?status=";
	var twitThisLocation = window.location;
	var twitThisTitle = document.title;
	var twitThisParam = twitThisTitle + "\n" + twitThisLocation;
	twitThisParam = data = encodeURIComponent(twitThisParam);
	twitThisUri = twitThisUri + twitThisParam;
	$j("#twitthis").attr("href", twitThisUri);
}

/**
*  open genre menu
*/
function ___global_navi_subgenre_list_open___() {
	$j("#global_navi_pulldownBox_genre .___global_navi_subgenre_list___").each(function (i) {
		$j(this).css("display", "block");
	});

	$j("#genreListOpenBtn").css("display", "none");
	$j("#genreListCloseBtn").css("display", "block");
}

/**
*  close genre menu
*/
function ___global_navi_subgenre_list_close___() {
	$j("#global_navi_pulldownBox_genre .___global_navi_subgenre_list___").each(function (i) {
		$j(this).css("display", "none");
	});

	$j("#genreListOpenBtn").css("display", "block");
	$j("#genreListCloseBtn").css("display", "none");
}

/**
*  close genre menu and setEventListeners where window loaded
*/
$j(document).ready(function () {
	$j("#treeMenuSwitchOpen").click(function () {
		___global_navi_subgenre_list_open___();
	});

	$j("#treeMenuSwitchClose").click(function () {
		___global_navi_subgenre_list_close___();
	});

	___global_navi_subgenre_list_close___();

	$j("ul.glovalNaviMenu li.gnaviCtgry").each(function (i) {

		$j(this).mouseover(function () {
			var sBtn = $j(this);
			window.focus();
			gcBtnTimmer1 = setTimeout(function () {
				$j("li.gnaviCtgry div.pulldownBox").removeClass("visivleBlock");

				var hoge = $j("div.pulldownBox", sBtn).addClass("visivleBlock");
			}, 0);

			clearTimeout(gcBtnTimmer2);
			if (lastFocuseTimerFlag) {
				clearTimeout(lastSelectTimer);
			}
		});

		$j(this).mouseout(function () {
			clearTimeout(gcBtnTimmer1);

			focusOnLastFocusedElement();

			gcBtnTimmer2 = setTimeout(function () {
				$j("li.gnaviCtgry div.pulldownBox").removeClass("visivleBlock");
			}, 300);
		});
	});

	windowLoad();

	//console.log("input");
	$j("input").each(function (i) {
		$j(this).focus(function (e) {
			lastFocusedFlag = true;
			if (lastFocuseTimerFlag) clearTimeout(lastSelectTimer);
			var selectElement = e.target;
			//console.log(selectElement);
			lastFocusedInputElement = selectElement;
		});
	});
});

var lastFocusedInputElement;
var lastFocusedFlag = false;
var lastSelectTimer;

var lastFocuseTimerFlag = false;
function focusOnLastFocusedElement() {
	if (lastFocuseTimerFlag) clearTimeout(lastSelectTimer);
	lastSelectTimer = setTimeout(function () {
		lastFocuseTimerFlag = true;
		if (lastFocusedFlag) {
			$j(lastFocusedInputElement).focus();
			clearTimeout(lastSelectTimer);
		}
	}, 500);
}

/**
*	make banner tags
*/

// for rectangle top banners
var BANNER_TYPE_SITETOP_RECTANGLE = {
	"impAtag": "/SITE=ET.TOWER.TOP.DAC/AREA=RECTANGLE/AAMSZ=300X250/CL=REC",
	"width": 300,
	"height": 250
}

// for rectangle banners
var BANNER_TYPE_RECTANGLE = {
	"impAtag": "/SITE=ET.TOWER.DAC/AREA=RECTANGLE/AAMSZ=300X250/CL=REC",
	"width": 300,
	"height": 250
}

// for square banners
var BANNER_TYPE_PAGE = {
	"impAtag": "/SITE=ET.TOWER.DAC/AREA=PAGE/AAMSZ=728X90/CL=SB",
	"width": 728,
	"height": 90
};

// set default banner type
var DEFAULT_BANNER_TYPE = BANNER_TYPE_RECTANGLE;

function bannerTag(type) {
	if (type == undefined) {
		type = DEFAULT_BANNER_TYPE;
	}

	var impAcn = "IMPASEG";
	var impAco = document.cookie;
	var impApos = impAco.indexOf(impAcn + "=");
	var impAseg = (impApos != -1) ? impAco.substring(impApos + impAcn.length + 1, (impAco.indexOf("; ", impApos) != -1) ? impAco.indexOf("; ", impApos) : impAco.length) : null;
	var width = type["width"];
	var height = type["height"]
	var impAtag = type["impAtag"];

	impAseg = (impAseg) ? unescape(impAseg) : null;

	impAserver = "http://as.dc.impact-ad.jp";

	impAtarget = (impAseg) ? impAtag + "/" + impAseg : impAtag;

	impArnd = Math.round(Math.random() * 100000000);
	if (!impApid) var impApid = Math.round(Math.random() * 100000000);
	document.write('<iframe src="' + impAserver + '/hserver/acc_random=' + impArnd + impAtarget + '"');
	document.write(' noresize scrolling="no" hspace="0" vspace="0" frameborder="0" marginheight="0" marginwidth="0" width="' + width + '" height="' + height + '" allowTransparency="true">');
	if (navigator.userAgent.indexOf("Gecko") == -1 && navigator.userAgent.indexOf("MSIE") == -1) {
		document.write('<scr');
		document.write('ipt src="' + impAserver + '/jnserver/acc_random=' + impArnd + impAtarget + '/pageid=' + impApid + '">');
		document.write('</scr');
		document.write('ipt>');
	}
	document.write('</iframe>');
}

/**
*  div functions
*/
function resizeMap(minSize, maxSize, minText, maxText, thisObj) {
	var target = document.getElementById('mapDetail');
	var height = target.style.height;

	if (height == minSize) {
		target.style.height = maxSize;
		thisObj.innerHTML = maxText;
	} else {
		target.style.height = minSize;
		thisObj.innerHTML = minText;
	}

	return false;
}
/**************************************************************
*						popup window utils
***************************************************************/
/**
*  open review window
*  @arg link		review link
*/
function popupReviewWindow(link) {
	popupSimpleWindow(link, 'review', 600, 680);

	return false;
}

//-------------------------------------------------------------------
//
//							functions
//
//-------------------------------------------------------------------
/**
*  make popup simple window design size only
*  @arg link			href
*  @arg windowName		window name
*  @arg width			width
*  @arg height			height
*/
function popupSimpleWindow(link, windowName, width, height) {
	windowPopupSource(link, windowName, width, height, false, false, true, true, false);

	return false;
}


/**
*  change boolean to yes or no
*  @arg flag
*/
function boolean2yn(flag) {
	if (flag) {
		return "yes";
	} else {
		return "no";
	}
}

/**
*  make popup window
*  @arg link			href
*  @arg windowName		window name
*  @arg width			width
*  @arg height			hegiht
*  @arg menubar		menubar true or false
*  @arg toolbar		toolbar true or false
*  @arg scrollbars		scrollbars true or false
*/
function windowPopupSource(link, windowName, width, height, menubar, toolbar, scrollbars, resizable, location) {
	menubar = boolean2yn(menubar);
	toolbar = boolean2yn(toolbar);
	scrollbars = boolean2yn(scrollbars);
	resizable = boolean2yn(resizable);
	location = boolean2yn(location);
	window.open(link, windowName, 'width=' + width + ',height=' + height + ', menubar=' + menubar + ', toolbar=' + toolbar + ', scrollbars=' + scrollbars + ', resizable=' + resizable + ",location=" + location);
}

/**
* 広告のHTMLを出力する
*/
function adv_getSimpleAd(contextPath, advId, elementId) {
	// キャッシュ防止パラメータ
	var noCache = (new Date()).getTime();

	// URLの作成
	var url = "/advertisement/" + advId + "/";

	// リクエスト
	$j.ajax({
		url: url,
		type: "GET",
		data: ({ t: noCache }),
		success: function (request) {
			//alert(request);
			var splited = request.split("	");
			var mode = splited[0];
			var body = adv_getBody(splited);

			if (mode == "script")
				$j("#" + elementId).html(body);
			else if (mode == "image") {
				$j("#" + elementId).html(body);
			}
		}
	});
}

function adv_getBody(splited) {
	var splitedLength = splited.length;
	var ret = "";
	for (var splitedCount = 1; splitedCount < splitedLength; splitedCount++) {
		ret += splited[splitedCount];
	}
	return ret;
}
//=========================================================
//
//								ユーザのログイン状態を判定する
//
//=========================================================
/**
* ログインしてる場合は「ログアウト」を表示してログインしてないときは「ログイン」を表示するようにする
*/
function loginUserManager_switchLoginLogoutText(flag) {
	var yes = "inline";
	var no = "none";

	// ログインしてる場合
	if (flag) {
		$j("#nowLogin4js").css("display", "block");
		$j("#nowLogout4js").css("display", "none");
	}

	// ログインしていない場合
	else {
		$j("#nowLogin4js").css("display", "none");
		$j("#nowLogout4js").css("display", "block");
	}
}

/**
*  ajaxでログイン状態を調べる
*/
function loginUserManager_checkLogin() {
	var url = "/ajax/checkLogin/";

	var data = new Date().getTime();

	$j.get(url, { t: data },
		function (req) {
			//alert(req);

			var flag = false;

			if ($j.trim(req) == "1")
				flag = true;

			loginUserManager_switchLoginLogoutText(flag);
		}
	);
}

/**
*  クッキーがあるか判定する
*/
function loginUserManager_hasCookie(cookieName) {
	var cookieList = document.cookie.split(" ");

	var cookieLength = cookieList.length;

	for (var cookieCount = 0; cookieCount < cookieLength; cookieCount++) {
		var cookieFormula = cookieList[cookieCount].split("=");

		if (cookieFormula[0] == cookieName) {
			return true;
		}
	}

	return false;
}

var DS = "/";
var pageNo = 1;
var page = 1;

function replAll(expression, org, dest) {
	return expression.split(org).join(dest);
}

function encodeSearchStr(str) {
	var original = str;
	str = jQuery.trim(str);
	str = replAll(str, '.', '．');
	str = replAll(str, ';', '；');
	str = replAll(str, '/', '／');
	str = replAll(str, '?', '？');
	str = replAll(str, '<', '＜');
	str = replAll(str, '>', '＞');
	str = replAll(str, '&', '＆');
	str = replAll(str, '"', '”');
	str = replAll(str, '*', '＊');

	if (original == str) {
		$j("#submit_form #rep").val("false");
	}
	else {
		$j("#submit_form #rep").val("true");
	}

	str = encodeURIComponent(str);
	return str;
}

var submitted = false;

function form_submit(obj) {
	var valueObj = obj.elements["searchStr"];

	if (!valueObj.value) {
		alert("検索ワードを指定してください。");
		return 0;
	}

	var action = getActionPath(valueObj.value, null);
	$j("#submit_form").attr("action", action);
	if (!submitted) {
		submitted = true;
	} else {
		return false;
	}

	$j("#submit_form").submit();
}

function getActionPath(key, path) {
	var searchStr = encodeSearchStr(key);

	var parentPath = path;
	if (path == null || path == "") {
		var searchType = $j("#headerSearchSelecterArea > li.select");
		if (searchType.hasClass("item")) {
			parentPath = "item";
		} else if (searchType.hasClass("artist")) {
			parentPath = "artist";
		} else if (searchType.hasClass("article")) {
			parentPath = "article";
		}
		parentPath = "search/" + parentPath;
	}

	//var action = DS + currentTab + DS + searchStr + DS + page;
	//ページ番号はページとして指定しない
	var action = DS + parentPath + DS + searchStr;

	//action = liveUri + action;
	//URLのルートは現在のURLから取得
	var currentPath = location.href;
	var rgexp = new RegExp("^([http|https]+:\/\/[^/]+)/.*", "g");
	action = currentPath.replace(rgexp, "$1") + action;

	return action;
}

function switchSearchMode(mode) {
	var key = $j("#headerSearchTextBox").val();

	if (key == "") {
		$j("#headerSearchSelecterArea li").each(function (i) {
			$j(this).removeClass("select");
			if ($j(this).attr("class").match(mode.replace("search/", ""))) {
				$j(this).addClass("select");
			}
		});
		return;
	}

	var action = getActionPath(key, mode);

	resetSearchRule();

	$j("#submit_form").attr("action", action);

	if (!submitted) {
		submitted = true;
	} else {
		return;
	}

	$j("#submit_form").submit();
}

function resetSearchRule() {
	$j("#submit_form #limit").val("20");
	$j("#submit_form #sort").val("");
	$j("#submit_form #direction").val("false");
	$j("#submit_form #highlight").val("false");
}

function Trance4Ssl(path) {
	return "https://" + document.domain + "/" + path;
}

function Move2Ssl(path) {
	var uri = Trance4Ssl(path);
	window.location = uri;
}

function topFlashDisp() {
	if ($j("#mboxFlashCell")) {
		var flashurl = "flashtest/trcarousel.swf";
		var tag = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="645" height="117"><param name="movie" value="' + flashurl + '" /><param name="quality" value="high" /><param name="wmode" value="transparent"><embed src="' + flashurl + '" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="645" height="117" wmode="transparent"></embed></object>';
		$j("#mboxFlashCell").append(tag);
	}
}

var Blog = {};
Blog.selectArchiveDate = function (form, year) {
	var selectObj = $j("#archiveSelect" + year).get(0);
	var index = selectObj.selectedIndex;
	var monthDate = selectObj.options[index].value;

	if (!monthDate) {
		return false;
	}
	var url = form.action + monthDate
	location.href = url;
}

Blog.changeMonth = function (url) {
	$j("#calendar").load(url, Blog.endProcess);
	return false;
}

Blog.endProcess = function () {
	var date = $j("#calendar table").attr("summary");
	Blog.setWeekendAndHoliday(date.split("/")[0], date.split("/")[1]);
	$j("#calendar").show("fast");
}

Blog.setWeekendAndHoliday = function (y, m) {
	setCurrentDate();
	var table = $j("#calendar table");
	var summary = table.attr("summary");

	if (summary == null) {
		return;
	}
	var year = summary.split("/")[0];
	var month = summary.split("/")[1];

	if (!(year == y && month == m)) {
		return;
	}

	var spans = table.find("tr td span");
	var day;

	spans.each(function () {
		day = $j(this).text().trim();
		if (isHoliday(year, month, day)) {
			$j(this).parent("td").addClass("holiday");
		}
	});
}

Blog.changeCaptcha = function () {
	var captcha = $j("#authImage img");
	var container = captcha.parent();
	container.fadeOut("fast");
	var base = '/sitecore%20modules/EviBlog/CaptchaHandler.ashx?r=';
	var r = Math.floor(Math.random() * 0x3e8) + 1
	captcha.attr('src', base + r);
	container.fadeIn("fast");

	return false;
}

// ## Artist ##
var ArtistPageUtil = {};
ArtistPageUtil.SwitchDisplayToList = function () {
	$j('#searchResultTblTypeList').show();
	$j('#searchResultTblTypeImages').hide();
	$j('#displayMode_listDisp').css("color", "");
	$j('#displayMode_listDisp').css("cursor", "auto");
	$j('#displayMode_imageOnly').css("color", "#0066CC");
	$j('#displayMode_imageOnly').css("cursor", "pointer");

	ArtistPageUtil._GetInput("displayMode").val("");
}
ArtistPageUtil.SwitchDisplayToTile = function () {
	$j('#searchResultTblTypeList').hide();
	$j('#searchResultTblTypeImages').show();
	$j('#displayMode_listDisp').css("color", "#0066CC");
	$j('#displayMode_listDisp').css("cursor", "pointer");
	$j('#displayMode_imageOnly').css("color", "");
	$j('#displayMode_imageOnly').css("cursor", "auto");

	ArtistPageUtil._GetInput("displayMode").val("image");
}
ArtistPageUtil._GetInput = function (name) {
	return $j("input:hidden[name=" + name + "]")
}
ArtistPageUtil._ResetInput = function () {
	ArtistPageUtil._GetInput("format").val("");
	ArtistPageUtil._GetInput("sortName").val("");
	ArtistPageUtil._GetInput("direction").val("");
}
ArtistPageUtil._Submit = function () {
	var dispStatus = "0";
	if (CommonPageUtil.IsVisibleResultViewRule()) {
		dispStatus = "1";
	}
	ArtistPageUtil._GetInput("dispStatus").val(dispStatus);

	$j("#discographyForm").submit();
}
ArtistPageUtil.ChangeFormat = function (genreName) {
	ArtistPageUtil._ResetInput();
	ArtistPageUtil._GetInput("format").val(genreName);
	ArtistPageUtil._Submit();
}
ArtistPageUtil.ChangeSort = function (key, direction) {
	ArtistPageUtil._GetInput("sortName").val(key);
	ArtistPageUtil._GetInput("direction").val(direction);
	ArtistPageUtil._Submit();
}
ArtistPageUtil._EditReflexiveAnchor = function (node) {
	if (node.nodeName == "A" || node.nodeName == "a") {

		$j(node).click(function () {
			ArtistPageUtil._PagingDiscography(this.name);
		});

		node.name = node.href;
		node.href = "javascript:void(0);";
		node.onclick = "return false;";
	} else {
		$j(node).children().each(function () { ArtistPageUtil._EditReflexiveAnchor(this) });
	}
}
ArtistPageUtil._ObserveLinks = function (className) {
	var links = $j("." + className);
	for (var i = 0; i < links.length; i++) {
		ArtistPageUtil._EditReflexiveAnchor(links[i]);
	}
}
ArtistPageUtil._AddFormat = function () {
	if (this._GetInput("format").val() != "") {
		return "&format=" + this._GetInput("format").val();
	}
	return "";
}
ArtistPageUtil._AddDisplayMode = function () {
	if (ArtistPageUtil._GetInput("displayMode").val() == "image") {
		return "&displayMode=image";
	}
	return "";
}
ArtistPageUtil._AddDispStatus = function () {
	if (CommonPageUtil.IsVisibleResultViewRule()) {
		return "&dispStatus=1";
	}
	return "";
}
ArtistPageUtil._AddSortName = function () {
	var sortName = ArtistPageUtil._GetInput("sortName").val();
	if (!sortName) {
		return "";
	}

	return "&sortName="+sortName;
}
ArtistPageUtil._AddDirection = function () {
	if (this._GetInput("direction").val() == "true") {
		return "&direction=true";
	}
	return "";
}
ArtistPageUtil._PagingDiscography = function (originalUrl) {
	var url = "?";
	url += "page=" + CommonPageUtil.GetPageNoFromQueryString(originalUrl);
	url += ArtistPageUtil._AddFormat();
	url += ArtistPageUtil._AddDisplayMode();
	url += ArtistPageUtil._AddSortName();
	url += ArtistPageUtil._AddDirection();
	url += ArtistPageUtil._AddDispStatus();

	if (location.href != url) {
		location.href = url;
	}
}

ArtistPageUtil.Initialize = function () {
	ArtistPageUtil._ObserveLinks("backLink");
	ArtistPageUtil._ObserveLinks("nextLink");
	ArtistPageUtil._ObserveLinks("pagination");
}

// //## Artist ##

var CommonPageUtil = {};
CommonPageUtil.FlipFlopResultViewRule = function () {
	if (!CommonPageUtil.IsVisibleResultViewRule()) {
		//表示する
		$j('#resultViewRuleMenu').toggle('fast',
				function () {
					$j('#resultViewRuleImage').attr('src', '/img/search_result-rulebtn-close.gif');
				});
	} else {
		//隠す
		$j('#resultViewRuleMenu').toggle('fast',
				function () {
					$j('#resultViewRuleImage').attr('src', '/img/search_result-rulebtn-open.gif');
				});
	}
}
CommonPageUtil.IsVisibleResultViewRule = function () {
	var hidden = $j('#resultViewRuleMenu').css("display") == "none";
	return !hidden;
}
CommonPageUtil.PerseQueryString = function(queryString){
	var vars = [], hash;
	var hashes = queryString.slice(queryString.indexOf('?') + 1).split('&');
	for (var i = 0; i < hashes.length; i++) {
		hash = hashes[i].split('=');
		vars.push(hash[0]);
		vars[hash[0]] = hash[1];
	}
	return vars;
}
CommonPageUtil.GetPageNoFromQueryString = function (queryString) {
	var page = CommonPageUtil.PerseQueryString(queryString)["page"];
	return page;
}
CommonPageUtil.GetRandom = function () {
	return Math.floor((new Date()).getTime() / 1000 / (60 * 5));
}
CommonPageUtil.HtmlEncode = function (src) {
	if (!src) {
		return src;
	}

	var htmlspecialchars = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;" }

	result = src;
	$j.each(htmlspecialchars, function (k, v) {
		result = result.replace(k, v);
	})

	return result;
}

// Item
var ItemPageUtil = {};
ItemPageUtil.UpImage = '/img/btn-square_up.gif';
ItemPageUtil.DownImage = '/img/btn-square_down.gif';
ItemPageUtil.ToggleCreditPanel = function (sender, id) {
	var target = $j("#" + id);
	if (!target || !sender) {
		return;
	}

	target.slideToggle("fast", this.UpdateCreditPanelSwitchImage(target, sender));
}

ItemPageUtil.IsVisible = function (obj) {
	return obj.css("display") == "none";
}

ItemPageUtil.UpdateCreditPanelSwitchImage = function (creditPanel, obj) {
	var target = $j(obj);
	if (this.IsVisible(creditPanel)) {
		target.attr("src", this.UpImage);
	}
	else {
		target.attr("src", this.DownImage);
	}
}

ItemPageUtil.LoadRelationItemParts = function (itemId) {
	$j("#relationItems").load(
		"/item/ajax/relationItems?id=" + itemId + "&r=" + this.GetRandom(),
		null,
		function (res, status) {
			if (status != "error") {
				$j(this).fadeIn();
			}
		}
	);
}

ItemPageUtil.LoadRecommendParts = function (itemId) {
	$j("#recommendItems").load(
		"/item/ajax/recommend?id=" + itemId + "&r=" + this.GetRandom(),
		null,
		function (res, status) {
			if (status != "error") {
				$j(this).fadeIn();
			}
		}
	);
}

ItemPageUtil.LoadCustomersVoiceParts = function (itemId) {
	var box = $j("#customersVoiceBox");
	$j.get(
		"/item/ajax/customersVoice?id=" + itemId + "&r=" + this.GetRandom(),
		null,
		function (res) {
			if ($j.trim(res).length > 0) {
				if (box.size() == 1) {
					box.fadeOut("fast").html(res).fadeIn();
				}

				$j("#customersvoiceTab").fadeIn();
			}
		}
	);
}

ItemPageUtil.LoadArticleParts = function (itemId) {
	var box = $j("#articleSet");
	$j.get(
		"/item/ajax/article?id=" + itemId + "&r=" + this.GetRandom(),
		null,
		function (res) {
			if ($j.trim(res).length > 0) {
				if (box.size() == 1) {
					box.fadeOut("fast").html(res).fadeIn();
				}

				$j("#articleTab").fadeIn();
			}
		}
	);
}

ItemPageUtil.GetRandom = function () {
	return CommonPageUtil.GetRandom();
}
// //Item

//--------------
// Search詳細検索のUI制御用
// ・popup
// ・textbox追加
//--------------
SearchCondition = function () {
	this.initialize.apply(this, arguments);
};

SearchCondition.prototype = {
	elmContainer: null,
	elementHtml: null,

	onInitElement: null,
	onRemove: null,
	onChange: null,

	initialize: function (elmContainer) {
		this.elmContainer = elmContainer;
	},

	add: function () {
		var elmTemp = new Element('div');
		elmTemp.innerHTML = this.elementHtml;
		var elm = elmTemp.childElements()[0];

		elm.hide();
		this.elmContainer.appendChild(elm);
		elm.appear({
			duration: 0.3
		});

		if (this.onInitElement != null) {
			this.onInitElement(elm);
		}
		if (this.onChange != null) {
			this.onChange();
		}
	},

	remove: function (elm) {
		if (this.onRemove != null) {
			this.onRemove(elm);
		}
		elm.fade({
			duration: 0.3,
			afterFinish: function () {
				elm.remove();

				if (this.onChange != null) {
					this.onChange();
				}
			} .bind(this)
		});
	},

	childElements: function () {
		return this.elmContainer.childElements();
	}
};

SearchHelpPopup = function () {
	this.initialize.apply(this, arguments);
};

SearchHelpPopup.prototype = {
	elmPopup: null,

	STATUS_HIDDEN: 0,
	STATUS_SHOWN: 1,
	status: 0,

	initialize: function (elm) {
		this.elmPopup = elm;
		this.status = this.STATUS_HIDDEN;
	},

	toggle: function () {
		if (this.status == this.STATUS_HIDDEN) {
			this.show();
		} else if (this.status == this.STATUS_SHOWN) {
			this.hide();
		}
	},

	show: function () {
		$j(this.elmPopup).fadeIn("fast");
		this.status = this.STATUS_SHOWN;
	},

	hide: function () {
		$j(this.elmPopup).fadeOut("fast");
		this.status = this.STATUS_HIDDEN;
	}
};


/**
* DatePickerを指定したIDの要素（input:text）に関連付けます。
* @param textFieldId id
*/
function bindDatePicker(textFieldId) {
	bindDatePicker(textFieldId, null, null, null);
}
/**
* DatePickerを指定したIDの要素（input:text）に関連付けます。
* 年月日のプルダウンに選択した日付を設定します。対象プルダウンのIDをidSalesYearTo, idSalesMonthTo, idSalesDayToに設定します。
* @param textFieldId id
* @param idSalesYearTo id
* @param idSalesMonthTo id
* @param idSalesDayTo id
*/
function bindDatePicker(textFieldId, idSalesYearTo, idSalesMonthTo, idSalesDayTo) {
	var textField = $j("#" + textFieldId);

	if (textField == null) return;

	textField.datepicker({
		changeYear: true,
		changeMonth: true,
		dateFormat: 'yy/mm/dd',
		showMonthAfterYear: true,
		showOtherMonths: true,
		selectOtherMonths: true,
		dayNamesMin: ['日', '月', '火', '水', '木', '金', '土'],
		monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
		yearRange: '1940:2030',
		onSelect: function (dateText, inst) {
			var yearSelection = $j("#" + idSalesYearTo);
			var monthSelection = $j("#" + idSalesMonthTo);
			var daySelection = $j("#" + idSalesDayTo);
			if (yearSelection != null && yearSelection != null && yearSelection != null) {
				var selectedDate = $j(this).datepicker("getDate");
				yearSelection.val(selectedDate.getFullYear());
				monthSelection.val(selectedDate.getMonth() + 1);
				daySelection.val(selectedDate.getDate());
			}
		}
	});
}

// ## Article ##
var ArticlePageUtil = {};
ArticlePageUtil.DELIM = ":";
ArticlePageUtil.IDPARAM_DELIM = ",";

ArticlePageUtil.GetItemBoxTags = function() {
	return $j(".related_item");
}
ArticlePageUtil.MakeItemBoxEntity = function (tag) {
	var data = ArticlePageUtil._Create($j.trim(tag.innerHTML));
	if (data != null) {
		return data;
	}

	return null;
}

ArticlePageUtil.MakeItemBoxList = function () {

	var result = $j.map(ArticlePageUtil.GetItemBoxTags(), function (tag) {
		var data = ArticlePageUtil.MakeItemBoxEntity(tag);
		if (data != null) {
			return data;
		}
	});

	return result;
}
ArticlePageUtil.InitializeItemBox = function (boxList) {

	var params = ArticlePageUtil._CreateIdParameters(boxList);
	ArticlePageUtil._LoadItemBox(params);
}

ArticlePageUtil.DisplayItemBoxes = function (map) {
	var boxes = ArticlePageUtil.GetItemBoxTags();

	$j.each(boxes, function (i, tag) {
		var entity = ArticlePageUtil.MakeItemBoxEntity(tag);
		if (entity) {
			var item = map[entity.ItemId];
			if (item) {
				ArticlePageUtil.DisplayItemBox(tag, item, entity);
			}
		}
	});
}
ArticlePageUtil.DisplayItemBox = function (elem, item , entity) {
	if (entity) {
		var target = $j(elem);
		target.html(ArticlePageUtil.MakeItemView_ItemBox(item));
		target.addClass("inMdl-atclImgFloat" + entity.Align);
		target.fadeIn();
	}
}
ArticlePageUtil._LoadItemBox = function (params) {
	$j.getJSON("/ajax/loadArticleItemBox", { iid: params, r: CommonPageUtil.GetRandom() },
		function (data) {
			if ((data) && data.length > 0) {
				itemContainer = ArticlePageUtil._CreateItemMap(data);
				ArticlePageUtil.DisplayItemBoxes(itemContainer);
			}
			else {
				return false;
			}
		});
}
ArticlePageUtil._CreateIdParameters = function (itemBoxList) {

	var idList = $j.map(itemBoxList, function (n) {
		return n.ItemId;
	});

	if (idList && idList.length > 0) {
		$j.unique($j.unique(idList));
		return idList.join(this.IDPARAM_DELIM);
	}

	return null;
}
ArticlePageUtil._CreateItemMap = function (data) {
	var result = {};

	$j.each(data, function (i, item) {
		if (item && item.ItemId) {
			result[item.ItemId] = item;
		}
	});

	return result;
}
ArticlePageUtil._Create = function (raw) {
	var param = raw.split(this.DELIM);
	if (param != null && param.length == 2) {
		if (!param[0] || !param[0].match(/^[0-9]+$/)) {
			return null;
		}
		if (!param[1] || !param[1].match(/^[L|R]$/)) {
			return null;
		}

		return new ItemBox(param[0], param[1]);
	}

	return null;
}
ArticlePageUtil.MakeItemView_ItemBox = function (item) {
	if (!item) return null;

	var result = '<div class="inMdl-atclItemCell">';
	result += ArticlePageUtil.MakeItemView_Tile(item,false);
	result += "</div>";
	return result;
}
ArticlePageUtil.MakeItemView_Tile = function (item, isDisplayComment) {
	if (!item) return null;

	var result = "";

	result += '<span class="image">';
	result += '<a href="' + item.ItemLink + '">';
	result += '<img width="90" height="90" alt="' + item.ItemName + '" src="' + item.ItemImageUrl_S + '"/>';
	result += '</a></span>';
	result += '<span class="title"><a href="' + item.ItemLink + '">' + item.ItemName + '</a></span>';
	result += '<span class="artist">' + item.ArtistNameWithLink + '</span>';
	if (item.ReleaseDay) {
		result += '<span class="artist">発売日：' + item.ReleaseDay + '</span>';
	}
	if (item.IsSalePrice) {
		result += '<span class="priceSale">￥' + item.SalePrice + '</span>';
		result += '<span class="off"><s>￥' + item.RegularPrice + '</s></span>';
	}
	else {
		result += '<span class="price">￥' + item.RegularPrice + '</span>';
	}

	if (item.IsSelling) {
		if (item.IsOverSaleDate) {
			result += '<span class="btn"><a href="/ec/shoppingbag/itemList.aspx?iamount=1&amp;action=cartin&amp;iid=' + item.ItemId + '"><img src="/img/btn-search-incart.gif" alt="カートに入れる" /></a></span>';
		}
		else {
			result += '<span class="btn"><a href="/ec/shoppingbag/itemList.aspx?iamount=1&amp;action=cartin&amp;iid=' + item.ItemId + '"><img src="/img/btn-search-reserve1.gif" alt="予約する" /></a></span>';
		}
	}

	result += '<span class="text">' + item.ItemComment + '</span>';

	return result;
}
ArticlePageUtil.MakeItemView_List = function (item, isDetail) {
	if (!item) return null;

	var result = "";

	result += '<span class="image">';
	result += '<a href="' + item.ItemLink + '">';
	result += '<img width="120" height="120" alt="' + item.ItemName + '" src="' + item.ItemImageUrl + '"/>';
	result += '</a></span>';
	result += '<span class="title"><a href="' + item.ItemLink + '">' + item.ItemName + '</a></span>';
	result += '<span class="artist">' + item.ArtistNameWithLink + '</span>';

	item.ReleaseDay
	var displayReleaseDay = "";
	if (item.ReleaseDay) {
		displayReleaseDay = "発売日：" + item.ReleaseDay;
	}
	var displayProductNumber = "";
	if (item.ProductNumber) {
		displayProductNumber = "規格品番：" + item.ProductNumber;
	}
	var displayLabelName = "";
	if (item.LabelName) {
		displayLabelName = "レーベル：" + item.LabelName;
	}

	var itemGenreName = "";
	var itemSubGenreName = "";
	if (item.MainGenreSlug && item.MainGenreName) {
		if (item.MainGenreSlug != '') {
			itemGenreName = 'ジャンル：<a href="/genre/' + item.MainGenreSlug + '">' + item.MainGenreName + '</a>';
		} else {
			itemGenreName = 'ジャンル：' + item.MainGenreName;
		}
	}
	if (item.MainGenreSlug && item.MainGenreSlug != '' && item.SubGenreSlug && item.SubGenreName) {
		itemSubGenreName = ' > <a href="/genre/' + item.MainGenreSlug + '/' + item.SubGenreSlug + '">' + item.SubGenreName + '</a>';
	}

	if (isDetail) {
		result += '<span class="date"><strong>' + item.FormatName + '</strong></span>'
		result += '<span class="date">' + displayReleaseDay + ' ' + displayProductNumber + '</span>';
		result += '<span class="date">' + itemGenreName + ' ' + itemSubGenreName + '</span>'
		result += '<span class="date">' + displayLabelName + '</span>';
	}
	else {
		result += '<span class="date">' + displayReleaseDay + '</span>';
	}

	result += '<span class="text">' + item.ItemComment + '</span>';

	if (item.IsSalePrice) {
		result += '<span class="priceSale">￥' + item.SalePrice + '</span>';
		result += '<span class="off"><s>￥' + item.RegularPrice + '</s></span>';
	}
	else {
		result += '<span class="price">￥' + item.RegularPrice + '</span>';
	}

	if (item.IsSelling) {
		if (item.IsOverSaleDate) {
			result += '<span class="btn"><a href="/ec/shoppingbag/itemList.aspx?iamount=1&amp;action=cartin&amp;iid=' + item.ItemId + '"><img src="/img/btn-search-incart.gif" alt="カートに入れる" /></a></span>';
		}
		else {
			result += '<span class="btn"><a href="/ec/shoppingbag/itemList.aspx?iamount=1&amp;action=cartin&amp;iid=' + item.ItemId + '"><img src="/img/btn-search-reserve1.gif" alt="予約する" /></a></span>';
		}
	}

	return result;
}

function ArticleItemBoxLoader() { };
ArticleItemBoxLoader.prototype.itemBoxList = null;
ArticleItemBoxLoader.prototype.Initialize = function () {
	this.itemBoxList = ArticlePageUtil.MakeItemBoxList();
	if (this.itemBoxList && this.itemBoxList.length > 0) {
		ArticlePageUtil.InitializeItemBox(this.itemBoxList);
	}
}

function ItemBox(id, alignment) {
	this.ItemId = id;
	this.Align = alignment;
}

// //## Article ##

// ## ArticleRelatedItems ##
// <![CDATA[
	var gRelatedItems;

	ArticlePageUtil.RelatedItems = function () { };
	ArticlePageUtil.RelatedItems.CONTENT_PANEL_SELECTOR = "#div_item_contents";
	ArticlePageUtil.RelatedItems.ITEMS_PER_PAGE = 32;
	ArticlePageUtil.RelatedItems.Initialize = function (idParam, displayType) {

		var endpoint = "/ajax/articleRelatedItems";
		var optInit = this._GetPaginationOptions(displayType);
		var CONTENT_PANEL_SELECTOR = this.CONTENT_PANEL_SELECTOR;

		$j.getJSON(endpoint, { id: idParam, r: CommonPageUtil.GetRandom() },
		function (data) {
			if ((data) && data.length > 0) {
				gRelatedItems = data;

				$j(CONTENT_PANEL_SELECTOR).pagination(gRelatedItems.length, optInit);
				$j(CONTENT_PANEL_SELECTOR).show();
			}
			else {
				return false;
			}
		});
	}

	ArticlePageUtil.RelatedItems.Order = function (OrderBy, displayType) {

		var optInit = this._GetPaginationOptions(displayType);
		var CONTENT_PANEL_SELECTOR = this.CONTENT_PANEL_SELECTOR;

		if ($j(OrderBy).val() == "artist") {
			gRelatedItems = $j(gRelatedItems).OrderBy(ArtistRegularName);
		}
		if ($j(OrderBy).val() == "title") {
			gRelatedItems = $j(gRelatedItems).OrderBy(ItemName);
		}
		if ($j(OrderBy).val() == "saleDay") {
			gRelatedItems = $j(gRelatedItems).OrderBy(ReleaseDay);
		}

		optInit["current_page"] = 0;

		$j(CONTENT_PANEL_SELECTOR).pagination(gRelatedItems.length, optInit);
		$j(CONTENT_PANEL_SELECTOR).show();
	}

	ArticlePageUtil.RelatedItems._ResolveCallback = function (displayType) {
		var result = this.ImageOnly;
		// var result = this.DetailList;
		// var result = this.OutlineList;
		if (!displayType) {
			return result;
		}

		if (displayType == "DetailList") {
			result = this.DetailList;
		} else if (displayType == "OutlineList") {
			result = this.OutlineList;
		}

		return result;
	}

	ArticlePageUtil.RelatedItems._GetPaginationOptions = function (displayType) {

		var opt = { callback: this._ResolveCallback(displayType) };
		opt["items_per_page"] = 32;
		opt["num_display_entries"] = 10;
		opt["prev_text"] = "前の32件";
		opt["next_text"] = "次の32件";
		opt["link_to"] = this.CONTENT_PANEL_SELECTOR;

		opt.prev_text = CommonPageUtil.HtmlEncode(opt.prev_text);
		opt.next_text = CommonPageUtil.HtmlEncode(opt.next_text);
		return opt;
	}

	ArticlePageUtil.RelatedItems.ImageOnly = function (page_index, jq) {
		var ITEMS_PER_PAGE = ArticlePageUtil.RelatedItems.ITEMS_PER_PAGE;
		// Get number of elements per pagionation page from form
		var max_elem = Math.min((page_index + 1) * ITEMS_PER_PAGE, gRelatedItems.length);
		var newcontent = "";
		var lilist = "";
		var itemcounter = 0;
		// Iterate through a selection of the content and build an HTML string
		for (var i = page_index * ITEMS_PER_PAGE; i < max_elem; i++) {
			if ((itemcounter % 4) == 0) {
				if (lilist != "") {
					newcontent += "<ul class=\"inMdl-atclItemRow\">" + lilist + "</ul>";
					lilist = "";
				}
				lilist += "<li class=\"first\">";
			}
			else {
				lilist += "<li>";
			}

			lilist += ArticlePageUtil.MakeItemView_Tile(gRelatedItems[i],true);

			lilist += "</li>";
			itemcounter++;
		}
		if (lilist != "") {
			newcontent += "<ul class=\"inMdl-atclItemRow\">" + lilist + "</ul>";
		}

		// Replace old content with new content
		$j("#inRelatedItems").fadeOut("fast", function () {
			$j(this).html(newcontent).fadeIn("fast")
		});

		ArticlePageUtil.RelatedItems._DisplayTopPagination(gRelatedItems.length, page_index, max_elem);

		// click eventpropagation
		return true;
	}

	ArticlePageUtil.RelatedItems.OutlineList = function (page_index, jq) {
		var ITEMS_PER_PAGE = ArticlePageUtil.RelatedItems.ITEMS_PER_PAGE;
		var max_elem = Math.min((page_index + 1) * ITEMS_PER_PAGE, gRelatedItems.length);
		var newcontent = "";
		var lilist = "";
		var itemcounter = 0;
		// Iterate through a selection of the content and build an HTML string
		for (var i = page_index * ITEMS_PER_PAGE; i < max_elem; i++) {
			if ((itemcounter % 2) == 0) {
				if (lilist != "") {
					if (newcontent != "") {
						newcontent += "<div class=\"rowBox\">" + lilist + "</div>";
					}
					else {
						newcontent += "<div class=\"rowBox firstRow\">" + lilist + "</div>";
					}
					lilist = "";
				}
				lilist += "<div class=\"cellBox firstCell\">";
			}
			else {
				lilist += "<div class=\"cellBox\">";
			}

			lilist += ArticlePageUtil.MakeItemView_List(gRelatedItems[i],false);

			lilist += "</div>";
			itemcounter++;
		}
		if (lilist != "") {
			if (newcontent != "") {
				newcontent += "<div class=\"rowBox\">" + lilist + "</div>";
			}
			else {
				newcontent += "<div class=\"rowBox firstRow\">" + lilist + "</div>";
			}
		}
		// Replace old content with new content
		$j("#inRelatedItems").fadeOut("fast", function () {
			$j(this).html("<div class=\"inMdl-2setItemRow\">" + newcontent + "</div>").fadeIn("fast")
		});

		ArticlePageUtil.RelatedItems._DisplayTopPagination(gRelatedItems.length, page_index, max_elem);

		// click eventpropagation
		return true;
	}

	ArticlePageUtil.RelatedItems.DetailList = function (page_index, jq) {
		var ITEMS_PER_PAGE = ArticlePageUtil.RelatedItems.ITEMS_PER_PAGE;
		var max_elem = Math.min((page_index + 1) * ITEMS_PER_PAGE, gRelatedItems.length);
		var newcontent = "";
		var lilist = "";
		var itemcounter = 0;
		// Iterate through a selection of the content and build an HTML string
		for (var i = page_index * ITEMS_PER_PAGE; i < max_elem; i++) {
			if (lilist != "") {
				lilist += "<div class=\"cellBox\">";
			}
			else {
				lilist += "<div class=\"cellBox firstCell\">";
			}

			lilist += ArticlePageUtil.MakeItemView_List(gRelatedItems[i],true);

			lilist += "</div>";
			itemcounter++;
		}
		// Replace old content with new content
		$j("#inRelatedItems").fadeOut("fast", function () {
			$j(this).html("<div class=\"inMdl-1setItemRow\"><div class=\"rowBox\">" + lilist + "</div></div>").fadeIn("fast")
		});

		ArticlePageUtil.RelatedItems._DisplayTopPagination(gRelatedItems.length, page_index, max_elem);

		// click eventpropagation
		return true;
	}

	ArticlePageUtil.RelatedItems._DisplayTopPagination = function (total, page_index, max_elem) {
		var pagenum = "";
		pagenum += "<span class=\"pageNum\">";
		pagenum += total;
		pagenum += "件中&nbsp;";
		pagenum += ((page_index * this.ITEMS_PER_PAGE) + 1);
		pagenum += "～";
		pagenum += max_elem;
		pagenum += "件";
		pagenum += "</span>";
		$j("#topPaginationLeft").html(pagenum);
	}
//]]>
// //## ArticleRelatedItems ##
