var WAITING_HTML = "<center><img src=\"images/roller.gif\" align=absmiddle>&nbsp;&nbsp; 데이터를 조회하는 중입니다..</center>";
var WAITING_HTML_HEAD = "<center><img src=\"images/roller.gif\" align=absmiddle>&nbsp;&nbsp;";
var WAITING_HTML_TAIL = "</center>";
var KEEPER_VALUE = "AJAX KEEPER";
function isIE() {
	return (document.all != null);
}

function changeCursor() {
	try {
		var v = document.getElementById("PrintArea");
		if (v == null)
			return;
		v.style.cursor = "wait";
	} catch (e) {
	}
}

function restoreCursor() {
	try {
		var v = document.getElementById("PrintArea");
		if (v == null)
			return;
		v.style.cursor = "auto";
	} catch (e) {
	}
}


function _init(target, term) {
	if (_init.arguments.length == 2 && term.length > 0) 
		document.getElementById(target).innerHTML = WAITING_HTML_HEAD + term + WAITING_HTML_TAIL;
	else
		document.getElementById(target).innerHTML = WAITING_HTML;
}

// 일반적인 Request를 담당합니다.
// 이 함수를 사용하기 위해서는 반드시 url에서 넘어오는 값이 UTF-8로 엔코딩 되어있어야 한ㄷ.
function generalRequest(url, target, noInit, initTerm) {
	var req = new XMLHttpRequest();
	try {
		if (req) {
			changeCursor();
			if (noInit != false)
				if (generalRequest.arguments.length == 4)
					_init(target, initTerm);
				else 
					_init(target);
			req.onreadystatechange = function() {
				if (req.readyState == 4) {
					if  (req.status == 200 || req.status == 304) {
						var divTag = document.getElementById(target);
						divTag.innerHTML = req.responseText;
					} else {
						alert("서버오류가 반환되었습니다.(" + req.status + ")");
					}
					restoreCursor();
				}
			};
			req.open('GET', url, true);
			req.setRequestHeader("KeeperValue", KEEPER_VALUE);
			req.setRequestHeader("Pragma","no-cache");
			req.setRequestHeader("Cache-Control","no-cache");
			req.setRequestHeader("Content-type","text/html");   
			req.setRequestHeader("Content-Encoding","utf-8");
		    req.send(null);
		} else {
			alert('이 브라우져는 XMLHttpRequest를 지원하지 않습니다.');
	    }
	} catch (e) {
		alert(e);
	}
}

// 일반적인 Post방식 Request를 담당합니다.
function generalPostRequest(url, data, target, noInit) {
	var req = new XMLHttpRequest();
	if (req) {
		changeCursor();
		if (noInit != false)
			_init(target);
		req.onreadystatechange = function() {
			if (req.readyState == 4) {
				if  (req.status == 200 || req.status == 304) {
					var divTag = document.getElementById(target);
					divTag.innerHTML = req.responseText;
				} else {
					alert("서버오류가 반환되었습니다.(" + req.status + ")");
				}
				restoreCursor();
			}
		};
		req.open('POST', url, true);
		req.setRequestHeader("KeeperValue", KEEPER_VALUE);
		req.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=utf-8');
	    req.setRequestHeader("Cache-Control","no-cache");
	    req.send(data);
	} else {
		alert('이 브라우져는 XMLHttpRequest를 지원하지 않습니다.');
    }
}

function generalRequestToFormData(url, target, noInit) {
	var req = new XMLHttpRequest();
	if (req) {
		changeCursor();
		req.onreadystatechange = function() {
			if (req.readyState == 4) {
				if  (req.status == 200 || req.status == 304) {
					var tag = document.getElementById(target);
					tag.value = req.responseText;
				} else {
					alert("서버오류가 반환되었습니다.(" + req.status + ")");
				}
				restoreCursor();
			}
		};
		req.open('GET', url, true);
		req.setRequestHeader("KeeperValue", KEEPER_VALUE);
	    req.setRequestHeader("Cache-Control","no-cache");
	    req.send(null);
	} else {
		alert('이 브라우져는 XMLHttpRequest를 지원하지 않습니다.');
    }
}

function syncronousRequest(url, target) {
	var req = new XMLHttpRequest();
	if (req) {
		changeCursor();
		req.open('GET', url, false);
	    req.setRequestHeader("KeeperValue", KEEPER_VALUE);
	    req.setRequestHeader("Cache-Control","no-cache");
	    req.send(null);
		if  (req.status == 200 || req.status == 304) {
			var divTag = document.getElementById(target);
			divTag.innerHTML = req.responseText;
		} else {
			alert("서버오류가 반환되었습니다.(" + req.status + ")");
		}
		restoreCursor();
	} else {
		alert('이 브라우져는 XMLHttpRequest를 지원하지 않습니다.');
    }
}

// 팝업을 띄우는 리퀘스트 (싱크로로 띄운다.)
function alertRequest(url) { 
	var req = new XMLHttpRequest();
	if (req) {
		changeCursor();
		req.open('GET', url, false);
	    req.setRequestHeader("KeeperValue", KEEPER_VALUE);
	    req.setRequestHeader("Cache-Control","no-cache");
	    req.send(null);
		var s = parseResult(req.responseText);
		restoreCursor();
		alert(s);
	} else {
		alert('이 브라우져는 XMLHttpRequest를 지원하지 않습니다.');
    }
}

function toUpper(arg) {
     var str1 = "abcdefghijklmnopqrstuvwxyz";
     var str2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
     return alterString(arg,str1,str2);
}

function alterString(str,before,after) {
	var returnStr = "";
	for(i = 0; i < str.length; i++) {
		value = str.charAt(i);
		index = before.indexOf(value);
		if(index >= 0) value = after.charAt(index);
			returnStr += value;
	}
	return returnStr;
}

function parseResult(stringValue) {
	if (stringValue == "")
		return null;
	var start = stringValue.indexOf("[/");
	var end = stringValue.indexOf("/]");
	if (start < 0 || end < 0) {
		alert(stringValue);
		return;
	}
	var temp = stringValue.substring(start + 2, end);
	if (temp == "")
		return;
	var sv = temp.split('/');
	return sv[1];
}
// xml request를 던진다.
function xmlRequest(url, fn, postData) {
	var req = new XMLHttpRequest();
	var xmldoc;
	if (req) {
		changeCursor();
		if (xmlRequest.arguments.length < 3)
			req.open('GET', url, false);
		else 
			req.open('POST', url, false);
			
		req.setRequestHeader("KeeperValue", KEEPER_VALUE);
	    req.setRequestHeader("Cache-Control","no-cache");
		if (xmlRequest.arguments.length < 3)
    		req.send(null);
    	else {
    		req.setRequestHeader("Content-Type", "application/x-form-urlencoded");
    		req.send(postData);
    	}
	    if (req.readyState == 4) {
			if  (req.status == 200 || req.status == 304) {
				if (!isIE())
					xmldoc = req.responseXML;
				else {
					xmldoc = new ActiveXObject("Microsoft.XMLDOM");
				    xmldoc.async = false;
				    xmldoc.loadXML(req.responseText);
				}
				try {
					eval(fn + "(xmldoc)");
				} catch (e) {
					alert("함수 실행 오류 " + fn + "\n\n" + e.message);
				}
			} else {
				alert("서버오류가 반환되었습니다.(" + req.status + ")");
			}
			restoreCursor();
		}
	} else {
		alert('이 브라우져는 XMLHttpRequest를 지원하지 않습니다.');
    }
}

function getNodeValue(element) {
	if (isIE()) {
		return element.text;
	} else {
		return element.textContent;
	}
}

function test(xmldoc) {
	var root = xmldoc.documentElement;
	var list = root.getElementsByTagName("VALUE");
	 
	alert(getNodeValue(list[0]));
}
