
var gFormName="dummyForm";
var gDivId="dummyFormDiv";

// pre-defined parameter names
var gActionParam="do";

/**
 *	a helper method to create back hidden values and perform form submit. (beta version)
 */
function submitDummy (pParams, pFormName)
{
	var aFrm=null;
	var aDivId=null;
	var aDiv=null;
	var aParams=pParams.split (";");
	var aParamsList=null;
	
	// 1) get form object (optional, create it just in case only)
	if (pFormName!=null)
	{
		aFrm=document.forms [pFormName];
		aDivId=pFormName+"Div";
	}
	else
	{
		aFrm=document.forms [gFormName];
		aDivId=gDivId;
	}
	
	// 2) get the targetted div
	aDiv=document.getElementById (aDivId);

	// 2.5) cleanup div
	cleanUpDummyDiv (aFrm, aDiv);
	
	// 3) parse params to JSon
	if (aParams!=null)
	{
		aParamsList=convertToJSon (aParams);
	}
	
	// 4) dynamic add back params to the aFrm object
	if (aParamsList!=null)
	{
		for (var i=0; i<aParamsList.length; i++)
		{
			populateFormParams (aFrm, aDiv, aParamsList[i]);
		}
	}

	// 5) form submit
	if (aFrm!=null)
	{
		aFrm.submit ();
	}	
}

/**
 * 	break down the paramVal into a JSon, return the Array of JSon(s)
 */
function convertToJSon (pParamsArray)
{
	var aArr=new Array ();
	
	for (var i=0; i<pParamsArray.length; i++)
	{
		var aNameValPair=pParamsArray[i].split ("=");
		aArr.push (new JSon (aNameValPair[0], aNameValPair[1]));
	}
	
	return aArr;
}

/**
 *	Add hidden parameters to the dummyForm passed in as "pFormObj"
 */
function populateFormParams (pFormObj, pDivObj, pJSon)
{
	if (pFormObj!=null && pDivObj!=null && pJSon!=null)
	{
		if (pJSon.name==gActionParam)
		{
			pFormObj.action=pJSon.value+".do";
		}
		else 
		{
			// add a dynamic hidden html field....
			pDivObj.appendChild (createHiddenHtmlField (pJSon.name, pJSon.value));
		}
	}
}

/**
 *	A helper method to create a hidden html field.
 */
function createHiddenHtmlField (pName, pValue)
{
	var aHid=document.createElement("input");
	
	if (aHid!=null)
	{
		aHid.type="hidden";
		aHid.name=pName;
		aHid.value=pValue;
	}
	
	return aHid;
}

/**
 *	cleanup the hidden fields (to prevent the accumulation of previous data on memory / dhtml)
 */
function cleanUpDummyDiv (pForm, pDiv)
{
	if (pDiv!=null)
	{
		while (pDiv.firstChild)
		{
			pDiv.removeChild (pDiv.firstChild);
		}
	}
}


/**
 * JSon / ValueObject 
 */
function JSon (pName, pValue)
{
	this.name=pName;
	this.value=pValue;
}
