function InboxFunctions() {
	var self = this;
	var bw=document.getElementById&&!document.all;
	var fobj;
	var urlname;
	var also;
	var norandom;
	var divid;
	var imageobject;
	var opacity;
	var oElm;
	var strTagName;
	var strAttributeName;
	var strAttributeValue;
	var filename;
	var filetype;
	var oldfilename;
	var newfilename;
	var narr;
	var inclusive;
	var param;
	var enc;
	var async;
	var cpuUsage = 0;
	this.loginConfirmation = false;
	this.lastreq = 0;
	this.menuopen = new Array();
	this.pressedkeys = new Array();
	this.pressedkeys['shift'] = false;
	this.pressedkeys['ctrl'] = false;
	this.pressedkeys['alt'] = false;
	this.site = document.domain;
	this.cyrillicWords = new Array();
	this.cyrillicWords['a'] = 'а';
	this.cyrillicWords['b'] = 'б';
	this.cyrillicWords['c'] = 'ц';
	this.cyrillicWords['d'] = 'д';
	this.cyrillicWords['e'] = 'е';
	this.cyrillicWords['f'] = 'ф';
	this.cyrillicWords['g'] = 'г';
	this.cyrillicWords['h'] = 'х';
	this.cyrillicWords['i'] = 'и';
	this.cyrillicWords['j'] = 'й';
	this.cyrillicWords['k'] = 'к';
	this.cyrillicWords['l'] = 'л';
	this.cyrillicWords['m'] = 'м';
	this.cyrillicWords['n'] = 'н';
	this.cyrillicWords['o'] = 'о';
	this.cyrillicWords['p'] = 'п';
	this.cyrillicWords['q'] = 'я';
	this.cyrillicWords['r'] = 'р';
	this.cyrillicWords['s'] = 'с';
	this.cyrillicWords['t'] = 'т';
	this.cyrillicWords['u'] = 'u';
	this.cyrillicWords['v'] = 'ж';
	this.cyrillicWords['w'] = 'в';
	this.cyrillicWords['x'] = 'ь';
	this.cyrillicWords['y'] = 'ъ';
	this.cyrillicWords['z'] = 'з';
	this.cyrillicWord = function(param,attr) {
		if (self.cyrillicWords[param] == attr) { return true; }
		return false; 
	}
	this.evalInFrame = function(fobj,param) {
		var f = document.frames ? document.frames[fobj.getAttribute('name')] : document.getElementById(fobj.getAttribute('id'));
		var p = f.document || f.contentWindow.document;
		return eval("p."+param);
	}
	this.getUrlParam = function(param) {
		param = param.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
		var regexS = "[\\?&]"+param+"=([^&#]*)";
		var regex = new RegExp( regexS );
		var results = regex.exec( window.location.href );
		if(results == null) {  return ""; }
		else {
			return results[1];
		}
	}
	this.EpochToHuman = function(param) {
		return date('d.m.Y H:i:s',param);
	}

	this.insertAtCursor = function(fobj, param) {
		//IE support
		if (document.selection) {
			fobj.focus();
			sel = document.selection.createRange();
			sel.text = param;
		}
		//MOZILLA/NETSCAPE support
		else if (fobj.selectionStart || fobj.selectionStart == '0') {
			var startPos = fobj.selectionStart;
			var endPos = fobj.selectionEnd;
			fobj.value = fobj.value.substring(0, startPos) + param + fobj.value.substring(endPos, fobj.value.length);
		}
		else {
			fobj.value += param;
		}
	}
	this.screenSize = function() {
		var myWidth = 0, myHeight = 0;
		if( typeof( window.innerWidth ) == 'number' ) {
			myWidth = window.innerWidth;
			myHeight = window.innerHeight;
		}
		else if(document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight )) {
			myWidth = document.documentElement.clientWidth;
			myHeight = document.documentElement.clientHeight;
		}
		else if(document.body && ( document.body.clientWidth || document.body.clientHeight )) {
			myWidth = document.body.clientWidth;
			myHeight = document.body.clientHeight;
		}
		return [Number(myWidth),Number(myHeight)];
	}
	this.getStyle = function(divid,param) {
		var x = document.getElementById(divid);
		if (x.currentStyle) {
			var y = x.currentStyle[param];
		}
		else if (window.getComputedStyle) {
			var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(param);
		}
		return y;
	}
	this.cleararray = function(narr) {
		var rarr = new Array();
		if (narr) {
			for (i = 0; i<narr.length;i++) {
				if (narr[i] && narr[i] != undefined) {
					rarr[rarr.length] = narr[i];
				}
			}
			return rarr;
		}
		else {
			return false;
		}
	}
	this.getunixtime = function() {
		var foo = new Date; // Generic JS date object
		var unixtime_ms = foo.getTime(); // Returns milliseconds since the epoch
		var unixtime = parseInt(unixtime_ms / 1000);
		return Number(unixtime);
	}
	this.updatelastreq = function() {
		self.lastreq = self.getunixtime();
	}
	this.mOverTime = false;
	this.mouseOver = function(e) {
		events.detachEvent('mousemove','tplf.mouseOver(e)');
		if ((self.getunixtime() - self.mOverTime) > 120) { setTimeout('tplf.keepsession(true)',500); }
		self.mOverTime = self.getunixtime();
		setTimeout('tplf.attachMover('+self.mOverTime+')',60000);
	}
	this.attachMover = function(utime) {
		if (typeof(events) != 'object') { return false; }
		if (!utime) { utime = self.getunixtime(); }
		self.mOverTime = utime;
		events.attachEvent('mousemove','tplf.mouseOver(e)');
		return true;
	}
	this.keepsession = function(inclusive) {
		var utime = self.getunixtime();
		if (!self.mOverTime && typeof(events) == 'object') {
			self.attachMover(utime);
		}
		if (inclusive || ((utime - 10) > self.lastreq && (utime - self.mOverTime) < 120)) {
			if (document.getElementById('files') && typeof(fsxml) == 'object' && typeof(vfs) == 'object') {
				var obj = fsxml.findNode(vfs.getWinPath('files'));
				if (typeof(obj) == 'object' && obj.getAttribute('virtualTour') && typeof(eval(obj.getAttribute('virtualTour')+'.refresh')) == 'function') {
					eval(obj.getAttribute('virtualTour')+'.refresh("'+vfs.getWinPath('files')+'","files")');
				}
				else {
					if (typeof(obj) == 'object') { fsxml.updatefs(document.getElementById('files').getAttribute('oname')); }
				}
			}
		}
		else if ((utime - self.lastreq) > 600 && !inclusive) { makeRequest('/interface/modules/background/keepsession.php','GET','',true); }
		if (!inclusive) { setTimeout('tplf.keepsession()','20000'); }
	}
	this.normalizename = function(newname,param) {
		while (substr(newname,0,1) == '.') {
			newname = substr(newname,1,strlen(newname));
		}
		var normalfile = '';
		if (newname) {
			var bannedchars = "\"'!@#$%^&*(){}><,`~";
			if (!param) {
				bannedchars += "/";
			}
			for (i=0;i<strlen(newname);i++) {
				if (strstr(bannedchars,substr(newname,i,1))) {
					normalfile += '_';
				}
				else { normalfile += substr(newname,i,1); }
			}
			return normalfile;
		}
		else { return false; }

	}
	this.writeindiv = function(divid,urlname,also,norandom) {
		if (!norandom) {
			if (strpos(urlname,'?') > 0) {
				urlname+='&rand='+Math.random();
			}
			else {
				urlname+='?rand='+Math.random();
			}
		}
		var xmlhttp=CreateHttpRequestObject('text/plain');
		var url = urlname;
		xmlhttp.onreadystatechange=function() {
			if (xmlhttp.readyState==4) {
				var content = xmlhttp.responseText;
				if(content) {
					if (typeof(iLang) == 'object') { content = iLang.translateTemplate(content); }
					if (also == 'also') {
						if (typeof(divid) == 'object') {
							divid.innerHTML += content;
						}
						else {
							document.getElementById(divid).innerHTML += content;
						}
					}
					else {
						if (typeof(divid) == 'object') {
							divid.innerHTML = content;
						}
						else {
							document.getElementById(divid).innerHTML = content;
						}
					}
				}
			}
		}
		xmlhttp.open('GET', url, true);
		xmlhttp.send(null);
	}
	this.getHtmlError = false;
	this.getHtmlTemplate = false;
	this.getHtml = function(urlname,norandom,param) {
		self.getHtmlError = false;
		if (!norandom) {
			if (strpos(urlname,'?') > 0) {
				urlname+='&rand='+Math.random();
			}
			else {
				urlname+='?rand='+Math.random();
			}
		}
		var xmlhttp=CreateHttpRequestObject('text/plain');
		xmlhttp.onreadystatechange=function() {
			if (xmlhttp.readyState==4) {
				try {
					var content = xmlhttp.responseText;
					self.getHtmlTemplate = content;
					eval(param);
				}
				catch(e) {
					self.getHtmlError = e;
					self.getHtmlTemplate = false;
					eval(param);
				}
			}
		}
		xmlhttp.open('GET', urlname, true);
		xmlhttp.send(null);
	}
	this.openedFrames = new Array();
	this.loadFileContent = function(filename,param,enc) {
		if (!enc) { enc = 'windows-1251'; }
		self.openedFrames[self.openedFrames.length] = param;
		var url = 'interface/modules/files/openDocInFrame.php?encoding='+enc+'&frameId='+(self.openedFrames.length - 1)+'&rand='+Math.random()+'&filename='+filename;
		var elm = document.createElement('IFRAME');
		elm.setAttribute('id','hiddenFrame'+(self.openedFrames.length - 1));
		elm.style.display = 'none';
		document.getElementById('popupwindows').appendChild(elm);
		elm.src = url;
	}
	this.getFileContent = function(param,attr) {
		if (document.getElementById('hiddenFrame'+param)) { document.getElementById('hiddenFrame'+param).parentNode.removeChild(document.getElementById('hiddenFrame'+param)); }
		self.getHtmlTemplate = attr;
		if (self.openedFrames[param]) {
			eval(self.openedFrames[param]);
			self.openedFrames[param] = undefined;
		}
	}
	this.nullrequest = function(urlname) {
		if (strpos(urlname,'?') > 0) {
			urlname+='&rand='+Math.random();
		}
		else {
			urlname+='?rand='+Math.random();
		}
		var xmlhttp=CreateHttpRequestObject();
		var url = urlname;
		xmlhttp.open('GET', url, true);
		xmlhttp.send(null);
	}
	this.fillindiv = function(divid,urlname){
		document.getElementById(divid).innerHTML = "" ;
		document.getElementById(divid).innerHTML = urlname;
	}
	this.appendHtml = function(div,tpl) {
		if (navigator.appName == 'Opera') { document.getElementById(div).innerHTML += tpl; }
		else {
			document.getElementById('popuptemp').innerHTML = tpl;
			for (i = 0;i<document.getElementById('popuptemp').childNodes.length;i++) {
				if (document.getElementById('popuptemp').childNodes[i].tagName != undefined) {
					var cl = document.getElementById('popuptemp').childNodes[i];
					document.getElementById(div).appendChild(cl);
				}
			}
		}
	}
	this.mouseX = function(e) {
		if (e.pageX) return e.pageX;
		else if (e.clientX)
		return e.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
		else return null;
	}
	this.mouseY = function(e) {
		if (e.pageY) return e.pageY;
		else if (e.clientY)
		return e.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
		else return null;
	}
	this.gotoindex = function() {
		window.location.href=window.location.href;
	}
	this.findPos = function(fobj) {
		if (typeof(fobj) != 'object') { return [0,0]; }
		var curleft = curtop = 0;
		if (fobj.offsetParent) {
			curleft = fobj.offsetLeft
			curtop = fobj.offsetTop
			while (fobj = fobj.offsetParent) {
				curleft += fobj.offsetLeft
				curtop += fobj.offsetTop
			}
		}
		return [curleft,curtop];
	}
	this.findPosX = function(fobj) {
		if (typeof(fobj) != 'object') { return 0; }
		if (navigator.appName == 'Microsoft Internet Explorer' || navigator.appName == 'Opera' || navigator.appName == 'Netscape') {
			return fobj.offsetLeft;
		}
		if (navigator.userAgent.indexOf('Chrome') > -1) {
			return fobj.offsetLeft;
		}
		var curleft = 0;
		if(fobj.offsetParent)
		while(1) {
			curleft += fobj.offsetLeft;
			if(!fobj.offsetParent)
			break;
			fobj = fobj.offsetParent;
		}
		else if(fobj.x)
		curleft += fobj.x;
		return curleft;
	}
	this.findPosY = function(fobj) {
		if (typeof(fobj) != 'object') { return 0; }
		if (navigator.appName == 'Microsoft Internet Explorer' || navigator.appName == 'Opera' || navigator.appName == 'Netscape') {
			return fobj.offsetTop;
		}
		if (navigator.userAgent.indexOf('Chrome') > -1) {
			return fobj.offsetTop;
		}
		var curtop = 0;
		if(fobj.offsetParent)
		while(1) {
			  curtop += fobj.offsetTop;
			  if(!fobj.offsetParent)
			  break;
			  fobj = fobj.offsetParent;
		}
		else if(fobj.y)
		curtop += fobj.y;
		return curtop;
	}
	this.evalAsync = function(param,async) {
		setTimeout(param,async)
	}
	this.changeopacity = function(imageobject, opacity) {
		if (imageobject) {
			if (navigator.appName.indexOf("Netscape")!=-1&&parseInt(navigator.appVersion)>=5) {
				imageobject.style.MozOpacity=opacity/100;
			}
			else if (navigator.appName.indexOf("Microsoft")!=-1&&parseInt(navigator.appVersion)>=4) {
				if (opacity < 100) {
					imageobject.style.filter = 'alpha(opacity='+opacity+')';
				}
				else {
					imageobject.style.filter = '';
				}
			}
			imageobject.style.opacity = opacity/100;
		}
	}
	this.createjscssfile = function(filename, filetype) {
		if (filetype=="js"){ //if filename is a external JavaScript file
			var fileref=document.createElement('script');
			fileref.setAttribute("type","text/javascript");
			fileref.setAttribute("src", filename);
		}
		else if (filetype=="css"){ //if filename is an external CSS file
			var fileref=document.createElement("link");
			fileref.setAttribute("rel", "stylesheet");
			fileref.setAttribute("type", "text/css");
			fileref.setAttribute("href", filename);
		}
		document.getElementsByTagName('head')[0].appendChild(fileref);
	}

	this.replacejscssfile = function(oldfilename, newfilename, filetype) {
		var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none" //determine element type to create nodelist using
		var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none" //determine corresponding attribute to test for
		var allsuspects=document.getElementsByTagName(targetelement)
		for (var i=allsuspects.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove
			if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(oldfilename)!=-1){
				var newelement=createjscssfile(newfilename, filetype)
				allsuspects[i].parentNode.replaceChild(newelement, allsuspects[i])
			}
		}
	}
	this.removejscssfile = function(filename, filetype) {
		var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none" //determine element type to create nodelist from
		var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none" //determine corresponding attribute to test for
		var allsuspects=document.getElementsByTagName(targetelement)
		for (var i=allsuspects.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove
			if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1) {
				allsuspects[i].parentNode.removeChild(allsuspects[i]) //remove element by calling parentNode.removeChild()
			}
		}
	}
	this.getphpsessid = function() {
		return self.getCookie('PHPSESSID');
	}
	this.getCookie = function(param) {
		var start = document.cookie.indexOf( param + "=" );
		var len = start + param.length + 1;
		if (!start && param != document.cookie.substring(0,param.length)) { return null; }
		if (start == -1) { return null; }
		var end = document.cookie.indexOf(";",len);
		if (end == -1) { end = document.cookie.length; }
		var str = document.cookie.substring(len,end);
		if (str) { str = str_replace('+','%20',str); return unescape(str); }
		return null;
	}
	this.getElementsByAttribute = function(oElm, strTagName, strAttributeName, strAttributeValue){
		if (oElm) {
			var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
			var arrReturnElements = new Array();
			var oAttributeValue = (typeof strAttributeValue != "undefined")? strAttributeValue : null;
			var oCurrent;
			var oAttribute;
			for(var i=0; i<arrElements.length; i++){
				oCurrent = arrElements[i];
				oAttribute = oCurrent.getAttribute && oCurrent.getAttribute(strAttributeName);
				if(typeof oAttribute == "string" && oAttribute.length > 0){
					if(typeof strAttributeValue == "undefined" || oAttributeValue == oAttribute){
						arrReturnElements.push(oCurrent);
					}
				}
			}
			return arrReturnElements;
		}
	}
	this.dirname = function(filename) {
		if (filename =='/') { return '/'; }
		if (substr(filename,-1) == '/') {
			filename = substr(filename,0,strlen(filename) - 1);
		}
		var ar = explode('/',filename);
		if (ar.length == 1) { return '/'; }
		else {
			var f = end(ar);
			fn = substr(filename,0,strlen(filename) - strlen(f));
			if (substr(fn,-1) == '/' && fn != '/') {
				fn = substr(fn,0,strlen(fn) - 1);
			}
			return fn;
		}
	}
	this.basename = function(filename) {
		if (filename =='/') { return '/'; }
		if (substr(filename,-1) == '/') {
			filename = substr(filename,0,strlen(filename) - 1);
		}
		var ar = explode('/',filename);
		if (ar.length == 1) { return '/'; }
		else {
			return ar[ar.length - 1];
		}
	}
	this.mathsize = function(param) {
		var s = 1024;
		var xy = 1;
		var tempsize = param;
		xy = Number(xy);
		tempsize = Number(tempsize);
		while (s < param) {
			s = s*1024;
			xy++;
			tempsize = (tempsize/1024);
		}
		var arr = new Array();
		if (typeof(iLang) == 'object') {
			arr[1] = iLang.getTranslation('sizeTypes','bytes');
			arr[2] = iLang.getTranslation('sizeTypes','kbytes');
			arr[3] = iLang.getTranslation('sizeTypes','mbytes');
			arr[4] = iLang.getTranslation('sizeTypes','gbytes');
		}
		else {
			arr[1] = 'B';
			arr[2] = 'KB';
			arr[3] = 'MB';
			arr[4] = 'GB';
		}
		tempsize = tempsize.toString();
		if (strpos(tempsize,'.') > -1) {
			tempsize = substr(tempsize,0,strpos(tempsize,'.') + 3);
		}
		param = tempsize+' '+arr[xy];
		return param;
	}
	this.getExtension = function(param) {
		if (param) {
			var extlen = strrpos(param,'.');
			if (extlen == false) {
				return false;
			}
			else {
				var extension = substr(param,extlen);
				if (extension) { extension = strtolower(extension); return extension; }
				else { return false; }
			}
		}
		else { return false; }
	}
	var objElement;
	var strClass;
	var binMayAlredyExists;
	this.HasClassName = function(objElement, strClass) {
		if ( objElement.className ) {
			var arrList = objElement.className.split(' ');
			var strClassUpper = strClass.toUpperCase();
			for ( var i = 0; i < arrList.length; i++ ) {
				if ( arrList[i].toUpperCase() == strClassUpper ) {
					return true;
				}
			}
		}
		return false;
	}
	this.addClassName = function(objElement, strClass, blnMayAlreadyExist) {
		if ( objElement.className ) {
			var arrList = objElement.className.split(' ');
			if ( blnMayAlreadyExist ) {
				var strClassUpper = strClass.toUpperCase();
				for ( var i = 0; i < arrList.length; i++ ) {
					if ( arrList[i].toUpperCase() == strClassUpper ) {
						arrList.splice(i, 1);
						i--;
					}
				}
			}
			arrList[arrList.length] = strClass;
			objElement.className = arrList.join(' ');
		}
		else {
			objElement.className = strClass;
		}
	}
	this.removeClassName = function(objElement, strClass) {
		if ( objElement.className ) {
			var arrList = objElement.className.split(' ');
			var strClassUpper = strClass.toUpperCase();
			for ( var i = 0; i < arrList.length; i++ ) {
				if ( arrList[i].toUpperCase() == strClassUpper ) {
					arrList.splice(i, 1);
					i--;
				}
			}
			objElement.className = arrList.join(' ');
		}
	}
	this.getUnixTimeFromString = function(param) {
		if (!param) { return false; }
		if (param.indexOf('-') == -1) { return false; }
		if (param.indexOf(' ') == -1) { return false; }
		if (param.indexOf(':') == -1) { return false; }
		var pArr = param.split(' ');
		var d = pArr[0];
		var h = pArr[1];
		d = d.split('-');
		h = h.split(':');
		if (d.length != 3 || h.length != 3) { return false; }
		var utime = mktime(h[0],h[1],h[2],d[1],d[2],d[0]);
		return Number(utime);
	}
	this.pluginCheck = function(param) {
		if (!param) { return false; }
		if (!navigator.plugins.length) { return false; }
		param = param.toLowerCase();
		for (i=0;i<navigator.plugins.length;i++) {
			var plname = navigator.plugins[i].name.toLowerCase();
			if (plname.indexOf(param) != -1 || plname == param) { return plname; break; }
		}
		return false;
	}
	this.login = function() {
		if (!self.loginConfirmation || !document.getElementById(self.loginConfirmation)) {
			if (syswins) {
				self.loginConfirmation = true;
				self.loginConfirmation = syswins.alertWin('tplf.loginConfirm',iLang.getTranslation('sys','loginConfirmation'));
			}
			else { self.gotoindex(); }
		}
	}
	this.loginConfirm = function() {
		self.loginConfirmation = false;
		self.gotoindex();
	}
	this.searchInArray = function(narr,param) {
		if (!narr || !param) { return false; }
		if (!narr.length) { return false }
		for (var a=0;a<narr.length;a++) {
			if (narr[a] == param) {
				return Number(a);
			}
		}
		return false;
	}
	this.evalArray = function(param) {
		if (param.length) {
			var err = false;
			for( var i =0; i < param.length; i++) {
				try {
					eval(param[i]);
				}
				catch(e) {
					var err = true;
					param[i] = undefined;
				}
			}
			if (err) {
				return self.cleararray(param);
			}
			return param;
		}
		return param;
	}
	this.checkCpu = function(usage){
		var d = new Date().getTime();
		if (usage) {
			var l = 1;
			usage = (d-usage);
			if (usage > 350) { l++; }
			if (usage > 450) { l++; }
			if (usage > 500) { l++; }
			if (usage > 600) { l++; }
			document.getElementById('cpuUsage').className='cpu'+l;
			if (usage > 550) { var perc = (l*20); }
			else { var perc = 0; }
			document.getElementById('cpuUsage').setAttribute('title',iLang.getTranslation('mainHtml','cpuUsage')+perc+'%');
		}
		setTimeout(function() { tplf.checkCpu(d); },300);
	}
	this.cloneVar = function(obj) {
		if (typeof(obj) == 'object') {
			if (typeof(obj.length) == 'number') {
				var tmp = new Array();
				for (var i=0;i<obj.length;i++) { tmp.push((typeof(tmp) == 'object')?self.cloneVar(obj[i]):obj[i]); }
				return tmp;
			}
			else {
				var tmp = new Object();
				for (var i in obj) { tmp[i] = (typeof(tmp) == 'object')?self.cloneVar(obj[i]):obj[i]; }
				return tmp;
			}
		}
		return obj;
	}
}
var v;
function isset(v) { return(typeof(v)!='undefined'); }
var tplf = new InboxFunctions();
function CreateHttpRequestObject(param) {
	if (!param) { param = 'text/xml'; }
	var http_request=false;
	if (window.XMLHttpRequest) {
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) { http_request.overrideMimeType(param); }
	}
	else if (window.ActiveXObject) {
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) {}
		}
	}
	return http_request;
}

