var client = new HttpClient();
client.isAsync = true;
client.requestType = 'POST';
client.callback = showresult;

var isactive = false;
var lastresult = "";
var adest = "target";
var cleardest = true;
var funlist = "";
var fld_prefix = "";

function axsend(service, adata) {
	
	if (isactive) {
		try {
			alert("Flag is Active");
			document.getElementById('astatus').innerHTML = "Still busy please wait a moment ...";
		} 	catch(e) {}
		return "";
	}
	
	isactive = true;
	
	// adata = adata.toLowerCase();
	// alert("AxSend:" + adata.length);
	
	if (!client.isAsync) {
		// alert("Sync Request:" + funlist);
		try {
			result = client.makeRequest(service, adata);
		}
			catch(e) {
				alert("Failed to create httprequest (Check target div is present");
		}
		if (funlist.indexOf('show') != -1) {showresult(result)};
		if (funlist.indexOf('store') != -1) {store(result)};
		if (funlist == "") {showresult(result)};
		lastresult = result;
		funlist = "";
		fld_prefix = "";
		isactive = false;
	}
	else
		client.makeRequest(service, adata);
		
	cleardest = true;
}

function showresult (result) {

 	// alert(" ***** Show Result *****" + "\n" + result);

	var re = /\w/;
	
	if (cleardest) document.getElementById(adest).innerHTML = "";
 	while (true) {
		re = /Test_Output/;
	 	if (re.test(result)) {
	 		document.getElementById(adest).innerHTML += result;
			// alert(result);
	 		break;
		}
		
 		re = /Error:/;
	 	if (re.test(result)) {
	 		document.getElementById(adest).innerHTML += result;
		 	alert(result);
	 		break;
	 	}
	
 		re = /Ok:(.+)[*]{3}/;
	 	if (re.test(result)) {
			document.getElementById(adest).innerHTML += result;
	 		break;
	 	}
	
		// If results have not been handled look for default "target"
		try {
			document.getElementById('target').innerHTML += result;
		} 	catch (e) {
			alert(e.message);
			alert(result);
			}
 		break;
	}
	isactive = false;
}	
	
function store (result) {

 	// alert(" ***** Store *****" + "\n" + result);

	lastresult = result;
			
	var re = /\[\/\w+\]/;
	var fldlist = result.split(re);
	var str = "";
			
	for (var i=0; i < fldlist.length; i++) {
		// alert(fldlist[i]);
		fldlist[i] = fldlist[i] + ' ';
		// alert(fldlist[i]);
	}
			
	re = /^\[(\w+)\]([\w\W]+)/;

	var fld = "";
	var val = "";
	var pval = "";
	var ditem = null;
	str = "";
			
	for (var i=0; i < fldlist.length; i++) {
		// alert("Element (" + i + "):" + fldlist[i]);
		re.exec(fldlist[i]);
		if (RegExp.$2 > " ") {
			fld = RegExp.$1;
			val = RegExp.$2;
			
			// alert(fld + '=' + val);
			
		 	str += fld + '=' + val + '\n';
	 		ditem = document.getElementById(fld);
		
			rx = /([\w\W]+) $/;
			rx.exec(val);
			// alert("Trim Trailing Space:" + val + "/" + RegExp.$1 + "/");
			val = RegExp.$1;
			
		 	try {

			if (ditem) {
				assigned = false;
				
				/*
				alert("Found: Id=" + ditem.id + " Name="+ ditem.name +
					" Class=" + ditem.className +
					" Type=" + ditem.type +
					" NodeName=" + ditem.nodeName);
				*/	
				/*
				if (ditem.id == "sold") {
					alert("Found: Id=" + ditem.id + " Name="+ ditem.name +
						" Class=" + ditem.className +
						" Type=" + ditem.type +
						" NodeName=" + ditem.nodeName);
				}
				*/
						
				try {
					
				if (ditem.nodeName == "DIV") {
					// alert(ditem.innerHTML);
					ditem.innerHTML = val;
					assigned = true;
				}

				if (ditem.nodeName == "A") {
					// alert(ditem.innerHTML);
					ditem.setAttribute("href", val);
					assigned = true;
				}

				if (ditem.nodeName == "INPUT") {
					if (ditem.getAttribute("Type") == "checkbox") {
						if (val == 1 || val == "Y")
							ditem.checked = true;
					}
				}
			 	if (ditem.nodeName == "SELECT") {
			 		// alert(ditem.name + "(" + ditem.options.length + ") match:" + val);
			 		for(var j=0; j < ditem.options.length; j++) {
						pval = ditem.options[j].value;
						//alert(pval + "(" + pval.length + ")" +
						//      " - " + val + "(" + val.length + ")");
			 			if (pval == val) {
							// alert("Assign Value: " + val);
			 				ditem.selectedIndex = j;
			 			}
			 		}
					assigned = true;
			 	}
						
				if (ditem.getAttribute("src")) {
					ditem.setAttribute("src", val);
					alert("Show:" + ditem.name + ditem.getAttribute("src"));
					assigned = true;
				}
				
			 	if (ditem.type == "file") {
					assigned = true; // skip these !
				}
						
				if (! assigned) {
					ditem.value = val;
				}

				} catch (e) {alert("Error_dload:" + ditem.name + ditem.type)}
						
			}
			} catch (e) {alert("Problem here ... " + e.message )}
		}
	}
	isactive = false;

}

function clear(elem) {
	document.getElementById(elem).innerHTML = '';
}

/*
function toggleVisible(elem) {
	toggleElementClass("invisible", elem);
}

function makeVisible(elem) {
	removeElementClass(elem, "invisible");
}

function makeInvisible(elem) {
	addElementClass(elem, "invisible");
}

function isVisible(elem) {
	// you may also want to check for
        // getElement(elem).style.display == "none"
        return !hasElementClass(elem, "invisible");
}
*/
