﻿var HTTP = new Object();
var async = true;
if (!window.XMLHttpRequest) {
    XMLHttpRequest = function() {
        var req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req != null) return req;
        return new ActiveXObject("Msxml2.XMLHTTP");
    }
}

HTTP.get = function(url, callback, returnXML) {
    var req = new XMLHttpRequest();
    req.onreadystatechange = function() {
        if (req.readyState == 4 && req.status == 200) {
            if (returnXML) {
                callback(req.responseXML);
            } else {
                callback(req.responseText);
            }
        }
    }

    req.open("GET", url, async);
    req.send(null);
    if (!async && req.status == 200) { /* the request has been returned */
        if (returnXML) {
            callback(req.responseXML);
        } else {
            callback(req.responseText);
        }
    }
}

if (typeof (HTMLElement) != "undefined" && !window.opera) {
    HTMLElement.prototype.__defineGetter__("outerHTML", function() {
        var a = this.attributes, str = "<" + this.tagName, i = 0; for (; i < a.length; i++)
            if (a[i].specified)
            str += " " + a[i].name + '="' + a[i].value + '"';
        if (!this.canHaveChildren)
            return str + " />";
        return str + ">" + this.innerHTML + "</" + this.tagName + ">";
    });
    HTMLElement.prototype.__defineSetter__("outerHTML", function(s) {
        var r = this.ownerDocument.createRange();
        r.setStartBefore(this);
        var df = r.createContextualFragment(s);
        this.parentNode.replaceChild(df, this);
        return s;
    });
    HTMLElement.prototype.__defineGetter__("canHaveChildren", function() {
        return !/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link|meta|param)$/.test(this.tagName.toLowerCase());
    });
}