/*  Copyright (c) 2000-2005 PeopleSoft, Inc.  All Rights Reserved.
    ToolsRel: 8.46.10 */

var oErr_win0 = null;

function PSwarning_win0(msg)
{
msg = PSmessageSubst_win0(msg, PSwarning_win0.arguments, 1);
alert(msg);
}

function PSdeferWarning_win0(msg)
{
sDefMsg_win0 = PSmessageSubst_win0(msg, PSdeferWarning_win0.arguments, 1);
bDefWarning_win0 = true;
}

function PSerror_win0(obj, msg)
{
if (bReset_win0)
{
  resetChange(obj);
  bReset_win0 = false;
}
else
{
  obj.PSsaveclass = obj.className;
  obj.className = "PSERROR";
}
msg = PSmessageSubst_win0(msg, PSerror_win0.arguments, 2);
alert(msg);
oErr_win0=obj;
}

function PSdeferError_win0(obj, msg)
{
sDefMsg_win0 = PSmessageSubst_win0(msg, PSdeferError_win0.arguments, 2);
oDefErr_win0=obj;
bDefWarning_win0 = false; 
}

function PSshowDeferredMsg_win0()
{
if (sDefMsg_win0=="")return;
if (bDefWarning_win0)
   PSwarning_win0(sDefMsg_win0);
else
   PSerror_win0(oDefErr_win0, sDefMsg_win0);

sDefMsg_win0 = "";
oDefErr_win0 = null;   
}

function PSclearError_win0(obj)
{
if (obj == oDefErr_win0)
{
  sDefMsg_win0 = ""; 
  oDefErr_win0 = null;   
}
}

function PSmessageSubst_win0(msg, parms, startparm)
{
var pos;
var res = "";
var startpos = 0;
var nparms = parms.length - startparm;

if (nparms == 0)
  return msg;

while (startpos < msg.length)
{
  pos = msg.indexOf("%", startpos);
  if (pos == -1 || pos == msg.length - 1)
  {
    res += msg.substring(startpos);
    return res;
  }
  res += msg.substring(startpos, pos);

  ++pos;
  if (msg.charAt[pos] == "%")
  {
    res += "%";
    ++pos;
    startpos = pos;
    continue;
  }

  var numstr = "";

  while (pos < msg.length)
  {
    var c = msg.charAt(pos);
    if ("0123456789".indexOf(c) == -1)
      break;
    numstr += c;
    ++pos;
  }

  startpos = pos;

  if (numstr.length == 0)
    continue;

  var num = parseInt(numstr);
  if (num > nparms)
    continue;

  res += parms[startparm + num - 1];
}

return res;
}

function FindString_win0(obj)
{
var s = prompt("Enter search string:","");
if (s == null || s == "")
  return false;
obj.value = s;
return true;
}

function DeleteCheck_win0(form,name)
{
if(confirm("Delete current/selected rows from this page?  The delete will occur when the transaction is saved."))
  submitAction_win0(form,name);
}

function DeleteCheck2_win0()
{
return confirm("Delete current/selected rows from this page?  The delete will occur when the transaction is saved.");
}

function AddMultiple_win0(obj)
{
var msg = "Enter number of rows to add:";
var defreply  = "1";
while(true)
{
  var s = prompt(msg,defreply);
  if (s == null || s == "")
    return false;
  if (s.search(/^ *(\d*) *$/) == 0)
  {
    var n = parseInt(RegExp.$1);
    if (n > 0 && n <= 100)
    {    
      obj.value = RegExp.$1;
      return true;
    }
  }      
  msg = "Invalid value.  Please enter a number between 1 and 100." 
        + "\n" + "Enter number of rows to add:";
  defreply = RegExp.$1;
}
}

var oChange_win0 = null;
var oDefErr_win0 = null;
var sDefMsg_win0 = "";
var bDefWarn_win0; 
var oKillFocus_win0 = null;
var oTargetFocus_win0 = null;
var bReset_win0 = false;

function moveFocus_win0(killobj)
{
if (oErr_win0!=null)
{
  oKillFocus_win0 = killobj;
  oTargetFocus_win0 = oErr_win0;
  oErr_win0.focus();
  oErr_win0 = null;
}
}

function doFocus_win0(obj,bTabonly,bDef)
{

if (window.focusHook)
  focusHook(obj);

if (obj==oTargetFocus_win0)
{
  oTargetFocus_win0 = null;
  oKillFocus_win0 = null;
  return;
}

if (typeof dateBoxOpen != "undefined" && dateBoxOpen)
   closeCal2();

if(!bTabonly || getLastKey_win0() == "\t".charCodeAt(0))
{
  if(oChange_win0!=null && oChange_win0!=obj)
  {
    oChange_win0.form.ICFocus.value=obj.name;
    submitAction_win0(oChange_win0.form,oChange_win0.name);
    oChange_win0 = null;
  }
  else if(bDef && oDefErr_win0!=null && oDefErr_win0!=obj)
    PSshowDeferredMsg_win0();
}
moveFocus_win0(obj);
}

function doFocusMac_win0(obj,bTabonly)
{
if (obj==oTargetFocus_win0)
{
  oTartgetFocus_win0 = null;
  oKillFocus_win0 = null;
  return;
}

if (typeof dateBoxOpen != "undefined" && dateBoxOpen)
   closeCal2();

document.win0.ICFocus.value = obj.name;
if(oDefErr_win0!=null && oDefErr_win0!=obj)
  PSshowDeferredMsg_win0();

moveFocus_win0(obj);

}

function doReqField_win0(obj, bserver, bnumeric)
{
if (oKillFocus_win0==obj)
  return;

var val;
if(obj.PSsaveclass) obj.className = obj.PSsaveclass;
if(obj.type == "select-one")
  val = obj.options[obj.selectedIndex].value;
else
  val = obj.value;
if (val.search(/^ *$/) == 0 || (bnumeric && val.search(/^[ 0]*$/) == 0))
{
  if (bserver)
    oChange_win0=obj;
  else
    PSdeferError(obj, "Field is required.");  
}
}

function doEdits_win0(obj,sType,bHist,bEffdtSub,bDate,bYN,bUCase,bImmed, re)
{
if(sDefMsg_win0!="")
{
  PSshowDeferredMsg_win0();
  return false;
}

if(oChange_win0 != null)
{
  submitAction_win0(obj.form,obj.name);
  return true;
}

if(obj.PSsaveclass) obj.className = obj.PSsaveclass;

if(bUCase=='Y')
 {
 var temp = obj;
 if(obj.type == "select-one") temp = obj.options[obj.selectedIndex];
 temp.value=temp.value.toUpperCase();
 }

var bErr = false; 

if(sType!='') bErr = checkType_win0(obj, sType, re);
if(!bErr && bHist=='Y') bErr = historyUpdated_win0(obj);
if(!bErr && bEffdtSub=='Y') bErr =subscrollUpdated_win0(obj);
if(!bErr && bDate=='Y') bErr = isReasonableDate_win0(obj);
if(!bErr && bYN=='Y') bErr = isYN_win0(obj);

if (bErr && bImmed=='Y') PSshowDeferredMsg_win0();

return true;
}

function isChanged(obj)
{
if (obj.type == "checkbox"  || obj.type == "radio")
  return (obj.checked != obj.defaultChecked);
else if (obj.type == "select-one")
       {
       if (obj.id == "#ICDataLang")
            return false;
       else
            return !(obj.options[obj.selectedIndex].defaultSelected);
       }
else if (obj.type == "hidden" || obj.type == "button")
 return false;
else
  return (obj.value != obj.defaultValue);
}

function resetChange(obj)
{
if (obj.type == "checkbox")
  obj.checked = obj.defaultChecked;
else if (obj.type == "radio")
  {
  var arr = obj.form[obj.name];
  for (var i = 0; i < arr.length; ++i)
      arr[i].checked = arr[i].defaultChecked;
  }       
else if (obj.type == "select-one")
  {
  var arr = obj.options;
  for (var i = 0; i < arr.length; ++i)
    arr[i].selected = arr[i].defaultSelected;
  }       
else
  obj.value = obj.defaultValue;
}


function historyUpdated_win0(obj)
{
if (!isChanged(obj))
   return false;

PSdeferError_win0(obj, "Cannot change current or history records unless in Correction mode.");
bReset_win0 = true;
return true;
}

function subscrollUpdated_win0(obj)
{
if (!isChanged(obj))
   return false;

PSdeferError_win0(obj, "Cannot change key field with effective dated subordinate data unless in Correction mode.");
bReset_win0 = true;
return true;
}

function isReasonableDate_win0(obj)
{
if(obj.type == "select-one")  obj = obj.options[obj.selectedIndex];
var dateval = new Date(obj.value);
var now = new Date();
var diff = new Date(Math.abs(now.getTime() - dateval.getTime()));
if (diff.getMonth > 0)
  
  PSdeferWarning_win0("Warning -- date out of range.");
return false;
}

function isYN_win0(obj)
{
var val;
if(obj.type == "select-one")
  val = obj.options[obj.selectedIndex].value;
else
  val = obj.value;
if (val != 'Y' && val != 'N')
{
  
  PSdeferError_win0(obj, "Value must either be Y for Yes or N for No.");
  return true;
}
return false;
}

function isNumOnly_win0(obj)
{
var val = obj.value;
if (val == '') return false;

if (val.search(/^ *\d* *$/) != 0)
{
  
  PSdeferError_win0(obj, "Numeric Only field format error.  Please reenter.");
  return true;
}
return false;
}

function isNumeric_win0(obj,fmt,re)
{
var val = obj.value;
if (val == '') return false;

if (val.search(re) != 0)
{
  
  PSdeferError_win0(obj, "Number field format error. Please re-enter using the proper format.  %1", fmt);
  return true;
}
return false;
}

function isTime_win0(obj,fmt)
{
var val = obj.value;
if (val == '') return false;

if (!checkTime(val,fmt))
{
  
  PSdeferError_win0(obj, "Time field format error.  Please re-enter using the proper format.");
  return true;
}
return false;
}

function isDateTime_win0(obj,fmt)
{
var val = obj.value;
if (val == '') return false;

var newval = checkDateTime(val,fmt);
if (newval == "")
{
  
  PSdeferError_win0(obj, "Datetime field format error.  Please reenter using the proper format.");
  return true;
}
obj.value = newval;
return false;
}

function isDate_win0(obj,fmt)
{
var val = obj.value;
if (val == '') return false;

var dt = getDate(val,fmt);

if (dt==null)
{
  PSdeferError_win0(obj, "The system does not understand the date you entered.");  
  return true;
}
obj.value = formatDate(dt, fmt);
return false;
}

function checkType_win0(obj,sType,re)
{
var cType = sType.substring(0, 1);
var sFmt = sType.substring(1);
switch(cType)
{
case 'N': return isNumOnly_win0(obj);
case 'S': return isNumeric_win0(obj,sFmt,re);
case 'D': return isDate_win0(obj,sFmt);
case 'T': return isTime_win0(obj,sFmt);
case 'X': return isDateTime_win0(obj,sFmt);
}
return false;
}

function getDateRegExpStr(fmt)
{
var dmy = fmt.substring(0, 3);
var sep = fmt.substring(3, 4);
var sepchars = "-/.";
var sepstr = "\\-\/\\.";
if (sepchars.indexOf(sep)==-1)
   sepstr += sep;     
var restr;

if (dmy == "DMY" || dmy == "MDY")
{
  restr = "(\\d{1,2})[";
  restr += sepstr;
  restr += "]?(\\d{1,2})[";
  restr += sepstr;
  restr += "]?(\\d{4}|\\d{2})";
}
else  // YMD
{
  restr = "(\\d{4}|\\d{2})[";
  restr += sepstr;
  restr += "]?(\\d{1,2})[";
  restr += sepstr;
  restr += "]?(\\d{1,2})";
}
return restr;
}

function getTimeRegExpStr(fmt)
{
var restr;

restr = "(\\d{1,2})([:\\.]?(\\d{1,2})([:\\.]?(\\d{1,2})(\\.\\d*)?)?)?";

if (fmt.length != 0)
  restr += " *(\\w*)"

return restr;
}

function getDate(val,fmt,cal)
{
var todaystr = "today".toUpperCase();
if (val.length > 0 && todaystr.indexOf(val.toUpperCase()) == 0) 
  return new Date();

if(cal==null)
  cal="G";
 
var re = new  RegExp("^ *" + getDateRegExpStr(fmt) + " *$");
var parts= re.exec(val);
if (parts==null)
  return null;

var dmy = fmt.substring(0, 3);
var defyr;
if (fmt.length >=7)
  defyr = parseInt(fmt.substring(5), 10);
else
  defyr = 50;
var d, m, y;
if (dmy == "DMY")
{
  d = parseInt(parts[1],10);
  m = parseInt(parts[2],10);
  y = parseInt(parts[3],10);
}
else if  (dmy == "MDY")
{
  m = parseInt(parts[1],10);
  d = parseInt(parts[2],10);
  y = parseInt(parts[3],10);
}
else
{
  y = parseInt(parts[1],10);
  m = parseInt(parts[2],10);
  d = parseInt(parts[3],10);
}
if (y<100)
{
  
  if (y<=defyr)
    y += 2000;
  else
    y += 1900;
}
--m;

if(cal=="T")
  y=y-543;

if(cal=='H')
  var dt = new HijriDate(y,m,d);
else
  var dt = new Date(y,m,d);

if(cal=="G")
{
  if (dt.getFullYear()!=y||dt.getMonth()!=m||dt.getDate()!=d)
    return null;
}

return dt;
}

function checkTime(val,fmt)
{
var re = new  RegExp("^ *" + getTimeRegExpStr(fmt) + " *$");
var parts =  re.exec(val);
if (parts==null)
  return false;

var h, m, s, ampm;
h = parseInt(parts[1],10);
if (parts.length>3)
  m = parseInt(parts[3],10);
else
  m = 0;
if (parts.length>5)
  s = parseInt(parts[5],10);
else
  s = 0;
if (parts.length>7)
  ampm = parts[7].toUpperCase();
else
  ampm = "";

if (fmt.length>0 && ampm.length>0)
{
  var i =fmt.indexOf(";");
  var am, pm;
  if (i >0)
  {
    am=fmt.substring(0,i);
    pm=fmt.substring(i+1);
    if (pm.indexOf(ampm)==0)
      h +=12;
    else if (am.indexOf(ampm)!=0)
      return false;
    --h;
   }
}
if (h<0||h>23||m>59||s>59)
  return false;
return true;

}

function checkDateTime(val,fmt)
{
var re = /^ *([^ ]*) +([^ ]*) *$/;
var parts=re.exec(val);
if (parts==null)
  return "";
var dt=parts[1];
var tm=parts[2];
var dtfmt = fmt.substring(0,4);
var tmfmt = fmt.substring(4);

var dtobj = getDate(dt,dtfmt);
if (dtobj == null)
  return "";
if (!checkTime(tm, tmfmt))
  return "";
return formatDate(dtobj, dtfmt) + " " + tm;
}