function getDataUrl(url,custom) {
	var req;
	var time = new Date();
	if(url.indexOf("?") >= 0) {
		var urlToGet = url + "&__ajaxKey=" + time.valueOf()/1000;
	}else{
		var urlToGet = url + "?__ajaxKey=" + time.valueOf()/1000;
	}
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	var argList = new Array();
	for (var i=0;i<arguments.length;i++) {
		argList[i] = arguments[i];
	}
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			if (req.status == 200) {
				if(argList.length>2) {
					custom(argList.slice(2),req.responseText);
				} else {
					custom(req.responseText);
				}
			}
		}
	}
	req.open("GET", urlToGet, true);
	req.send(null);
}

function getDataUrlWait(url,custom) {
	var req;
	var time = new Date();
	if(url.indexOf("?") >= 0) {
		var urlToGet = url + "&__ajaxKey=" + time.valueOf()/1000;
	}else{
		var urlToGet = url + "?__ajaxKey=" + time.valueOf()/1000;
	}
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	var argList = new Array();
	for (var i=0;i<arguments.length;i++) {
		argList[i] = arguments[i];
	}

	req.open("GET", urlToGet, false);
	req.send(null);
	if(argList.length>2) {
		custom(argList.slice(2),req.responseText);
	} else {
		custom(req.responseText);
	}
}

function appendUrl(pageUrl,element) {
	getDataUrl(pageUrl,appendHTML,element);
}

function appendTopUrl(pageUrl,element) {
	getDataUrl(pageUrl,appendTopHTML,element);
}

function retrieveUrl(pageUrl,element) {
	if (element) {
		document.getElementById(element).innerHTML = "<img src='"+coreurl+"/images/loading.gif' />";
	}
	getDataUrl(pageUrl,replaceHTML,element);
}

function retrieveUrlWait(pageUrl,element) {
	if (element) {
		document.getElementById(element).innerHTML = "<img src='"+coreurl+"/images/loading.gif' />";
	}
	getDataUrlWait(pageUrl,replaceHTML,element);
}

var htmlCache = new Array();

function replaceHTML(id,newHTML) {
	//window.alert(newHTML);
	var el = document.getElementById(id);
	if (el) {
		if (el.innerHTML != newHTML) {
			el.innerHTML = newHTML;
		}
	}
	/*
	if(el) {
		var scratch = document.getElementById('scratchpad');
		if(!scratch) {
			scratch = document.createElement('span');
			scratch.setAttribute("id","scratchpad");
			scratch.style.display="none";
			document.documentElement.appendChild(scratch);			
		}
		
		if (el.innerHTML != newHTML) {
			el.innerHTML = newHTML;
		}
	}*/
}

function appendHTML(id,newHTML) {
	var el = document.getElementById(id);
	if(el) {
		el.innerHTML = el.innerHTML + newHTML;
	}
}

function appendTopHTML(id,newHTML) {
	var el = document.getElementById(id);
	if(el) {
		el.innerHTML = newHTML + el.innerHTML;
	}
}

function refreshBox(to,loc,customFunc) {
	var me = this;
	this.url = loc;
	this.func = customFunc;
	this.argList = new Array();
	this.timeout = to*1000;
	for (var i=0;i<arguments.length;i++) {
		me.argList[i] = arguments[i];
	}

	this.refreshBox = function() {
		if(me.argList.length > 3) {
			getDataUrl(me.url,me.func,me.argList.slice(3));
		}else{
			getDataUrl(me.url,me.func);
		}
		setTimeout(me.refreshBox,me.timeout);
	}
	setTimeout(me.refreshBox,100);
}