var Last_AjaxDiv;
var Last_AjaxUrl;
var Last_AjaxTimestamp;
var VisibleLoadingDiv = 0;
var runAjaxTmr = new Array();
var lastUrl;
var Last_AjaxFunction;
var processingEffect = new Object();

function $(element){
	if(element){
		return document.getElementById(element);
	}
	return;	
}

function randomString() {
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var string_length = 20;
	var randomstring = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	r_Timestamp = new Date();
	return randomstring + '' + r_Timestamp.getHours() + '' + r_Timestamp.getMinutes() + '' + r_Timestamp.getSeconds();
}

function AjaxData(AjaxDiv,FullURL,runFunction){
	if(!$(AjaxDiv) && !runFunction){
		return 0;	
	}
	
	CurrentTimestamp = new Date();
	if(Last_AjaxDiv !== AjaxDiv || Last_AjaxUrl !== FullURL || (CurrentTimestamp-Last_AjaxTimestamp)>2000 || Last_AjaxFunction !== runFunction){
		Last_AjaxDiv = AjaxDiv;
		Last_AjaxUrl = FullURL;
		Last_AjaxTimestamp = new Date();
		Last_AjaxFunction = runFunction;
	}
	else {
		return 0;
	}
	
	if(VisibleLoadingDiv){
		clearTimeout(VisibleLoadingDiv);
	}
	if(document.getElementById('LoadingPage')){
		document.getElementById('LoadingPage').style.display = 'block';
	}
	
	if(runAjaxTmr[AjaxDiv]){
		clearTimeout(runAjaxTmr[AjaxDiv]);
	}
	runAjaxTmr[AjaxDiv] = setTimeout("runAjax('"+AjaxDiv+"','"+FullURL+"','"+escape(runFunction)+"')",250);
//runAjax(AjaxDiv,FullURL,evalFunction);
}

function runAjax(AjaxDiv,FullURL,runFunction){
	runFunction=unescape(runFunction);
	var xmlhttp=false;
        try {
                xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e) {
                try {
                        xmlhttp = new
                        ActiveXObject('Microsoft.XMLHTTP');
            } catch (E) {
                xmlhttp = false;
                        }
        }
        if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
                xmlhttp = new XMLHttpRequest();
        }
		var content;
		if(FullURL.indexOf("?")>0){
			urlSym='&';
		}
		else {
			urlSym='?';
		}
    xmlhttp.open('GET', FullURL + urlSym + randomString(), true);
    xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4) {
			var content = xmlhttp.responseText;
			if( content ){
				if(AjaxDiv && $(AjaxDiv)){
					if(document.getElementById('LoadingPage')){
						VisibleLoadingDiv = setTimeout("document.getElementById('LoadingPage').style.display = 'none';",500);
					}
					$(AjaxDiv).innerHTML = content;
				}
				if(runFunction){
					eval(content);	
				}
			}
		}
	}
    xmlhttp.send(null);
	return;	
}

function AjaxDropdown(dropdown,FullURL){
	$(dropdown).options.length=length=1;
	$(dropdown).options[0].selected = true;
	$(dropdown).options[0].value = '0';
	$(dropdown).options[0].text = 'Loading...';
	$(dropdown).disabled=true;
	
	AjaxData('',FullURL+"&AjaxDiv="+dropdown,'eval(content);');
}

function setDropdown(dropdown,selectOptions,length){
	$(dropdown).options.length=length;
	i=0;
	for(val in selectOptions){
		$(dropdown).options[i].selected = selectOptions[val]['selected'];
		$(dropdown).options[i].value = selectOptions[val]['key'];
		$(dropdown).options[i].text = selectOptions[val]['val'];
		i++;
	}
	$(dropdown).disabled=false;
}

function URLEncode(clearString){
	if(!clearString){
		return '';	
	}
	
	var output = '';
	var x = 0;
	clearString = clearString.toString();
	var regex = /(^[a-zA-Z0-9_.]*)/;
	while (x < clearString.length) {
		var match = regex.exec(clearString.substr(x));
		if(match != null && match.length > 1 && match[1] != ''){
			output += match[1];
			x += match[1].length;
		}
		else {
			if(clearString[x] == ' '){
				output += '+';
			}
			else {
				var charCode = clearString.charCodeAt(x);
				var hexVal = charCode.toString(16);
				output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
			}
			x++;
		}
	}
	return output;
}