/**
 * Title : ajax.js
 * Description : ajax - serverSideScript - XML 통신 간, 설정 관련함수
 *  js + flash + asp 공통사용을 목적으로 함.
 * 
 * @author gggl.ko
 * @version 2007-06-16
 * @update 
 * 
 */
 
 function createHttpRequest() {

	  if(window.ActiveXObject){
				//Win e4,e5,e6용
			   try {
					return new ActiveXObject("Msxml2.XMLHTTP") ;
			   } catch (e) {
					try {
						 return new ActiveXObject("Microsoft.XMLHTTP") ;
					} catch (e2) {
						 return null ;
					 }
				}
	  } else if(window.XMLHttpRequest){
					//Win Mac Linux m1,f1,o8 Mac s1 Linux k3용
					
				   return new XMLHttpRequest() ;

	  } else {
					return null ;
	  }

 }

 /**
 * Title : convertXml
 * Description : xml 로 컨버팅
 *
 * @author gggl.ko 2007-06-08
 *
 * @param v - text
 * 
 * @return xml
 * 
 */
function convertXml(v) {

		try{
					try	{
							//fire FOX  exception
							return  (new DOMParser()).parseFromString(v.responseText, "text/xml");	
							
					} catch(e){
							// ie 처리	
							return v.responseXML; 
					}

		} catch (e)	{
					alert("XML conver Error.");
		}
}

function getSingleNodes(obj, tagName,attributeN,attributeV) {

		try {
			//selectSingleNode메소드는  이름그대로 하나의 노드만을 추출해온다.
			var ResultNode=obj.selectSingleNodes("//"+tagName+"[@"+attributeN+" = '"+ attributeV +"']").item(0);	
			
		} catch (e) {
			//불여우 exception

			var ResultNodeSubEtc =obj.getElementsByTagName(tagName);
			for(var i = 0 ; i < ResultNodeSubEtc.length; i++){//childNodes.length 속성을 이용한 하위노드들 검색
					//찾으면
					if(ResultNodeSubEtc.item(i).getAttribute(attributeN) == attributeV) {
						ResultNode = ResultNodeSubEtc.item(i);
						break;
					}
				
			}
		}
		return ResultNode;
}


// ############################################################################

// Global 
var rootPath = "http://www.jredison.com";
var language = "ENG";

// 국가관련 정보
var nationArr					= new Array();
var countryArr					= new Array();
var pwdQnaQTextArr		= new Array();
var pwdQnaQValueArr		= new Array();

// ############################################################################

/**
 * xml 등록 msg return (alert 처리는 하지 않는다.) , 2007-06-16 gggl.ko
 *
 * @param attId (xml attribute id)				//동일값이 있는지 체크하려는 id 값
 * @param language (KOR or ENG)		//한글인지 영어인지 체크
 * 
 * @return String
 * 
 */

function getMsg(attId,lan){

//언어 영문 기본지정
if (IsValue(lan) == true) {
	language	= lan ;
}

if (language == "ETC") {
	language = lan;
}

 var rtnV = "";
 var _URL			= rootPath + "/_Xml/message.xml.asp";				//xml 파일이 있는 경로
 var _ATTNAME		= "id";															//찾을 node의 attribute keyword
 var _NODENAME		= "msg";															//찾을 node의 attribute keyword

	//함수 참조하여, 타브라우져 에러없이 참조함
	var _XML = createHttpRequest();
	_XML.open("GET",_URL,false);
	_XML.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	_XML.send(null);

		var xmlObj = convertXml(_XML);			//최상의 노드 추출

		var ResultNode =xmlObj.getElementsByTagName(_NODENAME);

			if (ResultNode != null) {				//검색결과가 있으면 url 추출
			
						for (i = 0; ResultNode.length ; i++ ) {									
							if (ResultNode.item(i).getAttribute(_ATTNAME) == attId) {
									return rtnV = ResultNode.item(i).getAttribute(language);
									break;
							}
						}

			 }
}



/**
 * 동일아이디 등록여부 체크 - Http 통신으로 통해, 있는 지 없는지 체크 , 2007-06-16 gggl.ko
 *
 * @param String id			//동일값이 있는지 체크하려는 id 값
 * 
 * @return boolean
 * 
 */

function regIdChk(id,frm) {

			var _URL = rootPath + "/member/regIdChk.asp?id=" + id;
			var _XML = createHttpRequest();

			//설정
			_XML.open("GET",_URL,false);
			_XML.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			
			//보냄
			_XML.send(null);
			
			//받음
			if (_XML.responseText == 0) {
						alert(getMsg("idRegN","ENG"));
						frm.idChk.value = 1;
			} else {
						alert(getMsg("idRegY","ENG"));
						frm.idChk.value = "";
			}
}


/**
 *
 * 
 * @return boolean
 * 
 */

function regEmailChk(email,frm) {

			var _URL = rootPath + "/member/regEmailChk.asp?email=" + email;
			var _XML = createHttpRequest();

			//설정
			_XML.open("GET",_URL,false);
			_XML.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			
			//보냄
			_XML.send(null);
				
			//받음
			if (_XML.responseText == 0) {
				
						alert(getMsg("emailNotExits","ENG"));
						frm.emailInputChk.value = 1;
			} else {
						
						alert(getMsg("emailExits","ENG"));
						
						frm.emailInputChk.value = "";
			}
}


/**
 * front 나라 xml 파싱 , 2007-06-09 gggl.ko
 *
 * @param nation			//값이 있으면 해당 값(국가)의 도시정보를 가져오고 없으면 국가정보를 가져온다.
 * 
 * @return array
 * 
 */
 function setNation(nation){
	
	var _URL = rootPath + "/_Xml/nation.xml.asp"; //xml 파일이 있는 경로
	var attributeName = "name";  //찾을 node의 attribute keyword	- 메인 서브 구분없음
	
	  //함수 참조하여, 타브라우져 에러없이 참조함
	  var _XML = createHttpRequest();

		//설정
		_XML.open("GET",_URL,false);

		  //헤더 application/x-www-form-urlencoded 설정
		  _XML.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		  //_XML.setRequestHeader("Content-Type", 'text/xml; charset="UTF-8"' );
		  _XML.send(null);		//xmlHTTP.send( xmlDoc.xml );

				var xmlObj = convertXml(_XML);

				//특정 국가 정보가 있으면 해당 국가정보를 통한 도시 정보 GET				
				if (IsValue(nation)){
					
					countryArr = new Array();
								
								//alert(xmlObj.getElementsByTagName("nation")[0].getAttribute("name"));
								//"item"태그가 나온 순서대로 처리합니다
								for( j = 0 ; j < xmlObj.getElementsByTagName("nation").length ; j++ )	{
										if (xmlObj.getElementsByTagName("nation")[j].getAttribute(attributeName) == nation) {
												//sub생성 
												var ResultNode = xmlObj.getElementsByTagName("nation")[j].getElementsByTagName("country");
												for( i = 0 ; i < ResultNode.length ; i++ )	{
														countryArr[i] = ResultNode[i].getAttribute(attributeName);
												}
												break;
										}
								}
						
				//특정 국가 정보가 없으면 국가정보 get
				} else {
								if (xmlObj != null) {
										
											nationArr = new Array();
											//"item"태그가 나온 순서대로 처리합니다
											for( i = 0 ; i < xmlObj.getElementsByTagName("nation").length ; i++ )	{
														nationArr[i] = xmlObj.getElementsByTagName("nation")[i].getAttribute(attributeName);
											}
								 }
				}

				
}



/**
 * 패스워드 힌트 질문 셋팅, 2007-06-09 gggl.ko
 *
 * @param nation			//값이 있으면 해당 값(국가)의 도시정보를 가져오고 없으면 국가정보를 가져온다.
 * 
 * @return array
 * 
 */
 function setPwdQnaQ(lan){
	
	var _URL = rootPath + "/_Xml/pwdQnaQ.xml.asp";	//xml 파일이 있는 경로

	var nodeName			= "question";
	var attributeName	= "id";									//찾을 node의 attribute keyword	- 메인 서브 구분없음
	var attributeName2 = "ENG";								//찾을 node의 attribute keyword	- 메인 서브 구분없음

	if (IsValue(lan)) {
			attributeName2 = lan;
	}
	
	  //함수 참조하여, 타브라우져 에러없이 참조함
	  var _XML = createHttpRequest();

		//설정
		_XML.open("GET",_URL,false);

		  //헤더 application/x-www-form-urlencoded 설정
		  _XML.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		  _XML.send(null);

			var xmlObj = convertXml(_XML);
				
				if (xmlObj != null) {
								
						//특정 국가 정보가 있으면 해당 국가정보를 통한 도시 정보 GET
						pwdQnaQTextArr = new Array();
						pwdQnaQValueArr = new Array();
						
						for( i = 0 ; i < xmlObj.getElementsByTagName(nodeName).length ; i++ )	{
								pwdQnaQValueArr[i] = xmlObj.getElementsByTagName(nodeName)[i].getAttribute(attributeName);
								pwdQnaQTextArr[i] = xmlObj.getElementsByTagName(nodeName)[i].getAttribute(attributeName2);
						}
				}
}


/**
 * Title : getPwdQnaQ
 * Description : param 값을 인덱스로 하는 qna 가져오기
 *
 * @param idx
 * 
 * @return String
 * 
 */
 function getPwdQnaQ(idx){
	
	var rtnV = "";
	var _URL = rootPath + "/_Xml/pwdQnaQ.xml.asp";	//xml 파일이 있는 경로

	var nodeName			= "question";
	var attributeName	= "id";										//찾을 node의 attribute keyword	- 메인 서브 구분없음
	var attributeName2 = language;								//찾을 node의 attribute keyword	- 메인 서브 구분없음
	
	  //함수 참조하여, 타브라우져 에러없이 참조함
	  var _XML = createHttpRequest();

		//설정
		_XML.open("GET",_URL,false);

		  //헤더 application/x-www-form-urlencoded 설정
		  _XML.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		  _XML.send(null);

			var xmlObj = convertXml(_XML);
				
				if (xmlObj != null) {
								
						//특정 국가 정보가 있으면 해당 국가정보를 통한 도시 정보 GET
						pwdQnaQTextArr = new Array();
						pwdQnaQValueArr = new Array();
						
						for( i = 0 ; i < xmlObj.getElementsByTagName(nodeName).length ; i++ )	{
								
								if (xmlObj.getElementsByTagName(nodeName)[i].getAttribute(attributeName) == idx) {
									
									return rtnV = xmlObj.getElementsByTagName(nodeName)[i].getAttribute(attributeName2);
									break;
								}
						}
				}

		
}


// ############################################################################
// 여러가지 값 get
// ############################################################################


/**
 * 	폼내의 라디오버튼 객체를 function param 으로 받아와 체크된 라디오버튼의 value 값을 return 한다. , 2007-06-09 gggl.ko
 *
 * @param radioObj			//값이 있으면 해당 값(국가)의 도시정보를 가져오고 없으면 국가정보를 가져온다.
 * 
 * @return String
 * 
 */

function getRadioSelValue (radioObj) {
		
		var rtnV
		var radioObjLength = radioObj.length;

		for (i = 0; i < radioObjLength; i ++) {
			if (radioObj[i].checked == true) {
				rtnV = radioObj[i].value;
				
				break;
			}
		}
		return rtnV;
}

/**
 * 	선택된 셀렉박스 옵션 value return. , 2007-06-18 gggl.ko
 *
 * @param selectObj			//값이 있으면 해당 값(국가)의 도시정보를 가져오고 없으면 국가정보를 가져온다.
 * 
 * @return String
 * 
 */

function getSelectSelValue (selectObj) {
		
		var rtnV
		var selectObjLength = selectObj.length;

		for (i = 0; i < selectObjLength; i ++) {
			if (selectObj[i].selected == true) {
				rtnV = selectObj[i].value;
				
				break;
			}
		}
		return rtnV;
}


// ############################################################################
// tagLibiry - 2007-06-13 gggl.ko
// ############################################################################


/**
 * 배열 타입별로 뿌리기 , 2007-06-09 gggl.ko
 *
 * @param n					
 * @param v						
 * @param t						
 * @param checked			
 * @param classEcho		
 * 
 * @return String
 * 
 */

function tagLibEcho(n,v,t,checked,classEcho) {
		//try {
				//alert(v);
				var echo;
				switch (t) {

					case "R" :	 //radio button
						echo = "<input type='radio' name='"+n+"' value='"+v+"'";
						if (checked == 1 || checked == "Y" || checked == "y") {
								echo = echo + " checked";
						}

						if (classEcho == 1 || classEcho != "") {
								echo = echo + " class='"+classEcho+"'";
						}
						echo = echo + " onclick='alert(this.value);'>";
				}
				
				document.write(echo);

		//}	catch (e)	{
		//}
}

/**
 * selectbox 새로 그리기 , 2007-06-09 gggl.ko
 *
 * @param frmObj (selectbox object)					
 * @param arrV (option value)					
 * @param arrN (option name)						
 * @param selectedV (selected value)			
 * 
 * @return set selectBox
 * 
 */

function tagLibSelOptEcho(frmObj,arrV,arrN,selectedV) {

		try {
				var chk;
				chk = 0;

				frmObj.options.length		= 0;								//object reset
				frmObj.options.length		= arrV.length;				//option number set

						for (i=0;i<arrV.length ;i++ ) {
								frmObj.options[i].value		= arrV[i];
								frmObj.options[i].text			= arrN[i];

								if (IsValue(selectedV) && frmObj.options[i].value == selectedV) {
									chk = 1;
								}
						}

						if (chk == 1) {
									frmObj.value = selectedV;
						}
						
						
						
		}	catch (e)	{

				alert("tagLibSelOptEcho functino error.");
		}
}

