﻿/* helper */
// common
function checkSessionAvailable(_uid) {
	if (_uid != g_nUserid) {
		alert(g_LocalText.Login.RequiredLogin);
		document.location.reload(true);
		return false;
	}
	return true;
}
// for saving lsit
function saveList(_event, _condition) {
	var s="";
	for (var key in _condition) {
		if (_condition[key].toString().length)
			s += "/"+ key +"/"+_condition[key];
	}
	document.location = g_xfaSaveList.replace("{{condition}}", s);
}
// for search form
function changeMake(_sid) {
	var parent;
	var ary = ["<select id=\"Modelid\" size=\"12\" multiple=\"multiple\"><option value=\"\">-</option>"];
	var sSelClose = "</select>";
	var sHTML = stcModel[_sid];
	var eSel = $("Modelid");
	parent = eSel.up();
	if (eSel.length && parent.__makeid == _sid) return;
	parent.__makeid = _sid;

	if (sHTML) {
		ary.push(sHTML);
	} else {
		for(var key in stcModel) {
			ary.push(stcModel[key]);
		}
	}
	ary.push(sSelClose);
	parent.innerHTML = ary.join("");
}
function addModelOptions(_ary, _e) {
	var o, oT = document.createElement('option');
	var aryValue = _ary[1];
	var aryLabel = _ary[2];
	for (var i=0, l=aryValue.length; i<l; i++) {
		o = oT.cloneNode(false);
		o.value = aryValue[i];
		o.appendChild(document.createTextNode(aryLabel[i]));
		_e.appendChild(o);
	}
}
function addModelOption(_stc, _e) {
	var o, s = document.createElement('option');
	for(var key in _stc) {
		if(key.length) {
			o = s.cloneNode(false);
			o.value = key;
			o.appendChild(document.createTextNode(_stc[key]));
			_e.appendChild(o);
		}
	}
}
function updateSearchDesc() {
	var eDesc = $("SearchDesc");
	var e, v, e2, v2, ary, aryText=[];
	if ((v = $F(e = $("Stockid"))).length)				{ aryText.push(getSerchLink(e, v)); }
	if ((v = (e = $("Makeid")).selectedIndex) > 0)		{ aryText.push(getSerchLink(e, e.options[v].text)); }
	ary = [];
	$A((e = $("Modelid")).options).each(function(_o){ if(_o.selected) ary.push(_o.text); });
	if (ary.length && ary[0] != "-")					{ aryText.push(getSerchLink(e, ary.join(", "))); }
	if ((e = $("Chassis")) && (v = $F(e)).length)	{ aryText.push(getSerchLink(e, v)); }
	v = $F(e = $("Year"));
	v2 = $F(e2 = $("YearEnd"));
	if (v.length || v2.length)							{ aryText.push(getSerchLink(e, v) + getSerchLink(e2, v2, " - ")); }
	v = $F(e = $("Price"));
	if(v.length) v = g_LocalText.LangJPY+Number.InsertToken(v);
	v2 = $F(e2 = $("PriceEnd"));
	if(v2.length) v2 = g_LocalText.LangJPY+Number.InsertToken(v2);
	if (v.length || v2.length)							{ aryText.push(getSerchLink(e, v) + getSerchLink(e2, v2, " - ")); }
	if ((v = (e = $("Gradeid")).selectedIndex) > 0)		{ aryText.push(getSerchLink(e, e.options[v].text)); }
	if ((e = $("Userid")) && (v = e.selectedIndex) > 0)	{ aryText.push(getSerchLink(e, e.options[v].text)); }
	if ((e = $("Chubuid")) && (v = $F(e)).length)		{ aryText.push(getSerchLink(e, v)); }
	if ((e = $("Transmissionid")) && (v = $F(e)).length)	{ aryText.push(getSerchLink(e, v)); }

	eDesc.update(
		aryText.length
			? g_LocalText.Other.Filtering
				+ aryText.join(", ")
			: "<a href='javascript:void(0)' onclick='toggleSearchForm(true)'>"
				+ g_LocalText.Other.Filtering
				+ "</a>"
	);
}
function getSerchLink(_e, _text, _label) {
	return (_label? _label: _e.up().previous().firstDescendant().innerHTML)
			+ "<a href='javascript:void(0)' onclick='toggleSearchForm(true, \""+ _e.id +"\")'>"+ _text +"</a>";
}
function toggleSearchForm(_bl, _focus) {
	var oDesc = {elem:$("SearchDesc"), opt:{"duration":0.7}};
	var oForm = {elem:$("SearchForm"), opt:{"duration":1.2}};
	var oS, oH;
	if (_focus) $(_focus).activate();
	if (Object.isUndefined(_bl)) _bl = !(eDesc.visible());
	if (_bl) {
		oS = oForm;
		if (oDesc.elem.visible()) oH = oDesc;
	} else {
		oS = oDesc;
		if (oForm.elem.visible()) oH = oForm;
	}
	var oQueue = { "position":"end", "scope":oForm.elem.id, "limit":2, "interval":0 };
	if (oH) new Effect.SlideUp  (oH.elem, Object.extend(oH.opt, { "queue":oQueue, "transition":Effect.Transitions.linear }));
			new Effect.SlideDown(oS.elem, Object.extend(oS.opt, { "queue":oQueue, "transition":Effect.Transitions.linear }));
}
function setupConditions(_opt) {
	if(!("sort" in _opt)) { _opt.sort = $F("StockSort"); }
	if(!("desc" in _opt)) { _opt.desc = $F("StockDesc"); }
	if(!("sid" in _opt)) { _opt.sid = $F("Stockid"); }
	if(!("uid" in _opt) && $("Userid")) { _opt.uid = $F("Userid"); }
	if(!("cid" in _opt) && $("Chubuid")) { _opt.cid = $F("Chubuid"); }
	if(!("mkid" in _opt)) { _opt.mkid = $F("Makeid"); }
	if(!("moid" in _opt)) { _opt.moid = [].concat($F("Modelid")).join(","); }
	if(!("chs" in _opt)) { _opt.chs = $F("Chassis"); }
	if(!("ys" in _opt)) { _opt.ys = $F("Year"); }
	if(!("ye" in _opt)) { _opt.ye = $F("YearEnd"); }
	if(!("ps" in _opt)) { _opt.ps = $F("Price"); }
	if(!("pe" in _opt)) { _opt.pe = $F("PriceEnd"); }
	if(!("gdid" in _opt)) { _opt.gdid = $F("Gradeid"); }
	if(!("trs" in _opt)) { _opt.trs = $F("Transmissionid"); }
	return _opt;
}
function updateSearchForm(_r) {
	var cons = _r.CONDITION;
	var e;
	$("Stockid").setValue(cons.SID);
	if ((e = $("Userid"))) e.setValue(cons.UID);
	if ((e = $("Chubuid"))) e.setValue(cons.CID);
	$("Makeid").setValue(cons.MKID);
	$("Makeid").onchange();
	$("Modelid").setValue(cons.MOID.toString().split(","));
	$("Chassis").setValue(cons.CHS);
	$("Year").setValue(cons.YS);
	$("YearEnd").setValue(cons.YE);
	$("Price").setValue(cons.PS);
	$("PriceEnd").setValue(cons.PE);
	$("Gradeid").setValue(cons.GDID);
	$("Transmissionid").setValue(cons.TRS);
	updateSearchDesc();
}
// for detail dialog
function showDetailDialog(_bl, _blNeedLoad) {
	var eOuter = $("DetailDialog");
	var eGlayer = $("glayer");
	var eLoading = $("LoadingDialog");
	var es;
	var els;

	if (!_bl) {
		es = [];
		if (eGlayer.visible()) es.push(eGlayer);
		if (eOuter.visible()) es.push(eOuter);
		if (eLoading.visible()) es.push(eLoading);
		var opt = {duration:1.2};
		if (Glayer._hideOverElements) opt.afterFinish=Glayer.showOverElements.bind(Glayer);
		if (es.length) Effect.multiple(es, Effect.Fade, opt);
	} else {
		if (_blNeedLoad) {
			// ローディング中の表示
			Glayer.fadeInBox(eLoading, eGlayer);
		} else {
			if (Glayer._hideOverElements) Glayer.hideOverElements();
			// ローディング中の非表示
			if (eLoading.visible()) eLoading.fade({duration:0.6});
			// 初期化
			if (g_buyNowManager) {
	//			$("BuyNowYes").fire("click", {});
				$("BuyNowYes").checked=true;
				g_buyNowManager.updateBuyingForm();
				$("OrderComment").setValue("");
				g_buyNowManager.originalBidValue = "0";
			}
			// 詳細ダイアログを表示
			if (eGlayer.visible()) {
				eOuter.moveCenterInWindow();
				eOuter.appear({duration:1.2});
			} else {
				Glayer.fadeInBox(eOuter, null, eGlayer, {duration:1200});
			}
		}
	}
}
function togglePhoto(_toggleEffectButton, _event) {
	Element.moveCenterInWindow(_toggleEffectButton.target);
	return true;
}
// for edit dialog
function showEditDialog(_sid) {
	$("EditFrame").src = g_xfaEdit.replace("/Stockid/{{id}}", "/Stockid/"+_sid);
	var eCont = $("EditDialog");
	eCont.moveCenterInWindow();
	if (!(eCont.visible())) {
		if (Glayer._hideOverElements) Glayer.hideOverElements();
		eCont.appear({duration:1.2});
	}
}
function closeEditDialog() {
	$("EditFrame").src = "javascript:void(0)";
	var eCont = $("EditDialog");
	if (eCont.visible()) {
		var opt = {duration:1.2};
		if (Glayer._hideOverElements) opt.afterFinish=Glayer.showOverElements.bind(Glayer);
		eCont.fade(opt);
	}
}
// for list
var g_hCarousel;
function changePage(_event, _page) {
	doGetStockItemsWrap({"page": _page});
}
function updateListNavi(_r) {
	var e, o;
	$("StockNItems").setValue(_r.CONDITION.NITEM);
	$("StockSort").setValue(_r.CONDITION.SORT);
	$("StockDesc").setValue(_r.CONDITION.DESC);

	// page links
	var eCont = $("StockPageCont");
	eCont.setStyle({"left":"0"});
	while ((o = eCont.lastChild)) {
		Event.stopObserving(o, "click");
		eCont.removeChild(o);
	}
	var curent	= _r.CONDITION.PAGE-1;
	var realsize= _r.SIZE;
	var pagesize= _r.CONDITION.NITEM;
	var pages	= Math.ceil(realsize / _r.CONDITION.NITEM);
	var aryLink = [];
	eTItem = Builder.node("A", { "href":"javascript:void(0)", "class":"pagelink"});

	for (var i=0; i<pages; i++) {
		if (i) {
			eCont.insert({"bottom": Builder.node("SPAN", {}, " | ")});
		}
		e = eTItem.cloneNode(false);
		e.updateText((i*pagesize+1) + " - "+ ((i+1)*pagesize));
		if (i == curent) {
			e.className = [e.className, "active"].join(" ");
		}
		Event.observe(e, "click", changePage.bindAsEventListener(e, i+1), false);
		eCont.insert({"bottom": e});
		aryLink[i] = e;
	}
//	eCont.setStyle({"width":80*pages+"px"});
	if (!g_hCarousel) {
		g_hCarousel = new UI.Carousel("StockPageWrap", {
			container:"div#StockPageContWrap",
			previousButton:"img#StockPagePrev",
			nextButton:"img#StockPageNext",
			elements:$A(eCont.getElementsByTagName("A"))
		});
	} else {
		g_hCarousel.elements = aryLink;
		g_hCarousel.updateSize();
	}
	g_hCarousel.scrollTo(curent);
}
function updateListDesc(_r) {
	var eCont = $("StockListDesc");
	var realsize = _r.SIZE;
	var o, e;

	while ((o = eCont.lastChild)) {
		eCont.removeChild(o);
	}
	// update info
	var blSearch = _r.CONDITION.SID.toString().length
				|| _r.CONDITION.UID.toString().length
				|| _r.CONDITION.CID.toString().length
				|| _r.CONDITION.MKID.toString().length
				|| _r.CONDITION.MOID.toString().length
				|| _r.CONDITION.CHS.toString().length
				|| _r.CONDITION.YS.toString().length
				|| _r.CONDITION.YE.toString().length
				|| _r.CONDITION.PS.toString().length
				|| _r.CONDITION.PE.toString().length
				|| _r.CONDITION.GDID.toString().length
				|| _r.CONDITION.TRS.toString().length
				;
	eCont.update(
		"<p>"+ (realsize?
			(blSearch? g_LocalText.Other.SearchResult: g_LocalText.Other.NumberOfItems).replace("%1", realsize + (blSearch? 0: 1650 + [10,3,2,-1,-10,-7,0,8,-2,4,6,-3][(new Date()).getMonth()] + [-9,6,-4,5,7,3,-4][(new Date()).getDay()] + [1,3,2,-1,-2,-1,0,4,-1,0,1,2,-3,-4,-2,-4,0,1,2,4,3,1,-2,0,-1,-2,0,-1,3,-2,1][(new Date()).getDate()-1])):
			(blSearch? g_LocalText.Other.NoSearchResult: g_LocalText.Other.NoItems)
		) +"</p>"
	);
	if (_r.CONDITION.EDIT) {
		e = Builder.node("UL");
		e.insert({"bottom": Builder.node("LI", {}, g_LocalText.Other.ToEditClickOnItem)});
		e.insert({"bottom": Builder.node("LI", {}, g_LocalText.Other.ToAddNewClickButton)});
		eCont.insert({"bottom": e});
	} else {
		e = Builder.node("P", {});
		e.update(g_LocalText.Stock.AboutGradeForCustomer);
		eCont.insert({"bottom": e});
	}
}


function disableControl(_bl, _caller) {
}

// callbacks
function doDeleteStockWrap(_sid) {
	if (!confirm(g_LocalText.Other.DeleteConfirm)) return;
	// show loading dialog
	Glayer.fadeInBox($("LoadingDialog").moveCenterInWindow(), $("glayer"));
	// call remote function
	doDeleteStock({"sid":_sid});
}
function errDeleteStock() {
	Glayer.fadeOutBox($("LoadingDialog"), $("glayer"));
}
function endDeleteStock(_r) {
	if (!checkSessionAvailable(_r.UID)) return;
	Glayer.fadeOutBox($("LoadingDialog"), $("glayer"));
	var rs, dt;
	if (_r && ("STOCKID" in _r)) {
		e = $("SI_"+ _r.STOCKID);
		if (e) {
			Event.stopObserving(e, "click");
			e.slideUp({"duration":3.0, "afterFinish":function(_effect){
				_effect.element.remove();
			}})
		}
	} else {
		alert("Error: Server didn't return expected variables.")
		return;
	}
}
function showBuyForm() {
	$("BuyerInfo") && $("BuyerInfo").hide();
	$("BuyResult").hide();
	$("BuyForm").show();
}
function showBuyerInfo() {
	$("BuyForm").fade();
	$("BuyerInfo").appear();
}
function doSubmitStockOfferWrap() {
	var e, sMsg="";
	var opt = {
		"sid":	$F("DtCurrentStockid"),
		"sp":	g_buyNowManager.buyNowPrice,
		"cpc":	(g_currencySwitchManager && g_currencySwitchManager.isLocalCurrency()? 1: 0),
		"cp":	g_exchangePrice.validateSrcValue($("CurrencyJPText")),
		"lcp":	(e=$("CurrencyLCText"))? g_exchangePrice.validateSrcValue(e): "",
		"lcs":	g_LocalText.Login.Symbol,
		"bex":	g_LocalText.Login.ShowExchange,
		"exr":	g_LocalText.Login.Rate,
		"cmt":	$F("OrderComment"),
		"buy":	($("BuyNowYes").checked? 1: 0)
	};
	if ($("BuyerInfo")) {
		Object.extend(opt, {
			"stn": $F("StName"),
			"stm": $F("StMail"),
			"stp": $F("StPhone"),
			"stf": $F("StFAX")
		});
		sMsg = "";
		if (!opt.stn.length) { sMsg += g_LocalText.Error.MissingName + "\n"; }
		if (!opt.stm.length) { sMsg += g_LocalText.Error.InvalidEmailFormat + "\n"; }
		if (!opt.stp.length) { sMsg += g_LocalText.Error.MissingPhone + "\n"; }
	}
	if (!opt.buy && (opt.cp === 0 || opt.lcp === 0)) {
		if (opt.cp === 0) {
			$("CurrencyJP").fire("click", {});
		} else if (opt.lcp === 0) {
			$("CurrencyLC").fire("click", {});
		}
		sMsg += g_LocalText.Error.InvalidPrice + "\n";
		showBuyForm();
	}
	// error
	if (sMsg.length) {
		alert(sMsg);
		return false;
	}

	// show loading dialog
	$("LoadingDialog").moveCenterInWindow().show();
	// call remote function
	doSubmitStockOffer(opt);
	return true;
}
function errSubmitStockOffer() {
	$("LoadingDialog").hide();
}
function endSubmitStockOffer(_r) {
	$("LoadingDialog").hide();
	var rs;
	if (_r && (rs = _r.RESULT) && ("ID" in rs) && ("TIME" in rs)) {
		$("BuyResultMsg").update(g_LocalText.Stock.OrderSuccessfully.replace("%1", String.formatDBDateTime(rs.TIME)).replace("%2", rs.ID));
		($("BuyerInfo") || $("BuyForm")).fade();
		$("BuyResult").appear();
	} else {
		alert("Error: Server didn't return expected variables.")
		return;
	}
}
function doGetStockDetailWrap(_opt) {
	// show loading dialog
	showDetailDialog(true, true);
	// call remote function
	if(!_opt) { _opt = {}; }
	if(!("pos" in _opt)) { _opt.pos = 1; }
	if(!("edit" in _opt)) { _opt.edit = g_blEditMode; }
	doGetStockDetail(setupConditions(_opt));
}
function errGetStockDetail() {
	showDetailDialog(false, false);
}
function endGetStockDetail(_r) {
	// reset to defalut
	if (!_r.SIZE) {
		alert("There is no such car in stock.")
		return;
	}
	if (!checkSessionAvailable(_r.UID)) return;

	var eTbl = $("DetailTable");
	var iCurrent = (_r.CONDITION.POS == 1) || (_r.SIZE == 1)? 0: 1;
	var iPrev = iCurrent? 0: -1;
	var iNext = iCurrent && _r.SIZE < 3? -1: 2;
	var data = _r.ITEMS.DATA;
	var eCont, e, o, v;
	$("DtCurrentStockid").value = data.STOCKID[iCurrent];
	$("DtStockid").updateText(data.STOCKID[iCurrent]);
	$("DtYear").updateText(data.YEAR[iCurrent]+(data.MONTH[iCurrent]? "/"+data.MONTH[iCurrent]: ""));
	$("DtMake").updateText(data.MAKE[iCurrent]);
	$("DtModel").updateText(data.MODEL[iCurrent]);
	$("DtVariant").updateText(data.VARIANT[iCurrent]);
	$("DtChassis").updateText(data.CHASSIS[iCurrent]);
	$("DtEngine").updateText(Number.InsertToken(data.ENGINE[iCurrent]));
	$("DtMileage").updateText(Number.InsertToken(data.MILEAGE[iCurrent]));
	$("DtColor").updateText(data.COLOR[iCurrent]);
	$("DtTransmission").updateText(data.TRANSMISSION[iCurrent]);
	v = g_LocalText.Login.ShowExchange? data.PRICE[iCurrent] / g_LocalText.Login.Rate: NaN;
	$("DtPrice").update(g_LocalText.LangJPY+Number.InsertToken(data.PRICE[iCurrent])
							+ (isNaN(v)? "": "<br>" + g_LocalText.Login.Symbol + Number.InsertToken(Math.ceil(v))));
	$("DtEquipment").update(data.EQUIPMENT[iCurrent]
		.replace(/</g, "&lt;").replace(/>/g, "&gt;")
		.replace(/\n/g, "<br>")
		.replace(/\[\[([^\]]+)\]\]/g, "<strong>$1</strong>")
	);
	$("DtGrade").updateText(data.GRADE[iCurrent]);

	v = [];
	if (data.COMMENT[iCurrent] && data.COMMENT[iCurrent].length) {
		 v.push(data.COMMENT[iCurrent]
				.replace(/</g, "&lt;").replace(/>/g, "&gt;")
				.replace(/\n/g, "<br>")
				.replace(/\[\[([^\]]+)\]\]/g, "<strong>$1</strong>"));
	}
	if (data.LOCATION[iCurrent]) {
		v.push(g_LocalText.Stock.Location + ": "+ data.LOCATION[iCurrent]);
	}
	if (v.length) {
		$A(Selector.findChildElements(eTbl, ["tr.comment"])).each(function(_e){ _e.show(); });
		$("DtComment").update(v.join("<br>"));
	} else {
		$A(Selector.findChildElements(eTbl, ["tr.comment"])).each(function(_e){ _e.hide(); });
	}
	if ((e = $("DtChubu"))) e.updateText(data.CHUBUID[iCurrent]);
	if ((eCont = $("DtUser"))) {
		while ((o = eCont.lastChild)) { eCont.removeChild(o); }
		o = {"top": Builder.node("A", {"href":"mailto:"+data.USERMAIL[iCurrent]}, data.USERNAME[iCurrent])}
		if (data.COMPANYNAME[iCurrent] && data.COMPANYNAME[iCurrent].length && data.USERNAME[iCurrent] != data.COMPANYNAME[iCurrent])
			o.bottom = Builder.node("SPAN", {}, " ["+data.COMPANYNAME[iCurrent]+"]");
		eCont.insert(o);
	}
	if ((e = $("DtRegDate"))) {
		e.updateText(String.formatDBDateTime(data.REGISTEREDDATE[iCurrent]));
	}

	updateDetailPhoto(_r, iCurrent, iPrev, iNext);

	// update buying now form
	if (g_buyNowManager) {
		g_buyNowManager.buyNowPrice = data.PRICE[iCurrent];
		if ($("BuyForm")) {
			if (data.USERID != g_nUserid) {
				$("BuyForm").show();
				$("BuyResult").hide();
				$("BuyFrame").show();
			} else {
				$("BuyFrame").hide();
			}
		}
	}
	showDetailDialog(true, false);
}
function updateDetailPhoto(_r, _iCurrent, _iPrev, _iNext) {
	// car photos
	var aryPhoto = [];
	var data = _r.ITEMS.DATA;
	var attrsShadow = {"class":"shadow"};
	var attrsShadowInner = {"class":"shadowinner"};
	var attrsB = {"src":"", "width":320, "height":240, "border":0};
	var attrsT = {"src":"", "width":80, "height":60, "border":0};
	var srcB = g_LocalText.url_image_stock +"id/"+ data.STOCKID[_iCurrent] +"/size/2/t/" + data.LASTUPDATETIME[_iCurrent] + "/pic/";
	var srcT = g_LocalText.url_image_stock +"id/"+ data.STOCKID[_iCurrent] +"/size/10/t/" + data.LASTUPDATETIME[_iCurrent] + "/pic/";
	var eContB = $("BigPhotoFrame");
	var eContT = $("Thumbnail");
	var aryB = [];
	var o;
	while ((o = eContB.lastChild)) {
		eContB.removeChild(o);
	}
	while ((o = eContT.lastChild)) {
		Event.stopObserving(o, "click");
		eContT.removeChild(o);
	}
	for (var j=1; j<11; j++) {
		if (!data["PHOTO"+j][_iCurrent])  continue;
		// big picture
		attrsB.src = srcB + j + ".jpg";
		eB = Builder.node("IMG", attrsB);
		eB.hide();
		eContB.insert({"bottom": eB});
		aryB.push(eB);
		// thumbnail
		attrsT.src = srcT + j + ".jpg";
		e = Builder.node("DIV", attrsShadow,
			Builder.node("DIV", attrsShadowInner,
			Builder.node("IMG", attrsT)));
		Event.observe(e, "click", function(_index) { return function() {
			var eNew = aryB[_index], eOld;
			for (var i=0, l=aryB.length; i<l; i++) {
				if (aryB[i].visible()) { eOld = aryB[i]; break; }
			}
			if (eOld == eNew) return;
			if (eOld) new Effect.Fade(eOld);
			new Effect.Appear(eNew);
		}}(aryB.length-1), false);
		eContT.insert({"bottom": e});
	}
	if (aryB.length) {// has at least one photo
		$("BigPhoto").show();
		aryB[0].show();
	} else {
		$("BigPhoto").hide();
	}
	// auction sheet
	if ((e = $("ASPic"))) {
		if (data.PHOTO0[_iCurrent]) {
			e.setAttribute("src", g_LocalText.url_image_stock +"id/" +data.STOCKID[_iCurrent]+ "/size/0/t/" + data.LASTUPDATETIME[_iCurrent] + "/pic/0.jpg");
			$("ASButtonFrame").show();
		} else {
			e.hide();
			$("ASButtonFrame").hide();
		}
	}
}
function doGetStockItemsWrap(_opt) {
	// show loading dialog
	Glayer.fadeInBox($("LoadingDialog").moveCenterInWindow(), $("glayer"));
	// call remote function
	if(!_opt) { _opt = {}; }
	if(!("page" in _opt)) { _opt.page = 1; }
	if(!("nitem" in _opt)) { _opt.nitem = $F("StockNItems"); }
	if(!("edit" in _opt)) { _opt.edit = g_blEditMode; }
	doGetStockItems(setupConditions(_opt));
}
function errGetStockItems() {
	Glayer.fadeOutBox($("LoadingDialog"), $("glayer"));
}
function endGetStockItems(_r) {
	var rs		= _r.ITEMS;
	var blEdit	= _r.CONDITION.EDIT;
	var eCont;
	if (!checkSessionAvailable(_r.UID)) return;
	Glayer.fadeOutBox($("LoadingDialog"), $("glayer"));

	updateListDesc(_r);
	if (_r.SIZE) {
		$("StockNavi").show();
		updateListNavi(_r);
	} else {
		$("StockNavi").hide();
	}
	$("NewBtnFrame")[blEdit? "show": "hide"]();

	// delete old items
	eCont = $("StockList");
	while ((o = eCont.lastChild)) {
		Event.stopObserving(o, "click");
		eCont.removeChild(o);
	}

	// add items
	eCont = $("StockList");
	var nItemPos= (_r.CONDITION.PAGE-1) * _r.CONDITION.NITEM;
	var aryEditSrc= [
		g_LocalText.url_image_common +"btn_small_edit_"+ g_LocalText.LangISO +"_gray.png",
		g_LocalText.url_image_common +"btn_small_edit_"+ g_LocalText.LangISO +".png"
	];

	var aryElem = [
		Builder.node("DIV", {"class":"stockid"}),
		Builder.node("IMG", {"class":"stockpic"})
	];
	if (blEdit) {
		aryElem.push(Builder.node("DIV", {"class":"stockbtn"}, [
						Builder.node("IMG", {"class":"stockbtnedit"})
					]));
	}
	aryElem.push(Builder.node("DIV", {"class":"stockbtnprice"}));
	aryElem.push(Builder.node("DIV", {"class":"stockrow1"}, [
						Builder.node("H3", {})
					]));
	aryElem.push(Builder.node("DIV", {"class":"stockrow2"}));
	aryElem.push(Builder.node("DIV", {"class":"stockrow3"}));

	var eTItem 	= $(Builder.node("DIV", {}, aryElem));
	var data	= rs.DATA;
	for (var i=0, l=rs.ROWCOUNT; i<l; i++) {
		var sItemId= data.STOCKID[i];
		var e, e2, eItem;

		// create items
		eItem			= eTItem.cloneNode(true);
		eItem.id		= "SI_"+ sItemId;
		eItem.className	= (i%2 ? "stockitem": "stockitem odd");
		Event.observe(eItem, "click", function(_sItemId, _nItemPos) { return function(_event) {
			var target = Event.extend(_event).target;
			if (target.tagName == "A") return;
			if (target.className == "stockbtnedit"){
				showEditDialog(_sItemId);
				return;
			}
			doGetStockDetailWrap({"pos":_nItemPos});
		}}(sItemId, nItemPos+i+1), false);

		// create item and insert to DOM nodes
		e = eItem.firstChild;
		e.updateText(sItemId+".");
		e = e.nextSibling;
		e.src = data.PHOTO1[i]?
						g_LocalText.url_image_stock +"id/" + sItemId + "/size/10/t/" + data.LASTUPDATETIME[i] + "/pic/1.jpg":
						g_LocalText.url_image_common +"spacer.gif";
		// edit button
		if (blEdit) {
			e = e.nextSibling;
			e.down().src= aryEditSrc[i%2];
		}

		// price column
		var v = g_LocalText.Login.ShowExchange? data.PRICE[i] / g_LocalText.Login.Rate: NaN;
		e = e.nextSibling;
		e.updateText(g_LocalText.Login.PriceCaption+g_LocalText.LangJPY+Number.InsertToken(data.PRICE[i]));
		if (!isNaN(v)) e.insert({"bottom": Builder.node("DIV", g_LocalText.Login.Symbol + Number.InsertToken(Math.ceil(v))) });

		// detail inforamtion
		e = e.nextSibling;
		e.down().updateText(data.MAKE[i] +" " + (data.MODEL[i]? data.MODEL[i]: ""));
		e = e.nextSibling;
		e.updateText((data.YEAR[i]? data.YEAR[i] + (data.MONTH[i]? "/"+ data.MONTH[i]: "") +" ": "")
				+ data.VARIANT[i] + " "
				+ data.CHASSIS[i] + " "
				+ (data.ENGINE[i]? Number.InsertToken(data.ENGINE[i]) +"cc ": "")
				+ data.TRANSMISSION[i] + " "
				+ (data.MILEAGE[i]? Number.InsertToken(data.MILEAGE[i]) + "km ": "")
				+ (data.GRADE[i]? g_LocalText.Caption.Gradeid +":"+ data.GRADE[i]: "")
		);

		// detail for staff
		if (("REGISTEREDDATE" in data) && ("USERMAIL" in data)) {
			e = e.nextSibling;
			e.updateText(String.formatDBDateTime(data.REGISTEREDDATE[i]) + " ");
			e.insert({"bottom": Builder.node("A", {"href":"mailto:"+data.USERMAIL[i]}, data.USERNAME[i])});
			e.insert({"bottom": data.COMPANYNAME[i] && data.COMPANYNAME[i].length && data.USERNAME[i] != data.COMPANYNAME[i]? " [" + data.COMPANYNAME[i]+"]": ""});
		}
		eCont.insert({"bottom": eItem});
	}

	updateSearchForm(_r);
	toggleSearchForm(false);

	if((e = $("CSVBtnFrame"))) {
		Event.stopObserving(e, "click");
		Event.observe(e, 'click', saveList.bindAsEventListener(window, _r.CONDITION), false);
	}
}

