

function UpperCase(cc){
	cc.value=cc.value.toUpperCase();
}
function LowerCase(cc){
	cc.value=cc.value.toLowerCase();
}

 function upload(percorso,sc,strJs){
	if (!sc) sc='';
	if (!strJs) strJs='';
	pp = window.open('/file_manager/upload.asp?sc='+sc+'&strJs='+strJs+'&strPercorso='+percorso,'Upload','width=750,height=550,scrollbars=1')
	pp.focus();
}

function NumeroCasuale(Da,A) {
	return Math.floor((A-Da+1) * Math.random() +Da);
}

function LeggiValoreCampo(obj){
	var xvalore,valore=obj.value;
	var ff=obj.form;
	
	
	if(obj.type=='hidden'){
		valore=obj.value;
	}
	
	if(obj.type=='radio'){
		var rr=ff.elements[obj.name]
		if(rr.length){
			for(var i=0;i<rr.length;i++)
				if(rr[i].checked)xvalore=rr[i].value
			if(xvalore!='')
				valore=xvalore
			else
				valore=''
		}else{
			if(obj.checked)
				valore=obj.value
			else
				valore=''
		}
	}	
	if(obj.type=='checkbox')valore=(obj.checked ? obj.value : '')
	if(obj.type=='select-one'){
		if(obj.options.length)
			valore=obj.options[obj.selectedIndex].value
		else
			valore=''
	}
	//alert(obj.name+' '+valore)
	return valore
}


/*
CONTROLLO CAMPI DEL FROM PER RILEVARE MODIFICHE ED IMPEDIRE L'USCITA DALLA PAGINA SENZA SALVARE
*/

var bolControllaUscita=true

function InitCheckModifiche(){
	var i,j,ff=document.forms
	for(i=0;i<ff.length;i++){
		for(j=0;j<ff[i].elements.length;j++){
			if(ff[i].elements['x'+ff[i].elements[j].name]){
				//ff[i].elements['x'+ff[i].elements[j].name].value=ff[i].elements[j].value
				ff[i].elements['x'+ff[i].elements[j].name].value=LeggiValoreCampo(ff[i].elements[j])
//out.innerHTML+='x'+ff[i].elements[j].name+'='+ff[i].elements['x'+ff[i].elements[j].name].value+'<br>'
			}
		}
	}
}

function CheckModifiche(){
	if(bolControllaUscita){
		var i,j,ff=document.forms
		var bolModifiche=false
		for(i=0;i<ff.length;i++){
			for(j=0;j<ff[i].elements.length;j++){
				if(ff[i].elements['x'+ff[i].elements[j].name]){
					if(ff[i].elements['x'+ff[i].elements[j].name].value!=LeggiValoreCampo(ff[i].elements[j]))bolModifiche=true
				}
			}
		}
//out.innerHTML+=bolModifiche+'<hr>'
//return 'debug'
		if(bolModifiche){
			return 'ATTENZIONE!!\nSono state fatte modifiche senza aver salvato.\nUscendo dalla pagina le modifiche andranno perse'
		}
		else
			return '';
	}
}

/*
FUNZIONI PER I CONTROLLI SINTATTICI DEI CAMPI DEL FORM
*/

// Alcune Regular Expressions già pronte

var ReData=/^(((0?[1-9]|[12][\d]|3[01])\/(0?[13578]|10|12)\/(\d{4}))|((0?[1-9]|[12][\d]|30)\/(0?[469]|11)\/(\d{4}))|((0?[1-9]|1[\d]|2[0-8])\/(0?2)\/(\d{4}))|((29)\/(0?2)\/([02468][048]00))|((29)\/(0?2)\/([13579][26]00))|((29)\/(0?2)\/([\d][\d]0[48]))|((29)\/(0?2)\/([\d][\d][2468][048]))|((29)\/(0?2)\/([\d][\d][13579][26])))$/
var ReDataNonObbligatoria=/^((((0?[1-9]|[12][\d]|3[01])\/(0?[13578]|10|12)\/(\d{4}))|((0?[1-9]|[12][\d]|30)\/(0?[469]|11)\/(\d{4}))|((0?[1-9]|1[\d]|2[0-8])\/(0?2)\/(\d{4}))|((29)\/(0?2)\/([02468][048]00))|((29)\/(0?2)\/([13579][26]00))|((29)\/(0?2)\/([\d][\d]0[48]))|((29)\/(0?2)\/([\d][\d][2468][048]))|((29)\/(0?2)\/([\d][\d][13579][26]))))?$/
var ReDataObbligatoriaOraNonObbligatoria=/^(((0?[1-9]|[12][\d]|3[01])\/(0?[13578]|10|12)\/(\d{4}))|((0?[1-9]|[12][\d]|30)\/(0?[469]|11)\/(\d{4}))|((0?[1-9]|1[\d]|2[0-8])\/(0?2)\/(\d{4}))|((29)\/(0?2)\/([02468][048]00))|((29)\/(0?2)\/([13579][26]00))|((29)\/(0?2)\/([\d][\d]0[48]))|((29)\/(0?2)\/([\d][\d][2468][048]))|((29)\/(0?2)\/([\d][\d][13579][26])))( (([01]?\d)|(2[0-3]))[:\.]([0-5]\d)([:\.]([0-5]\d))?)?$/
var ReDataOraNonObbligatoria=/^((((0?[1-9]|[12][\d]|3[01])\/(0?[13578]|10|12)\/(\d{4}))|((0?[1-9]|[12][\d]|30)\/(0?[469]|11)\/(\d{4}))|((0?[1-9]|1[\d]|2[0-8])\/(0?2)\/(\d{4}))|((29)\/(0?2)\/([02468][048]00))|((29)\/(0?2)\/([13579][26]00))|((29)\/(0?2)\/([\d][\d]0[48]))|((29)\/(0?2)\/([\d][\d][2468][048]))|((29)\/(0?2)\/([\d][\d][13579][26])))( (([01]?\d)|(2[0-3]))[:\.]([0-5]\d)([:\.]([0-5]\d))?)?)?$/
var ReEmail = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/
var ReEmailNonObbligatoria = /^(([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?))?$/
var ReEuro = /^[0-9]+([.,][0-9]{1,2})?$/


var ClassNameNormale = 'TextBianco';
var ClassNameModificato = 'TextModificato';
var ClassNameErrato = 'TextErrato';
var ClassNameReadonly = 'TextReadonly';

function NumeroModificati(ff){
	var cont=0
	for(var i=0;i<ff.elements.length;i++)
		if(ff.elements[i].className==ClassNameModificato)cont++
	return cont
}
function NumeroErrati(ff){
	var cont=0
	for(var i=0;i<ff.elements.length;i++)
		if(ff.elements[i].className==ClassNameErrato)cont++
	return cont
}

function ControllaCampo(obj,re){
//out.innerHTML+=obj.name+' ------> '+re.source +'<br>\n';
	//questa funzione controlla se un campo viene modificato
	//dovrà essere previsto un campo hidden col valore di partenza con il nome uguale al campo preceduto da una 'x'
	//controlla la regular expression
	//colora in 3 diversi modi: non modificato, modificato, errato
	var ff=obj.form.elements
	var valore = '';
	var bolModificato
	valore=obj.value
	if(obj.type=='radio'){
		if(ff[obj.name].length){
			for(var i=0;i<ff[obj.name].length;i++){
				if(ff[obj.name][i].value==ff['x'+obj.name].value){
					if(ff[obj.name][i].checked)ff[obj.name][i].className=ClassNameNormale
					else ff[obj.name][i].className=ClassNameModificato
				}
				else{
					if(ff[obj.name][i].checked)ff[obj.name][i].className=ClassNameModificato
					else ff[obj.name][i].className=ClassNameNormale
				}
/*				if(ff[obj.name][i].checked){
					if(ff[obj.name][i].value==ff['x'+obj.name].value)ff[obj.name][i].className=ClassNameNormale
					else ff[obj.name][i].className=ClassNameModificato
				}
*/
			}
		}
	}
	else{
		if(obj.type=='select-one'){
			if(obj.options.length>0)
				valore=obj.options[obj.options.selectedIndex].value;
			else
				valore='';
		}
		if(obj.type=='checkbox')valore=(obj.checked ? obj.value : '')
		if(obj.type=='file')valore=obj.value.substr(obj.value.lastIndexOf('\\')+1);
//alert(re.source+'\n'+valore)
		if(ff['x'+obj.name]){
			//alert('HIDDEN= '+ff["x"+obj.name].value+'\nCAMPO= '+valore)
			bolModificato = (ff['x'+obj.name].value!=valore)
		}
		else
			bolModificato = true
	//alert('x'+obj.name+'\n>>'+valore+'<<\n>>'+ff['x'+obj.name].value+'<<\n'+bolModificato)
		if(re){
			if(re.test(valore)){
				if(bolModificato)obj.className=ClassNameModificato;
				else obj.className=ClassNameNormale;
			}
			else{
				obj.className=ClassNameErrato;
			}
		}
		else{
			if(bolModificato)obj.className=ClassNameModificato;
			else obj.className=ClassNameNormale;
		}
	}
	return (obj.className!=ClassNameErrato)
}

function UsaRE(campoForm){
	var ff=campoForm.form
	var strRe, inizio, fine
	var primaDiRe, dopoDiRe
	//var rere = /ControllaCampo\(this,\/([^\/]*)\/);/
	var returnre = false
	if(campoForm.onchange && !campoForm.disabled){
		strRe = campoForm.onchange.toString();
		if(strRe!=''){
//alert(strRe)
			primaDiRe='ControllaCampo(this,'
			if(strRe.indexOf(primaDiRe)>0){
				strRe=strRe.substr(strRe.indexOf(primaDiRe)+primaDiRe.length)
				dopoDiRe=');'
				strRe=strRe.substr(0,strRe.indexOf(dopoDiRe))
//alert(strRe)
				returnre = eval(strRe)
			}
		}
	}
	return returnre
}
function CampoValido(campoForm){
//alert(campoForm.name+'\n'+campoForm.value)
	ControllaCampo(campoForm,UsaRE(campoForm));
	return (campoForm.className!=ClassNameErrato)
}
function ControllaForm(ff){
	var re
	for(var i=0;i<ff.elements.length;i++){
		re = UsaRE(ff.elements[i])
		
//alert(ff.elements[i].name+'\n'+ff.elements[i].value+'\n'+re.source)
		if(re)ControllaCampo(ff.elements[i],re);
	}
}

function ControllaForm_BAK(ff){
	var strRe, inizio, fine
	var primaDiRe = 'ControllaCampo(this,/'
	var dopoDiRe = '\/);'
	var dopoDiRe2 = '\/i);'
	var dopoDiRe3 = '\/gi);'
	//var rere = /ControllaCampo\(this,\/([^\/]*)\/);/
	var re
	for(var i=0;i<ff.elements.length;i++){
		if(ff.elements[i].onchange && !ff.elements[i].disabled){
			strRe = ff.elements[i].onchange.toString();
//alert(strRe)
			if(strRe!=''){
//out.innerHTML+=strRe+'<hr>'
				if(strRe.indexOf('ControllaCampo')>0){
					inizio = strRe.lastIndexOf(primaDiRe)+primaDiRe.length;
					fine = strRe.lastIndexOf(dopoDiRe);
					if(fine<2)fine = strRe.lastIndexOf(dopoDiRe2);
					if(fine<2)fine = strRe.lastIndexOf(dopoDiRe3);
					strRe = strRe.substring(inizio,fine);
//out.innerHTML+=strRe+'<hr><hr>'
					re = new RegExp(strRe)
					ControllaCampo(ff.elements[i],re);
//out.innerHTML+=re.source+'<br>'
				}
			}
		}
		
	}
}

function SalvaForm(ff){
	ControllaForm(ff)
	var tuttook=true
	var necessario=false
	for(var i=0;i<ff.elements.length;i++){
		if(ff.elements[i].className==ClassNameErrato)tuttook=false
		if(ff.elements[i].className==ClassNameModificato)necessario=true
	}
	//alert('Tutto Ok ->' + tuttook)
	//alert('Necessario ->' + necessario)
	if(tuttook && necessario)
		return true;
	else
		return false;
}

//per aprire le popup di inserimento/modifica
function Apri(w,h,pagina,campoid,id){
	if(!id)id=''
	var nomewin=campoid+id
	if(campoid && id){
		var sep=(pagina.indexOf('?')>=0)?'&':'?';		
		pagina+=sep+campoid+'='+id;
	}
	var re = /\d+$/
	var ris = re.exec(id)
	var pp = window.open(pagina,campoid+ris,'width='+w+',height='+h+',resizable=1,scrollbars=1,status=1');
	pp.focus();
}

function dataValida(txt){
	var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/
	if(re.test(txt)){
		var adata = txt.split('/');
		var gg = parseInt(adata[0],10);
		var mm = parseInt(adata[1],10);
		var aaaa = parseInt(adata[2],10);
		var xdata = new Date(aaaa,mm-1,gg)
		if((xdata.getFullYear()==aaaa) && (xdata.getMonth()==mm-1) && (xdata.getDate()==gg))
			return xdata
		else return false
	}else return false
}

function LPad(str,length,xchar){
	var stringa = ''
	if(str.length<length){
		for(i=1;i<=length-str.length;i++)
			stringa = stringa + xchar
		stringa = stringa + str
		return stringa
	}
	else{
		return str
	}
}

function SelezionaOptionDaText(strForm,strSelect,strText){
	var ff=document.forms[strForm]
	if(ff){
		var ss=ff.elements[strSelect]
		if(ss){
			for(var i=0;i<ss.options.length;i++)
				if(ss.options[i].value.toLowerCase()==strText.toLowerCase())
					ss.options[i].selected=true
		}
	}
}

function AggiungiOption(strForm,strSelect,strText,strValue,bolSeleziona){
//alert(strForm+'\n'+strSelect)
	var ff=document.forms[strForm]
	if(ff){
		var ss=ff.elements[strSelect]
		if(ss){
			var nuovoIndice=ss.options.length
			ss.options[nuovoIndice]=new Option(strText,strValue)
			if(bolSeleziona)ss.options[nuovoIndice].selected=true
		}
	}
}
function ModificaOption(strForm,strSelect,indice,strText,strValue){
//alert(strForm+'\n'+strSelect)
	var ff=document.forms[strForm]
	if(ff){
		var ss=ff.elements[strSelect]
		if(ss){
			ss.options[indice].text=strText
			ss.options[indice].value=strValue
		}
}	}

function SvuotaOptions(strForm,strSelect){
	var ff=document.forms[strForm]
	if(ff){
		var ss=ff.elements[strSelect]
		if(ss){
			for(var i=ss.options.length-1;i>=0;i--)
				ss.options[i]=null
		}
	}
}


function EliminaOptionDaText(strForm,strSelect,strText){
	var ff=document.forms[strForm]
	if(ff){
		var ss=ff.elements[strSelect]
		if(ss){
			for(var i=0;i<ss.options.length;i++){
				if(ss.options[i].text.toLowerCase()==strText.toLowerCase()){
					ss.options[i]=null
					//ss.selectedIndex=0
				}
			}
		}
	}
}

function urlEncode(str){
	str = escape(str).replace(/\+/g,'%2B').replace(/%20/g, '+').replace(/\*/g, '%2A').replace(/\\/g, '%2F').replace(/@/g, '%40')
	return str;
}


//funzione che passato l'id di un form ne restituisce il valore degli elementi come se inviato con un get
function leggiFormEscape(id){
	var ff = document.getElementById(id);
	var str = '';
			
	for(i=0;i<ff.elements.length;i++){				
		str+=ff.elements[i].name+'='+urlEncode(LeggiValoreCampo(ff.elements[i]))+'&';
	}
	return str;
}

function leggiForm(id){
	var ff = document.getElementById(id);
	var str = '';
			
	for(i=0;i<ff.elements.length;i++){				
		str+=ff.elements[i].name+'='+LeggiValoreCampo(ff.elements[i])+'&';
	}
	return str;
}

function objQueryString(qs){ 
	var dic = new Array();
	if(!qs)	qs = location.search;
	if(qs!=''){
		var aQs = qs.replace(/^\?/,'').split('&');
		for(i=0;i<aQs.length;i++){
			aPV = aQs[i].split('=');
			dic[aPV[0]]=unescape(aPV[1].replace(/\+/g,' '));
		}
	}
	return dic
}

var qsPostBack='';
		
function AnalizzaDatiPagina(){
	qsPostBack=objQueryString(CaricaPagina_DatiPagina);
	chiudiMSG()
}
							
function chiudiMSG(){
	var ff = document.getElementById('form_id');
	var arr,arr2;			
			
	var box = $('boxActForm');
	var fx = new Fx.Morph(box, {duration: 1000, transition: Fx.Transitions.Quart.easeOut})
	fx.start({
	}).chain(function() {
		box.set('html','<p class="MessageBox"><img src="/img/ok.png"><br /><br />Salvataggio effettuato</p>');
		this.start.delay(1000, this, {'opacity' : 0});
	}).chain(function() {
		box.style.display="none";
		this.start.delay(0100, this, {'opacity' : 1});
	});
			
						
			
	if (qsPostBack['reload']=='1'){
		if(window.opener){window.opener.location.reload();}
	}
	//leggo la variabile vars
	if (qsPostBack['vars']!=''){
		if(qsPostBack['vars'].indexOf('&')>0){
			arr = qsPostBack['vars'].split('&');
			//per ogni variabile passata tramite vars
			for(i=0;i<arr.length;i++){
				arr2 = arr[i].split('=');
				//se esiste l'elemento nel form gli imposto il valore
				if(ff.elements[arr2[0]]){
					ff.elements[arr2[0]].value=arr2[1]
				}
			}
		}
		else{
			arr2 = qsPostBack['vars'].split('=');
			//alert(arr2[0]+' -> '+arr2[1])
			//se esiste l'elemento nel form gli imposto il valore
			if(ff.elements[arr2[0]]){
				ff.elements[arr2[0]].value=arr2[1]
			}
		}
	}
			
	impostaCampiHidden(ff);
	resettaStileForm(ff);
	
	//funzione per effettuare qualcosa dopo il salvataggio in remotingScripting
	if(typeof afterSave=='function') {
		afterSave();
	}
}
		
function impostaCampiHidden(ff){
	for(i=0;i<ff.elements.length;i++){
		//alert(ff.elements[i].name)
		if(ff.elements[i].name.substr(0,1)=='x'){
			if(ff.elements[ff.elements[i].name.substr(1)]){
				//alert(LeggiValoreCampo(ff.elements[ff.elements[i].name.substr(1)]))
				ff.elements[i].value = LeggiValoreCampo(ff.elements[ff.elements[i].name.substr(1)])						
			}
		}
	}
}
		
function resettaStileForm(ff){
	for(i=0;i<ff.elements.length;i++){
		if((ff.elements[i].className=='TextModificato')||(ff.elements[i].className=='TextErrato')){
			ff.elements[i].className='TextBianco';
		}
	}
}