/*

File: main.js

Abstract: Defines JavaScript functionality for the DrillDown sample.
	      Shows how to navigate to the next view in a hierarchy of views.
		  Updates both category and product lists.

Version: <1.0>

Disclaimer: IMPORTANT:  This Apple software is supplied to you by
Apple Inc. ("Apple") in consideration of your agreement to the
following terms, and your use, installation, modification or
redistribution of this Apple software constitutes acceptance of these
terms.  If you do not agree with these terms, please do not use,
install, modify or redistribute this Apple software.

In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
"Apple Software"), to use, reproduce, modify and redistribute the Apple
Software, with or without modifications, in source and/or binary forms;
provided that if you redistribute the Apple Software in its entirety and
without modifications, you must retain this notice and the following
text and disclaimers in all such redistributions of the Apple Software.
Neither the name, trademarks, service marks or logos of Apple Inc.
may be used to endorse or promote products derived from the Apple
Software without specific prior written permission from Apple.  Except
as expressly stated in this notice, no other rights or licenses, express
or implied, are granted by Apple herein, including but not limited to
any patent rights that may be infringed by your derivative works or by
other works in which the Apple Software may be incorporated.

The Apple Software is provided by Apple on an "AS IS" basis.  APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.

IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

Copyright (C) 2008 Apple Inc. All Rights Reserved.

*/

/*
	Called by HTML body element's onload event when the web application is ready to start.
	This function was generated by Dashcode.
*/
function load(title)
{
	if (title != null) dashcodePartSpecs.header.rootTitle = title;
    dashcode.setupParts();
}

function ListController(inPrefix) {

	this.pfix = inPrefix;
	this.nextView = (this.pfix == "A") ? "B" : "A";

	/* categoryList will display these items  */
	this._rowData = [];
}
ListController.prototype.initData = function(category) {

	if (category != null){
	    /* Update the data source with the retrieved products */
		this._rowData = category;

		/* IMPORTANT: You must refresh the list once you are done appending data to it.
		   The list will be empty or outdated if you skip this step. */
		 document.getElementById("categoryList" + this.pfix).object.reloadData();
	}

}
ListController.prototype.setRowData = function(category) {

	var productDetails = selectProducts(category);
	if (productDetails != null){
	    /* Update the data source with the retrieved products */
		this._rowData = productDetails;

		/* IMPORTANT: You must refresh the list once you are done appending data to it.
		   The list will be empty or outdated if you skip this step. */
		 document.getElementById("categoryList" + this.pfix).object.reloadData();
	} else {
		this._rowData = [];
	}
}

ListController.prototype.numberOfRows = function() {
	return this._rowData.length;
}

ListController.prototype.prepareRow = function(rowElement, rowIndex, templateElements) {

	/*
	   templateElements contains references to all elements that have an id in the category template row.
	   We use the lines below to update the list with each category item in _rowData.
	*/
	var label = templateElements["categoryLabel" + this.pfix];
	var arrow = templateElements["rowArrow" + this.pfix];
	if (label) label.innerHTML = this._rowData[rowIndex][0];
	if (arrow) {
		var next = this._rowData[rowIndex][1];
		if (next.substring(next.length - 1) == "/")
			arrow.setAttribute("class", "");
	}

    /* Assign an onclick handler that will cause the browser to go a page
	   showing all products related to this category item, when clicked
	*/
	var self = this;
    var handler = function() {
		/* Get the category item associated with this row */
		var browser = document.getElementById('browser').object;
		var data = self._rowData[rowIndex];
		var next = data[1];
		if (next.substring(0,1) == "#") {
			setViewArea(LIST_AREA, self.nextView);
			$("#detailArea" + self.nextView).html("");

			/* Call next listController to show all products associated with "category" */
			if (self.pfix =="A")
				listControllerB.setRowData(next);
			else
				listControllerA.setRowData(next);

			/* The Browser's goForward method is used to make the browser push down to a new level.
			   Going back to previous levels is handled automatically. */
			browser.goForward(document.getElementById('categoryView' + self.nextView), data);

		} else if (next.substring(next.length - 1) == "/") {
			document.location = next;
			return true;
		} else {
			setMode(next);
			setViewArea(ITEMS_AREA, self.nextView);
			var itemArea = $("#items" + self.nextView);
			itemArea.children("h2").css("display", (_ajaxMode == "users") ? "none" : "block");
			__itemList = $("#itemList" + self.nextView);

			if ((_ajaxMode == "item") || (_ajaxMode == "useritem")) {
				browser.page = 1;
				$("#detailArea" + self.nextView).html("");
				itemArea.children("h2").text("");
				itemArea.attr("class", "");
				__itemList.attr("class", "userItems");
			} else {
				itemArea.children("h2").text(getTitle(_ajaxMode, data[0]));
				itemArea.attr("class", "smallItem");
				__itemList.attr("class", "smallItemA");

				if (_ajaxMode == "pop") {
					__isMobile = "Yes";
					drawSubCategoryUpdate('データ取得中...');
					$("#subCategory").css("display", "block");
					requestSubCategoryAjax(data[1]);
				}
			}
			var view = document.getElementById('categoryView' + self.nextView);
			browser.goForward(view, data);
			requestItemAjax(next, self.nextView, browser.page);
			return true;
		}
	};
    rowElement.onclick = handler;
}

var listControllerA = new ListController("A");
var listControllerB = new ListController("B");

var _dialog;

function initPage() {
	initSetting();
	$("#itemTarget span").click( function() { clickLabel($(this).children("input")); return false; });
}

function clickLabel(chk) {
	chk.attr("checked", !chk.attr("checked"));
}

function setSetting(inIsCommit) {
	if (inIsCommit) {
		var browser = document.getElementById('browser').object;
		var pfix = browser.getCurrentPfix();

		var tmp = new Array();
		tmp.push('<br />');
		tmp.push('<div class="msgBox">');
		tmp.push('データ取得中...');
		tmp.push('</div>');
		$("#itemList" + pfix).html("");
		$("#itemListMsg" + pfix).html(tmp.join(""));
		$("#itemListMsg" + pfix).css("display", "block");

		saveSetting();
		goPage(browser.page);
	}
	showSetting(false);
}

function getTitle(inKey, inVal) {
	switch (inKey) {
		case "pop": return inVal ? inVal : "人気アイテム";
		case "reco": return inVal ? inVal : "お勧めアイテム";
		case "rank": return inVal ? inVal : "ランキング";
		case "new": return inVal ? inVal : "新着アイテム";
		case "detail": return inVal ? inVal : "アイテム詳細";
		case "users": return inVal ? inVal : "登録済みユーザー";
		case "user": return inVal ? inVal : "ユーザー";
		case "edit": return inVal ? inVal : "アイテム情報編集";
		case "search": return inVal ? inVal : "検索";
		case "tags": return inVal ? inVal : "タグ一覧";
	}
	return "";
}

function goPage(inPage) {
	switch (_ajaxMode) {
		case "tags":
			var browser = document.getElementById('browser').object;
			browser.page = inPage;
			requestTagItem(_currentPfix, browser.tagName, inPage);
			break;
		case "search":
			searchItem(inPage, true);
			break;
		default:
			requestItemAjax(_currentNode, _currentPfix, inPage);
			break;
	}
	return false;
}

function requestMsg() {
	var tmp = new Array();
	tmp.push('<br />');
	tmp.push('<div class="msgBox">');
	tmp.push("データ取得中...");
	tmp.push('</div>');
	return tmp.join("");
}

function requestItemAjax(inNode, inPfix, inPage) {

	var request = new Request(true);
	if (!request.ajax) return;

	if ((inNode == "Items") || (inNode == "UserItems")) {
		inNode = _currentStatus;
	}

	if (_currentNode != inNode) {
		_currentNode = inNode;
		_currentPfix = inPfix;
		$("#itemList" + inPfix).html(requestMsg());
	}

	var params = "mode=" + _ajaxMode + "&node=" + inNode + "&page=" + inPage + "&count=" + _itemsOfPage;
	if (_ajaxMode != "search") params += "&sort=" + _itemOrder;
	if (_itemTargetKind != "") params += "&kind=" + _itemTargetKind;

	var callback = function (response, option) {
    	switch (option.mode) {
    		case "rank":
    			drawItemRankingList(response, option.pfix);
    			break;
    		case "item":
    		case "useritem":
    			_currentStatus = option.node;
    			drawUserItemData(response, option.pfix, option.page);
    			break;
    		case "users":
    			drawUserList(response, option.pfix);
    			break;
    		case "tags":
    			drawTagListPage(response, option.pfix, option.page);
    			break;
    		case "search":
    			drawSearchPage(response, option.pfix, option.page);
    			break;
    		default:
	    		drawItemList(response, option.pfix);
    			break;
	    }
		$('.im').click( function() { drawItemDetail(option.pfix, $(this)); return false; });
		if (option.page > 0) setTimeout(function() { gotoTop(); }, 500);
	}
	request.option.mode = _ajaxMode;
	request.option.pfix = inPfix;
	request.option.page = inPage;
	request.option.node = inNode;
	request.post("ajaxItem.php", params, callback);

}

function drawErrorMsg(e) {
	hideBusy();

	var tmp = new Array();
	tmp.push('<br />');
	tmp.push('<div class="msgBox">');
	tmp.push("データの取得に失敗しました。<br />");
	tmp.push(e.message);
	tmp.push('</div>');

	$("#itemList" + _currentPfix).html(tmp.join(""));
}

function setAjaxMsg(tmp, msg) {
	tmp.push('<br />');
	tmp.push('<div class="msgBox">');
	tmp.push(msg);
	tmp.push('</div>');
}

function drawTagListPage(inData, inPfix, inPage) {

	try{
		var data = json_parse(inData);
	}catch(e){
		drawErrorMsg(e);
		return;
	}

	var tmp = new Array();
	if (data.msg == "") {
		tmp.push(data.html);
	} else {
		setAjaxMsg(tmp, data.msg);
	}

	setViewArea(DETAIL_AREA, inPfix);
	$("#detailArea" + inPfix).html(tmp.join(""));
	$('.tg').click( function() { tagItemList(inPfix, $(this)); return false; });
	// inPage < 0 はbackした時
	if (inPage < 0) {
		var pos = -inPage;
		setTimeout(function() {scrollY(pos);}, 500);
	}
	return;
}

function searchItem(inPage, isGoToTop) {

	var request = new Request(true);
	if (!request.ajax) return;

	if (isGoToTop) _dialog = showBusy("取得中...");

	var params = "mode=searchItem"
				+ "&category=" + $("#_s_category").val()
				+ "&page=" + inPage
				+ "&s_isbn=" + $("#_s_isbn").val()
				+ "&s_title=" + $("#_s_title").val()
				+ "&s_author=" + $("#_s_author").val()
				+ "&s_keyword=" + $("#_s_keyword").val()
				+ "&sort=" + $("#_s_sort").val();

	var callback = function (response, option) {
    	saveSearchCond();
		if (option.isGotoTop) gotoTop();
		drawSearchListPage(response, "B", option.page);
    	return;
	}
	request.option.page = inPage;
	request.option.isGotoTop = isGoToTop;
	request.post("ajaxItem.php", params, callback);

}

function drawSearchPage(inData, inPfix, inPage) {
	$("#menuIcon").css("display", "none");
	$("#searchCondBtn").css("display", "block");

	try{
		var data = json_parse(inData);
	}catch(e){
		drawErrorMsg(e);
		return;
	}

	var tmp = new Array();
	if (data.msg == "") {
		tmp.push(data.html);
	} else {
		setAjaxMsg(tmp, data.msg);
	}

	setViewArea(DETAIL_AREA, inPfix);
	$("#detailArea" + inPfix).html(tmp.join(""));

	var browser = document.getElementById('browser').object;
	setSearchCond(browser);

	// inPage < 0 はbackした時
	if (inPage < 0) {
		var pos = -inPage;
		setTimeout(function() {scrollY(pos);}, 500);
	}
	return;
}

function saveSearchCond() {
	var browser = document.getElementById('browser').object;
	browser.searchCategory = $("#_s_category").val();
	browser.searchIsbn = $("#_s_isbn").val();
	browser.searchTitle = $("#_s_title").val();
	browser.searchAuthor = $("#_s_author").val();
	browser.searchKeyword = $("#_s_keyword").val();
	browser.searchSort = $("#_s_sort").val();
}

function setSearchCond(browser) {
	if (browser.searchCategory < 0) return;

	$("#_s_category").val(browser.searchCategory);
	$("#_s_isbn").val(browser.searchIsbn);
	$("#_s_title").val(browser.searchTitle);
	$("#_s_author").val(browser.searchAuthor);
	$("#_s_keyword").val(browser.searchKeyword);
	$("#_s_sort").val(browser.searchSort);
}

function backSearchListPage(inPfix) {

	// 反応が遅いので処理を分けて体感速度を上げる
	var upd = $("#itemForm").attr("Update");
	if (upd == "1") {
		_dialog = showBusy("更新中...");
	} else {
		_dialog = showBusy("取得中...");
	}
	setTimeout(function() {setBackSearchList(inPfix, upd);}, 150);

}

function setBackSearchList(inPfix, inUpd) {
	var browser = document.getElementById('browser').object;
	$("#detailArea" + inPfix).html(browser.searchCond);
	setSearchCond(browser);

	if (inUpd == "1") {
		searchItem(browser.page, false);
		$("#itemForm").attr("Update", "0");
	} else {
		drawSearchListPage(browser.searchItem, inPfix, browser.page);
	}

	$("#menuIcon").css("display", "none");
	$("#searchCondBtn").css("display", "block");
}

function drawSearchListPage(inData, inPfix, inPage) {

	try{
		var data = json_parse(inData);
	}catch(e){
		drawErrorMsg(e);
		return;
	}

	var tmp = new Array();
	if (data.msg == "") {
		tmp.push(data.navi);
		tmp.push(data.html);
		tmp.push(data.navi);
	} else {
		setAjaxMsg(tmp, data.msg);
	}

	var items = $("#searchItems");
	items.html(tmp.join(""));
	if (items.css("display") == "none") showCond();
	$('.lnk').click( function() { searchItemLink($(this)); return false; });
	$('.im').click( function() { searchItemDetail(inPfix, $(this)); return false; });
	$('.chksts label').click( function() { clickStatus($(this)); return false; });
	var browser = document.getElementById('browser').object;
	browser.searchItem = inData;
	browser.searchCond = $("#detailArea" + inPfix).html();
	browser.page = inPage;
	setTimeout(function() { hideBusy(); }, 200);
	return;
}

function searchItemDetail(inPfix, inItem) {
	$("#menuIcon").css("display", "block");
	$("#searchCondBtn").css("display", "none");
	drawItemDetail(inPfix, inItem);
}

function searchItemLink(inLink) {

	var request = new Request(true);
	if (!request.ajax) return;

	_dialog = showBusy("取得中...");

	$("#_s_isbn").val("");
	$("#_s_title").val("");
	if (inLink.attr("k") == "a") {
		$("#_s_author").val(inLink.text());
		$("#_s_keyword").val("");
	} else {
		$("#_s_author").val("");
		$("#_s_keyword").val(inLink.text());
	}

	var params = "mode=searchItem"
				+ "&category=" + $("#_s_category").val()
				+ "&page=1&" + inLink.attr("k") + "=" + inLink.text()
				+ "&sort=" + $("#_s_sort").val();

	var callback = function (response, option) {
		saveSearchCond();
		drawSearchListPage(response, "B", 1);
		setTimeout(function() { gotoTop(); }, 500);
    	return;
	}
	request.post("ajaxItem.php", params, callback);

}

function tagItemList(inPfix, inNode) {

	var vv = (inPfix == "A") ? "B" : "A";
	$("#itemList" + vv).html(requestMsg());
	setViewArea(ITEMS_AREA, vv);
	_currentPfix = vv;

	var itemArea = $("#items" + vv);
	itemArea.children("h2").css("display", "none");
	itemArea.attr("class", "");
	__itemList = $("#itemList" + vv);
	__itemList.attr("class", "userItems");

	var mode = _ajaxMode;
	_ajaxMode = "tagitem";
	var browser = document.getElementById('browser').object;
	var view = document.getElementById('categoryView' + vv);
	var data = [inNode.text(), _ajaxMode];
	browser.goForward(view, data);
	_ajaxMode = mode;

	browser.tagName = inNode.text();
	requestTagItem(vv, inNode.text(), 1);
}

function requestTagItem(inPfix, inTag, inPage) {

	var request = new Request(true);
	if (!request.ajax) return;

	var params = "mode=tagitem&t=" + inTag + "&page=" + inPage
				+ "&sort=" + _itemOrder + "&count=" + _itemsOfPage;
	if (_itemTargetKind != "") params += "&kind=" + _itemTargetKind;

	var callback = function (response, option) {
		drawUserItemData(response, option.pfix, option.page);
		$('.im').click( function() { drawItemDetail(option.pfix, $(this)); return false; });
    	return;
	}
	request.option.pfix = inPfix;
	request.option.page = inPage;
	request.post("ajaxItem.php", params, callback);

}

function drawItemList(inData, inPfix) {

	try{
		var data = json_parse(inData);
	}catch(e){
		drawErrorMsg(e);
		return;
	}

	var tmp = new Array();
	if (data.msg == "") {
		tmp.push(data.html);
	} else {
		setAjaxMsg(tmp, data.msg);
	}
	$("#itemList" + inPfix).html(tmp.join(""));
	return;
}

function drawItemDetail(inPfix, inItem) {

	// クリアしないと履歴が表示されない
	// （アイテム履歴表示後）
	$("#detail").html("");
	var vv = (inPfix == "A") ? "B" : "A";
	$("#detailArea" + vv).html(requestMsg());
	setViewArea(DETAIL_AREA, vv);

	var mode = _ajaxMode;
	_ajaxMode = "detail";
	var browser = document.getElementById('browser').object;
	var view = document.getElementById('categoryView' + vv);
	var data = ["", _ajaxMode];
	browser.goForward(view, data);
	_ajaxMode = mode;
	if (_ajaxMode == "useritem") browser.userIcon();

	$("#subCategory").css("display", "none");
	requestItemDetail(inItem.attr('i'), vv);
}

function requestItemDetail(inItem, inPfix) {

	var request = new Request(true);
	if (!request.ajax) return;

	var browser = document.getElementById('browser').object;
	var user = browser.user;
	if (!user) user = "0";
	var params = "mode=detail&" + inItem + "&user=" + user;

	var callback = function (response, option) {
		drawItemDetailPage(response, option.pfix);
    	return;
	}
	request.option.pfix = inPfix;
	request.post("ajaxItem.php", params, callback);

}

function drawItemDetailPage(inData, inPfix) {
	try{
		var data = json_parse(inData);
	}catch(e){
		drawErrorMsg(e);
		return;
	}

	var tmp = new Array();
	if (data.msg == "") {
		tmp.push(data.html);
	} else {
		setAjaxMsg(tmp, data.msg);
	}
	$("#menuIcon").css("display", "block");
	$("#settingBtn").css("display", "none");
	$("#detailArea" + inPfix).html(tmp.join(""));
	$('#tabs1').tabs();
	requestAjax("get", "Yes");
	gotoTop();
	return;
}

function drawItemEdit() {

	var request = new Request(true);
	if (!request.ajax) return;

	var browser = document.getElementById('browser').object;
	var vv = _currentPfix;
	$("#detailArea" + vv).html(requestMsg());
	setViewArea(DETAIL_AREA, vv);

	var mode = _ajaxMode;
	_ajaxMode = "edit";
	var view = document.getElementById('categoryView' + vv);
	var data = ["", _ajaxMode];
	var browser = document.getElementById('browser').object;
	browser.goForward(view, data);
	_ajaxMode = mode;
	browser.myIcon();

	var params = "mode=edit&asin=" + $("#asinCode").val() + "&code=" + $("#itemNo").val();
	var callback = function (response, option) {
		drawItemEditPage(response, option.pfix);
    	return;
	}
	request.option.pfix = vv;
	request.post("ajaxItem.php", params, callback);

}

function drawItemAction() {

	var request = new Request(true);
	if (!request.ajax) return;

	var vv = _currentPfix;
	$("#detailArea" + vv).html("");
	setViewArea(DETAIL_AREA, vv);

	var mode = _ajaxMode;
	_ajaxMode = "Action";
	var view = document.getElementById('categoryView' + vv);
	var data = ["アイテム履歴", _ajaxMode];
	var browser = document.getElementById('browser').object;
	browser.goForward(view, data);
	_ajaxMode = mode;
	browser.myIcon();

	var params = "mode=action&asin=" + $("#asinCode").val() + "&code=" + $("#itemNo").val();

	var callback = function (response, option) {
		drawItemEditPage(response, option.pfix);
		setTimeout('initArea()', 500);
    	return;
	}
	request.option.pfix = vv;
	request.post("ajaxItem.php", params, callback);

}

function drawItemLibrary() {

	var request = new Request(true);
	if (!request.ajax) return;

	var vv = _currentPfix;
	$("#detailArea" + vv).html("");
	setViewArea(DETAIL_AREA, vv);

	var mode = _ajaxMode;
	_ajaxMode = "Library";
	var view = document.getElementById('categoryView' + vv);
	var data = ["図書館検索", _ajaxMode];
	var browser = document.getElementById('browser').object;
	browser.goForward(view, data);
	_ajaxMode = mode;
	browser.myIcon();

	var params = "mode=library&asin=" + $("#asinCode").val() + "&code=" + $("#itemNo").val();

	var callback = function (response, option) {
		drawItemEditPage(response, option.pfix);
		$('#updLibraryList').click(function() { showSelectLibrary(); });
		setTimeout('showSelectLibrary()', 500);
    	return;
	}
	request.option.pfix = vv;
	request.post("ajaxItem.php", params, callback);

}

function drawItemEditPage(inData, inPfix) {
	try{
		var data = json_parse(inData);
	}catch(e){
		drawErrorMsg(e);
		return;
	}

	var tmp = new Array();
	if (data.msg == "") {
		tmp.push(data.html);
	} else {
		setAjaxMsg(tmp, data.msg);
	}
	$("#detailArea" + inPfix).html(tmp.join(""));
	$('.tl').click( function() { clickTagLabel($(this)); });
	gotoTop();
	return;
}

function hideBusy() {
	if (_dialog) {
		_dialog.dialog('close');
		_dialog = null;
	}
}

function showBusy(inMsg) {
	if (_dialog) return;

	var dialogObj = $("#dialog");

	// buttonsは後で option で設定する
	// （２回目以降正しく設定されないため）
	dialogObj.dialog({
		autoOpen: false,
		draggable: false,
		modal: true,
		resizable: false,
		width: '200px'
	});

	// ボタン、タイトル、メッセージの設定
	dialogObj.text(inMsg);
	dialogObj.dialog('option', 'buttons', {});

	// ダイアログ表示
	dialogObj.dialog('open');

	$(".ui-dialog-titlebar").css("display", "none");
	$(".ui-dialog").css("height", "40px");
	$(".ui-dialog-overlay").css("z-index", 9999);

	return dialogObj;
}

function updateItem() {

	var request = new Request(true);
	if (!request.ajax) return;

	_dialog = showBusy("更新中...");

	var params = "mode=update&" + $("#itemForm").serialize();

	var callback = function (response, option) {
		drawItemEditPage(response, option.pfix);
		$("#itemForm").attr("Update", "1");
		hideBusy();
		gotoTop();
    	return;
	}
	request.option.pfix = _currentPfix;
	request.post("ajaxItem.php", params, callback);

}

function drawUserList(inData, inPfix) {
	setViewArea(DETAIL_AREA, inPfix);
	drawUserListPage(inData, inPfix);
}

function drawUserListPage(inData, inPfix) {

	try{
		var data = json_parse(inData);
	}catch(e){
		drawErrorMsg(e);
		return;
	}

	var tmp = new Array();
	if (data.msg == "") {
		tmp.push(data.html);
	} else {
		setAjaxMsg(tmp, data.msg);
	}

	$("#detailArea" + inPfix).html(tmp.join(""));
	$('.us').click( function() { drawUserDetail(inPfix, $(this)); return false; });
	return;
}

function drawUserDetail(inPfix, inItem) {

	var vv = (inPfix == "A") ? "B" : "A";
	$("#detailArea" + vv).html(requestMsg());
	setViewArea(DETAIL_AREA, vv);

	var mode = _ajaxMode;
	_ajaxMode = "user";
	var browser = document.getElementById('browser').object;
	var view = document.getElementById('categoryView' + vv);
	var data = ["", _ajaxMode];
	browser.goForward(view, data);
	_ajaxMode = mode;

	var code = inItem.attr('i');
	browser.user = code;
	requestUserDetail(code, vv);
}

function requestUserDetail(inCode, inPfix) {

	var request = new Request(true);
	if (!request.ajax) return;

	var params = "mode=user&code=" + inCode;

	var callback = function (response, option) {
		drawUserDetailPage(response, option.pfix);
    	return;
	}
	request.option.pfix = inPfix;
	request.post("ajaxItem.php", params, callback);

}

function drawUserDetailPage(inData, inPfix) {
	try{
		var data = json_parse(inData);
	}catch(e){
		drawErrorMsg(e);
		return;
	}

	var tmp = new Array();
	if (data.msg == "") {
		tmp.push(data.html);
	} else {
		setAjaxMsg(tmp, data.msg);
	}
	$("#detailArea" + inPfix).html(tmp.join(""));
	$('.userItem').click( function() { userItemList(inPfix, $(this)); return false; });
	var browser = document.getElementById('browser').object;
	browser.icon = data.icon;
	return;
}

function userItemList(inPfix, inNode) {

	var vv = (inPfix == "A") ? "B" : "A";
	$("#detailArea" + vv).css("display", "none");
	$("#categoryList" + vv).css("display", "none");
	_ajaxMode = "useritem";
	var browser = document.getElementById('browser').object;

	setViewArea(ITEMS_AREA, vv);
	__itemList = $("#itemList" + vv);
	browser.page = 1;
	$("#detailArea" + vv).html("");
	var itemArea = $("#items" + vv);
	itemArea.children("h2").text("");
	itemArea.attr("class", "");
	__itemList.attr("class", "userItems");

	var data = ["ユーザーアイテム", "UserItems"];
	browser.goForward(document.getElementById('categoryView' + vv), data);
//	browser.userIcon();

	requestItemAjax("UserItems", vv, 1);
}

function drawUserItemData(inData, inPfix, inPage) {
	$("#menuIcon").css("display", "none");
	$("#settingBtn").css("display", "block");

	try{
		var data = json_parse(inData);
	}catch(e){
		drawErrorMsg(e);
		return;
	}

	var vv = (inPfix == "A") ? "B" : "A";
	$("#detailArea" + vv).html("");
	$("#itemList" + vv).html("");

	var isHeader2 = (data.header2) ? true : false;
	var tmp = new Array();
	tmp.push('<div id="listHeader">');
	tmp.push('<span id="o_' + ORDER_DATE_ASC + '">日付昇順</span>');
	tmp.push('<span id="o_' + ORDER_DATE_DESC + '">日付降順</span>');
	tmp.push('<span id="o_' + ORDER_TITLE_ASC + '">ﾀｲﾄﾙ昇順</span>');
	tmp.push('<span id="o_' + ORDER_TITLE_DESC + '">ﾀｲﾄﾙ降順</span>');
	tmp.push('</div>');
	if (isHeader2) tmp.push(data.header2);

	tmp.push(data.navi);
	if (data.msg == "") {
		if (data.item) {
			if (_itemDispType == DISP_TYPE_LIST)
				drawUserItemList(data, tmp, inPfix, inPage);
			else
			   	drawUserItemGrid(data, tmp, inPfix, inPage);
		} else {
			tmp.push('<div class="msgBox">');
			tmp.push("該当するアイテムはありませんでした。");
			tmp.push('</div>');
		}
	} else {
		setAjaxMsg(tmp, data.msg);
	}
	tmp.push(data.navi);

	var itemArea = $("#items" + inPfix);
	itemArea.children("h2").css("display", "none");
	if (_itemDispType == DISP_TYPE_LIST) {
		itemArea.attr("class", "");
		__itemList.attr("class", "userItems");
	} else {
		itemArea.attr("class", "smallItem");
		__itemList.attr("class", "smallItemA");
	}

	$("#itemList" + inPfix).html(tmp.join(""));
	$('#o_' + _itemOrder).attr("class", "selText");
	$('#s_' + _currentNode).attr("class", "selText");
	$("#itemListMsg" + inPfix).html("");
	$('#listHeader span').click( function() { setListOrder(inPage, $(this)); return false; });
	if (isHeader2) $('#listHeader2 span').click( function() { setListStatus(1, $(this)); return false; });
	return;
}

function drawUserItemList(data, tmp, inPfix, inPage) {

	tmp.push('<ul>');
	for (var i = 0, ii = data.item.length; i < ii; i++) {
		var v = data.item[i];
		var _item = (v.asin == "") ? "code=" + v.item : "asin=" + v.asin;
		var _style = getImageStyle(v.width, v.height);

		tmp.push('<li>');
		tmp.push('<a href="#" class="im" i="' + _item + '">');
		tmp.push('<img class="ttlImg" src="' + v.image + '" alt="' + v.alt + '"' + _style + '>');
		tmp.push('<div><span class="ttl">' + v.alt + '</span>');
		tmp.push('<br /><span class="users">' + v.users + '</span>');
		tmp.push('　' + v.price);
		tmp.push('　' + v.reco );
		tmp.push('<p class="item_status"> ： ' + v.status + '</p>');
		tmp.push('<p class="item_tags"> ： ' + v.tags + '</p>');
		tmp.push('</div>');
		tmp.push('</a>');
		tmp.push('</li>');
	}
	tmp.push('<div class="clr"></div>');
	tmp.push('</ul>');
	return;
}

function drawUserItemGrid(data, tmp, inPfix, inPage) {

	tmp.push('<br />');
	for (var i = 0, ii = data.item.length; i < ii; i++) {
		var v = data.item[i];
		var _item = (v.asin == "") ? "code=" + v.item : "asin=" + v.asin;
		var _style = getImageStyle(v.width, v.height);

		tmp.push('<li>');
		tmp.push('<a href="#" class="im" i="' + _item + '">');
		tmp.push('<img src="' + v.image + '" alt="' + v.alt + '"' + _style + ' />');
		tmp.push('<br /><span class="users">' + v.users + '</span>');
		tmp.push('<br />' + v.title );
		tmp.push('</a>');
		tmp.push('</li>');
	}
	tmp.push('<br class="clr" />');
	return;
}

function setListOrder(inPage, inValue) {
	$("#listHeader .selText").attr("class", "");
	inValue.attr("class", "selText");
	_itemOrder = inValue.attr("id").substring(2);
	$.cookie("offline_list_sort", _itemOrder, {path: '/', expires: 90});
	goPage(inPage);
}

function setListStatus(inPage, inValue) {
	$("#listHeader2 .selText").attr("class", "");
	inValue.attr("class", "selText");
	_currentNode = inValue.attr("id").substring(2);
	goPage(inPage);
}

function drawItemRankingList(inData, inPfix) {

	try{
		var data = json_parse(inData);
	}catch(e){
		drawErrorMsg(e);
		return;
	}

	var tmp = new Array();
	if (data.msg == "") {
		tmp.push(data.html);
	} else {
		setAjaxMsg(tmp, data.msg);
	}
	$("#itemList" + inPfix).html(tmp.join(""));
	return;
}

function getImageStyle(width, height) {
	var _style = "";
	if (width > 0) {
		_style = ' style="width:' + width + 'px; height:' + height + 'px;"';
	}
	return _style;
}

function requestItemEntryAjax_i() {

	var request = new Request(false);
	if (!request.ajax) return;

	var browser = document.getElementById('browser').object;
	request.option.page = browser.page;

	_dialog = showBusy("更新中...");

	var params = "mode=update&" + $("#itemListForm").serialize();
	var callback = function (response, option) {
		searchItem(option.page, false);
	}
	request.post("checkItemEntry.php", params, callback);

}

