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

function trackOutbound(link, url)
{
   var a=new Image(1,1);
   var cid = Math.floor(Math.random()*100000000000);
   a.src=url+"&"+cid;
   a.onload = a.onabort = a.onerror = function() { this.onload = this.onabort = this.onerror = null; document.location = link.href; }
   setTimeout('document.location = "' + link.href + '"', 3000);
   return false;
}

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)
			{
				if (req_callback) req_callback(true, req.responseText, req_userdata);
				return;
			}
			if (req_callback) 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 jqueryPostForm(selector, callback)
{
	var e = $(selector);
	
	var data = {};
	e.children(':input').each(function(index) {
		data[$(this).attr('id')] = $(this).val();
	  });
	  
	var method = e.attr('method');

	return $.ajax({
	  type: method ? method : 'POST',
	  url: e.attr('action'),
	  data: data,
	  success: callback,
	  dataType: 'json'
	});
}

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"), "");
}

function isValidEmail(email)
{
	// thanks to Wikipedia.org (http://en.wikipedia.org/wiki/Email_address_validator)
	var re = /^[-!#$%&amp;'*+/0-9=?A-Z^_a-z{|}~](\.?[-!#$%&amp;'*+/0-9=?A-Z^_a-z{|}~])*@[a-zA-Z](-?[a-zA-Z0-9])*(\.[a-zA-Z](-?[a-zA-Z0-9])*)+$/;
	if (!email.match(re)) return false;
	return(true);
}

function openWindow(url,options)
{
	var nw = (options) ? window.open(url,"_blank",options) : window.open(url,"_blank");
	if (window.focus) nw.focus()
	return nw;
}


