/*
<script type="text/javascript">
<!--
*/

var AtatOption = {
	server: '/product/do.ajax.php',
	xhr: null,
	frm: null,
	cache: {},
	showNewOption: function (res) {
		var o = $('newoption');
		o.cells[0].innerHTML = res['msg'];
		showElement(o);
		var f = getFirstParentByTagAndClassName(o, 'form', null);
		var inputs = getElementsByTagAndClassName('input', null, o);
		for (var i=0; i<inputs.length; i++) {
			var name = getNodeAttribute(inputs[i], 'name');
			if (name.substr(0,'saleprices'.length)=='saleprices') {
				inputs[i].value = f.saleprice.value;
			}
			else if (name.substr(0,'marketprices'.length)=='marketprices') {
				inputs[i].value = f.marketprice.value;
			}
			else if (name.substr(0,'factoryprices'.length)=='factoryprices') {
				inputs[i].value = f.factoryprice.value;
			}
			else if (name.substr(0,'points'.length)=='points') {
				inputs[i].value = f.point.value;
			}
			else if (name.substr(0,'stocklimits'.length)=='stocklimits') {
				inputs[i].value = f.stocklimit.value;
			}
		}
		var btn = $('btn_optionclose');
		if (btn) 
			showElement(btn);
	},
	calcOptionPrice: function (src) {
		if (extraOption==null) {
			return ;
		}
		var f;
		if (src!=null) {
			f = getFirstParentByTagAndClassName(src, 'form', null);
		}
		else {
			f = AtatOption.frm;
		}
		var pr = getElementsByTagAndClassName('span', 'saleprice', AtatOption.frm);
		if (pr==null || pr.length < 1) {
			return;
		}
		var price = toNumber(f.orgPrice.value);

		for (var i=0; i<f.elements.length; i++) {
			if (f.elements[i].value==null || f.elements[i].value.length==0) {
				continue;
			}
			if (f.elements[i].name.substr(0, 'extraoption['.length)=='extraoption[') {
				var name = f.elements[i].name.substr('extraoption['.length);
				name = name.substr(0, name.length-1);

				price += toNumber(extraOption[name][f.elements[i].value]);
			}
		}

		pr[0].innerHTML = number_format(price);

	},
	showPriceAndPoint: function (price, point) {
		var pr = getElementsByTagAndClassName('span', 'saleprice', AtatOption.frm);
		var pt = getElementsByTagAndClassName('span', 'point', AtatOption.frm);
		if (pr!=null && pr.length>0) {
			pr[0].innerHTML = price;
			AtatOption.frm.orgPrice.value = toNumber(price);
		}
		if (pt!=null && pt.length>0) {
			pt[0].innerHTML = point;
		}
		AtatOption.calcOptionPrice(null);
	},
	applyStock: function (res) {
		if ((res['prdno'] in AtatOption.cache)==false) {
			AtatOption.cache[res['prdno']] = {};
		}
		if ((res['option1'] in AtatOption.cache[res['prdno']])==false) {
			AtatOption.cache[res['prdno']][res['option1']] = {};
		}
		if (res['option2']!=null && res['option2'].length>0 ) {
			AtatOption.cache[res['prdno']][res['option1']][res['option2']] = res;
		}
		else {
			AtatOption.cache[res['prdno']][res['option1']] = res;
		}
		AtatOption.showPriceAndPoint(res['price'], res['point']);
		if (res['stock']==false) {
			alert(res['msg']);
		}
	},
	getStockInCache: function (prdno, opt1, opt2) {
		if ((prdno in AtatOption.cache)==false) {
			return null;
		}
		if ((opt1 in AtatOption.cache[prdno])==false) {
			return null;
		}
		var res ;
		if (opt2==null) {
			res = AtatOption.cache[prdno][opt1];
		}
		else {
			res = AtatOption.cache[prdno][opt1][opt2];
		}
		return res;
	},
	checkStock: function (src) {
		var f = src.nodeName.toLowerCase()=='form' ? src : getFirstParentByTagAndClassName(src, 'form', null);
		var opts = Array();
		var nOpts = 0;

		AtatOption.frm = f;

		for (var i=0; i<f.elements.length; i++) {
			if (f.elements[i].name.substr(0, 'options['.length)=='options[') {
				opts[nOpts] = f.elements[i].value;
				nOpts++;
			}
		}

		// ¸ðµç ¿É¼ÇÀ» ¼±ÅÃÇß´ÂÁö Ã¼Å©
		for (var i=0; i<opts.length; i++) {
			if (opts[i]=='') {
				// ¼±ÅÃÇÏÁö ¾ÊÀº ¿É¼ÇÀÌ ÀÖÀ¸¸é Àç°í Ã¼Å© ¾È ÇÔ
				return true;
			}
		}

		var prdno = f.prdno.value;
		if (prdno==null || prdno.length==0) {
			// »óÇ°no°¡ ¾øÀ¸¸é skip
			return true;
		}

		// Ä³½¬·Î Ã¼Å©
		var res = AtatOption.getStockInCache(prdno, opts[0], opts.length==2 ? opts[1] : null);
		if (res!=null) {
			if (res['stock']==true) {
				return true;
			}
			AtatOption.showPriceAndPoint(res['price'], res['point']);
			alert(res['msg']);
			return true;
		}
		// À¥À¸·Î Ã¼Å© ¿äÃ» Àü¼Û
		var args = {'prdno': prdno, 'options[0]': opts[0] };
		if (opts.length==2) {
			args['options[1]'] = opts[1];
		}
		AtatOption.doJob('checkstock', args);
		return true;
	},
	doJob: function (doname, opts) {
		if (AtatOption.xhr==null) {
			AtatOption.xhr = getXMLHttpRequest();
		}

		if (AtatOption.xhr==null) {
			alert("Browser does not support XMLHttpRequest");
			return ;
		}
		if (AtatOption.isBusy) {
			AtatOption.xhr.abort();
		}
		var url = AtatOption.server+'?do='+doname;
		for (var arg in opts) {
			url += '&'+encodeURIComponent(arg)+'='+encodeURIComponent(opts[arg]);
		}
		//alert(url);
		AtatOption.isBusy = true;
		AtatOption.xhr.open("GET", url, true);
		AtatOption.xhr.onreadystatechange = AtatOption.receiveResponse;
		AtatOption.xhr.send(null);
	},
	receiveResponse: function () {
		var state = AtatOption.xhr.readyState;

		if (state==4) {
			AtatOption.isBusy = false;
			AtatOption.callback(AtatOption.xhr.responseText, AtatOption.xhr.responseXML);
		}
	},
	callback: function(resText, resXML) {
		if (resText==null || resText.length==0) {
			return ;
		}

		var res = evalJSON(resText);

		if (res['result']!='success')
		{
			if (res['msg']!=null) {
				alert(res['msg']);
			}
			return ;
		}

		if (res['fn']!=null) {
			AtatOption[res['fn']](res);
		}
		else {
			if (res['msg']!=null) {
				alert(res['msg']);
			}
		}
	}
};

