var myPrint=false;
var myBack=false;
var myHelp=false;
var mhv_dbDec=3;
var mhv_dbPer=2;



function mh_Err(obj,msg,sndRsp) {

	if (!(sndRsp)) sndRsp=0;
	if (msg==1) msg="Errore nella formattazione del campo <" + obj.nome + "> di tipo [" + obj.inputType + "]!"; 
	if(event){
		if (event.type=='blur' || sndRsp==1) alert(msg);
	}else{
		alert(msg);
	}
	try {obj.focus()} catch(e) {}
	return false
}
	
function mh_StBlck(obj) {

	obj.value="";
	if (obj.hostValue) obj.hostValue="";
	return true;
}

function mh_lngh(obj) {

	if (!(obj.maxlength)) return true
	var v=parseInt(obj.maxlength,10)
	if (isNaN(v)) return true
	if (obj.hostValue) {
		if (obj.hostValue.length>v) return mh_Err(obj,"Campo <" + obj.nome + "> troppo lungo!") 
	} else {
		if (obj.value.length>v) return mh_Err(obj,"Campo <" + obj.nome + "> troppo lungo!") 
	}
	return true
}


function trim(s) {
	
	return s.replace(/^\s*|\s*$/g,"");
}

function mh_chkLgn() {

	var obj=event.srcElement;
	var v=trim(obj.value);
	if (v=="") return mh_StBlck(obj)
	if (v.match(/\W/g)) return mh_Err(obj,1);
	if (!(mh_lngh(obj))) return false;
	obj.value=v;
	return true
}

//var glb_tmp_oImgEventSource

function mh_chkImmagineError(){
	obj=window.document.all(event.srcElement.sobjfocuserr)
	obj.errore="Il path inserito non corrisponde ad un'immagine"
	obj.berr=true
}
 
function mh_EliminaObj(){
	coImgS=window.document.all("glb_tmp_obj_ImgSAdded")
	if(coImgS.length){
		for (i=0;i<coImgS.length;i++){
			window.document.body.removeChild(coImgS(i))
		}
	}else{
		window.document.body.removeChild(coImgS)
	}
	
}


function mh_chkImmagine2(){
	oImg=event.srcElement
	if(oImg){
		if(oImg.readyState=="complete"){
			obj=window.document.all(oImg.sobjfocuserr)
			minwidth=oImg.minwidth
			if(!minwidth) minwidth=0
			else minwidth=parseInt(minwidth,10)
			minheight=oImg.minheight
			if(!minheight) minheight=0
			else minheight=parseInt(minheight,10)
			maxwidth=oImg.maxwidth
			if(!maxwidth) maxwidth=1024
			else maxwidth=parseInt(maxwidth,10)
			maxheight=oImg.maxheight
			if(!maxheight) maxheight=1024
			else maxheight=parseInt(maxheight,10)
			
			if (oImg.width < minwidth || oImg.width > maxwidth){ 
				obj.errore="L'immagine selezionata ha una larghezza di '"+ oImg.width +"' pixel,\nmentre deve essere compresa tra i '"+ minwidth +"' ed i '"+ maxwidth +"' pixel."
				obj.berr=true
				return false
			}
			if (oImg.height < minheight || oImg.height > maxheight){
				obj.errore="L'immagine selezionata ha un'altezza di '"+ oImg.height +"' pixel,\nmentre deve essere compresa tra i '"+ minheight +"' ed i '"+ maxheight +"' pixel."
				obj.berr=true
				return false
			}

			obj.errore=false
			window.setTimeout("mh_EliminaObj()",1,"JSCRIPT")
			oImg=null
			glb_tmp_oImgEventSource=null
		}
	}else{
		
	}
}

function mh_chkImmagine(){
	if(event.propertyName=="value"&&event.keyCode==0){
		var obj=event.srcElement;
		var v=trim(obj.value);
		if (v=="") return true
		
		oImg=window.document.createElement("<img id='glb_tmp_obj_ImgSAdded' src='"+v+"' sobjfocuserr='"+obj.id+"' minwidth='"+obj.minwidth+"' minheight='"+obj.minheight+"' maxwidth='"+obj.maxwidth+"' maxheight='"+obj.maxheight+"'  onerror='mh_chkImmagineError()' onreadystatechange='mh_chkImmagine2()' style='position:absolute;top:0;left:0;z-index:-1;visibility:hidden'>")
		window.document.body.appendChild(oImg)
	}		
	
}

function mh_chkImmagineBlur(){
	if(event.srcElement.errore){
		mh_Err(event.srcElement,event.srcElement.errore);
		event.srcElement.errore=""
		return false
	}
}

function mh_chkMail() {
	
	var obj=event.srcElement;
	var v=trim(obj.value);
	if (v=="") return mh_StBlck(obj)
	var vect=v.split(";");
	for (k=0; k<vect.length; k++) {
		v=trim(vect[k]);
		if (v!="") {
			var vv=v.split("@")
			if (vv.length!=2) return mh_Err(obj,1);
			vv[0]=vv[0].split(".");
			for (i=0; i<vv[0].length; i++) {
				if (vv[0][i]=="") return mh_Err(obj,1);
				if (vv[0][i].match(/\s/g)) return mh_Err(obj,1);
			}
			vv[1]=vv[1].split(".");
			if (vv[1].length<2) return mh_Err(obj,1);
			for (i=0; i<vv[1].length; i++) {
				if (vv[1][i]=="") return mh_Err(obj,1);
				if (vv[1][i].match(/\s/g)) return mh_Err(obj,1);
			}
			if (!(mh_lngh(obj))) return false;
		}
	}
	return true
}

function mh_sepMil(s) {

	var n,v="";
	n=s.length%3;
	for (i=0;i<s.length;i++) {
		if (i%3==n && i!=0) v+=".";
		v+=s.substr(i,1);
	}
	return v
}
	
function mh_chkNumber() {
	
	var obj=event.srcElement;
	var v=obj.value;
	v=v.replace(/\s/g,"");
	if (v=="") return mh_StBlck(obj)
	if (!(v.match(/[0123456789.,+-]/g))) return mh_Err(obj,1);
	var fc,n,vv,s="",sv="",hv="",sd;
	fc=v.substr(0,1);
	if (fc=="+" || fc=="-") {
		if (!(obj.sgn)) return mh_Err(obj,"Segno non ammesso!")
		v=v.substr(1);
		if (fc=="-") s="-";
	}
	if (v.match(/[+-]/g)) return mh_Err(obj,1);
	vv=v.split(",");
	sd=parseInt(obj.DecDigit,10);
	if (isNaN(sd)) sd=0;
	n=vv.length;
	if (n>2) return mh_Err(obj,1);
	if (n==2) {
		n=vv[1].length;
		if (n<sd) sv=vv[1];
		else sv= vv[1].substr(0,sd);
		if (n<mhv_dbDec) hv=vv[1];
		else hv=vv[1].substr(0,mhv_dbDec);
		if (!(sv.match(/[0-9]/g))) return mh_Err(obj,1);
	}
	vv=vv[0].split(".")
	if (vv.length>1) {
		if (vv[0].length>3) return mh_Err(obj,1);
		for (i=1;i<vv.length;i++) {
			if (vv[i].length!=3) return mh_Err(obj,1);
		}
	}
	vv=vv.join("");
	if (parseFloat(vv).toString()!=vv) return mh_Err(obj,1)
	if (hv!="") obj.hostValue=s+vv+"."+hv;
	else obj.hostValue=s+vv
	if (sv=="") obj.value=s+mh_sepMil(vv)
	else obj.value=s+mh_sepMil(vv)+","+sv
}


function mh_chkPerc() {
	
	var obj=event.srcElement;
	var v=obj.value;
	v=v.replace(/\s/g,"");
	if (v=="") return mh_StBlck(obj)
	if (!(v.match(/[0123456789,+-]/g))) return mh_Err(obj,1);
	var fc,n,vv,s="",sv="",hv="",sd;
	fc=v.substr(0,1);
	if (fc=="+" || fc=="-"){
		v=v.substr(1);
		if (fc=="-") s="-";
	}
	if (v.match(/[+-]/g)) return mh_Err(obj,1);
	sd=parseInt(obj.DecDigit,10)
	if (isNaN(sd)) sd=0;
	vv=v.split(",");
	n=vv.length;
	if (n>2) return mh_Err(obj,1);
	if (n==1) {
		for (i=0;i<sd;i++) sv+="0";
		for (i=0;i<mhv_dbPer;i++) hv+="0";
	}else{
		n=vv[1].length;
		if (n<sd) {
			sv=vv[1]
			for (i=n;i<sd;i++) sv+="0"
		} else sv=vv[1].substr(0,sd);
		if (n<mhv_dbDec) {
			hv=vv[1];
			for (i=n;i<mhv_dbPer;i++) hv+="0";
		} else hv=vv[1].substr(0,mhv_dbPer);
	}
	obj.hostValue=s+vv+"."+hv;
	if (sv=="") obj.value=s+vv
	else obj.value=s+vv+","+sv
	if (!(mh_lngh(obj))) return false;
	return true
}
	
function mh_chkMoney() {
	
	var obj=event.srcElement;
	var v=obj.value;
	v=v.replace(/\s/g,"");
	if (v=="") return mh_StBlck(obj)
	if (!(v.match(/[0123456789.,+-]/g))) return mh_Err(obj,1);
	var fc,n,vv,s="",sv="",hv="",sd;
	fc=v.substr(0,1);
	if (fc=="+" || fc=="-") {
		v=v.substr(1);
		if (fc=="-") s="-";
	}
	if (v.match(/[+-]/g)) return mh_Err(obj,1);
	vv=v.split(",");
	sd=parseInt(obj.DecDigit,10);
	if (isNaN(sd)) sd=0;
	n=vv.length;
	if (n>2) return mh_Err(obj,1);
	if (n==1) {
		for (i=0;i<sd;i++) sv+="0";
		for (i=0;i<mhv_dbDec;i++) hv+="0";
	} else {
		n=vv[1].length;
		if (n<sd) {
			sv=vv[1];
			for (i=n;i<sd;i++) sv+="0";
		} else sv= vv[1].substr(0,sd);
		if (n<mhv_dbDec) {
			hv=vv[1];
			for (i=n;i<mhv_dbDec;i++) hv+="0";
		} else hv=vv[1].substr(0,mhv_dbDec);
	}
	vv=vv[0].split(".")
	if (vv.length>1) {
		if (vv[0].length>3) return mh_Err(obj,1);
		for (i=1;i<vv.length;i++) {
			if (vv[i].length!=3) return mh_Err(obj,1);
		}
	}
	vv=vv.join("");
	
	obj.hostValue=s+vv+"."+hv;
	if (sv=="") obj.value=s+mh_sepMil(vv)
	else obj.value=s+mh_sepMil(vv)+","+sv
}
	
function mh_chkCode() {

	var obj=event.srcElement;
	var v=obj.value;
	v=v.replace(/\s/g,"");
	if (v=="") return mh_StBlck(obj)
	if (!(v.match(/[0123456789]/g))) return mh_Err(obj,1);
	var n=parseInt(obj.nDigit,10);
	if (isNaN(n)) return mh_Err(obj,1);
	if (n==0) return mh_Err(obj,1);
	if (v.length>n) return mh_Err(obj,1);
	if (v.length==n) {obj.value=v;obj.hostValue=v;}
	else {
		var a="";
		for (i=v.length;i<n;i++) a+="0"
		obj.value=a+v;obj.hostValue=a+v;
	}
	return true
}

function mh_chkDate() {

	var obj=event.srcElement;
	var v=obj.value;
	v=v.replace(/\s/g,"");
	if (v==""){
		if(obj.valoreDefault){
			if(obj.valoreDefault=="oggi"){
				oData = new Date()
				v = oData.getDate() + "/";
			    v += oData.getMonth() + 1 + "/";
				v += oData.getYear()

			}else{
				v =	obj.valoreDefault
			}
		}else{
			return mh_StBlck(obj)
		}
	}
	if (!(v.match(/[0123456789/-]/g))) return mh_Err(obj,1);
	v=v.replace(/-/g,"/");
	var vv=v.split("/");
	if (vv.length>3) return mh_Err(obj,1);
	var d=0,m=0,y=0,t="",a;
	if (vv.length==3) {d=vv[0];m=vv[1];y=vv[2];}
	else {
		if (vv.length==2) return mh_Err(obj,1);
		switch (v.length)  {
			case 3:
				d=v.substr(0,1);m=v.substr(1,1);y=v.substr(2,1);
				break;
			case 4:
				d=v.substr(0,1);m=v.substr(1,1);y=v.substr(2,2);
				break;
			case 5:
				if (parseInt(v.substr(1,2),10)<13) {d=v.substr(0,1);m=v.substr(1,2);}
				else {d=v.substr(0,2);m=v.substr(2,1);}
				y=v.substr(2,2);
				break;
			case 6:
				d=v.substr(0,2);m=v.substr(2,2);y=v.substr(4,2);
				
				break;
			case 7:
				d=v.substr(0,2);m=v.substr(2,2);y=v.substr(4,3);
				break;
			case 8:
				d=v.substr(0,2);m=v.substr(2,2);y=v.substr(4,4);
				break;
			default:
				return mh_Err(obj,1);
		}
	}
	d=parseInt(d,10);m=parseInt(m,10);y=parseInt(y,10);
	if (y<1000) y=2000+ y;
	if ((isNaN(d))||(isNaN(m))||(isNaN(y))) return mh_Err(obj,1);
	if ((m>12)||(m==0)) return mh_Err(obj,1);
	if ((d>31)||(d==0)||((d==31)&&((m==11)||(m==4)||(m==6)||(m==9)))) return mh_Err(obj,1);
	if (d<10) t="0";
	t+=d+"/";
	if (m<10) t+="0";
	t+=m+"/"+y;
	obj.value=t;
	obj.hostValue=t.substr(6,4)+t.substr(3,2)+t.substr(0,2);
	return true
}

function mh_chkTime() {

	var obj=event.srcElement;
	var v=obj.value;
	v=v.replace(/\s/g,"");
	if (v=="") return mh_StBlck(obj)
	if (!(v.match(/[0123456789:.]/g))) return mh_Err(obj,1);
	v=v.replace(/\./g,":");
	var vv=v.split(":");
	if (vv.length>3) return mh_Err(obj,1);
	var h=0,m=0,s=0,t="",a;
	if (vv.length==3) {h=vv[0];m=vv[1];s=vv[2];}
	else {
		if (vv.length==2) {h=vv[0];m=vv[1];}
		else {
			switch (v.length)  {
				case 1:
					h=v;
					break;
				case 2:
					a=parseInt(v,10);
					if (a>23) {
						if (a>59) {m=v.substr(1,1);h=v.substr(0,1);}
						else m=v
					} else h=v
					break;
				case 3:
					h=v.substr(0,1);m=v.substr(1,2);
					break;
				case 4:
					h=v.substr(0,2);m=v.substr(2,2);
					break;
				case 5:
					h=v.substr(0,1);m=v.substr(1,2);s=v.substr(3,2);
					break;
				case 6:
					h=v.substr(0,2);m=v.substr(2,2);s=v.substr(5,2);
					break;
				default:
					return mh_Err(obj,1);
			}
		}
	}
	h=parseInt(h,10);m=parseInt(m,10);s=parseInt(s,10);
	if ((isNaN(h))||(isNaN(m))||(isNaN(s))) return mh_Err(obj,1);
	if ((h>23)||(m>59)||(s)>59) return mh_Err(obj,1);
	if (h<10) t="0";
	t+=h+":";
	if (m<10) t+="0";
	t+=m+".";
	if (s<10) t+="0";
	t+=s;
	obj.value=t;
	obj.hostValue=t.replace(/[.:]/g,"");
	return true
}
	
function mh_chk() {

	
	var oggetto=event.srcElement
	switch (oggetto.inputType) {
		case "Data":
			return mh_chkDate()
			break;
		case "Ora":
			return mh_chkTime()
			break;
		case "Importo":
			return mh_chkMoney()
			break;
		case "Codice":
			return mh_chkCode()
			break;
		case "Numero":
			return mh_chkNumber()
			break;
		case "Perc":
			return mh_chkPerc()
			break;
		case "Lgn":
			return mh_chkLgn()
			break;
		case "Mail":
			return mh_chkMail()
			break;
		case "Immagine":
			return mh_chkImmagineBlur()
			break;
		default:
			event.srcElement.value=trim(event.srcElement.value)
			return true
			break
	}
}

function mh_fcs() {

	try {
		event.srcElement.select()
	} catch(e) {}
	return
}

function mh_slct() {
	
	event.returnValue=true;
	event.cancelBubble=true;
}

function mh_dbl() {

	return true
}

		function mh_testObj(src) {
			var objs=src.elements;
			var n_objs=objs.length;
			for (i=0;i<n_objs;i++) {
				obj=objs(i);
				if (obj.Obl) {
					if (obj.Obl=="1") {
					v="";
					switch (obj.tagName) {
						case "INPUT":
							switch (obj.type) {
								case "text":
									if (obj.hostValue) v = obj.hostValue;
									else v = obj.value;
									break;
								case "password":
									if (obj.hostValue) v = obj.hostValue;
									else v = obj.value;
									break;
								case "checkbox":
									if (obj.checked) v=obj.yesValue;
									else v=obj.yesValue;
									break;
								case "radio":
									if (obj.checked) v=obj.value;
									break;
								case "file":
									if (obj.hostValue) v = obj.hostValue;
									else v = obj.value;
									break;
							}
							break;
						case "SELECT":
							v = obj.value;
							break;
						case "TEXTAREA":
							v = obj.value;
							break;
					}
					if (v=="") return mh_Err(obj, "Il campo <" + obj.nome + "> è obbligatorio!",1)
				}}
			}
			return true
		}
		
		function mh_sendForm(src,dst,del) {
		
			if (!del) dst.innerHTML="";
			var objs=src.elements;
			var n_objs=objs.length;
			var k,obj,n,v;
			for (i=0;i<n_objs;i++) {
				obj = objs(i);
				n=obj.id;
				copyType=false
				v="";
				switch (obj.tagName) {
					case "INPUT":
						switch (obj.type) {
							case "text":
								if (obj.hostValue) v = obj.hostValue;
								else v = obj.value;
								break;
							case "checkbox":
								if (obj.checked) v=obj.yesValue;
								else v=obj.noValue;
								break;
							case "radio":
								if (obj.checked) v=obj.value;
								else n="";
								break;
							case "hidden":
								v=obj.value;
								break;
							case "password":
								v=obj.value;
								break;
							case "file":
								v=obj.value;
								copyType=true
								break;
							default:
								n="";
								break;
						}
						break;
					case "SELECT":
						v = obj.value;
						break;
					case "TEXTAREA":
						v = obj.innerHTML;
						break;
				}
				if (n!="") {
					if (obj.style.fontVariant=="small-caps" || obj.className=="InpSC" || 								obj.className=="InpOblSC") v=v.toUpperCase()
					
					if (obj.tagName=="TEXTAREA") {
						k=dst.document.createElement("TEXTAREA")
						k.cols="70"
					} else{
						if(copyType)sTipo=obj.type
						else sTipo="text"
						k=dst.document.createElement("<INPUT type='"+ sTipo +"' value='"+ v +"'>")
					}
					k.name=n;
					k.value=v.replace(/['"]/g,"''");
					
					dst.insertAdjacentElement("beforeEnd",k)
				}
			}
			dst.submit()
		}
		
