function onSuccess(http_request, form, stdmessage, confirm, warning, error) {

	if (form) { form.style.display="none"; }
	if (stdmessage) { stdmessage.style.display="none"; }
	if (confirm) { confirm.style.display="block"; }
	if (warning) { warning.style.display="none"; }
	if (error) { error.style.display="none"; }
	var text = http_request.responseText;
	text = text.replace(/^\s+/g,"");
	text = text.replace(/\s+$/g,"");
	var message = document.createElement("pre");
	message.width = 80;
	message.appendChild(document.createTextNode(text));
	confirm.appendChild(message);
	window.location.href="#";
}

function onValidationError(http_request, form, stdmessage, confirm, warning, error) {

	if (form) { form.style.display="block"; }
	if (stdmessage) { stdmessage.style.display="block"; }
	if (confirm) { confirm.style.display="none"; }
	if (warning) { warning.style.display="block"; }
	if (error) { error.style.display="none"; }
	invalidFields = http_request.responseText.replace(/\s+/g,"").split(",");
	for (i = 0; i < invalidFields.length; i++) {
		field = document.getElementsByName(invalidFields[i]);
		if (field.length > 0) {
			field[0].className="invalid";
		}
	}
	window.location.href="#";
}

function onFailure(http_request, form, stdmessage, confirm, warning, error) { 

	if (form) { form.style.display="none"; }
	if (stdmessage) { stdmessage.style.display = "none"; }
	if (confirm) { confirm.style.display="none"; }
	if (warning) { warning.style.display="none"; }
	if (error) { error.style.display="block"; }
	var text = http_request.responseText;
	text = text.replace(/^\s+/g,"");
	text = text.replace(/\s+$/g,"");
	text = text.replace(/\s+/g," ");
	var message = document.createElement("pre");
	message.width = 80;
	message.appendChild(document.createTextNode(text));
	error.appendChild(message);
	window.location.href="#";
}

function submitForm(url, form, stdmessage, confirm, warning, error) {
	i = 0;
	params = "";
	for (i = 0; i < form.elements.length; i++) {
		if (form.elements[i].name != "") {
			params = params.concat((i > 0) ? "&" : "");
			params = params.concat(form.elements[i].name);
			params = params.concat("=");
			params = params.concat(form.elements[i].value);
			form.elements[i].className="";
		}
	}

	var http_request = getHttpRequest();
   	if (http_request) {
   		http_request.onreadystatechange = function() { 
			if (http_request.readyState == 4) {
        			if (http_request.status == 200) {
					onSuccess(http_request, form, stdmessage, confirm, warning, error);
				} else if (http_request.status == 400) {
					onValidationError(http_request, form, stdmessage, confirm, warning, error);
            			} else {
					onFailure(http_request, form, stdmessage, confirm, warning, error);
            			}
			}
		};
   		postHttpRequest(http_request, url, params);
		return true;
	} else {
		return false;
	}
}

function doHttpRequest(url, params, handler, handlerParam) {
	var http_request = getHttpRequest();
	http_request.onreadystatechange = function() {
		if (http_request.readyState == 4) {
			handler(http_request, handlerParam);
		}
	};
	postHttpRequest(http_request, url, params);
}

function postHttpRequest(http_request, url, params) {
   	http_request.open('POST', url, true);
   	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
   	if (params) {
	   	http_request.setRequestHeader("Content-length", params.length);
   	} else {
	   	http_request.setRequestHeader("Content-length", 0);
   	}
   	http_request.send(params);
}

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

function submitImageList(url, form) {
	i = 0;
	params = "";
	
	var download_array = document.getElementsByName('download');
	var title_array = document.getElementsByName('title');
	for (var i = 0; i < download_array.length; ++i){
	    if(download_array[i].checked == true){
	    	params = (params.length > 0) ? params + "&" : params;
			params = params + 'picture=' + download_array[i].value + '&' + 'title=' + title_array[i].value;
		}
	}

   	var http_request = false;
   	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
      		http_request = new XMLHttpRequest();
      		if (http_request.overrideMimeType) {
         		http_request.overrideMimeType('text/xml');
      		}
   	} else if (window.ActiveXObject) { // IE
      		try {
        		http_request = new ActiveXObject("Msxml2.XMLHTTP");
      		} catch (e) {
         	try {
            		http_request = new ActiveXObject("Microsoft.XMLHTTP");
         	} catch (e) {}
      		}
   	}
   	if (!http_request) {
     		 return false;
   	} else {
   		http_request.onreadystatechange = function() { 
			if (http_request.readyState == 4) {
        		if (http_request.status == 200) {
        			window.location.href=form + '?' + params;
				} else {
					window.location.reload();
            	}
			}
		};
   		http_request.open('POST', url, true);
   		http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
   		http_request.setRequestHeader("Content-length", params.length);
   		http_request.send(params);
		return true;
	}
}

function submitImageForm(url, form, stdmessage, confirm, warning, error) {
	i = 0;
	params = "";
	for (i = 0; i < form.elements.length; i++) {
		if (form.elements[i].name != "") {
			params = params.concat((i > 0) ? "&" : "");
			params = params.concat(form.elements[i].name);
			params = params.concat("=");
			params = params.concat(form.elements[i].value);
			form.elements[i].className="";
		}
	}

	var http_request = getHttpRequest();
   	if (http_request) {
   		http_request.onreadystatechange = function() { 
			if (http_request.readyState == 4) {
        			if (http_request.status == 200) {
					onSuccess(http_request, form, stdmessage, confirm, warning, error);
				} else if (http_request.status == 400) {
					onValidationError(http_request, form, stdmessage, confirm, warning, error);
            			} else {
					onFailure(http_request, form, stdmessage, confirm, warning, error);
            			}
			}
		};
   		postHttpRequest(http_request, url, params);
		return true;
	} else {
		return false;
	}
}

function insertParameterRequiredContent(url, element, params) {

   	var http_request = getHttpRequest();
   	if (!http_request) {
     		 return false;
   	} else {
   		http_request.onreadystatechange = function() { 
			if (http_request.readyState == 4) {
        		if (http_request.status == 200) {
        			document.getElementById(element).innerHTML = http_request.responseText;
				} 
			}
		};
   		postHttpRequest(http_request, url, params + '&element=' + element);
		return true;
	}
}