//---Start function: Abs
function mxlib_Abs(nValue) {
  var res = nValue;
  if (res<0) {
    res = res * -1;
  } else {
    res = res * 1;
  }
  return (res);
}
//---End function

//---Start function: CheckPwd
function mxlib_CheckPwd(nUser, sPwd, sCriptPwd) {
  var res = false;
  return res;
}
//---End function

//---Start function: CriptPwd
function mxlib_CriptPwd(nUser, sPwd) {
  var res = "";
  return res;
}
//---End function

//---Start function: DateAdd
function mxlib_DateAdd(dOldDate, sField, iAmount) {
  return dOldDate
}
//---End function

//---Start function: ExecConfirm
function mxlib_ExecConfirm(cMessage,cName) {
  if(confirm(cMessage)){
    var res = eval(cName);
  }
  return 0;
}
//---End function

//---Start function: ExecRoutine
function mxlib_ExecRoutine(cName) {
  var res = eval(cName);
  return res;
}
//---End function

//---Start function: FormatDate
function mxlib_FormatDate(pDate) {
  var res = "";
  var aWeekDay=new Array('Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato');
  var aMonth=new Array('Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre')
  var nDay=pDate.getDay();
  var day=pDate.getDate();
  var nMonth=pDate.getMonth();
  res=aWeekDay[nDay]+" "+day+" "+aMonth[nMonth];
  return res;
}
//---End function

//---Start function: FormatNum
function mxlib_FormatNum(nVal, nDec, cDec) {
  var res = "";
  var cMil = iif(cDec=='.', ',', '.');
  // Parte intera
  var cInt=LRTrim(Str(Int(nVal),20));
  var nInt=Round(Len(cInt),0);
  var sInt='';
  for(var i = 0; i < nInt; i++) {      
    if (i % 3 == 0 && i > 0) sInt = cMil + sInt;
    sInt=Substr(cInt,nInt-i,1) + sInt;
  }
  // Parte decimale
  var sDec=LRTrim(Str(Round(nVal-Int(nVal), 8),20,8));
  sDec=Right(sDec,Len(sDec)-2);
  while (Right(sDec,1)=='0' && Len(sDec)>nDec) {
    sDec=Left(sDec,Len(sDec)-1);
  }
  sDec=iif(Len(sDec)>0, iif(Empty(cDec), ',', cDec)+sDec, sDec);
  res=sInt+sDec;
  return res;
}
//---End function

//---Start function: GetCPCCCHK
function mxlib_GetCPCCCHK(nLen) {
  var res = '';
  for (var i=0; i<nLen; i++) {
    var nAscii = Int(Math.random()*26+97);
    res = res + String.fromCharCode(nAscii);
  }
  return (res);
}
//---End function

//---Start function: GetHour
function mxlib_GetHour(pString) {
  var res = "";
  var aTmp=pString.split(":");
  var c="";
  //Controllo la parte prima dei due punti
  for(var i=0;i<aTmp[0].length && res.length<4 ;i++){
    c=aTmp[0].charAt(i);
    if(c.match(/[0-9]/)){
      res+=c;
    }
  }
  if(res.length<=2){
    //Ho inserito solo due cifre numeriche nella prima parte
    res=ZeroPad(res,2);
    if(aTmp[1]){
	    //Controllo anche la seconda parte
	    for(var i=0;i<aTmp[1].length && res.length<4 ;i++){
        c=aTmp[1].charAt(i);
	      if(c.match(/[0-9]/)){
		      res+=c;
	      }
	    }
    }
    //Accodo degli zeri
    var tmp=ZeroPad("",4-res.length);
    res+=tmp;
  }
  res=ZeroPad(res,4);
  //Costruisco la stringa nel formato corretto
  var firstDigit=res.substr(0,2);
  var lastDigit=res.substr(2,2);
  var nFirstDigit=Val(firstDigit);
  var nLastDigit=Val(lastDigit);
  if(nFirstDigit==24){
    firstDigit="00";
    nFirstDigit=0;
  }
  if(nFirstDigit>23){
    firstDigit="23";
    lastDigit="59";
  }
  if(nLastDigit>59)
    lastDigit="59";
  res=firstDigit+":"+lastDigit;
  return res;
}
//---End function

//---Start function: GetMaxDate
function mxlib_GetMaxDate() {
  return new Date()
}
//---End function

//---Start function: GetParentVarC
function mxlib_GetParentVarC(cVar) {
  var res = "";
  var command;
  if (( parent == null ) && ( opener == null ))
    return null;
  if ( parent != null )
    op = parent;
  if ( opener != null )
    op = opener;
  command = "res = '" + op[cVar] + "';";
  eval(command);
  return (res);
}
//---End function

//---Start function: GetParentVarD
function mxlib_GetParentVarD(cVar) {
  var res = new Date();
  var command;
  if (( parent == null ) && ( opener == null ))
    return null;
  if ( parent != null )
    op = parent;
  if ( opener != null )
    op = opener;
  command = "res = new Date('" + op[cVar] + "');"
  eval(command);
  return (res);
}
//---End function

//---Start function: GetParentVarN
function mxlib_GetParentVarN(cVar) {
var res = 0;
var command;
  if (( parent == null ) && ( opener == null ))
    return null;
  if ( parent != null )
    op = parent;
  if ( opener != null )
    op = opener;
  command = "res = '" + op[cVar] + "';";
  eval(command);
  // Previene l'eventualità del tipo stringa
  res = res * 1;
  return (res);
}
//---End function

//---Start function: GetRelativeDate
function mxlib_GetRelativeDate(pDate, pOffset) {
  var res=new Date(pDate.getTime()+pOffset);
  return res;
}
//---End function

//---Start function: IsNullEmpty
function mxlib_IsNullEmpty(sValue) {
  var res = false;
  return res;
}
//---End function

//---Start function: NvlC
function mxlib_NvlC(sVar1, sVar2) {
   if (sVar1!=null) return sVar1;
   return sVar2;
}
//---End function

//---Start function: NvlD
function mxlib_NvlD(aVar1, aVar2) {
   if (aVar1!=null) return aVar1;
   return aVar2;
}
//---End function

//---Start function: NvlN
function mxlib_NvlN(nVar1, nVar2) {
   if (nVar1!=null) return nVar1;
   return nVar2;
}
//---End function

//---Start function: PG
function mxlib_PG(nLen, nDec) {
  return mxlib_Picture(nLen,nDec,'');  
}
//---End function

//---Start function: PS
function mxlib_PS(nLen, nDec) {
  return mxlib_Picture(nLen,nDec,',');
}
//---End function

//---Start function: Picture
function mxlib_Picture(nLen, nDec, cSep) {
  var pict='';
  var nLen0=nLen;
  var nMil=0;
  if (nLen0>(nLen-nDec)) {
    for(i = 0; i < (nLen-nDec); i++) {      
      if (i % 3 == 0 && i > 0) nMil= nMil + 1;
    } 
    nLen0= nLen0 - nMil;
  }
  // parte decimale
  if (nDec > 0) {
	  pict = '.';
	  for(i = 0; i < nDec; i++) {
	    pict = pict + '9';
      }
	  } else {
      for(i = 0; i < (nLen-nDec); i++) {      
      if (i % 3 == 0 && i > 0) nMil= nMil + 1;
    } 
    nLen0= nLen0 - nMil;
  } 
  // parte intera
  for(i = 0; i < (nLen0-nDec); i++) {      
    if (i % 3 == 0 && i > 0) pict= cSep + pict
    pict = '9'+pict;      
  }    
  return(pict);
}
//---End function

//---Start function: SetSonVarC
function mxlib_SetSonVarC(cSonName, cVarName, cValue) {
  /* Parametri: 
    cSonName - Nome dell'Oggetto Figlio integrato
    cVarName - Nome della Variabile/Campo da valorizzare (senza w_)
    cValue   - Valore da assegnare a cVarName
  */
  var cHide;
  var RetVal;
  RetVal="X";
  // Istanzia il Figlio se non esiste
  //checkAndLoadChild(cSonName);
  var son=FrameRef(cSonName);
  try {
    son["Set_"+cVarName](cValue);
    RetVal="S";
  }
  catch (e) {
    // Campo nascosto o calcolato (non è previsto il metodo Set_...)
    cHide = "w_"+cVarName
    son[cHide]=cValue
    son.Calculate()
    son.SetControlsValue()
    son.EnableControlsUnderCondition()
    RetVal="H";
  }
  return (RetVal);
}
//---End function

//---Start function: SetSonVarD
function mxlib_SetSonVarD(cSonName, cVarName, dValue) {
  /* Parametri: 
    cSonName - Nome dell'Oggetto Figlio integrato
    cVarName - Nome della Variabile/Campo da valorizzare (senza w_)
    dValue   - Valore da assegnare a cVarName
  */
  var cHide;
  var RetVal;
  RetVal="X";
  // Istanzia il Figlio se non esiste
  checkAndLoadChild(cSonName);
  var son=FrameRef(cSonName);
  try {
    son["Set_"+cVarName](dValue);
    RetVal="S";
  }
  catch (e) {
    // Campo nascosto o calcolato (non è previsto il metodo Set_...)
    cHide = "w_"+cVarName
    son[cHide]=dValue
    son.Calculate()
    son.SetControlsValue()
    son.EnableControlsUnderCondition()
    RetVal="H";
  }
  return (RetVal);
}
//---End function

//---Start function: SetSonVarN
function mxlib_SetSonVarN(cSonName, cVarName, nValue) {
  /* Parametri: 
    cSonName - Nome dell'Oggetto Figlio integrato
    cVarName - Nome della Variabile/Campo da valorizzare (senza w_)
    nValue   - Valore da assegnare a cVarName
  */
  var cHide;
  var RetVal;
  RetVal="X";
  // Istanzia il Figlio se non esiste
  checkAndLoadChild(cSonName);
  var son=FrameRef(cSonName);
  try {
    son["Set_"+cVarName](nValue);
    RetVal="S";
  }
  catch (e) {
    // Campo nascosto o calcolato (non è previsto il metodo Set_...)
    cHide = "w_"+cVarName
    son[cHide]=nValue
    son.Calculate()
    son.SetControlsValue()
    son.EnableControlsUnderCondition()
    RetVal="H";
  }
  return (RetVal);
}
//---End function

//---Start function: TimestampDiff
function mxlib_TimestampDiff(low, high) {
  var res = 0;
  return res;
}
//---End function

//---Start function: absoluteUrl
function mxlib_absoluteUrl(url) {
  var httpProt=window.location.protocol+'//';
	if (url.substring(0,httpProt.length) != httpProt) {	      				
		// determina http context path
		var pathlocation=window.location.pathname
		//controllo se  window.location.pathname	inizia con / 
		if (pathlocation.substr(0,1) != '/') {
		   pathlocation='/'+pathlocation
		}
		var httpContext=httpProt+window.location.host+pathlocation			
		if (url.substr(0,1) == '/') {
			// url è un path assoluto rispetto al contesto inizia per /			
			var httpPath=window.location.pathname.substring(1,window.location.pathname.length)
			httpPath=httpPath.substring(0,httpPath.indexOf("/"))
			var httpContext=httpProt+window.location.host+"/"+httpPath			
			url=httpContext+url;
		} else {			
			// url è un path relativo
			httpContext=httpContext.substring(0,httpContext.lastIndexOf("/")+1)			
			url=httpContext+url;
		}
	}
	return url	
}
//---End function

//---Start function: checkMailFormat
function mxlib_checkMailFormat(sAddress) {
  var res = false;
  var regex = /^([0-9a-zA-Z]+[-._+&amp;])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$/;
  res = sAddress.match(regex);
  return res;
}
//---End function

//---Start function: copyFile
function mxlib_copyFile(sFileIn, sFileOut) {
}
//---End function

//---Start function: copyFile2
function mxlib_copyFile2(oFileIn, oFileOut) {
}
//---End function

//---Start function: copyFileCript
function mxlib_copyFileCript(sFileIn, sFileOut, sKey) {
}
//---End function

//---Start function: deleteDirectory
function mxlib_deleteDirectory(sDir) {
  var res = false;
  return res;
}
//---End function

//---Start function: deleteFile
function mxlib_deleteFile(sFile) {
}
//---End function

//---Start function: getDmsOpenTarget
function mxlib_getDmsOpenTarget(sMimeType) {
  var sTarget = "frmTempDms";  
  var iPad = (navigator.platform == "iPad");
  var iPhone = (navigator.platform == "iPhone");
  sMimeType = RTrim(sMimeType);
  if (RTrim(Lower(sMimeType)) == 'htm' || RTrim(Lower(sMimeType)) == 'html' || RTrim(Lower(sMimeType)) == 'eml' || iPad || iPhone) {
    sTarget = "blank_" + mxlib_GetCPCCCHK(10);
  }
  return sTarget;
}
//---End function

//---Start function: getFilesList
function mxlib_getFilesList() {
}
//---End function

//---Start function: getFilesListByPrefix
function mxlib_getFilesListByPrefix(sDir, sPrefix) {
}
//---End function

//---Start function: md5
function mxlib_md5(str) {
  var res = "";
  return res;
}
//---End function

//---Start function: moveFile
function mxlib_moveFile(sFileIn, sFileOut) {
}
//---End function

//---Start function: openLink
function mxlib_openLink(url, w, h, target) {
  if (target == undefined) {
    target = '_blank' 
  }
	// Codice per centrare la finestra nello Schermo
  if (w != undefined && h != undefined){
	  var left = Math.ceil((screen.width - w) / 2);
	  var top = Math.ceil((screen.height - h) / 2);
    // Stile apertura finestra
	  var style = 'toolbar=no,scrollbars=no,resizable=yes' + ',' + 'width=' + w + ',' + 'height=' + h +','+ 'top=' + top +','+'left='+left;
  }
  else{
    var style = 'toolbar=no,scrollbars=no,resizable=yes';    
  }
  // Fix per Mozilla
	if (url.substring(0,10)=='../servlet'){
    url = MXLib.absoluteUrl(url);
  }
	window.open(url,target,style);
}
//---End function

//---Start function: openLinkNoResize
function mxlib_openLinkNoResize(url, w, h, target) {
  if (target == undefined) {
    target = '_blank' 
  }
	// Codice per centrare la finestra nello Schermo
	var left = Math.ceil((screen.width - w) / 2);
	var top = Math.ceil((screen.height - h) / 2);
  // Stile apertura finestra
	var style = 'toolbar=no,scrollbars=no,resizable=no' + ',' + 'width=' + w + ',' + 'height=' + h +','+ 'top=' + top +','+'left='+left;
  // Fix per Mozilla
	if (url.substring(0,10)=='../servlet'){
    url = MXLib.absoluteUrl(url);
  }
	window.open(url,target,style);
}
//---End function

//---Start function: openLinkSB
function mxlib_openLinkSB(url, w, h, target) {
  if (target == undefined) {
    target = '_blank' 
  }
	// Codice per centrare la finestra nello Schermo
  if (w != undefined && h != undefined){
	  var left = Math.ceil((screen.width - w) / 2);
	  var top = Math.ceil((screen.height - h) / 2);
    // Stile apertura finestra
	  var style = 'toolbar=no,scrollbars=yes,resizable=yes' + ',' + 'width=' + w + ',' + 'height=' + h +','+ 'top=' + top +','+'left='+left;
  }
  else{
    var style = 'toolbar=no,scrollbars=yes,resizable=yes';    
  }
  // Fix per Mozilla
	if (url.substring(0,10)=='../servlet'){
    url = MXLib.absoluteUrl(url);
  }
	window.open(url,target,style);
}
//---End function

//---Start function: readFile
function mxlib_readFile(sFile) {
  var res = "";
  return res;
}
//---End function

//---Start function: removeHTML
function mxlib_removeHTML(sHTML) {
  var sTemp = sHTML;
  sTemp = sHTML.replace(/<[^>]*>/g, '');
  // rimuove le andate a capo
  sTemp = sTemp.replace(/\n/gi, ' ');
  // sistema gli spazi unbreakabili...
  sTemp = sTemp.replace(/&nbsp;/gi, ' ');
  return sTemp;
}
//---End function

//---Start function: writeFile
function mxlib_writeFile(sFile, sContent) {
}
//---End function

//---Start function: writeFile2
function mxlib_writeFile2(oFile, sContent) {
}
//---End function

//---Start function: MakeMXLib
function MakeMXLib() {
  this.Abs=mxlib_Abs
  this.CheckPwd=mxlib_CheckPwd
  this.CriptPwd=mxlib_CriptPwd
  this.DateAdd=mxlib_DateAdd
  this.ExecConfirm=mxlib_ExecConfirm
  this.ExecRoutine=mxlib_ExecRoutine
  this.FormatDate=mxlib_FormatDate
  this.FormatNum=mxlib_FormatNum
  this.GetCPCCCHK=mxlib_GetCPCCCHK
  this.GetHour=mxlib_GetHour
  this.GetMaxDate=mxlib_GetMaxDate
  this.GetParentVarC=mxlib_GetParentVarC
  this.GetParentVarD=mxlib_GetParentVarD
  this.GetParentVarN=mxlib_GetParentVarN
  this.GetRelativeDate=mxlib_GetRelativeDate
  this.IsNullEmpty=mxlib_IsNullEmpty
  this.NvlC=mxlib_NvlC
  this.NvlD=mxlib_NvlD
  this.NvlN=mxlib_NvlN
  this.PG=mxlib_PG
  this.PS=mxlib_PS
  this.Picture=mxlib_Picture
  this.SetSonVarC=mxlib_SetSonVarC
  this.SetSonVarD=mxlib_SetSonVarD
  this.SetSonVarN=mxlib_SetSonVarN
  this.TimestampDiff=mxlib_TimestampDiff
  this.absoluteUrl=mxlib_absoluteUrl
  this.checkMailFormat=mxlib_checkMailFormat
  this.copyFile=mxlib_copyFile
  this.copyFile2=mxlib_copyFile2
  this.copyFileCript=mxlib_copyFileCript
  this.deleteDirectory=mxlib_deleteDirectory
  this.deleteFile=mxlib_deleteFile
  this.getDmsOpenTarget=mxlib_getDmsOpenTarget
  this.getFilesList=mxlib_getFilesList
  this.getFilesListByPrefix=mxlib_getFilesListByPrefix
  this.md5=mxlib_md5
  this.moveFile=mxlib_moveFile
  this.openLink=mxlib_openLink
  this.openLinkNoResize=mxlib_openLinkNoResize
  this.openLinkSB=mxlib_openLinkSB
  this.readFile=mxlib_readFile
  this.removeHTML=mxlib_removeHTML
  this.writeFile=mxlib_writeFile
  this.writeFile2=mxlib_writeFile2
}
//---End function

var MXLib = new MakeMXLib()

