String.prototype.trim = function() {
    return this.replace(/^\s*|\s*$/g,"");
};

function dump(o) {
    var ss = "";
    for(var s in o) {
        ss += s + ": " +o[s] + "\n";
    }
    alert(ss);
}

function Dispatcher(url, target, method, id) {
 
 var _id = id||"__sysDispatcher";
 var _page = url;
 var _target = target||"";
 var _method = method||"POST";
 
 var _params = [];
 var _paramsXML = [];
 
 this.add = function(name, value) {
  _params[name] = value;
 };
 
 this.addObj = function(obj) {
  for(var s in obj) _params[s] = obj[s];
 };
 
 this.addSafe = function(name, value) {
  _paramsXML[name] = value;
 };
 
 this.get = function(name) {
  return _params[name];
 };
 
 this.dispatch = function() {
 
  var frm = document.getElementById(_id);
  if (frm == null) {
   frm = document.createElement("form");
   frm.name = _id;
   frm.id = _id;
   $("body").append(frm);
  }
  
  try {
   
   frm.innerHTML = "";
   var fragment = "";
   for(var name in _params) {
    fragment += "<input type=\"hidden\" name=\"" + name + "\"" +
     " value=\"" + _params[name] + "\"/>";
   }
   for(var name in _paramsXML) {
    fragment += "<textarea style=\"display:none\" name=\"" + name + "\">" +
     _paramsXML[name] + "</textarea>";
   }
   
   frm.innerHTML = fragment;
   frm.action = _page;
   frm.target = _target||"";
   frm.method= _method;
   frm.submit();
   
  } catch(e) {}
 };
 
 this.setURL = function(url, target, method) {
  _page = url;
  _target = target;
  _method = method||"POST";
 };
 
 this.setPage = function(page) {
  _page = page;
 };
 
 this.setTarget = function(target) {
  _target = target;
 };
 
 this.setMethod = function(method) {
  _method = method;
 };
 
 this.setId = function(id) {
  _id = id;
 };
 
 this.getPage = function() {
  return _page;
 };
 
 this.getTarget = function() {
  return _target;
 };
 
 this.getMethod = function() {
  return _method;
 };
 
 this.getId = function() {
  return _id;
 };
};


function dispatch(url) {
    var d = new Dispatcher(url);
    d.dispatch();
}

function resettaErrore(messaggi) {
    for(var k=0; k<messaggi.length; k++) {
            $(messaggi[k]).removeClass("invalid"); 
            $(messaggi[k]).title = "";	
    }
}

function segnala(id, messaggio) {
    var o = $(id);
    o.addClass("invalid"); 
    o.title = messaggio||"Dato obligatorio!";
}


function toUpper(field)
{
        field.value = field.value.toUpperCase();
}

function interceptEnter(event, field)
{
        if (event && (event.which==13 || event.keyCode==13))
        {
                toUpper(field);
        }
}

function checkDigit(fieldId) {
     
    var fieldObj = document.getElementById(fieldId);
    var valore = fieldObj.value.toUpperCase();
     var somma=0;
     var check=0;
     var alfa;
     var valori;
     var nume;
     var continuo = true;
     var conferma;

     if (valore == "") return true;
     if (valore.length == 11) {
          alfa = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
          valori = '1234567890';
          nume = new Array(10,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,34,35,36,37,38);
          for (i=0;i<4;i++) {
               posiz=alfa.indexOf(valore.charAt(i));
               if (posiz<0) {
                    continuo = false;
                    break;
               } else {
                    somma=somma+(nume[posiz]*(1<< i));
               }
          }

          if (continuo) {
               for (i=4;i<10;i++) {
                    posiz=valori.indexOf(valore.charAt(i));
                    if (posiz<0) {
                         continuo = false;
                         break;
                    } else {
                         somma=somma+((valore.charAt(i)-'0')*(1<< i));
                    }
               }
          }
          if (continuo) {
               check = somma % 11;
               if (check==10) check=0;
               if (check==(valore.charAt(10)-'0')) {
                    return true;
               } else {
                    valore = valore.substring(0, valore.length-1) + check;
                    if (confirm("Contenitore con checkdigit errato. Sostituire con il valore corretto: " + valore + " ?")) {
                         fieldObj.value = valore;
                         return true;
                    }
               }
          }
     }
     conferma = confirm("Contenitore con checkdigit errato. Procedere comunque?");
     if (conferma) {
          return true;
     } else {
	    window.setTimeout(function() {fieldObj.focus();},200)
         return false;                    
     }
}

function checkDate(event) {
	var evt = null;
	if (window.event) {
		evt = window.event;
		var ch = String.fromCharCode(event.keyCode);
		if (ch=="-" || ch=="/" || ch==" ") return true;
		if (isNaN(parseInt(ch,10))) return false;
	} else {
		evt = event;
		//previene l'eliminazione dei caratteri speciali backspace etc in FireFox
		if (evt.charCode==0) return true; 
		var ch = String.fromCharCode(event.charCode);
		if (ch=="-" || ch=="/" || ch==" ") return true;
		if (isNaN(parseInt(ch,10))) return false;
	}
	return true;
}

function verifyDate(event) {
	var target = null;
	if (window.event) {
			target = window.event.srcElement;
	} else {
			target = event.target;
	}
	var svalue = target.value.trim();
	
	var ret = HLocale.equalize_date(svalue);
	target.value = ret.display;
}


function checkInteger(event) {
	var evt = null;
	if (window.event) {
		evt = window.event;
		if (evt.keyCode==13) {
			//this.jump();
			return true;
		}
		return !isNaN(parseInt(String.fromCharCode(window.event.keyCode)));
	} else {
		evt = event;
		if (evt.keyCode==13) {
			//this.jump();
			return true;
		} 
		if (evt.keyCode!=0) return true;
		return !isNaN(parseInt(String.fromCharCode(evt.charCode), 10));
	}
}

function verifyInteger(event) {
	var target = null;
	if (window.event) {
			target = window.event.srcElement;
	} else {
			target = event.target;
	}
	var svalue = target.value.trim().replace(/,/gi,".");
	var dvalue = parseInt(svalue, 10);
	if (isNaN(dvalue))
		target.value = "";
	else
		target.value = svalue;
}

function verifyDecimal(event) {
	var target = null;
	if (window.event) {
			target = window.event.srcElement;
	} else {
			target = event.target;
	}
	var svalue = target.value.trim().replace(/,/gi,".");
	var dvalue = parseFloat(svalue);
	if (isNaN(dvalue))
		target.value = "";
	else
		target.value = svalue;
}


function checkDecimal(event){
	var evt = null;
	if (window.event) {
		evt = window.event;
		var ch = String.fromCharCode(window.event.keyCode);
		if (ch=="-") return true;
		if (ch=='.' || ch==',') return true;
		if (isNaN(parseInt(ch,10))) return false;
	} else {
		evt = event;
		//previene l'eliminazione dei caratteri speciali backspace etc in FireFox
		if (evt.charCode==0) return true; 
		var ch = String.fromCharCode(event.charCode);
		if (ch=="-") return true;
		if (ch=='.' || ch==',') return true;
		if (isNaN(parseInt(ch,10))) return false;
	}
	return true;
}




function checkMail(email){

      var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

      if (filter.test(email)) {

      	return true;

      }

      return false;

}

var HLocale = {
	dateSplitters: new RegExp("[-/ ]"),
	timeSplitters: new RegExp("[:/ /-]"),
	day:0,
	month:1,
	year:2,
	dateSeparator: '/',
	dateStoreSeparator: '-',
    timeSeparator:':',
    y2kCutoff:35, 
	decimalSeparator: ',',
	thousandsSeparator: '.',
	currencyPrecision:2,
	doublePrecision:2,
	currencySign:'$',
	daysForMonths: [31,28,31,30,31,30,31,31,30,31,30,31],
	monthsNames: ["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],

        toDate: function(value) {
            var values = value.split(HLocale.dateSplitters);
            if (values.length != 3) return null;
            values[0] = parseInt(values[0],10);
            values[1] = parseInt(values[1],10);
            values[2] = parseInt(values[2],10);
            if (isNaN(values[0]) || isNaN(values[1]) || isNaN(values[2])) return null;
            return new Date(values[0], values[1]-1, values[2]);
        },

        dateToString: function(dt) {
            if (dt == null) return "";
            return dt.getFullYear()+"-"+(dt.getMonth()+1)+"-"+dt.getDate();
        },

        equalize_date_int: function(value) {
		var values = value.split(HLocale.dateSplitters);
                  
		if (values.length != 3) return {display:'',store:''};
		values[0] = parseInt(values[0],10);
		values[1] = parseInt(values[1],10);
		values[2] = parseInt(values[2],10);
                if (isNaN(values[0]) || isNaN(values[1]) || isNaN(values[2])) return {display:'',store:''};
		
                if (values[2]<1 || values[2]>31) return {display:'',store:''};
		if (values[1]<1 || values[1]>12) return {display:'',store:''};
		
                if (values[0]==0) return {display:'',store:''};
		
                if (values[1]==2) { //february
			var febDays = (((!(values[0] % 4)) && (values[0] % 100) ) ||
				!(values[0] % 400)) ? 29 : 28;
			if (values[2]>febDays) return {display:'',store:''};
		} else if (values[2] > HLocale.daysForMonths[values[1]-1]) {
			return {display:'',store:''};
		}
                
		//prepare for display and store
		var ret = ['','',''];
		ret[HLocale.year] = String(values[0]);
		if (values[2]<10)
			ret[HLocale.day] = "0"+String(values[2]);
		else
			ret[HLocale.day] = String(values[2]);
		if (values[1]<10)
			ret[HLocale.month] = "0"+String(values[1]);
		else
			ret[HLocale.month] = String(values[1]);
		return {
			display: ret.join(HLocale.dateSeparator),
			store: ret[HLocale.year]+"-"+
				ret[HLocale.month]+"-"+
				ret[HLocale.day]
		};
	},

	equalize_date: function(value) {
		if (value==null) return {display:'',store:''};
                var values = value.split(HLocale.dateSplitters);
                if (values.length != 3) return {display:'',store:''};
		values[0] = parseInt(values[0],10);
		values[1] = parseInt(values[1],10);
		values[2] = parseInt(values[2],10);
                if (isNaN(values[0]) || isNaN(values[1]) || isNaN(values[2])) return {display:'',store:''};
		if (values[HLocale.day]<1 || values[HLocale.day]>31) return {display:'',store:''};
		if (values[HLocale.month]<1 || values[HLocale.month]>12) return {display:'',store:''};
		if (values[HLocale.year]==0) return {display:'',store:''};
		if (values[HLocale.year]<=HLocale.y2kCutoff)
			values[HLocale.year]=2000+values[HLocale.year];
		else if (values[HLocale.year]<=99)
			values[HLocale.year]=1900+values[HLocale.year];
                if (values[HLocale.month]==2) { //february
			var febDays = (((!(values[HLocale.year] % 4)) && (values[HLocale.year] % 100) ) ||
				!(values[HLocale.year] % 400)) ? 29 : 28;
			if (values[HLocale.day]>febDays) return {display:'',store:''};
		} else if (values[HLocale.day] > HLocale.daysForMonths[values[HLocale.month]-1]) {
			return {display:'',store:''};
		}
                //prepare for display and store
		var ret = ['','',''];
		ret[HLocale.year] = String(values[HLocale.year]);
		if (values[HLocale.day]<10)
			ret[HLocale.day] = "0"+String(values[HLocale.day]);
		else
			ret[HLocale.day] = String(values[HLocale.day]);
		if (values[HLocale.month]<10)
			ret[HLocale.month] = "0"+String(values[HLocale.month]);
		else
			ret[HLocale.month] = String(values[HLocale.month]);
		return {
			display: ret.join(HLocale.dateSeparator),
			store: ret[HLocale.year]+"-"+
				ret[HLocale.month]+"-"+
				ret[HLocale.day]
		};
	},

        equalizeTime: function(value) {
            if (value==null) return {display:'',store:''};
            
            var values = value.split(HLocale.timeSplitters);
            if (values.length>2) return {display:'',store:''};
			if (values.length==1) values.push("0");
			
			values[0] = parseInt(values[0],10);
			values[1] = parseInt(values[1],10);
		
            if (isNaN(values[0]) || isNaN(values[1]) ) return {display:'',store:''};
			if (values[0]>23) return {display:'',store:''};
            if (values[1]>59) return {display:'',store:''};
		
                //prepare for display and store
			var ret = ['',''];
			if (values[0]<10)
				ret[0] = "0"+String(values[0]);
			else
				ret[0] = String(values[0]);
	
			if (values[1]<10)
				ret[1] = "0"+String(values[1]);
			else
				ret[1] = String(values[1]);
	
			return {
				display: ret.join(HLocale.timeSeparator),
				store: ret[0]+":"+ret[1]
			};
        }, 

        dateFormatter: function(s) {
            return HLocale.equalize_date_int(s).display;
        },

        timeFormatter: function(s) {
            return HLocale.equalizeTime(s).display;
        }
};

var Formatting = {
	format_number: function(v) {
		var value = String(v); var sv = String(v);
		if (value=="" || value==null || value=="null") return "";
		value = value.replace(/-/g,'');
		for (var i = 0; i < Math.floor((value.length-(1+i))/3); i++)
			value = value.substring(0,value.length-(4*i+3))+HLocale.thousandsSeparator+value.substring(value.length-(4*i+3));
		var num = parseInt(sv, 10);
		if (num != Math.abs(num)) value = "-"+value;
		return value;
	},
	format_double: function(v,dprec) {
		var prec = dprec||HLocale.doublePrecision;
		var value = String(v); var sv = String(v);
		if (value=="" || value==null  || value=="null") return "";
		value = value.replace(/\$|\,/g,'.').replace(/-/g,'');
		var whole = "";
		var frac = "";
		var dot = value.indexOf('.');
		if (dot == -1) {
			whole = value;
			frac = dojo.string.repeat("0", prec);
		} else {
			whole = value.substring(0,dot);
			frac = value.substr(dot+1);
			if (frac.length<prec) frac += dojo.string.repeat("0",prec-frac.length);
		}
		for (var i = 0; i < Math.floor((whole.length-(1+i))/3); i++)
			whole = whole.substring(0,whole.length-(4*i+3))+HLocale.thousandsSeparator+whole.substring(whole.length-(4*i+3));
		var num = parseFloat(sv);
		if (num != Math.abs(num)) whole = "-"+whole;
		return whole + HLocale.decimalSeparator +frac;
	},
	format_currency: function(v, dprec, asign) {
		var prec = dprec||HLocale.currencyPrecision;
		return (asign||HLocale.currencySign) + " " + kiowa.formatting.format_double(v, prec);
	}
};

var _gControls = [];
	
function getControl(id) {
        return _gControls[id];
}
 
function toJSON(data) {
        try {
                var src = eval("[" + data + "]");
                return src[0];
        } catch(e) {
                return {is_error:true, is_conversion: true, message:'Errore di conversione JSON' };	
        }
}


	var _gControls = [];
	
	


function DataGrid(id, colId, manager, pagingEnabled, checked) {
		this.id = id;
		this.columns = [];
		//this.onActionText = onAction;
		
		this.manager = manager;
		this.colId = colId;
		this.pagingEnabled = pagingEnabled;
		this.checked = checked;
		this.data = [];
		_gControls[id] = this;
		
	}


DataGrid.prototype = {
	destroy: function() {
	},
	addCol: function(name, sqlName,display, align, transformer, sortable, search) {
		
                var lalign = "left";
                var valign = "center";
                
                var al = align.split(":");
                
                if (al.length>1) {
                    lalign = al[0];
                    valign = al[1];
                } else {
                    lalign = align;
                }
                
                this.columns.push({
			name: name,
                        sqlName: sqlName,
			display:display, 
			align: lalign, 
			valign: valign, 
                        transformer: transformer, 
			sortable:sortable,
			sortdir: 'ASC',
			sorted: false,
			search: search
		});
	},
	getSearchValue: function(colName) {
		for(var k=0; k<this.columns.length; k++)
			if (this.columns[k].name==colName)
				if (this.columns[k].search) {
					try {
						return document.getElementById(this.id+'#'+colName).value;
					} catch(e) {
						return '';
					}
				} else {
					return '';
				}	
	},
	onkey: function(event) {
		var evt = null;
		if (window.event) {
			evt = window.event;
			if (evt.keyCode==13) {
				this.jump();
				return false;
			}
			return !isNaN(parseInt(String.fromCharCode(window.event.keyCode)));
		} else {
			evt = event;
			if (evt.keyCode==13) {
				this.jump();
				return false;
			} 
			if (evt.keyCode!=0) return true;
			return !isNaN(parseInt(String.fromCharCode(evt.charCode), 10));
		}
	},
	jump: function() {
		//if (!this.onAction ) this.onAction = eval(this.onActionText);
		this.manager.callback('paging', { direction:  'jump',
				jumpTo: document.getElementById('go_page'+this.id).value } );
	},
	sort: function(colIdx) {
		
		if (this.columns[colIdx].sortable){
			//if (!this.onAction ) this.onAction = eval(this.onActionText);
			this.manager.callback('sort', { 
					colIdx: colIdx, 
					colName: this.columns[colIdx].sqlName,
					direction: this.columns[colIdx].sortdir=='ASC'?'DESC':'ASC'
				} 
			);
		}
	},
	change_page_size: function() {
		this.manager.callback('change_size', { 
				pageSize: document.getElementById("num_page"+this.id).value } );
	},
	setColSort: function(colIdx, direction) {
		
		for(var k=0; k<this.columns.length; k++)
			if (this.columns[k].sorted && this.columns[k].sortdir=='DESC')
				$('#dgcol'+this.id+k).addClass('sorted');
				
		this.columns[colIdx].sorted = true;
		this.columns[colIdx].sortdir=direction;
		if (direction=='ASC')
			$('#dgcol'+this.id+colIdx).removeClass('sorted');
		else
			$('#dgcol'+this.id+colIdx).addClass('sorted');
	},
	showLoading: function() {
		document.getElementById('dgl'+this.id).style.visibility = 'visible';
		//document.getElementById("grid_cont" + this.id).style.visibility = "hidden";
		//$("grid_cont" + this.id).setStyle("opacity", .2)
		
	},
	hideLoading: function() {
		document.getElementById('dgl'+this.id).style.visibility = 'hidden';
		//$("grid_cont" + this.id).setStyle("opacity", 1)
	},
	reload: function(){
		this.manager.caricaSelect();
	},
	load: function(src) {
		this.data.length = 0;
		var dbody = $("#grid_data" + this.id);
		
		//dbody.remove("tr");
		dbody.empty();
		
		if (src == undefined || src==null || src.data == undefined || src.data==null) {
			//document.getElementById('dgps'+this.id).style.visibility='hidden';
			document.getElementById('dgps'+this.id).style.display='none';
			
			this.hideLoading();
			return;
		}
		
		dbody = document.getElementById("grid_data" + this.id);
		
		for(var k=0; k<src.data.length; k++) {
			var obj = 	src.data[k];
			
			var row = dbody.insertRow(dbody.rows.length);
			this.data[k] = row;
			
			if (obj.is_html) {
				row.innerHTML = obj.content; 
			} else {
				
				row.className=(k % 2 == 0)?"odd":"even";
				
				for(var i=0; i<this.columns.length; i++) {
					var col = this.columns[i];
					var cell = row.insertCell(row.cells.length);
					cell.align = col.align;
                                        cell.vAlign = col.valign;
					var value = obj[col.name];
					if (value == null ) value='';
					if (col.transformer) value = col.transformer(value);
					cell.innerHTML = value; 
				}
			}
		}
		
		if (src.data.length == 0) {
			var row = dbody.insertRow(dbody.rows.length);
			row.className="odd";
			for(var i=0; i<this.columns.length; i++) {
				var cell = row.insertCell(row.cells.length);
				cell.innerHTML = "&nbsp;"; 
			}
		}
		
		//document.getElementById('dgps'+this.id).style.visibility='visible';
		document.getElementById('dgps'+this.id).style.display='';
		//document.getElementById('dgps'+this.id).style.visibility=src.data.length>0?'visible':'hidden';
		
		/*$(dbody ).getElements("td").each( function(element) { 
                            element.addClass('grid_text');
                            });
                */
                $("#grid_data" + this.id+" > td").each( function() {
                        this.addClass('grid_text');
                    });
		
		if (this.pagingEnabled) {
			var ss = "";
			document.getElementById('go_page'+this.id).value = src.pager.current;
			//document.getElementById('dpgl'+this.id).style.visibility = src.pager.prev?"visible":"hidden";
			//document.getElementById('dpgr'+this.id).style.visibility = src.pager.next?"visible":"hidden";
			document.getElementById('dpgl'+this.id).style.display = src.pager.prev?"":"none";
			document.getElementById('dpgr'+this.id).style.display = src.pager.next?"":"none";
			
			var pagine = 0;
			var pcount = parseInt(src.pager.count,10);
			
			if (!isNaN(pcount)) {
				document.getElementById('num_rec'+this.id).innerHTML = pcount;
			} else {
				document.getElementById('num_rec'+this.id).innerHTML = "N.D.";
			}
			
			var psize = parseInt(src.pager.pageSize,10)
			
			var divisione = Math.floor(pcount/psize);
			if (divisione * psize == pcount)
					pagine = divisione;
			else
					pagine = (divisione + 1);

			//var cnt = "Records da "+ src.pager.pageStart + "/" + src.pager.pageEnd+ " di " + pcount+ ' ( '+pagine+' pagine )';
			
			var cnt = "Pagina "+ src.pager.current;
			
			if (parseInt(pagine) > 0) {
				if (parseInt(pagine) == 1) cnt += ' ( 1 pagina )';
				else cnt += ' ( '+pagine+' pagine )';
			}
			else cnt += ' ( Nessuna Pagina )';
			
			$('#dgstatus'+this.id).text(cnt);
		}
		this.hideLoading();
	},
	page: function(mode) {
		try {
			this.manager.callback('paging', { direction: mode} );
		} catch(e) {
			alert(e.description);
		}
	}
}
	
function GridManager(gridId, url, params, check) {
	this.gridId = gridId;
	this.url = url;
	this.params = params||[];
	this.check = check;
	this.gDataSend = null;
	this.onSelect = null;
        
}

GridManager.prototype = {
	
	
	callback: function(action, data) { 
		getControl(this.gridId).showLoading(); 
		
		var thisObj = this;
		window.setTimeout(function() {
					thisObj._callback(action, data);
				}, 200);
		 
	},
	
	_callback: function(action, data) { 
		
		if (action=='paging') { 
			var da_inviare = {
				pact: 'pagina',  
				wid: this.uid, 
				act: data.direction, 
				jt: data.direction=='jump'?data.jumpTo:0	
			};
			for(var k=0; k<this.params.length; k++) 
				da_inviare[this.params[k]] = $("#"+this.params[k]).val().trim();
				 
			var gridId = this.gridId;
			 
			$.post(this.url,
                            da_inviare,
                            function(obj) {
                                if (obj.is_error) { 
                                        if (obj.is_conversion) 
                                                alert(""); 
                                        else 
                                                alert(obj.message); 
                                        getControl(gridId).hideLoading();
                                        return; 
                                }
                                getControl(gridId).load(obj);	
                            },
                            "json"    
                        );
			
			
		} else if (action=='change_size') { 
		
			this.caricaSelect(data.pageSize); 
		
		} else if (action=='sort') {
			
			this.gDataSend = data; 
			
			var da_inviare = {  
				wid: this.uid,
				colname: data.colName, 
				sortdir: data.direction, 
				pact: 'sort' 
			}; 
			
			for(var k=0; k<this.params.length; k++) 
				da_inviare[this.params[k]] = $("#"+this.params[k]).val().trim();
			
			var gridId = this.gridId;
			var gDataSend = this.gDataSend;
			
			$.post(this.url,
                               da_inviare,
                               function(obj) {
                                    if (obj.is_error) { 
                                            if (obj.is_conversion) 
                                                    alert(""); 
                                            else 
                                                    alert(obj.message); 
                                            getControl(gridId).hideLoading(); return; 
                                    }
                                    getControl(gridId).load(obj); 
                                    getControl(gridId).setColSort(
                                            gDataSend.colIdx, 
                                            gDataSend.direction
                                    );
                                },
                                "json"
			);
			
		} 
	},
	
	
	_caricaSelect : function(pageSize) { 
		window.setTimeout(this._caricaSelect, 250);	
	},
	
	caricaSelect : function(pageSize) { 
		
                
		var da_inviare = {  
				pact: 'filter',
				pageSize: pageSize!=undefined?pageSize:-1 
			}; 
		
		for(var k=0; k<this.params.length; k++) 
                    da_inviare[this.params[k]] = $("#"+this.params[k]).val().trim();
		
		var gridId = this.gridId;
		var url = this.url;
		var thisObject = this;
		
		if (this.onBeforeQuery) this.onBeforeQuery(da_inviare);
		
                $.post(this.url,
                    da_inviare,
                   function(obj) {
                        if (obj.is_error) { 
                                if (obj.is_conversion) 
                                        alert(""); 
                                else 
                                        alert(obj.message||obj.messaggio); 
                                getControl(gridId).hideLoading();
                                if (thisObject.onSelect) thisObject.onSelect();
                                return; 
                        }
                        var gr = getControl(gridId);
                        gr.load(obj);
                        //alert(gr.onSelect)
                        if (gr.manager.onSelect) {
                                try {
                                        //window.setTimeout(gr.manager.onSelect, 200):
                                        gr.manager.onSelect(obj);
                                } catch(e) {
                                }	
                        }
                    },
                    "json");
		
	} 
}

function formattaData(s) {
    if (typeof(s) != "string") return "";
    var v = String(s).trim();
    if (v == "") return "";
    return v.substr(8,2) + "/" + v.substr(5,2) + "/" + v.substr(0,4);
}

function formattaDataOra(s) {
    if (typeof(s) != "string") return "";
    var v = String(s).trim();
    if (v == "") return "";
    return v.substr(8,2) + "/" + v.substr(5,2) + "/" + v.substr(0,4) +  " " + v.substr(11,5);
}

function n(s) {
    if (typeof(s) == "object" || String(s)=="null") return "";
    return s;
}

function bloccaUI(messaggio) {
    $.blockUI({ css: { 
            border: 'none', 
            padding: '15px', 
            backgroundColor: '#000', 
            '-webkit-border-radius': '10px', 
            '-moz-border-radius': '10px',
            'z-index': 10000000,
            opacity: '.5', 
            color: '#fff' 
        }, message: messaggio||"Attendere prego..." }
        );
}

function sbloccaUI() {
     $.unblockUI();
}

$.datepicker.setDefaults({
        dateFormat: "dd/mm/yy",
        dayNames: ['Domenica', 'Lunedi', 'Martedi', 'Mercoledi', 'Giovedi', 'Venerdi', 'Sabato'],
        dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'],
        dayNamesMin: ['Do', 'Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa'],
        monthNames: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio',
                     'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'],
        monthNamesMin: ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic']
        
    });


/*$.ui.dialog.defaults.bgiframe = true;
$.datepicker.setDefaults({
        dateFormat: "dd/mm/yy",
        dayNames: ['Domenica', 'Lunedi', 'Martedi', 'Mercoledi', 'Giovedi', 'Venerdi', 'Sabato'],
        dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'],
        dayNamesMin: ['Do', 'Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa'],
        monthNames: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio',
                     'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'],
        monthNamesMin: ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic']
        
    });

*/

