﻿
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

var mrOwebservice = {
    target: null, //target to write error to
    debug: false, //alert on/off
    
    OnTimeOut: function(err) {
        if (this.debug)alert(err);
        if (this.target!=null){
            this.target.innerHTML = 'Error: <br />'+ err.get_message();
        }
    },
    OnError: function(err) {
        if (this.debug)alert(err);
        if (this.target!=null){
            this.target.innerHTML = 'Error: <br />' + err.get_message();
        }
    }
}

var mrOxml = {
    parser: null,
    debug: false,
    
    applyXSL: function(XMLObj, XSLObj, target) {
        if ( typeof(target) == "string" ) {
            target = document.getElementById(target);
        }
        if ( window.ActiveXObject ){ //explorer
            var res = XMLObj.transformNode(XSLObj);
            if (this.debug)alert(res);
            target.innerHTML = res;
            return true;
        } else if (window.XSLTProcessor) { //mozilla 
            var res;
            var xsltp = new XSLTProcessor();
            xsltp.importStylesheet(XSLObj);
            target.innerHTML = '';
            res = xsltp.transformToFragment(XMLObj, document);
            if (this.debug)alert(res);
            target.appendChild(res);
            return true;
        } else {
            return false;
        }
    },
    
//type 1 = file
//type 2 = string    
    getXMLObj: function(inp, type) {
        var XMLObj = null;
        
        if (window.ActiveXObject) {
            if ( type === 1 ) { //file
                XMLObj = new ActiveXObject("Msxml2.DOMDocument.3.0");
                XMLObj.async = false;
                XMLObj.load(inp);
            } else if ( type === 2 ) { //string
                XMLObj = new ActiveXObject("Msxml2.DOMDocument.3.0");
                XMLObj.async = false;
                XMLObj.loadXML(inp);
            }
            return XMLObj;
        } else if ( document.implementation && document.implementation.createDocument ) {
            if ( type === 1 ) { //file
                XMLObj = document.implementation.createDocument("", "", null);
                XMLObj.async = false;
                XMLObj.load(inp);
            } else if ( type === 2 ) { //string
                var parser = new DOMParser();
                XMLObj = parser.parseFromString(inp,"text/xml");
            }
            return XMLObj;
        } else {
            return null;
        }
    },
    getXMLStr: function(subTree){
        var out=""; //var to content temp
        out = out + "<ul>\n";
        for(var i=0;i<subTree.childNodes.length;i++){
            if(subTree.childNodes[i].nodeType == 1){
                out = out + "\t<li>" + subTree.childNodes[i].nodeName + ": ";
                if(subTree.childNodes[i].childNodes.length==0){
                    out = out + subTree.childNodes[i].nodeValue;
                
                    for(var z=0;z<subTree.childNodes[i].attributes.length;z++){
                        var atrib = subTree.childNodes[i].attributes[z];
                        out = out + " (" + atrib.nodeName + " = " + atrib.nodeValue + ")";
                    }

                } else if(subTree.childNodes[i].childNodes.length>0){
                    out = out + subTree.childNodes[i].firstChild.nodeValue;
                    for(var z=0;z<subTree.childNodes[i].attributes.length;z++){
                        var atrib = subTree.childNodes[i].attributes[z];
                        out = out + " (" + atrib.nodeName + " = " + atrib.nodeValue + ")";
                    }
                    out = out + this.getXMLStr(subTree.childNodes[i]);
                }
                out = out + "</li>\n";
            }
        }
        out = out + "</ul>\n";
        return out;
    }
}
