/**
 * ajax 정의함수
 *
 * @author		mhlee <mhlee@koreancenter.com>
 * @date		2009-03-30
 */


var isIE = false;
var req = false;																	//php로 보낼 request변수
var thisObject = new Object();
var returnType = 0;
var returnFunction = false;

/*	처리중 이미지 표시	*/

function lodingView()
{
	var elBlocker = document.createElement("DIV");
	elBlocker.style.position = "absolute";
	elBlocker.style.top = 0;
	elBlocker.style.left = 0;
	elBlocker.style.backgroundColor = "transparent";
	elBlocker.style.width = "100%";
	elBlocker.style.height = "100%";

	var loadingLayer = "";
	loadingLayer = '<div id="loadingLayer" style="position:absolute;display:;left:0;top:0;width:100%;height:100%;overflow:none;background:#ffffff;filter:alpha(opacity=50);opacity:0.5;-moz-opacity:0.5;z-index:998;vertical-align:middle;">';
	loadingLayer += '<div id="loading" style="position:absolute;margin:auto;top:20px;background-color:transparent;width:100%;height:100%;vertical-align:middle;text-align:center;z-index:999;"><img src="modules/prog/images/loading.gif" border="0" alt=""></div>';
	loadingLayer += '</div>';

	thisObject.appendChild(elBlocker);
	elBlocker.innerHTML = loadingLayer;
}

/*	xml 객체생성 함수	*/

function newXMLHttpRequest()
{
	var xmlreq = false;
	if (window.XMLHttpRequest)
	{
		// Create XMLHttpRequest object in non-Microsoft browsers
		xmlreq = new XMLHttpRequest();
	} 
	else if (window.ActiveXObject)
	{
		// Create XMLHttpRequest via MS ActiveX
		try 
		{
			// Try to create XMLHttpRequest in later versions
			// of Internet Explorer
			xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e1) 
		{
			// Failed to create required ActiveXObject
			try 
			{
				// Try version supported by older versions
				// of Internet Explorer
				xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e2) 
			{
				// Unable to create an XMLHttpRequest with ActiveX
			}
		}
	}
	return xmlreq;
}

function getList(obj, url, param, returnTypeSet, returnComplete)
{
	
	thisObject = document.getElementById(obj);
	returnType = returnTypeSet;
	if(returnComplete)
	{
		returnFunction = true;
	}

	if(returnType == 0)
	{
		lodingView();
	}

	req = newXMLHttpRequest();														//request 객체 생성
	req.onreadystatechange = processReqChange;										// 요청후 처리될 콜백함수를 정의. 
	req.open("POST", url, true);												//POST방식으로 sample.php 에 요청. 
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");		//요청헤더의 정의
																					//req.overrideMimeType("text/xml");	파이어폭스에서 xml 강제 적용
	req.send(param);																// sample.php에 값을 넘깁니다. // 넘어갈때에는 UTF-8로 인코딩됨.
}

function processReqChange() 
{ 
    // only if req shows "loaded" 
    if (req.readyState == 4) { 
        // only if "OK" 
        if (req.status == 200) {
			//getBoard()의 요청이 정상적으로 처리되고 출력된 값을 어떻게 처리할지의 함수 
            printData(); 
        } else { 
            alert("There was a problem retrieving the XML data:\n" + req.statusText);
        } 
    } 
} 

function printData() 
{
	if(returnType==0)
	{
		thisObject.innerHTML = req.responseText;		
		if(returnFunction){
			AJAXComplete();
		}
	}
	else
	{
		var items = req.responseXML.getElementsByTagName("unique");
		var uniqueTablename = getElementTextNS("", "tablename", items[0], 0);
		var uniqueField = getElementTextNS("", "field", items[0], 0);
		var uniqueValue = getElementTextNS("", "value", items[0], 0);
		var uniqueCount = getElementTextNS("", "count", items[0], 0);
		var uniqueCheckKey = String(uniqueField);
		if(uniqueCount < 1)
		{
			alert(uniqueValue + "는 사용 가능 합니다.");
			uniqueCheck[uniqueCheckKey] = true;
			uniqueSetting(uniqueCheckKey,true);
		}
		else
		{
			alert(uniqueValue + "는 사용 불가능 합니다.");
			uniqueCheck[uniqueCheckKey] = false;
			uniqueSetting(uniqueCheckKey,false);
		}
	}
	req = false;
}

/*	호출페이지에 생성함수 리턴 */

function getElement(obj, url, param, method, user)
{
	//alert(method+' / '+url+' / '+param+' / '+user); return;
	thisObject = document.getElementById(obj);
	// 처리표시
	lodingView();

	req = newXMLHttpRequest();														// request 객체 생성
	req.onreadystatechange = processFuncCall;										// 요청후 처리될 콜백함수를 정의. 
	req.open(method, url, user);													// POST방식으로 sample.php 에 요청. 
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");		// 요청헤더의 정의
																					// req.overrideMimeType("text/xml");	파이어폭스에서 xml 강제 적용
	req.send(param);																// sample.php에 값을 넘깁니다. 넘어갈때에는 UTF-8로 인코딩됨.
}

function processFuncCall() 
{ 
    // only if req shows "loaded" 
    if (req.readyState == 4) 
	{ 
        // only if "OK" 
        if (req.status == 200)
		{
			//thisObject.innerHTML = req.responseText;
			var contents = req.responseText;
			//alert(contents);
			eval(contents);
		}		 
		else 
		{ 
            alert("There was a problem retrieving the XML data:\n" + req.statusText);
        } 
    } 
}