﻿
//<![CDATA[
function getXmlDom() {
   var xmlDomProgIDs = ["MSXML2.DOMDocument.5.0", 
                        "MSXML2.DOMDocument.4.0", 
                        "MSXML2.DOMDocument.3.0", 
                        "MSXML2.DOMDocument",
                        "Microsoft.XmlDom"];
    if (typeof(ActiveXObject) == "function")    //IE계열
    {
        for(var i = 0; i < xmlDomProgIDs.length; i++) {
            try {
                var xmlDom = new ActiveXObject(xmlDomProgIDs[i]);
                return xmlDom;
            } catch(e) {
                // 무시
            }
        }        
    }
    else //Firefox, Mozilla, Opera, etc.
    {
         return document.implementation.createDocument("","",null);
    }
//    else
//    {
//      var xmlhttp = new window.XMLHttpRequest();
//      xmlhttp.open("GET",dname,false);
//      xmlhttp.send(null);
//      xmlDoc = xmlhttp.responseXML.documentElement;
//      return(xmlDoc);

//    }
    throw new "MSXML 이 설치되어 있지 않습니다!";
}//end function

var request;
function createRequest()
{    
    try {
        request = new XMLHttpRequest(); //모질라 웹 브라우저
    } catch (trymicrosoft) {
        try {
            request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (othermicrosoft){
             try {
                request = new ActiveXObject("Microsoft.XMLHTTP");
             }catch (failed){
                request = null;
               }
           }
    }
    
    if (request == null)
        alert("현 브라우저에서는 거래처를 검색할수 없습니다.");
}

//동시에 여러개의 방법으로 호출하기 위해 생성 객체를 리턴한다.(/Include/Package/ProductList.js에서 사용)
function Set_createRequest()
{
    var returnRequest = null;
    try {
        returnRequest = new XMLHttpRequest(); //모질라 웹 브라우저
    } catch (trymicrosoft) {
        try {
            returnRequest = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (othermicrosoft){
             try {
                returnRequest = new ActiveXObject("Microsoft.XMLHTTP");
             }catch (failed){
                returnRequest = null;
               }
           }
    }
    
    if (returnRequest == null)
        alert("현 브라우저에서는 거래처를 검색할수 없습니다.");
    
    return returnRequest;
}

function isIE() {
    if (navigator.userAgent.indexOf("MSIE") >= 0)
        return true;
    else
        return false;
}

//크롬 또는 사파리
function isSafari() {
    if (navigator.userAgent.indexOf("Safari") >= 0)
        return true;
    else
        return false;
}

//Dom 생성
function CreateDom() {
    var DomProgIDs = ["MSXML2.DOMDocument6.0", "MSXML2.DOMDocument5.0", "MSXML2.DOMDocument4.0", "MSXML2.DOMDocument3.0", "MSXML2.DOMDocument", "Microsoft.XmlDom"];
    
    //Internet Explorer
    if (window.ActiveXObject) {
        for(var i=0; i<DomProgIDs.length; i++) {
            try {
                return new ActiveXObject(DomProgIDs[i]);
            }
            catch(e) { }
        }
    }
    
    //Firefox, Mozilla, Opera, etc.
//      else {
//        return new XmlHttpRequest();
//      }
    else if ((typeof document.implementation != "undefined") && (typeof document.implementation.createDocument != "undefined"))
        return document.implementation.createDocument("", "", null);
    
    throw new "MSXML이 설치되어 있지 않습니다.";
}

//Xml 파일 로드
function DomLoad(xmlFile) {
    var xmlDom = null;
    
    try {
        xmlDom = CreateDom();
        xmlDom.async = false;
        xmlDom.load(xmlFile);
    }
    catch(e) {
        //Safari, Chrome
        var xmlHttp = new window.XMLHttpRequest();
        alert(xmlFile);
//            xmlHttp.open("GET", xmlFile,false);
//            xmlHttp.send(null);
//        xmlDom = xmlHttp.responseXML.documentElement;
    }
    
    return xmlDom;
}

//Xml 스트링 로드
function DomLoadXml(xmlString) {
    var xmlDom = null;
    
    try {
        if (isIE()) {
            xmlDom = CreateDom();
            xmlDom.async = false;
            xmlDom.loadXML(xmlString);
        }
        else {
            var domParser = new DOMParser();
                xmlDom = CreateDom();
                xmlDom = domParser.parseFromString(xmlString, "text/xml");
            delete domParser;
        }
    }
    catch(e) { xmlDom = null; }
    
    return xmlDom;
}

//Xml 전체 스트링 리턴(노드 사용 가능)
function DomElementXml(xmlDom, inclusion) {
    try {
        if (isIE()) {
            if (inclusion)
                return xmlDom.xml;
            else
                return xmlDom.documentElement.xml;
        }
        else {
            var serializer = new XMLSerializer();
            
            if (isSafari()) {
                return serializer.serializeToString(xmlDom);
            }
            else {
                if (inclusion)
                    return serializer.serializeToString(xmlDom);
                else
                    return serializer.serializeToString(xmlDom.documentElement);
            }
        }
    }
    catch(e) { return ""; }
}

//transformNode
function Transformer(xml, xsl) {    
    if (isIE()){
        return xml.transformNode(xsl);
    }else {        
        try{
            var xsltProc = new XSLTProcessor();
            xsltProc.importStylesheet(xsl);
            var fragment = xsltProc.transformToFragment(xml, document);           
            
            return DomElementXml(fragment, true);
        }catch(e){return "";}  
    }//end if
}

//노드 선택
//예 var ProductNode = Get_selectNodes(xmlObj,"ModeTour/Product");
function Get_selectNodes(xmlDom,NodeName)
{
    try {
        var TempNodeName = NodeName.split("/");
        if (isIE())
        {
            var ReturnNode = xmlDom.selectNodes(NodeName);
            if (ReturnNode == null) ReturnNode = xmlDom.getElementsByTagName(TempNodeName[TempNodeName.length-1]);
            
            return ReturnNode;
        }
        else {
            return xmlDom.getElementsByTagName(TempNodeName[TempNodeName.length-1]);
        }
    }
    catch(e) { return null; }
}
//노드값
function Get_NodeValue(xmlDomNode)
{
    try {
        if (isIE())
        {
            var NodeString = xmlDomNode.text;
            if (NodeString == null) NodeString = xmlDomNode.innerText;
            return NodeString;
        }
        else {
            return xmlDomNode.textContent;
        }
    }
    catch(e) { return ""; }
}
//노드내 속성값
function Get_AttributeNode(xmlDomNode,AttName)
{
    try {
        if (isIE())
            return xmlDomNode.attributes.getNamedItem(AttName).nodeValue;
        else {
            return xmlDomNode.getAttributeNode(AttName).nodeValue;
        }
    }
    catch(e) { return ""; }
}
//]]>
