﻿/**********************************************************
///<summary>
/// <br/>Script 명	 : controlValidator.js (made by JamesQ)
/// <br/>Script 내용 : ASP.NET의 built-in 컨트롤을 이용하여 Validation 하는 것을 피하고
                       Dom을 이용하여 더욱 유동적인 Validation을 하기 위함. Validation Control(in ASP.NET)과 같다.
/// <br/>작  성  자  : 진 수 해(JamesQ)
/// <br/>최초작성일  : 2007 년 03 월 29 일
/// <br/>최종수정자  : 진 수 해(JamesQ)
/// <br/>최종수정일  : 2007 년 04 월 03 일
/// <br/>설      명  : hidden type의 컨트롤도 validation이 가능하게 수정함
///</summary>
**********************************************************/

// Object ShortCut Function
var $;
if (document.getElementById)
    $ = function(id) {return document.getElementById(id);}
else if (document.all)
    $ = function(id) {return document.all[id];}
else if (document.layers)
    $ = function(id) {return document.layers[id];}
else
    alert('Cannot locate a suitable control retrieval function for $');

// 폼 전송전 데이타 유효성 검사
function validateForm(arrObjDesc) 
{ 
	for(var i=0; i < arrObjDesc.length; i++) 
	{
		for(var j=0; j < arrObjDesc[i].length ;j++) 
		{
			var objForm = document.all[arrObjDesc[i][j][0]];
			if(!validateData(objForm, arrObjDesc[i][j][1], arrObjDesc[i][j][2])) 
			{
				if(objForm.type != "hidden")
				{
					objForm.focus();
				}
				event.returnValue = false;
				return false; 
			} 
		} 
	} 
	
	return true;
}

/*********************************** Checking Routine Function Definition (defined by JamesQ) **************************************/

function validateData(objValue, strValidateStr, strError) 
{

    var epos = strValidateStr.search("="); 
    var command  = ""; 
    var cmdvalue = ""; 
    
    if(epos >= 0) 
    { 
		command  = strValidateStr.substring(0,epos); 
		cmdvalue = strValidateStr.substr(epos+1); 
    } 
    else 
    { 
		command = strValidateStr;
    }
    
    switch(command) 
    { 
		case "req": 
        case "required": 
		{
		   var tp = objValue.value.replace(/\s/g,'');
           if(eval(tp.length) == 0) 
           { 
              alert(strError);
              return false; 
           } 
           break;             
        }
        case "maxlen": 
        case "maxlength": 
        { 
             if(eval(objValue.value.length) >  eval(cmdvalue)) 
             { 
				alert(strError);
				return false; 
             }
             break; 
        }
        case "minlen": 
        case "minlength": 
        { 
			 if(eval(objValue.value.length) <  eval(cmdvalue) && eval(objValue.value.length) != eval(0)) 
             { 
				alert(strError);
				return false;                 
             }
             break; 
        }
        case "equallen": 
        case "equallength": 
        { 
             if(eval(objValue.value.length) !=  eval(cmdvalue)) 
             { 
				alert(strError);
				return false;                 
             }
             break; 
        }
        case "equalvalue": 
        {
			if(objValue.value != cmdvalue) 
			{ 
				alert(strError);
				return false;
			}
			break; 
        }
 		case "notin": 
		{
              var charpos = objValue.value.search("[`~!@#$%^&*+=\\:;\"',.?/]"); 
              var charpos = objValue.value.search(cmdvalue); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
				alert(strError);
				return false; 
              } 
              break; 
        }
       case "eng":
        case "english": 
        { 
              var charpos = objValue.value.search("[^A-Za-z]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
				alert(strError);
				return false; 
              } 
              break; 
        }
        case "engnum": 
        case "engnumeric": 
        { 
              var charpos = objValue.value.search("[^A-Za-z0-9]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                alert(strError);
                return false; 
              }
              break; 
        }
        case "engnumhyphen":
		{
              var charpos = objValue.value.search("[^A-Za-z0-9\-_]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                alert(strError);
                return false; 
              }
              break;
		} 
        case "num": 
        case "numeric": 
        { 
              var charpos = objValue.value.search("[^0-9\]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
				alert(strError);
				return false; 
              } 
              break;
        }
        case "float": 
        { 
			if(objValue != undefined)
			{				
              var charpos = objValue.value.search("[^0-9\-.]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
				alert(strError);
				return false; 
              } 
            }  
            break;           
                
        }
        case "numhyphen": 
        { 
              var charpos = objValue.value.search("[^0-9\-_]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
				alert(strError);
				return false; 
              } 
              break;               
        }
        
        case "han" :
		case "hangul":
		{
              var charpos = objValue.value.search("[^揶쎛-??"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                alert(strError);
                return false; 
              }
              break;
		}
		case "hannum" :
		case "hangulnumeric":
		{
              var charpos = objValue.value.search("[^????-9]");
              //alert(charpos);
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                alert(strError);
                objValue.select();
                return false; 
              } 			
				break;
		}
		case "hanalpha" :
		case "hangulalphabetic":
		{
              var charpos = objValue.value.search("[^?????Za-z]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                alert(strError);
                return false; 
              } 			
				break;
		}
		case "hanengnum" :
		case "hangulenglishnumeric":
		{
              var charpos = objValue.value.search("[^?????Za-z0-9]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                alert(strError);
                return false; 
              } 			
				break;
		}
        case "email": 
        { 
           var email = /^\w+(\.\w+)*@\w+(\.\w+)*\.\w{2,4}$/;
           var check = email.exec(objValue.value);
           
           if(!check) 
           { 
             alert(strError);
             return false; 
           } 
           break; 
        } 
        case "lt": 
        case "lessthan": 
        { 
            if(isNaN(objValue.value)) 
            { 
              return false; 
            }
            if(eval(objValue.value) >=  eval(cmdvalue)) 
            { 
              alert(strError);
              return false;                 
             }             
            break; 
        } 
        case "gt": 
        case "greaterthan": 
        { 
            if(isNaN(objValue.value)) 
            { 
              return false; 
            }
            if(eval(objValue.value) <=  eval(cmdvalue)) 
            { 
               alert(strError); 
               return false;                 
            }             
            break; 
        }        
        case "regexp": 
        { 
		 	if(objValue.value.length > 0)
			{
	            if(!objValue.value.match(cmdvalue)) 
	            { 
	              alert(strError);
	              return false;                   
	            } 
			}
           break; 
        } 
        case "dontselect": 
        { 
            if(objValue.selectedIndex == null) 
            { 
              //alert(strError);
              return false;
            } 
            if(objValue.selectedIndex == eval(cmdvalue)) 
            { 
              alert(strError);
              return false;                                   
            } 
            break; 
        }
        case "img":
        case "imgfilecheck":
        {
			if( objValue.value.length > 0)
			{
				var fileExt = new Array("jpg", "gif", "png");
				
				if(fileExt.indexOfArray(objValue.value.ext().toLowerCase()) == -1)
				{
				    alert(strError);
				    return false;
				}
			}
			break;
        }
        case "checked":
        {
			if(objValue.checked == false)
			{
				alert(strError);
				return false;
			}
			break;
        }
        case "ischeck": // checkbox 및 radio 버튼에만 사용할 것
        {
            var objOpt = getElementsByTagNames(cmdvalue, objValue);

            var bCheck = false;
            for (var i=0; i < objOpt.length; i++)
            {
                var controlType = objOpt[i].nodeName.toLowerCase();
                //alert(controlType + ' - ' + objOpt[i].type);
                
                if( controlType == "input" && (objOpt[i].type == "checkbox" || objOpt[i].type == "radio") )
                {
                    if(objOpt[i].checked == true)
                    {
                        bCheck = true;
                        break;
                    }
                }
            }
            if(!bCheck)
            {
                alert(strError);
                return false;
            }
            
            break;
        }
        case "te":
        case "textexist": // 항목중에 조건별로 선택적인 Validation을 해야 할 때 걔중에 꼭 하나에 값의 유무를 판단할 때
        {
            var bCheck = false;
            var obj = cmdvalue.split(',');

            for (var i=0; i < obj.length; i++)
            {
                var control = document.getElementById(obj[i]);
                if(control.type == "text" )
                {
                    if(trim(control.value).length != 0)
                    {
                        bCheck = true;
                        break;
                    }
                }
//                else if( sVal == true && objOpt[i].type == "text" )
//                {
//                    if(trim(objOpt[i].value).length == 0)
//                    {
//                        return false;
//                        break;
//                    }
//                }
            }
            
            if(!bCheck)
            {
                alert(strError);
                return false;
            }
            break;
        }
        case "listbox":
        {
			if( objValue.all[0] == null)
			{
				alert(strError);
				return false;
			}
			break;
        }
        case "ipaddress":
        {
			if (objValue.value != "")
			{
				var ipaddress = /^\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b$/;
				var check = ipaddress.exec(objValue.value);

				if(!check)
				{
					alert(strError);
					return false;
				}
			}
			break;
        }
        case "ipcompare": 
        { 
			var stip = objValue.value.toIPint();
			var etip = getIPInt(cmdvalue);
			
            if(stip > etip) 
            { 
               alert(strError); 
               return false;                 
            }             
            break; 
        }      
        case "port":
		{
			var port = /^(6553[0-5]|655[0-2][0-9]|65[0-4][0-9][0-9]|6[0-4][0-9][0-9][0-9]|[0-5]?[0-9]?[0-9]?[0-9]?[0-9])$/;
			var check = port.exec(objValue.value);
			
			if(!check)
			{
				alert(strError);
				return false;
			}
			break;
		}
		case "portcompare":
		{
			var stport = objValue.value.toInteger();
			var etport = cmdvalue.toInteger();
			
            if(stport > etport) 
            { 
               alert(strError); 
               return false;
            }
            break; 
		}
		case "nport": // 미필수 포트로 값이 있으면 체크한다.
		{
			var port = /^(6553[0-5]|655[0-2][0-9]|65[0-4][0-9][0-9]|6[0-4][0-9][0-9][0-9]|[0-5]?[0-9]?[0-9]?[0-9]?[0-9])$/;
			var check = port.exec(objValue.value);
			
			if(objValue.value != "" && !check)
			{
				alert(strError);
				return false;
			}
			break;
		}
        case "url":
        {
			var ser = "http://";
			var str = objValue.value.toLowerCase();
			
			if( str == "" )
			  return true;
			
			
			if( str.search( ser ) == -1 )
			{
				alert(strError)
				return false;
			}
			else
			{
				return true;
			}
			break;
        }
        case "domain" :
        {
			var domainVal = /^[\w-\.]*\.[A-Za-z]{2,4}$/;
			var check = domainVal.exec(objValue.value);
			
			if(!check)
			{
				alert(strError);
				return false;
			}
			break;
        }
        case "domainexcept" :
        {
			var reValue = objValue.value.replace(/\./g,'');

			var charpos = reValue.search("[^0-9\]"); 
            if(objValue.value.length > 0 &&  charpos >= 0) 
            { 
				var domainVal = /^[\w-\.]*\.[A-Za-z]{2,4}$/;
				var check = domainVal.exec(objValue.value);

				if(!check)
				{
					alert(strError);
					return false;
				}
			}
			else
			{	
				var ipaddress = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;
				var check = ipaddress.exec(objValue.value);

				if(!check)
				{
					alert(strError);
					return false;
				}
			}

			break;
        }
        case "valuelength":
        {
			if( objValue.value > 255)
			{
				alert(strError)
				return false;
			}
			break;
        }
        case "macaddress":
        {
			var charpos = objValue.value.search("[^A-Fa-f0-9]"); 
          
            if(objValue.value.length > 0 &&  charpos >= 0) 
            { 
                alert(strError);
                return false; 
            }
            break;
        }
        case "zenkaku":
        {
            // 전각이면 false 
            for(var i=0; i < objValue.value.length; i++)
            {
                if(escape(objValue.value.charAt(i)).length >= 4)
                {
                    return false;
                    break
                }
            }
            break;
        }
        case "mc":
        case "multicheck":
        {
            //getElementsByTagNamesTest(cmdvalue, objValue);
            //return false;

            var objOpt = getElementsByTagNames(cmdvalue, objValue);
            if(objOpt != null)
            {
                // 기준 Control 개체생성
                var sVal = null;
                switch ( objOpt[0].type )
                {
                    case "checkbox":
                        sVal = objOpt[0].checked;
                        break;
                    case "radio":
                        sVal = objOpt[0].checked;
                        break;
                    case "select-one":
                        sVal = objOpt[0].selectedIndex;
                        break;
                    case "text":
                        sVal = objOpt[0].value;
                        break;
                }

                var bCheck = false;
                for (var i=1; i < objOpt.length; i++)
                {
                    var controlType = objOpt[i].nodeName.toLowerCase();
                    
                    if( sVal != 0 && objOpt[i].type == "text" )
                    {
                        if(trim(objOpt[i].value).length == 0)
                        {
                            return false;
                            break;
                        }
                    }
                    else if( sVal == true && objOpt[i].type == "text" )
                    {
                        if(trim(objOpt[i].value).length == 0)
                        {
                            return false;
                            break;
                        }
                    }
                }
            }
            else
            {
                return false;
            }
            break;
        }
        // 2007.05.25 추가됨
        case "minusnum": 
        {
              var charpos = objValue.value.search("[^-?0-9\]"); 
              if((objValue.value.length > 0 &&  charpos >= 0) || (CheckMinusNumberFormat(objValue)))
              { 
				alert(strError);
				return false; 
              } 
              break;
        }
        // 끝 날짜가 시작 날짜보다 크거나 "같을 때"도 true 반환 하도록
        case "ltequal": 
        case "lessthanequal": 
        { 
            if(isNaN(objValue.value)) 
            { 
              return false; 
            }
            if(eval(objValue.value) >  eval(cmdvalue)) 
            { 
              alert(strError);
              return false;                 
             }             
            break; 
        } 
        case "ltequal2": 
        { 
            if(isNaN(objValue.value)) 
            { 
              return false; 
            }
            if(eval(objValue.value) >=  eval(cmdvalue)) 
            { 
              alert(strError);
              return false;                 
             }             
            break; 
        } 
        case "none":
        {
			return true;
			break;
        }
    }
    return true; 
}

/***** Test Function Start ********/
function getIPinteger(val)
{
    var obj = document.getElementById(val);
    alert(obj.value.toIPint());
}

function getIPstring(val)
{
    var obj = document.getElementById(val);
    alert(obj.value.toIPstr());
}

function getElementsByTagNamesTest(aryTag, val) {
	var formFieldList = getElementsByTagNames(aryTag,val);
	showList(formFieldList);
}

function showList(array) {
	var writestring = '';
	for (var i=0;i<array.length;i++) {
		writestring += i + ': ' + array[i].nodeName + '\n';
	}
	alert(writestring);
}
/***** Test Function End ********/

/************ General Function Start ***********/
/*/////////////////////////////////////////////////////
// 설명 : url - 팝업링크
//        pn - 팝업명
//        w - 팝업넓이
//        h - 팝업높이
//        s - 스크롤여부(yes,no,auto)
//        r - 팝업창 리사이즈여부(yes,no)
//        tb - 툴바여부(yes,no)
//        mb - 메뉴바여부(yes,no)
//        st - 상태표시줄여부(yes,no)
// by JamesQ
/////////////////////////////////////////////////////*/
function ViewCenterPop(url, pn, w, h, s, r, tb, mb, st)
{
    if(IsWinXPSP2())
    {
		h += 28;
    }
    
	window.status = '';
	var winleft = (screen.width - w) / 2;
	var wintop = (screen.height - h) / 2; 

	var wForm = window.open(url,pn,'toolbar='+tb+',menubar='+mb+',scrollbars='+s+',top='+wintop+',left='+winleft+',width='+w+',height='+h+',status='+st+',resizable='+r+'');

	//wForm.focus();
	return wForm;
}

function IsWinXPSP2()
{
	try
	{
		var info = window.clientInformation;
		var reg1 = /[^A-Z0-9]MSIE[ ]+6.0[^A-Z0-9]/i;
		var reg2 = /[^A-Z0-9]WINDOWS[ ]+NT[ ]+5.1[^A-Z0-9]/i;

		if ((info.appMinorVersion.replace(/\s/g,"").toUpperCase().indexOf(";SP2;") >= 0) &&
			(reg1.test(info.userAgent) == true) && (reg2.test(info.userAgent) == true))
		{
			return true;
		}
	}
	catch(e)
	{
		return false;
	}

	return false;
}

// DropDownList State Management를 위해 DropDownList 선택 시 HiddenField 에 값 셋팅 스크립트 함수
// 사용되는 HiddenField의 ID는 반드시 "hid"+DropDownList ID 형식이어야 한다.
function SetHiddenIndex(id)
{
    var oHidDDL = $("hid"+id);
    var oDDL = $(id);
    oHidDDL.value = oDDL.selectedIndex;
}

function getElementsByTagNames(list,obj) {
	if (!obj) var obj = document;
	var tagNames = list.split(',');
	var resultArray = new Array();
	for (var i=0;i<tagNames.length;i++) {
		var tags = obj.getElementsByTagName(tagNames[i]);
		for (var j=0;j<tags.length;j++) {
			resultArray.push(tags[j]);
		}
	}
	var testNode = resultArray[0];
	if (!testNode) return [];
	if (testNode.sourceIndex) {
		resultArray.sort(function (a,b) {
				return a.sourceIndex - b.sourceIndex;
		});
	}
	else if (testNode.compareDocumentPosition) {
		resultArray.sort(function (a,b) {
				return 3 - (a.compareDocumentPosition(b) & 6);
		});
	}
	return resultArray;
}

// ctrl : id
// txtBox : textBox id
function fnEnableRadioTextBox(ctrl, txtBox)
{
    var rdo = document.getElementById(ctrl);
    var txt = document.getElementById(txtBox);
    if(!rdo.checked)
    {
        txt.value = "";
        txt.disabled = true;
        txt.style.background = "#ECE9D8";
    }
    else
    {
        txt.disabled = false;
        txt.style.background = "";
    }
}

// ctrl : id
// txtBox : textBox id
function fnDisableRadioTextBox(ctrl, txtBox)
{
    var rdo = document.getElementById(ctrl);
    var txt = document.getElementById(txtBox);
    
    if(rdo.checked)
    {
        txt.value = "";
        txt.disabled = true;
        txt.style.background = "#ECE9D8";
    }
    else
    {
        txt.disabled = false;
        txt.style.background = "";
    }
}

// public
function fixToDisabledBox(arrVals)
{
    var arrCtrlIDs = arrVals.split(',');
    
    for(var i=0; i < arrCtrlIDs.length; i++)
    {
        var ObjCtrl = document.getElementById(arrCtrlIDs[i]);
        ObjCtrl.disabled = true;
        ObjCtrl.style.background = '#ECE9D8';
    }
}

function fixToEnabledBox(arrVals)
{
    var arrCtrlIDs = arrVals.split(',');
    
    for(var i=0; i < arrCtrlIDs.length; i++)
    {
        var ObjCtrl = document.getElementById(arrCtrlIDs[i]);
        ObjCtrl.disabled = false;
        ObjCtrl.style.background = '';
    }
}

/*******************************************************/
// 숫자 입력만 되게 하기 위한 스트립트 Function
var tmpDotChk = 0;

// public
function fixToOnlyNumber(arrVals)
{
    var arrCtrlIDs = arrVals.split(',');
    
    for(var i=0; i < arrCtrlIDs.length; i++)
    {
        var ObjCtrl = document.getElementById(arrCtrlIDs[i]);
        ObjCtrl.onkeypress = this.checkInputNumber;
    }
}

function checkInputNumber(aEvent) 
{
    var iEvent = aEvent ? aEvent : window.event; 
    var keyCode ;
    if(window.event)
    { 
      keyCode = iEvent.keyCode; 
    } 
    else
    { 
      keyCode = iEvent.charCode; 
    } 

    var eventSrcID=(iEvent.srcElement)?iEvent.srcElement.id:this.id;
    var ObjNum = document.getElementById(eventSrcID);
    
    if(ObjNum.value.indexOf('.') == -1) tmpDotChk = 0;
    
    if(keyCode == 0 || keyCode == 8 || keyCode == 37 || keyCode == 39 )
    {
        return;
    }
    else if(keyCode == 46 || keyCode == 110)
    {
        fn_DotCheck(ObjNum);
        if(tmpDotChk >= 1)
        {
            alert("dot character is available once.");
            return false; 
        }
        else
        {
            return;
        }
    }
    // 2007.05.25 추가됨
    else if (event.keyCode < 45 || event.keyCode > 57 || event.keyCode == 47 || (CheckPointNumber(ObjNum)))
    //else if ((keyCode < 48 || keyCode > 57) || (CheckPointNumber(ObjNum))) 
    { 
         return false;
    } 
}

function fn_DotCheck(Obj)
{
    if(Obj.value !="")
    {
       if(Obj.value.lastIndexOf('.') != -1) 
            tmpDotChk = tmpDotChk + 1;
     }
    else
    {
        tmpDotChk = 0;
    }  
}

function CheckPointNumber(ObjNum)
{
    var _Return = false;
    
    if(ObjNum.value.lastIndexOf('.') != -1)
    {
        // 실제 전체 값
        var tmpStr = ObjNum.value;
        // 값의 전체 길이
        var tmpLen = ObjNum.value.length;
        // 소수점이 있는 위치의 인덱스 값
        var tmpStart = tmpStr.lastIndexOf('.');
        
        var dotStr = tmpStr.substring(tmpStr.lastIndexOf('.') + 1, tmpStr.length);
        var dotStrLen = dotStr.length;
        
        if(dotStrLen >= 2)
            _Return = true
    }
    
    return _Return;
}

// 음수 형식 체크
function CheckMinusNumberFormat(ObjNum)
{
    var _Return = false;
    
    if(ObjNum.value.length > 0 && ObjNum.value.lastIndexOf('-') != -1)
    {
        // 실제 전체 값
        var tmpStr = ObjNum.value;
        // 값의 전체 길이
        var tmpLen = ObjNum.value.length;
        // 소수점이 있는 위치의 인덱스 값
        var tmpStart = tmpStr.lastIndexOf('-');
        //alert(tmpStr.substring(tmpStart, 1)); // - 반환
        var hyphenStr = tmpStr.substring(tmpStart, 1);
        
        if(hyphenStr != "-")
            _Return = true;
    }
    
    return _Return;
}

/********* 숫자만 *******************************/

/************ General Function End *************/

function fnIndexOfArray(arrCtrl, findVal)
{
    for (var i=0; i<arrCtrl.length; i++)
        if (arrCtrl[i]==findVal) return i;
    return -1;
}

//xxx.xxx.xxx.xxx를 숫자형으로 바꾸어주는 함수
function getIPInt( str )
{
    var isTrue = true;
    var arr = str.split(".");

    for (var i=0; i < arr.length; i++) 
    {
		if (!arr[i].isInteger())
		{
		    isTrue = false;
		    break;
		}
    }

    if(arr.length == 4 && isTrue == true)
        return (arr[0].toInteger() * 16777216) + (arr[1].toInteger() * 65536) + (arr[2].toInteger() * 256) + arr[3].toInteger();

    return -1;
}

function trim(str) 
{
    return str.replace(/^\s+|\s+$/, "");
}

function AddClassName (elem, className) {
    RemoveClassName(elem, className);
    elem.className = trim(elem.className + " " + className);
}

function RemoveClassName (elem, className) {
    elem.className = trim(elem.className.replace(className, ""));
}

function fillOrgListData(data, orgNameObj, orgHNameObj, orgCodeObj)
{
    if(data != null && data != "")
    {
        data = Base64.decode(data);
    }

    var xmlData = loadXML(data);
    var _feedItems = xmlData.getElementsByTagName("Item");//대소문자구분함

    if(_feedItems.length > 0)
	{ 
	    try
	    {
            var orgNameAry = new Array();
            var orgCodeAry = new Array();

		    for (var i=0; i < _feedItems.length; i++)
		    {
			    var _orgName = _feedItems[i].getElementsByTagName("Text");
			    orgNameAry[i] = (_orgName.length != 0) ? _orgName[0].firstChild.nodeValue : "";
			    //alert(_orgName[0].firstChild.nodeValue);
			    var _orgCode = _feedItems[i].getElementsByTagName("Value");
			    orgCodeAry[i] = (_orgCode.length != 0) ? _orgCode[0].firstChild.nodeValue : "";
			    //alert(_orgCode[0].firstChild.nodeValue);
		    }

            var orgNameStr = "";
		    orgNameObj.value = orgNameStr.concat(orgNameAry);
		    var orgHNameStr = "";
		    orgHNameObj.value = orgHNameStr.concat(orgNameAry);
		    var orgCodeStr = "";
		    orgCodeObj.value = orgCodeStr.concat(orgCodeAry);
		}
		catch(e)
		{
		    alert("fillOrgListData error : " + e.message);
		}
	}
}

function loadXML(s) {
    // parse the string to a new doc
    var dom;
    try
    {
		// IE 7.0 상에서 XMLHttpRequest의 비교가 먼저 나오면 에러가 발생하므로 
		// ActiveXObject 부터 비교를 해주어야 한다.
		if(window.ActiveXObject)
		{
			dom = new ActiveXObject("Microsoft.XMLDOM");
            dom.async = false;
            dom.loadXML(s);
		}
		else if(window.XMLHttpRequest)
		{
			var parser = new DOMParser();
            dom = parser.parseFromString(s, "text/xml");
            dom.async = false;
            delete parser;
		}
    }
    catch(error)
    {
		alert("XML parsing is not supported.\r\nData : " + s);
    }
    
    return dom;
}

/*********************************** String/Object/Array prototype Definition (defined by JamesQ) - JSON **************************************/

String.prototype.trimStart = function() 
{
    return this.replace(/(^\s*)/, "");
}

String.prototype.trimEnd = function() 
{
    return this.replace(/(\s*$)/, "");    
}

//// IE에서는 지원이 안되므로 사용하지 않음
//Object.prototype.addClassName = function(val) 
//{
//    this.removeClassName(val);
//    this.className = trim(this.className + " " + val);

//    return this;
//}

//// IE에서는 지원이 안되므로 사용하지 않음
//Object.prototype.removeClassName = function(val) 
//{
//    this.className = trim(this.className.replace(val, ""));

//    return this;
//}

Array.prototype.indexOfArray = function(val)
{
	for (var i=0; i<this.length; i++)
		if (this[i]==val) return i;
	return -1;
}

String.prototype.ext = function() 
{
    return (this.indexOf(".") < 0) ? "" : this.substring(this.lastIndexOf(".") + 1, this.length);
}

String.prototype.toIPint = function() 
{
    var isTrue = true;
    var ary = this.split(".");

    for (var i=0; i < ary.length; i++) 
    {
		if (!ary[i].isInteger())
		{
		    isTrue = false;
		    break;
		}
    }
    
    if(ary.length == 4 && isTrue == true)
        return ((ary[0].toInteger() * 16777216) + (ary[1].toInteger() * 65536) + (ary[2].toInteger() * 256) + ary[3].toInteger()).toString();

   return -1;
}

String.prototype.toIPstr = function() 
{
	var a, b;
	var ipStr = "";

	if (this != null) 
	{
		if (this != "") 
		{
		    var ipVal = this.toInteger();
			a = parseInt(ipVal / 16777216);
			b = ipVal % 16777216;
			ipStr = a.toString() +".";
			
			a = parseInt(b / 65536);
			b = (b % 65536);
			ipStr += a.toString() +".";
			
			a = parseInt(b / 256);
			b = (b % 256);
			ipStr += a.toString() + "." + b.toString();

			return ipStr;
		}
	}

	return null;
}

String.prototype.isInteger = function()
{
    var re=/^\d+$/;
    return re.test(this);
}

String.prototype.toInteger = function()
{
    if (!this.isInteger())
        return null;
        
    return parseInt(this);
}

// Ajax에서 사용하는 스크립트 함수는 아니나 서로 클라이언트 페이지에서 연계된 사용되므로 여기에 넣어놉니다.
function getElement(id) 
{
    return document.getElementById(id);
}