var _aElements = Array();

function selezionaTutto(check){
	var aElements = document.getElementsByTagName('INPUT');
	var numElements = aElements.length;
	for(i=0; i < numElements; i++){
		elem = aElements[i];
		if(elem !== check && elem.type == 'checkbox' && !elem.disabled) elem.checked = check.checked;
	}
}

function creaModuloInserimento(id, rif, content){
	if(getElement(id + '_form')) return false;
	
	var form = document.createElement('FORM');
	
	if(form){
		form.id = id + '_form';
		form.action = '';
		form.method = 'POST';
				
		form.style.clear = 'left';
		form.style.marginBottom = 10 + "px";
		form.style.marginRight = 22 + "px";
		rif.parentNode.insertBefore(form, rif);
		form.innerHTML = content;
		form.style.height = form.firstChild.offsetHeight + "px";
		
		var azione = document.createElement('INPUT');
		azione.id = 'azione';
		azione.name = 'azione';
		azione.type = 'hidden';
		azione.value = 'aggiungi';
		form.appendChild(azione);
	}
}

function creaModuloModifica(id, rif, content){
	rif.style.height = 'auto';
	
	var rowDetails = getElement(rif.id + 'Details');
	if(!rowDetails) return false;
	rowDetails.innerHTML += content;
	
	var aParams = Array();
	var next = rowDetails.firstChild;
	
	while(next){
		aParams = next.id.split("_");
		// aParams[0] => condizioni in pipe
		// aParams[1] => ignora
		// aParams[2] => nome campo 
		if(next.id && aParams.length == 3){ 
			_aElements.push(next.id);
		}
		next = next.nextSibling;
	}
}

function gestioneModuloModifica(datasource){
	ajaxGet('metodi/ajaxTableActions.php?action=modifica&datasource=' + datasource + '&dati=' + _aElements.join("*"), compilaModuloModifica);
}

function compilaModuloModifica(content){
	var aValori = content.split('|');
	var aCampo = Array();
	var elem;
	for(var i in aValori){
		aCampo = aValori[i].split('=');
		elem = getElement(aCampo[0] + '=' + aCampo[1]);
		if(elem) elem.value = aCampo[2];
	}
}

function nascondiAvviso(){
	var box = getElement('avviso');
	if(box) box.parentNode.removeChild(box);	
}

function mostraAvviso(content, rif, timeout){
	var box = document.createElement('DIV');
	rif = getElement(rif);
	if(box && rif){
		box.id = 'avviso';
		box.style.clear = 'left';
		box.style.marginBottom = 10 + "px";
		box.style.marginLeft = 10 + "px";
		box.style.border = "1px solid #cfcfcf";
		box.style.marginRight = 22 + "px";
		box.style.padding = 10 + "px";
		box.style.backgroundColor = "#FFFFD1";
		rif.parentNode.insertBefore(box, rif);
		box.innerHTML = formatHtml(content);
		if(timeout) setTimeout("nascondiAvviso()", timeout);
	}
}

function annulla(aElements, type){
	var aElementsTemp = document.getElementsByTagName('INPUT');
	var numElements = aElements.length;
	var id = '';
	
	// moduli di modifica
	if(!type || type == 'modifica'){
		for(i=0; i < numElements; i++){
			if(aElements[i].id == 'selezionaTutto' &&  aElements[i].checked){
				aElements[i].checked = false;
				aElements[i].disabled = false;						
			} 
			if(aElements[i].id !== 'selezionaTutto' && aElements[i].type == 'checkbox' && aElements[i].checked){
				aElements[i].checked = false;
				aElements[i].disabled = false;
				id = aElements[i].id;
				elem = getElement(id.replace(/_check/g, '_rowDetails'));
				if(elem) elem.innerHTML = '';
			}
		}
	}	
	
	// modulo inserimento
	if(!type || type == 'inserimento'){
		addForm = getElement('aggiungi_form');
		if(addForm){ 
			addForm.parentNode.removeChild(addForm);
			
			// reimposto l'arrey degli elementi
			aElementsTemp = document.getElementsByTagName('INPUT');
			numElements = aElementsTemp.length;
	
			aElements = Array();
			for(i=0; i < numElements; i++) aElements[i] = aElementsTemp[i];
		}
	}
	return true;
}

function eseguiAzione(action, datasource, keys, content){
	var aElementsTemp = document.getElementsByTagName('INPUT');
	var numElements = aElementsTemp.length;
	var confirmed = false;
	var elem = '';

	var aElements = Array();
	for(i=0; i < numElements; i++) aElements[i] = aElementsTemp[i];

	if(!action.value && action.id){
		switch(action.id){
			case 'aggiungi':	
				annulla(aElements, 'modifica');		
				var details = getElement('details');
				if(details) creaModuloInserimento('aggiungi', details, formatHtml(content));
				return true;
			break;
				
			case 'modifica':
				annulla(aElements, 'inserimento');
				_aElements = Array();
				for(i=0; i < numElements; i++){
					elem = aElements[i];
					if(elem.id == 'selezionaTutto' && elem.checked) elem.disabled = true; 
					if(elem.id !== 'selezionaTutto' && elem.checked && !elem.disabled){
						elem.disabled = true;
						var row = formatHtml(content);
						row = row.replace(/KEYFIELDS/g, elem.id + '_');
						creaModuloModifica(elem.id, elem.parentNode, row);
						getElement(elem.id).checked = true;
					}
				}
				var azione = document.createElement('INPUT');
				azione.id = 'azione';
				azione.name = 'azione';
				azione.type = 'hidden';
				azione.value = 'modifica';
				document.ajaxTable.appendChild(azione);
	
				gestioneModuloModifica(datasource);
		
				action.value = '';
				
			break;	
			case 'salva':
				var insertMod = getElement('aggiungi_form');
				
				mostraAvviso('salvataggio in corso, attendere ...', 'details');
				
				if(insertMod) insertMod.submit();
				else document.ajaxTable.submit();
				return true;
			break;

			case 'elimina':
				if(confirm('Gli elementi selezionati verrano eliminati, procedere?')) confirmed = true;
				var values = ''; 
				for(i=0; i < numElements; i++){
					elem = aElements[i];
					if(elem.id == 'selezionaTutto') elem.checked = false;
					if(elem.id != 'selezionaTutto' && elem.type == 'checkbox' && elem.checked){
						var row = elem.id.split("_");
						id = row[0];
						row = getElement(id + "_row"); 
						rowDetails = getElement(id + "_rowDetails");
						if(!row) return false;
						if(confirmed){
							values += id + "_";
							row.style.display = 'none';
							if(rowDetails) rowDetails.parentNode.removeChild(rowDetails);
						}
					}
				}
				if(confirmed){ 
					var params = '?';
					params += 'action=elimina';
					params += '&datasource=' + datasource;
					params += '&keys=' + keys;
					params += '&values=' + values.substr(0, values.length-1);
					ajaxGet('metodi/ajaxTableActions.php' + params, ajaxTableActions, action);
					row.style.display = 'none';
				}	
			break;
			
			case 'annulla':
				annulla(aElements);
			break
		}
	}
	/*
	switch(action.value){
		case 'azione1':
		break;
		
		case 'azione2':
		break;	
	}			
	*/
}

function ajaxTableActions(content, action){
	action.value = '';
	aContent = content.split("|");
	if(aContent[0] == 'errore') alert(aContent[1]);	
}

function compilaCampo(idCampo, value){
	var elem = getElement(idCampo);
	if(elem) elem.value = value;
}

function getDBName(username){
	return 'db' + username;
}