// 2010-03-31 »õ·Î ¸¸µç ¾ÆÀÛ½º ÇÔ¼ö
/*
	»ç¿ë¹ý <a href='javascript:test_ajax()'>½ÇÇà</a>
	ajax.js°ú chkForm.js ÆÄÀÏ includeÇÏ°í ¾Æ·¡Ã³·³ ÀÌ¿ë
	(prototype.js ÆÄÀÏÀº »ç¿ë¾ÈÇÔ)

	ÇÑ±ÛÀ» Àü¼Û½Ã¿¡´Â encodeURIComponent·Î utf-8·Î ¹Ù²î¾î Àü¼ÛÇÏ°Ô µÈ´Ù
	ÇÑ±ÛÀ» ¹Þ´Â php¿¡¼­´Â conv("utf-8","euc-kr",$º¯¼ö)À¸·Î ¹Ù²Ù¾î¼­ Ã³¸®ÇÑ´Ù

	function test_ajax()
	{
		myAjax({
				url:"/exec/ajax_solorlunar.php",
				callback:"result_test",  // ==> ÄÝ¹éÇÔ¼ö
				param:queryString,  // ==>  "test="+encodeURIComponent(test)+"&test2="+encodeURIComponent(test2);
				frm:document.all.fmlunar,  // ==>queryStringÀ» ¾²Áö ¾Ê°í Á÷Á¢ ÆûÀÇ µ¥ÀÌÅ¸¸¦ ³Ñ±æ¶§
				method:'post',					// ==> post, get 
				sync:true  // ºñµ¿±â(true=>±âº»), µ¿±â(false) : // Ajax ÀÌ¿ë½Ã µ¿±â(false)·Î ÇÏ¸é Ã¹¹øÂ° ajaxÇÔ¼ö ½ÇÇà ÈÄ ´ÙÀ½ ajaxÇÔ¼ö°¡ ½ÇÇàµÇ¸ç ºñµ¿±â·Î ÇÏ¸é µÑ´Ù µ¿½Ã¿¡ ½ÇÇàµÈ´Ù
			});


		//prototype.jsÀ» ÀÌ¿ëÇÑ ajax
		myPTAjax({
				url:"/exec/ajax_solorlunar.php",
				callback:"result_test",  // ==> ÄÝ¹éÇÔ¼ö
				param:queryString,
				frm:document.all.fmlunar,
				method:'post',
				sync:true  // ºñµ¿±â(true=>±âº»), µ¿±â(false)
			});

	}

	function result_test(data)
	{
		var result;
		if(data.length > 0){
			for(var i=0; i<data.length; i++)
			{
				year = data[i][0];
				month  = data[i][1];
				day = data[i][2];
				result = year+'-'+month+'-'+day;
			}
			document.fmlunar.result.value = result;


			¹Þ´Â µ¥ÀÌÅ¸°¡ ÇØ½¬¸Ê ÇüÅÂÀÎ °æ¿ì prototype.js ÀÌ¿ë½Ã
			data=eval("[{'year':'2009','month':'11','day':'25'},{'year':'2009','month':'12','day':'02'}]");
			data.each(
				function(row){
					result =  row.year+"-"+row.month+"-"+row.day;
				}
			);
			¶Ç´Â
			data.each(
				function(row){
					result =  row[0]+"-"+row[1]+"-"+row[2];
				}
			);

		}	
	}
*/

function myAjax(info)
{
	param = info.param;
	frm = info.frm;

	// Àü¼Û¹æ½Ä
	if( info.method==null)
	{
		method = "GET";
	}
	else
	{
		if( info.method.toLowerCase() !='get') method="POST";
		else method ="GET";
	}

	// µ¿±â(false) ºñµ¿±â(true)
	if(info.sync==null)
		sync = true;
	else
		sync = (info.sync==false)?false:true;

	// ÆÄ¶ó¹ÌÅÍ º¯¼ö ¸¸µé±â		
	if(param==null && frm != null)
	{
		// frmÀÇ °ªÀ» °¡Á®¿Í ÆÄ¶ó¹ÌÅÍ¸¦ ¸¸µç´Ù ¸¸¾à prototype.jsÀ» »ç¿ëÇÑ´Ù¸é  param =  frm.serialize();  ·Î ÇØµµ µÈ´Ù
		var numberElements = frm.elements.length;
		param = "param="+numberElements;
		for(var i = 0; i < numberElements; i++)
		{
			input = frm.elements[i];
			ftype=input.type.toUpperCase();

			if(ftype == "RADIO")
			{
				//param += input.name + "=" + get_radiovalue(frm,input.name);
				if(input.checked)
					param += '&'+input.name + "=" + encodeURIComponent(input.value);
			}
			else if(ftype == "CHECKBOX")
			{
				//param += '&'+input.name + "=" + get_checkvalue(frm,input.name);
				if(input.checked)
					param += '&'+input.name + "=" + encodeURIComponent(input.value);
			}
			else if(ftype == "SELECT-MULTIPLE")
			{
					param += '&'+input.name + "=" + get_selectmanyvalue(frm,input.name);
			}
			else
			{
				param += '&'+input.name + "=" + encodeURIComponent(input.value);
				//param += '&'+input.name + "=" + input.value;
			}
		}
	}

	// xmlHttp ¼ÒÄÏ »ý¼º
	var xmlHttp;
	if (window.ActiveXObject) {  // IE
		try {
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlHttp =  new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e1) {               
				xmlHttp =  null;
			}
		}
	} else if (window.XMLHttpRequest){  // IE ÀÌ¿Ü
		try {
			xmlHttp =  new XMLHttpRequest();
		} catch (e) {
			xmlHttp =  null;
		}
	}
	if (xmlHttp == null)   //XMLHttpRequest »ý¼º ½ÇÆÐ
	{  
		alert("Áö¿øÇÒ ¼ö ¾ø´Â ºê¶ó¿ìÀúÀÔ´Ï´Ù.");	
		return;
	}

	// ¿Ï·áµÈ °æ¿ìÀÇ ÄÝ¹éÇÔ¼ö È£Ãâ
	xmlHttp.onreadystatechange = function(){
		if (xmlHttp.readyState == 4) {
			if (xmlHttp.status == 200) {
				//alert(xmlHttp.responseText);
				//var data = eval(xmlHttp.responseText);
				//alert(xmlHttp.responseText);
				//alert(decodeURIComponent(xmlHttp.responseText));
				try{
					var xdata = xmlHttp.responseText;
					//alert(xdata);
					//xdata = xdata.replace(/[/g,"(");
					//xdata = xdata.replace(/]/g,")");
					var data = eval(decodeURIComponent(xdata));
					var callfunc = eval(info.callback);
					callfunc(data);
				}
				catch(e)
				{
					if (	xmlHttp.responseText.indexOf("NETWORK ERROR") >-1)
					{
						alert("NETWORK ERROR ÀÔ´Ï´Ù\nÀÎÅÍ³Ý¿¡ ¿¬°áµÇ¾ú´ÂÁö È®ÀÎÇÏ½Ê½Ã¿À");
					}
					else if (xmlHttp.responseText.indexOf("NOT FOUND URL") >-1)
					{
						alert("Á¸ÀçÇÏÁö ¾Ê´Â ÆäÀÌÁö ¿äÃ»ÀÔ´Ï´Ù");
					}
					 else if ( xmlHttp.responseText.indexOf("µ¥ÀÌÅÍº£ÀÌ½º Äõ¸®¿¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù") >-1)
					{
						alert("µ¥ÀÌÅÍº£ÀÌ½º Äõ¸®¿¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù"+xmlHttp.responseText);
					}
					else if( xmlHttp.responseText.substring(0,2) != "{\"" )
					{
						// ±âÅ¸ ´Ù¸¥ ¿¡·¯..
						alert("¿¡·¯°¡ ¹ß»ýµÇ¾ú½À´Ï´Ù[ajax]\n"+e.number+":"+e.description+"\n"+xmlHttp.responseText);
					}

					// °Ë»ö Áß ¹ß»ýÇÑ ¿¡·¯¿¡ Àç°Ë»ö ¹æÁö º¯¼öÀÇ ¶ôÀ» Ç¬´Ù
					try{
						// chkSrch ´Â Àü¿ªº¯¼ö·Î ¼³Á¤µÇ¾î ÀÖ¾î¾ß ÇÏ¸ç ÀÏºÎ ÆäÀÌÁö¸¸ ¼³Á¤µÇ¾î ÀÖ½¿
						chkSrchFalse();
					} catch(e){
						windown.status=e.description;
					}
				}

			} else if (xmlHttp.status == 204){//µ¥ÀÌÅÍ°¡ Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì
				alert("¿À·ù°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù");
			}
		}
		else
		{
			//alert("Åë½Å ¿À·ù°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù");
		}
	}

	if(method == "POST")
	{
		// Àü¼ÛÀÌ post ¹æ½ÄÀÎ °æ¿ì
		xmlHttp.open("POST", info.url, sync);
		xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
		xmlHttp.setRequestHeader('Cache-Control','no-cache, must-revalidate');
		xmlHttp.setRequestHeader('Pragma','no-cache');
		xmlHttp.setRequestHeader("Content-length", param.length);
		xmlHttp.setRequestHeader("Connection", "close")
		xmlHttp.send(param);
	}
	else
	{
		// Àü¼ÛÀÌ get ¹æ½ÄÀÎ °æ¿ì
		xmlHttp.open("GET", info.url +'?'+ param, sync);
		xmlHttp.send(null);
	}
}

function myPTAjax(info) // prototype.jsÀ» ÀÌ¿ë
{
	param = info.param;
	frm = info.frm;

	// Àü¼Û¹æ½Ä
	if( info.method==null)
	{
		method = "GET";
	}
	else
	{
		if( info.method.toLowerCase() !='get') method="POST";
		else method ="GET";
	}

	// ºñµ¿±â(true) µ¿±â(false)
	if(info.sync==null)
		sync = true;
	else
		sync = (info.sync==false)?false:true;

	// formÀÇ °ªÀ» °¡Á®¿Ã¶§
	if(param==null && frm != null)
	{
		param =  frm.serialize();  // prototype.js ¿¡¼­ »ó¼ÓµÇ´Â ±â´É
	}

	try{
		var myAjax = new Ajax.Request(
		info.url, 
		{
			method: method, 
			parameters: param,  // frm.serialize()
			asynchronous: sync,
			onSuccess: function(data){
				try{
					//alert(data.responseText);
					//alert(decodeURIComponent(data.responseText));
					var data = eval(decodeURIComponent(data.responseText));
					//var data = eval(data.responseText);

					//alert(info.callback);
					var callfunc = eval(info.callback);
					callfunc(data);
				}
				catch(e)
				{
					if ( data.responseText.indexOf("µ¥ÀÌÅÍº£ÀÌ½º Äõ¸®¿¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù") >-1)
					{
						alert("µ¥ÀÌÅÍº£ÀÌ½º Äõ¸®¿¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù");
					}
					else if( data.responseText.substring(0,2) != "{\"" )
					{
						// ±âÅ¸ ´Ù¸¥ ¿¡·¯..
						alert("¿¡·¯°¡ ¹ß»ýµÇ¾ú½À´Ï´Ù[ajax]\n"+e.number+":"+e.description+"\n"+data.responseText);
					}

					// °Ë»ö Áß ¹ß»ýÇÑ ¿¡·¯¿¡ Àç°Ë»ö ¹æÁö º¯¼öÀÇ ¶ôÀ» Ç¬´Ù
					try{
						// chkSrch ´Â Àü¿ªº¯¼ö·Î ¼³Á¤µÇ¾î ÀÖ¾î¾ß ÇÏ¸ç ÀÏºÎ ÆäÀÌÁö¸¸ ¼³Á¤µÇ¾î ÀÖ½¿
						chkSrchFalse();
					} catch(e){
						alert(e.description);
						windown.status=e.description;
					}
				}
			},
			onFailure:function(data) {alert("¼­¹ö¿ÍÀÇ Åë½Å¿¬°á ½ÇÆÐÀÔ´Ï´Ù");}
		});
	} catch(e){
		alert(e.description);
	}
}

function callajax(execurl, retObj)
{
	/*
		createXMLHttpRequest();
		retFunc = eval(retObj); // ¸®ÅÏÇÔ¼ö ÁöÁ¤
		xmlHttp.open("GET",url, false);
		xmlHttp.onreadystatechange = callback;
		xmlHttp.send(null);
	*/

	var arr=execurl.split("?");
	this_url = arr[0];
	this_param = arr[1];
	myAjax({
			url:this_url,
			callback:retObj,
			param:this_param,
			frm:null,
			method:'get',
			sync:true
		});
}

function callajax2(execurl, retObj)
{
	/*
		createXMLHttpRequest();
		retFunc = eval(retObj); // ¸®ÅÏÇÔ¼ö ÁöÁ¤
		xmlHttp.open("GET",url, false);
		xmlHttp.onreadystatechange = callback;
		xmlHttp.send(null);
	*/

	var arr=execurl.split("?");
	this_url = arr[0];
	this_param = arr[1];

	myAjax({
			url:this_url,
			callback:retObj,
			param:this_param,
			frm:null,
			method:'get',
			sync:false
		});
}

