	var firefox = (document.all)? false:true;

	function getMousePos(e) {
		if(!e)e=event;
		var x = e.clientX + document.body.scrollLeft;
		var y = e.clientY + document.body.scrollTop;

		return new function() {
			this.x = x;
			this.y = y;
		}
	}

	function getObjPos(obj) {
		var posLeft = 0;
		var posTop = 0;

		if(obj.offsetParent) {
			posLeft = obj.offsetLeft;
			posTop = obj.offsetTop;
			while(obj = obj.offsetParent) {
				posLeft += obj.offsetLeft;
				posTop += obj.offsetTop;
			}
		}

		return new function() {
			this.x = posLeft;
			this.y = posTop;
		}
	}

	function getObjScrollHeight(obj) {
		return parseInt(obj.scrollHeight);
	}

	function getObjHeight(obj) {
		if(obj.style.height == "") {
			if(obj.height == "" || obj.height == undefined || obj.height.indexOf('%') != -1)
				return getObjScrollHeight(obj);
			return parseInt(obj.height);
		}
		return parseInt(obj.style.height);
	}

	function getObjScrollWidth(obj) {
		return parseInt(obj.scrollWidth);
	}

	function getObjWidth(obj) {
		if(obj.style.width == "") {
			if(obj.width == "" || obj.width == undefined || obj.width.indexOf('%') != -1)
				return getObjScrollWidth(obj);
			return parseInt(obj.width);
		}
		return parseInt(obj.style.width);
	}

	function setOpacity(obj, opacity) {
		obj.style.opacity=(opacity/100);
		obj.style.MozOpacity=(opacity/100);
		obj.style.KhtmlOpacity=(opacity/100);
		obj.style.filter="alpha(opacity="+opacity+")";
	}

	function getOpacity(obj) {
		if(obj.style.opacity)
			return obj.style.opacity*100;
		if(obj.style.MozOpacity)
			return obj.style.MozOpacity*100;
		if(obj.style.KhtmlOpacity)
			return obj.style.KhtmlOpacity*100;
		if(obj.style.filters&&obj.filters.length!=0)
			return obj.style.filters[0].opacity;
		return 100;
	}

	function getParentNode(element, level) {
		var i;
		for(i=0; i<level; i++)
			element = element.parentNode;
		return element;
	}

	function getChildNode(element, level) {
		var i;
		for(i=0; i<level; i++)
			element = element.firstChild;
		return element;
	}

	function showDialog(url, width, height, name) {
		if(name == undefined)
			name = "";
		if(window.showModalDialog) {
			window.showModalDialog(url, name, "dialogWidth:"+width+"px;dialogHeight:"+height+"px");
		} else {
			window.open(url, name, "width="+width+", height="+height+", left="+(document.body.clientWidth-width)/2+", top="+(document.body.clientHeight+200-height)/2+", toolbar=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, modal=yes");
		}
	}

	function preloadImages(file_path, image_arr, images_path) {
		if(document.images) {
			var preload_image_object = new Array();

			var i;
			for(i=0;i<image_arr.length;i++) {
				preload_image_object[i] = new Image();
				if(images_path == undefined)
					preload_image_object[i].src = file_path + "images/" + image_arr[i];
				else preload_image_object[i].src = file_path + images_path + image_arr[i];
			}
		}
	}

	function is_numeric(number) {
		var i=0;
		for(i=0;i<number.length;i++)
			if(number.substring(i,i+1)<'0'||number.substring(i,i+1)>'9')
				return false;
			return true;
	}

	function makeHttpRequest(url, callback_function, return_xml, method, parameter, async, callback_value) {
		var http_request = false;
		var now = new Date();

		if(method == undefined)
			method = "GET";
		if(parameter == undefined)
			parameter = null;
		if(async == undefined)
			async = true;
		if(callback_value == undefined || callback_value == null)
			callback_value = "";
		else callback_value = ", " + callback_value;

		if(method == "GET" && parameter != null) {
			if(url.indexOf("?") < 0)
				url += "?" + parameter;
			else url += "&" + parameter;
			parameter = null;
		}

		var type = "&ajax_type=html";
		if(return_xml)
			type = "&ajax_type=xml";

		if(url.indexOf("?") < 0)
			url += "?time=" + now.getTime() + type;
		else url += "&time=" + now.getTime() + type;

		if(window.XMLHttpRequest) {
			http_request = new XMLHttpRequest();
			if(http_request.overrideMimeType)
				http_request.overrideMimeType('text/xml [15]');
		} else if(window.ActiveXObject) {
			try{
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			}catch (e){try{
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}catch (e){}}
		}

		if(async) {
			http_request.onreadystatechange=function() {
				if(http_request.readyState==4)
					if(http_request.status==200) {
						try{
							if(return_xml)
								eval(callback_function + "(http_request.responseXML" + callback_value + ")");
							else eval(callback_function + "(http_request.responseText" + callback_value + ")");
						}catch (e){}
					}
			}
		}

		http_request.open(method, url, async);
		if(method == "POST") {
			http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			//http_request.setRequestHeader("Content-length", parameters.length);
			//http_request.setRequestHeader("Connection", "close");
		}
		http_request.send(parameter);

		if(!async) {
			try{
				if(return_xml)
					eval(callback_function+"(http_request.responseXML"+callback_value+")");
				else eval(callback_function+"(http_request.responseText"+callback_value+")");
			}catch (e){}
		}
	}

	function addEvent(obj, event, code) {
		var oldEvent = null;
		eval("oldEvent = obj." + event + ";");
		if(oldEvent == null) {
			eval("obj." + event + " = function(){" + code + "};");
		} else {
			var strEvent = oldEvent.toString();
			strEvent = strEvent.substring(strEvent.indexOf('{') + 1, strEvent.lastIndexOf('}'));

			eval("obj." + event + " = function(){" + strEvent + code + "};");
		}
	}

	function showMessage(obj, name, message) {
		document.getElementById(obj+"_message").firstChild.innerHTML = message;
		document.getElementById(obj+"_"+name).parentNode.insertBefore(document.getElementById(obj+"_message"),document.getElementById(obj+"_"+name).nextSibling);

		eval("document."+obj+"_form."+name+".focus();");
	}

	function getParameterFromForm(formId) {
		var formObj = document.getElementById(formId);

		var i;
		var parameter = "";

		var inputObj = formObj.getElementsByTagName("input");
		for(i=0; i<inputObj.length; i++) {
			if(inputObj[i].name.length != 0) {
				if(inputObj[i].type == "text" || inputObj[i].type == "hidden")
					parameter += "&" + inputObj[i].name + "=" + escape(inputObj[i].value);
				if(inputObj[i].type == "radio" && inputObj[i].checked)
					parameter += "&" + inputObj[i].name + "=" + escape(inputObj[i].value);
				if(inputObj[i].type == "checkbox")
					if(inputObj[i].checked)
						parameter += "&" + inputObj[i].name + "=" + escape(inputObj[i].value);
					else parameter += "&" + inputObj[i].name + "=";
			}
		}

		var selectObj = formObj.getElementsByTagName("select");
		for(i=0; i<selectObj.length; i++) {
			parameter += "&" + selectObj[i].name + "=" + escape(selectObj[i].value);
		}

		var textareaObj = formObj.getElementsByTagName("textarea");
		for(i=0; i<textareaObj.length; i++) {
			parameter += "&" + textareaObj[i].name + "=" + escape(textareaObj[i].value);
		}

		return parameter.substring(1);
	}