/* **********************************************************************/
//	Eoneo Inc. AJAX Framework
//
//	@version		1.0.0
//	@copyright		Eoneo inc.
//	@history
//		1.0.0	비동기 방식으로 화면의 특정 부분만 갱신 할 수 있습니다. (caoy, 2008.07.18)
//	@usage
//		<script type="text/javascript">
//			ajax.clearValue();
//			ajax.setValueFromObject({
//				action:'loginAjax',
//				loginID:g('loginID').value,
//				passwd:g('passwd').value
//			}); // form 값
//			ajax.call("loginBox"); // 결과 처리 후, 화면 갱신이 이뤄질 AJAX ID
//		</script>
//
//		<eoneo:ajax id="loginBox">
//			... HTML ...
//		</eoneo:ajax>
//
//		<?php
//			$this->AjaxSelectId('loginUserInfo'); // 결과로 보내줄 ajax 태그의 ID
//			$this->template = 'index'; // 결과로 보내주는 ajax ID 가 있는 템플릿 파일명
//			$this->AjaxResponseEnd(); // 결과 송신
//		?>
//
// **********************************************************************/

// NOTICE : 이 파일은 UTF-8 로 인코딩되어야 합니다.

var ajax = function() {};

ajax = {
	//_postback:new PostBackPrototype,
	_action:null,
	_forms:null,
	action:function(sURL)
	{
		this._action = sURL;
	},
	clearValue:function()
	{
		this._forms = {};
	},
	setValueFromObject:function(obj)
	{
		for (var key in obj)
		{
			this.setValue(key, obj[key]);
		}
		this.setValue('_rnd', Math.random());
	},
	setValue:function(key, value)
	{
		this._forms[key] = value;
	},
	call:function(ajaxDivId, bReloadPage, fnCallbackFunc, callbackArgs)
	{
		this._forms.__ajax_div = ajaxDivId;

		sendXmlHttpRequest(this._action, this._forms, this.onCompleted, {
					bReloadPage:bReloadPage || null,
					fnCallbackFunc:fnCallbackFunc || function(oXml,callbackArgs) {},
					callbackArgs:callbackArgs
				});
	},
	onCompleted:function(oXML, oArgs)
	{
		try
		{
			var tarAjaxId = oXML.responseXML.selectSingleNode("/response/message/ajax").getAttribute('id');			
		}
		catch (e)
		{
			alert(oXML.responseText);
			return ;
		}

		if (typeof oArgs.fnCallbackFunc == "function")
			oArgs.fnCallbackFunc(oXML, oArgs.callbackArgs);

		if (oArgs.bReloadPage)
		{
			location.reload();
			return ;
		}

		var arrTarAjaxId = tarAjaxId.split('|');

		for (var i = 0; i < arrTarAjaxId.length ; i++ )
		{
			if (g(arrTarAjaxId[i]))
			{
				try
				{
					g(arrTarAjaxId[i]).innerHTML = oXML.responseXML.selectSingleNode("/response/message/ajax/div[@id='"+arrTarAjaxId[i]+"']/text()").nodeValue;					
				}
				catch (e)
				{
					g(arrTarAjaxId[i]).innerHTML = '';
				}
			}
		}
	}
};

