// Copyright 2004 and onwards  Zucchetti Spa.

function TestReady(){
  if (typeof document.readyState != 'undefined' && document.readyState!='complete') {
    event.cancelBubble=true
    event.returnValue=false
    if (typeof m_bAlreadySubmitted == 'undefined' || !m_bAlreadySubmitted) {
      var msg='Prego attendere il completo caricamento della pagina'
      if (typeof m_cLanguage!='undefined') {
        switch(m_cLanguage) {
          case 'ENG':
            msg='Please wait page loading completion'
            break
          default:
        }
      }
      alert(msg)
    } else {
      alert(Translate('MSG_SERVER_DATA'))
    }
  }
}
function InstTR(){
  document.onmousedown=TestReady
  document.onkeydown=TestReady
}
function HideLoadingLayer(status){
  Ctrl('entity_loading').style.display=(typeof(status)=='undefined' || status?'none':'');
}
function CheckModified() {
 if(m_bUpdated){
  return "";
 }
 else{
  return void(0);
 }
}

var c_cIE='IE', c_cNetscape="Netscape", c_cOpera="Opera", c_cMozilla="Mozilla", c_cIE_MAC='IE_MAC'

var decSep
var milSep

SetNumberSettings()

function getBrowserType() {
 if(navigator.userAgent.toLowerCase().indexOf('netscape')!=-1) return c_cNetscape
 if(navigator.userAgent.toLowerCase().indexOf('opera')!=-1) return c_cOpera
 if(navigator.userAgent.toLowerCase().indexOf('gecko')!=-1) return c_cMozilla
 return c_cIE
}

function IsIE() {
 if(typeof(m_cBrowser)=='undefined'){m_cBrowser=getBrowserType()}
 return m_cBrowser==c_cIE
}

function IsNetscape() {
 if(typeof(m_cBrowser)=='undefined'){m_cBrowser=getBrowserType()}
 return Eq(m_cBrowser,c_cNetscape)
}

function IsOpera() {
 if(typeof(m_cBrowser)=='undefined'){m_cBrowser=getBrowserType()}
 return Eq(m_cBrowser,c_cOpera)
}

function IsMozilla() {
 if(typeof(m_cBrowser)=='undefined'){m_cBrowser=getBrowserType()}
 return Eq(m_cBrowser,c_cMozilla)
}

function IsIE_Mac() {
  return Eq(m_cBrowser,c_cIE_MAC)
}
if(typeof LibJavascript=='undefined') var LibJavascript={};
LibJavascript.ToDate=function(p_cDate) {
if (Empty(p_cDate)) return NullDate();
var date = p_cDate;
var day=p_cDate.substring(0,date.indexOf('-'))-0
date=date.substring(date.indexOf('-')+1);
var month=(date.substring(0,date.indexOf('-'))-0)-1
date=date.substring(date.indexOf('-')+1);
var year=date.substring(0)-0
return new Date(year,month,day,0,0,0,0)
}
LibJavascript.ToDateTime=function(p_cDateTime) {
if (Empty(p_cDateTime)) return NullDateTime();
var date = p_cDateTime;
var day=p_cDateTime.substring(0,date.indexOf('-'))-0
date=date.substring(date.indexOf('-')+1);
var month=(date.substring(0,date.indexOf('-'))-0)-1
date=date.substring(date.indexOf('-')+1);
var year=date.substring(0,date.indexOf(' '))-0
date=date.substring(date.indexOf(' ')+1);
var hour=date.substring(0,date.indexOf(':'))-0
date=date.substring(date.indexOf(':')+1);
var minute=date.substring(0,date.indexOf(':'))-0
date=date.substring(date.indexOf(':')+1);
var second=date.substring(0)-0
return new Date(year,month,day,hour,minute,second,0)
}
LibJavascript.ReadGetData=function(){
var res={};
var getDataString=new String(window.location);
var questionMarkLocation=getDataString.search(/\?/);
if(questionMarkLocation!=-1){
getDataString=getDataString.substr(questionMarkLocation+1);
var getDataArray=getDataString.split(/&/g);
for(var i=0;i<getDataArray.length;i++){
var nameValuePair=getDataArray[i].split(/=/);
res[unescape(nameValuePair[0])]=unescape(nameValuePair[1]);
}
}
return res;
}
LibJavascript.UserCanSee=function(c1){
if(IsA(c1,'C'))c1=Ctrl(c1)
var c=c1.parentNode
return(c.getAttribute('status')!='close'||c.parentNode.getAttribute('status')!='close')&&c.style.display!='none'&&c.parentNode.style.display!='none'&&(typeof tabs=='undefined'||tabs.IsExpanded(ControlPage(c1)))
}
LibJavascript.RefreshChildGrid=function(c){
if(IsIE()){if(IsA(c,"C"))c=Ctrl(c)
if(c&&(c=c.contentWindow.Ctrl("GridTable_Container")))c.style.cssText=c.style.cssText
}}
jsapplets=new Array()

function AutonumberJavascript(p_documentloc) {
this.reset = function() {
this.names=new Array();
this.values=new Array();
this.ops=new Array();
this.types=new Array();
this.lens=new Array();
this.decs=new Array();
this.tables=new Array();
}
this.composeName = function(par) {
var file2=par
if (file2.lastIndexOf('?')>-1)
  file2=file2.substring(0,file2.indexOf('?'));
if (Right(file2,5)==".aspx")
  file2=file2.substring(0,file2.lastIndexOf('/'))+"/SPUpdateAutonumber.aspx";
else
  file2=file2.substring(0,file2.lastIndexOf('/'))+"/SPUpdateAutonumber";
return file2;
}
this.reset()
this.documentloc=p_documentloc
this.m_url = new JSURL(this.composeName(this.documentloc),true)
this.toUpdate=false
this.ok=false

this.GetFromResponse=function(res) {
var l;
var stop=false;
var i=0,p;
var text=LibJavascript.Split(res)
var line=0
for(line=0;line<text.length && !stop;line++) {
l=text[line]
i=i+1;
stop=(l=="-->")
if (i==2){
this.ok=l=="Ok"
this.errmsg=l;
} else if (i>2 && !stop) {
p=l.indexOf('=');
if (p!=-1) {
this.rdvar[l.substring(0,p).toLowerCase()]=l.substring(p+1)
}
}
}
}
this.SetETName=function(etname) {this.etname=etname}
this.doUpdate=function() {
var urle="?";
try {
var fixed=1;
for(var name in this.names) {
if (!IsA(this.names[name],'F')) {
var idx=this.names[name]
urle=urle+"Name"+fixed+"="+URLenc(idx)+"&";
urle=urle+"Value"+fixed+"="+URLenc(this.values[idx])+"&";
urle=urle+"Type"+fixed+"="+URLenc(this.types[idx])+"&";
urle=urle+"Len"+fixed+"="+URLenc(this.lens[idx])+"&";
urle=urle+"Dec"+fixed+"="+URLenc(this.decs[idx])+"&";
urle=urle+"Op"+fixed+"="+URLenc(this.ops[idx])+"&";
++fixed;
}
}
var row=1;
for(var tablename in this.tables) {
if (!IsA(this.tables[tablename],'F')) {
urle=urle+"Tablename"+row+"="+URLenc(tablename)+"&";
urle=urle+"Autonumber"+row+"="+URLenc(this.tables[tablename])+"&";
++row;
}
}
if(this.etname!=null)urle=urle+"ETName"+row+"="+URLenc(this.etname)+"&";
urle=urle.substring(0,urle.length-1);
this.rdvar=new Array();
var file=this.documentloc
file=this.composeName(file);
var url=new JSURL(file+urle,true);
this.GetFromResponse(url.__response());
} catch(e) {
this.ok=false;
}
this.reset();
}
this.checkUpdate=function() {
if (this.toUpdate) {
this.doUpdate()
this.toUpdate=false
this.etname=null
}
}
this.GetAutonumberString=function(p_cName) {
this.checkUpdate();
p_cName=p_cName.toLowerCase();
if (this.rdvar[p_cName] != null){
return this.rdvar[p_cName]
} else
return "";
}
this.GetAutonumberDouble=function(p_cField) {
this.checkUpdate();
p_cField=p_cField.toLowerCase();
if (this.rdvar[p_cField] != null) {
try {
return this.rdvar[p_cField]
} catch (e) {
return 0;
}
} else
return 0;
}
this.SetProg=function(name,value,op,type,len,dec) {
this.toUpdate=true;
var ln=name.toLowerCase();
this.names=this.names.concat(ln);
this.values[ln]=value
this.types[ln]=type
this.ops[ln]=op
this.lens[ln]=len+''
this.decs[ln]=dec+''
}
this.SetFixedProg=function(name,value,type,len,dec){
value=(type=='C'?Left(value+Replicate(' ',len),len):value+'')
this.SetProg(name,value,type=='N'?'0':'',type,len,dec)
}
this.SetAutonumber=function(auto,table) {
this.toUpdate=true;
this.tables[table]=auto.toLowerCase()
}
}

function LinkJavascript(p_documentloc) {

this.composeName = function(par) {
var file2=par
if (file2.lastIndexOf('?')>-1)
  file2=file2.substring(0,file2.indexOf('?'));
if (Right(file2,5)==".aspx")
  file2=file2.substring(0,file2.lastIndexOf('/'))+"/SPLinker.aspx";
else
  file2=file2.substring(0,file2.lastIndexOf('/'))+"/SPLinker";
return file2;
}
this.documentloc=p_documentloc
var par=this.composeName(this.documentloc)
this.m_url=new JSURL(par,true)
this.m_cKey=""
this.m_cSearchingFunction=""
this.m_bFillEmptyKey=false
this.m_cConfigParms=""
this.m_cID=""
this.m_cRdfields = ""
this.m_cRdtypes = ""
this.m_cAutozoom=""
this.m_cTable=""
this.m_bLooselyLinked=false
this.m_cDefaultsFunction=""
this.m_cMode=""

this.SetDoubleKey = function(keyFieldName,keyFieldValue,len,dec) {
this.m_bEmptyKey=keyFieldValue==0;
if (this.m_bFillEmptyKey) {
if (Empty(keyFieldValue)) {
keyFieldValue=''
}
}
this.m_cKey = this.m_cKey+","+keyFieldName+","+keyFieldValue
}
this.SetStringKey = function(keyFieldName,keyFieldValue,len,dec) {
this.m_bEmptyKey=keyFieldValue=="";
if (this.m_bFillEmptyKey) {
if (Empty(keyFieldValue)) {
keyFieldValue=''
} else {
keyFieldValue="'"+Strtran(keyFieldValue,"'","''")+"'"
}
} else {
keyFieldValue="'"+Strtran(keyFieldValue,"'","''")+"'"
}
this.m_cKey = this.m_cKey+","+keyFieldName+","+keyFieldValue
}
this.SetBooleanKey = function(keyFieldName,keyFieldValue,len,dec) {
this.m_bEmptyKey=keyFieldValue==false;
if (this.m_bFillEmptyKey) {
if (Empty(keyFieldValue)) {
keyFieldValue=''
}
}
this.m_cKey = this.m_cKey+","+keyFieldName+","+(keyFieldValue?1:0)
}
this.SetDateKey = function(keyFieldName,keyFieldValue,len,dec) {
this.m_bEmptyKey=(keyFieldValue=="0100-01-01")
if (this.m_bFillEmptyKey) {
if (Empty(keyFieldValue)) {
keyFieldValue=''
} else {
keyFieldValue="{d '"+keyFieldValue+"'}"
}
} else {
keyFieldValue="{d '"+keyFieldValue+"'}"
}
this.m_cKey = this.m_cKey+","+keyFieldName+","+keyFieldValue
}
this.SetDateTimeKey = function(keyFieldName,keyFieldValue,len,dec) {
this.m_bEmptyKey=(keyFieldValue=="0100-01-01 00:00:00")
if (this.m_bFillEmptyKey) {
if (Empty(keyFieldValue)) {
keyFieldValue=''
} else {
keyFieldValue="{ts '"+keyFieldValue+"'}"
}
} else {
keyFieldValue="{ts '"+keyFieldValue+"'}"
}
this.m_cKey = this.m_cKey+","+keyFieldName+","+keyFieldValue
}
this.SetFields = function(rd_fields) {
this.m_cRdfields = rd_fields
}
this.SetTypes = function(rd_types) {
this.m_cRdtypes = rd_types
}
this.SetLinkzoom = function(autozoom) {
this.m_cAutozoom = autozoom
}
this.SetMode = function(mode) {
this.m_cMode = mode
}
this.LinkTable = function(p_cTableName) {
this.m_cTable=p_cTableName
}
this.SetConfigName=function(){}//deprecato
this.SetSearchingFunction = function(p_cSearchingFunction) {
this.m_cSearchingFunction=p_cSearchingFunction
}
this.FillEmptyKey = function() {
this.m_bFillEmptyKey=true
}
this.SetConfigParms = function(p_cConfigParms) {
this.m_cConfigParms=p_cConfigParms
}
this.SetDefaultsFunction = function(p_cDefaultsFunction) {
this.m_bLooselyLinked=true
this.m_cDefaultsFunction=p_cDefaultsFunction
}
this.SetID=function(p_cID){
try{this.m_cID=m_IDS[p_cID][0]}catch(oldtemplate){this.m_cID=m_IDS[p_cID]}
}


this.DoLink=function(m_nKmode){
this.m_cWhereFieldExpr=""
this.m_cWhereFixedExpr=""
this.m_nDefaultRoutineResult=1
this.m_oData=""
this.rdvar=new Array()
var noconn=false,urle="?",c,url
try{
if (!this.m_bEmptyKey){
if(this.m_cKey.charAt(0)==',')this.m_cKey=this.m_cKey.substring(1)
urle+="Table="+this.m_cTable+"&"
urle+="Kfld="+URLenc(this.m_cKey)+"&"
urle+="Rdfld="+URLenc(this.m_cRdfields)+"&"
urle+="Rdtypes="+URLenc(this.m_cRdtypes)+"&"
urle+="Kmode="+m_nKmode+"&"
urle+="Autozoom="+this.m_cAutozoom+"&"
urle+="SearchingFunction="+this.m_cSearchingFunction+"&"
urle+="FillEmptyKey="+this.m_bFillEmptyKey+"&"
urle+="LooselyLinked="+this.m_bLooselyLinked+"&"
urle+="DefaultsFunction="+this.m_cDefaultsFunction+"&"
urle+="Key="+this.m_cID+"&"
urle+="Mode="+this.m_cMode+"&"
urle+=this.m_cConfigParms
urle=this.composeName(this.documentloc)+urle
c=LinkJavascript.cache?LinkJavascript.cache[urle]:null
if(c){this.rdvar=c.rdvar;this.m_cWhereFieldExpr=c.m_cWhereFieldExpr
this.m_cWhereFixedExpr=c.m_cWhereFixedExpr;this.m_nDefaultRoutineResult=c.m_nDefaultRoutineResult
this.ok=c.ok;this.askZoom=c.askZoom
}else{
url=new JSURL(urle,true)
try {
this.GetFromResponse(url.__response())
if(LinkJavascript.cache){LinkJavascript.cache[urle]=this;AppletTag("Link")}
}catch(e){
if(e&&url.http.status!=200){alert('errore interno:'+e.message);noconn=true;this.ok=false}
}
}
}else{
this.ok=true
this.askZoom=false
}
if(this.ok){return this.askZoom?2:1}else{return noconn?-1:0}
}finally{
this.m_cSearchingFunction=""
this.m_bFillEmptyKey=false
this.m_cConfigParms=""
this.m_cID=""
this.m_bLooselyLinked=false
this.m_cDefaultsFunction=""
this.m_cAutozoom=""
this.m_cKey=""
this.m_cMode=""
}
}

this.GetFromResponse = function(res) {
var l,stop=false,i=0,p,line,obuf,xap=LibJavascript.xap
this.askZoom=false;
var text=LibJavascript.Split(res)
for(line=0;i<text.length && !stop;line++) {
l=text[line]
i=i+1;
stop=(l=="-->")
if (i==2){
  this.ok=l=="Ok"
  this.errmsg=l;
} else if (i>2 && !stop) {
  if ("More data"==l)
    this.askZoom=true;
  else if (Left(l,12)=="WarnsToShow:") {
    TogglePostit.addPostit.idx=0
    ShowPostit(eval('['+l.substring(12)+']'))
  } else if (Left(l,15)=="WhereFieldExpr:")
    this.m_cWhereFieldExpr=xap('prova',l.substring(15));
  else if (Left(l,15)=="WhereFixedExpr:")
    this.m_cWhereFixedExpr=xap('prova',l.substring(15));
  else if (Left(l,21)=="DefaultRoutineResult:")
    this.m_nDefaultRoutineResult=eval(l.substring(21));
  else if (Left(l,8)=="Suggest:")
    this.m_oData=Right(l,l.length-8);
  else {
    l=xap('prova',l)
    p=l.indexOf('=');
    if (p!=-1) {
      this.rdvar[l.substring(0,p)]=eval(l.substring(p+1))
    }
  }
}
}//for
}

this.GetStringValue = function(p_cField,p_nLen,p_nDec) {
if (this.rdvar[p_cField]!=null){
return RTrim(this.rdvar[p_cField])
} else
return "";
}
this.GetDateValue = function(p_cField,p_nLen,p_nDec) {
if (!Empty(this.rdvar[p_cField])){
var date=this.rdvar[p_cField];
var year=date.substring(0,date.indexOf('-'))-0
date=date.substring(date.indexOf('-')+1);
var month=date.substring(0,date.indexOf('-'))-0
date=date.substring(date.indexOf('-')+1)+' ';
var day=date.substring(0,date.indexOf(' '))-0
return new Date(year,month-1,day,0,0,0,0)
} else
return NullDate();
}
this.GetDateTimeValue = function(p_cField,p_nLen,p_nDec) {
if (!Empty(this.rdvar[p_cField])){
var date = this.rdvar[p_cField];
var year=date.substring(0,date.indexOf('-'))-0
date=date.substring(date.indexOf('-')+1);
var month=date.substring(0,date.indexOf('-'))-0
date=date.substring(date.indexOf('-')+1);
var day=date.substring(0,date.indexOf(' '))-0
date=date.substring(date.indexOf(' ')+1);
var hour=date.substring(0,date.indexOf(':'))-0
date=date.substring(date.indexOf(':')+1);
var minute=date.substring(0,date.indexOf(':'))-0
date=date.substring(date.indexOf(':')+1);
var second=date.substring(0,date.indexOf('.'))-0
return new Date(year,month-1,day,hour,minute,second,0)
} else
return NullDateTime();
}
this.GetDoubleValue = function(p_cField,p_nLen,p_nDec) {
if (this.rdvar[p_cField]!=null) {
try {
return this.rdvar[p_cField]-0
} catch (e) {
return 0;
}
} else
return 0;
}

this.GetBooleanValue= function(p_cField,p_nLen,p_nDec) {
if (this.rdvar[p_cField]!=null)
return true==this.rdvar[p_cField];
else
return false;
}
this.GetWhereExpr = function(){
return URLenc(this.m_cWhereFieldExpr)
}
this.GetWhereFieldExprUnencoded= function(){
return this.m_cWhereFieldExpr
}
this.GetWhereFixedExprUnencoded= function(){
return this.m_cWhereFixedExpr
}
this.GetDefaultRoutineResult= function(){
return this.m_nDefaultRoutineResult
}
this.GetJSONData=function(){
return this.m_oData;
}
}

function InitWvApplet() {
 var l_oWv = WvApplet()
 l_oWv.reset()
 l_oWv.SetRow(0)
 return l_oWv
}
function WvApplet(){
 return jsapplets.WvApplet
}
function BatchApplet(){
 return jsapplets.BatchApplet
}
function SettingsApplet(){
 return jsapplets.SettingsApplet
}
function HParApplet(){
 return jsapplets.HParApplet
}
function TrsApplet(){
 return jsapplets.TrsApplet
}
function LinkApplet(){
 return jsapplets.LinkApplet
}
function AutonumberApplet(){
 return jsapplets.AutonumberApplet
}

function AppletTag(name,appletclass,SetValueNameFirst){
 var napp
 switch(name){
  case 'Trs': case 'Wv': case 'HPar': case 'Settings':
   napp=new TrsJavascript(SetValueNameFirst)
   break
  case 'Link':
   napp=new LinkJavascript(location.toString())
   break
  case 'Batch':
   napp=new BatchJavascript(location.toString())
   break
  case 'Autonumber':
   napp=new AutonumberJavascript(location.toString())
   break
  default:
 }
 jsapplets[name+'Applet']=napp
}

function CheckDateChar(e){
 var keyCode=GetKeyCode(e?e:window.event)
 if (IsNetscape() || IsMozilla()) {
  if (Eq(keyCode,0) || Eq(keyCode,8) || Eq(keyCode,13)) {
   return true
  }
 }
 //32-->Space ascii code, 45-->Minus ascii code, 46-->Point ascii code, 47-->/ ascii code, 58-->: ascii code, 37--> freccia sinistra, 39 --> freccia destra, 8--> backspace
 return (keyCode>47 && keyCode<58) || keyCode==32 || keyCode==45 || keyCode==46 || keyCode==47 || keyCode==58 || keyCode==37 || keyCode==39 || keyCode==8
}

//Validazione della data
function CheckDate(N_day,N_month,N_year){
 var objDate
 var day,month,year
 if(isNaN(N_day) || isNaN(N_month) || isNaN(N_year)){
  return(false)
 }
 else{
  objDate=new Date(N_year,N_month-1,N_day)
  day=objDate.getDate()
  month=objDate.getMonth()+1
  year=objDate.getFullYear()
  if(day==N_day && month==N_month && year==N_year){
   return(true)
  }
  else {
   return(false)
  }
 }
}
//Validazione della data ora
function CheckDateTime(N_day,N_month,N_year,N_hour,N_minute,N_second){
 var res=CheckDate(N_day,N_month,N_year)
 if(res){
  var objDate
  var hour,minute,second
  if(isNaN(N_hour) || isNaN(N_minute) || isNaN(N_second)){
   res=false
  }else{
   objDate=new Date(N_year,N_month-1,N_day,N_hour,N_minute,N_second)
   hour=objDate.getHours()
   minute=objDate.getMinutes()
   second=objDate.getSeconds()
   if(hour!=N_hour || minute!=N_minute || second!=N_second){
    res=false
   }
  }
 }
 return(res)
}

function WtH(workvar,type,len,dec,picture){
 if(len==null) len=0;
 if(dec==null) dec=0;
 if(picture==null) picture='';
 switch(type){
  case 'L':
   return FormatBoolean(workvar,picture);
   break;
  case 'C': case 'M':
   return FormatChar(workvar,len,picture);
   break;
  case 'N':
   if(len==0 && dec==0 && picture=='')
     return Strtran(workvar.toString(),".",decSep);
   else
     return FormatNumber(workvar,len,dec,picture);
   break;
  case 'D':
   return FormatDate(workvar,picture);
   break;
  case 'T':
   return FormatDateTime(workvar,picture);
   break;
 }
}
function HtW(obj,type){
 switch(type){
  case 'L':
   return CharToBool(obj);
   break;
  case 'C': case 'M':
   return Trim(obj);
   break;
  case 'N':
   return Val(Strtran(Strtran(obj, milSep,''),decSep,'.'));
   break;
  case 'D':
   return HtmlToWork_Date(obj);
   break;
  case 'T':
   return HtmlToWork_DateTime(obj);
   break;
 }
}

function HtmlToWork_Date(strDate){
 if(strDate=='' || strDate=='  -  -'){
  return new Date(100,0,1,0,0,0,0);
 }
 var eng=false;
 try{eng=m_cLanguage=='eng'}catch(e){}
 var day=strDate.substr((eng?3:0),2)-0;
 var month=strDate.substr((eng?0:3),2)-0;
 var year=strDate.substr(6,4)-0;
 var objDate=new Date(year,month-1,day);
 return objDate;
}
function HtmlToWork_DateTime(strDate){
 if(strDate=='' || strDate=='  -  -'){
  return new Date(100,0,1,0,0,0,0);
 }
 var eng=false;
 try{eng=m_cLanguage=='eng'}catch(e){}
 var day=strDate.substr((eng?3:0),2)-0;
 var month=strDate.substr((eng?0:3),2)-0;
 var year=strDate.substr(6,4)-0;
 var h=strDate.substr(11,2)-0;
 var m=strDate.substr(14,2)-0;
 var s=strDate.substr(17)-0;
 var objDate=new Date(year,month-1,day,h,m,s);
 return objDate;
}
function FormatChar(workvar,len,picture){
 if(picture!=null){
  var pictureType=picture.substr(0,1)
  if('!'==pictureType || 'M'==pictureType || 'W'==pictureType)
   workvar=workvar.toUpperCase()
  else if('w'==pictureType || 'm'==pictureType)
   workvar=workvar.toLowerCase()
  else if('9'==pictureType && ''!=workvar)
   workvar=FormatNumber(Strtran(workvar.toString(),decSep,"."),len,0,picture)
 }
 return workvar
}
function FormatBoolean(workvar,picture){
 return (workvar?'true':'false');
}

function FormatNumber(number, len, dec, picture) {
  if (isNaN(number)) number=0;
  if (picture==null) { picture='' }
  if (len==null) { len=0 }
  if (dec==null) { dec=0 }

  var decimals = dec, integers
  var i, stringLen = picture.length, j
  var stringNumber = Str(number), integerValue, aux, decimalValue = ''
  var bNeg = false;
  if (number < 0) {
      bNeg = true
      stringNumber = Str(Math.abs(number))
  }

  if (stringLen > 0) {
    for(i = 0; i < stringLen; i++)
      if ((picture.charAt(i) == ".")) break;
    if (i == stringLen)
      decimals = 0;
    else
      decimals = stringLen-i-1;
  }

  stringNumber = FormatDecimals(Math.abs(number), decimals)
  j = stringNumber.length-decimals
  if (decimals > 0) {
    decimalValue = decSep + Substr(stringNumber,stringNumber.length-decimals+1);
    j--
  }
  aux = integerValue = Left(stringNumber,j)
  if (aux=='') {
   integerValue=aux="0"
  }

  if (At(",", picture) > 0) {
    if (decimals > 0)
      picture = Left(picture, stringLen - decimals - 1);

    // aggiunta del separatore delle migliaia
    aux = ''
    stringLen = integerValue.length
    for(i = 0; i < stringLen; i++) {
      aux = integerValue.charAt(stringLen-i-1) + aux
      if ((i+1) % 3 == 0 && i != (stringLen - 1)) aux = milSep + aux
    }
  }
  if (bNeg) {
    return ('-'+aux+decimalValue)
  }
  else {
    return (aux+decimalValue)
  }
}

function FormatDecimals(number, dec) {
  if (dec == 0)
    return(Math.round(number).toString())
  if (number == 0)
    return "."+"0000000000000".substr(0,dec)
  var mult = 1
  for (i = 0; i < dec; i++) {
    mult = mult * 10
  }
  var r = (Math.round(number * mult)).toString()
  r = ZeroPad(r,dec)
  var l = r.length
  var decimals = r.substr(l-dec,dec)
  if (decimals != '')
    return r.substr(0,l-dec)+"."+r.substr(l-dec,dec)
  else
    return r.substr(0,l-dec)
}

function TranslatePicture(pict){
  if((window.m_cLanguage||"ita").match(/eng/i))
    return pict.replace(/(DD)(.*)(MM)/g, "$3$2$1");
  return pict;
}
//Formattazione delle Date a seconda dello stato di editing
function ApplyPictureToDate(str,format,ctrl) {
  //ctrl e' l' UID del control
  var dayString='',monthString='',yearString=''
  var hasFormat=Len(str)>8
  var res,picture

  if(format=='D' || format=='')
    picture='DD-MM-YYYY'
  else if(format=='N')
    picture='DDMMYYYY'
  else
    picture=format

  var tmpPict="";

  if(hasFormat){
    tmpPict=picture.replace(/(DD|MM)(\W)?(DD|MM)(\W)?(\w*)/g,"$1-$3-$5");//espande la picture
    dayString=str.substr(tmpPict.indexOf("DD"), 2);
    monthString=str.substr(tmpPict.indexOf("MM"), 2);
    yearString=str.substr(tmpPict.indexOf("YY"), 4);
  }else{
    tmpPict=picture.replace(/(DD|MM)(\W)?(DD|MM)(\W)?(\w*)/g,"$1$3$5");//contrae la picture
    dayString=str.substr(tmpPict.indexOf("DD"), 2)
    monthString=str.substr(tmpPict.indexOf("MM"),2);
    yearString=str.substr(tmpPict.indexOf("YY"), 4);
  }
  if(Len(yearString)==2){
    yearString=iif(Val(yearString)>50, '19', '20')+yearString;
  }
  res=CheckDate(Val(dayString),Val(monthString),Val(yearString))

  if(res) str=_PictDS(dayString,monthString,yearString,picture)
  else {
    if((dayString+monthString+yearString)!='' && ctrl!=null) {
      alert(Translate('MSG_WRONG_DATE'))
      str=''
      SetControlFocus(ctrl)
    }
  }
  return(str)
}
function ApplyPictureToDateTime(str,format,ctrl) {
  var dayString='',monthString='',yearString='',hourString='',minuteString='',secondString=''
  var hasFormat=Len(str)>14 || At('-',str)>0 || At('/',str)>0 || At(':',str)>0
  var res,picture

  if(format=='D' || format=='')
    picture='DD-MM-YYYY hh:mm:ss'
  else if(format=='N')
    picture='DDMMYYYYhhmmss'
  else
    picture=format

  if(!Empty(str)) {
    var tmpPict="";
    if(hasFormat){
      tmpPict=picture.replace(/(DD|MM)(\W)?(DD|MM)(\W)?(YYYY)(\W)?(hh)(\W)?(mm)(\W)?(ss)/g,"$1-$3-$5 $7:$9:$11");//espande la picture
      dayString=str.substr(tmpPict.indexOf("DD"), 2);
      monthString=str.substr(tmpPict.indexOf("MM"), 2);
      yearString=str.substr(tmpPict.indexOf("YYYY"), 4);
      hourString=str.substr(tmpPict.indexOf("hh"), 2) || '00';
      minuteString=str.substr(tmpPict.indexOf("mm"), 2) || '00';
      secondString=str.substr(tmpPict.indexOf("ss"), 2) || '00';
    }else{
      tmpPict=picture.replace(/(DD|MM)(\W)?(DD|MM)(\W)?(YYYY)(\W)?(hh)(\W)?(mm)(\W)?(ss)/g,"$1$3$5$7$9$11");//contrae la picture
      dayString=str.substr(tmpPict.indexOf("DD"), 2)
      monthString=str.substr(tmpPict.indexOf("MM"),2);
      yearString=str.substr(tmpPict.indexOf("YYYY"), 4);
      hourString=str.substr(tmpPict.indexOf("hh"), 2) || '00';
      minuteString=str.substr(tmpPict.indexOf("mm"), 2) || '00';
      secondString=str.substr(tmpPict.indexOf("ss"), 2) || '00';
    }
    if(Len(yearString)<4){
      if(Len(yearString)==2)
        yearString=iif(Val(yearString)>50, '19', '20')+yearString;
      else
        yearString=ZeroPad(yearString,4);
    }
    res=CheckDateTime(Val(dayString),Val(monthString),Val(yearString),Val(hourString),Val(minuteString),Val(secondString))

    if(res)str = _PictTS(dayString,monthString,yearString,hourString,minuteString,secondString,picture)
    else {
      if ((dayString+monthString+yearString+hourString+secondString+minuteString)!='' && ctrl!=null) {
        alert(Translate('MSG_WRONG_DATE'))
        str=''
        SetControlFocus(ctrl)
      }
    }
  }
  return(str)
}

function sqlDate(value) {
  return ZeroPad(''+value.getFullYear(),4)+'-'+ZeroPad(''+(value.getMonth()+1),2)+'-'+ZeroPad(''+value.getDate(),2)
}

function sqlDateTime(value) {
  return sqlDate(value) + ' ' + ZeroPad('' + value.getHours(),2) + ':' +
         ZeroPad('' + (value.getMinutes()), 2) + ':' + ZeroPad('' + value.getSeconds(),2)
}

function getTypeFromValue(value){
  var type="C";
  if (typeof(value)=="string"){
    type="C"
  } else if (typeof(value)=="number") {
    type="N"
  } else if (typeof(value)=="boolean") {
    type="L"
  } else if (IsA(value,"D")){
    type=((value.getHours()==0 && value.getMinutes()==0 && value.getSeconds()==0)?'D':'T')
  }
  return type
}

function toSQL(name,value,type,nolike){
 if(nolike==null) nolike=false;
 if (type==null) type=getTypeFromValue(value);
 var w=''
 switch(type){
  case 'C': case 'M':
   if(nolike){
    w=name+" = '"+Strtran(value,"'","''")+"'"
   }else{
    w=name+" like '"+Strtran(value,"'","''")+"%'"
   }
   break
  case 'N':
   w=name+' = '+value
   break
  case 'D':
   w=name+" = {d '"+sqlDate(value)+"'}"
   break
  case 'T':
   w=name+" = {ts '"+sqlDateTime(value)+"'}"
   break
  case 'L':
   w=name+' = '+(IsA(value,'L')?(value?1:0):value)
   break
 }
 return w
}
// Gestione checkbox
function ChkboxCheckUncheck(ChkboxCtrl,TValue,workValue){
 if(Eq(TValue,workValue)){
  ChkboxCtrl.checked=true;
 }else{
  ChkboxCtrl.checked=false;
 }
}
function ChkboxValueAssign(ChkboxCtrl,TValue,FValue,type,len,dec,picture){
 if(picture==null){ picture=''; }
 if(len==null){ len=0; }
 if(dec==null){ dec=0; }
 if(ChkboxCtrl.checked){
  ChkboxCtrl.value=WtH(TValue,type,len,dec,picture);
  return TValue;
 }else{
  ChkboxCtrl.value=WtH(FValue,type,len,dec,picture);
  return FValue;
 }
}

//Gestione radio
function selectRadio(RadioCtrl,val,type){
 for(var i=0;i<RadioCtrl.length;i++){
  if(Eq(HtW(RadioCtrl[i].value,type),val)){
   RadioCtrl[i].checked=true;
   return;
  }
 }
}
function getRadioValue(RadioCtrl){
 for(var i=0;i<RadioCtrl.length;i++){
  if(RadioCtrl[i].checked){
   return RadioCtrl[i].value;
  }
 }
 return '';
}

//Gestione combo
function selectCombo(ComboboxCtrl,val,type){
 if(ComboboxCtrl.type=='select-one'){
  var ComboOptions=ComboboxCtrl.options;
  for(var i=0;i<ComboOptions.length;i++){
   if(Eq(HtW(ComboOptions[i].value,type),val)){
    ComboboxCtrl.selectedIndex=i;
    return;
   }
  }
  ComboboxCtrl.value='';
 }
}
function getComboValue(ComboboxCtrl){
 if(ComboboxCtrl.selectedIndex==-1){
  //un combo puo' presentare un valore '' che non e' un'option del combo stesso
  return '';
 }else{
  return ComboboxCtrl.options[ComboboxCtrl.selectedIndex].value;
 }
}

function DoZoomOnLink(e) {
  var ctrl=GetEventSrcElement(e);
  if (ctrl!=null) {
    if (link_index(ctrl)>-1) {
      var id = ctrl.id;
      if (At('_ZOOM', id) != 0) {
        ctrl.onclick();
      } else {
        var blur=ctrl.onblur;
        ctrl.onblur=null;
        var val=ctrl.value;
        if("function"==eval("typeof("+id+"_Valid)") && eval(id+"_Valid(null)")) {
          if (Empty(val)){
            id = Left(id,10)+'_ZOOM'+Substr(id,11);
            var ctrl_z = Ctrl(id);
            if (ctrl_z != null) {
              ctrl_z.onclick();
            }
          }
        }
        ctrl.onblur=blur;
      }
    }
  }
}

function GetKeyCode(e){
 if(IsNetscape() || IsMozilla())
  return e.which;
 else
  return e.keyCode;
}
function GetEventSrcElement(e){
 e=e?e:window.event;
 if(IsNetscape() || IsMozilla())
  return e.target;
 else
  return e.srcElement;
}
function ManageKeys(e,p_bQuery,p_bBody,p_bOnlyLink,p_bIsDate){
  e=e?e:window.event;
  //per controlli in detail il default e' edit
  if(p_bQuery==null) p_bQuery=false;
  if(p_bBody==null) p_bBody=true;
  if(p_bOnlyLink==null) p_bOnlyLink=false;
  if(p_bIsDate==null) p_bIsDate=false;

  var keyCode=GetKeyCode(e);
  if(typeof(hideCalendar)=='function'){
    hideCalendar();
  }
  if(e.altKey && keyCode!=123) return;

  if((keyCode>111 && keyCode<124) || keyCode==8 || keyCode==9 || keyCode==27 || keyCode==33 || keyCode==34 || keyCode==38 || keyCode==40 || keyCode==46){
    if(typeof m_cFunction!='undefined' && m_cFunction=='view'){
      switch(keyCode) {
        case 113://F2
          if(typeof(PrintPrg)!='undefined') PrintPrg();
          break;
        case 114: //F3
          SubmitListenerForm('edit');
          break;
        case 121://F10
          window.setTimeout("SendData('discard')",1);
          break;
      }
    } else {
      if (p_bOnlyLink) {
        switch (keyCode) {
          case 8: //BackSpace
            if(IsIE() || IsIE_Mac())
              ManageNumericDel(e, keyCode)
            return //Devo fermarmi
          case 9: //TAB
            CallEventModifyCheck(e)
            return //Devo fermarmi
          case 27: //ESC
            if (window.opener!=null && typeof m_cFunction!='undefined' && m_cFunction=='dialog') {
              //Per compatibilita' Mozilla 1.2 e Netscape 7.0.2
              window.setTimeout("SendData('discard')",1);
            }
            break;
          case 38: //Freccia su
            return;
          case 40: //Freccia giu'
            return;
          case 46: //Canc
            ManageNumericDel(e, keyCode)
            return //Devo fermarmi
          case 120://F9
            if (!p_bQuery) {
              if (p_bIsDate && link_index(GetEventSrcElement(e))<0)
                LaunchCalendar(GetEventSrcElement(e),TranslatePicture("DDMMYYYY"));
              else
                DoZoomOnLink(e);
            }
            break;
          case 121://F10
            if (typeof SendData!='undefined' && !p_bQuery && CallEventModifyCheck(e)) SendData('save');
            break;
          case 123: //ALT+F12
            if (e.altKey) RunSecurity();
            break;
        }
      } else
      if (p_bQuery) {
        switch (keyCode) {
          case 9: //TAB
            return
          case 27: //ESC
            if (window.opener!=null && typeof(m_nChildStatus)!='undefined' && m_nChildStatus==1)
              window.close()
            break
          case 112: //F1
            break
          case 113: //F2
            if(typeof(PrintPrg)!='undefined') PrintPrg()
            break
          case 114: //F3
            SubmitListenerForm('edit')
            break
          case 115: //F4
            SubmitListenerForm('new')
            break
          case 116: //F5
            SubmitListenerForm('delete')
            break
          case 118: //F7
            RecSeek('previous')
            break
          case 119: //F8
            RecSeek('next')
            break
          case 120: //F9
            Zoom()
            break
          case 123: //F12
            if (!e.altKey) {
              if (typeof detailed_database_error!="undefined")
                alert(detailed_database_error)
            } else {
              RunSecurity()
            }
            break
        }
      } else {
        switch (keyCode) {
          case 8: //BackSpace
            if(IsIE() || IsIE_Mac())
              ManageNumericDel(e, keyCode)
            return //Devo fermarmi
          case 9: //TAB
            CallEventModifyCheck(e)
            return //Devo fermarmi
          case 27: //ESC
            if (typeof SendData!='undefined' && CallEventModifyCheck(e)) {
              //Per compatibilita' Mozilla 1.2 e Netscape 7.0.2
              window.setTimeout("SendData('moveto')",1);
            }
            break
          case 38: //Freccia su
            if(p_bBody && !m_bShowSuggest) {
              if (CallEventModifyCheck(e)) {
                ActivatePreviousRow(e)
              }
            } else {
              return
            }
            break
          case 40: //Freccia giu'
            if(p_bBody && !m_bShowSuggest) {
              if (CallEventModifyCheck(e)) {
                if (!ActivateNextRow(e)) return
              }
            } else {
              return
            }
            break
          case 46: //Canc
            ManageNumericDel(e, keyCode)
            return //Devo fermarmi
          case 112: //F1
            break
          case 117: //F6
            if(p_bBody) F6Ops()
            break
          case 120: //F9
            if (!p_bQuery) {
              if (p_bIsDate && link_index(GetEventSrcElement(e))<0)
                LaunchCalendar(GetEventSrcElement(e),TranslatePicture("DDMMYYYY"));
              else
                DoZoomOnLink(e);
            }
            break
          case 121: //F10
            if (typeof SendData!='undefined' && CallEventModifyCheck(e))
              SendData('save')
            break
          case 123: //F12
            if(!e.altKey){
              if (typeof detailed_database_error!="undefined")
                alert(detailed_database_error)
            }
            break
        }
      }
    }
    if(keyCode==8 || keyCode==46) return;
    if(keyCode==112){if (!(IsIE() || IsIE_Mac())){e.preventDefault();Help();}
    }else if(IsIE() || IsIE_Mac()){try{e.keyCode=0}catch(e){e.keyCode=null}}
    if((keyCode==33 || keyCode==34) && e.ctrlKey){
      if(keyCode==33)cp_StandardFunction("PgUp");
      if(keyCode==34)cp_StandardFunction("PgDn");
    }
    CancelEvent(e);
  }
}
function CancelEvent(e){
 e.cancelBubble=true
 if(e.stopPropagation) e.stopPropagation();
 e.returnValue=false
}
function CancelHelp() {
 CancelEvent(event);
 Help();
}
function F6Ops() {
 if(typeof(m_bStateNoDeleteRows)!="undefined" && m_bStateNoDeleteRows)
  return;
 NotifyEvent('Before row delete');
 Dataoperations('Delete', Ctrl('GridTable'));
 NotifyEvent('Row deleted');
 if ('undefined'!=typeof(DisableChainedLinks))
  EnableControlsUnderCondition_WhenReady();
 FocusFirstDetailComponent();
}

function CallEventModifyCheck(e){
var bRes=true
var srcControl=GetEventSrcElement(e)
if (srcControl.name!=null && srcControl.name!='' && srcControl.type!='button') {
var hlist=['onblur','onchange','onclick']
var handler
for(var i=0;handler==null && i<hlist.length;i++)
if (srcControl[hlist[i]]!=null && At("_Valid",srcControl[hlist[i]].toString())>0)
handler=srcControl[hlist[i]]
if (handler!=null)
if (IsIE()){
try {
srcControl[hlist[i-1]]=function(){}
bRes = handler(e)
} finally {
srcControl[hlist[i-1]]=handler
}
} else bRes = true;
}
return bRes
}

function compareDate(objData1,objData2) {
  if (( objData1.getDate()==objData2.getDate()   ) &&
      ( objData1.getMonth()==objData2.getMonth() ) &&
      ( objData1.getFullYear()==objData2.getFullYear()   )) {
    return true
  } else {
    return false
  }
}

function cp_StandardFunction(cCmd) {
  switch (cCmd) {
    case 'Query':
      if (CtrlByName('FSender') != null) {
        SendData('moveto')
      }
      break
    case 'Edit':
      SubmitListenerForm('edit')
      break
    case 'Delete':
      SubmitListenerForm('delete')
      break
    case 'Load':
      SubmitListenerForm('new')
      break
    case 'Save':
      if (CtrlByName('FSender') != null) {
        SendData('save')
      }
      break
    case 'Quit':
      if (CtrlByName('FSender') != null) {
        SendData('moveto')
      }
      break
    case 'Help':
      //da fare
      break
    case 'PgUp':
      /*if(m_nCurrentPage<m_nPageNumbers)
        PageButtonClick(m_nCurrentPage,m_nPageNumbers)
      */
      if(typeof(tabs)!='undefined')
        tabs.Prev();
      break
    case 'PgDn':
      /*if (m_nCurrentPage>1)
        PageButtonClick(m_nCurrentPage-2,m_nPageNumbers)
      */
      if(typeof(tabs)!='undefined')
        tabs.Next();
      break
    case 'ZoomPrev':  case 'ZoomNext':
      //da fare
      break
    case 'Back':
      history.back()
      break
    case 'Forward':
      history.forward()
      break
    case 'Refresh':
      location.reload()
      break
    default:
      if(Left(cCmd,11)=="OrderDetail"){
        eval(cCmd)
        return
      }
  }
  return
}

function AsControlValue(any) {
  switch (typeof(any)) {
    case 'string':
      return any
      break
    case 'number':
      return WtH(any,'N',0,0,'');
      break
    case 'boolean':
      return ''+any
      break
    case 'object':
      if (any.constructor==Date) {
        if (any.getHours() > 0 || any.getMinutes() > 0 || any.getSeconds() > 0)
          return FormatDateTime(any,'D')
        else
          return FormatDate(any,'D')
      }
      break
  }
  return ''
}

function AsAppletValue(any) {
  switch (typeof(any)) {
    case 'string':
      return WtA(any, 'C')
      break
    case 'number':
      return WtA(any, 'N')
      break
    case 'boolean':
      return WtA(any, 'L')
      break
    case 'object':
      if (any.constructor==Date) {
        if (any.getHours() > 0 || any.getMinutes() > 0 || any.getSeconds() > 0)
          return WtA(any, 'T')
        else
          return WtA(any, 'D')
      }
      break
  }
  return ''
}
// AppletToWork
function AtW(obj,type) {
  switch (type) {
    case 'L':
      return CharToBool(obj)
      break
    break
    case 'C': case 'M' :
      return Trim(obj)
      break
    case 'N':
      return Val(obj)
    case 'D':
      return HtmlToWork_Date(ApplyPictureToDate(obj,'DD-MM-YYYY'))
      break
    case 'T':
      return HtmlToWork_DateTime(ApplyPictureToDateTime(obj,'DD-MM-YYYY hh:mm:ss'))
      break
  }
}

var last_focused_comp=null
function EnsureControlFocus() {
if(IsA(window.HideTrsOrizzontalScrollBar,"F"))HideTrsOrizzontalScrollBar()
if(last_focused_comp!=null&&!last_focused_comp.disabled&&last_focused_comp.style.display!='none'){
try{
last_focused_comp.focus()
if(IsMozilla()) setTimeout("try{Ctrl('"+last_focused_comp.id+"').focus();Ctrl('"+last_focused_comp.id+"').select()}catch(e){}",200)
}catch(e){}
last_focused_comp=null
}
}

function SetControlFocus(str) {
  var org = Ctrl(str)
  if (org!=null) {
    var pagid=ControlPage(org);
    if(pagid && Ctrl(pagid).style.display=='none')
      tabs.Select(pagid)
    //Solo per i control RADIO prendo il primo elemento nell'array
    if (org.length!=null && org.length>0 && org.type!='select-one')
      org=org[0]
    if (!org.disabled && org.style.display!='none') {
      try {//https://bugzilla.mozilla.org/show_bug.cgi?id=53579
        org.focus()
        if(IsMozilla()) setTimeout("try{Ctrl('"+org.id+"').focus();Ctrl('"+org.id+"').select()}catch(e){}",200)
        last_focused_comp=org
      } catch(e) {}
    }
  }
}
function SetActiveField(ctrl,status){
 if(IsA(ctrl,'C'))ctrl=Ctrl(ctrl);
 if(status){
  LibJavascript.CssClassNameUtils.addClass(ctrl,'Active');
 }
 else {
  LibJavascript.CssClassNameUtils.removeClass(ctrl,'Active');
 }
}
function SetErrorField(ctrl,status){
 if(IsA(ctrl,'C'))ctrl=Ctrl(ctrl);
 if(status){
  LibJavascript.CssClassNameUtils.addClass(ctrl,'Error');
 }
 else {
  LibJavascript.CssClassNameUtils.removeClass(ctrl,'Error');
 }
}
function ToResource(src){
 if(At(':', src)==0 && Left(src, 1)!='.' && src!=''){
  src='../'+src;
 }
 return CompleteWithRegionalSettings(src);
}

function ToHTag(p_cValue) {
  p_cValue=Strtran(p_cValue,"&#13;","\r");
  p_cValue=Strtran(p_cValue,"&#10;","\n");
  var p=p_cValue.indexOf("<html>")
  var s=''
  while(p!=-1){
    s+=Strtran(Strtran(Left(p_cValue,p-1),"\r\n","<BR>"),"\n","<BR>")
    p_cValue=Substr(p_cValue,p+7)
    p=p_cValue.indexOf("</html>")
    if (p==-1){
      s+=p_cValue
      p_cValue=''
      p=-1
    }else{
      s+=Left(p_cValue,p)
      p_cValue=Substr(p_cValue,p+8)
      p=p_cValue.indexOf("<html>")
    }
  }
  s+=Strtran(Strtran(p_cValue,"\r\n","<BR>"),"\n","<BR>")
  return(s)
}

function RecSeek(action) {
  if (typeof(m_nChildStatus)=='undefined' || (typeof(m_nChildStatus)!='undefined' && m_nChildStatus==0)) {
    var Frm = document.FSender
    Frm.m_cAction.value = action
    Frm.submit()
  }
}

function SelectRecord() {
  var Frm = document.FSender
  var last = Val(document.FrmToolbar.last.value)
  if (!this.value)
    this.value=Ctrl("pos").value
  if (Lt(Val(this.value),1) && Gt(last,0)) {
    this.value = 1
  } else if (Gt(Val(this.value),last)) {
    this.value = document.FrmToolbar.last.value
  }
  if (Ne(Frm.m_nRecPos.value,this.value)) {
    Frm.m_cAction.value = 'moveto'
    Frm.m_nRecPos.value = this.value
    Frm.submit()
  }
}

function SelectRecordPortlet(last_p,pos_p) {
  var Frm = document.FSender
  var last = Val(last_p)
  if (!this.value)
    this.value=pos_p
  if (Lt(Val(this.value),1) && Gt(last,0)) {
    this.value = 1
  } else if (Gt(Val(this.value),last)) {
    this.value = last_p
  }
  if (Ne(Frm.m_nRecPos.value,this.value)) {
    Frm.m_cAction.value = 'moveto'
    Frm.m_nRecPos.value = this.value
    Frm.submit()
  }
}

function RecPositionInput(e) {
  e = e ? e : window.event
  if(13==GetKeyCode(e)) SelectRecord()
}

function CheckNum(e) { //BUG in mozilla o netscape: evidezia e digita. Non cancella. Inserisce
  var keyCode, res, v, field
  e = e ? e : window.event
  keyCode=GetKeyCode(e)         //ottiene il codice ASCII del tasto digitato
  field=GetEventSrcElement(e)   //ottiene l'elemento che ha generato l'evento

  if (IsNetscape() || IsMozilla() || IsOpera()) {
    if (Eq(keyCode,0) || Eq(keyCode,8) || Eq(keyCode,13)) {
      return true
    }
  }
  v = field.value
  res = IsNumber(keyCode)
  if (keyCode == 44 || keyCode == 46) {
    res = (At(decSep, v) == 0 ? true : false)
    if (res) {
      if (IsIE() || IsIE_Mac()) {
        e.keyCode = decSep.charCodeAt(0)
      }
      else {
        e.preventDefault()              //fermo l'evento
        field.value=field.value+decSep  //scrivo il separatore nel input
      }
    }
  }
  return(res)
}
function CheckNumWithPict(e,mod_dec,dec) {
  if (typeof(dec)=='undefined') {
    var mod=mod_dec[0]
    dec=mod_dec[1]
  } else {
   var mod=mod_dec
  }
  var keyCode, res, v, field
  if (typeof(e)!='undefined' && typeof(e.rootEvent)!='undefined') {
    keyCode = e.keyCode
    e = e.rootEvent
  } else {
    if(typeof(e)=='undefined' && (IsIE() || IsIE_Mac())) {
      e=window.event
    }
  }
  if (typeof(keyCode)=='undefined') {
    keyCode = GetKeyCode(e)
  }
  field = GetEventSrcElement(e)
  if (IsNetscape() || IsMozilla()) {
    if (Eq(keyCode,0)) {
      return true
    }
  }
  v = field.value
  var selStart = getSelectionStart(field)
  var selEnd = getSelectionEnd(field)
  var numb = Strtran(v, milSep, '')
  var numbLen = numb.length
  var commaPos = At(decSep, numb)
  var minusPos = At('-', numb)
  if (IsDigit(keyCode)) {
    if (selEnd ==  selStart) {
      if (commaPos == 0) {
        if ((numbLen - minusPos) < mod) {
          return true
        } else if (dec > 0){
          if (selStart == numbLen) {
            addText(field,decSep)
          } else {
            setSelection(field,mod-1,mod-1)
            addText(field,decSep)
            setSelection(field,selStart,selStart)
          }
          return true
        } else {
          return false
        }
      } else if (selStart < commaPos) {
        if ((commaPos - minusPos - 1) < mod) {
          return true
        } else if ((numbLen-minusPos-commaPos) < dec){
          if (selStart == commaPos - 1) {
            setSelection(field,commaPos,commaPos)
          } else {
            field.value = Strtran(field.value,decSep,'')
            setSelection(field,commaPos-2,commaPos-2)
            addText(field,decSep)
            setSelection(field,selStart,selStart)
          }
          return true
        } else {
          return false
        }
      } else {
        return (numbLen - commaPos) < dec
      }
    } else if (selStart == 0 && selEnd == numbLen) {
      return true
    } else if (commaPos == 0) {
      return true
    } else if (selStart < commaPos && selEnd >= commaPos) {
      return (numbLen - minusPos - selEnd + selStart) < mod
    } else if (selStart < commaPos) {
      return true
    } else {
      return (numbLen - commaPos) <= dec
    }
  } else if (dec > 0 && (keyCode == 44 || keyCode == 46)) {
    var res
    var zero = ''
    if (selEnd == selStart) {
      if (commaPos == 0 && selStart == minusPos) {
        zero = '0'
        res = true
      } else {
        res = commaPos == 0
      }
    } else if (selStart == 0 && selEnd == numbLen) {
      zero = '0'
      field.value=''
      res = true
    } else {
      res = commaPos == 0 || (selStart < commaPos && selEnd >= commaPos)
      if (selStart == 0) {
        zero = '0'
      }
    }
    if (res) {
      addText(field, zero+decSep)
      field.value = field.value.substr(0,selStart) + field.value.substr(selEnd)
      setSelection(field,selStart+1,selStart+1)
      if (IsIE() || IsIE_Mac()) {
        e.keyCode = null
      } else {
        e.preventDefault()
      }
    }
    return res
  } else if (keyCode ==  45) {
    if (selEnd == selStart) {
      if (selStart-minusPos > 0 && typeof(mod_dec[2])=='undefined') {
        ShowPopUpCalculator(field,keyCode,mod,dec)
      } else {
        ChangeMarkField(field,selStart,selEnd)
      }
      return false
    } else if (selStart == 0 && selEnd == numbLen) {
      return true
    } else {
      return minusPos == 0 && selStart == 0
    }
  } else if (keyCode == -1 || keyCode == 8) {
    var block = false
    var delFrom = 0, delTo = 0
    var toInsert = ''
    var caretPos = 0
    if (commaPos != 0) {
      if (selStart == 0) {
        if (selEnd == numbLen) {
          block = false
        } else if (selEnd >= commaPos) {
          if (numbLen - minusPos - selEnd + selStart <= mod) {
            block = false
          } else {
            block= true
            delFrom = selStart
            delTo = selEnd
            toInsert = '0'+decSep
            caretPos = 0
          }
        } else if (selEnd == (commaPos - 1)) {
          block = true
          delFrom = selStart
          delTo = selEnd
          toInsert = '0'
          caretPos = 0
        } else if (selEnd == selStart) {
          block = false
        } else {
          block = true
          delFrom = selStart
          delTo = selEnd
        }
      } else if (selEnd == numbLen) {
        block = false
      } else if (minusPos == 1 && selStart == minusPos && selEnd == commaPos-1) {
        block = true
        delFrom = selStart
        delTo = selEnd
        toInsert = '0'
        caretPos = 1
      } else if (selStart < commaPos-1) {
        if (selEnd <= commaPos-1) {
          block = false
        } else {
          if (numbLen-minusPos-selEnd+selStart > mod) {
            block = true
            delFrom = selStart
            delTo = selEnd
            caretPos = selStart
            toInsert = decSep
          }
        }
      } else if (selStart == commaPos-1 ) {
        var wantToDelComma = true
        if (selStart == selEnd)
          keyCode == -1 ? selEnd += 1 : wantToDelComma = false
        if (wantToDelComma && numbLen-minusPos-selEnd+selStart > mod) {
          block = true
          delFrom = selStart
          delTo = selEnd
          caretPos = selStart
          toInsert = decSep
        }
      } else if (selStart == commaPos && keyCode == 8 && selStart == selEnd) {
        selStart -= 1
        if (numbLen-minusPos-selEnd+selStart > mod) {
          block = true
          caretPos = selEnd
        }
      } else {
        block = false
      }
    }
    if (block) {
      field.value = field.value.substr(0,delFrom) + field.value.substr(delTo)
      setSelection(field,selStart,selStart)
      addText(field,toInsert)
      setSelection(field,caretPos,caretPos)
      if (IsIE() || IsIE_Mac()) {
        e.keyCode = null
      } else {
        if (keyCode == -1){
          addText(field,' ')
          setSelection(field,caretPos,caretPos)
        }
        e.preventDefault()
        return false
      }
    }
  } else if (keyCode == 42 || keyCode == 43 || keyCode == 47 ) {
    ShowPopUpCalculator(field,keyCode,mod,dec)
    return false
  } else {
    return false
  }
}
function addText(input,insText) {
 input.focus();
 if(input.createTextRange) { //IE
   document.selection.createRange().text += insText
 } else if(input.setSelectionRange) { //MOZ
   var len = input.selectionEnd
   input.value=input.value.substr(0,len) + insText + input.value.substr(len)
   input.setSelectionRange(len+insText.length, len+insText.length)
 } else {}
}
function getSelectionStart(input) {
  if (input.createTextRange) { // IE
    selectedRange = document.selection.createRange().duplicate()
    selectedRange.moveEnd("character",input.value.length)
    pos = input.value.lastIndexOf(selectedRange.text)
    if (selectedRange.text == "")
      pos = input.value.length
    return pos
  } else // MOZ
    return input.selectionStart
}
function getSelectionEnd(input) {
  if (input.createTextRange) { // IE
    selectedRange = document.selection.createRange().duplicate()
    selectedRange.moveStart("character",-input.value.length)
    pos = selectedRange.text.length
    return pos
  } else //MOZ
    return input.selectionEnd
}
function setSelection(input,selectionStart,selectionEnd) {
  if (input.createTextRange) { // IE
    var range = input.createTextRange();
    range.collapse(true);
    range.moveEnd('character', selectionStart);
    range.moveStart('character', selectionEnd);
    range.select();
  } else //MOZ
    input.setSelectionRange(selectionStart,selectionEnd)
}
function ChangeMarkField(field,selStart,selEnd) {
  selStart = typeof(selStart)=='undefined' ? getSelectionStart(field) : selStart
  selEnd = typeof(selEnd)=='undefined' ? getSelectionEnd(field) : selEnd
  if (At('-', field.value) == 0) {
    field.value = '-' + field.value
    setSelection(field,selStart+1,selEnd+1)
  } else {
    field.value = Substr(field.value,2)
    setSelection(field,selStart-1,selEnd-1)
  }
}
function CheckUpper(e){ //BUG in mozilla o netscape: evidezia e digita. Non cancella. Inserisce
 var keyCode,field
 e=e?e:window.event
 keyCode=GetKeyCode(e)       //ottiene il codice ASCII del tasto digitato
 field=GetEventSrcElement(e) //ottiene l'elemento che ha generato l'evento
 if(IsNetscape() || IsMozilla()){
  if(Eq(keyCode,0) || Eq(keyCode,8) || Eq(keyCode,13)){
   return true
  }
 }
 if(IsAlpha(keyCode)) {
  if(keyCode>96 && keyCode<123){ //e una lettera minuscola
   if(IsIE() || IsIE_Mac()){
    e.keyCode=keyCode-32 //scrivo la lettera maiuscola
   } else {
    e.preventDefault() //fermo l'evento
    field.value=field.value+String.fromCharCode(keyCode-32) //scrivo la lettera maiuscola
   }
  }
 }
 return true
}
function CheckLower(e){
 var keyCode,field
 e=e?e:window.event
 keyCode=GetKeyCode(e)
 field=GetEventSrcElement(e)
 if(IsNetscape() || IsMozilla()){
  if(Eq(keyCode,0) || Eq(keyCode,8) || Eq(keyCode,13)){
   return true
  }
 }
 if(IsAlpha(keyCode)){
  if(keyCode>64 && keyCode<91){ //e una lettera maiuscola
   if(IsIE() || IsIE_Mac()){
    e.keyCode=keyCode+32 //scrivo la lettera minuscola
   } else {
    e.preventDefault() //fermo l'evento
    field.value=field.value+String.fromCharCode(keyCode+32) //scrivo la lettera minuscola
   }
  }
 }
 return true
}
function CheckAlpha(e){ //BUG in mozilla o netscape: evidezia e digita. Non cancella. Inserisce
 var keyCode,field
 e=e?e:window.event
 keyCode=GetKeyCode(e)       //ottiene il codice ASCII del tasto digitato
 field=GetEventSrcElement(e) //ottiene l'elemento che ha generato l'evento
 if (IsNetscape() || IsMozilla()){
  if (Eq(keyCode,0) || Eq(keyCode,8) || Eq(keyCode,13)){
   return true
  }
 }
 return IsAlpha(keyCode)
}

function ManageNumericDel(e, keyCode) {
  var field = GetEventSrcElement(e)
  try {
    var x = new MyEvent(e,keyCode)
    return eval(field.id+'_CheckNumWithPict(x)') //non so se serve il return...
  }catch(ex){}
}
MyEvent = function(e,code) {
  if (code==46)
    code=-1
  this.rootEvent=e
  this.keyCode=code
  this.which=code
}

function ValidNum(v,picture) {
  var p_dec = 0
  if (At('.', picture) > 0) p_dec = Len(Substr(picture, At('.', picture) + 1))
  return(Round(v, p_dec))
}

function CompleteWithRegionalSettings(url,targetdoc) {
if (typeof(document.FSender)!='undefined' &&
    typeof(document.FSender.m_cRegionalSettings)!='undefined') {
if (targetdoc==null) {
if (url.indexOf('?')==-1) {
url+='?'
} else {
url+='&'
}
url+="m_cRegionalSettings="+URLenc(document.FSender.m_cRegionalSettings.value)
}else{
targetdoc.write("<input type=hidden name=m_cRegionalSettings value="+ToHTMLValue(document.FSender.m_cRegionalSettings.value)+"></input>")
}
}
return url
}
function windowOpenForeground(){
clearTimeout(windowOpenForeground.id)
LibJavascript.IncludeFunction('controls','windowOpenForeground',0,1)
return windowOpenForeground.apply(null,arguments)
}
windowOpenForeground.id=setTimeout/*stdFunctions caricato dopo controls dic08*/("LibJavascript.IncludeFunction('controls','windowOpenForeground',1,1)",500/*lazy x html con submit immediata*/)
function PageOpened(page){
last_focused_comp=null
try{LoadChildrenInPage(page,1)}catch(e){/*no children*/}
}

function ControlPage(ctrl) {
if(ctrl.length!=null && ctrl.length>0)ctrl=ctrl[0].parentNode;
if(typeof(tabs)=='undefined')return null;
if(ctrl.parentNode!=null && typeof(tabs)!='undefined' && Left(ctrl.parentNode.id, 5)=='page_')
return ctrl.parentNode.id
else{if(ctrl.parentNode!=null)return ControlPage(ctrl.parentNode)
else return 'page_1'}
}
if(IsIE()){
Ctrl=function(id){
var c=Ctrl[id];
try{if(c&&c.document==c.ownerDocument)return c;}catch(e){/*non e' piu' nel document*/}
if((c=document.getElementById(id))&&(c.id==id)&&(typeof c.type=="undefined"||c.type!="radio")){return Ctrl[id]=c}
c=document.getElementsByName(id)
return c.length==1?(Ctrl[id]=c[0]):(c.length==0?null:Ctrl[id]=c)
}
}else{
Ctrl=function(id){
var c=document.getElementById(id)
if(c&&(typeof c.type=="undefined"||c.type!="radio"))return c;
c=document.getElementsByName(id)
return c.length==1?c[0]:(c.length==0?null:c)
}
}
var CtrlById=Ctrl
if(LibJavascript && LibJavascript.DOM) LibJavascript.DOM._CtrlById=Ctrl;
function CtrlByName(id){
var c=document.getElementsByName(id)
return c.length==1?c[0]:(c.length==0?null:c)
}
function ReloadMenu(){
	if(typeof(m_bReloadMenu) != 'undefined' && m_bReloadMenu == false) {
	}
	else {
		 var f=window.parent.frames.menu;
		 if(f==null)
		  f=window.parent.parent.frames.menu;
		 if(f!=null){
		  if((f.m_nUserCode!=null && f.m_nUserCode!=m_nUserCode) ||
		     (f.m_cLanguage!=null && f.m_cLanguage!=m_cLanguage) ||
		     (f.m_cCompany!=null && f.m_cCompany!=m_cCompany) ||
		     (f.m_cThemePath!=null && Strtran(f.m_cThemePath,'../','')!=m_cThemePath)
		     ){
		   f.location.reload(true);
		   if(window.parent.winList)
		    window.parent.location.reload(true);
	  }
	 }
	}
}
function SetRegionalSettings() {
SetNumberSettings()
var a=SettingsApplet()
a.SetRow(0)
a.setValue("decimalSeparator",decSep)
a.setValue("thousandSeparator",milSep)
a.setValue("dataFormat",SetRegionalSettings.df)
document.FSender.m_cRegionalSettings.value=a.asString();
}
SetRegionalSettings.df="dd/mm/aaaa"
function SetNumberSettings() {
try {
var s = (1.2).toLocaleString()
decSep = s.substr(1,1)
milSep = decSep == ',' ? '.' : ','
} catch(except) {
decSep = '.'
milSep = ','
}
}

function Translate(message,parm1,parm2){
 var outmessage=TransDict[message];
 if(outmessage==null){
  outmessage=message;
 }
 if(!Empty(parm1)){
  outmessage=Strtran(outmessage,"%1",parm1);
  if(!Empty(parm2)){
   outmessage=Strtran(outmessage,"%2",parm2);
  }
 }
 return outmessage;
}

function GetFrameIdx(framename) {
  var i = 0
  var idx
  var frm = window.frames
  while (i<frm.length && idx==null)
  {
    if (frm[i].name == framename) idx = i
    i++;
  }
  return idx;
}

function FrameRef(framename) {
  var idx = GetFrameIdx(framename)
  if (idx != null) return window.frames[idx]
}

function FetchDate(objDate) {
  var day=objDate.getDate()
  var month=objDate.getMonth()
  var year=objDate.getFullYear()
  return new Date(year,month,day)
}

function FetchDateTime(objDate) {
  var day=objDate.getDate()
  var month=objDate.getMonth()
  var year=objDate.getFullYear()
  var hour=objDate.getHours()
  var minute=objDate.getMinutes()
  var second=objDate.getSeconds()
  return new Date(year,month,day,hour,minute,second)
}

function SetHypPar(name, value) {
  var a = HParApplet()
  a.SetRow(0)
  a.setValue(name, value)
}

function ToHTMLValue(p_cVar) {
 return "'"+ToHTML(p_cVar)+"'";
}
function ToHTML(p_cVar) {
 p_cVar=Strtran(p_cVar,"&","&amp;");
 p_cVar=Strtran(p_cVar,"\\","&#092;");
 p_cVar=Strtran(p_cVar,"<","&lt;");
 p_cVar=Strtran(p_cVar,">","&gt;");
 p_cVar=Strtran(p_cVar,"\"","&quot;");
 p_cVar=Strtran(p_cVar,"'","&#39;");
 p_cVar=Strtran(p_cVar,"\r","&#13;");
 p_cVar=Strtran(p_cVar,"\n","&#10;");
 p_cVar=Strtran(p_cVar,"\u20ac","&euro;");
 return  p_cVar;
}

function IsNamedParameters(arg) {
  return (typeof(arg) =='object' && arg.constructor!=Date)
}

function GetProperty(p_trs, name, type) {
return AtW(p_trs.getValue(name), type);
}
function GetTrsProps() {
var p_wh=arguments[0]
var p_trs=arguments[1],row
for(var i=2;i<arguments.length;i++) {
p_wh[arguments[i]]=new TrsJavascript()
row=p_trs.p["0#"+arguments[i]]
if(row==null)row=p_trs.p[arguments[i]]
p_wh[arguments[i]].BuildProperties(row==null?'':row)
}
}

function AtExitValue() {
var frm=CtrlByName('FSender')
if (frm==null || typeof(frm) == 'undefined' || typeof(frm['m_cAtExit'])=='undefined') {
return ''
} else {
return frm.m_cAtExit.value
}
}

function AltInterfaceValue() {
var frm=CtrlByName('FSender')
if (frm==null || typeof(frm) == 'undefined' || typeof(frm['m_cAltInterface'])=='undefined') {
return ''
} else {
return frm.m_cAltInterface.value
}
}

function AutozoomParms() {
var frm=CtrlByName('FSender')
var r=''
if (frm!=null)
if (typeof(frm.m_cAtExit)!='undefined') {
r='&m_cAtExit='+frm.m_cAtExit.value
}
if (typeof(frm.m_cDecoration)!='undefined') {
r+='&m_cDecoration='+frm.m_cDecoration.value
}
return r
}

function AlertErrorMessage(p_cMessage) {
var mess=''
p_cMessage=Translate(p_cMessage)
if (typeof m_cErrorFromRoutine != 'undefined' && m_cErrorFromRoutine!=null) {mess=m_cErrorFromRoutine}
else {mess=Translate('MSG_VALUE_NOT_ALLOWED')}
p_cMessage=Strtran(p_cMessage,'%ERRORMESSAGE%',mess)
m_cErrorFromRoutine=''
return p_cMessage;
}

function RunSecurity() {
if (typeof m_cProgName=='undefined') return
var p='SPManageProcedureSecurity'
if (typeof PlatformPathStart == 'function') p=PlatformPathStart(p)
windowOpenForeground(p+'?progname='+m_cProgName,'','toolbar=0,menubar=0,directories=0,width=524,height=400,resizable=1')
}
function CreatePortlet(){
if (typeof m_cProgNameAlter=='undefined') return;
windowOpenForeground(ToResource('visualweb/editor.jsp'+'?servlet='+URLenc('true')+'&id='+URLenc(m_cProgNameAlter)+'')+'&m_cAction=start&m_cAtExit=close&m_cMode=hyperlink','','toolbar=0,menubar=0,directories=0,width='+(100+m_nPreferredWidth)+',height='+(10+m_nPreferredHeight)+',resizable=1')
}
function ExtendTable(){
if (typeof m_cProgName=='undefined') return;
windowOpenForeground(ToResource('spextender/index.htm?table='+URLenc(m_cVirtName)),'','toolbar=0,menubar=0,directories=0,width=625,height=465,resizable=1')
}

function SetDisplay(c,h){
if(typeof c=='string')c=Ctrl(c)
if(c!=null){
function _s(c,v){
c.style.display=v
if(('LABEL'==c.tagName||c.getAttribute('type')=='checkbox') && 'SPAN'==c.parentNode.tagName)c.parentNode.style.display=h?'none':'block'
}
if (c.tagName=='IMG' && c.parentNode.tagName=='A' && c.parentNode.id==c.id+"_HREF") c=c.parentNode;
if(typeof c.length=='undefined' || c.tagName=='SELECT'){
try{c.style.visibility=(h?'hidden':'')
if (!h &&(box=ToggleCollapsibleBox.children[Left(c.id,10)]))for(i=0;i<box.length;i++){if((typeof tabs=='undefined'||tabs.IsExpanded(ControlPage(Ctrl(box[i]))))&&ChildToLoad(box[i])&&Ctrl(box[i]).src!=linkpc_url(box[i]))Ctrl(box[i]).src=linkpc_url(box[i])}
}catch(e){}
if('IFRAME'!=c.tagName){
if('INPUT'==c.tagName&&c.id)SetDisplay(c.id+'_ZOOM',h)
_s(c,h?'none':('TABLE'==c.tagName?'':'inline'))
}
}else{
for(var i=0;i<c.length;i++)_s(c[i],h?'none':'inline')
}
}
}
function SetDisabled(c,d) {
 if(typeof c == 'string') c=Ctrl(c)
 if(c!=null){
  if(typeof c.length=='undefined' || c.tagName=='SELECT'){
   var p=c.tagName=='TEXTAREA' || (c.tagName=='INPUT' && c.type=='text')?'readOnly':'disabled'
   c[p]=d
   if(typeof IsTabstrip=='function' && IsTabstrip(c.id)){
    return SetDisabledTabstrip(c.id,d)
   }else if (At('_ZOOM', c.id) != 0) {
    if(Left(c.className,10)=='ZoomButton'){
     var s='ZoomButton'+(d?'Disabled':'Enabled')
     if(s!=c.className)c.className=s
    }else if(Left(c.className,14)=='GridZoomButton'){
     var s='GridZoomButton'+(d?'Disabled':'Enabled')
     if(s!=c.className)c.className=s
    }else if(Left(c.className,14)=='CalendarButton'){
     var s='CalendarButton'+(d?'Disabled':'Enabled')
     if(s!=c.className)c.className=s
    }else{
     if(d){
      var s=Strtran(Strtran(c.style.backgroundImage,'zoom_enabled','zoom_disabled'),'zoom_calendar_enabled','zoom_calendar_disabled')
      if (s!=c.style.backgroundImage)c.style.backgroundImage=s
     }else{
      var s=Strtran(Strtran(c.style.backgroundImage,'zoom_disabled','zoom_enabled'),'zoom_calendar_disabled','zoom_calendar_enabled')
      if (s!=c.style.backgroundImage)c.style.backgroundImage=s
     }
    }
   }else if(c.tagName=='TEXTAREA' || (c.tagName=='INPUT' && c.type=='text')){
    if(d){
     LibJavascript.CssClassNameUtils.addClass(c,'Disabled');
     c.tabIndex='-1';
    }else {
     LibJavascript.CssClassNameUtils.removeClass(c,'Disabled');
     if (c.getAttribute("curTabIndex"))
      c.tabIndex=c.getAttribute("curTabIndex");
    }
   }else if(c.tagName=='SELECT'){
    c.style.cssText=c.style.cssText
   }else if(c.tagName=='IMG') {
    if(d){
     c.tabIndex='-1';
    }else {
     if (c.getAttribute("curTabIndex"))
      c.tabIndex=c.getAttribute("curTabIndex");
    }
   }
  }else{for(var i=0;i<c.length;i++) c[i].disabled=d}
 }
}
function IsWndAccessible(op) {
if(typeof op=='string'){op=Ctrl(op);if(op)op=op.contentWindow}
try{
return op!=null && op.constructor!=Date
}catch(e){
return false
}finally{
IsWndAccessible.w=op
}
}
function SetWindowPreferredSize(reduce,autoCenter) {
  //Il paramtero reduce indice se la funziona dovrebbe anche diminuire la dimesione della finestra
  var tbWidth=Ctrl("toolbarTD")?Ctrl("toolbarTD").offsetWidth+5:0;
  var tbHeight=Ctrl("toolbarTR")?Ctrl("toolbarTR").offsetHeight:0;
  var titHeight=Ctrl("titleTD")?Ctrl("titleTD").offsetHeight+2:0;
  var tabStripHeight=Ctrl('tabsContainer')==null ? 0 : Ctrl('tabsContainer').offsetHeight+2;
  var nWidth=parent.document.body.offsetWidth;
  var nHeight=document.body.offsetHeight;
  if(reduce==null) reduce=false;
  if(autoCenter==null) autoCenter=false;
  if(Max(m_nPreferredWidth+20,tbWidth)>nWidth || reduce){
    nWidth=Max(m_nPreferredWidth+20,tbWidth)+12;
    if(SPTheme.sv_WindowMinWidth) nWidth=Max(nWidth,SPTheme.sv_WindowMinWidth)
    parent.window.resizeTo(nWidth, parent.document.body.offsetHeight);
  }
  if(m_nPreferredHeight>nHeight || reduce){
    nHeight=Max(m_nPreferredHeight+titHeight+tbHeight+tabStripHeight+90+(parent.document.body.offsetHeight-document.body.offsetHeight),200);
    if(SPTheme.sv_WindowMinHeight) nHeight=Max(nHeight,SPTheme.sv_WindowMinHeight)
    parent.window.resizeTo(nWidth, nHeight);
  }
  if(autoCenter){
    moveTo((screen.availWidth-nWidth)/2>0 ? (screen.availWidth-nWidth)/2 : 0, (screen.availHeight-nHeight)/2>0 ? (screen.availHeight-nHeight)/2 : 0);
  }
}
function GetWindowPreferredSize(){
 var tbWidth=Ctrl("toolbarTR")?Ctrl("toolbarTR").offsetWidth+5:0;
 var tbHeight=Ctrl("toolbarTR")?Ctrl("toolbarTR").offsetHeight:0;
 var titHeight=Ctrl("titleTD")?Ctrl("titleTD").offsetHeight+2:0;
 return {h:m_nPreferredHeight+titHeight+tbHeight,w:Max(m_nPreferredWidth+20,tbWidth)+12}
}
function CalculateAndResizeEntityHeight(node,action){
 if(node){
  var page_div=node.parentNode;
  while(Left(page_div.id,5)!='page_'){
   page_div=page_div.parentNode;
  }
  if(Left(page_div.id,5)=='page_' && action){ //alla chiusura di una zona collassabile, cambio alzezza page per non bloccare il resize del body
   if(action=='open'){
    page_div.style.overflow='hidden'; //un trucco per poter misurare l'altezza in firefox
    page_div.style.height=page_div.scrollHeight+"px";
    page_div.style.overflow='';
   }
   else if(action=='close')
    page_div.style.height=Max(page_div.offsetHeight-node.getAttribute('band_height'),0)+"px";
  }
 }
 if(Ctrl("FrmMain")){
  if(Ctrl("FrmMain").offsetHeight>0){
   titH=Ctrl('titleTD')==null ? 0 : Ctrl('titleTD').offsetHeight+2;
   titH=Ctrl('titleTable')==null ? titH : Ctrl('titleTable').offsetHeight+2;
   m_nPreferredHeight=Ctrl("FrmMain").offsetHeight+titH;

  }
 }
 if(window.parent.resizeIframe)
  window.parent.resizeIframe(window.name);
 if(typeof(adjustWidthAndHeight)!='undefined')
  adjustWidthAndHeight(false);
}
var dragObj = {zIndex:999,resize:false,iW:0,minW:280,minH:30}
//dragObj.zOrder = 1000
function dragToolbar(e,obj) {
 e=e?e:window.event
 obj=Ctrl(obj)
 if(obj) dragObj.css=obj.style
 if(!e || !dragObj.css) return
 //Save mousedown location
 dragObj.downX=(e.layerX)?e.layerX:(e.offsetX)?e.offsetX:0
 dragObj.downY=(e.layerY)?e.layerY:(e.offsetY)?e.offsetY:0
 if(arguments.length>=3 && document.all)
  dragObj.downX=dragObj.downX+arguments[2]
 if(arguments.length>=4 && document.all)
  dragObj.downY=dragObj.downY+arguments[3]
 //bring to top of stack
 //dragObj.css.zIndex=++dragObj.zOrder; //nasconde la scelta di anni e mesi nel calendario
 if(document.addEventListener){
  document.addEventListener("mousemove",dragStart,true)
  document.addEventListener("mouseup",dragEnd,true)
  e.preventDefault()
 } else if(document.attachEvent) {
  document.attachEvent("onmousemove",dragStart)
  document.attachEvent("onmouseup",dragEnd)
  return false
 }
}
function dragStart(e) {
  e=e?e:window.event
 var x=(e.pageX)?e.pageX:(e.clientX)?e.clientX+document.documentElement.scrollLeft+document.body.scrollLeft:0
 var y=(e.pageY)?e.pageY:(e.clientY)?e.clientY+document.documentElement.scrollTop+document.body.scrollTop:0
 // Move drag element by the amount the cursor has moved.
 var newX=(x-dragObj.downX-(dragObj.deltaX?dragObj.deltaX:0))
 var newY=(y-dragObj.downY-(dragObj.deltaY?dragObj.deltaY:0))
 if(newX<0)newX=0
 if(newY<0)newY=0
 if(dragObj.resize){
  if(Val(dragObj.css.width)+Val(dragObj.css.left)-newX>dragObj.minW){
   dragObj.css.width=Val(dragObj.css.width)+Val(dragObj.css.left)-newX+"px"
   dragObj.css.left=newX+"px"
  }
  if(Val(dragObj.css.height)+Val(dragObj.css.top)-newY>dragObj.minH){
   dragObj.css.height=Val(dragObj.css.height)+Val(dragObj.css.top)-newY+"px"
   dragObj.css.top=newY+"px"
  }
 }else{
  dragObj.css.left=newX+"px"
  dragObj.css.top=newY+"px"
 }
 if(e.preventDefault)e.preventDefault()
 else return false
}
function dragEnd(e) {
 dragObj.resize=false
 // Stop capturing mousemove and mouseup events.
 if(document.removeEventListener){
  document.removeEventListener("mousemove",dragStart,true)
  document.removeEventListener("mouseup",dragEnd,true)
 }else if(document.detachEvent){
  document.detachEvent("onmousemove",dragStart)
  document.detachEvent("onmouseup",dragEnd)
 }
}
function documentAddClick(funct) {
  if (document.addEventListener)
    document.addEventListener("click",funct,true)
  else if (document.attachEvent) {
    document.attachEvent("onclick",funct)
    return false
  }
}
function documentRemoveClick(funct) {
  if (document.removeEventListener)
    document.removeEventListener("click",funct,true)
  else if (document.detachEvent)
    document.detachEvent("onclick",funct)
}
function LaunchCalendar(ctrl, getPicture) {
  if(typeof(ctrl)=="string")
    ctrl=Ctrl(ctrl)
  if(getPicture==null)
    getPicture="DD-MM-YYYY"

  if (ctrl.length) {
    for (var i=0; i<ctrl.length; i++){
      if ((ctrl[i].type) && 'text'==(ctrl[i].type)) {
        ctrl=ctrl[i]
        break
      }
    }
  }
  ShowPopUpCalendar(ctrl,TranslatePicture(getPicture),TranslatePicture("DD-MM-YYYY"))
}
function DoLinkZoom(uid,value){
  if(typeof window.opener.ReportLinkValue != 'undefined'){
    window.opener.ReportLinkValue(uid,value)
    window.opener.focus()
    self.close()
  }else{
    alert("Impossibile riportare il valore selezionato")
  }
}
function EntityStatus() {
if (typeof m_cFunction=='undefined')
return " "
else switch (m_cFunction) {
case 'query':return "Q"
case 'edit':return "E"
case 'new':return "N"
case 'view':return "V"
case 'dialog':return "D"
default:return " "
}
}
function GetModDecPict(pict){
var s=Strtran(pict,',','')
var intPart,decPart
var decSepPos=At('.',s)
if (decSepPos==0) return [s.length,0]
if (decSepPos==s.length) return [decSepPos-1,0]
return [decSepPos-1,s.length-decSepPos]
}
function SubmitForm(formaction,url,data) {
var bSubmit=true
if (m_bAlreadySubmitted) {
alert(Translate('MSG_SERVER_DATA'))
return
}
if (typeof m_bFieldsUpdated!='undefined' && m_bFieldsUpdated && formaction!='save') {
bSubmit = window.confirm(Translate('MSG_LEAVE_MOD'))
}
if (bSubmit) {
var Frm = document.FSender
if (Frm.StartRow && formaction!='next' && formaction!='previous'
    && (typeof m_bResetOnSave=='undefined' || formaction!='save')) {
Frm.StartRow.value = '1'
Frm.m_nRows.value = '0'
}
if (Frm.m_bQuery && (formaction=='query' || formaction=='save')) {
Frm.m_bQuery.value='true'
}
Frm.m_cWv.value=PrepareSubmitData(data)
if (url!=null) {
Frm.action = url
}
SubmitForm.SetAction(formaction)
Frm.submit()
m_bAlreadySubmitted = true
InstTR()
}
}
SubmitForm.SetAction=function(a){
var f=document.FSender,w
try{
w=f.WorkFlowScript
w.value=a+'\n'+w.value
}catch(e){}
f.m_cAction.value=a
}
function PrepareSubmitData(data) {
FillWv()
if (data!=null) {
WvApplet().Append(data)
}
return WvApplet().asString()
}
function SetWindowObject(needsregionalsettings) {
var f=NameForCaller()
if (IsWndAccessible(window[f])) {
l_oWnd=new Function('v,d','return typeof '+f+'[v] == \'undefined\' ? d : '+f+'[v]')
if (Ne(typeof(window[f].FrmMain),'undefined')) {
if (needsregionalsettings) {
if (Ne(typeof(window[f].FSender),'undefined') && Ne(typeof(window[f].FSender.m_cRegionalSettings),'undefined')) {
l_oWv.setValue('m_cRegionalSettings',window[f].FSender.m_cRegionalSettings.value)
}
}
}
} else {
l_oWnd=new Function('v,d','return d')
}
}
function NameForCaller() {
var f='opener'
if (IsWndAccessible(window.opener)) {
f='opener'
} else if (IsWndAccessible(window.parent)) {
f='parent'
}
return f
}
function IsDisabledByStateDriver(id){
return typeof(IsDisabled)=='undefined'?false:IsDisabled(id)
}
function IsHiddenByStateDriver(id){
return typeof(IsHidden)=='undefined'?false:IsHidden(id)
}
function DisableInputsInContainer(container,disable){
  container=typeof(container)=='string'?Ctrl(container):container
  var children=container!=null?container.childNodes:new Array()
  var itm
  for (var i=0; i<children.length; i++){
    itm=children.item(i)
    switch(itm.tagName){
      case 'INPUT':
      SetDisabled(itm,disable)
      break
    case 'DIV': case 'SPAN':
      DisableInputsInContainer(itm,disable)
      break
    case 'TABLE':
      DisableInputsInTable(itm,disable)
    default:
      //alert(itm.tagName+' '+itm.id)
    }
  }
}
function DisableInputsInTable(table,disable){
  table=typeof(table)=='string'?Ctrl(table):table
  var i,ii
  for(i=0; i<table.rows.length; i++){
    for(ii=0; ii<table.rows[i].cells.length; ii++){
      DisableInputsInContainer(table.rows[i].cells[ii],disable)
    }
  }
}
function TransferBetweenWindows(srcWnd,sourceName,varName,funcName,dontcheck) {
var o=srcWnd[sourceName]
try{
//o potrebbe essere garbage collected in seguito, inoltre o.constructor!=Date
o=new Date(o.getFullYear(),o.getMonth(),o.getDate(),o.getHours(),o.getMinutes(),o.getSeconds(),o.getMilliseconds())
}catch(notDate){}
if(dontcheck==null||window[varName]!=o){
if(funcName!=null){
window[funcName](o)
}else{
window[varName]=o
}
return true
}
return false
}
function _CopyCallers(v){
if(IsWndAccessible(opener)){var n
for(var i=0;i<v.length;i++){
n='w_'+v[i]
if(eval('Empty('+n+') && Ne(opener.'+n+',null)'))TransferBetweenWindows(opener,n,n)
}}}
function CopyWorkVar(dest,dstNames,srcNames,checkDep) {
var mustUpdate=false,srcName,dstName,destRow
if(typeof dest.TrsRow != "undefined") destRow=dest.TrsRowSample();
for(var i=0; i<srcNames.length; i++) {
srcName=srcNames[i]
if(!checkDep || Ne(window['o_'+srcName],window['w_'+srcName])) {
dstName=dstNames[i]
if (dest['Set_'+dstName]==null) {
if(dest.TransferBetweenWindows(window,'w_'+srcName,'w_'+dstName,null,1)){
dest.SetModified(destRow!=null && typeof destRow[dstName]!="undefined")
mustUpdate=true
}
} else {
if(dest.TransferBetweenWindows(window,'w_'+srcName,'w_'+dstName,'Set_'+dstName,1))mustUpdate=false
}
}
}
if(mustUpdate)dest.DoUpdate(true)
}
function TrsRowSample() {
return new TrsRow(2)
}
function ChildToLoad(idOrW){
return !IsWndAccessible(idOrW)||IsWndAccessible.w.location.href=='javascript:[].join()'||typeof(IsWndAccessible.w._IAmReady)=='undefined'||!IsWndAccessible.w._IAmReady
}
function AdjustFontSize(ratio){
 if(document.styleSheets){
  var styleSheetRules,currentFontSize,currentFontSizeNum,currentDimension;
  //Ciclo su tutti i fogli di stile corrente
  for(i=0;i<document.styleSheets.length;i++){
   if(IsIE()) styleSheetRules=document.styleSheets[i].rules;
   if(IsNetscape() || IsMozilla()) styleSheetRules=document.styleSheets[i].cssRules;
   //Ciclo sugli elementi dello stile corrente
   for(j=0;j<styleSheetRules.length;j++){
    currentFontSize=styleSheetRules[j].style.fontSize;
    currentFontSizeNum=parseInt(currentFontSize);
    currentDimension="";
    //Controllo sulla dimensione utiizzata
    if(Right(LRTrim(currentFontSize),2)=="pt" || Right(LRTrim(currentFontSize),2)=="px"){
     currentDimension=Right(LRTrim(currentFontSize),2);
     if(currentFontSizeNum>2) styleSheetRules[j].style.fontSize=LRTrim(Str(currentFontSizeNum/ratio,4,2))+currentDimension;
    }
   }
  }
 }
}
function DisableUI(){
var i,j,k,c,a
if(typeof m_aStateDisabledFields!='undefined') DisableFields(m_aStateDisabledFields);
if(typeof m_aStateDisabledTabs!='undefined'){for(i=0; i<m_aStateDisabledTabs.length; i++)tabs.SetDisable(m_aStateDisabledTabs[i],true)}
if(typeof m_aStateObligatoryItems!='undefined')for(i=0;i<m_aStateObligatoryItems.length;i++){
c=CtrlByName(m_aStateObligatoryItems[i])
if(c){
a=_ObliD[m_aStateObligatoryItems[i]]
for(j=0;j<a.length;j++){
a[j].on=true
if(!c.length)c=[c]
for(k=0;k<c.length;k++)LibJavascript.CssClassNameUtils.addClass(c[k],"obligatory")
}
}else{
a=_ObliD[m_aStateObligatoryItems[i-1]]
for(k=0;k<a.length;k++)a[k].txt_error=m_aStateObligatoryItems[i]
}
}
}
function HideUI(){
var i,l,j
if(typeof m_aStateHiddenFields!='undefined')for(i=0;i<m_aStateHiddenFields.length;i++){
SetDisplay(CtrlByName(m_aStateHiddenFields[i]),true)
l=HideUI.lblids[m_aStateHiddenFields[i]]
if(l)for(j=0;j<l.length;j++)SetDisplay(l[j],true)
}
if(typeof m_aStateHiddenTabs!='undefined'){
for(i=0;i<m_aStateHiddenTabs.length;i++)
if(tabs.Exists(m_aStateHiddenTabs[i]))SetDisplay(tabs.GetTabstripID(m_aStateHiddenTabs[i]),true)
}
}
HideUI.lblids={}
function DisableFields(fields){
  for (var i=0; i<fields.length; i++){
    SetDisabled(fields[i],true)
  }
}
function DisablePages(pages){
  for (var i=0; i<pages.length; i++){
    DisableInputsInContainer(pages[i],true)
  }
}
function ExpandCollapsibleBox(id,cond){
 if(cond && Ctrl(id).getAttribute('status')=='close') ToggleCollapsibleBox(id,true);
}
function CollapseCollapsibleBox(id,cond){
 if(cond && Ctrl(id).getAttribute('status')=='open') ToggleCollapsibleBox(id,false);
}
function ToggleCollapsibleBox(id,expand,calculateContainerHeight,useEffect){
 if(typeof(expand)=='undefined'){
  expand=Ctrl(id).style.display=='none';
 }
 if(typeof(calculateContainerHeight)=='undefined'){
  calculateContainerHeight=true;
 }
 if(typeof(useEffect)=='undefined'){
  useEffect=true;
 }
 var c=ToggleCollapsibleBox.children[id],i;
 if(expand){
  Ctrl(id).style.display='';
  if(Ctrl(id).offsetHeight>0) Ctrl(id).style.height=0;
  effectOpenCloseLayer(id,true,0,calculateContainerHeight,useEffect);
  if(c)for(i=0;i<c.length;i++){if((typeof tabs=='undefined'||tabs.IsExpanded(ControlPage(Ctrl(c[i]))))&&ChildToLoad(c[i]))Ctrl(c[i]).src=linkpc_url(c[i])}
 }
 else {
  if(c&&typeof SaveRow=='function'&&(m_cFunction=='edit'||m_cFunction=='new')){
   for(i=0;c&&i<c.length;i++){
    if(!IsRepeatedChild(c[i])) continue;
    if(!ChildToLoad(c[i])&&!SaveRow())c=null;
    if(c){
     for(i=0;i<c.length;i++) Ctrl(c[i]).src='javascript:[].join()';
    }else return;
   }
  }
  effectOpenCloseLayer(id,false,0,calculateContainerHeight,useEffect);
 }
}
ToggleCollapsibleBox.children={}
function effectOpenCloseLayer(id,open,counter,calculateContainerHeight,useEffect){
 var div=Ctrl(id);
 var dheight=20, vrefresh=20;
 if(div!=null){
  if(open){
   if(!useEffect || counter==20 || div.offsetHeight+dheight>=div.getAttribute('band_height')){
    div.style.height=div.getAttribute('band_height')+"px";
    try{//Il bottone potrebbe non esserci
     Ctrl(id+"_HEADER_ICON").src=Strtran(Ctrl(id+"_HEADER_ICON").src,"box_expand","box_collapse");
    }catch(e){}
    div.setAttribute('status','open');
    HideControlsUnderCondition();//Prova per fa vedere un gruppo se l'altro e' aperto
    if(calculateContainerHeight || !useEffect)
     CalculateAndResizeEntityHeight(div,'open');
    return;
   }
   div.style.height=(div.offsetHeight+dheight)+"px";
  }else{
   if(!useEffect || counter==20 || div.offsetHeight-dheight<=0){
    div.style.height='0px';
    div.style.display='none';
    try{
     Ctrl(id+"_HEADER_ICON").src=Strtran(Ctrl(id+"_HEADER_ICON").src,"box_collapse","box_expand");
    }catch(e){}
    div.setAttribute('status','close');
    HideControlsUnderCondition();//Prova per fa vedere un gruppo se l'altro e' aperto
    if(calculateContainerHeight)
     CalculateAndResizeEntityHeight(div,'close');
    else if(!useEffect)
     CalculateAndResizeEntityHeight();
    return;
   }
   div.style.height=Math.max(div.offsetHeight-dheight,0)+"px";
  }
  if(div.style.display!='none' && div.style.height!=div.getAttribute('band_height'))
   setTimeout("effectOpenCloseLayer('"+id+"',"+open+","+(counter+1)+","+calculateContainerHeight+","+useEffect+")",vrefresh);
 }
}
var timeout_id_showlayer=null;
var timeout_id_hidelayer=null;
var open_layer_ref=null;
var layer_opener_ref=null;
function ToggleLayerBox(ctrl,box,position,detail,container,container_header,container_ref){
 if(typeof(box)=="string")box=Ctrl(box)
 if(typeof(ctrl)=="string") ctrl=Ctrl(ctrl);
 if(!Empty(ctrl) && ControlPage(ctrl)!=ControlPage(box)){
  if(!(box.getAttribute('status')=='close' || box.getAttribute('status')==null)){
    box.setAttribute('open_mode','toggle');
    HideLayerBox(box,true);
  }
 }
 if(box.getAttribute('status')=='close' || box.getAttribute('status')==null){
  ShowLayerBox(ctrl,box,position,detail,container,container_header,container_ref,'toggle');
 }
 else {
  if(box.getAttribute('open_mode')=='focus'){
   box.setAttribute('open_mode','toggle');
  }
  else {
  HideLayerBox(box,true);
  layer_opener_ref=null;
  }
 }
}
ToggleLayerBox.children={}
function ShowLayerBoxWithDelay(ctrl,box,position,detail,container,container_header,container_ref,mode,delay){
 if(typeof(delay)=='undefined' || delay==0)
  ShowLayerBox(ctrl,box,position,detail,container,container_header,container_ref,mode);
 else {
  //la variabile ctrl potrebbe essere un'oggetto se si trova nelle righe del detail (in query) in quanto non ha id
  if(typeof(ctrl)=="object"){
   layer_opener_ref=ctrl;
  }
  timeout_id_showlayer=window.setTimeout("ShowLayerBox("+(typeof(ctrl)=="string"?"'"+ctrl+"'":"layer_opener_ref")+",'"+box+"','"+position+"',"+detail+",'"+container+"','"+container_header+"',"+container_ref+",'"+mode+"');",delay);
 }
}
function ShowLayerBox(ctrl,box,position,detail,container,container_header,container_ref,mode){
 var checkPage=!Empty(ctrl);
 if(typeof(box)=="string") box=Ctrl(box);
 if(typeof(ctrl)=="string") {
  ctrl=Ctrl(ctrl);
  if(layer_opener_ref==ctrl) return;
 }
 if(IsA(ctrl,'A')){
  if(ctrl.length>0 && typeof(ctrl[0])=="string") ctrl[0]=Ctrl(ctrl[0]);
  else checkPage=false;
 }

 var x_delta=0,y_delta=0,c=ToggleLayerBox.children[box.id],i
 if(c)for(i=0;i<c.length;i++){if((typeof tabs=='undefined'||tabs.IsExpanded(ControlPage(Ctrl(c[i]))))&&ChildToLoad(c[i]))Ctrl(c[i]).src=linkpc_url(c[i])}

 if(checkPage && ControlPage(ctrl)!=ControlPage(box)){
  if(!(box.getAttribute('status')=='close' || box.getAttribute('status')==null)){
    box.setAttribute('open_mode','toggle');
    HideLayerBox(box,true);
  }
  var removeNode=LibJavascript.DOM.removeNode,
      addNode=LibJavascript.DOM.addNode;
  addNode(Ctrl(ControlPage(ctrl)),removeNode(box));
 }

 if(box.getAttribute('status')=='close' || box.getAttribute('status')==null){
  if(Empty(ctrl)) ctrl={offsetLeft:5,offsetTop:5,offsetHeight:0,offsetWidth:0};
  else if(IsA(ctrl,'A')) ctrl={offsetLeft:ctrl[1],offsetTop:ctrl[2],offsetHeight:0,offsetWidth:0};
  if(!Empty(container)){
   if(typeof(container)=="string") container=Ctrl(container);
   x_delta+=container.offsetLeft;
   y_delta+=container.offsetTop;
   if(!Empty(container_header)){
    y_delta+=Ctrl(container_header).offsetHeight;
   }
  }
  if(detail){
   var parentRow=ctrl;
   do {
    parentRow=parentRow.parentNode;
   }
   while(parentRow.tagName!="DIV")
   x_delta+=Ctrl("GridTable_Container").offsetLeft;
   y_delta+=Ctrl("GridTable_Container").offsetTop+parentRow.offsetTop-Ctrl("GridTable_DIV").scrollTop;
  }
  if(open_layer_ref!=null){
   ClearTimeout('hide');
   HideLayerBox(open_layer_ref,true);
   open_layer_ref=null;
  }
  box.style.display='block';
  if(container_ref){
   box.style.left=container.offsetLeft+"px";
   box.style.top=container.offsetTop+"px";
  }
  else{
   if(position.charAt(0)=='0')
    box.style.left=ctrl.offsetLeft+x_delta+"px";
   else
    box.style.left=Max(ctrl.offsetLeft+x_delta-box.offsetWidth+ctrl.offsetWidth,0)+"px";
   if(position.charAt(1)=='0')
    box.style.top=(ctrl.offsetTop+ctrl.offsetHeight+y_delta+1)+"px";
   else
    box.style.top=(Max(ctrl.offsetTop-ctrl.offsetHeight+y_delta-box.offsetHeight-4,0))+"px";
  }
  var page_div=box.parentNode;
  while(Left(page_div.id,5)!='page_'){
   page_div=page_div.parentNode;
  }
  if(Left(page_div.id,5)=='page_'){
   if(page_div.offsetHeight<box.offsetHeight+box.offsetTop){
    page_div.style.height=(box.offsetHeight+box.offsetTop+20)+"px";
    CalculateAndResizeEntityHeight();
   }
  }
  //Se il layer e' stato chiuso con il pin, lo tolgo
  //if(box.getAttribute('pin_status')=='pinned') UnpinLayerBox(Left(box.id,Len(box.id)-4));
  box.setAttribute('status','open');
  box.setAttribute('open_mode',mode);
  if(mode=='focus') box.setAttribute('close_on_out','yes');
  else if(mode=='toggle') box.setAttribute('close_on_out','no');
  if(mode=='focus' || mode=='toggle'){
   FocusLayerFirstComponent(box.id); //sta facendo ricursione, da vedere
   layer_opener_ref=ctrl;
  }
  open_layer_ref=box;
 }
 else if(timeout_id_hidelayer!=null){
  ClearTimeout('hide');
 }
}
function HideLayerBoxWithDelay(box,delay){
 ClearTimeout('show');
 if(Ctrl(box).getAttribute('close_on_out')=='no') return;
 if(Ctrl(box).getAttribute('status')=='open' && Ctrl(box).getAttribute('pin_status')!='pinned'){
  if(delay>0){
   timeout_id_hidelayer=window.setTimeout("HideLayerBox(Ctrl('"+box+"'),true)",delay);
  }
  else HideLayerBox(box,true);
 }
}
function HideLayerBox(box,check_pin){
 if(typeof(box)=="string") box=Ctrl(box);
 var c=ToggleLayerBox.children[box.id],i;
 if(c&&typeof SaveRow=='function'&&(m_cFunction=='edit'||m_cFunction=='new')){
  for(i=0;c&&i<c.length;i++){
   if(!IsRepeatedChild(c[i])) continue;
   if(!ChildToLoad(c[i])&&!SaveRow())c=null;
   if(c){
    for(i=0;i<c.length;i++) Ctrl(c[i]).src='javascript:[].join()';
   }else return;
  }
 }
 if(box.getAttribute('status')=='open' && (!check_pin || box.getAttribute('pin_status')!='pinned')){
  box.style.display='none';
  box.setAttribute('status','close');
  //box.setAttribute('pin_status','unpinned');
  box.removeAttribute('close_on_out');
  open_layer_ref=null;
 }
}
function ClearTimeout(type){
 if(typeof(type)=='undefined' || type=='hide'){
  window.clearTimeout(timeout_id_hidelayer);
  timeout_id_hidelayer=null;
 }
 else if(type=='show'){
  window.clearTimeout(timeout_id_showlayer);
  timeout_id_showlayer=null;
  layer_opener_ref=null;
 }
}
function FocusLayerOpener(){
 if (layer_opener_ref) {
  if (layer_opener_ref.childNodes[0] && layer_opener_ref.childNodes[0].childNodes[0])
   SetControlFocus(layer_opener_ref.childNodes[0].childNodes[0].id);
  else
   SetControlFocus(layer_opener_ref.id);
  if(open_layer_ref.getAttribute('close_on_out')=='yes') {
    open_layer_ref.setAttribute('close_on_out','no');
    HideLayerBox(open_layer_ref,true);
  }
 }
}
function TogglePinLayerBox(id){
 var box=Ctrl(id+'_DIV');
 if(box.getAttribute('status')=='open'){
  if(box.getAttribute('pin_status')==null || box.getAttribute('pin_status')!='pinned'){
   PinLayerBox(id);
  }
  else if(box.getAttribute('pin_status')=='pinned'){
   UnpinLayerBox(id);
  }
 }
}
function PinLayerBox(id){
 Ctrl(id+'_DIV').setAttribute('pin_status','pinned');
 Ctrl(id+"_HEADER_ICON_PIN").src=Strtran(Ctrl(id+"_HEADER_ICON_PIN").src,"box_layer_pin","box_layer_unpin");
 open_layer_ref=null;
}
function UnpinLayerBox(id){
 Ctrl(id+'_DIV').setAttribute('pin_status','unpinned');
 Ctrl(id+"_HEADER_ICON_PIN").src=Strtran(Ctrl(id+"_HEADER_ICON_PIN").src,"box_layer_unpin","box_layer_pin");
}
function dragLayer(e,obj){
 e=e?e:window.event;
 obj=Ctrl(obj);
 if(obj) dragObj.css=obj.style;
 if(obj.getAttribute('status')=='open'){ //Layer
  var aTag=obj;
  var y_delta=0,x_delta=0;
  do {
   aTag=aTag.offsetParent;
   x_delta+=aTag.offsetLeft;
   y_delta+=aTag.offsetTop;
  }
  while(aTag.tagName!="BODY")
  //In caso di finestra scrollata
  if(Ctrl("bodyDiv") && Ctrl("bodyDiv").scrollTop)
   y_delta=y_delta-Ctrl("bodyDiv").scrollTop;
  var srcElement=GetEventSrcElement(e);
  dragObj.deltaY=y_delta+srcElement.offsetTop;
  dragObj.deltaX=x_delta+srcElement.offsetLeft;
  dragObj.css.zIndex=++dragObj.zIndex
  dragObj.iW=dragObj.css.width
 }
 if(!e || !dragObj.css) return;
 //Save mousedown location
 dragObj.downX=(e.layerX)?e.layerX:(e.offsetX)?e.offsetX: 0;
 dragObj.downY=(e.layerY)?e.layerY:(e.offsetY)?e.offsetY: 0;

 if(document.addEventListener){
  document.addEventListener("mousemove",dragStart,true);
  document.addEventListener("mouseup",dragEnd,true);
  e.preventDefault();
 } else if(document.attachEvent){
  document.attachEvent("onmousemove",dragStart);
  document.attachEvent("onmouseup",dragEnd);
  return false;
 }
}
/*
function DisableChildren(children){
 for(var i=0;i<children.length;i++){
  if(IsWndAccessible(FrameRef(Lower(children[i]))) && Ne(typeof(FrameRef(Lower(children[i])).DisableInputsInContainer),'undefined')){
   FrameRef(Lower(children[i])).DisableInputsInContainer('mainTD',true);
  }else{
   SetDisabled(children[i],true)
  }
 }
}
function HideChildren(children){
 for(var i=0;i<children.length;i++){
  SetDisplay(children[i],true)
 }
}
*/
function IsDisabled(id,detail){
  return (typeof(m_aStateDisabledFields)!='undefined' && LibJavascript.Array.indexOf(m_aStateDisabledFields,id)!=-1) ||
         (typeof(m_aStateDisabledTabs)!='undefined' && LibJavascript.Array.indexOf(m_aStateDisabledTabs,id)!=-1) || IsInDisabledPages(id,detail)// || m_cStateDisabledChildren.indexOf(id)!=-1
}
function IsHidden(id){
  return (typeof(m_aStateHiddenFields)!='undefined' && LibJavascript.Array.indexOf(m_aStateHiddenFields,id)!=-1) ||
         (typeof(m_aStateHiddenTabs)!='undefined' && LibJavascript.Array.indexOf(m_aStateHiddenTabs,id)!=-1)// || m_cStateHiddenChildren.indexOf(id)!=-1
}
function IsInDisabledPages(id,detail){
  if(typeof m_cStateDisabledPages!='undefined'){
    for (var i=0; i<m_cStateDisabledPages.length; i++){
      if(FindInputInContainer(id,Ctrl(m_cStateDisabledPages[i]),detail))
        return true
    }
  }
  return false
}
function FindInputInContainer(id,container,detail){
  var children=container.childNodes
  var itm
  for (var i=0; i<children.length; i++){
    itm=children.item(i)
    switch(itm.tagName){
    case 'INPUT':
      if(itm.id==id || itm.name==id || (detail && itm.className==id))
        return true
      break
    case 'DIV': case 'SPAN':
      if(FindInputInContainer(id,itm,detail))
        return true
      break
    case 'TABLE':
      if(FindInputInTable(id,itm,detail))
        return true
      break
    default:
      //alert(itm.tagName)
    }
  }
  return false
}
function FindInputInTable(id,table,detail){
  var i,ii
  for(i=0; i<table.rows.length; i++){
    for(ii=0; ii<table.rows[i].cells.length; ii++){
      if(FindInputInContainer(id,table.rows[i].cells[ii],detail)){
        return true
      }
    }
  }
  return false
}
function _ResetTracker(){
if(typeof _tracker=='undefined' || !_tracker.askwrn){
  _tracker={ctrl:null,badValue:null,askwrn:false,
goon:function(p_ctrl,p_badValue){return (Ne(this.ctrl,p_ctrl) || Ne(this.badValue,p_badValue)) && !this.askwrn}
}}}
function _modifyandopen(page,zopt,detail){
if(detail!=null && typeof SetModified=='function')SetModified(detail)
windowOpenForeground(page,'',zopt)}
function Set(name,value){return window['Set_'+name](value)}
function _chNotF(a,t,n){alert('Errore dell\'applicazione :"'+a+'" non corrisponde al nome logico della tabella di un figlio della entita\' di tipo '+t+' chiamata  "'+n+'"')}
function _FillChildren(w){
var r,n,cn=typeof m_FillChildrenName!='undefined'?m_FillChildrenName:_FillChildren.n
for(n in cn){
n=cn[n]
r=FrameRef(n)
if(typeof r=='undefined')r=window["m_o"+n]
n='m_cWv_'+n
if(!ChildToLoad(r) && typeof(r.GetContext)!='undefined' && m_cFunction!='view')window[n]=r.GetContext();
if(!Empty(window[n]))w.setValue(n,WtA(window[n],'C'))
}}
function GetContext(){
if(typeof SaveRow=='function')SaveRow(true)
if(typeof SetFromContext.lastSet!='undefined'&& !m_bUpdated&& (typeof m_bHeaderUpdated=='undefined'||!m_bHeaderUpdated))return SetFromContext.lastSet
FillWv()
return WvApplet().asString()
}
function SetFromContext(s){
if(Left(s,1)=='{'){
if(typeof SetFromContext.lastSet!="undefined")delete SetFromContext.lastSet
eval(s)
LoadContext(false)
if(SetFromContext.hasD()){
InitTable(Ctrl('GridTable'),m_cFunction)
if(Ctrl('GridTable_SelectedEditRow')!=null)SetControlsValue();
}else SetControlsValue();
}else{
var l_oWv=InitWvApplet(),rows,i,oTrs,p
l_oWv.BuildProperties(s)
l_oWv.SetRow(0)
function t(w){return IsA(w,'C')?'C':(IsA(w,'N')?'N':(IsA(w,'T')?'T':(IsA(w,'L')?'L':'D')))}
for(i in FillWv.n){i=FillWv.n[i];window["w_"+i]=GetProperty(l_oWv,i,t(window["w_"+i]))}
for(i in _FillChildren.n){i='m_cWv_'+_FillChildren.n[i];window[i]=GetProperty(l_oWv,i,'C')}
if(SetFromContext.hasD()){
m_oTrs=[]
m_oDeletedRows=[]
DeleteAllRows()
oTrs=[{},new TrsJavascript(true)]
oTrs[1].BuildProperties(GetProperty(l_oWv,'m_oTrs','C'))
LoadContext(false)
rows=oTrs[1].getRows()
p=TrsRowSample()
for(var name in p)oTrs[oTrs.length]=(Upper(name)=='CPROWNUM'?'m_nCPRowNum':(Left(name,2)=='w_'?Substr(name,2):name))
GetTrsProps.apply(null,oTrs)
for(i=1;i<=rows;i++){
function crn(n){return Upper(n)=='CPROWNUM'?'m_nCPRowNum':n}
for(var name in p){
oTrs[0][crn(name)].SetRow(i)
if(typeof window["w_"+name]!='undefined'){
window["w_"+name]=GetProperty(oTrs[0][crn(name)],'',t(window["w_"+name]))
}else{
if(Left(name,2)!='t_'||(EntityStatus()!='Q'&&EntityStatus()!='V'))window[name]=GetProperty(oTrs[0][crn(name)],'',t(window[name]))
}
}
if(m_nRowStatus!=3){
m_oTrs[m_oTrs.length]=new TrsRow(m_nRowStatus)
}else{
m_oDeletedRows[m_oDeletedRows.length]=new TrsRow(m_nRowStatus)
}
}
InitTable(Ctrl('GridTable'),m_cFunction)
m_bHeaderUpdated=GetProperty(l_oWv,'m_bHeaderUpdated','L')
if(Ctrl('GridTable_SelectedEditRow')!=null)SetControlsValue()
}else SetControlsValue();
m_bLoaded=GetProperty(l_oWv,'m_bLoaded','L')
m_cOldCPCCCHK=GetProperty(l_oWv,'m_cOldCPCCCHK','C')
m_bUpdated=GetProperty(l_oWv,'m_bUpdated','L')
SetFromContext.lastSet=s
}
EnableControlsUnderCondition()
}
SetFromContext.hasD=function(){return typeof m_oTrs!='undefined'}
function LoadContext(d){for(var i=0;i<LoadContext.u.length;i++)LoadContext.u[i](d==true)}
LoadContext.u=[]
LoadContext.f=function(id,BOScriptID,changeCtxType,name,loadAlways,page){
LoadContext.u[LoadContext.u.length]=function(d){
if(!SetFromContext.hasD() || (!d && page!=2) || d){
if (Eq(m_cFunction,'view') || Eq(m_cFunction,'query') || Empty(window['m_cWv_'+name]) || Eq(BOScriptID(),null)) {
if (loadAlways || LibJavascript.UserCanSee(id)) {
LoadContext.lc(changeCtxType,id,BOScriptID)
}
} else {
if (loadAlways && ChildToLoad(BOScriptID())) {
LoadContext.lc(changeCtxType,id,BOScriptID)
} else if (Ne(typeof(BOScriptID().SetFromContext),'undefined')) {
BOScriptID().SetFromContext(window['m_cWv_'+name])
}
}
}
}
}
LoadContext.lc=function(changeCtxType,id,BOScriptID){
if(changeCtxType){
if(Ctrl(id).src!=linkpc_url(id) || (SetFromContext.hasD()&&IsRepeatedChild(Ctrl(id).id)))
Ctrl(id).src=linkpc_url(id)
}else{
if (IsWndAccessible(BOScriptID())) {//ChildToLoad impedirebbe il caricamento
BOScriptID().m_bResetOnUnload=false
BOScriptID().location=linkpc_url(id)
}
}
}
function linkpc_url(i){
var f
try{f=linkpc_url.r[i]}catch(e){}
if(f)return f()
}
linkpc_url.r={}
linkpc_url.u=function(i,f){linkpc_url.r[i]=f}
function GetLinkPCKeys(n){
var r="",k=GetLinkPCKeys.o[n],i,v
if(k){for(i in k){if(v=k[i](WtA))r+='&'+i+'='+URLenc(v)}}
try{r+='&m_dHistoricalLoadStart='+document.FSender.m_dHistoricalLoadStart.value}catch(e){}
return r
}
GetLinkPCKeys.o={}
GetLinkPCKeys.wfk=function(n,s){
var k=GetLinkPCKeys.o[n],a=k['m_cAction']
k['m_cAction']=function(){return 'workflow'}
k['WorkFlowScript']=function(){
s='\n'+s
for(var v in k){if(Left(v,2)!='m_'&&v!='WorkFlowScript')s=v+'='+k[v](GetLinkPCKeys.c)+s}
return a()+' '+s
}
}
GetLinkPCKeys.c=function(v,t){
v=WtA(v)
switch(t){
case'C':case'M':return "'"+v+"'"
case'D':case'T':return "{"+v+"}"
default:return v
}
}
function _Obli(name,blank,scriptid,on,comment,uid,txt_error){
var a=_ObliD[name],o=new _Obligatory(name,scriptid,on,comment,uid,txt_error)
if(!a)a=_ObliD[name]=[]
a[a.length]=o
_ObliD[scriptid]=o
o.txt_error=txt_error
o.on=on
}
function _Obligatory(name,scriptid,on,comment,uid,txt_error){
this.check=function(globchk){
var r=true
if(on||this.on){
r=!Empty(window['w_'+name])
if(!r){
m_nLastError=1
m_cObblFieldName=comment?comment:name
if(this.txt_error)m_cLastMsgError=AlertErrorMessage(this.txt_error)
if(!globchk){
if(uid)window["Link_"+uid+"_Blank"]()
SetControlFocus(scriptid)
SetErrorField(_RetFoc.ctl,true)
if(!last_focused_comp&&m_nCurrentRow)SetControlFocus(scriptid+'_'+m_nCurrentRow)
if(last_focused_comp)_RetFoc.ctl=last_focused_comp
}
}
}
return r
}
}
var _ObliD={}
function _ChkObl(id,g){
return _ObliD[id].check(g?true:false)
}
function _RetFoc(e,ctrlValue,v){
try{
_RetFoc.ctl.value=v
_tracker.ctrl=_RetFoc.ctl
_tracker.badValue=ctrlValue
if(e){
if(typeof e.returnValue!="undefined")e.returnValue=false
if(typeof e.cancelBubble!="undefined")e.cancelBubble=true
try{e.stopPropagation()}catch(x){}
}
SetControlFocus(_RetFoc.ctl.id)
SetErrorField(_RetFoc.ctl,true)
}finally{
if(_RetFoc.ctl)delete _RetFoc.ctl
}
}
function _SignErr(id,txt_e){
if(m_nLastError==0)m_nLastError=2
if(txt_e)m_cLastMsgError=AlertErrorMessage(txt_e)
if(m_cLastWorkVarError=='')m_cLastWorkVarError=id
}
function _GetCtl(e,id){
var c
try{c=GetEventSrcElement(e)}catch(x){c=Ctrl(id)}
_RetFoc.ctl=_tracker.ctrl?_tracker.ctrl:c
return c
}
_regWarn=function(){
if(arguments.length>0){
var i=0,j
while(i<arguments[0].length){
j=0
while(j<_regWarn.code.length && i<arguments[0].length){
try{
if(_regWarn.code[j]==arguments[0][i]){j=0;i++;continue}
}catch(e){}
j++
}
if(i<arguments[0].length){
_regWarn.code[_regWarn.code.length]=arguments[0][i]
i++
}
}
}
}
_regWarn.code=[]
function TogglePostit(){
var i
if(TogglePostit.toggled.join('')!=''){
for(i=0;i<TogglePostit.toggled.length;i++)
if(TogglePostit.toggled[i]!='')Ctrl(TogglePostit.toggled[i]+'_DIV').childNodes[3].onclick()
TogglePostit.addPostit.idx=0
}else{
if(ShowPostit())NewPostin()
}
}
TogglePostit.toggled=[]
TogglePostit.addPostit=function(idx){
var i,s,d,did="_"+Math.random(),ce=function(s){return document.createElement(s)},lw=typeof sv_PostitWidth!='undefined'?sv_PostitWidht:'300'
d=ce("div")
d.style.cssText='height:'+(typeof sv_PostitHeight!='undefined'?sv_PostitHeight:'200')+';width:'+lw+';position:absolute;z-index:999'
d.className='LayerContainer'
d.setAttribute('pin_status','pinned')
d.id=did+'_DIV'
s=ce("div")
s.style.cssText='height:'+(typeof sv_PostitHeaderHeight!='undefined'?sv_PostitHeaderHeight:'18')+';position:relative;cursor:move'
s.className='LayerHeader'
s.onmousedown=function(e){dragLayer(e,did+'_DIV')}
d.appendChild(s)
i=ce("span")
i.style.cssText='position:absolute;left:18;padding:1'
i.className='LayerHeaderCaption'
i.innerHTML="Post-In"
s.appendChild(i)
s=ce("img")
s.style.cssText='position:absolute;top:2;left:2;cursor:nw-resize'
s.src='../visualweb/images/grid_separator.png'
s.onmousedown=function(e){dragObj.minW=310;dragObj.resize=true;dragLayer(e,did+'_DIV')}
d.appendChild(s)
s=ce("img")
s.style.cssText='position:absolute;top:2;right:22;cursor:pointer'
s.src='../'+m_cThemePath+'/formPage/box_layer_unpin.gif'
s.onclick=function(){if(confirm(Translate("MSG_DELETE_POSTIT"))){
var a=this.parentNode.childNodes
a[4].childNodes[0].contentWindow.w_textualpostit=''
a[3].onclick()
}}
d.appendChild(s)
s=ce("img")
s.style.cssText='position:absolute;top:2;right:2;cursor:pointer'
s.src='../'+m_cThemePath+'/formPage/close.gif'
s.onclick=function(){
var c=Ctrl(TogglePostit.toggled[idx]+'_DIV').childNodes[4].childNodes[0]
_regWarn.code[idx]=''
LibJavascript.Events.addEvent(c,'load',new Function(//5-5-8 addEvent usa stringa seguente come chiave
"var c=Ctrl('"+TogglePostit.toggled[idx]+"_DIV');"+
"LibJavascript.Events.removeEvent(c.childNodes[4].childNodes[0],'load',arguments.callee);"+
"c.parentNode.removeChild(c);"+
"TogglePostit.toggled["+idx+"]=''"
))
c.contentWindow.open('about:blank','_self')//scateno unload
}
d.appendChild(s)
s=ce("div")
s.style.cssText='height:100%;border-width:2;border-style:groove;-moz-box-sizing:border-box;z-index:0;overflow:hidden;position:absolute;width:100%'
// s.className='LayerBody'
try{
i=ce('<iframe name="_postit'+TogglePostit.addPostit.idx+'">')
}catch(e){
i=ce('iframe')
i.name='_postit'+TogglePostit.addPostit.idx
}
TogglePostit.addPostit.idx++
i.frameBorder='no'
i.style.cssText='top:0;left:0;height:100%;width:100%'
LibJavascript.Events.addEvent(i,'load',function(){i.contentWindow.adjustWidthAndHeight();i.style.cssText=i.style.cssText;LibJavascript.Events.removeEvent(i,"load",arguments.callee)})
i.src='postin_user?m_cAction=editload&m_cDecoration=none&code='+URLenc(_regWarn.code[idx])
s.appendChild(i)
d.appendChild(s)
try{Ctrl(Z.Tabs._tNameSelected).appendChild(d)}catch(x){Ctrl('page_1').appendChild(d)}
TogglePostit.toggled[idx]=did
ShowLayerBox({offsetLeft:Val(Ctrl('bodyDiv').style.width)-lw-50*TogglePostit.addPostit.idx,offsetTop:50*TogglePostit.addPostit.idx,offsetHeight:0},did+'_DIV','00')
}
TogglePostit.addPostit.idx=0
function ShowPostit(p){
var s=_regWarn.code.length
if(!p){
if(m_bLoaded){
LibJavascript.IncludeFunction("ShowPostit","postin_operation")
p=eval(postit_operation(i_PrimaryKey(),'GW',''))
for(i=0;i<_regWarn.code.length;i++){if(_regWarn.code[i]!='')TogglePostit.addPostit(i)}
}else{
alert(Translate('MSG_REC_NOT_SELECTED'))
return false
}
}
_regWarn(p)
for(;s<_regWarn.code.length;s++)TogglePostit.addPostit(s)
return true
}
function NewPostin(){
if(m_bLoaded){
var i=_regWarn.code.length
_regWarn.code[i]=i_PrimaryKey()
TogglePostit.addPostit(i)
}else{
alert(Translate('MSG_REC_NOT_SELECTED'))
}
}
function NonBlockingMessage(m){
var d,h,f=function(){
if(h<255){d.style.color="rgb("+h+","+h+","+h+")";h+=11;setTimeout(f,100)}
else{d.parentNode.removeChild(d);delete NonBlockingMessage.div}}
if(typeof NonBlockingMessage.div=='undefined'){
d=document.createElement('div')
NonBlockingMessage.div=d
d.style.cssText='position:absolute;top:100px;left:100px'
document.body.appendChild(d)
h=0
f()
}else{
h=0
d=NonBlockingMessage.div
d.innerHTML=d.innerHTML+'<br>'
}
d.innerHTML=d.innerHTML+m
}
PostitButtonClick=NewPostin
PostinButtonClick=NewPostin
function Zoom(){
if (IsWndAccessible(window['m_oFather'])) {
if (Eq(m_nChildStatus,2)) {
m_oFather.Zoom();
} else {
alert(Translate('MSG_CHILD_FUNCTION'));
}
} else {
var a=AtExitValue()
var b=AltInterfaceValue()
if(typeof m_cProgName!='undefined')Zoom.p=m_cProgName
if(typeof Zoom.p=='undefined')alert('regenerate this entity')
else window.location.href='../servlet/'+Zoom.p+'?m_cAction=autozoom'+(EmptyString(a)?'':'&m_cAtExit='+a)+(EmptyString(b)?'':'&m_cAltInterface='+b);
}
}

//Funzioni relative al suggest
function highLightRow(obj,id,rowid){
  c=Ctrl(rowid);
  cold=Ctrl(id+'_row_'+c.selezionato);
  if (cold) cold.className="row_suggest";
  obj.className="row_suggest_selected";
  c.selezionato=eval(Right(obj.id,1));
}

function select(id,rowid,i){
  if (i>-1) document.getElementById(rowid).value=document.getElementById("suggest"+i+"0").innerHTML;
  var pg=ControlPage(Ctrl(rowid))
  var n="_1";
  if (pg) n=pg.substring(RAt('_',pg)-1);
  document.getElementById("SUGGEST_DIV"+n).style.visibility="hidden";
  m_bShowSuggest=false;
  if(c=Ctrl(rowid))
    if (c.onblur!=eval(id+"_Valid")){
      c.onblur=eval(id+"_Valid");
      eval(id+"_Valid()");
    }
  if(c=Ctrl(rowid+'_ZOOM')) c.onclick=eval(id+"_ZOOM_Click");
}

function render_suggest(suggest_res, id ,rowid,detail,container,container_header){
  var ctrl= Ctrl(rowid)
  var pg=ControlPage(ctrl)
  var n="_1";
  if (pg) n=pg.substring(RAt('_',pg)-1);
  var box=Ctrl('SUGGEST_DIV'+n);
  box.style.zIndex=(dragObj && dragObj.zIndex && box.style.zIndex<dragObj.zIndex?++dragObj.zIndex:'1001');
  var x_delta=0,y_delta=0,i

  if(!Empty(container)){
   if(typeof(container)=="string") container=Ctrl(container);
   x_delta+=container.offsetLeft;
   y_delta+=container.offsetTop;
   if(!Empty(container_header)){
    if (cc=Ctrl(container_header))
    y_delta+=cc.offsetHeight;
   }
  }
  if(detail){
   var parentRow=ctrl;
   do {
    parentRow=parentRow.parentNode;
   }
   while(parentRow.tagName!="DIV")
   x_delta+=Ctrl("GridTable_Container").offsetLeft;
   y_delta+=Ctrl("GridTable_Container").offsetTop+parentRow.offsetTop-Ctrl("GridTable_DIV").scrollTop;
  }
  box.style.left=(ctrl.offsetLeft+x_delta)+"px";
  box.style.top=(ctrl.offsetTop+ctrl.offsetHeight+y_delta)+"px";
  var JSONObj= eval("("+suggest_res+")");
  var Data=JSONObj.Data;
  if(Data.length>1){
    m_bShowSuggest=true;
    box.style.visibility="visible";
    if(c=Ctrl(rowid)) c.onblur=eval(id+"_ValidSuggest");
    if(c=Ctrl(rowid)) c.selezionato=-1;
    c.onkeydown=eval(id+"_Sugg_OnKeyDown")
    if(c=Ctrl(rowid+'_ZOOM')) c.onclick=null;
  } else{
    m_bShowSuggest=false;
    box.style.visibility="hidden";
    if(c=Ctrl(rowid)) c.onblur=eval(id+"_Valid");
    if(c=Ctrl(rowid+'_ZOOM')) c.onclick=eval(id+"_ZOOM_Click");
  }
  var html="<table cellspacing=0 cellpadding=1 style='border:1px solid black'><tbody class='FormDefault'>";
  for(var i=0;i<Data.length-1;i++){
    html+="<tr id='"+id+"_row_"+i+"' class='row_suggest' onmouseover='highLightRow(this,\""+id+"\",\""+rowid+"\")' onmousedown='select(\""+id+"\",\""+rowid+"\","+i+")'>"
    for(var j=0;j<Data[i].length;j++)
      html+="<td id='suggest"+i+j+"'>"+Data[i][j]+"</td>"+(j<Data[i].length-1?"<td> - </td>":"")
    html+="</tr>";
  }
  html+="</tbody></table>"
  box.innerHTML=html;
}

function OnKeyDown_suggest(id,rowid,keyCode){
 var c=Ctrl(rowid);
 if(keyCode==38 || keyCode==40){
  var c1=Ctrl(id+'_row_'+c.selezionato),c2=null;
  switch(keyCode){
   case 38:
    c2=Ctrl(id+'_row_'+(c.selezionato-1));
    if(c.selezionato>-1){
     c.selezionato--;
     if(c2) c2.className="row_suggest_selected";
     if(c1) c1.className="row_suggest";
    }
    break;
   case 40:
    c2=Ctrl(id+'_row_'+(c.selezionato+1));
    if(c2){
     c.selezionato++;
     c2.className="row_suggest_selected";
     if(c1) c1.className="row_suggest";
    }
    break;
  }
 } else if (keyCode==13) {
  if(c.selezionato>=-1)
   select(id,rowid,c.selezionato);
 }
}

function OnFocus_HistoricalValidityDate(){
 var validity=HtW(Ctrl('SP_HISTORICAL_DATE').value,'D');
 Ctrl('SP_HISTORICAL_DATE').value=WtH(validity,'D',8,0,TranslatePicture('DDMMYYYY'));
 Ctrl('SP_HISTORICAL_DATE').select();
}
function OnBlur_HistoricalValidityDate(){
 Ctrl('SP_HISTORICAL_DATE').value=ApplyPictureToDate(Ctrl('SP_HISTORICAL_DATE').value,TranslatePicture('DD-MM-YYYY'),'SP_HISTORICAL_DATE');
}

function render_combobox(id, query,campo,valore,cmdHash,key,value,orderby){
    var queryfilter="",sep="";
    for (var i=0; i<campo.length;i++) {
      if (campo[i]!=''){
        queryfilter+=URLenc(sep+toSQL(campo[i],valore[i],null,true))
        sep=" AND ";
      }
    }
    var suggest_res_obj = new JSURL('../servlet/SQLDataProviderServer?rows=100000&startrow=0&count=false&cmdhash='+cmdHash+'&sqlcmd='+URLenc(query)+'&queryfilter='+queryfilter+'&orderby='+URLenc(orderby),true);
    var a=suggest_res_obj.Response();
    var obj=eval("("+a+")");
    var combo=Ctrl(id);
    combo.innerHTML="";
    var opt=new Option
    opt.text='';
    opt.value='';
    opt.selected='selected';
    combo.options[0] = opt
    for(var i=0; i<obj.Data.length-1; i++){
      opt=new Option();
      opt.text=obj.Data[i][LibJavascript.Array.indexOf(obj.Fields,value)]
      opt.value=obj.Data[i][LibJavascript.Array.indexOf(obj.Fields,key)]
      combo.options[combo.options.length] = opt;
    }
}
