/***********************************
AJAXSubmit.js

Functions that help with sumbmitting
forms via AJAX instead of the normal
method.

REQUIRES: 
	resources.js
		GetHTTPObject
		Right

************************************/

function DisableForm(Form) {
	var Inputs = Form.getElementsByTagName("INPUT");
	var x;
	var obj;
	for (x=0;x<Inputs.length;x++) {
		obj = Inputs[x];
		if (!obj.oDisabled) obj.oDisabled = new Array();
		if (!obj.disabled) obj.disabled = false;
		obj.oDisabled.push(obj.disabled);
		obj.disabled = true;
	}
	
	var TextAreas = Form.getElementsByTagName("TEXTAREA");
	for (x=0;x<TextAreas.length;x++) {
		obj = TextAreas[x];
		if (!obj.oDisabled) obj.oDisabled = new Array();
		if (!obj.disabled) obj.disabled = false;
		obj.oDisabled.push(obj.disabled);
		obj.disabled = true;
	}
}

function RestoreForm(Form) {
	var Inputs = Form.getElementsByTagName("INPUT");
	var x;
	var obj;
	for(x=0;x<Inputs.length;x++) {
		obj = Inputs[x];
		if (obj.oDisabled && obj.oDisabled.length>0) {
			obj.disabled = obj.oDisabled.pop();
		}
	}
	var TextAreas = Form.getElementsByTagName("TEXTAREA");
	for (x=0;x<TextAreas.length;x++) {
		obj = TextAreas[x];
		if (obj.oDisabled && obj.oDisabled.length>0) {
			obj.disabled = obj.oDisabled.pop();
		}
	}
}

function AJAXSubmit(DestObj, url, Parameters)
{
	if (Parameters == undefined) {
		AJAXGenericLoad(DestObj, url);
	} else {
		var Request = GetHTTPObject();
		Request.onreadystatechange = function () {
			if (Request.readyState == 4) {
				DestObj.innerHTML = Request.responseText;
			}
		}
		Request.open('POST', url, true);
		Request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		Request.setRequestHeader("Content-length", Parameters.length);
		Request.setRequestHeader("Conection", "close");
		Request.send(Parameters);
	}
}

function AJAXSubmitCallback(func, url, Parameters)
{
	if (Parameters == undefined) {
		AJAXGenericLoad(DestObj, url);
	} else {
		var Request = GetHTTPObject();
		Request.onreadystatechange = function () {
			if (Request.readyState == 4) {
				func(Request.responseText);
			}
		}
		Request.open('POST', url, true);
		Request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		Request.setRequestHeader("Content-length", Parameters.length);
		Request.setRequestHeader("Conection", "close");
		Request.send(Parameters);
	}
}

function AJAXCollect(Form)
{
	var Parameters = "";
	var x;
	var Inputs = Form.getElementsByTagName("INPUT");
	var obj;
	for (x=0;x<Inputs.length;x++) {
		obj = Inputs[x];
		if (obj.id && !obj.name) obj.name = obj.id;
		if (!obj.disabled || obj.disabled=="false") {
			if (obj.type.toUpperCase() == "TEXT" || obj.type.toUpperCase()=="PASSWORD" || obj.type.toUpperCase()=="HIDDEN") {
				if (obj.value && obj.value != "") {
					Parameters += (Parameters==""?"":"&")+encodeURI(obj.name)+"="+encodeURI(obj.value);
				}
			} else if (obj.type.toUpperCase() == "RADIO") {
				if (obj.checked) Parameters += (Parameters==""?"":"&")+encodeURI(obj.name)+"="+encodeURI(obj.value);
			} else if (obj.type.toUpperCase() == "CHECKBOX") {
				if (Right(obj.name, 2)!="[]") obj.name = obj.name+"[]";
				if (obj.checked) Parameters += (Parameters==""?"":"&")+encodeURI(obj.name)+"="+encodeURI(obj.value);
			}
		}
	}
	var TextAreas = Form.getElementsByTagName("TEXTAREA");
	for (x=0;x<TextAreas.length;x++) {
		obj = TextAreas[x];
		if (!obj.disabled || obj.disabled=="false") {
			if (obj.id && !obj.name) obj.name = obj.id;
			if (obj.value && obj.value != "") {
				Parameters += (Parameters==""?"":"&")+encodeURI(obj.name)+"="+encodeURI(obj.value);
			}
		}
	}
	if (Form.submitter) {
		if (Form.submitter.id && !Form.submitter.name) Form.submitter.name = Form.submitter.id;
		Parameters += (Parameters==""?"":"&")+encodeURI(Form.submitter.name)+"="+encodeURI(Form.submitter.value);
	}
	return Parameters;
}

function GetParentForm(obj) 
{
	var f = obj.parentNode;
	while (f.tagName.toUpperCase()!="FORM" && f.parentNode) {
		f = f.parentNode;
	}
	if (f.tagName.toUpperCase() == "FORM") return f;
	else return undefined;
}

function SetSubmitter(obj)
{
	var f = GetParentForm(obj);
	if (f) f.submitter = obj;
}

