// array for last field flag 
var aLFF = new Array();

function addTr(objSwitched, nLimit)
{
	var objRow = objSwitched.parentNode.parentNode;
	var objTbl = objRow.parentNode;		
	
	if (objRow == objTbl.rows[objTbl.rows.length - 1] && (!(nLimit > 0) || objTbl.rows.length < nLimit))
	{		
		objNew = objRow.cloneNode(true);
		objTbl.appendChild(objNew);
		
		var sObjName = objSwitched.getAttribute("name");
		var input = document.getElementsByName(sObjName)[objTbl.rows.length-1];
	
		if (input)
		{
			input.value = "";
			input.id = sObjName + "_" + (objTbl.rows.length-1);
		}	
  	}	 
  	else
  	{	  		
  		if (nLimit == objTbl.rows.length)	  			  			
  			aLFF[objTbl.parentNode.id] = 1;	 
  		 	
  	} 	
}

function delTr(objSwitched, nLimit)
{		
	var objRow = objSwitched.parentNode.parentNode; // TR
	var objTbl = objRow.parentNode; // TBODY
	
	if (objTbl.rows.length > 1)
	{
		for (var i=0; i<objTbl.rows.length; i++)
			if (objTbl.rows[i] == objRow)
			{
				if ((i == objTbl.rows.length-1 || 
					 objTbl.rows.length == nLimit) && 
					(aLFF[objTbl.parentNode.id] == 1))
				{
					var objNewRow = objRow.cloneNode(true);						
					objTbl.appendChild(objNewRow);
				}
				objTbl.deleteRow(i);
				if (aLFF[objTbl.parentNode.id] == 1)
				{						
					aLFF[objTbl.parentNode.id] = 0;
				}
			}
	}
}

function OnValueChange(objSwitched, nLimit)
{	
	try
	{
		if (objSwitched.value != "")						
			addTr(objSwitched, nLimit);		
		else			
			delTr(objSwitched, nLimit);			
	}	
	catch (e){}
}
