/* cria uma nova linha(tabela) filha */
function GT_newChild(obj){
	//pega a tabela da linha e copia
	var objTable = getTable(obj);
	var objTableNew = objTable.cloneNode(true);
	
	//cria a indentação
	var td1 = objTableNew.getElementsByTagName("TD")[0];
	var tdWidth = new Number(td1.width);
	td1.width = tdWidth + 20;
	
	//insere a tabela clonada e um div depois
	var objDiv = objTable.nextSibling;
	var newDiv = document.createElement("DIV");
	if(objDiv.childNodes[0] != null){
		objDiv.insertBefore(newDiv, objDiv.childNodes[0]);
		objDiv.insertBefore(objTableNew, objDiv.childNodes[0]);
	}else{
		objDiv.appendChild(objTableNew);
		objDiv.appendChild(newDiv);
	}
	
	//altera o name dos inputs da linha nova
	addItemMenuTable(objTableNew);
	cleanValueTable(objTableNew);
		
	//altera o name dos inputs dos irmaos da linha nova
	var objActual = objTableNew.nextSibling;
	while(objActual != null){
		if(objActual.nodeName == "TABLE"){
			increaseTable(objActual);	
		}
		objActual = objActual.nextSibling;
	}	

	printCode();
}

/* cria uma nova linha(tabela) abaixo */
function GT_newBrother(obj){
	//pega a tabela da linha e copia
	var objTable = getTable(obj);
	var objTableNew = objTable.cloneNode(true);
	cleanValueTable(objTableNew);
	
	//pega o proximo objeto depois do div da table
	var objNext = objTable.nextSibling.nextSibling;
	
	//insere a tabela e o div
	var newDiv = document.createElement("DIV");	
	if(objNext == null){
		objTable.parentNode.appendChild(objTableNew);
		objTable.parentNode.appendChild(newDiv);
	}else{
		objTable.parentNode.insertBefore(objTableNew, objNext);
		objTable.parentNode.insertBefore(newDiv, objNext);
	}
	
	//aumenta o index das proximas linhas
	var objActual = objTableNew;
	while(objActual != null){
		if(objActual.nodeName == "TABLE"){
			increaseTable(objActual);	
		}
		objActual = objActual.nextSibling;
	}

	printCode();
}

function GT_deleteRow(obj){
	var objLayer = document.getElementById("layerScroll");
	if(objLayer.getElementsByTagName("TABLE").length == 1){
		return
	}
	if(confirm(msgKey("label.js.confirmeExclusao",""))){
		var objTable = getTable(obj);
		
		//altera o name dos inputs das linhas seguintes
		var objActual = objTable.nextSibling;		
		while(objActual != null){
			if(objActual.nodeName == "TABLE"){
				decreaseTable(objActual);	
			}
			objActual = objActual.nextSibling;			
		}		
		//		
		var objDiv = objTable.nextSibling;					
		objTable.parentNode.removeChild(objTable);		
		objDiv.parentNode.removeChild(objDiv);
		
	}
	printCode();
}

function getTable(obj){
	var table = obj
	while(table.nodeName != "TABLE"){
		table = table.parentNode;
	}
	return table;
}

function printCode(){	
	return
	var objLayer = document.getElementById("layerScroll");
	var objCode = document.getElementById("code");
	objCode.value = objLayer.innerHTML;
	
}

function increaseInput(objInput, increaseValue){
	var nameObj = new String(objInput.name);
	var posKey1 = nameObj.lastIndexOf("[");
	var posKey2 = nameObj.lastIndexOf("]");								
	var nuIndex = new Number(nameObj.substring(posKey1 + 1, posKey2));
	objInput.name = nameObj.substring(0, posKey1 + 1) + (nuIndex + increaseValue) + nameObj.substring(posKey2);
}

function increaseTable(objTable){
	var arrayInputs = objTable.getElementsByTagName("INPUT");
	var oldInput = "";
	var newInput = "";
	for(i = 0; i < arrayInputs.length; i++){
		if(i == 0){
			oldInput = arrayInputs[0].name;
		}
		increaseInput(arrayInputs[i], 1);
		if(i == 0){
			newInput = arrayInputs[0].name;
		}
	}
	var arraySelect = objTable.getElementsByTagName("SELECT");	
	for(i = 0; i < arraySelect.length; i++){
		increaseInput(arraySelect[i], 1);
	}	
	changeChildsTable(objTable, newInput, oldInput);
}

function decreaseTable(objTable){
	var arrayInputs = objTable.getElementsByTagName("INPUT");
	var oldInput = "";
	var newInput = "";
	for(i = 0; i < arrayInputs.length; i++){
		if(i == 0){
			oldInput = arrayInputs[0].name;
		}
		increaseInput(arrayInputs[i], -1);
		if(i == 0){
			newInput = arrayInputs[0].name;
		}
	}
	var arraySelect = objTable.getElementsByTagName("SELECT");
	for(i = 0; i < arraySelect.length; i++){
		increaseInput(arraySelect[i], -1);
	}	
	changeChildsTable(objTable, newInput, oldInput);
}

function addItemMenuTable(objTable){
	var arrayInputs = objTable.getElementsByTagName("INPUT");
	var oldInput = "";
	var newInput = "";
	for(i = 0; i < arrayInputs.length; i++){
		if(i == 0){
			oldInput = arrayInputs[0].name;
		}
		addItemMenuInput(arrayInputs[i]);
		if(i == 0){
			newInput = arrayInputs[0].name;
		}
		
	}
	var arraySelect = objTable.getElementsByTagName("SELECT");	
	for(i = 0; i < arraySelect.length; i++){
		addItemMenuInput(arraySelect[i]);
	}	
	changeChildsTable(objTable, newInput, oldInput);
}

function addItemMenuInput(objInput){
	var nameObj = new String(objInput.name);
	var posKey = nameObj.lastIndexOf("]");									
	objInput.name = nameObj.substring(0, posKey + 1) + ".itemMenu[0]" + nameObj.substring(posKey + 1);
}

function cleanValueTable(objTable){
	var arrayInputs = objTable.getElementsByTagName("INPUT");
	for(i = 0; i < arrayInputs.length; i++){
		//Para o checkBox é necessário manter o valor, senão não é salvo. 				
		if(arrayInputs[i].type != "checkbox"){	
			arrayInputs[i].value = "";
		}
	}
	var arraySelect = objTable.getElementsByTagName("SELECT");	
	for(i = 0; i < arraySelect.length; i++){
		arraySelect[i].selectedIndex = 0;
	}	
}

//altera o name de todos inputs da div
function changeChildsTable(objTable, newInput, oldInput){
	//pega a posição do "valor antigo do name" do input
	var posLastPointOldInput = oldInput.lastIndexOf(".");
	//pega a posição do "valor novo do name" do input
	var posLastPointNewInput = newInput.lastIndexOf(".");
	//recupera o novo prefixo com base no "valor novo do name" do input
	var prefixeName = newInput.substring(0, posLastPointNewInput);	
	//pega os elementos dentro da div
	var objDiv = objTable.nextSibling;
	var arrayInputs = objDiv.getElementsByTagName("INPUT");
	for(i = 0; i < arrayInputs.length; i++){
		nameInput = new String(arrayInputs[i].name);		
		arrayInputs[i].name = prefixeName + nameInput.substring(posLastPointOldInput);		
	}
	var arraySelect = objDiv.getElementsByTagName("SELECT");	
	for(i = 0; i < arraySelect.length; i++){
		nameSelect = new String(arraySelect[i].name);
		arraySelect[i].name = prefixeName + nameSelect.substring(posLastPointOldInput);
	}	
}
