// JavaScript Document
//
//+----------------------------------------------------------------------------+
//¦     Contenuto: Funzioni JavaScript            -  © Matteo Magnani 2007     ¦
//¦----------------------------------------------------------------------------¦
//¦        Inizio: 12 Ottobre 2007                                             ¦
//¦         eMail: magmalu@gmail.com                                           ¦
//+----------------------------------------------------------------------------+

function insertDataTRT(type,data,qty){
	var esito="";
	esito=checkTRT(type,data,qty);
	if (esito==""){
		document.updins.activity.value="GO";
		document.updins.datasql.value=matConvDate(data.value);
		document.updins.submit();
	} else {
		alert(esito)
	}
}

function insertDataSEM(conc,seed,cont){
	var esito="";
	esito=checkSEM(conc,seed,cont);
	if (esito==""){
		document.updins.activity.value="GO";
		document.updins.submit();
	} else {
		alert(esito)
	}
}

function checkTRT(type,data,qty){
	if (data.value=="") 		{ return "Data non inserita";	}
	var esito=isDateOK(data.value,"/");
	if (esito!="") 				{ return esito;	}
	if (qty.value=="")			{ return "Quantità non inserita";	}
	if (isNaN(qty.value))		{ return "Quantità in formato non corretto (deve essere un numero intero)";	}
	return "";
}

function matConvDate(data){
	var daynum="";
	var monthnum="";
	var yearnum="";
	var matr = data.split("/");
	var isNotDate="";

	daynum=matr[0].split("/");
	if (daynum<10){		daynum="0"+daynum;	}
	monthnum=matr[1].split("/")
	if (monthnum<10){	monthnum="0"+monthnum;	}
	yearnum=Trim(matr[2].split("/"));
	return Trim(yearnum+"-"+monthnum+"-"+daynum);
}

function isDateOK(data,separator){
	var daynum="";
	var monthnum="";
	var yearnum="";
	var matr = data.split(separator);
	var isNotDate="";
	if (matr.length == 3) {
		daynum=matr[0].split(separator);
		if (daynum<10){
			daynum="0"+daynum;
		}
		monthnum=matr[1].split(separator)
		if (monthnum<10){
			monthnum="0"+monthnum;
		}
		yearnum=Trim(matr[2].split(separator));
		
		// Controllo di congruenza della data
		if ((daynum=="") || (monthnum=="") || (yearnum=="") ){
			isNotDate="KO";
		} else if (isNaN(daynum) || isNaN(monthnum) || isNaN(yearnum)) {
			isNotDate="KO";
		} else if ((((yearnum % 4)>0) && ((monthnum==2) &&  (daynum > 28))) ||
			(((yearnum % 4)==0) && ((monthnum==2) &&  (daynum > 29)))) {                
			isNotDate="KO";
		} else if (((monthnum==4)||(monthnum==6)||(monthnum==9)||(monthnum==11)) && daynum > 30) {
			isNotDate="KO";
		} else if (daynum > 31) {
			isNotDate="KO";
		} else if ((yearnum > 2038) || (yearnum < 1000)) {
			isNotDate="KO";
		} else {
			return "";
		}
		return "Data in formato non corretto";
	} else {
		return "Data in formato non corretto";
	} 	
}

function refreshSeed(){
	document.updins.activity.value="RF";
	document.updins.submit();
}

function addTreat(){
	document.updins.action.value="TRT";
	document.updins.submit();
}

function refreshInsSeed(){
	document.updins.action.value="RF";
	document.updins.submit();
}

function checkSeedMod(){
	document.updins.stato.value="GO";
	document.updins.submit();
}

function updateChechks(num){
	var ckxStr = "";
	var elmnt = document.updins.getElementsByTagName('input');
	for (var i=0; i<elmnt.length; i++){
		if (elmnt[i].type=="checkbox"){
			if (elmnt[i].checked){
				ckxStr += elmnt[i].name +"=1|"; 
			} else {
				ckxStr += elmnt[i].name +"=0|";
			}
		}
	
	}
	document.updins.stato.value="UPDCHK";
	document.updins.checks.value=ckxStr;
	document.updins.pagno.value=num;	
	document.updins.submit();
}

function updOpt(Type,elem){
	var qs = "";
	var elmntx = document.updins.getElementsByTagName('input');
	var ok = true;
	for (var i=0; i<elmntx.length; i++){
		if (Type=="MEN"){
			if (elmntx[i].name==elem){
				if (elmntx[i].checked){
					val = 1;
				} else {
					val = 0;
				}
				document.updins.Note.value=val;
				document.updins.IDOpt.value=elem.substring(3,10);
				break;
			}
		} else if ((Type=="SUO")||(Type=="FAM")||(Type=="CNT")||(Type=="TRT")){
			if (elem=="txtnew"){
				if (elmntx[i].name==elem){
					if (elmntx[i].value!=""){
						document.updins.Descrizione.value=elmntx[i].value;
					} else {
						ok = false;
					}
					
					break;
				}
			} else {
				if (elmntx[i].name==elem){
					document.updins.Descrizione.value=elmntx[i].value;
					document.updins.IDOpt.value=elem.substring(3,10);
					break;			
				}
			}
		} else if (Type=="CNC"){
			if (elem=="txtnew"){
				if (elmntx[i].name==elem){
					if (elmntx[i].value!=""){
						document.updins.Descrizione.value=elmntx[i].value;
						if (document.updins.radnew.checked){
							val = 1;
						} else {
							val = 0;
						}
						if (document.updins.rdtnew.checked){
							valy = 1;
						} else {
							valy = 0;
						}
						document.updins.Note.value=val;
						document.updins.AddType.value=valy;
					} else {
						ok = false;
					}
					break;
				}
			} else if (elmntx[i].name==elem){
				if (elmntx[i].checked){
					val = 1;
				} else {
					val = 0;
				}
				
				var elmnty = document.updins.getElementsByTagName('input');
				var rdtToSearch = "rdt"+elem.substring(3,10);
				var txtToSearch = "txt"+elem.substring(3,10);
				for (var i=0; i<elmnty.length; i++){
					if (elmnty[i].name==rdtToSearch){
						if (elmnty[i].checked){
							valy = 3;
						} else {
							valy = 2;
						}
					}
					if (elmnty[i].name==txtToSearch){
						document.updins.Descrizione.value=elmnty[i].value;
					}
				}
				// *** Occorre cercare il valore di rdtxxx corrispondente a radxxx e valutarne il valore
				document.updins.Note.value=val;
				document.updins.AddType.value=valy;
				document.updins.IDOpt.value=elem.substring(3,10);
				break;			
			}
		} else if (Type=="ALT"){
			var matrx = elem.split("_");
			if ((elmntx[i].name.substring(0,3)=="rpp") && (elmntx[i].name.substring(3,4)==matrx[1])){
				rs = validateInput(elmntx[i].value,elmntx[i].id);
				if (rs!=""){
					alert(rs);
					ok = false;
				} else {
					document.updins.AddType.value=elmntx[i].value;
					document.updins.IDOpt.value=matrx[0];
					ok = true;					
				}	
			}
			
		}
	}
	if (ok){
		document.updins.stato.value="UPD";
		document.updins.submit();
	}
}

function changeOpt(){
	document.updins.stato.value="GO";
	document.updins.submit();
}

function goToPage(num){
	document.updins.stato.value="SRC";
	document.updins.pagno.value=num;
	document.updins.submit();
}
function goToPageSeeds(num){
	document.updins.stato.value="GO";
	document.updins.pagno.value=num;
	document.updins.submit();
}
function regSel(uid,val){
	var ckxStr = "SecondID="+uid+"|";
	var elmntx = document.updins.getElementsByTagName('input');
	for (var i=0; i<elmntx.length; i++){
		if (elmntx[i].type=="checkbox"){
			if (elmntx[i].checked){
				ckxStr += elmntx[i].name +"=1|"; 
			} else {
				ckxStr += elmntx[i].name +"=0|";
			}
		}
	}
	document.updins.stato.value=val;
	document.updins.checks.value=ckxStr;
	//alert(ckxStr)
	document.updins.submit();
}

function checkAll(all){
	var elmntx = document.updins.getElementsByTagName('input');
	for (var i=0; i<elmntx.length; i++){
		if (elmntx[i].type=="checkbox"){
			if (all) {
				elmntx[i].checked=true;
			} else {
				elmntx[i].checked=false;
			}
		}
	}
}

function validateInput(text,rule){
/*
	d|a|b|c
	d=nome del campo
	a=V se può essere vuoto; O se deve essere compilato (Obbligatorio)
	b=tipo di campo: 	N=numerico, D=Data, A=Alfanumerico
	c=sottotipo 
*/
	var min = "";
	var max = "";
	var matr = rule.split("|");

	if (typeof(matr[1])!='undefined'){
		var textToSplit = matr[1];
	} else {
		var textToSplit = "X-0-1000";
	}
	var tipo = textToSplit.split("-");
	//alert("Campo="+rule+": len="+tipo.length+" min="+min+"   max="+max+" tipo="+textToSplit);
	if(tipo.length==3){
		if (tipo[1]!=""){min = Number(tipo[1]);}
		if (tipo[2]!=""){max = Number(tipo[2]);}
	}
	var rtc = "";
	
	if ((tipo[0]=="O") && (text=="")){
		rtc = "Campo "+matr[0]+": non compilato."
	} else if ((min!="") && (text.length<min)){
		rtc = "Campo "+matr[0]+": lunghezza inferiore al minino ("+min+")."
	} else if ((max!="") && (text.length>max)){
		rtc = "Campo "+matr[0]+": lunghezza superiore al massimo ("+max+")."
	}
	if (rtc!=""){
		return rtc;
	}
	switch (matr[2]){
		case "X":			// Nessun controllo
			rtc = "";
		break;
		case "N":			// Numerico
			switch (matr[3]){
				case "X":	//// Qualsiasi
				break;
				
				case "N":	//// Intero non negativo
					myRe = new RegExp("[^0-9]");
					if (myRe.test(text)){
						rtc = "Campo "+matr[0]+": inserire solo numeri interi."
					}
				break;
				
				case "P":	//// Intero positivo
					myRe = new RegExp("[^0-9]");
					if (myRe.test(text)){
						rtc = "Campo "+matr[0]+": inserire solo numeri interi positivi."
					} else if (text=="0"){
						rtc = "Campo "+matr[0]+": inserire solo numeri interi positivi."
					}				
				break;
			
			}
		break;
		case "D":			// Data
			switch (matr[3]){
				case "X":	//// Qualsiasi - formato gg/mm/aaaa
					var prc = isDateOK(text,"/");
					if (prc!=""){
						rtc = "Campo "+matr[0]+": data non valida."+prc;
					}
				break;
				case "F":	//// Data nel futuro - formato gg/mm/aaaa
				
				break;
				case "P":	//// Data nel passato - formato gg/mm/aaaa
				
				break;
			
			}			
		break;
		case "A":			// Alfanumerico				
			switch (matr[3]){
				case "X":	//// Qualsiasi
				break;				
				case "A":	//// Alfanumerico in senso stretto
					myRe = new RegExp("[^A-Za-z0-9]");					
					if (myRe.test(text)){
						rtc = "Campo "+matr[0]+": inserire solo caratteri alfanumerici."
					}
				break;
				case "B":	//// Alfanumerico 1 (Nomi propri: accenti, spazi)
					myRe = new RegExp("[^A-Za-z0-9,.@àèéòìù°() ]/-/");
					if (myRe.test(text)){
						rtc = "Campo "+matr[0]+": inserire solo lettere, numeri, i caratteri ,.@àèéòìù°()- e lo spazio."
					}
				
				break;
				case "C":	//// Alfanumerico 2 (indirizzo mail, no spazi)
					myRe = new RegExp("[^A-Za-z0-9@_.]");
					if (myRe.test(text)){
						rtc = "Campo "+matr[0]+": inserire un indirizzo mail valido."
					}

				break;
				case "D":	//// Alfanumerico 3 (Nomi di taxa vegetali secondo l'ICBN)
					myRe = new RegExp("[^A-Za-z]/-/");
					if (myRe.test(text)){
						rtc = "Campo "+matr[0]+": inserire solo caratteri maiuscoli, minuscoli, lo spazio e il trattino -."
					}

				break;
				case "E":	//// Alfanumerico 4 (Nomi di terricci)
					myRe = new RegExp("[^A-Za-z0-9_]");
					if (myRe.test(text)){
						rtc = "Campo "+matr[0]+": inserire solo caratteri maiuscoli, minuscoli, numeri e _ (underscore)."
					}

				break;


			}			
		
		break;
	}
	
	
	return rtc;
}

function checkRegistrationData(val){
	var rs = "";
	var ckxStr = "";
	
	var elmnt = document.updins.getElementsByTagName('input');	
	for (var i=0; i<elmnt.length; i++){
		switch (elmnt[i].type){	
			case "text":
				if (elmnt[i].name!="SecondID"){
					rs = validateInput(elmnt[i].value,elmnt[i].id);
				} else {
					ckxStr += elmnt[i].name +"="+elmnt[i].value+"|";
				}
			break;
			
			case "hidden":
				if (elmnt[i].name=="SecondID"){
					ckxStr += elmnt[i].name +"="+elmnt[i].value+"|";
				}	
			break;
			
			case "checkbox":
				if (elmnt[i].checked){
					ckxStr += elmnt[i].name +"=1|"; 
				} else {
					ckxStr += elmnt[i].name +"=0|";
				}
			break;
			
			case "password":
				rs = validateInput(elmnt[i].value,elmnt[i].id);
				if (rs!=""){
					break;
				}					
			break;
		}
		if (rs!=""){
			break;
		}
	}
	
	if (rs==""){
		var elmnts = document.updins.getElementsByTagName('select');
		for (var i=0; i<elmnts.length; i++){
			rs = validateInput(elmnts[i].value,elmnts[i].id);
			if (rs!="") {
				break;
			}
		}
	}
	
	if (rs==""){
		document.updins.action.value=val;
		document.updins.checks.value=ckxStr;
		document.updins.submit();
	} else {
		alert(rs);
	}
	return false;
}

function checkSoils(){
	var ckxStr = "";
	var rs = ""
	var sum = 0;
	var elmntx = document.updins.getElementsByTagName('input');
	for (var i=0; i<elmntx.length; i++){
		rs = validateInput(elmntx[i].value,elmntx[i].id);
		if (rs!=""){
			break;
		} else {
			if (elmntx[i].name.substring(0,3)=="CMP"){
				if(elmntx[i].value>100) {
					rs = "Non si possono inserire percentuali > 100"
				} else {
					if(elmntx[i].value>0) {
						ckxStr += elmntx[i].name+"="+elmntx[i].value+"|";
						sum += Number(elmntx[i].value);
					}
				}
			}
		}		
	}
	
	if ((rs=="")&&(sum!=100)){
		rs = "La somma delle percentuali è "+sum+". Dovrebbe essere 100.";
	}

	if (rs==""){
		document.updins.stato.value="INS";
		document.updins.ckxStr.value=ckxStr;
		document.updins.submit();
	} else {
		alert(rs)
	}
}


function checkCheck(max){
	if (max==0){
		return true;
	}
	var elmnt = document.updins.getElementsByTagName('input');
	var curr = 0;
	for (var i=0; i<elmnt.length; i++){
		if (elmnt[i].type=="checkbox"){
			if (elmnt[i].checked){
				curr++;
				if (curr>=max){
					break;
				}
			}
		}
	}
	if (curr>=max){
		var elmntc = document.updins.getElementsByTagName('input');
		for (var i=0; i<elmntc.length; i++){
			if (elmntc[i].type=="checkbox"){
				if (!elmntc[i].checked){
					elmntc[i].disabled=true;
				}
			}
		}
	} else {
		var elmntc = document.updins.getElementsByTagName('input');
		for (var i=0; i<elmntc.length; i++){
			if (elmntc[i].type=="checkbox"){
				if (!elmntc[i].checked){
					elmntc[i].disabled=false;
				}
			}
		}
	}
	return true;
}

function checkRegisterTreat(val,max,myTreat){
	var rs = "";
	var ckxStr = "";
	var elmnt = document.updins.getElementsByTagName('input');	
	for (var i=0; i<elmnt.length; i++){
		rs = validateInput(elmnt[i].value,elmnt[i].id);
		if (rs!=""){
			break;
		} else{
			if ((myTreat!="1")&&(elmnt[i].name=="Quantity")&&(max!="")&&(parseInt(elmnt[i].value)>parseInt(max))){
				rs = "Il numero dei semenzali ("+elmnt[i].value+") non può superare il numero di semi seminati ("+max+").";
				break;
			}
		}
	}
	if (rs==""){
		document.updins.action.value=val;
		document.updins.checks.value=ckxStr;
		document.updins.submit();
	} else {
		alert(rs);
	}
}

function deleteOp(opNum){
	if (confirm("Sei sicuro di voler cancellare l'operazione O#"+opNum+"?")){
		document.updins.action.value="DEL";
		document.updins.delop.value=opNum;
		document.updins.submit();
	}
}

function goConc(){
	document.updins.stato.value="GO";
	document.updins.submit();
}

function reDisplay(){
	document.updins.action.value="GO";
	document.updins.submit();
}

function reDisplayT(){
	document.updins.action.value="TRT";
	document.updins.submit();
}


function searchSdng(val,IDS){
	document.updins.stato.value=val;
	if (IDS!=""){
		document.updins.IDS.value=IDS;
	}
	document.updins.submit();
}

// Gestione immagini
function preLIm() { //v3.1
	var d=document; 
	if(d.images){ 
		if(!d.MM_p){
			d.MM_p=new Array();
		} 
    	var i,j=d.MM_p.length,a=preLIm.arguments; 
		for(i=0; i<a.length; i++){
    		if (a[i].indexOf("#")!=0){ 
				d.MM_p[j]=new Image; 
				d.MM_p[j++].src=a[i];
			}
		}
	}
}

function swapIR() { //v3.1
	var i,x,a=document.MM_sr; 
	for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++){
		x.src=x.oSrc;
	}
}

function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

function swapIm() { //v3.0
  var i,j=0,x,a=swapIm.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function showWindow(FirstID) {
	eu = 'showlist.php?FirstID='+FirstID ;
	w = window.open(eu,'Anno','Top=100,Left=150,width=400,height=500,history=0,resizable=1,status=0,scrollbars=1,menubar=0');
}

/*
function checkPwd(oldpwd,newpwd,cfrpwd) {
	var esito="";
	if (newpwd.length<8){
		esito="La nuova Password deve essere lunga almeno 8 caratteri";
	} else {
		if (newpwd==oldpwd){
			esito="La nuova Password non deve essere uguale alla precedente";
		} else {
			if (newpwd!=cfrpwd){
				esito="La nuova Password non coincide con la password di conferma";
			}
		}
	}
	return esito;	
}

function updatePwd(){
	var esito;
	with (document.chgpwd){
		esito=checkPwd(oldpwd.value,newpwd.value,cfrpwd.value);
		if (esito!=""){
			alert(esito);
		} else {
			update.value=1;
			submit();
		}
	}
}
*/
