// --- gstools.js -----
var sessionGraceTime = 10; // number of grace minutes till session times out
var sessionTimer;
var showSessionStatus = true;
var formIsClean = true;

function filterInnerText(inStr) {
var outStr = inStr+"";
var re = /a/
outStr = outStr.replace(/&/g,"&amp;");
outStr = outStr.replace(/</g,"&lt;");
outStr = outStr.replace(/>/g,"&gt;");
return outStr;

}

function startSessionTimer(timeout) {
  sessionTimer = setTimeout("displayGraceWarning()",(timeout-sessionGraceTime)*60000)
  if (showSessionStatus) {
    window.defaultStatus ="Session warning timer: "+(timeout-sessionGraceTime)
    if(window.parent != null) {
      parent.window.defaultStatus ="Session warning timer: "+(timeout-sessionGraceTime)
    }
  }
}

function displayGraceWarning() {
  alert("This work session is about to expire. Click the OK button within "+sessionGraceTime+" minutes to "+
      "extend the session")
  var newWin = window.open("http://www.ngumc.org/chgcon02/login/refreshsession.asp","refreshSession","dependent,fullscreen")
  newWin.focus()
}

function parseDollars(str){
if (str=="") { return 0;}
var aChar = "";
var aStr = "";
var theSign = 1;
var decct = -1;
  for(var i=0; i<str.length; i++){
    aChar = str.charAt(i);
    if (aChar == ".") { decct++; aStr = aStr+aChar}
    if ((aChar == "-")||(aChar == "(")) {theSign = -1}
    if ((aChar >= "0") && (aChar <="9")) {
      if ((aChar != "0") || (aStr != "")){
        aStr = aStr+aChar;
		if (decct >=0) { decct++; if (decct > 2) {break} }
      }
    }
  }
  if (decct == -1) (aStr = aStr + ".00")
  if (decct == 0) (aStr = aStr + "00")
  return (aStr==""? 0 : theSign * parseFloat(aStr));
}

function parseNumber(str){
  return parseDollars(str);
}

function formatDollars(amt) {
  var tStr = ""+Math.floor(Math.abs(amt));
  var fract = ""+(Math.round((Math.abs(amt)-Math.floor(Math.abs(amt)))*100));
  if (fract.length == 1) {fract = "0"+fract}
  aStr = "";
  for (var i=tStr.length-1; i>=0; i--) {
    aStr = tStr.charAt(i)+aStr;
    if (((tStr.length-i) % 3 == 0)&&(i!=0)){ aStr = ","+aStr; }
  }
  aStr = aStr + "."+fract;
  return (amt<0 ? "($"+aStr+")" : "$"+aStr);
}

function formatNumber(amt) {
  var tStr = ""+Math.floor(Math.abs(amt));
  aStr = "";
  for (var i=tStr.length-1; i>=0; i--) {
    aStr = tStr.charAt(i)+aStr;
    if (((tStr.length-i) % 3 == 0)&&(i!=0)){ aStr = ","+aStr; }
  }
  return (amt<0 ? "("+aStr+")" : aStr);
}

function formatDate(theDate) {
  var mo = 0
  var day = 0
  var year = 0
  var tStr;
  var dStr = ""+theDate;
  if (dStr=="") { return "";}
  try {
    tStr = dStr.split(/[\-\/]/g);
  } catch (e) { return "";}
  var aStr = "";
  var numVal = tStr.length;
  if (numVal==0) {return "";}
  year= parseNumber(tStr[numVal-1]);
  if (year < 100) {
    if (year<20) {year+=2000} else {year+=1900}
  }
  if(numVal>1) { 
    mo=parseNumber(tStr[0])
    if (numVal>2){
      day=parseNumber(tStr[1])
    }
  }
  if(mo>0) {
    aStr+=mo+"/";
    if (mo>12) {alert("Invalid month")}
  }
  if(day>0) {
    aStr+=day+"/";
    if (day>31) {alert("Invalid day")}
  }
  aStr+=year;
  if ((year<1900)||(year>2100)) {alert("Check year")}
  return aStr;
}

function cleanupDollars(obj) {
  obj.value = formatDollars(parseDollars(obj.value));
}

function cleanupNumber(obj) {
  obj.value = formatNumber(parseNumber(obj.value));
}

function isFormClean() {
  return formIsClean;
}

function dirtyForm() {
  formIsClean = false;
}
