var req = null;
var consol = null;
var READY_STATE_UNINITIALIZED=0;
var READY_STATE_LOADING=1;
var READY_STATE_LOADED=2;
var READY_STATE_INTERACTIVE=3;
var READY_STATE_COMPLETE=4;
var ReturnData="";


function initXMLHTTPRequest() 
{
	var xRequest = null;
	if (window.XMLHttpRequest) {
		xRequest = new XMLHttpRequest();
	} else if (window.ActiveXObject){
		xRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return xRequest;
}



function sendRequest( url, params, HttpMethod)
{   
	if(!HttpMethod) {
		HttpMethod="GET";
	}
	req = initXMLHTTPRequest();
	if(req) 
	{
		req.onreadystatechange=onReadyState;	
		req.open(HttpMethod, url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8;");
		req.send(params);		
	}
}


function onReadyState(){
	var ready = req.readyState;
	if ( ready == READY_STATE_COMPLETE ) 
	{
		if ( req.status == 200) 
		{
            ReturnData = req.responseText;
            result(ReturnData);
        }else if ( req.status == 204)
        {
			ReturnData = req.responseText;
            result(ReturnData);
        }
	}
	
}

function sendRequestCutChar( url, params, HttpMethod)
{   
	if(!HttpMethod) {
		HttpMethod="GET";
	}
	req = initXMLHTTPRequest();
	if(req) 
	{
		req.onreadystatechange=onReadyStateCutChar;	
		req.open(HttpMethod, url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8;");
		req.send(params);
	}
}
function onReadyStateCutChar(){
	var ready = req.readyState;
	var restext = "";
	if ( ready == READY_STATE_COMPLETE ) 
	{
		if ( req.status == 200) 
		{
			restext = req.responseText;
			restext = restext.replace("\r","");
			restext = restext.replace("\n","");
            resultCutChar(restext);
        }else if ( req.status == 204)
        {
			restext = req.responseText;
			restext = restext.replace("\r","");
			restext = restext.replace("\n","");
            result(restext);
        }
	}
	
}


function sendHistoryRequest( url, params, HttpMethod)
{   
	if(!HttpMethod) {
		HttpMethod="GET";
	}
	req = initXMLHTTPRequest();
	if(req) 
	{
		req.onreadystatechange=onHistoryReadyState;	
		req.open(HttpMethod, url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8;");
		req.send(params);
	}
}


function onHistoryReadyState(){
	var ready = req.readyState;
	
	if ( ready == READY_STATE_COMPLETE ) 
	{
		if ( req.status == 200) 
		{
            getHistoryresult( req.responseText);
        }else if ( req.status == 204)
        {
        }
	}
	
}


function sendHistoryRecallRequest( url, params, HttpMethod)
{   
	if(!HttpMethod) {
		HttpMethod="GET";
	}
	req = initXMLHTTPRequest();
	if(req) 
	{
		req.onreadystatechange=onHistoryRecallReadyState;	
		req.open(HttpMethod, url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8;");
		req.send(params);
	}
}

function onHistoryRecallReadyState(){
	var ready = req.readyState;
	
	if ( ready == READY_STATE_COMPLETE ) 
	{
		if ( req.status == 200) 
		{
            getHistoryRecallresult( req.responseText);
        }else if ( req.status == 204)
        {
        }
	}
	
}


//NDSL  login (ajax)
function sendLoginRequest( url, params, HttpMethod)
{   
	if(!HttpMethod) {
		HttpMethod="GET";
	}
	req = initXMLHTTPRequest();
	if(req) 
	{
		req.onreadystatechange=onLoginReadyState;	
		req.open(HttpMethod, url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8;");
		req.send(params);
	}
}

function onLoginReadyState(){
	var ready = req.readyState;
	if ( ready == READY_STATE_COMPLETE ) 
	{
	
		if ( req.status == 200) 
		{
			var restext = req.responseText;
			restext = restext.replace("\r","");
			restext = restext.replace("\n","");
            loginresult( restext);
        }else if ( req.status == 204)
        {

        }
	}
}



//NDSL TextView URL window open(ajax)
function sendUrlTextViewRequest( url, params, HttpMethod)
{   
	if(!HttpMethod) {
		HttpMethod="GET";
	}
	req = initXMLHTTPRequest();
	if(req) 
	{
		req.onreadystatechange=onUrlTextViewReadyState;	
		req.open(HttpMethod, url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8;");
		req.send(params);
	}
}

function onUrlTextViewReadyState(){
	var ready = req.readyState;
	if ( ready == READY_STATE_COMPLETE ) 
	{
	
		if ( req.status == 200) 
		{
			var restext = req.responseText;
			restext = restext.replace("\r","");
			restext = restext.replace("\n","");

            lf_UrlTextViewresult( restext);
        }else if ( req.status == 204)
        {

        }
	}
	
}

//NDSL abstract view(ajax)
function sendAbsRequest( url, params, HttpMethod)
{   
	if(!HttpMethod) {
		HttpMethod="GET";
	}
	req = initXMLHTTPRequest();
	if(req) 
	{
		req.onreadystatechange=onAbsReadyState;	
		req.open(HttpMethod, url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8;");
		req.send(params);
	}
}

function onAbsReadyState(){
	var ready = req.readyState;
	if ( ready == READY_STATE_COMPLETE ) 
	{
	
		if ( req.status == 200) 
		{
			var restext = req.responseText;
			restext = restext.replace("\r","");
			restext = restext.replace("\n","");
            absresult(restext);
        }else if ( req.status == 204)
        {
		
        }
	}
	
}


//NDSL DDS Request (ajax)
function sendNDSLDDSRequest( url, params, HttpMethod)
{   
	if(!HttpMethod) {
		HttpMethod="GET";
	}
	req = initXMLHTTPRequest();
	if(req) 
	{
		req.onreadystatechange=onNDSLDDSRequestState;	
		req.open(HttpMethod, url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8;");
		req.send(params);
	}
}

function onNDSLDDSRequestState(){
	var ready = req.readyState;
	if ( ready == READY_STATE_COMPLETE ) 
	{
	
		if ( req.status == 200) 
		{
			var restext = req.responseText;
			restext = restext.replace("\r","");
			restext = restext.replace("\n","");
            cgf_NDSLDDSAjaxResult(restext);
        }else if ( req.status == 204)
        {
		
        }
	}
	
}


function sendSubDDCRequest( url, params, HttpMethod)
{   
	if(!HttpMethod) {
		HttpMethod="GET";
	}
	req = initXMLHTTPRequest();
	if(req) 
	{
		req.onreadystatechange=onSubDDCReadyState;	
		req.open(HttpMethod, url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8;");
		req.send(params);
	}
}


function onSubDDCReadyState(){
	var ready = req.readyState;
	if ( ready == READY_STATE_COMPLETE ) 
	{
		if ( req.status == 200) 
		{
            ReturnData = req.responseText;
			ReturnData = ReturnData.replace("\r","");
			ReturnData = ReturnData.replace("\n","");
            subddcresult(ReturnData);
        }else if ( req.status == 204)
        {
			ReturnData = req.responseText;
			ReturnData = ReturnData.replace("\r","");
			ReturnData = ReturnData.replace("\n","");
            subddcresult(ReturnData);
        }
	}
	
}



function sendExtendQueryRequest(url, params, HttpMethod)
{
	if (!HttpMethod)
	{
		HttpMethod = "GET";
	}
	req = initXMLHTTPRequest();
	if(req) 
	{
		req.onreadystatechange=(onExtendQueryState);	
		req.open(HttpMethod, url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8;");
		req.send(params);
	}
}


function onExtendQueryState(){
	var ready = req.readyState;
	if ( ready == READY_STATE_COMPLETE ) 
	{
		if ( req.status == 200) 
		{
			var domObj;

			if (window.ActiveXObject)
			{
				domObj = new ActiveXObject("Microsoft.XMLDOM");
				domObj.async = "false";
//alert(req.responseText);				
				domObj.loadXML(req.responseText);
				
			} else {
				// code for Mozilla, Firefox, Opera..
				var parser = new DOMParser();
				domObj = parser.parseFromString(req.responseText, "text/xml");
			}
		
			var subjectNode = domObj.getElementsByTagName("subject");
			var arrCatalog = new Array(subjectNode.length);
			var arrBgcolor = new Array(subjectNode.length);
			var arrValue = new Array(subjectNode.length);


			for (var i = 0; i < subjectNode.length; i++)
			{
				var catalogTag = domObj.getElementsByTagName("catalog").item(i);
				var bgcolorTag = domObj.getElementsByTagName("bgcolor").item(i);
				var valueTag = domObj.getElementsByTagName("value").item(i);
				
				var catalogText = catalogTag.childNodes[0].nodeValue;
				var bgcolorText = bgcolorTag.childNodes[0].nodeValue;
				var valueText = valueTag.childNodes[0].nodeValue;

				arrCatalog[i] = catalogText;
				arrBgcolor[i] = bgcolorText;
				arrValue[i] = valueText;
			}
			
			
			
			// Set to innerHTML
			if (subjectNode.length > 0)
			{
				//???????????? html
				var sSubjectSet = document.getElementById("subjectSet");
				var sSubject_Html = "<table width='254' border='0' cellspacing='0' cellpadding='0' >";
				var igraph_width = 0;
				for(var idx=0; idx < arrCatalog.length; idx++){
					igraph_width = Math.round(110 * Math.round(arrValue[idx])/100);
					sSubject_Html += "<tr>";
					sSubject_Html += "<td width='134' height='24'><img src='/img/common/bullet.gif'  align='absmiddle' alt=''>&nbsp;" +  arrCatalog[idx] + "<br></td>";
					sSubject_Html += "<td width='110'><img src='/img/common/graph.gif' width='" + igraph_width + "' height='12' alt='그래프'> " + Math.round(arrValue[idx]) +"%</td>";
					sSubject_Html += "</tr>"								
				}
				
				sSubject_Html += "</table>";
				
				if(sSubjectSet != null && sSubjectSet != undefined){
					sSubjectSet.innerHTML = sSubject_Html;
				} else {
				
				}
				
				//??????Set html
				var stringNode = domObj.getElementsByTagName("string");
				var arrStrValue = new Array(stringNode.length);
				var arrLanguage = new Array(stringNode.length);
				
				var sResultSet = document.getElementById("resultSet");
				var sResult_Html = "<table width='100%' border='0' cellspacing='0' cellpadding='3'><tr><td>";
				sResult_Html += "<table width='100%' border='0' cellspacing='0' cellpadding='0'>";
				var LoopCnt = stringNode.length;
				if (LoopCnt > 10) LoopCnt = 10;
				for (var jdx = 0; jdx < LoopCnt; jdx++){
					var strValueTag = domObj.getElementsByTagName("strValue").item(jdx);
					var languageTag = domObj.getElementsByTagName("language").item(jdx);
					
					var valueText = strValueTag.childNodes[0].nodeValue;
					var languageText = languageTag.childNodes[0].nodeValue;
					var link = "";

					sResult_Html += "<tr><td>";
					sResult_Html += "<label name='strValue'><input type='checkbox' style='width:15px; margin:0px;' name='strValue' value='" +valueText+ "'";
					if(languageText == "kor" || languageText =="eng") sResult_Html += " checked ";
					sResult_Html += "> &nbsp;" + valueText;
					if(languageText == "kor" || languageText =="eng"){
						sResult_Html += "&nbsp;<a href=\"javascript:gf_NaverOpen('" + valueText + "');\" title=\"Naver 새창\"><img src=\"/img/common/btn_dic.gif\"  style=\"cursor:pointer\" alt='Naver Dic'></a>&nbsp;";
						if(languageText == "kor") {
							link = "http://ko.wikipedia.org/wiki/";
						}
						else if (languageText == "eng") {
							link = "http://en.wikipedia.org/wiki/";
						}
						sResult_Html += "<a href=\"" + link + valueText +"\" target=\"_blank\" title=\"WIKI 새창\"><img src=\"/img/common/btn_wiki.gif\"  alt='WIKI'></a>";
					}
					sResult_Html += "</label></td></tr>"
				}
				sResult_Html += "</table></td></tr></table>";
				
				if(sResultSet != null && sResultSet != undefined){
					sResultSet.innerHTML = sResult_Html;
				} else {
				
				}				
			}else{
				var sSubjectSet = document.getElementById("subjectSet");
				var sSubject_Html = "<table width='254' border='0' cellspacing='0' cellpadding='0' ><tr><td>";
				sSubject_Html += "검색된 전문용어가 없습니다.";
				sSubject_Html += "</td></tr></table>";				
				if(sSubjectSet != null && sSubjectSet != undefined){
					sSubjectSet.innerHTML = sSubject_Html;
				} else {
				
				}
				
				
				var sResultSet = document.getElementById("resultSet");
				var sResult_Html = "<table width='100%' border='0' cellspacing='0' cellpadding='3'><tr><td>";
				sResult_Html += "</td></tr></table>";
				if(sResultSet != null && sResultSet != undefined){
					sResultSet.innerHTML = sResult_Html;
				} else {
				
				}				
				
			}

		}else if ( req.status == 204) {

        }
	}
	
}
function drawSlider(maxVal, minVal, defaultVal)
{
  
  mySlider = new Bs_Slider();
  mySlider.objectName = 'mySlider';
  mySlider.attachOnChange(bsSliderChange);
  mySlider.width         = 210;
  mySlider.height        = 8;
  mySlider.minVal        = minVal;
  mySlider.maxVal        = maxVal;
  mySlider.valueInterval = 1;
  mySlider.arrowAmount   = 1;
  mySlider.valueDefault  = defaultVal;
  mySlider.imgDir   = '/img/common/';
  mySlider.setBackgroundImage('bar.gif', 'no-repeat');
  mySlider.setSliderIcon('btn_roll.gif', 15, 12);
  mySlider.setArrowIconLeft('btn_before.gif', 14, 15);
  mySlider.setArrowIconRight('btn_next.gif', 14, 15);
  mySlider.useInputField = 0;
  mySlider.styleValueFieldClass = 'sliderInput';
  
  mySlider.colorbar = new Object();
  mySlider.colorbar['color']           = 'blue';
  mySlider.colorbar['height']          = 5;
  mySlider.colorbar['widthDifference'] = -12;
  mySlider.colorbar['offsetLeft']      = 5;
  mySlider.colorbar['offsetTop']       = 9;
  mySlider.draw('slider1');
}

function bsSliderChange(sliderObj, val, newPos) { 
		var domObj;

		if (window.ActiveXObject)
		{
			domObj = new ActiveXObject("Microsoft.XMLDOM");
			domObj.async = "false";
			domObj.loadXML(req.responseText);
			
		} else {
			// code for Mozilla, Firefox, Opera..
			var parser = new DOMParser();
			domObj = parser.parseFromString(req.responseText, "text/xml");
		}
	

		var stringNode = domObj.getElementsByTagName("string");
		var arrStrValue = new Array(stringNode.length);
		var arrLanguage = new Array(stringNode.length);

		var string = document.getElementById("string");
		var html = "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";

		for (var i = 0; i < val; i++)
		{
			var strValueTag = domObj.getElementsByTagName("strValue").item(i);
			var languageTag = domObj.getElementsByTagName("language").item(i);
			
			var valueText = strValueTag.childNodes[0].nodeValue;
			var languageText = languageTag.childNodes[0].nodeValue;

			arrStrValue[i] = valueText;
			arrLanguage[i] = languageText;
			
			html += "<tr><td><input type=\"checkbox\" id=\"strValue\" value='" + arrStrValue[i] + "'>" + arrStrValue[i] + "<img src=\"/img/common/btn_dic.gif\" title=\"Naver\" onclick=\"gf_NaverOpen('" + arrStrValue[i] + "');\" style=\"cursor:pointer\"></a>&nbsp;<a href=\"http://en.wikipedia.org/wiki/" + arrStrValue[i] +"\" target=\"_blank\"><img src=\"/img/common/btn_wiki.gif\" title=\"WIKI\"></a></td></tr>";
								
		}

		var maxTag, minTag, defaultTag;
		var maxVal, minVal, defaultVal;
		
		minTag = domObj.getElementsByTagName("min").item(0);
		defaultTag = domObj.getElementsByTagName("recommand").item(0);

		minVal = minTag.childNodes[0].nodeValue;
		defaultVal = defaultTag.childNodes[0].nodeValue;
		
		if (domObj.getElementsByTagName("max").item(0))
		{
			maxTag = domObj.getElementsByTagName("max").item(0);
			maxVal = maxTag.childNodes[0].nodeValue;	
		} else {
			maxVal = minVal;
		}
		
		html += "</table>";
		
		string.innerHTML = html;

}



function sendUserRequest( url, params, HttpMethod)
{   
	if(!HttpMethod) {
		HttpMethod="GET";
	}
	req = initXMLHTTPRequest();
	if(req) 
	{
		req.onreadystatechange=onUserReadyState;	
		req.open(HttpMethod, url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8;");
		req.send(params);
	}
}


function onUserReadyState(){
	var ready = req.readyState;
	if ( ready == READY_STATE_COMPLETE ) 
	{
		if ( req.status == 200) 
		{
            		ReturnData = req.responseText;
            		gf_Result(ReturnData);
        	}else if ( req.status == 204)
        	{
			ReturnData = req.responseText;
            		gf_Result(ReturnData);
        	}
	}	
}

function sendMainRequest( url, params, HttpMethod)
{   
	if(!HttpMethod) {
		HttpMethod="GET";
	}
	req = initXMLHTTPRequest();
	if(req) 
	{
		req.onreadystatechange=onReadyMainState;	
		req.open(HttpMethod, url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8;");
		req.send(params);
	}
}


function onReadyMainState(){
	var ready = req.readyState;
	if ( ready == READY_STATE_COMPLETE ) 
	{
		if ( req.status == 200) 
		{
            ReturnData = req.responseText;
            getResult(ReturnData);
        }else if ( req.status == 204)
        {
			ReturnData = req.responseText;
            getResult(ReturnData);
        }
	}
	
}

function sendHumanRequest( url, params, HttpMethod)
{   
	if(!HttpMethod) {
		HttpMethod="GET";
	}
	req = initXMLHTTPRequest();
	if(req) 
	{
		req.onreadystatechange=onHumanReadyState;	
		req.open(HttpMethod, url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8;");
		req.send(params);
	}
}
		
function onHumanReadyState(){
	var ready = req.readyState;
	if ( ready == READY_STATE_COMPLETE ) 
	{
		if ( req.status == 200) 
		{
            ReturnData = req.responseText;
            human_result(ReturnData);
        }else if ( req.status == 204)
        {
			ReturnData = req.responseText;
            human_result(ReturnData);
        }
	}
	
}

function sendHumanRequest2( url, params, HttpMethod)
{   
	if(!HttpMethod) {
		HttpMethod="GET";
	}
	req = initXMLHTTPRequest();
	if(req) 
	{
		req.onreadystatechange=onHumanReadyState2;	
		req.open(HttpMethod, url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8;");
		req.send(params);
	}
}
		
function onHumanReadyState2(){
	var ready = req.readyState;
	if ( ready == READY_STATE_COMPLETE ) 
	{
		if ( req.status == 200) 
		{
            ReturnData = req.responseText;
            human_result2(ReturnData);
        }else if ( req.status == 204)
        {
			ReturnData = req.responseText;
            human_result2(ReturnData);
        }
	}
	
}

function sendRequestSdi( url, params, HttpMethod)
{   
	if(!HttpMethod) {
		HttpMethod="GET";
	}
	req = initXMLHTTPRequest();
	if(req) 
	{
		req.onreadystatechange=onReadyStateSdi;	
		req.open(HttpMethod, url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8;");
		req.send(params);
	}
}


function onReadyStateSdi(){
	var ready = req.readyState;
	if ( ready == READY_STATE_COMPLETE ) 
	{
		if ( req.status == 200) 
		{
            ReturnData = req.responseText;
            resultSdi(ReturnData);
        }else if ( req.status == 204)
        {
			ReturnData = req.responseText;
            resultSdi(ReturnData);
        }
	}
	
}
