var g_nameSeparator = "\021";	// <name>=<value>
var g_pairSeparator = "\022";	// <name-value>&<name-value>


//+++++ Object to prepare submit data for elements
function PrepareSubmitInit() {
}

//+++++
SimpleSubmit.prototype.init = PrepareSubmitInit;
SimpleSubmit.prototype.Format;

function SimpleSubmit(fmtFunc) {
	this.Format = fmtFunc;
}

//+++++
PrepareSubmitByteArray.prototype.init	= PrepareSubmitInit;
PrepareSubmitByteArray.prototype.Format = ByteArray_Format;
PrepareSubmitByteArray.prototype.fmtFunc;
PrepareSubmitByteArray.prototype.separator;

function PrepareSubmitByteArray(fmtFunc, separator) {
	this.fmtFunc = fmtFunc;
	this.separator = separator;
}

function ByteArray_Format(value) {
	return this.fmtFunc(value, this.separator);
}

//+++++
function DHMS_Format(value) {
	var dataForm = document.forms["theDataForm"];
	var fmtVal;

	// Format <date>@<time>
	// date = D/M/Y, time = H:M:S
	fmtVal = value + "/00/00" + "@" +
		dataForm.elements["DHMS_hour"].value + ":" +
		dataForm.elements["DHMS_min"].value;

	if (dataForm.elements["DHMS_sec"] != null)
		fmtVal += ":" + dataForm.elements["DHMS_sec"].value;

	return fmtVal;
}

var g_prepareSubmitList = new Array();
g_prepareSubmitList["BinaryToDec"]		= new SimpleSubmit(BinaryToDec);
g_prepareSubmitList["HexToDec"]			= new SimpleSubmit(HexToDec);
g_prepareSubmitList["ByteArrayHex"]		= new PrepareSubmitByteArray(ConvertByteArrayHex, ".");
g_prepareSubmitList["ByteArrayDec"]		= new PrepareSubmitByteArray(ConvertByteArray, "/");
g_prepareSubmitList["NibbleArrayDec"]	= new PrepareSubmitByteArray(ConvertNibbleArray, ".");
g_prepareSubmitList["DHMS"]				= new SimpleSubmit(DHMS_Format);
g_prepareSubmitList["IntWith#"]			= new SimpleSubmit(IntWithHash_Format);


/* Formats the submit data for System Data */
function PrepareSubmitData_SysData(theDataForm) {
	var theSubmitStr = "";
	var i=0;
	var value;
	var element;
	var prepareSubmit;
	var elInfoIndex;
	
	for(i = 0; i < theDataForm.length; i++) 
	{
		element = theDataForm.elements[i];
		value = "";

		elInfoIndex = ElInfo_Find(element);
		if (elInfoIndex < 0)
			continue;

		if(g_elInfoList[elInfoIndex].dirty == 0)
			continue;

		switch(element.type)
		{
			case "combobox":
			case "select-one":
				value = element.options[element.selectedIndex].value;
				break;
			case "text":
			case "password":
			case "hidden":
				prepareSubmit = g_prepareSubmitList[g_elInfoList[elInfoIndex].prepareSubmit];
				if (prepareSubmit != null)
					value = prepareSubmit.Format(element.value);
				else
					value = element.value;
				break;
			case "checkbox":
				if(element.checked)
					value = g_elInfoList[elInfoIndex].onValue;
				else
					value = g_elInfoList[elInfoIndex].offValue;
				break;
			case "radio":
				if(element.checked)
					value = element.value;
				else
					continue;
				break;
			case "slider":
				value = element.value;
				break;
			case "select-multiple":
				{
					var cnt = 0;
					for(var i = 0; i < element.length; i++)
					{
						if(element.options[i].selected)
						{
							if(cnt > 0)
								value = value + g_pairSeparator + element.name + g_nameSeparator;
							value = value + element.options[i].value ;
							cnt++;
						}
					}
				}
				break;
		};
		theSubmitStr += (g_elInfoList[elInfoIndex].submitName + g_nameSeparator + value + g_pairSeparator);
	}
	// Remove trailing separator char
	if (theSubmitStr.length > 0)
		theSubmitStr = theSubmitStr.substring(0, theSubmitStr.length-1);

	return theSubmitStr;
}

function PrepareSubmitData_PCProSettingsAdmin(theDataForm) {
	var theSubmitStr = "";
	var i = 0;
	var element;

	for(i = 0; i < theDataForm.length; i++) 
	{
		element = theDataForm.elements[i];
		if ( (element.type == "checkbox") && 
			 (eval("element.checked") == true) )
		{
			theSubmitStr += element.name;
		}
	}

	return theSubmitStr;
}

function PrepareSubmitData_Login(theDataForm) {
	var theSubmitStr;
	theSubmitStr = theDataForm.elements["userName"].value + "," + theDataForm.elements["password"].value;
	return theSubmitStr;
}

