
/***********************************************
 *                                             *
 *  Copyright © BW Systems 2008.               *
 *                                             *
 *  Az oldal fejlesztoi joga a BW Systems Bt   *
 *  tulajdona. A szoftver felhasznalasa csak   *
 *  a BW Systems Bt. irasos engedelye birto-   *
 *  kaban, vagy a BW Systems Bt-vel kotott     *
 *  szerzodes alapjan lehetseges.              *
 *                                             *
 *  A szoftver engedely nelkuli felhasznalasa, *
 *  masolasa, modositasa, terjesztese vagy at- *
 *  adasa polgari es buntetojogi kovetkezme-   *
 *  nyekkel jarhat!                            *
 *                                             *
 *  BW Systems Bt. 2011 Budakalasz,            *
 *  Vasut sor 42.                              *
 *                                             *
 *  Cg.13-06-050782                            *
 *                                             *
 ***********************************************/

function BWS_XMLRequest() {

    var xmlrequest = false;
    var processResponse = false;

    this.url = false;
    this.method = 'GET';
    this.queryString = '';
    this.contentType = 'text/plain; charset=utf-8';

    // XMLHttpRequest peldany letrehozasa

    try {
        // Microsoft Internet Explorer-fele megoldas
        //
        xmlrequest = new ActiveXObject("Microsoft.XMLHTTP");
    } catch(err) {
        try {
            // Mozilla/Netscape-fele megoldas
            //
            xmlrequest = new XMLHttpRequest();
        } catch(err) {
            try {
                // Opera-fele megoldas
                //
                xmlrequest = window.XMLHttpRequest;
            } catch(err) {
                // Nincs megoldas
                //
                xmlrequest = false;
            }
        }
    }

    if (!xmlrequest) {
        errorMessage('XMLHttpRequest objektum nem hozható létre.\n '
            + 'Lehetséges okok: elavult böngésző, letiltott JavaScript vagy AcitiveX vezérlők.');
        return false;
    }

    this.getUrl = function() {
        return this.url;
    }

    this.setUrl = function(value) {
        this.url = value;
    }

    this.getMethod = function() {
        return this.method;
    }

    this.setMethod = function(value) {
        this.method = value;
    }

    this.getQueryString = function() {
        return this.queryString;
    }

    this.setQueryString = function(value) {
        this.queryString = value;
    }
    
    this.getProcessResponse = function() {
        return processResponse;
    }

    this.setProcessResponse = function(value) {
        processResponse = value;
    }
    
    this.getContentType = function() {
        return this.contentType;
    }

    this.setContentType = function(value) {
        this.contentType = value;
    }

    this.go = function() {
        if (xmlrequest) {
            // Megvan az XMLHttpRequest objektum, eloszor a valasz
            // kezelojenek meghatarozasa kovetkezik
            //
            xmlrequest.onreadystatechange = function() {
                if (xmlrequest.readyState == 4) {
                    // Csak akkor indul, ha a state 4, azaz az atvitel megtortent
                    if (xmlrequest.status == 200) {
                        // Status rendben van, uzenet feldolgozasa
                        //
                        try {
                            if (xmlrequest.responseXML.documentElement.tagName == 'errorpage') {
                                // Errorpage uzenet jott, ennek megfelelo hibauzenet kiiratasa
                                //
                                errmsg = '';
                                errors = xmlrequest.responseXML.getElementsByTagName('errorstring');
                                for (var i=0; i < errors.length; i++) {
                                    errmsg = errmsg + errors[i].firstChild.nodeValue + '\n';
                                }
                                errorMessage(errmsg);
    
                            } else {
                                // Rendes XML valasz jott, modul altal definialt XMLProcessResponse
                                // fuggveny meghivasa
                                //
                                try {
                                    processResponse(xmlrequest.responseXML);
                                } catch(err) {
                                    // errorMessage('A modul nem állította be a processResponse propertyt, vagy abban hiba van. '
                                    //   + 'Hibaüzenet: ' + err);
                                    return false;
                                }
                            }
                        } catch(err) {
                            // Ures uzenet vagy nem jol formalt XML jott
                            // errorMessage('Nem jött válasz vagy rosszul formázott XML jött: ' + err + '\n\nOutput: ' + xmlrequest.responseText);
                        }
                    } else {
                        // Nem 200 volt a response status, hibauzenet kuldese
                        // errorMessage('A szerver hibát jelzett. Hibakód: ' + xmlrequest.status);
                    }
                }
            }
            // Tenyleges xmlrequest osszeallitasa es elkuldese
            //
            if ((this.url) && (this.method)) {
                if (this.method == 'GET') {
                    xmlrequest.open(this.method,this.url + '?' + this.queryString,true);
                    xmlrequest.send('');
                    return true;
                } else if (this.method == 'POST') {
                    xmlrequest.open(this.method,this.url,true);
                    xmlrequest.setRequestHeader('Content-Type',this.contentType);
                    xmlrequest.setRequestHeader('Content-Length',this.queryString.length);
                    xmlrequest.setRequestHeader('Connection','close');
                    xmlrequest.send(this.queryString);
                    return true;
                }
            }
        }
    }
}
