// --
// TDispatch()
// --
function TDispatch() {
  // -- ( Atributos ) --
  this.url             = "";
  this.name            = "WinDef";
  // --
  this.ShowDirectories = false;
  this.FullScreen      = false;
  this.ShowLocation    = false;
  this.ShowMenubar     = false;
  this.IsResizeable    = false;
  this.ShowScrollbar   = false;
  this.ShowStatus      = false;
  this.ShowToolbar     = false;

  this.top            = 0;
  this.left           = 0;
  this.width          = 500;
  this.height         = 400;
  this.title          = "";
  // -- Métodos
  this.Go             = Go;
  // --
  // Go()
  // --
  function Go( pUrl, pName, pWidth, pHeight ) {
    if (""+pUrl=="undefined") {
      if (this.url=="") {
        return null;    
      }
    } else {
      this.url = pUrl;
    }
    if (""+pName!="undefined") {
      this.name = pName;
    }
    if (""+pWidth!="undefined") {
      this.width = parseInt(pWidth, 10);
    }
    if (""+pHeight!="undefined") {
      this.height = parseInt(pHeight, 10);
    }
    var feature = "";
    feature += "directories=" + (this.ShowDirectories?"yes":"no")  + ",";
    feature += "fullscreen="  + (this.FullScreen?"yes":"no")       + ",";
    feature += "location="    + (this.ShowLocation?"yes":"no")     + ",";
    feature += "menubar="     + (this.ShowMenubar?"yes":"no")      + ",";
    feature += "resizable="   + (this.IsResizeable?"yes":"no")     + ",";
    feature += "scrollbars="  + (this.ShowScrollbar?"yes":"no")    + ",";
    feature += "status="      + (this.ShowStatus?"yes":"no")       + ",";    
    feature += "toolbar="     + (this.ShowToolbar?"yes":"no")      + ",";
    feature += "left="        + this.left                          + ",";
    feature += "top="         + this.top                           + ",";
    feature += "height="      + this.height                        + ",";
    feature += "width="       + this.width;
    window.open( this.url, this.name, feature );
    // -- Retorna à Condição Default
    this.ShowDirectories = false;
    this.FullScreen      = false;
    this.ShowLocation    = false;
    this.ShowMenubar     = false;
    this.IsResizeable    = false;
    this.ShowScrollbar   = false;
    this.ShowStatus      = false;
    this.ShowToolbar     = false;
    this.top            = 0;
    this.left           = 0;
    this.width          = 400;
    this.height         = 300;
    this.title          = "";
  } // Go()
  return this;
} // TDispatch()
var WinFly = new TDispatch();

// --
// FieldIsDate()
// --
function FieldIsDate(f) {
  var s = f.value;
  if (s.length==10) {
    s = s.replace(/(\d+).(\d+).(\d+)/, '$3/$2/$1');
    var d = new Date(s);
    if (d=="NaN") {
      alert("Data Inválida!");
      f.select(); f.focus();
    } else {
      f.value = formatDate(d, "dd/MM/yyyy");
    }
  } else {
    if (s.length!=0) {
      alert("Data Inválida!");
      f.select(); f.focus();
    }
  }
} // FieldIsDate()

// --
// FieldIsDateTime()
// --
function FieldIsDateTime(f) {
  f.value = f.value.trim();
  if (f.value.length==0) { return true; }
  if (f.value.length!=16) {
    alert("Data/Hora Inválida!");
    f.select(); f.focus();
    return false;
  } else {
    var d = getDateFromFormat(f.value, "dd/MM/yyyy HH:mm");
    if (d==0) {
      alert("Data/Hora Inválida!");
      f.select(); f.focus();
      return false;
    }
  } return true;
} // FieldIsDateTime()

// --
// FieldIsTime()
// --
function FieldIsTime(f, tp) {
  tp=(""+tp=="undefined"?"T":"T2");
  var b = false;
  var s = f.value.trim();
  if (s.length==8) {
    s = s.replace(/(\d+).(\d+).(\d+)/, '$1:$2:$3');
    b = true;
  } else if (s.length==5) {
    s = s.replace(/(\d+).(\d+)/, '$1:$2') + ":00";
    b = true;
  }
  if (b) {
    aDt = s.split(":");
    if (aDt.length==3) {
      aDt[0] = parseInt(aDt[0],  10);
      aDt[1] = parseInt(aDt[1],  10);
      aDt[2] = parseInt(aDt[2],  10);
      if (isNaN(aDt[0])) {
        b = false;
      } else {
        if (!((aDt[0]>=0)&&(aDt[0]<=23))) {
          b = false;
        }
      }
      if (isNaN(aDt[1])) {
        b = false;
      } else {
        if (!((aDt[1]>=0)&&(aDt[1]<=59))) {
          b = false;
        }
      }
      if (isNaN(aDt[2])) {
        b = false;
      } else {
        if (!((aDt[2]>=0)&&(aDt[2]<=59))) {
          b = false;
        }
      }
    } else {
      b = false;
    }
    if (!(b)) {
      alert("Hora Inválida!");
      f.select(); f.focus();
    } else {
      switch(tp) {
        case "T2":
          f.value = s.left(5);
          break;
        case "T": default:
          f.value = s;
          break;
      }
    }
  } else {
    if (s.length!=0) {
      alert("Hora Inválida!");
      f.select(); f.focus();
    }
  }
} // FieldIsTime()

// --
// SetDateInField()
// --
function SetDateInField(f) {
  f.value = formatDate(new Date(), "dd/MM/yyyy");
} // SetDateInField()

// --
// SetDateTimeInField()
// --
function SetDateTimeInField(f) {
  f.value = formatDate(new Date(), "dd/MM/yyyy HH:mm");
} // SetDateTimeInField()

// --
// SetTimeInField()
// --
function SetTimeInField(f) {
  f.value = formatDate(new Date(), "HH:mm");
} // SetTimeInField()

// --
// ShowCalendar()
// --
function ShowCalendar( field ) {
  var aFld = new Array();
  aFld = field.split(".");
  var cal = new TCalendario(document.forms[aFld[0]].elements[aFld[1]]);
  cal.popup();
} // ShowCalendar()

// --
// maskFloat()
// --
function maskFloat(e, f, d) {
  try {
    var keyCode = (window.event?e.keyCode:e.which);
    if (keyCode==9||keyCode==13) { return true; }
    if (keyCode==46) { f.value = ""; return false; }
    var IsBackspace = (keyCode==8);
    var key = String.fromCharCode(keyCode);
    var dec = (""+d=="undefined"?2:d);
    var src = f.value;
    if ((IsBackspace)||(key>="0"&&key<="9")) {
      if (IsBackspace) { 
        if (src.length>1) {
          src = src.left(src.length-1);
        } else {
          src = "";
        }
      } else {
        src += key;
      }
      if (f.value=="") { return true; }
      src = String(parseInt(src.replace(/\.|,/gi,""), 10));
      if (src.length<=dec) { src = src.leftfill("0", dec+1); }
      if (src.length<=(dec+3)) {
        var re = new RegExp("(\\d{" + (src.length-dec) + "})(\\d{" + dec + "})");
        f.value = src.replace(re, '$1,$2');
      } else if (src.length<=(dec+6)) {
        var re = new RegExp("(\\d{" + (src.length-dec-3) + "})(\\d{3})(\\d{" + dec + "})");
        f.value = src.replace(re, '$1.$2,$3');
      } else if (src.length<=(dec+9)) {
        var re = new RegExp("(\\d{" + (src.length-dec-6) + "})(\\d{3})(\\d{3})(\\d{" + dec + "})");
        f.value = src.replace(re, '$1.$2.$3,$4');
      }
    }
  } catch(e) {
    alert(e.description);
  } return false;
} // maskFloat()

// --
// maskDate()
// --
function maskDate(e, f) {
  try {
    var keyCode = (window.event?e.keyCode:e.which);
    if (keyCode==9||keyCode==13) { return true; }
    if (keyCode==46) { f.value = ""; return false; }
    var IsBackspace = (keyCode==8);
    var key = String.fromCharCode(keyCode);
    if (key.toUpperCase()=="=") { return SetDateTime(f, 0); }
    if (key.toUpperCase()=="+") { return SetDateTime(f, 1); }
    if (key.toUpperCase()=="-") { return SetDateTime(f, -1); }
    var src = f.value;
    if ((IsBackspace)||(key>="0"&&key<="9")) {
      if (IsBackspace) { 
        if (src.length>1) {
          src = src.left(src.length-1);
        } else {
          src = "";
        }
      } else {
        if (f.value.length==10) { return false; }
        src += key;
      }
      src = src.replace(/\//gi,"");
      if (src.length<=2) {
        return true;
      } else if (src.length<=4) {
        var re = new RegExp("(\\d{2})(\\d{1,2})");
        f.value = src.replace(re, '$1/$2');
      } else {
        var re = new RegExp("(\\d{2})(\\d{2})(\\d{1,4})");
        f.value = src.replace(re, '$1/$2/$3');
      }
    }
  } catch(e) {
    alert(e.description);
  }
  return false;
} // maskDate()

// --
// maskDateTime()
// --
function maskDateTime(e, f) {
  try {
    var keyCode = (window.event?e.keyCode:e.which);
    if (keyCode==9||keyCode==13) { return true; }
    if (keyCode==46) { f.value = ""; return true; }
    var IsBackspace = (keyCode==8);
    var key = String.fromCharCode(keyCode);
    if (key.toUpperCase()=="=") { return SetDateTime(f, 0); }
    if (key.toUpperCase()=="+") { return SetDateTime(f, 1); }
    if (key.toUpperCase()=="-") { return SetDateTime(f, -1); }
    var src = f.value;
    if ((IsBackspace)||(key>="0"&&key<="9")) {
      if (IsBackspace) { 
        if (src.length>1) {
          src = src.left(src.length-1);
        } else {
          src = "";
        }
      } else {
        if (f.value.length==16) { return false; }
        src += key;
      }
      src = src.replace(/\/|\:|\s/gi,"");
      if (src.length<=2) {
        return true;
      } else if (src.length<=4) {
        var re = new RegExp("(\\d{2})(\\d{1,2})");
        f.value = src.replace(re, '$1/$2');
      } else if (src.length<=8) {
        var re = new RegExp("(\\d{2})(\\d{2})(\\d{1,4})");
        f.value = src.replace(re, '$1/$2/$3');
      } else if (src.length<=10) {
        var re = new RegExp("(\\d{2})(\\d{2})(\\d{4})(\\d{1,2})");
        f.value = src.replace(re, '$1/$2/$3 $4');
      } else if (src.length<=12) {
        var re = new RegExp("(\\d{2})(\\d{2})(\\d{4})(\\d{2})(\\d{1,2})");
        f.value = src.replace(re, '$1/$2/$3 $4:$5');
      } else if (src.length<=14) {
        var re = new RegExp("(\\d{2})(\\d{2})(\\d{4})(\\d{2})(\\d{2})(\\d{1,2})");
        f.value = src.replace(re, '$1/$2/$3 $4:$5:$6');
      }
    }
  } catch(e) {
    alert(e.description);
  } return false;
} // maskDateTime()

// --
// SetDateTime()
// --
function SetDateTime( fld, off ) {
  if (String(fld.value)!="undefined") {
    var sDt = ""; var dt = new Date(); var hr = "";
    if (fld.value.length>=10) {
      sDt = fld.value.left(10);
      hr = fld.value.right(fld.value.length-10);
      if (!sDt.isDate()) { sDt = ""; }
    } if (sDt!="") {
      dt = Str2Att(sDt,"D");
    }
    dt = DayAdd(dt, off);  
    fld.value = Att2Str(dt,"D") + hr;
  } return false;
} // SetDateTime()

// --
// DoMask()
// -- 
function DoMask(src, mask, flag) {
  if ((""+flag!="undefined")&&(!flag)) {
    return false;
  } else {
    var i = src.value.length;
    var saida = mask.substring(0,1);
    var texto = mask.substring(i);
    if (texto.substring(0,1) != saida) {
	    src.value += texto.substring(0,1);
    }
  } return true;
} // DoMask()

// --
// KeyIsDigit()
// --
function KeyIsDigit(e) {
	var key = window.event ? e.keyCode : e.which;
	var keychar = String.fromCharCode(key);
	reg = /\d/;
	return reg.test(keychar);
} // KeyIsDigit()

// --
// KeyIsFloat()
// --
function KeyIsFloat(e) {
	var key = window.event ? e.keyCode : e.which;
	var keychar = String.fromCharCode(key);
	reg = /\d|,|-/;
	return reg.test(keychar);
} // KeyIsFloat()

// --
// KeyIsPositiveFloat()
// --
function KeyIsPositiveFloat(e) {
	var key = window.event ? e.keyCode : e.which;
	var keychar = String.fromCharCode(key);
	reg = /\d|,/;
	return reg.test(keychar);
} // KeyIsPositiveFloat()

// --
// modulo11()
// --
function modulo11(str) {
  var k = 2;
  var soma = 0;
	for (i = str.length-1; i >= 0; i--) {
    soma += (str.charAt(i) - '0') * k;
		k = (k-1) % str.length + 2;
	}
	var dv = 11 - soma % 11;
	if (dv > 9) dv = 0;
  return dv;
} // modulo11()

// --
// show_Code()
// --
function show_Code(pString) {
  return pString.replace(/</gi, "&lt").replace(/>/gi, "&gt<BR>")
} // show_Code()

// --
// ResizeWindow()
// --
function ResizeWindow(w,l) {
  window.resizeTo(w,l);
} // ResizeWindow()

// --
// Imprimir()
// --
function Imprimir(strid) {
  var prtContent = document.getElementById(strid);
  var str = "";
  str += "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">";
  str += "<HTML>";
  str += "<HEAD>";
  str += "<TITLE> Impressão </TITLE>";
  str += "<LINK HREF='/styles/pilots.css' TYPE='text/css' REL='stylesheet'>";
  str += "</HEAD>";
  str += "<BODY>";
  str += prtContent.innerHTML;
  str += "</BODY>";
  str += "</HTML>";
  var WinPrint = window.open('','','letf=0,top=0,width=680,height=368,toolbar=yes,scrollbars=yes,status=yes,resizable=yes,menubar=yes');
  WinPrint.document.write(str);
 	WinPrint.document.close();
 	WinPrint.focus();
 	// WinPrint.print();
 	// WinPrint.close();
} // Imprimir()

// --
// ChangeVisibility()
// --
function ChangeVisibility(strID) {
  var objID = document.getElementById(strID);
  if (objID.style.display=="none") {
    objID.style.display = "block";
  } else {
    objID.style.display = "none";
  } 
} // ChangeVisibility()

// --
// Validate()
// --
function Validate(fld, typ, msk, opt) {
  try {
    if (fld.value!="") {
      switch(typ) {
        case "D":
          switch(msk) {
            case "dd/MM/yyyy":
              if (fld.value.length==5) { fld.value += '/' + formatDate(new Date(), 'yyyy') }
              if (fld.value.length==8) { fld.value = formatDate(new Date(getDateFromFormat(fld.value,'dd/MM/yy')),'dd/MM/yyyy'); }
              if (fld.value.length==10) {
                var dt = getDateFromFormat(fld.value, msk);
                if (dt>0) { return true; }
              } break;
          } break;
        case "T":
          switch(msk) {
            case "HH:mm":
              if (fld.value.length==5) {
                var aTime = fld.value.split(":");
                if (aTime.length==2) {
                  var h = parseInt(aTime[0], 10);
                  if (!isNaN(h)&&h>=0&&h<=23) {
                    var m = parseInt(aTime[1], 10);
                    if (!isNaN(m)&&m>=0&&m<=59) {
                      return true;
                    }
                  }
                }
                var dt = getDateFromFormat(fld.value, msk);
                if (dt>0) { return true; }
              } break;
          } break;
      }
    } if ((opt)&&(fld.value=="")) { return true; }
  } catch(e) {
    alert(e.description);
  } fld.select(); fld.focus(); return false;
} // Validate()

// --
// postDelete()
// --
function postDelete() {
  if (!(confirm("Confirma Exclusão?"))) {
    return false;
  } return true;
} // postDelete()

// --
// execScript()
// --
function execScript(s) {
  var b = false;
  try {
    var oShell = new ActiveXObject("Wscript.Shell");
    oShell.Run(s, 0, false); 
    b = true;
  } catch(e) {
    alert(e.description);
  } return b;
} // execScript()

// --
// clearAll()
// --
function clearAll( ctrl ) {
  try {
    for (i = 0; i < ctrl.length; i++) {
      ctrl[i].checked = false;
    }
  } catch(e) {
    alert(e.description);
  }
} // clearAll()

// --
// checkAll()
// --
function checkAll( ctrl ) {
  try {
    for (i = 0; i < ctrl.length; i++) {
      ctrl[i].checked = true;
    }
  } catch(e) {
    alert(e.description);
  }
} // checkAll()