function inserisciRiga(el,destbody,destrow,azione,offsetriga,preset,postset,mult,url2,nodel,fda,elthis,noinsert,prefda,altertext,nofda){
if(noinsert==true){
    el.parentNode.className=el.parentNode.className.split("ajax")[0] + " ajaxA";
}
var row=recuperaTagSuperiore(el,'TR');
var body=recuperaTagSuperiore(el,'TBODY');
var elencoCampiInput=row.getElementsByTagName('INPUT');
var elencoCampiSelect=row.getElementsByTagName('SELECT');
    var elencoCampiTextArea=row.getElementsByTagName('TEXTAREA');
var urlAttributi='';
if(DataRowValidation(elencoCampiInput)){
for(var i=0;i<elencoCampiInput.length;i++){
if(elencoCampiInput[i].name!="" && elencoCampiInput[i].value!=""){
if(elencoCampiInput[i].name=='urlbase'){
urlBase=elencoCampiInput[i].value;
}else{
if(elencoCampiInput[i].type=="checkbox"){
if(elencoCampiInput[i].checked)
urlAttributi=urlAttributi+'&'+elencoCampiInput[i].name+'=1';
else
urlAttributi=urlAttributi+'&'+elencoCampiInput[i].name+'=0';
}else{
urlAttributi=urlAttributi+'&'+elencoCampiInput[i].name+'='+elencoCampiInput[i].value;
}
if(elencoCampiInput[i].type=="text" && nodel!=true){
elencoCampiInput[i].value="";
}
}
}
}
for(var i=0;i<elencoCampiSelect.length;i++){
if(elencoCampiSelect[i].name!=""){
urlAttributi=urlAttributi+'&'+elencoCampiSelect[i].name+'='+elencoCampiSelect[i].value;
}
}
        for(var i=0;i<elencoCampiTextArea.length;i++){
            if(elencoCampiTextArea[i].name!=""){
                    urlAttributi=urlAttributi+'&'+elencoCampiTextArea[i].name+'='+elencoCampiTextArea[i].value;
		    if(nodel!=true){
			elencoCampiTextArea[i].value="";
		    }

            }
        }
var url=urlBase+'?'+urlAttributi.substring(1);
if(preset!=null)
url=preset+url
if(postset!=null)
url=url+postset

if(prefda!=null)
eval(prefda)

if(destbody==null)
ajaxInsertInTagRebuildRow(url,body,row,azione,offsetriga,mult,url2,fda,elthis,noinsert,el,altertext,nofda)
else
ajaxInsertInTagRebuildRow(url,destbody,destrow,azione,offsetriga,mult,url2,fda,elthis,noinsert,el,altertext,nofda)
}
}
//numrighe è il numero di righe da cancellare dopo la riga attuale
function EliminaRiga(el,funzioneDaEseguire,offsetriga,funzioneDaEseguireElse,confermato,numrighe,eliminaRighe){

if(confermato==null)
    confermato=false;
if(confermato || confirm('Sicuro di cancellare la riga?')){
var row=recuperaTagSuperiore(el,'TR');
var body=recuperaTagSuperiore(el,'TBODY');
var elencoCampiInput=row.getElementsByTagName('INPUT');
var urlAttributi='';
if(DataRowValidation(elencoCampiInput)){
for(var i=0;i<elencoCampiInput.length;i++){
if(elencoCampiInput[i].name!="" && elencoCampiInput[i].value!=""){
if(elencoCampiInput[i].name=='urlbase'){
urlBase=elencoCampiInput[i].value;
}else{
if(elencoCampiInput[i].type=="checkbox"){
if(elencoCampiInput[i].checked)
urlAttributi=urlAttributi+'&'+elencoCampiInput[i].name+'=1';
else
urlAttributi=urlAttributi+'&'+elencoCampiInput[i].name+'=0';
}else{
urlAttributi=urlAttributi+'&'+elencoCampiInput[i].name+'='+elencoCampiInput[i].value;
}
if(elencoCampiInput[i].type=="text"){
elencoCampiInput[i].value="";
}
}
}
}
var url=urlBase+'?'+urlAttributi.substring(1);
ajaxDeleteRowDin(url,el,funzioneDaEseguire,offsetriga,numrighe,eliminaRighe)
}
}else{
if(funzioneDaEseguireElse!=null)
eval(funzioneDaEseguireElse)
}
}
function UpdateRiga(el,request,azione,offsetriga,elthis){
{
var row=recuperaTagSuperiore(el,'TR');
var body=recuperaTagSuperiore(el,'TBODY');
var elencoCampiInput=row.getElementsByTagName('INPUT');
var urlAttributi='';
if(DataRowValidation(elencoCampiInput)){
for(var i=0;i<elencoCampiInput.length;i++){
if(elencoCampiInput[i].name!="" && elencoCampiInput[i].value!=""){
if(elencoCampiInput[i].name=='urlbase'){
urlBase=elencoCampiInput[i].value;
}else{
if(request!=null && elencoCampiInput[i].name=='request'){
urlAttributi=urlAttributi+'&'+elencoCampiInput[i].name+'='+request;
}else{
if(elencoCampiInput[i].type=="checkbox"){
if(elencoCampiInput[i].checked)
urlAttributi=urlAttributi+'&'+elencoCampiInput[i].name+'=1';
else
urlAttributi=urlAttributi+'&'+elencoCampiInput[i].name+'=0';
}else{
urlAttributi=urlAttributi+'&'+elencoCampiInput[i].name+'='+elencoCampiInput[i].value;
}
}
}
}
}
var url=urlBase+'?'+urlAttributi.substring(1);
ajaxUpdateRowDin(url,el,body,row,azione,offsetriga)
}
}
}

function IdentificaTag(stringa,tipo){
var i=0;
var res="";
var abilitaApice=true;
i=stringa.search(tipo)
if(i>=0){
while(i<stringa.length){

if(stringa.charAt(i)=='"'){
abilitaApice=!abilitaApice;
}

if(abilitaApice && stringa.charAt(i)==">"){
res=""+res+stringa.charAt(i);
return res;
}else{
res=""+res+stringa.charAt(i);
}
i++;
}
}else{
return "";
}
}

function AttAttributeToTag(tag,stringa){
var i=0;
var res="";
nomeAttribInCreazione=false
sequenza=0
nomeAttributo=""
valoreAttributo=""
abilitazione=false;
while(i<stringa.length){

if(stringa.charAt(i)!=' ' && sequenza==0){
abilitazione=true
sequenza=1
}
if(sequenza==1){
if(stringa.charAt(i)==' ' || stringa.charAt(i)=='='){
sequenza=2
}else{
nomeAttributo=nomeAttributo+stringa.charAt(i)
}
}
if(sequenza==2){
if(stringa.charAt(i)=='='){
i++
sequenza=3
etichVal=0
}else{
if(stringa.charAt(i)!=' '){
sequenza=0
i--
}
}
}
if(sequenza==3){
if(stringa.charAt(i)!=' '){
if(stringa.charAt(i)=="'")
etichVal=1
if(stringa.charAt(i)=='"')
etichVal=2
sequenza=4
}
}
if(sequenza==4){
if(stringa.charAt(i)==' '){
if(etichVal==0)
sequenza=5
if(etichVal==1 && stringa.charAt(i-1)=="'")
sequenza=5
if(etichVal==2 && stringa.charAt(i-1)=='"')
sequenza=5
if(sequenza!=5)
valoreAttributo=valoreAttributo+stringa.charAt(i)
}else{
if(etichVal==0){
if(stringa.charAt(i)!="="){
valoreAttributo=valoreAttributo+stringa.charAt(i)
}
}else{
valoreAttributo=valoreAttributo+stringa.charAt(i)
}
}
}
if(sequenza==5){
if(stringa.charAt(i)==' '){
sequenza=0
}else{
if(stringa.charAt(i)!="=")
valoreAttributo=valoreAttributo+stringa.charAt(i)
}
}
if(abilitazione&&(sequenza==0||i==stringa.length-1)){
abilitazione=false
if (valoreAttributo.charAt(0)=="'"||valoreAttributo.charAt(0)=='"'){
valoreAttributo=valoreAttributo.substring(1)}
if (valoreAttributo.charAt(valoreAttributo.length-1)=="'"||valoreAttributo.charAt(valoreAttributo.length-1)=='"'){
valoreAttributo=valoreAttributo.substring(0,valoreAttributo.length-1)}
tag.setAttribute(nomeAttributo,valoreAttributo)
nomeAttributo=""
valoreAttributo=""
}

i++
}
}
function RebuildRow(testoRiga,tbody,riga,azione,offsetriga,elthis){
var newR=document.createElement('TR');
var sTR=IdentificaTag(testoRiga,/<tr/i);

var sTDs=testoRiga.split(sTR)[1];
var sTDs=sTDs.split(/<\/tr>/i)[0];
AttAttributeToTag(newR,sTR.substring(3,sTR.length-1))

var sTDelements=sTDs.split(/<\/td>/i)
for(var i=0;i<sTDelements.length-1;i++){
var newTD=document.createElement('TD');
var sTD=IdentificaTag(sTDelements[i],/<td/i);
AttAttributeToTag(newTD,sTD.substring(3,sTD.length-1))

var sTDel=sTDelements[i].split(sTD)[1];
newTD.innerHTML=sTDel
newR.appendChild(newTD)
}
if (offsetriga==null)
offsetriga=0
ChangeInnerHTMLinSubTags(newR,"DIV",tbody.rows.length+1-offsetriga,"numriga")
if(riga==null)
tbody.appendChild(newR)
else
tbody.insertBefore(newR,riga)

if(azione!=null)
eval(azione.replace(/riga/,'newR'))
}

function RebuildRowMult(testoRiga,tbody,riga,azione,offsetriga,elthis){
righe=testoRiga.split("</tr>")
for(var i=0;i<righe.length;i++){
	if(righe[i].replace(/ /g,"").replace(/\n/g,"")!="" && righe[i].replace(/ /g,"").replace(/\n/g,"")!="ç0")
		RebuildRow(righe[i]+"</tr>",tbody,riga,azione,offsetriga,elthis)
}
}
function RetrieveRow(testoRiga,numriga){
var newR=document.createElement('TR');
var sTR=IdentificaTag(testoRiga,/<tr/i);

var sTDs=testoRiga.split(sTR)[1];
var sTDs=sTDs.split(/<\/tr>/i)[0];
AttAttributeToTag(newR,sTR.substring(3,sTR.length-1))

var sTDelements=sTDs.split(/<\/td>/i)
for(var i=0;i<sTDelements.length-1;i++){
var newTD=document.createElement('TD');
var sTD=IdentificaTag(sTDelements[i],/<td/i);
AttAttributeToTag(newTD,sTD.substring(3,sTD.length-1))

var sTDel=sTDelements[i].split(sTD)[1];
newTD.innerHTML=sTDel
newR.appendChild(newTD)
}
if(numriga!=null)
ChangeInnerHTMLinSubTags(newR,"DIV",numriga,"numriga")
return newR;
}
function ajaxInsertInTagRebuildRow(url,body,row,azione,offsetriga,mult,url2,fda,elthis,noinsert,el,prefda,nofda){
var xmlHttpReq = false;
try{
xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (err){
try{
xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}catch (err2){}
}
if(!xmlHttpReq && window.XMLHttpRequest){
xmlHttpReq=new XMLHttpRequest();
}
xmlHttpReq.open("GET", url, true);
xmlHttpReq.send(null)
xmlHttpReq.onreadystatechange = function() {
if(xmlHttpReq.readyState == 4 && xmlHttpReq.status == 200) {

var corretto=isResultCorrectRR(xmlHttpReq.responseText)
if (corretto>=0){
if(noinsert==true){
    el.parentNode.className=el.parentNode.className.split("ajax")[0] + " ajaxS";
    return false
}
var txt=xmlHttpReq.responseText
if(prefda!=null)
eval(prefda)
if(mult==null)
RebuildRow(txt,body,row,azione,offsetriga,elthis)
else
RebuildRowMult(txt,body,row,azione,offsetriga,elthis)

if(fda!=null)
eval(fda)
}else{
		var prosegui=true
		if(nofda!=null)
		eval(nofda)
		if(prosegui){
                        if(url2!=null && isResultAlertRR(xmlHttpReq.responseText)>=0){
                            var txtalrt=xmlHttpReq.responseText.split("ç")[1]
                            if(confirm(txtalrt.substring(1,lastchar(txtalrt))+"\nConfermi?")){
                                ajaxInsertInTagRebuildRow(url+url2,body,row,azione,offsetriga,mult,null,fda,elthis)
                            }
                        }else{
                            if(noinsert==true){
                                el.parentNode.className=el.parentNode.className.split("ajax")[0] + " ajaxE";
                            }
                            alert("-Errore di aggiornamento-\n"+displayErrorRR(xmlHttpReq.responseText.split("ç")[1]));
                        }
		}

}
}
}
}

function isResultCorrectRR(res){
var n=res.length;
while(n>=0 && (res.charAt(n-1)=="\n" || res.charAt(n-1)==" ")){
n--;
}
if(n>=0 && res.charAt(n-1)!="0")
return -1;
else
return n-1;
}

function lastchar(res){
var n=res.length;
while(n>=0 && (res.charAt(n-1)=="\n" || res.charAt(n-1)==" ")){
n--;
}
return n-1;
}

function isResultAlertRR(res){
    if(res.split("ç")[1].substring(0,1)=="!")
        return 0;
    else
        return -1;
}

function displayErrorRR(res){
var n=res.length;
while(n>=0 && (res.charAt(n-1)=="\n" || res.charAt(n-1)==" ")){
n--;
}
if(n>=0)
n--
if(n>=0){
while(n>=0 && (res.charAt(n-1)=="\n" || res.charAt(n-1)==" ")){
n--;
}
}
return res.substring(0,n);
}
function DataRowValidation(collObjects){
var risultatoTest
risultatoTest=true
var i,j,validationtag,propertiestag,arrpropertiestag
for (i=0;i<collObjects.length;i++){
validationtag=""
propertiestag=""
if (collObjects[i].type!="hidden"){
for (j=0;j<collObjects[i].attributes.length;j++){
if(collObjects[i].attributes[j].nodeName=="chktype")
{
validationtag=collObjects[i].attributes[j].nodeValue
}
if(collObjects[i].attributes[j].nodeName=="chkprop")
{
propertiestag=collObjects[i].attributes[j].nodeValue
}
}
}
if (validationtag!=""){
risultatoTest=risultatoTest && SwitchValidationTag(validationtag,propertiestag,collObjects[i])
}
}
return risultatoTest;
}
function ajaxDeleteRowDin(url,el,funzioneDaEseguire,offsetriga,numrighe,eliminaRighe){
var xmlHttpReq
xmlHttpReq=new XMLHttpRequest();
xmlHttpReq.open("GET", url, true);
xmlHttpReq.send(null)
xmlHttpReq.onreadystatechange = function() {
if(xmlHttpReq.readyState == 4 && xmlHttpReq.status == 200) {
var corretto=isResultCorrectRR(xmlHttpReq.responseText)
if (corretto>=0){
//if (corretto>=-1){
if(numrighe!=null){
    if(eliminaRighe==true){
		for(var jj=numrighe-1;jj>=0;jj--){
			recuperaTagSuperiore(el,"TBODY").deleteRow(recuperaTagSuperiore(el,"TR").sectionRowIndex+jj)
		}		
    }else{
		for(var jj=0;jj<numrighe;jj++){
			recuperaTagSuperiore(el,"TBODY").rows[recuperaTagSuperiore(el,"TR").sectionRowIndex+jj].style.display='none'
		}
    }
}
ElimRigaDin(el,null,null,offsetriga)
if(funzioneDaEseguire!=null)
eval(funzioneDaEseguire)
}else{
alert("-Errore di aggiornamento-\n"+displayErrorRR(xmlHttpReq.responseText.split("ç")[1]));
}
}
}
}
function ElimRigaDin(el,rw,tbody,offsetriga){
if (offsetriga==null)
offsetriga=0
var tmp;
var rw;
var tbody;
if(rw==null)
rw=recuperaTagSuperiore(el,"TR")
if(tbody==null)
tbody=recuperaTagSuperiore(el,'TBODY');
if(rw!=false && tbody!=false){
tbody.removeChild(rw)
for (var i=0;i<tbody.rows.length;i++){
ChangeInnerHTMLinSubTags(tbody.rows[i],"DIV",i-offsetriga,"numriga")
}
}else{
return false
}
}
function ajaxUpdateRowDin(url,el,body,row,azione,offsetriga){
var xmlHttpReq = false;
try{
xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (err){
try{
xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}catch (err2){}
}
if(!xmlHttpReq && window.XMLHttpRequest){
xmlHttpReq=new XMLHttpRequest();
}
xmlHttpReq.open("GET", url, true);
xmlHttpReq.send(null)
xmlHttpReq.onreadystatechange = function() {
if(xmlHttpReq.readyState == 4 && xmlHttpReq.status == 200) {
var corretto=isResultCorrectRR(xmlHttpReq.responseText)
if (corretto>=0){
RebuildRow(xmlHttpReq.responseText,body,row,azione,offsetriga)
ElimRigaDin(el,row,body,offsetriga)
}else{
alert("-Errore di aggiornamento-\n"+displayErrorRR(xmlHttpReq.responseText.split("ç")[1]));
}
}
}
}

function PulisciAjax(t,togliUltimo){
	t=t.split("ç")[0]
	while(t.substring(t.length-1)==" "){
		t=t.substring(0,t.length-1)
	}
	if(togliUltimo!=null){
		ts=t.split(togliUltimo)
		var tn=""
		for(var i=0;i<ts.length-1;i++){
			tn=tn+ts[i]
			if(i<ts.length-2)
				tn=tn+togliUltimo
		}
		t=tn
	}
	return t
}