var boundary = "----------ezAjaxMultipartBoundary";
var standardMultipartPrefix = "--";
var debug = false;
function ajaxSubmitMultipart(formObj){
	//submit all values of this form object
	var strPostData = "";
	for(i = 0 ; i < formObj.elements.length; i++){
		if(formObj.elements[i].name != ""){
			strPostData = strPostData + multipartFormDataString(formObj.elements[i]);
		}
	}
	strPostData = strPostData + standardMultipartPrefix + boundary + standardMultipartPrefix;
	if(debug) alert(strPostData);
	var openRequest = getAjaxRequest();
	try {
		openRequest.open("POST", formObj.action, false);
		openRequest.setRequestHeader("content-type", "multipart/form-data; boundary=" + boundary);
		openRequest.send(strPostData);
		if(debug) alert("Done. Posting");
		document.getElementById("visiblepanel").innerHTML = "<div class=\"utilresponse\">" + openRequest.responseText + "</div>" + document.getElementById("panel" + itemValue).innerHTML;
		document.getElementById("panel" + itemValue).innerHTML = document.getElementById("visiblepanel").innerHTML;
		if(debug)alert(openRequest.responseText);
	}
	catch (error) {
		if(debug)
			displayDebugError("Error communicating with PageEventListener:\n", error);
	}
}
function multipartFormDataString(formField){
	var strMultipartFormData = standardMultipartPrefix + boundary + "\r\n" +
								"Content-Disposition: form-data; name=\"" + 
								formField.name + 
								"\"\r\n\r\n" +
								formField.value + "\r\n";

	return strMultipartFormData;
}
function getAjaxRequest(){
	var openRequest;
	try {
		openRequest = new XMLHttpRequest();
		return openRequest;
	}
	catch (error) {
		try {
			openRequest = new ActiveXObject("Microsoft.XMLHTTP");
			return openRequest;
		}
		catch (error) {
			//This is an error situation
			//however end client should not see the messages
			//but we need messages for debugging - hence debug
			if(debug)
				displayDebugError("Error creating AJAX request:\n", error);
				return null;
		}
	}
}
function displayDebugError(prefix, error){
	var r = prefix;
	for (var p in error)
		r += p + ": " + error[p] + "\n";
	alert(r);
}
