/**
 * ajax °ü·Ã ÇÔ¼ö
 *
 * ÀÛ¼ºÀÚ : Á¤ Çõ (jjjhyeok@naver.com)
 * ÀÛ¼ºÀÏ : 2009.11.16
 */

// ajax ·Îµù HTML (20090910 Á¤ Çõ)
function ajax_load_html(id, html) {
	if ($(id)) {
		if (html == undefined) {
			var h = ($(id).getHeight()) ? $(id).getHeight() : 32;
			// indicator_01(small), indicator_02(big), indicator_03(snake)
			var load_html = '<div style="text-align:center; padding:15px 0; height:' + h + 'px;"><img src="/image/indicator_01.gif" /></div>';
		}
		else {
			var load_html = html;
		}

		$(id).innerHTML = load_html; 
	}
}

// ajax ÆäÀÌÁö ¾÷µ¥ÀÌÆ® ÇÔ¼ö (20090910 Á¤ Çõ)
function ajax_updater(url, id, param, async) {
	if (!url) return;
	
	// id °¡ ¾øÀ» °æ¿ì
	if (!id) id = 'ajax_list';

	// ajax ·Îµù HTML
	ajax_load_html(id);

	// ÆÄ¶ó¸ÞÅÍ ¼³Á¤
	if (param == undefined) param = '';
	param = ($(param)) ? $(param).serialize() : param;

	// µ¿±âÈ­¹æ½Ä ¼³Á¤ (true:ºñµ¿±â, false:µ¿±â)
	async = (async != undefined && async == false) ? false : true;

	// ajax ÆäÀÌÁö ¾÷µ¥ÀÌÆ®
	var TO_Ajax = new Ajax.Updater(id, url, {
		parameters: param,
		asynchronous: async,
		onFailure: function() { alert('µ¥ÀÌÅÍ ·Îµù¿¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù.'); ajax_load_html(id, ''); },
		evalScripts: true
	});
}

// ajax ÆäÀÌÁö È£Ãâ ÇÔ¼ö (20090910 Á¤ Çõ)
function ajax_request(url, callback, param, async) {
	if (!url) return;

	// id °¡ ¾øÀ» °æ¿ì
	var id = '';

	// ajax ·Îµù HTML
	ajax_load_html(id);

	// ÆÄ¶ó¸ÞÅÍ ¼³Á¤
	if (param == undefined) param = '';
	param = ($(param)) ? $(param).serialize() : ((param) ? param : {});

	// µ¿±âÈ­¹æ½Ä ¼³Á¤ (true:ºñµ¿±â, false:µ¿±â)
	async = (async != undefined && async == false) ? false : true;

	// ÄÝ¹éÇÔ¼ö ¼³Á¤
	if (typeof(callback) == 'string' && /(text|xml|json)/i.test(callback)) {
		var type = callback;
		callback = function(transport) { return ajax_request_data(transport, type); }
	}

	// ajax ÆäÀÌÁö È£Ãâ
	var TO_Ajax = new Ajax.Request(url, {
		parameters: param,
		asynchronous: async,
		onLoading: function() { ajax_load_html(id, ''); },
		onComplete: callback,
		onFailure: function() { alert('µ¥ÀÌÅÍ ·Îµù¿¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù.'); ajax_load_html(id, ''); }
	});
}

// ajax ÆäÀÌÁö °á°ú µ¥ÀÌÅÍ ¹ÝÈ¯ ÇÔ¼ö (20090923 Á¤ Çõ)
function ajax_request_data(req, type) {
	if (!req) return '';

	var data;
	switch (type.toLowerCase()) {
		case 'text': data = req.responseText; break;
		case 'xml': data = req.responseXML; break;
		case 'json': data = req.responseJSON; break;
	}

	return data;
}
