function newXMLHttpRequest () {
	var httpRequest = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		httpRequest = new XMLHttpRequest();
		if (httpRequest.overrideMimeType) {
			httpRequest.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	return httpRequest;
}

function ajaxManager() {
	var args = ajaxManager.arguments;
	// document.getElementById(args[2]).innerHTML = '<div id="loading"></div><h5 align="center">Caricamento...</h5><br/>';
	var req = newXMLHttpRequest();
	var reqx = newXMLHttpRequest();
	var match;
	switch (args[0]) {
		case "load_page":
			if (req) { 
				req.onreadystatechange = function() { 
					if (req.readyState == 4 && (req.status == 200 || req.status == 304)) { 
                                		var fileExtension = args[1].substring(args[1].lastIndexOf("."));
						if (fileExtension == '.js') {
							// this .js? sweet. eval the lot!
							eval (req.responseText);
						} else {
							// no .js extension? no problem! let's get our hands dirty
							var el = document.getElementById(args[2]);
							var head = document.getElementsByTagName("head")[0];
							var re = /<script(\b[\s\S]*?)>([\s\S]*?)<\//ig;
							var match;
							// loop through script tags
							while (match = re.exec(req.responseText)) {
								// generate new script element
								var script = document.createElement('script');
								script.type = 'text/javascript';
								script.defer = 'true';
								// check for src property in this script tag
								var reSrc = /src="([\s\S]*?)"/ig;
								var strSrc = reSrc.exec(match[1]);
								if (strSrc != null) {
									// set js file url as src property
									script.src = strSrc[1];
								} else {
									// OR write js code between script tags
									script.text=match[2];
								}
								// add to DOM
								head.appendChild(script);
							}
							// todo: clear script tags and code from req.responseText first
							if (el) {
								el.innerHTML = req.responseText; 
							}
						}
					} 
				}; //close function
        			req.open('GET', args[1], true); 
                        	req.send(null);   
			}
		break;
		case "load_xml_menu":
			if (reqx) { 
				reqx.onreadystatechange = function() { 
					if (reqx.readyState == 4 && (reqx.status == 200 || reqx.status == 304)) { 
                        			txt = ' ';
                        			var xmldoc = reqx.responseXML; 
                        			var list = xmldoc.getElementsByTagName('voce'); 
                        			for (i=0;i<list.length;i++) {
                   					doc = list.item(i);
							var pref = doc.getAttribute('id'); //link navlist
							var ref = doc.getAttribute('href');
							var value = doc.firstChild.data;
							switch (value) {
								case "Menu":
									var str = '<ins>M</ins>enu';
								break;
								case "Area DocEnti":
									var str = 'Area Doc<ins>E</ins>nti';
								break;
								case "Area ATA":
									var str = 'Area A<ins>T</ins>A';
								break;
								case "Area GeNitori":
									var str = 'Area Ge<ins>N</ins>itori';
								break;
								case "Area Progetti":
									var str = 'Area <ins>P</ins>rogetti';
								break;
								case "ARchivio":
									var str = 'A<ins>R</ins>chivio';
								break;
								case "OrganiGramma":
									var str = 'Organi<ins>G</ins>ramma';
								break;
								case "p.O.f.":
									var str = 'P.<ins>O</ins>.F.';
								break;
								case "p.o.F.":
									var str = 'P.O.<ins>F</ins>.';
								break;
								case "RegoLamenti":
									var str = 'Rego<ins>L</ins>amenti';
								break;
								case "ReGolamenti":
									var str = 'Re<ins>G</ins>olamenti';
								break;
								case "ModUlistica Docenti":
									var str = 'Mod<ins>U</ins>listica<span style="display: none">&nbsp;Docenti</span>';
								break;
								case "ModuListica ATA":
									var str = 'Modu<ins>L</ins>istica<span style="display: none">&nbsp;ATA</span>';
								break;
								case "ModuliStica Genitori":
									var str = 'Moduli<ins>S</ins>tica<span style="display: none">&nbsp;Genitori</span>';
								break;
								case "LiBri di testo":
									var str = 'Li<ins>B</ins>ri di testo';
								break;
								case "Progetti sVolti":
									var str = 'Progetti s<ins>V</ins>olti';
								break;
								case "Progetti Svolti":
									var str = 'Progetti <ins>S</ins>volti';
								break;
								case "ProgettI in atto":
									var str = 'Progett<ins>I</ins>&nbsp;in atto';
								break;
								case "Home":
									var str = '<ins>H</ins>ome';
								break;
								case "Dove siamo":
									var str = '<ins>D</ins>ove siamo';
								break;
								case "Contatti":
									var str = '<ins>C</ins>ontatti';
								break;
                                                                case "Mappa sito":
									var str = 'M<ins>A</ins>ppa sito';
								break;
								case "Accessibilita":
									var str = '<ins>A</ins>ccessibilit&agrave;';
								break;
								default:
									var str = value;
								break;
							}
                                                        if (pref) { 
								txt += '<li><a id="'+doc.getAttribute('id')+'" name="voce" title="'+doc.getAttribute('title')+'" accesskey="'+doc.getAttribute('accesskey')+'" href="'+doc.getAttribute('href')+'" target="'+doc.getAttribute('target')+'">'+str+'</a></li>';
                                                        } else {
								txt += '<span class="nav"><a id="'+doc.getAttribute('current')+'" class="voce" name="voce" title="'+doc.getAttribute('title')+'" accesskey="'+doc.getAttribute('accesskey')+'" ';
								if (ref) {
									txt += 'href="'+doc.getAttribute('href')+'" target="'+doc.getAttribute('target')+'">'+str+'</a></span><br/>';
								} else {
									txt += 'onclick="'+doc.getAttribute('onclick')+'" href="javascript:void(0);">'+str+'</a></span><br/>'; 
								} 
                                                        }
						}
						var elem = document.getElementById(args[2]);
						elem.innerHTML = txt; 
					}
				};
				reqx.open('GET', args[1], true); 
				reqx.send(null);   
			} //chiude reqx
		break;
	} 
} //close ajaxManager

function myahah ( url, target, method ) {
	var req = newXMLHttpRequest();
	if (req) { 
		req.onreadystatechange = function() { 
			if (req.readyState == 4 && (req.status == 200 || req.status == 304)) { 
				output = req.responseText;
				document.getElementById(target).innerHTML = output;
				var file = "";        
				var form = "";
				var num = "";
				var url = "";
				var radio_buttons = new Array();
				var nome_buttons = new Array();
				var check_buttons = new Array();
				var nome_buttons = new Array();
				// submit radio values
				var j = 0;
				var a = 0;
				for(var i=0; i<form.length; i++) {
					var temp = form.elements[i].type;
					if ( (temp == "radio") && ( form.elements[i].checked) ) { 
						nome_buttons[a] = form.elements[i].name;
						radio_buttons[j] = form.elements[i].value; 
						j++; 
						a++;
					}
				}
				for(var k = 0; k < radio_buttons.length; k++) {
					url += nome_buttons[k] + "=" + radio_buttons[k] + "&";
				}
				// submit checkbox values
				var j = 0;
				var a = 0;
				for(var i=0; i<form.length; i++) {
					var temp = form.elements[i].type;
					if ( (temp == "checkbox") && ( form.elements[i].checked) ) { 
						nome_buttons[a] = form.elements[i].name;
						check_buttons[j] = form.elements[i].value; 
						j++; 
						a++;
					}
				}
				for(var k = 0; k < check_buttons.length; k++) {
					url += nome_buttons[k] + "=" + check_buttons[k] + "&";
				}
				// submit all kind of input		
				for (var i = 0; i < num; i++) {	
					var chiave = form.elements[i].name;
					var valore = form.elements[i].value;
					var tipo = form.elements[i].type;
					if ( (tipo == "submit") || (tipo == "radio") || (tipo == "checkbox") ) {
					} else {
						url += chiave + "=" + valore + "&";
					}
				}
				url = file + "?" + url;
			}
		}; // close function
		req.open('GET', url, target, method); 
		req.send(null);   
	}
}
