// ==========================================================================
// @function		Complete AHAH function
// @author		Daniele Florio
// @site			www.gizax.it
// @version		1.1.2 experimental
// @thanksTo		Andrea Paiola,Walter Wlodarski,Scott Chapman
// (c) 2006 Daniele Florio <daniele@gizax.it>
// @KA adaptation	Arnold Shore
// ==========================================================================

function ahah (url, target, delay, method, parameters, formName) {
	if (( method == undefined ) || ( method.toUpperCase() == "GET" )) {
		if (window.XMLHttpRequest) 		{ req = new XMLHttpRequest(); }
		else if (window.ActiveXObject) 	{ req = new ActiveXObject("Microsoft.XMLHTTP"); }
		if (req) {
			req.onreadystatechange = function() { ahahDone(url, target, delay, method, parameters, formName); };	//, formName
			req.open(method, url, true);
			req.send("");
			}
		}
	if (method.toUpperCase() == "POST"){
		if (window.XMLHttpRequest) 		{ req = new XMLHttpRequest(); }
		else if (window.ActiveXObject) 	{ req = new ActiveXObject("Microsoft.XMLHTTP"); }
		if (req) {
			req.onreadystatechange = function() { ahahDone(url, target, delay, method, parameters, formName); };	//, formName
			req.open(method, url, true);
			req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			req.send(parameters);
		 	}
		}
	}			// end function ahah ()

function creaDIV (target, html){
	 if (document.body.innerHTML){
			 document.getElementById(target).innerHTML = html;
	 			}
	 else if (document.getElementById){
			 var element = document.getElementById(target);
			 var range = document.createRange();
			 range.selectNodeContents(element);
			 range.deleteContents();
			 element.appendChild(range.createContextualFragment(html));
	 		}
	}				// end function creaDIV ()

function ahahDone (url, target, delay, method, parameters, formName) {	//, formName
	if (req.readyState == 4) {
		element = document.getElementById(target);
		if (req.status == 200) {
			this.creaDIV(target, req.responseText);
			}
		else {
			this.creaDIV(target, "ahah error:\n"+req.statusText);
			}
		}
	}				// end function ahahDone()

function parsereturn (theString) {										//  input ex: "sortby=$sortby&sortdir=$sortdir&page=$page&numrows=$numrows";  parses theString for form values
	var sep = theString.indexOf('\t')
	if (sep > 0 ) {													// tab sep guaranteed	substr( theString ,sep)
		var val_array=theString.substring( 0, sep).split("&");					// input into array of 'name=value' pairs
		for (i = 0; i < val_array.length; i++) {								// i walks through input elements
			var match = false;
			varname_val = val_array[i].split("=");							// split name-value pair
			for (j = 0; j < document.navForm.elements.length; j++) {			// j walks through form elements
				if (varname_val[0] == document.navForm.elements[j].name) {	// name match?
					document.navForm.elements[j].value=varname_val[1] ;	// yes, assign value;
					match=true;
					break;
					}		// end name match
				}													// end of for (j) walk through form elements
				if (!match) { alert (varname_val[0] + " fails");}
			}														// end of for (i) walk through input
		}															// end if (sep > 0 )
		return theString.substr(sep+1);									// balance of input
	}							// end parsereturn ()

function Submit ( file, method, formName, target ) {
	var the_form = document.getElementById(formName);
	var num = the_form.elements.length;
	var url = "";
	var radio_buttons = new Array();
	var nome_buttons = new Array();
	var check_buttons = new Array();
	var j = 0;											// submit radio values

	var a = 0;
	for(var i=0; i<the_form.length; i++){
		var temp = the_form.elements[i].type;
		if ((temp == "radio") && ( the_form.elements[i].checked)) {
			nome_buttons[a] = the_form.elements[i].name;
			radio_buttons[j] = the_form.elements[i].value;
			j++;
			a++;
			}
		}
	for(var k = 0; k < radio_buttons.length; k++) {
		url += nome_buttons[k] + "=" + radio_buttons[k] + "&";
		}
	var j = 0;											// submit checkbox values
	var a = 0;
	for(var i=0; i<the_form.length; i++){
		var temp = the_form.elements[i].type;
		if ((temp == "checkbox") && ( the_form.elements[i].checked)) {
			nome_buttons[a] = the_form.elements[i].name;
			check_buttons[j] = the_form.elements[i].value;
			j++;
			a++;
			}
		}
	for(var k = 0; k < check_buttons.length; k++) {
		url += nome_buttons[k] + "=" + check_buttons[k] + "&";
		}
	for (var i = 0; i < num; i++){							// submit all kind of input
		var myName = the_form.elements[i].name;
		var myValue = the_form.elements[i].value;
		var myType = the_form.elements[i].type;
		if ((myType == "submit") || (myType == "radio") || (myType == "checkbox")){	}
		else {
			url += myName + "=" + myValue + "&";
			}
		}
	var parameters = url;
	url = file + "?" + url;
	if (method == undefined)	{ method = "GET"; }
	if (method == "GET")		{ this.ahah(url, target, '', method, '', formName.elements); }				// formName
	else						{ this.ahah(file, target, '', method, parameters, formName.elements); }	// formName
	}			// END function Submit

