	// <![CDATA[
	
		var box;
		var deltaX, deltaY;
		var client;
		createClient();
		
		function windowLoaded(evt) {
			// prevent IE text selection while dragging!!! Little-known trick!
			document.body.ondrag = function () { return false; };
			document.body.onselectstart = function () { return false; };
		}
		
		function createClient() {
			try {
				client = window.XMLHttpRequest ? new XMLHttpRequest() : 
									new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) { 
				alert("Sorry, your browser is not AJAX-enabled!"); 
			}
		}
		
		function setOpacity(node,val) {
			if (node.filters) {
				try {
					node.filters["alpha"].opacity = val*100;
				} catch (e) { }
			} else if (node.style.opacity) {
				node.style.opacity = val;
			}
		}
		
		function getX(node) {
			return parseInt(node.style.left);
		}
		
		function getY(node) {
			return parseInt(node.style.top);
		}
	
		function getWidth(node) {
			return parseInt(node.style.width);
		}
		
		function getHeight(node) {
			return parseInt(node.style.height);
		}
	
		function setX(node,x) {
			node.style.left = x + "px";
		}
	
		function setY(node,y) {
			node.style.top = y + "px";
		}
	
		function Evt(evt) {
			this.evt = evt ? evt : window.event; 
			this.source = evt.target ? evt.target : evt.srcElement;
			this.x = evt.pageX ? evt.pageX : evt.clientX;
			this.y = evt.pageY ? evt.pageY : evt.clientY;
		}
		
		Evt.prototype.toString = function () {
			return "Evt [ x = " + this.x + ", y = " + this.y + " ]";
		};
		
		Evt.prototype.consume = function () {
			if (this.evt.stopPropagation) {
				this.evt.stopPropagation();
				this.evt.preventDefault();
			} else if (this.evt.cancelBubble) {
				this.evt.cancelBubble = true;
				this.evt.returnValue  = false;
			}
		};
		
		Evt.addEventListener = function (target,type,func,bubbles) {
			if (document.addEventListener) {
				target.addEventListener(type,func,bubbles);
			} else if (document.attachEvent) {
				target.attachEvent("on"+type,func,bubbles);
			} else {
				target["on"+type] = func;
			}
		};
	
		Evt.removeEventListener = function (target,type,func,bubbles) {
			if (document.removeEventListener) {
				target.removeEventListener(type,func,bubbles);
			} else if (document.detachEvent) {
				target.detachEvent("on"+type,func,bubbles);
			} else {
				target["on"+type] = null;
			}
		};
	
		function dragPress(evt) {
			evt = new Evt(evt);
			box = evt.source;
			
			setOpacity(box,.7);
			deltaX = evt.x - getX(box);
			deltaY = evt.y - getY(box);
			Evt.addEventListener(document,"mousemove",dragMove,false);
			Evt.addEventListener(document,"mouseup",dragRelease,false);
			
		}
		
		function dragMove(evt) {
			evt = new Evt(evt);
			if(!isNaN(deltaX) && !isNaN(deltaY))
			{
				setX(box,evt.x - deltaX);
				setY(box,evt.y - deltaY);
				evt.consume();
			}
			
		}
		
		function dragRelease(evt) {
			evt = new Evt(evt);
			setOpacity(box,1);
			Evt.removeEventListener(document,"mousemove",dragMove,false);
			Evt.removeEventListener(document,"mouseup",dragRelease,false);
			//if (droppedOnHotSpot(evt)) {
				//boxDropped(evt);
			//}
		}
		
		function closePopUp()
		{
			
			var box = document.getElementById("box").style;
			box.visibility = 'hidden';
			try
			{
			rte1.toolbar1 = false;
			rte1.toolbar2 = false;
			}
			catch(error)
			{}
		}
		
		
		/*
		function droppedOnHotSpot(evt) {
			var hotspot = document.getElementById("hotspot");
			var x = getX(hotspot);
			var y = getY(hotspot);
			var width = getWidth(hotspot);
			var height = getHeight(hotspot);
			return evt.x > x &&
				   evt.y > y &&
				   evt.x < x + width &&
				   evt.y < y + height;
		}
		
		*/
						
		function PostReply(form) {
			updateRTEs();//this is has to be called to sync rte control.
			var contentType = "application/x-www-form-urlencoded; charset=UTF-8";
			client.onreadystatechange = callback;
			client.open("post","ForumPostReceiver.aspx",true);
			client.setRequestHeader("Content-Type", contentType);
			client.send(createQuery(form));
			errormessage.innerHTML = "sending ........";
		}
		
		function callback() {
			if (client.readyState == 4) {
				var errormessage = document.getElementById("errormessage")
				if (client.status == 200) {
					
					//alert(client.responseText);
					if(client.responseText == "saved")
					{
						document.Form1.subject.value = "";
						document.Form1.rte1.value = "";
						closePopUp();
						document.location = location.href;
					}
					else
					{
						errormessage.innerHTML = client.responseText
					}
					createClient();
				} else {
					//alert("There was a problem retrieving the response:\n" +
						//client.statusText);
					errormessage.innerHTML  = client.statusText;	
					createClient();
				}
			}
		}
		
		function createQuery(form)
		{
			
			var elements = form.elements;
			
			var pairs = new Array();
			var idname = "ForumMessagesViewer1_" + messageid;
			for (var i = 0; i < elements.length; i++) {
				
				if ((name = elements[i].id) && (value = elements[i].value))
				{
					if(name == "subject" || name == idname)
					{
						if(name == idname)
						{
							name = "id"
						}
						pairs.push(name + "=" + encodeURIComponent(value));
					}
				}
			}
			pairs.push("body=" + encodeURIComponent(htmlEncode(form.rte1.value)));
			//alert(pairs.join("&"));
			return pairs.join("&");
		}
		
		// ]]>

