function include(filename)
{
	var head = document.getElementsByTagName('head')[0];
	
	script = document.createElement('script');
	script.src = filename;
	script.type = 'text/javascript';
	
	head.appendChild(script)
}


function ajaxCall()
{
	this.send = function(url, paramsObject, callback, userdata)
	{
		req_callback = callback;
		req_userdata = userdata;
		req = false;
	    // branch for native XMLHttpRequest object
	    if(window.XMLHttpRequest && !(window.ActiveXObject)) {
	    	try {
				req = new XMLHttpRequest();
	        } catch(e) {
				req = false;
	        }
	    // branch for IE/Windows ActiveX version
	    } else if(window.ActiveXObject) {
	       	try {
	        	req = new ActiveXObject("Msxml2.XMLHTTP");
	      	} catch(e) {
	        	try {
	          		req = new ActiveXObject("Microsoft.XMLHTTP");
	        	} catch(e) {
	          		req = false;
	        	}
			}
	    }
		if(req) {
			var params = "";
			if (paramsObject)
			{
				for (var k in paramsObject)
				{
					if (params.length > 0) params += "&";
					params += k+"="+paramsObject[k];
				}
			}
			
			req.onreadystatechange = this.processReqChange;
			req.open("POST", url, true);
			req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			req.setRequestHeader("Content-length", params.length);
			req.setRequestHeader("Connection", "close");
			req.send(params);
		}
	};

	this.processReqChange = function()
	{
		if(req.readyState == 4)
		{
			if (req.status == 200)
			{
				req_callback(true, req.responseText, req_userdata);
				return;
			}
			req_callback(false, req.status, req_userdata);
		}
	};

}

FormPost = {
 
	frame : function(c) {
 
		var n = 'f' + Math.floor(Math.random() * 99999);
		var d = document.createElement('DIV');
		d.innerHTML = '<iframe style="display:none" src="about:blank" id="'+n+'" name="'+n+'" onload="FormPost.loaded(\''+n+'\')"></iframe>';
		document.body.appendChild(d);
 
		var i = document.getElementById(n);
		if (c && typeof(c.onComplete) == 'function') {
			i.onComplete = c.onComplete;
		}
 
		return n;
	},
 
	form : function(f, name) {
		f.setAttribute('target', name);
	},
 
	submit : function(f, c) {
		FormPost.form(f, FormPost.frame(c));
		if (c && typeof(c.onStart) == 'function') {
			if (!c.onStart()) return;
		}
		f.submit();
	},
 
	loaded : function(id) {
		var i = document.getElementById(id);
		if (i.contentDocument) {
			var d = i.contentDocument;
		} else if (i.contentWindow) {
			var d = i.contentWindow.document;
		} else {
			var d = window.frames[id].document;
		}
			if (d.location.href == "about:blank") {
			return;
		}
 
		if (typeof(i.onComplete) == 'function') {
			i.onComplete(d.body.innerHTML);
		}
	}
}

function getElementPosition(e)
{
	var top = e.offsetTop;
	var left = e.offsetLeft;

	var te = e.offsetParent;
	while(te) {
		top += te.offsetTop;
		left += te.offsetLeft;
		te = te.offsetParent;	
	}

	return {x: left, y:top, w:e.offsetWidth, h:e.offsetHeight};
} 

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

