﻿//// This file contains all functionality to communicate with webservices.

//var URLWebService = '../../servicearea/ajax.asmx';
//var IeXPathNamespaceCustomObject = "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:na='http://localhost/LeveranciersGids.Webservice/internal.asmx/'";
//var BrowserIe = -1;
//var BrowserOther = -1;

//// This function is used to create an XMLHttpRequest object
//function CreateXHR()
//{
//    var XHRequest;

//    if( window.ActiveXObject)
//    {
//        BrowserIe = 1;
//        try
//        {
//            XHRequest = new ActiveXObject("MSXML2.XMLHttp.3.0");
//        }
//        catch( oErr1)
//        {
//            try
//            {
//                XHRequest = new ActiveXObject("MSXML2.XMLHttp");
//            }
//            catch( oErr2)
//            {
//                XHRequest = null;
//            }
//        }
//    }
//    else if( typeof XMLHttpRequest != 'undefined')
//    {
//        BrowserOther = 1;
//        XHRequest = new XMLHttpRequest();
//    }
//    else
//    {
//        XHRequest = null;
//    }
//    
//    return XHRequest;
//}

//// This function handles a change in the readystate of an XMLHttpRequest object (sync call)
//function WS_HandleOnReadyStateChange_Sync( oXHR, targetDiv, targetXslt, paramXslt)
//{
//    var oXmlDoc;
//    var oResultData;
//    
//    if( oXHR.readyState == 4)
//    {
//        if( oXHR.status == 200)
//        {
//            oXmlDoc = CreateXmlDocument();         
//            
//            if( BrowserIe == 1)
//            {
//                oXmlDoc.load( oXHR.responseXML);
//                
//                if( targetXslt.length != 0)
//                {
//                    var oXslDom = new ActiveXObject( "MSXML2.FreeThreadedDOMDocument.3.0");
//                    oXslDom.async = false;
//                    oXslDom.load( targetXslt);
//                    
//                    var oXslTemplate = new ActiveXObject( "MSXML2.XSLTemplate.3.0");
//                    oXslTemplate.stylesheet = oXslDom;
//                    
//                    var oXslProcessor = oXslTemplate.createProcessor();
//                    oXslProcessor.input = oXmlDoc;
//                    
//                    for( var iParam = 0; iParam < paramXslt.length; iParam++)
//	                {
//		                // Deactivate the result explanations
//		                oXslProcessor.addParameter(paramXslt[iParam].Name, paramXslt[iParam].Value)
//	                }
//                    
//                    oXslProcessor.transform();
//                    oResultData = oXslProcessor.output;
//                }
//                
//            }
//            else if( BrowserOther == 1)
//            {
//                oXmlDoc = (new DOMParser()).parseFromString(oXHR.responseText, "text/xml");
//                
//                if( targetXslt.length != 0)
//                {
//                    var oXslDom = CreateXmlDocument();
//                    oXslDom.async = false;
//                    oXslDom.load( targetXslt);
//                    
//                    var oXsltProcessor = new XSLTProcessor();
//                    oXsltProcessor.importStylesheet( oXslDom);
//                    
//                    for( var iParam = 0; iParam < paramXslt.length; iParam++)
//	                {
//		                // Deactivate the result explanations
//		                oXslProcessor.addParameter(paramXslt.Name, paramXslt.Value)
//	                }                    
//                    
//                    var oXmlDomResult = oXsltProcessor.transformToDocument( oXmlDoc);
//                    var oSerializer = new XMLSerializer();
//                    oResultData = oSerializer.serializeToString( oXmlDomResult);
//                }
//            }
//            else
//            {
//                HandleError( 'Fout opgetreden bij het laden van de XML stylesheet.');
//            }
//            
//            if( targetDiv.length != 0)
//            {
//                document.getElementById( targetDiv).innerHTML = oResultData;
//            }
//            
//        }
//        else
//        {
//            HandleWebServiceError( oXHR);
//        }
//    }
//    
//    return oXmlDoc;
//}

//// This function handles a change in the readystate of an XMLHttpRequest object (async call)
//function WS_HandleOnReadyStateChange_Async( oXHR, targetDiv, targetXslt, paramXslt)
//{
//    var oXmlDoc;
//    var oResultData;
//    
//    if( oXHR.readyState == 4)
//    {
//        if( oXHR.status == 200)
//        {
//            oXmlDoc = CreateXmlDocument();         
//            
//            if( BrowserIe == 1)
//            {
//                oXmlDoc.load( oXHR.responseXML);
//                
//                if( targetXslt.length != 0)
//                {
//                    var oXslDom = new ActiveXObject( "MSXML2.FreeThreadedDOMDocument.3.0");
//                    oXslDom.async = false;
//                    oXslDom.load( targetXslt);
//                    
//                    var oXslTemplate = new ActiveXObject( "MSXML2.XSLTemplate.3.0");
//                    oXslTemplate.stylesheet = oXslDom;
//                    
//                    var oXslProcessor = oXslTemplate.createProcessor();
//                    oXslProcessor.input = oXmlDoc;
//                    
//                    for( var iParam = 0; iParam < paramXslt.length; iParam++)
//	                {
//		                // Deactivate the result explanations
//		                oXslProcessor.addParameter(paramXslt.Name, paramXslt.Value)
//	                }                    
//                    
//                    //oXslProcessor.transform();
//                    oResultData = oXslProcessor.output;
//                }
//                
//            }
//            else if( BrowserOther == 1)
//            {
//                oXmlDoc = (new DOMParser()).parseFromString(oXHR.responseText, "text/xml");
//                
//                if( targetXslt.length != 0)
//                {
//                    var oXslDom = CreateXmlDocument();
//                    oXslDom.async = false;
//                    oXslDom.load( targetXslt);
//                    
//                    var oXsltProcessor = new XSLTProcessor();
//                    oXsltProcessor.importStylesheet( oXslDom);
//                    
//                    for( var iParam = 0; iParam < paramXslt.length; iParam++)
//	                {
//		                // Deactivate the result explanations
//		                oXslProcessor.addParameter(paramXslt.Name, paramXslt.Value)
//	                }                    
//                    
//                    //var oXmlDomResult = oXsltProcessor.transformToDocument( oXmlDoc);
//                    var oSerializer = new XMLSerializer();
//                    oResultData = oSerializer.serializeToString( oXmlDomResult);
//                }
//            }
//            else
//            {
//                HandleError( 'Fout opgetreden bij het laden van de XML stylesheet.');
//            }
//            
//            if( targetDiv.length != 0)
//            {
//                document.getElementById( targetDiv).innerHTML = oResultData;
//            }
//            
//        }
//        else
//        {
//            HandleWebServiceError( oXHR);
//        }
//    }
//    
//    return oXmlDoc;
//}

//// This function handles any error when calling a webservice
//function HandleWebServiceError( oXHR)
//{
//    alert( oXHR.status + ": " + oXHR.statusText);
//}

//// This function is used to create an XMLDocument object
//function CreateXmlDocument()
//{
//    var XmlDocument;

//    if( window.ActiveXObject)
//    {
//        
//        try
//        {
//            XmlDocument = new ActiveXObject("MSXML2.DOMDocument.3.0");
//        }
//        catch( oErr1)
//        {
//            try
//            {
//                XmlDocument = new ActiveXObject("MSXML2.DOMDocument");
//            }
//            catch( oErr2)
//            {
//                XmlDocument = null;
//            }
//        }
//    }
//    else
//    {
//    
//        try
//        {
//            XmlDocument = document.implementation.createDocument( "", "", null);
//        }
//        catch( oErr3)
//        {
//            XmlDocument = null;
//        }
//    }
//    
//    return XmlDocument;
//}

//function WSResult(oXmlDoc)
//{
//    this.Success = false;
//    this.Object = "";
//    this.Message = "";
//    
//    // Check if the operation was succesful
//    if( BrowserIe == 1)
//    {
//        oXmlDoc.setProperty("SelectionLanguage", "XPath");
//        oXmlDoc.setProperty( "SelectionNamespaces", IeXPathNamespaceCustomObject);
//        oResultNodes = oXmlDoc.documentElement.selectNodes("na:Success");
//        if( oResultNodes.length > 0)
//        {
//            this.Success = oResultNodes.nextNode().text;
//        }
//        
//        oResultNodes = oXmlDoc.documentElement.selectNodes("na:Object");
//        if( oResultNodes.length > 0)
//        {
//            this.Object = oResultNodes.nextNode().text;
//        }

//        oResultNodes = oXmlDoc.documentElement.selectNodes("na:Message");
//        if( oResultNodes.length > 0)
//        {
//            this.Message = oResultNodes.nextNode().text;
//        }
//    }    
//    else if( BrowserOther == 1)
//    {
//        oResultNodes = oXmlDoc.evaluate( "na:WSResult/na:Success", oXmlDoc, nsResolver, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
//        while( oElement = oResultNodes.iterateNext())
//        {
//            this.Success = oElement.textContent;
//        }
//        
//        oResultNodes = oXmlDoc.evaluate( "na:WSResult/na:Object", oXmlDoc, nsResolver, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
//        while( oElement = oResultNodes.iterateNext())
//        {
//            this.Object = oElement.textContent;
//        }
//        
//        oResultNodes = oXmlDoc.evaluate( "na:WSResult/na:Message", oXmlDoc, nsResolver, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
//        while( oElement = oResultNodes.iterateNext())
//        {
//            this.Message = oElement.textContent;
//        }
//    }
//    
//    return this;
//}

//function nsResolver( nsPrefix)
//{
//    var Result;

//    switch ( nsPrefix)
//    {
//        case "na":
//            Result = "http://localhost/LeveranciersGids/WebService.asmx/";
//            break;
//        case "xsi":
//            Result = "http://www.w3.org/2001/XMLSchema-instance";
//            break;
//        case "xsd":
//            Result = "http://www.w3.org/2001/XMLSchema";
//            break;
//        default:
//            Result = "";
//            break;
//    }
//    
//    return Result;
//}
