function SizeOfAJAX(){
	var req;

	try{
		req = new ActiveXObject("Msxml2.XMLHTTP");
	}catch(e){
		try{
			req = new ActiveXObject("Microsoft.XMLHTTP");
		}catch(ex){
			try{
				req = new XMLHttpRequest();
			}catch(exc){
				req = false;
			}
		}
	}

	this.handle = req;
}




function SizeOfAJAX_GetFormData(f){
	var send_this_field = false;
	qs = '';
	for(var i=0; i<f.elements.length; i++){
		field_type = f.elements[i].type.toLowerCase();
		field_value = '';
		send_this_field = true;

		if(field_type.indexOf('select') > -1){
			if(f.elements[i].options.length){
				if(field_type.indexOf('multiple') > -1){
					send_this_field = false;
					for(var j=0; j<f.elements[i].options.length; j++){
						if(f.elements[i].options[j].selected){
							qs += f.elements[i].name + '=' + escape(f.elements[i].options[j].value) + '&';
						}
					}
				}else{
					field_value = escape(f.elements[i].options[f.elements[i].selectedIndex].value);
				}
			}
		}else field_value = escape(f.elements[i].value);

		send_this_field = send_this_field &&
						  ((field_type != 'radio' && field_type != 'checkbox') ||
						  ((field_type == 'radio' || field_type == 'checkbox') && f.elements[i].checked));

		if(send_this_field) qs += f.elements[i].name + '=' + field_value + '&';
	}
	qs = qs.substring(0, qs.length-1);
	return qs;
}




function SizeOfAJAX_Open(url, returnFunction, qs, anchor, method, username, password){
	if(!url.length) url = document.location.href;
	if(returnFunction == undefined || !returnFunction.length) returnFunction = 'void';
	if(!qs) qs = '';

	var async = true, j;

	if(method == undefined) method = "";
	method = method.toUpperCase();
	if(method == "G") method = "GET";
	if(method == "P") method = "POST";
	if(method != "GET" && method != "POST") method = "GET";

	if(qs.elements) qs = this.getFormData(qs);
	else{
		if(method == "GET"){
			url = url + ((url.indexOf('?') == -1) ? "?" : "&") + qs;
			qs = null;
		}
	}

	if(this.handle){
		this.handle.open(method, url, async);
		if(method == "POST"){
			this.handle.setRequestHeader("Method", "POST " + url + " HTTP/1.1");
			this.handle.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		}

		if(async){
			requestID = this.openedRequisitions.length;
			var x = this.handle;
			var y = this;
			x.onreadystatechange=function(){
									if(x.readyState != 4) return;
									eval(returnFunction + '(x.responseText' + (anchor && anchor.length ? ", '#" + anchor + "'" : '') + ')');
									y.openedRequisitions.splice(requestID, 1);
								};
			this.handle.send(qs);
			this.openedRequisitions[requestID] = this.handle;
			return this.handle;
		}else{
			this.handle.send(qs);
			var txt = this.handle.responseText;
			return txt;
		}
	}else{
		return false;
	}
}




function SizeOfAJAX_NullSubmitButtons(pressed_button){
	try{
		if(pressed_button.type.toLowerCase() == 'submit' && pressed_button.form){
			var e = pressed_button.form.elements;
			for(var i=0; i<e.length; i++){
				if(e[i] != pressed_button && e[i].type.toLowerCase() == 'submit') e[i].name = '';
			}
		}
		return true;
	}catch(e){
		return false;
	}
}




function SizeOfAJAX_Trim(s){
	var t = s;
	while((t.substring(0,1) == ' ') || (t.substring(0,1) == '\n') || (t.substring(0,1) == '\r') || (t.substring(0,1) == '\t')) t = t.substring(1,t.length);
	while((t.substring(t.length-1,t.length) == ' ') || (t.substring(t.length-1,t.length) == '\n') || (t.substring(t.length-1,t.length) == '\r') || (t.substring(t.length-1,t.length) == '\t')) t = t.substring(0,t.length-1);
	return t;
}




var SizeOfAJAX_browserIsSafari = (navigator.userAgent.indexOf('Safari') != -1);
var SizeOfAJAX_browserIsOpera = (navigator.userAgent.indexOf('Opera') != -1);
var SizeOfAJAX_browserIsMozilla = (navigator.appName == 'Netscape');

function SizeOfAJAX_ExecuteJavaScript(node){
	var st = node.getElementsByTagName('SCRIPT');
	var strExec;

	for(var i=0;i<st.length; i++){
		if(SizeOfAJAX_browserIsSafari) strExec = st[i].innerHTML;
		else if(SizeOfAJAX_browserIsOpera) strExec = st[i].text;
		else if(SizeOfAJAX_browserIsMozilla) strExec = st[i].textContent;
		else strExec = st[i].text;

		strExec = SizeOfAJAX_Trim(strExec);
		strExec = strExec.replace(/\/\/(.*)[\n|\r]/g, '');
		while(strExec.indexOf('<!--') == 0) strExec = strExec.substring(4, strExec.length);
		while(strExec.indexOf('-->') == strExec.length-3) strExec = strExec.substring(0, strExec.length-3);
		strExec = SizeOfAJAX_Trim(strExec);

		try{
			eval(strExec);
		}catch(e){
			alert(e);
		}
	}
}




SizeOfAJAX.prototype.open = SizeOfAJAX_Open;
SizeOfAJAX.prototype.getFormData = SizeOfAJAX_GetFormData;
SizeOfAJAX.prototype.nullSubmitButtons = SizeOfAJAX_NullSubmitButtons;
SizeOfAJAX.prototype.executeJavaScript = SizeOfAJAX_ExecuteJavaScript;
SizeOfAJAX.prototype.trim = SizeOfAJAX_Trim;
SizeOfAJAX.prototype.openedRequisitions = new Array();




var html_translation_table_LETTERS = new Array(" ", "¡", "¢", "£", "¤", "¥", "¦", "§", "¨", "©", "ª", "«", "¬", "­", "®", "¯", "°", "±", "²", "³", "´", "µ", "¶", "·", "¸", "¹", "º", "»", "¼", "½", "¾", "¿", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "×", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "Þ", "ß", "à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "÷", "ø", "ù", "ú", "û", "ü", "ý", "þ", "ÿ", '"', "<", ">");
var html_translation_table_HTML_ENTITIES = new Array("&nbsp;", "&iexcl;", "&cent;", "&pound;", "&curren;", "&yen;", "&brvbar;", "&sect;", "&uml;", "&copy;", "&ordf;", "&laquo;", "&not;", "&shy;", "&reg;", "&macr;", "&deg;", "&plusmn;", "&sup2;", "&sup3;", "&acute;", "&micro;", "&para;", "&middot;", "&cedil;", "&sup1;", "&ordm;", "&raquo;", "&frac14;", "&frac12;", "&frac34;", "&iquest;", "&Agrave;", "&Aacute;", "&Acirc;", "&Atilde;", "&Auml;", "&Aring;", "&AElig;", "&Ccedil;", "&Egrave;", "&Eacute;", "&Ecirc;", "&Euml;", "&Igrave;", "&Iacute;", "&Icirc;", "&Iuml;", "&ETH;", "&Ntilde;", "&Ograve;", "&Oacute;", "&Ocirc;", "&Otilde;", "&Ouml;", "&times;", "&Oslash;", "&Ugrave;", "&Uacute;", "&Ucirc;", "&Uuml;", "&Yacute;", "&THORN;", "&szlig;", "&agrave;", "&aacute;", "&acirc;", "&atilde;", "&auml;", "&aring;", "&aelig;", "&ccedil;", "&egrave;", "&eacute;", "&ecirc;", "&euml;", "&igrave;", "&iacute;", "&icirc;", "&iuml;", "&eth;", "&ntilde;", "&ograve;", "&oacute;", "&ocirc;", "&otilde;", "&ouml;", "&divide;", "&oslash;", "&ugrave;", "&uacute;", "&ucirc;", "&uuml;", "&yacute;", "&thorn;", "&yuml;", "&quot;", "&lt;", "&gt;");

function htmlentities(str){ for(var i=0; i<html_translation_table_LETTERS.length; i++) while(str.indexOf(html_translation_table_LETTERS[i]) > -1) str = str.replace(html_translation_table_LETTERS[i], html_translation_table_HTML_ENTITIES[i]); return str; }
function unhtmlentities(str){ for(var i=0; i<html_translation_table_HTML_ENTITIES.length; i++) while(str.indexOf(html_translation_table_HTML_ENTITIES[i]) > -1) str = str.replace(html_translation_table_HTML_ENTITIES[i], html_translation_table_LETTERS[i]); return str; }