var XHRFactory = (function(){
				var stack = new Array();
				var poolSize = 10;
				var nullFunction = function() {};
				
				function createXHR() {
					if (window.XMLHttpRequest) {
						return new XMLHttpRequest();
					} else if (window.ActiveXObject) {
						return new ActiveXObject('Microsoft.XMLHTTP')
					}
				}
				
				for (var i = 0; i < poolSize; i++) {
					stack.push(createXHR());
				}
				
				return ({
					release:function(xhr){
						xhr.onreadystatechange = nullFunction;
						stack.push(xhr);
					},
					getInstance:function(){
						if (stack.length < 1) {
							return createXHR();
						} else {
							return stack.pop();
						}
					},
					toString:function(){
						return "stack size = " + stack.length;
					}
				});
			})();
			
			function bethebot(){
				var error = "";
				if(document.getElementById('url').value.indexOf("http://") != '0'){
					error = error + "Your URL doesn't contain a HTTP, these are required to load the page correctly.";
				}
				if(document.getElementById('url').value ==  "http://"){
					error = error + "\nYour URL is empty";
				}
				if(trim(document.getElementById('url').value) == ""){
					error = error + "\nYour URL is empty";
				}
				if(error != ""){
					alert("Errors: \n"+error);
				}else{
					var divHTML = '<div align="center" style="background: url(images/loading.gif); width: 599px; height: 565px;"><'+'/'+'div>';
					document.getElementById('siteiframe').innerHTML = divHTML;
					var btb = escape(document.getElementById('url').value);
					var xhr = XHRFactory.getInstance();
					var url = "./index.php?act=01&url="+btb;
					xhr.open("GET", url, true);
					xhr.onreadystatechange = function() {
						if (xhr.readyState==4) {
							if (xhr.status==200) {
								document.getElementById('stitle').innerHTML = xhr.responseText;
							}
							XHRFactory.release(xhr);
						}
					};
					xhr.send("");
					new_window();
					document.getElementById("siteiframe").style.padding = "0px";
					iframehtml = '<iframe src="./index.php?act=02&url='+btb+'" style="width: 928px; height: 655px; border: 0px;"></iframe>';
					setTimeout("makeIframe(iframehtml)",5000);
				}
			}
			function makeIframe(input){
				document.getElementById("siteiframe").innerHTML = input;
				document.getElementById("siteiframe").style.width = "900px;";
				document.getElementById("siteiframe").style.height = "650px;";
				document.getElementById("site").style.height = "680px;";
				document.getElementById("site").style.width = "930px;";
			}
			function fjs_focus(id){
				document.getElementById(id).style.color = "#000000";
				if(document.getElementById(id).value == "http://"){
					document.getElementById(id).value = "http://";
				}
			}
			function fjs_blur(id){	
				if(document.getElementById(id).value == ""){
					document.getElementById(id).value = "http://";
					document.getElementById(id).style.color = "#CFCFCF";
				}
				if(document.getElementById(id).value == "http://"){
					document.getElementById(id).value = "http://";
					document.getElementById(id).style.color = "#CFCFCF";
				}
			}
			function trim(str){
					return str.replace(/^\s*|\s*$/g,"");
			}
			var Drag = {
				obj : null,
				init : function(o, oRoot, minX, maxX, minY, maxY, bSwapHorzRef, bSwapVertRef, fXMapper, fYMapper){
					o.onmousedown	= Drag.start;
					o.hmode			= bSwapHorzRef ? false : true ;
					o.vmode			= bSwapVertRef ? false : true ;
					o.root = oRoot && oRoot != null ? oRoot : o ;
					
					if (o.hmode  && isNaN(parseInt(o.root.style.left  ))) o.root.style.left   = "0px";
					if (o.vmode  && isNaN(parseInt(o.root.style.top   ))) o.root.style.top    = "0px";
					if (!o.hmode && isNaN(parseInt(o.root.style.right ))) o.root.style.right  = "0px";
					if (!o.vmode && isNaN(parseInt(o.root.style.bottom))) o.root.style.bottom = "0px";
					
					o.minX	= typeof minX != 'undefined' ? minX : null;
					o.minY	= typeof minY != 'undefined' ? minY : null;
					o.maxX	= typeof maxX != 'undefined' ? maxX : null;
					o.maxY	= typeof maxY != 'undefined' ? maxY : null;
					
					o.xMapper = fXMapper ? fXMapper : null;
					o.yMapper = fYMapper ? fYMapper : null;
					
					o.root.onDragStart	= new Function();
					o.root.onDragEnd	= new Function();
					o.root.onDrag		= new Function();
				},
				
				start : function(e){
					var o = Drag.obj = this;
					e = Drag.fixE(e);
					
					var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);
					var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right );
					
					o.root.onDragStart(x, y);
					o.lastMouseX	= e.clientX;
					o.lastMouseY	= e.clientY;
					if (o.hmode){
						if (o.minX != null)	o.minMouseX	= e.clientX - x + o.minX;
						if (o.maxX != null)	o.maxMouseX	= o.minMouseX + o.maxX - o.minX;
					} else {
						if (o.minX != null) o.maxMouseX = -o.minX + e.clientX + x;
						if (o.maxX != null) o.minMouseX = -o.maxX + e.clientX + x;
					}
					if (o.vmode) {
						if (o.minY != null)	o.minMouseY	= e.clientY - y + o.minY;
						if (o.maxY != null)	o.maxMouseY	= o.minMouseY + o.maxY - o.minY;
					} else {
						if (o.minY != null) o.maxMouseY = -o.minY + e.clientY + y;
						if (o.maxY != null) o.minMouseY = -o.maxY + e.clientY + y;
					}
					
					document.onmousemove	= Drag.drag;
					document.onmouseup		= Drag.end;
					return false;
				},
				
				drag : function(e){
					e = Drag.fixE(e);
					
					var o   = Drag.obj;
					var ey	= e.clientY;
					var ex	= e.clientX;
					var y   = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);
					var x   = parseInt(o.hmode ? o.root.style.left : o.root.style.right );
					var nx, ny;
					
					if (o.minX != null) ex = o.hmode ? Math.max(ex, o.minMouseX) : Math.min(ex, o.maxMouseX);
					if (o.maxX != null) ex = o.hmode ? Math.min(ex, o.maxMouseX) : Math.max(ex, o.minMouseX);
					if (o.minY != null) ey = o.vmode ? Math.max(ey, o.minMouseY) : Math.min(ey, o.maxMouseY);
					if (o.maxY != null) ey = o.vmode ? Math.min(ey, o.maxMouseY) : Math.max(ey, o.minMouseY);
					
					nx = x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1));
					ny = y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1));
					
					if (o.xMapper)		nx = o.xMapper(y)
					else if (o.yMapper)	ny = o.yMapper(x)
					
					Drag.obj.root.style[o.hmode ? "left" : "right"] = nx + "px";
					Drag.obj.root.style[o.vmode ? "top" : "bottom"] = ny + "px";
					Drag.obj.lastMouseX	= ex;
					Drag.obj.lastMouseY	= ey;
					
					Drag.obj.root.onDrag(nx, ny);
					return false;
				},
				
				end : function(){
					document.onmousemove = null;
					document.onmouseup   = null;
					Drag.obj.root.onDragEnd(	parseInt(Drag.obj.root.style[Drag.obj.hmode ? "left" : "right"]), 
					parseInt(Drag.obj.root.style[Drag.obj.vmode ? "top" : "bottom"]));
					Drag.obj = null;
				},
				
				fixE : function(e){
					if (typeof e == 'undefined') e = window.event;
					if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;
					if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;
					return e;
				}
			};
			function new_window(){
				var handle = document.getElementById('handle');
				var root = document.getElementById('site');
				Drag.init(handle, root);
				document.getElementById('site').style.display = "block";
			}
			function close_window(){
				document.getElementById('site').style.display = "none";
				document.getElementById('site').style.width = "600px";
				document.getElementById('site').style.height = "590px";
				document.getElementById('siteiframe').style.height = "555px";
			}