// Function to add a no.of Rows as Default
function AddRowDefault(tbname,DefCount){
	
	var tbDef = document.getElementById(tbname);
	
	var RowCount = tbDef.rows.length;
	


	if (RowCount == 2)
	{
		var c=1;
		var tempcount=0;
		for (c = 0; c < DefCount; c++) {
			tempcount = RowCount+c;			
			var temp = tbDef.insertRow(tempcount);
			dceAddCell(tbDef.rows[1], temp);
	 	
		}
	}
	
}

//	Function to add a new Row in the given table
function dceAddRow(tableName) {
	var objRow;
	var tableElement = document.getElementById(tableName);	//	Get the table element
	var tBody = tableElement.tBodies[0];
	var rowLength = (arguments.length > 1) ? arguments[1] : 1;
	/*if (!insertRowValidation(tableName)) {
		alert("Previous Row is Empty");
		return false;
	}*/

	for(var i = 0; i < rowLength; i++) {
		objRow = tBody.insertRow(tBody.rows.length);
		dceAddCell(tBody.rows[0], objRow);
		dceClearAllValues(objRow);
	}
}

// Check Validation in Pervious Rowfields(Not Empty) for Adding New Row
function insertRowValidation(tableName) {
	var tabname = document.getElementById(tableName).childNodes[1];	//	Get the table element
	var Rowlength = tabname.childNodes.length;
	var Collength = tabname.childNodes[0].childNodes.length;
	//alert("Rows len  :"+Rowlength);
	//alert("Cols len :"+Collength);
	for (var r=0;r<Rowlength;r++) {
		for (var c=1;c<Collength;c++) {  // Excluding S.NO
			//alert("Value "+c+ ":"+tabname.childNodes[r].childNodes[c].childNodes[0].value);
			
			// Checking for Empty Fields( null for text && 0 for dropdownbox)
			if ((tabname.childNodes[r].childNodes[c].childNodes[0].value == "") || (tabname.childNodes[r].childNodes[c].childNodes[0].value == 0))	{
				tabname.childNodes[r].childNodes[c].childNodes[0].focus()
				return false;
			}
		}
	}
	return true;
}

//	Function is used add each cell from the source to destination row
function dceAddCell(sourceRow, destRow) {
	var objCell = destRow.insertCell(0);
	objCell.innerHTML = destRow.rowIndex;
	for(var i = 1; i < sourceRow.cells.length; i++) {
		objCell = destRow.insertCell(destRow.cells.length);
		var attrs = sourceRow.cells[i].attributes;
		for(var j = 0; j < attrs.length; j++) {
			var objAttr = attrs[j];
			if(objAttr.nodeName != "tabIndex") {
				objCell.setAttribute(objAttr.nodeName, objAttr.nodeValue);
			}
		}
		objCell.innerHTML = sourceRow.cells[i].innerHTML;
	}
}

//	Function to clear all the values
function dceClearAllValues(objRow) {
	var element,childNode;
	for(var i = 1; i < objRow.cells.length; i++) {
		childNodes = objRow.cells[i].childNodes;
		
		for(var j = 0; j < childNodes.length; j++) {
			element = childNodes[j];
			//alert("element.type  :"+element.type);
			switch(element.type) {
				/*case "select-one" :
					
					if( i != 3) 
						element.selectedIndex = 0;
					else
						element.options.length=0;
					break;*/
				case "text":
					element.value = "";
					break;
				case "textarea":
					element.value = "";
					break;
				case "select-multiple":
					dceClearMultiSelect(element);
					break;
	/*			case "select-multiple":
					dceClearMultiSelect(element);
					break;*/
			}
		}
	}
}

//	Function to clear multi select value
function dceClearMultiSelect(objElement) {
	for(var i = 0; i < objElement.options.length; i++) {
		objElement.options[i].selected = false;
	}

}

// For Generate XML
function generateRowXml(obj, elementName){
  var strXml1="";
  var tableElement = document.getElementById(obj);
  var rows = tableElement.tBodies[0].rows;
  var length = rows.length;
 
  /*if (!insertRowValidation(obj)) {	// Checking For Empty Field
		alert("Fill the Grid Details ");
		return false;
	}   */ 

//      alert("outside");
		for(var i=0;i<length;i++){
			strXml1 +="<"+elementName+"  "
			strXml1 += dceGetTableElements(rows[i]);
			strXml1 += "/>";
		}
	//alert("innerstrXML :"+strXml1)
	//return false;
	return strXml1;
}

/*
//	Function to Check elements is there
function dceCheckTableElements(tableElement) {
	var arrElements1 = jsfChildElements(tableElement);
//	var str1 = "";
//	for(var v = 0; v < arrElements.length; v++) {
//		param1 = arrElements[v].getAttribute("param");
//		if(param1) {
	alert(dceGetValue(arrElements[0]);
			if(dceGetValue(arrElements[0]) != '') {
				//str += param + '="' +dceGetValue(arrElements[i]) + '" ';
				return true;
			}
		}
	}
	return str;
}
*/

//	Function to get elements value
function dceGetTableElements(tableElement) {
	var arrElements = jsfChildElements(tableElement);
	var str = "";
	for(var i = 0; i < arrElements.length; i++) {
		param = arrElements[i].getAttribute("param");
		if(param) {
			if(dceGetValue(arrElements[i]) != '' && dceGetValue(arrElements[i]) !='--Select--') {
				str += param + '="' +dceGetValue(arrElements[i]) + '" ';
			}
//			else
//				str += param + '=""';
		}
	}
	return str;
}

function jsfChildElements(inputCtl) {
	if(inputCtl.tagName == "FORM" ) {
		return inputCtl.elements;
	}else {
		var isSortNedded = (arguments.length > 1) ? arguments[1] : true;
		arrObject = new Array();
		var re = /INPUT|SELECT|TEXTAREA|hidden/gi;
		arrObject = jsfAddObjectToArray(arrObject, inputCtl.getElementsByTagName("INPUT"));
		arrObject = jsfAddObjectToArray(arrObject, inputCtl.getElementsByTagName("SELECT"));
		arrObject = jsfAddObjectToArray(arrObject, inputCtl.getElementsByTagName("TEXTAREA"));
		arrObject = jsfAddObjectToArray(arrObject, inputCtl.getElementsByTagName("HIDDEN"));
		if(arrObject.length > 0 && isSortNedded) {
			arrObject = jsfSortArrayElements(arrObject, arrObject[0].form.elements);
		}
		return arrObject;
	}
}

//	Sort elements in the form order by given 

function jsfSortArrayElements(divArr, formArr) {
	var arrElements = new Array();
	for(var i = 0; i < formArr.length; i++) {
		if( jsfIsArrayValueExist(divArr, formArr[i]) ) {
			arrElements[arrElements.length] = formArr[i];
		}
	}
	return arrElements;
}

function jsfAddObjectToArray(array, object) {
	for(var i=0; i < object.length; i++) {
		array[array.length] = object[i];
	}
	return array;
}

function jsfIsArrayValueExist(arr, value) {
	for(var i = 0; i < arr.length; i++) {
		if(arr[i] == value)return true;
	}
	return false;
}

function dceGetValue(element) {
	if(element.type.match(/^select|^text|^hidden/gi)) {
		var re = /^[m|n]/gi;
		var valid = element.getAttribute("valid");
		if(valid) {
			if (re.test(valid))	{
				return dceEncodeXml(dceConvertDate(element.value));
			}
			
		}
		
		return dceEncodeXml(element.value);
	}
	return "";
}

//	Function to encode xml values

function dceEncodeXml(strInput) {
	strInput = strInput.replace(/&/g, '&amp;'); //	replace amp;
	strInput = strInput.replace(/</g, '&lt;');	//	replace <  with &lt;
	strInput = strInput.replace(/>/g, '&gt;'); //	replace > with &gt;
	strInput = strInput.replace(/"/g, '&quot;'); // replace double quote;
	strInput = strInput.replace(/'/g, '&apos;'); //	replace single quote;
	return strInput;
}

//	Function to convert date
function dceConvertDate(strInput) {
	var arrInput = strInput.split(/\/|-/gi);
	if(arrInput.length >2 ) {
		return arrInput[1] + '/' + arrInput[0] + '/' + arrInput[2];
	}
	return strInput;
}

// Function to Remove Row
function RemoveRow(tbname){
	var tbDele = document.getElementById(tbname);
	var DellastRow = tbDele.rows.length;
	//alert(DellastRow);
	if (DellastRow == 2)
		alert("Cant Delete First Row");
	if(DellastRow >2) {
		if(!ConfirmMsg("Are you sure you want to delete the Row?"))
			return false;
		tbDele.deleteRow(DellastRow - 1);
	}
}

function ConfirmMsg(txtMsg) { 
   onClickConfirm = false; 
    if (confirm(txtMsg)) 
        onClickConfirm = true; 
	//alert(onClickConfirm);
    return onClickConfirm; 
}

