if (typeof(PDEvent) == 'undefined' || PDEvent == null) {
	var PDEvent = {
		fni : 1,
		evt : {},
		add: function(obj,type,fn) {
			if (obj.attachEvent) {
				var fns = Number(PDEvent.fni++).toString();
				PDEvent.evt['e'+type+fns] = fn;
				PDEvent.evt[type+fns] = function() { PDEvent.evt['e'+type+fns](); }
				obj.attachEvent('on'+type, PDEvent.evt[type+fns]);
			} else
			obj.addEventListener(type,fn,false);
		},
		remove: function(obj,type,fn) {
			if (obj.detachEvent) {
				obj.detachEvent('on'+type,obj[type+fn]);
				obj[type+fn] = null;
			} else
			obj.removeEventListener(type,fn,false);
		}
	};
}

function file_get_contents( url ) {
    var tmp, headers = [], newTmp = [], k=0, i=0;
    var func = function (value) { return value.substring(1) !== ''; };
    var req = this.window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
    if (!req) {throw new Error('XMLHttpRequest not supported');}
 
    /*if (!/^http/.test(url)) {
        url = this.window.location.href + '/' +url;
    }*/
    
    req.open("GET", url, false);
    req.send(null);
 
    tmp = req.getAllResponseHeaders();
    tmp = tmp.split('\n');
    for (k=0; k < tmp.length; k++) {
        if (func(tmp[k])) {
            newTmp.push(tmp[k]);
        }
    }
    tmp = newTmp;
    for (i=0; i < tmp.length; i++) {
        headers[i] = tmp[i];
    }
    this.$http_response_header = headers; // see http://php.net/manual/en/reserved.variables.httpresponseheader.php
    
    return req.responseText;
}

function require( filename ) {
    var js_code = this.file_get_contents(filename);
    var script_block = document.createElementNS ? document.createElementNS('http://www.w3.org/1999/xhtml', 'script') : document.createElement('script');
    script_block.type = 'text/javascript';
    var client_pc = navigator.userAgent.toLowerCase();
    if((client_pc.indexOf("msie") != -1) && (client_pc.indexOf("opera") == -1)) {
        script_block.text = js_code;
    } else {
        script_block.appendChild(document.createTextNode(js_code));
    }
    
    if (typeof(script_block) != "undefined") {
        /*document.getElementsByTagNameNS ? document.getElementsByTagNameNS('http://www.w3.org/1999/xhtml', 'head')[0].appendChild(script_block) : */
				document.getElementsByTagName('head')[0].appendChild(script_block);
 
        // save include state for reference by include_once and require_once()
        var cur_file = {};
        cur_file[this.window.location.href] = 1;
 
        if (!this.php_js) {
            this.php_js = {};
        }
        if (!this.php_js.includes) {
            this.php_js.includes = cur_file;
        }
 
        if (!this.php_js.includes[filename]) {
            this.php_js.includes[filename] = 1;
            return 1;
        } else {
            return ++this.php_js.includes[filename];
        }
    }
    return 0;
}

function require_once(filename) {
    var cur_file = {};
    cur_file[this.window.location.href] = 1;
 
    // save include state for reference by include_once and require_once()
    if (!this.php_js) {
      this.php_js = {};
  }
    if (!this.php_js.includes) {
      this.php_js.includes = cur_file;
  }
    if (!this.php_js.includes[filename]) {
        if (this.require(filename)) {
            return true;
        }
    } else {
        return true;
    }
    return false;
}

