
var utils = {};

utils.createRequest = function() {
	try {
		request = new XMLHttpRequest();
	} catch (tryMS) {
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (otherMS) {
			try {
				request=new ActiveXObject("Microsoft.XMLHTTP");
			} catch (failed) {
				request = null;
			}
		}
	}
	return request;
}

utils.setFormPairs = function(frm) {
    queryString="";
    var numberElements =  frm.elements.length;
    for(var i = 0; i < numberElements; i++) {
        if(i < numberElements-1) {
            queryString += frm.elements[i].name+"="+
                           encodeURIComponent(frm.elements[i].value)+"&";
        } else {
            queryString += frm.elements[i].name+"="+
                           encodeURIComponent(frm.elements[i].value);
        }

    }
    return queryString;
}

function runOnLoad(f) {
    if (runOnLoad.loaded) {
        f();    // If already loaded, just invoke f() now.
    } else {
        runOnLoad.funcs.push(f);
    }
}

runOnLoad.funcs = [];   // An array of functions to call when doc loads.
runOnLoad.loaded = false;

runOnLoad.run = function() {
    if (runOnLoad.loaded) {
        return;
    }

    for (var i = 0; i < runOnLoad.funcs.length; i++) {
        try {runOnLoad.funcs[i](); }
        catch(e) { /* Absorb exceptions. */ }
    }

    runOnLoad.loaded = true;
    delete runOnLoad.funcs;
    delete runOnLoad.run;

};

if (window.addEventListener) {
    window.addEventListener("load", runOnLoad.run, false);
} else if (window.attachEvent) {
    window.attachEvent("onload", runOnLoad.run);
} else {
    window.onload = runOnLoad.run;
}

