/* AJAX functions */

function createRequestObject() {
	var req;
	if(window.XMLHttpRequest){
		req = new XMLHttpRequest();
	}
	else if(window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else {
		alert('Problem creating the XMLHttpRequest object');
	}
	return req;
}

var http = createRequestObject();
var globalvar = new Object();

//shows loading status for http requests
function loading(parent) {
	var loadingdiv = document.createElement('div');
	loadingdiv.id = 'loadingdiv';
	loadingdiv.style.position = 'absolute';
	loadingdiv.style.left = '0px';
	loadingdiv.style.top = '0px';
	loadingdiv.style.background = '#cc0000';
	loadingdiv.style.border = '2px solid #000';
	loadingdiv.style.padding = '2px';
	loadingdiv.style.color = '#fff';
	loadingdiv.style.fontWeight = 'bold';
	loadingdiv.innerHTML = "Loading...";
	parent.appendChild(loadingdiv);
}

/* teh dollar funtion */

function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}

/* toggle elements display none/normal */

function toggle(obj) {
	var el = document.getElementById(obj);
	var curDisp = getStyle(obj, 'display');
	if (curDisp != 'none') {
		el.style.display = 'none';
	}
	else {
		el.style.display = 'block';
	}
}

function getStyle(el, styleProp) {
	//used to get css styles
	var x = document.getElementById(el);
	if (x.currentStyle)
		var y = x.currentStyle[styleProp];
	else if (window.getComputedStyle)
		var y = document.defaultView.getComputedStyle(x, null).getPropertyValue(styleProp);
	return y;
}

/* encode/decode strings to/from url-safe versions */

var specialChars = [':',';','?','@','&','=','$',',','#','~'];
var entities = ['%3A','%3B','%3F','%40','%26','%3D','%24','%2C','%23','%7E'];
var decodeOnlySpecialChars = [];
var decodeOnlyEntities = [];
for(var i=0;i<entities.length;i++) {
  decodeOnlyEntities.push(entities[i].replace(/%/,'\%'));
  decodeOnlySpecialChars.push(specialChars[i]);
}
decodeOnlySpecialChars.push('\+','\/');
decodeOnlyEntities.push('\%2B','\%2F');

function urlencode(str) {
  return encodeURIComponent(str);
}
function urldecode(str) {
  return decodeURIComponent(str);
}