var htmlLoading = '<img src="../~images/loading.gif">';
var xmlRequests = new Array(0);
var processingRequests = 0;

/*
 *
 */
function getCookie(id)
{
	if (document.cookie.length > 0) {

	    //find the beginning of the cookie
    	var cStart = document.cookie.indexOf(id + "=");
    	
    	//the beginning might be a substring of another cookie
    	if (cStart == -1)
    		cStart = document.cookie.indexOf("; " + id + "=");

    	if (cStart == -1)
    		cStart = document.cookie.indexOf(";" + id + "=");

    	//if a cookie is found, find it's length and return an unescaped value
    	if (cStart != -1) {
    		cStart += id.length + 1;
    		cEnd = document.cookie.indexOf(";", cStart);
    		if (cEnd == -1)
    			cEnd = document.cookie.length;
    		return decodeURIComponent(document.cookie.substring(cStart, cEnd));
    	}
	}

	return null;
}

function setCookie(id, value)
{
	alert(document.cookie);

	var cStart = -1;

	if (document.cookie.length > 0) {

	    //find the beginning of the cookie
    	var cStart = document.cookie.indexOf(id + "=");
    	
    	//the beginning might be a substring of another cookie
    	if (cStart == -1)
    		cStart = document.cookie.indexOf("; " + id + "=");

    	if (cStart == -1)
    		cStart = document.cookie.indexOf(";" + id + "=");

	}

   	//if a cookie is found, find it's length and return an unescaped value
   	if (cStart != -1) {
   		cStart += id.length + 1;
   		cEnd = document.cookie.indexOf(";", cStart);

   		if (cEnd == -1)
			document.cookie = document.cookie.substring(0, cStart) +
							encodeURIComponent(value);
		else
			document.cookie = document.cookie.substring(0, cStart) +
								encodeURIComponent(value) +
								document.cookie.substring(cEnd, document.cookie.length);
   	}
	else
		document.cookie = encodeURIComponent(id) + "=" + encodeURIComponent(value) + ";" + document.cookie;

}

function getXMLHTTPRequest()
{
    if (window.XMLHttpRequest)
		return new XMLHttpRequest();
    else {
    	try {
    		return new ActiveXObject("Microsoft.XMLHTTP");
    	} catch (e) {
    	    try {
    			return new ActiveXObject("Microsoft.XMLHTTP");
    		} catch (e) {
    			try {
					return new XMLHttpRequest();
	   			} catch (e) {
                	alert("Error loading XML HTTP Request object.");
	   			}
			}
    	}
    }

	return null;
}

function loadData(recipientObj, url, customParameter, skipDummy) {

	var xmlHTTP = getXMLHTTPRequest();

	if (xmlHTTP == null)
		return false;

	if (!skipDummy)
		url += "&dummy=" + (new Date()).getMilliseconds(); //for IE skip cache

	var obj = {};
	obj.recipientObj=recipientObj;
	obj.requestObj=xmlHTTP;
	obj.customParameter = customParameter;

	xmlRequests.push(obj);

    try {
    	xmlHTTP.onreadystatechange = HTTPRequestStateChange;
        xmlHTTP.open("GET", url, true);
    	xmlHTTP.send(null);
	} catch (e) {
	    alert("Error loading list: " + e);
		for (var i=0; i<xmlRequests.length; i++)
			if (xmlRequests[i] == obj)
            	xmlRequests[i] = null;
		HTTPRequestStateChange(); //delete the object
		return false;
	}

    return true;
}

function HTTPRequestStateChange() {

	if (--processingRequests < -1) {
		setTimeout("HTTPRequestStateChange()", 500);
		return;
	}

	for (var i=0; i<xmlRequests.length; i++) {
		if (xmlRequests[i].requestObj.readyState == 4) {
			if (xmlRequests[i].recipientObj != null)
				xmlRequests[i].recipientObj.load(xmlRequests[i].requestObj.responseText, xmlRequests[i].customParameter);
        	xmlRequests[i] = null;
  		}
	}

	for (var i=0; i<xmlRequests.length; i++) {
		if (xmlRequests[i] == null) {
    		if (i < xmlRequests.length - 1) {
    			xmlRequests[i] = xmlRequests.pop();
    			i--;
    		}
            else
            	xmlRequests.pop();
		}
	}

    processingRequests = 0;

}

/*
 *
 */
function writeLoginBar(loginFormHTML, loggedInHTML) {
    document.write(getCookie("sessionId") == null?loginFormHTML:loggedInHTML);
}

/*
 *
 */
function getLangString(stringId) {

	if (!langStrings)
		return stringId;

	var str = langStrings[stringId.toLowerCase()];
	if (str == "")
		return stringId;
	return str;
}

function limitLength(field, length, chars_left_id) {
	var chars_left = length - field.value.length;
	
	if (chars_left < 0)
		field.value = field.value.substring(0, length);

	if (chars_left_id)
		document.getElementById(chars_left_id).innerHTML = chars_left < 0?0:chars_left;
}

