// --
// 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          = 400;
  this.height         = 300;
  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 += "resizeable="  + (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 {
    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) { f.value += ":00"; }
  if (f.value.length!=19) {
    alert("Data/Hora Inválida!");
    f.select(); f.focus();
    return false;
  } else {
    var d = getDateFromFormat(f.value, "dd/MM/yyyy HH:mm:ss");
    if (d==0) {
      alert("Data/Hora Inválida!");
      f.select(); f.focus();
      return false;
    }
  }
  return true;
} // FieldIsDateTime()

// --
// FieldIsTime()
// --
function FieldIsTime(f) {
  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 {
      f.value = s;
    }
  } else {
    if (s.length!=0) {
      alert("Hora Inválida!");
      f.select(); f.focus();
    }
  }
} // FieldIsTime()

// --
// FieldIsLatitude()
// --
function FieldIsLatitude(f) {
  var b = false;
  var s = f.value.trim();
  if (s.length==10) {
    var aLat = s.split(" ");
    if (aLat.length==4) {
      aLat[0] = parseInt(aLat[0], 10);
      aLat[1] = parseInt(aLat[1], 10);
      aLat[2] = parseInt(aLat[2], 10);
      aLat[3] = String(aLat[3]).toUpperCase();
      if (isNaN(aLat[0])||isNaN(aLat[1])||isNaN(aLat[2])||(String("NS").indexOf(aLat[3])==-1)) {
        b = false;
      } else {
        if (aLat[0]>=0&&aLat[0]<90) {
          if (aLat[1]>=0&&aLat[1]<=59) {
            if (aLat[2]>=0&&aLat[2]<=59) {
              b = true;
            }
          }
        }
      }
    }
    if (!(b)) {
      alert("Latitude Inválida!");
      f.select(); f.focus();
    } else {
      f.value = s.toUpperCase();
      return true;
    }
  } else {
    if (s.length!=0) {
      alert("Latitude Inválida!");
      f.select(); f.focus();
    }
  }
  return false;
} // FieldIsLatitude()

// --
// FieldIsLongitude()
// --
function FieldIsLongitude(f) {
  var b = false;
  var s = f.value.trim();
  if (s.length==11) {
    var aLon = s.split(" ");
    if (aLon.length==4) {
      aLon[0] = parseInt(aLon[0], 10);
      aLon[1] = parseInt(aLon[1], 10);
      aLon[2] = parseInt(aLon[2], 10);
      aLon[3] = String(aLon[3]).toUpperCase();
      if (isNaN(aLon[0])||isNaN(aLon[1])||isNaN(aLon[2])||(String("EW").indexOf(aLon[3])==-1)) {
        b = false;
      } else {
        if (aLon[0]>=0&&aLon[0]<180) {
          if (aLon[1]>=0&&aLon[1]<=59) {
            if (aLon[2]>=0&&aLon[2]<=59) {
              b = true;
            }
          }
        }
      }
    }
    if (!(b)) {
      alert("Longitude Inválida!");
      f.select(); f.focus();
    } else {
      f.value = s.toUpperCase();
      return true;
    }
  } else {
    if (s.length!=0) {
      alert("Longitude Inválida!");
      f.select(); f.focus();
    }
  }
  return false;
} // FieldIsLongitude()

// --
// 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:ss");
} // SetDateTimeInField()

// --
// SetTimeInField()
// --
function SetTimeInField(f) {
  f.value = formatDate(new Date(), "HH:mm:ss");
} // 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=="") { f.value = "0" }
      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);
    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);
    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==19) { 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()

// --
// 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() {
  window.resizeTo(1024,768);
} // 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> New Document </TITLE>";
  str += "<LINK HREF='/css/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,resizeable=yes,menubar=yes');
  WinPrint.document.write(str);
 	WinPrint.document.close();
 	WinPrint.focus();
 	// WinPrint.print();
 	// WinPrint.close();
} // Imprimir()