//v.3.0 build 110707

/*
 Copyright DHTMLX LTD. http://www.dhtmlx.com
 You allowed to use this component or parts of it under GPL terms
 To use it on other terms or get Professional edition of the component please contact us at sales@dhtmlx.com
 */
dhtmlx = function(a){
    for (var b in a) 
        dhtmlx[b] = a[b];
    return dhtmlx
};
dhtmlx.extend_api = function(a, b, c){
    var d = window[a];
    if (d) 
        window[a] = function(a){
            if (a && typeof a == "object" && !a.tagName) {
                var c = d.apply(this, b._init ? b._init(a) : arguments), f;
                for (f in dhtmlx) 
                    if (b[f]) 
                        this[b[f]](dhtmlx[f]);
                for (f in a) 
                    if (b[f]) 
                        this[b[f]](a[f]);
                    else 
                        f.indexOf("on") == 0 && this.attachEvent(f, a[f])
            }
            else 
                c = d.apply(this, arguments);
            b._patch && b._patch(this);
            return c || this
        }, window[a].prototype = d.prototype, c && dhtmlXHeir(window[a].prototype, c)
};
dhtmlxAjax = {
    get: function(a, b){
        var c = new dtmlXMLLoaderObject(!0);
        c.async = arguments.length < 3;
        c.waitCall = b;
        c.loadXML(a);
        return c
    },
    post: function(a, b, c){
        var d = new dtmlXMLLoaderObject(!0);
        d.async = arguments.length < 4;
        d.waitCall = c;
        d.loadXML(a, !0, b);
        return d
    },
    getSync: function(a){
        return this.get(a, null, !0)
    },
    postSync: function(a, b){
        return this.post(a, b, null, !0)
    }
};
function dtmlXMLLoaderObject(a, b, c, d){
    this.xmlDoc = "";
    this.async = typeof c != "undefined" ? c : !0;
    this.onloadAction = a || null;
    this.mainObject = b || null;
    this.waitCall = null;
    this.rSeed = d || !1;
    return this
}

dtmlXMLLoaderObject.prototype.waitLoadFunction = function(a){
    var b = !0;
    return this.check = function(){
        if (a && a.onloadAction != null && (!a.xmlDoc.readyState || a.xmlDoc.readyState == 4) && b) {
            b = !1;
            if (typeof a.onloadAction == "function") 
                a.onloadAction(a.mainObject, null, null, null, a);
            if (a.waitCall) 
                a.waitCall.call(this, a), a.waitCall = null
        }
    }
};
dtmlXMLLoaderObject.prototype.getXMLTopNode = function(a, b){
    if (this.xmlDoc.responseXML) {
        var c = this.xmlDoc.responseXML.getElementsByTagName(a);
        c.length == 0 && a.indexOf(":") != -1 && (c = this.xmlDoc.responseXML.getElementsByTagName(a.split(":")[1]));
        var d = c[0]
    }
    else 
        d = this.xmlDoc.documentElement;
    if (d) 
        return this._retry = !1, d;
    if (_isIE && !this._retry) {
        var e = this.xmlDoc.responseText, b = this.xmlDoc;
        this._retry = !0;
        this.xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        this.xmlDoc.async = !1;
        this.xmlDoc.loadXML(e);
        return this.getXMLTopNode(a, b)
    }
    dhtmlxError.throwError("LoadXML", "Incorrect XML", [b || this.xmlDoc, this.mainObject]);
    return document.createElement("DIV")
};
dtmlXMLLoaderObject.prototype.loadXMLString = function(a){
    if (_isIE) 
        this.xmlDoc = new ActiveXObject("Microsoft.XMLDOM"), this.xmlDoc.async = this.async, this.xmlDoc.onreadystatechange = function(){
        }, this.xmlDoc.loadXML(a);
    else {
        var b = new DOMParser;
        this.xmlDoc = b.parseFromString(a, "text/xml")
    }
    if (this.onloadAction) 
        this.onloadAction(this.mainObject, null, null, null, this);
    if (this.waitCall) 
        this.waitCall(), this.waitCall = null
};
dtmlXMLLoaderObject.prototype.loadXML = function(a, b, c, d){
    this.rSeed && (a += (a.indexOf("?") != -1 ? "&" : "?") + "a_dhx_rSeed=" + (new Date).valueOf());
    this.filePath = a;
    this.xmlDoc = !_isIE && window.XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP");
    if (this.async) 
        this.xmlDoc.onreadystatechange = new this.waitLoadFunction(this);
    this.xmlDoc.open(b ? "POST" : "GET", a, this.async);
    d ? (this.xmlDoc.setRequestHeader("User-Agent", "dhtmlxRPC v0.1 (" + navigator.userAgent + ")"), this.xmlDoc.setRequestHeader("Content-type", "text/xml")) : b && this.xmlDoc.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    this.xmlDoc.setRequestHeader("X-Requested-With", "XMLHttpRequest");
    this.xmlDoc.send(c);
    this.async || (new this.waitLoadFunction(this))()
};
dtmlXMLLoaderObject.prototype.destructor = function(){
    return this.setXSLParamValue = this.getXMLTopNode = this.xmlNodeToJSON = this.doSerialization = this.loadXMLString = this.loadXML = this.doXSLTransToString = this.doXSLTransToObject = this.doXPathOpera = this.doXPath = this.xmlDoc = this.mainObject = this.onloadAction = this.filePath = this.rSeed = this.async = this._retry = this._getAllNamedChilds = this._filterXPath = null
};
dtmlXMLLoaderObject.prototype.xmlNodeToJSON = function(a){
    for (var b = {}, c = 0; c < a.attributes.length; c++) 
        b[a.attributes[c].name] = a.attributes[c].value;
    b._tagvalue = a.firstChild ? a.firstChild.nodeValue : "";
    for (c = 0; c < a.childNodes.length; c++) {
        var d = a.childNodes[c].tagName;
        d && (b[d] || (b[d] = []), b[d].push(this.xmlNodeToJSON(a.childNodes[c])))
    }
    return b
};
function callerFunction(a, b){
    return this.handler = function(c){
        if (!c) 
            c = window.event;
        a(c, b);
        return !0
    }
}

function getAbsoluteLeft(a){
    return getOffset(a).left
}

function getAbsoluteTop(a){
    return getOffset(a).top
}

function getOffsetSum(a){
    for (var b = 0, c = 0; a;) 
        b += parseInt(a.offsetTop), c += parseInt(a.offsetLeft), a = a.offsetParent;
    return {
        top: b,
        left: c
    }
}

function getOffsetRect(a){
    var b = a.getBoundingClientRect(), c = document.body, d = document.documentElement, e = window.pageYOffset || d.scrollTop || c.scrollTop, g = window.pageXOffset || d.scrollLeft || c.scrollLeft, f = d.clientTop || c.clientTop || 0, h = d.clientLeft || c.clientLeft || 0, i = b.top + e - f, k = b.left + g - h;
    return {
        top: Math.round(i),
        left: Math.round(k)
    }
}

function getOffset(a){
    return a.getBoundingClientRect ? getOffsetRect(a) : getOffsetSum(a)
}

function convertStringToBoolean(a){
    typeof a == "string" && (a = a.toLowerCase());
    switch (a) {
        case "1":
        case "true":
        case "yes":
        case "y":
        case 1:
        case !0:
            return !0;
        default:
            return !1
    }
}

function getUrlSymbol(a){
    return a.indexOf("?") != -1 ? "&" : "?"
}

function dhtmlDragAndDropObject(){
    if (window.dhtmlDragAndDrop) 
        return window.dhtmlDragAndDrop;
    this.dragStartObject = this.dragStartNode = this.dragNode = this.lastLanding = 0;
    this.tempDOMM = this.tempDOMU = null;
    this.waitDrag = 0;
    window.dhtmlDragAndDrop = this;
    return this
}

dhtmlDragAndDropObject.prototype.removeDraggableItem = function(a){
    a.onmousedown = null;
    a.dragStarter = null;
    a.dragLanding = null
};
dhtmlDragAndDropObject.prototype.addDraggableItem = function(a, b){
    a.onmousedown = this.preCreateDragCopy;
    a.dragStarter = b;
    this.addDragLanding(a, b)
};
dhtmlDragAndDropObject.prototype.addDragLanding = function(a, b){
    a.dragLanding = b
};
dhtmlDragAndDropObject.prototype.preCreateDragCopy = function(a){
    if (!((a || window.event) && (a || event).button == 2)) {
        if (window.dhtmlDragAndDrop.waitDrag) 
            return window.dhtmlDragAndDrop.waitDrag = 0, document.body.onmouseup = window.dhtmlDragAndDrop.tempDOMU, document.body.onmousemove = window.dhtmlDragAndDrop.tempDOMM, !1;
        window.dhtmlDragAndDrop.dragNode && window.dhtmlDragAndDrop.stopDrag(a);
        window.dhtmlDragAndDrop.waitDrag = 1;
        window.dhtmlDragAndDrop.tempDOMU = document.body.onmouseup;
        window.dhtmlDragAndDrop.tempDOMM = document.body.onmousemove;
        window.dhtmlDragAndDrop.dragStartNode = this;
        window.dhtmlDragAndDrop.dragStartObject = this.dragStarter;
        document.body.onmouseup = window.dhtmlDragAndDrop.preCreateDragCopy;
        document.body.onmousemove = window.dhtmlDragAndDrop.callDrag;
        window.dhtmlDragAndDrop.downtime = (new Date).valueOf();
        a && a.preventDefault && a.preventDefault();
        return !1
    }
};
dhtmlDragAndDropObject.prototype.callDrag = function(a){
    if (!a) 
        a = window.event;
    dragger = window.dhtmlDragAndDrop;
    if (!((new Date).valueOf() - dragger.downtime < 100)) {
        if (!dragger.dragNode) 
            if (dragger.waitDrag) {
                dragger.dragNode = dragger.dragStartObject._createDragNode(dragger.dragStartNode, a);
                if (!dragger.dragNode) 
                    return dragger.stopDrag();
                dragger.dragNode.onselectstart = function(){
                    return !1
                };
                dragger.gldragNode = dragger.dragNode;
                document.body.appendChild(dragger.dragNode);
                document.body.onmouseup = dragger.stopDrag;
                dragger.waitDrag = 0;
                dragger.dragNode.pWindow = window;
                dragger.initFrameRoute()
            }
            else 
                return dragger.stopDrag(a, !0);
        if (dragger.dragNode.parentNode != window.document.body && dragger.gldragNode) {
            var b = dragger.gldragNode;
            if (dragger.gldragNode.old) 
                b = dragger.gldragNode.old;
            b.parentNode.removeChild(b);
            var c = dragger.dragNode.pWindow;
            b.pWindow && b.pWindow.dhtmlDragAndDrop.lastLanding && b.pWindow.dhtmlDragAndDrop.lastLanding.dragLanding._dragOut(b.pWindow.dhtmlDragAndDrop.lastLanding);
            if (_isIE) {
                var d = document.createElement("Div");
                d.innerHTML = dragger.dragNode.outerHTML;
                dragger.dragNode = d.childNodes[0]
            }
            else 
                dragger.dragNode = dragger.dragNode.cloneNode(!0);
            dragger.dragNode.pWindow = window;
            dragger.gldragNode.old = dragger.dragNode;
            document.body.appendChild(dragger.dragNode);
            c.dhtmlDragAndDrop.dragNode = dragger.dragNode
        }
        dragger.dragNode.style.left = a.clientX + 15 + (dragger.fx ? dragger.fx * -1 : 0) + (document.body.scrollLeft || document.documentElement.scrollLeft) + "px";
        dragger.dragNode.style.top = a.clientY + 3 + (dragger.fy ? dragger.fy * -1 : 0) +
        (document.body.scrollTop ||
        document.documentElement.scrollTop) +
        "px";
        var e = a.srcElement ? a.srcElement : a.target;
        dragger.checkLanding(e, a)
    }
};
dhtmlDragAndDropObject.prototype.calculateFramePosition = function(a){
    if (window.name) {
        for (var b = parent.frames[window.name].frameElement.offsetParent, c = 0, d = 0; b;) 
            c += b.offsetLeft, d += b.offsetTop, b = b.offsetParent;
        if (parent.dhtmlDragAndDrop) {
            var e = parent.dhtmlDragAndDrop.calculateFramePosition(1);
            c += e.split("_")[0] * 1;
            d += e.split("_")[1] * 1
        }
        if (a) 
            return c + "_" + d;
        else 
            this.fx = c;
        this.fy = d
    }
    return "0_0"
};
dhtmlDragAndDropObject.prototype.checkLanding = function(a, b){
    a && a.dragLanding ? (this.lastLanding && this.lastLanding.dragLanding._dragOut(this.lastLanding), this.lastLanding = a, this.lastLanding = this.lastLanding.dragLanding._dragIn(this.lastLanding, this.dragStartNode, b.clientX, b.clientY, b), this.lastLanding_scr = _isIE ? b.srcElement : b.target) : a && a.tagName != "BODY" ? this.checkLanding(a.parentNode, b) : (this.lastLanding && this.lastLanding.dragLanding._dragOut(this.lastLanding, b.clientX, b.clientY, b), this.lastLanding = 0, this._onNotFound && this._onNotFound())
};
dhtmlDragAndDropObject.prototype.stopDrag = function(a, b){
    dragger = window.dhtmlDragAndDrop;
    if (!b) {
        dragger.stopFrameRoute();
        var c = dragger.lastLanding;
        dragger.lastLanding = null;
        c && c.dragLanding._drag(dragger.dragStartNode, dragger.dragStartObject, c, _isIE ? event.srcElement : a.target)
    }
    dragger.lastLanding = null;
    dragger.dragNode && dragger.dragNode.parentNode == document.body && dragger.dragNode.parentNode.removeChild(dragger.dragNode);
    dragger.dragNode = 0;
    dragger.gldragNode = 0;
    dragger.fx = 0;
    dragger.fy = 0;
    dragger.dragStartNode = 0;
    dragger.dragStartObject = 0;
    document.body.onmouseup = dragger.tempDOMU;
    document.body.onmousemove = dragger.tempDOMM;
    dragger.tempDOMU = null;
    dragger.tempDOMM = null;
    dragger.waitDrag = 0
};
dhtmlDragAndDropObject.prototype.stopFrameRoute = function(a){
    a && window.dhtmlDragAndDrop.stopDrag(1, 1);
    for (var b = 0; b < window.frames.length; b++) 
        try {
            window.frames[b] != a && window.frames[b].dhtmlDragAndDrop && window.frames[b].dhtmlDragAndDrop.stopFrameRoute(window)
        } 
        catch (c) {
        }
    try {
        parent.dhtmlDragAndDrop && parent != window && parent != a && parent.dhtmlDragAndDrop.stopFrameRoute(window)
    } 
    catch (d) {
    }
};
dhtmlDragAndDropObject.prototype.initFrameRoute = function(a, b){
    if (a) 
        window.dhtmlDragAndDrop.preCreateDragCopy(), window.dhtmlDragAndDrop.dragStartNode = a.dhtmlDragAndDrop.dragStartNode, window.dhtmlDragAndDrop.dragStartObject = a.dhtmlDragAndDrop.dragStartObject, window.dhtmlDragAndDrop.dragNode = a.dhtmlDragAndDrop.dragNode, window.dhtmlDragAndDrop.gldragNode = a.dhtmlDragAndDrop.dragNode, window.document.body.onmouseup = window.dhtmlDragAndDrop.stopDrag, window.waitDrag = 0, !_isIE && b && (!_isFF || _FFrv < 1.8) && window.dhtmlDragAndDrop.calculateFramePosition();
    try {
        parent.dhtmlDragAndDrop && parent != window && parent != a && parent.dhtmlDragAndDrop.initFrameRoute(window)
    } 
    catch (c) {
    }
    for (var d = 0; d < window.frames.length; d++) 
        try {
            window.frames[d] != a && window.frames[d].dhtmlDragAndDrop && window.frames[d].dhtmlDragAndDrop.initFrameRoute(window, !a || b ? 1 : 0)
        } 
        catch (e) {
        }
};
_OperaRv = _KHTMLrv = _FFrv = _isChrome = _isMacOS = _isKHTML = _isOpera = _isIE = _isFF = !1;
navigator.userAgent.indexOf("Macintosh") != -1 && (_isMacOS = !0);
navigator.userAgent.toLowerCase().indexOf("chrome") > -1 && (_isChrome = !0);
navigator.userAgent.indexOf("Safari") != -1 || navigator.userAgent.indexOf("Konqueror") != -1 ? (_KHTMLrv = parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("Safari") + 7, 5)), _KHTMLrv > 525 ? (_isFF = !0, _FFrv = 1.9) : _isKHTML = !0) : navigator.userAgent.indexOf("Opera") != -1 ? (_isOpera = !0, _OperaRv = parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("Opera") + 6, 3))) : navigator.appName.indexOf("Microsoft") != -1 ? (_isIE = !0, navigator.appVersion.indexOf("MSIE 8.0") != -1 && document.compatMode != "BackCompat" &&
(_isIE = 8), navigator.appVersion.indexOf("MSIE 9.0") != -1 && document.compatMode != "BackCompat" && (_isIE = 8)) : (_isFF = !0, _FFrv = parseFloat(navigator.userAgent.split("rv:")[1]));
dtmlXMLLoaderObject.prototype.doXPath = function(a, b, c, d){
    if (_isKHTML || !_isIE && !window.XPathResult) 
        return this.doXPathOpera(a, b);
    if (_isIE) 
        return b || (b = this.xmlDoc.nodeName ? this.xmlDoc : this.xmlDoc.responseXML), b || dhtmlxError.throwError("LoadXML", "Incorrect XML", [b || this.xmlDoc, this.mainObject]), c != null && b.setProperty("SelectionNamespaces", "xmlns:xsl='" + c + "'"), d == "single" ? b.selectSingleNode(a) : b.selectNodes(a) || [];
    else {
        var e = b;
        b || (b = this.xmlDoc.nodeName ? this.xmlDoc : this.xmlDoc.responseXML);
        b ||
        dhtmlxError.throwError("LoadXML", "Incorrect XML", [b || this.xmlDoc, this.mainObject]);
        b.nodeName.indexOf("document") != -1 ? e = b : (e = b, b = b.ownerDocument);
        var g = XPathResult.ANY_TYPE;
        if (d == "single") 
            g = XPathResult.FIRST_ORDERED_NODE_TYPE;
        var f = [], h = b.evaluate(a, e, function(){
            return c
        }, g, null);
        if (g == XPathResult.FIRST_ORDERED_NODE_TYPE) 
            return h.singleNodeValue;
        for (var i = h.iterateNext(); i;) 
            f[f.length] = i, i = h.iterateNext();
        return f
    }
};
function j(){
    if (!this.catches) 
        this.catches = [];
    return this
}

j.prototype.catchError = function(a, b){
    this.catches[a] = b
};
j.prototype.throwError = function(a, b, c){
    if (this.catches[a]) 
        return this.catches[a](a, b, c);
    if (this.catches.ALL) 
        return this.catches.ALL(a, b, c);
    alert("Error type: " + a + "\nDescription: " + b);
    return null
};
window.dhtmlxError = new j;
dtmlXMLLoaderObject.prototype.doXPathOpera = function(a, b){
    var c = a.replace(/[\/]+/gi, "/").split("/"), d = null, e = 1;
    if (!c.length) 
        return [];
    if (c[0] == ".") 
        d = [b];
    else 
        if (c[0] == "") 
            d = (this.xmlDoc.responseXML || this.xmlDoc).getElementsByTagName(c[e].replace(/\[[^\]]*\]/g, "")), e++;
        else 
            return [];
    for (; e < c.length; e++) 
        d = this._getAllNamedChilds(d, c[e]);
    c[e - 1].indexOf("[") != -1 && (d = this._filterXPath(d, c[e - 1]));
    return d
};
dtmlXMLLoaderObject.prototype._filterXPath = function(a, b){
    for (var c = [], b = b.replace(/[^\[]*\[\@/g, "").replace(/[\[\]\@]*/g, ""), d = 0; d < a.length; d++) 
        a[d].getAttribute(b) && (c[c.length] = a[d]);
    return c
};
dtmlXMLLoaderObject.prototype._getAllNamedChilds = function(a, b){
    var c = [];
    _isKHTML && (b = b.toUpperCase());
    for (var d = 0; d < a.length; d++) 
        for (var e = 0; e < a[d].childNodes.length; e++) 
            _isKHTML ? a[d].childNodes[e].tagName && a[d].childNodes[e].tagName.toUpperCase() == b && (c[c.length] = a[d].childNodes[e]) : a[d].childNodes[e].tagName == b && (c[c.length] = a[d].childNodes[e]);
    return c
};
function dhtmlXHeir(a, b){
    for (var c in b) 
        typeof b[c] == "function" && (a[c] = b[c]);
    return a
}

function dhtmlxEvent(a, b, c){
    a.addEventListener ? a.addEventListener(b, c, !1) : a.attachEvent && a.attachEvent("on" + b, c)
}

dtmlXMLLoaderObject.prototype.xslDoc = null;
dtmlXMLLoaderObject.prototype.setXSLParamValue = function(a, b, c){
    if (!c) 
        c = this.xslDoc;
    if (c.responseXML) 
        c = c.responseXML;
    var d = this.doXPath("/xsl:stylesheet/xsl:variable[@name='" + a + "']", c, "http://www.w3.org/1999/XSL/Transform", "single");
    if (d != null) 
        d.firstChild.nodeValue = b
};
dtmlXMLLoaderObject.prototype.doXSLTransToObject = function(a, b){
    if (!a) 
        a = this.xslDoc;
    if (a.responseXML) 
        a = a.responseXML;
    if (!b) 
        b = this.xmlDoc;
    if (b.responseXML) 
        b = b.responseXML;
    if (_isIE) {
        d = new ActiveXObject("Msxml2.DOMDocument.3.0");
        try {
            b.transformNodeToObject(a, d)
        } 
        catch (c) {
            d = b.transformNode(a)
        }
    }
    else {
        if (!this.XSLProcessor) 
            this.XSLProcessor = new XSLTProcessor, this.XSLProcessor.importStylesheet(a);
        var d = this.XSLProcessor.transformToDocument(b)
    }
    return d
};
dtmlXMLLoaderObject.prototype.doXSLTransToString = function(a, b){
    var c = this.doXSLTransToObject(a, b);
    return typeof c == "string" ? c : this.doSerialization(c)
};
dtmlXMLLoaderObject.prototype.doSerialization = function(a){
    if (!a) 
        a = this.xmlDoc;
    if (a.responseXML) 
        a = a.responseXML;
    if (_isIE) 
        return a.xml;
    else {
        var b = new XMLSerializer;
        return b.serializeToString(a)
    }
};
dhtmlxEventable = function(a){
    a.attachEvent = function(a, c, d){
        a = "ev_" + a.toLowerCase();
        this[a] || (this[a] = new this.eventCatcher(d || this));
        return a + ":" + this[a].addEvent(c)
    };
    a.callEvent = function(a, c){
        a = "ev_" + a.toLowerCase();
        return this[a] ? this[a].apply(this, c) : !0
    };
    a.checkEvent = function(a){
        return !!this["ev_" + a.toLowerCase()]
    };
    a.eventCatcher = function(a){
        var c = [], d = function(){
            for (var d = !0, g = 0; g < c.length; g++) 
                if (c[g] != null) 
                    var f = c[g].apply(a, arguments), d = d && f;
            return d
        };
        d.addEvent = function(a){
            typeof a != "function" &&
            (a = eval(a));
            return a ? c.push(a) - 1 : !1
        };
        d.removeEvent = function(a){
            c[a] = null
        };
        return d
    };
    a.detachEvent = function(a){
        if (a != !1) {
            var c = a.split(":");
            this[c[0]].removeEvent(c[1])
        }
    };
    a.detachAllEvents = function(){
        for (var a in this) 
            a.indexOf("ev_") == 0 && delete this[a]
    }
};
(function(){
    var a = dhtmlx.message = function(b, c, d, e){
        if (!a.area) 
            a.area = document.createElement("DIV"), a.area.style.cssText = "position:absolute;right:5px;width:250px;z-index:100;", a.area.className = "dhtmlx_message_area", a.area.style[a.defPosition] = "5px", document.body.appendChild(a.area);
        typeof b != "object" && (b = {
            text: b,
            type: c,
            lifetime: d,
            id: e
        });
        b.type = b.type || "info";
        b.id = b.id || a.uid();
        b.lifetime = b.lifetime || a.defTimeout;
        a.hide(b.id);
        var g = document.createElement("DIV");
        g.style.cssText = "border-radius:4px; padding:4px 4px 4px 20px;background-color:#FFFFCC;font-size:12px;font-family:Tahoma;color:navy;z-index: 10000;margin:5px;border:1px solid lightgrey;";
        g.innerHTML = b.text;
        g.className = b.type;
        a.defPosition == "bottom" && a.area.firstChild ? a.area.insertBefore(g, a.area.firstChild) : a.area.appendChild(g);
        a.timers[b.id] = window.setTimeout(function(){
            a.hide(b.id)
        }, b.lifetime);
        a.pull[b.id] = g;
        return b.id
    };
    a.defTimeout = 4E3;
    a.defPosition = "top";
    a.pull = {};
    a.timers = {};
    a.seed = (new Date).valueOf();
    a.uid = function(){
        return a.seed++
    };
    a.hideAll = function(){
        for (var b in a.pull) 
            a.hide(b)
    };
    a.hide = function(b){
        var c = a.pull[b];
        c && c.parentNode &&
        (c.parentNode.removeChild(c), window.clearTimeout(a.timers[b]), delete a.pull[b])
    }
})();

//v.3.0 build 110707
/*

 Copyright DHTMLX LTD. http://www.dhtmlx.com

 You allowed to use this component or parts of it under GPL terms

 To use it on other terms or get Professional edition of the component please contact us at sales@dhtmlx.com

 */

