/*   Filename:  JSFunctions.js
     Purpose:   Contains javascript functions called in java server pages
                in use in the Rennie Family Tree Web pages
     Date :     August  2005
*/
/* - - - - - - - - - - - - -   REVISION HISTORY  - - - - - - - - - - - - - - -
 Date    : YYYY-MM-DD
 CR/PMR  : ########
 Release :
 Author  :
 Summary :
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
var disBkBtn=false;
var nullUrl;
var RecNum =0; // for bulk screen , (de)select all items
//////////////////////////////////
// load multiple frames at once //
//////////////////////////////////
function setFrames(newPage) {
  parent.branchFrame.document.location.href = "branch" + newPage + ".html"
  parent.mainFrame.document.location.href = newPage + ".html"
}
//
///////////////////////////
// clear branch frame    //
///////////////////////////
function clearBranch() {
  parent.branchFrame.document.location.href = "branch" + ".html"
  parent.mainFrame.document.location.href = "introduction" + ".html"
}
//
// swap images 
//
function imgSwap(name,url) {
  if (document.images) {
    document.images[name].src=url;
  }
}
// set the focus on the first editable field, cursor positioning
function setInitFocus() {
  if ( document.forms.length == 0 ) return ;
  len = document.forms[0].elements.length ;
  for ( i = 0 ; i < len ; i++ ) {
    obj = document.forms[0].elements[i] ;
    if ( obj.type == "text" && obj.name.length>1) {
      // should be a parent 'p_' or child 'c_' field
      pre = obj.name.substring(0,2) ;
      if ( pre == "p_" || pre=="c_" ) {
        obj.focus() ;
        break ;
      }
    }
  }
}

// Cookie Support Javascript functions

function extractCookieValue(val) {
  if ((endOfCookie = document.cookie.indexOf(";",val)) ==-1) {
    endOfCookie = document.cookie.length;
  }
  return unescape(document.cookie.substring(val,endOfCookie));
}

function createCookie(name,val) {
  document.cookie=name+"="+val+";";
}

function createCookieWithExpiry(name,val,date) {
  document.cookie=name+"="+val+"; expires="+date+";";
}

function createCookieNoExpiry(name,val) {
  var futureDate=new Date();
  futureDate.setUTCFullYear(futureDate.getUTCFullYear()+10);
  document.cookie = name+"="+val+"; expires="+futureDate.toUTCString()+";";

}

function deleteCookie(name) {
  var pastDate =new Date();
  pastDate.setUTCFullYear(pastDate.getUTCFullYear()-1);
  document.cookie = name+"='nothing'; expires="+pastDate.toUTCString()+";";
}

function getCookie(cookiename) {
  var numOfCookies = document.cookie.length;
  var nameOfCookie = cookiename+"=";
  var cookielength= nameOfCookie.length;
  var x=0;
  while(x<= numOfCookies) {
    var y=(x+cookielength);
    if (document.cookie.substring(x,y) == nameOfCookie)
      return (extractCookieValue(y));
    x = document.cookie.indexOf(" ",x)+1;
    if (x==0)
      break;
  }
  return null;
}

function cookiesEnabled() {
  var retVal;
  createCookie('testCookie','Y');
  if (getCookie('testCookie') == 'Y') {
    retVal = true;
  } else {
    retVal = false;
  }
  deleteCookie('testCookie');
  return retVal;
}

// END OF Cookie Support Javascript functions


function writeString(outputObject,englishString,frenchString) {
  if (getCookie("userLanguage")=="F") {
    outputObject.write(frenchString);
  } else {
    outputObject.write(englishString);
  }

}

function getBrowser() {
  return navigator.appName;
}

function getVersion() {
  return navigator.appVersion;
}


//////////// calender functions for list date fields, should be merged with calendar functions later  ////////////////

var targetfield ;
function putcal_ex(thefield,userLanguage,width,height) {
  targetfield = thefield ;
  calwin = open("","calwin","width="+width+",height="+height+",resizable=yes");
  tmpDay=new Date();
  year = tmpDay.getFullYear() ;
  month = tmpDay.getMonth()+1 ;

  tyear = eval( targetfield + "__YYYY.value" ) ;
  tmonth = eval( targetfield + "__MM.value") ;
  if ( tyear >0 && tyear <= 9999 ) year = tyear ;
  if ( tmonth > 0 && tmonth <= 12 ) month = tmonth ;
  calccal_ex(calwin,thefield,month,year,userLanguage);
  calwin.document.close();
}

function set_field(year, month, day ) {
  eval( targetfield + "__YYYY.value = '" + year + "'") ;
  eval( targetfield + "__MM.value = '" + month + "'") ;
  eval( targetfield + "__DD.value = '" + day + "'") ;
}

function calccal_ex(targetwin,targetfield,month,year,userLanguage) {
  var monthname = new Array(12);
  if (userLanguage=="en") {
    monthname[0] = "January";
    monthname[1] = "February";
    monthname[2] = "March";
    monthname[3] = "April";
    monthname[4] = "May";
    monthname[5] = "June";
    monthname[6] = "July";
    monthname[7] = "August";
    monthname[8] = "September";
    monthname[9] = "October";
    monthname[10] = "November";
    monthname[11] = "December";
  } else {
    monthname[0] = "Janvier";
    monthname[1] = "F&eacute;vrier";
    monthname[2] = "Mars";
    monthname[3] = "Avril";
    monthname[4] = "Mai";
    monthname[5] = "Juin";
    monthname[6] = "Juillet";
    monthname[7] = "Ao&ucirc;t";
    monthname[8] = "Septembre";
    monthname[9] = "Octobre";
    monthname[10] = "Novembre";
    monthname[11] = "D&eacute;cembre";
  }

  var endid = calclastid(eval(month),eval(year));
  mystr = month + "/01/" + year;
  mydate = new Date(mystr);
  firstid = mydate.getDay();

  var cnt = 0;

  var days = new Array(6);
  for (var i=0; i<6; i++)
    days[i] = new Array(7);

  for (var r=0; r<6; r++)
  {
    for (var c=0; c<7; c++)
    {
      if ((cnt==0) && (c!=firstid))
        continue;
      cnt++;
      days[r][c] = cnt;
      if (cnt==endid)
        break;
    }
    if (cnt==endid)
      break;
  }
  targetwin.document.open();
  targetwin.document.write('<BODY BGCOLOR=BEIGE><table cellspacing="0" cellpadding="1"><TR VALIGN=TOP><FORM>');
  if (userLanguage=="en") {
  targetwin.document.write('<td colspan="7" align="CENTER"><INPUT TYPE=BUTTON NAME=clearButton VALUE="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clear Field&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" onClick="window.close();opener.set_field(\'\',\'\',\'\') '+
        ';"></td></TR><TR VALIGN=TOP>');
  } else {
  targetwin.document.write('<td colspan="7" align="CENTER"><INPUT TYPE=BUTTON NAME=clearButton VALUE="&nbsp;&nbsp;Effacer le champ&nbsp;&nbsp;" onClick="window.close();'+
        targetfield+'.value=\'\';'+nextAction+';"></td></TR><TR VALIGN=TOP>');
  }
  var prevyear = eval(year) - 1;
  targetwin.document.writeln("<TD><INPUT TYPE=BUTTON NAME=prevyearbutton VALUE='<<'"+
   " onclick='opener.calccal_ex(opener.calwin,\""+targetfield+"\","+month+","+prevyear+",\""+userLanguage+"\",\""+"\");'></TD>\n");

  var prevmonth = calcprevmonth(month);
  var prevmonthyear = calcprevyear(month,year);
  targetwin.document.writeln("<TD><INPUT TYPE=BUTTON NAME=prevmonthbutton VALUE='&nbsp;<&nbsp;'"+
   " onclick='opener.calccal_ex(opener.calwin,\""+targetfield+"\","+prevmonth+","+prevmonthyear+",\""+userLanguage+"\",\""+"\");'></TD>");

  targetwin.document.writeln("<TD COLSPAN=3 ALIGN=CENTER>");
  var index = eval(month) - 1;
  targetwin.document.writeln("<B>" + monthname[index] + "<br>" + year + "</B></TD>");

  var nextmonth = calcnextmonth(month);
  var nextmonthyear = calcnextyear(month,year);
  targetwin.document.writeln("<TD><INPUT TYPE=BUTTON NAME=nextmonthbutton VALUE='&nbsp;>&nbsp;'"+
   " onclick='opener.calccal_ex(opener.calwin,\""+targetfield+"\","+nextmonth+","+nextmonthyear+",\""+userLanguage+"\",\""+"\");'></TD>");

  var nextyear = eval(year) + 1;
  targetwin.document.writeln("<TD><INPUT TYPE=BUTTON NAME=nextyearbutton VALUE='>>'"+
   " onclick='opener.calccal_ex(opener.calwin,\""+targetfield+"\","+month+","+nextyear+",\""+userLanguage+"\",\""+"\");'></TD>");

  targetwin.document.writeln("</TR><TR>");

  if (userLanguage=="en") {
    targetwin.document.write("<TD>Su</TD>");
    targetwin.document.write("<TD>Mo</TD>");
    targetwin.document.write("<TD>Tu</TD>");
    targetwin.document.write("<TD>We</TD>");
    targetwin.document.write("<TD>Th</TD>");
    targetwin.document.write("<TD>Fr</TD>");
    targetwin.document.write("<TD>Sa</TD>"); }
  else  {
    targetwin.document.write("<TD>Di</TD>");
    targetwin.document.write("<TD>Lu</TD>");
    targetwin.document.write("<TD>Ma</TD>");
    targetwin.document.write("<TD>Me</TD>");
    targetwin.document.write("<TD>Je</TD>");
    targetwin.document.write("<TD>Ve</TD>");
    targetwin.document.write("<TD>Sa</TD>");
  }

  targetwin.document.write("</TR>");

  targetwin.document.writeln("<TR><TD COLSPAN=7><HR NOSHADE></TD></TR>");

  if (eval(month)<10) month='0'+eval(month);
  var today;
//  var today = new Date();
//  var thisyear = today.getYear() + 1900;
  var selectedyear = eval(year);
  var myname;
  var conditionalpadder = "";
  for(r=0; r<6; r++)
  {
   targetwin.document.write("<TR>");
   for(c=0; c<7; c++)
   {
    targetwin.document.write("<TD>");
    if(days[r][c] != null) {
      if (days[r][c] < 10) {
        conditionalpadder = "&nbsp;"
    myname='0'+days[r][c];
    } else {
      myname=days[r][c];
        conditionalpadder = "";
    }
    targetwin.document.writeln("<INPUT TYPE=BUTTON NAME="+myname+
        " VALUE=" + conditionalpadder + days[r][c] + conditionalpadder +
        ' onClick="window.close();opener.set_field(\'' +
        selectedyear+ "','" + month + "','" + myname + "');\">"
        );
    }
    targetwin.document.write("</TD>");
   }
   targetwin.document.write("</TR>");
  }
  targetwin.document.write("</FORM></TABLE></body>");
  targetwin.document.close();
  targetwin.focus();
}


///////////  end of calendar functions for list date fields   /////////////

////Calendar functions/////
function checkFormat(value,mask) {
  var num='0123456789';
  if (mask.length>value.length) {
    return false;
  } else {
    var maskchar;
        var valchar;
        for (var i=0;i<value.length;i++) {
          maskchar=mask.substring(i,i+1);
          valchar=value.substring(i,i+1);
          if (maskchar=='9') {
            if (num.indexOf(valchar,0) ==-1) {
              return false;
            }
          } else if (maskchar=='x') {
            if (num.indexOf(valchar,0) !=-1) {
              return false;
            }
          } else if (maskchar!=valchar) {
            return false;
          }
        }
  }
  return true;
}

var calwin=null;

function putcal(field,thefield,userLanguage,width,height,nextAction) {
  calwin = open("","calwin","width="+width+",height="+height+",resizable=yes");
  tmpDay=new Date();
  if (checkFormat(field.value,"9999-99-99")!=true) {
  calccal(calwin,thefield,tmpDay.getMonth()+1,tmpDay.getFullYear(),userLanguage,nextAction);
  }else {
  var tmpyear=field.value.substring(0,4);
    var tmpmonth=field.value.substring(5,7);
  tmp=eval(tmpmonth);
  if ((tmp<1)||(tmp>12)) tmpmonth=tmpDay.getMonth()+1;
    calccal(calwin,thefield,tmpmonth,tmpyear,userLanguage,nextAction);
  }
  calwin.document.close();
}

function calccal(targetwin,targetfield,month,year,userLanguage,nextAction) {
  var monthname = new Array(12);
  if (userLanguage=="en") {
    monthname[0] = "January";
    monthname[1] = "February";
    monthname[2] = "March";
    monthname[3] = "April";
    monthname[4] = "May";
    monthname[5] = "June";
    monthname[6] = "July";
    monthname[7] = "August";
    monthname[8] = "September";
    monthname[9] = "October";
    monthname[10] = "November";
    monthname[11] = "December";
  } else {
    monthname[0] = "Janvier";
    monthname[1] = "F&eacute;vrier";
    monthname[2] = "Mars";
    monthname[3] = "Avril";
    monthname[4] = "Mai";
    monthname[5] = "Juin";
    monthname[6] = "Juillet";
    monthname[7] = "Ao&ucirc;t";
    monthname[8] = "Septembre";
    monthname[9] = "Octobre";
    monthname[10] = "Novembre";
    monthname[11] = "D&eacute;cembre";
  }

  var endid = calclastid(eval(month),eval(year));
  mystr = month + "/01/" + year;
  mydate = new Date(mystr);
  firstid = mydate.getDay();

  var cnt = 0;

  var days = new Array(6);
  for (var i=0; i<6; i++)
    days[i] = new Array(7);

  for (var r=0; r<6; r++)
  {
    for (var c=0; c<7; c++)
    {
      if ((cnt==0) && (c!=firstid))
        continue;
      cnt++;
      days[r][c] = cnt;
      if (cnt==endid)
        break;
    }
    if (cnt==endid)
      break;
  }
  targetwin.document.open();
  targetwin.document.write('<BODY BGCOLOR=BEIGE><table cellspacing="0" cellpadding="1"><TR VALIGN=TOP><FORM>');
  if (typeof nextAction == "undefined") {
    nextAction = "";
  }
  if (userLanguage=="en") {
  targetwin.document.write('<td colspan="7" align="CENTER"><INPUT TYPE=BUTTON NAME=clearButton VALUE="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clear Field&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" onClick="window.close();'+
        targetfield+'.value=\'\';'+nextAction+';"></td></TR><TR VALIGN=TOP>');
  } else {
  targetwin.document.write('<td colspan="7" align="CENTER"><INPUT TYPE=BUTTON NAME=clearButton VALUE="&nbsp;&nbsp;Effacer le champ&nbsp;&nbsp;" onClick="window.close();'+
        targetfield+'.value=\'\';'+nextAction+';"></td></TR><TR VALIGN=TOP>');
  }
  var prevyear = eval(year) - 1;
  targetwin.document.writeln("<TD><INPUT TYPE=BUTTON NAME=prevyearbutton VALUE='<<'"+
   " onclick='opener.calccal(opener.calwin,\""+targetfield+"\","+month+","+prevyear+",\""+userLanguage+"\",\""+nextAction+"\");'></TD>\n");

  var prevmonth = calcprevmonth(month);
  var prevmonthyear = calcprevyear(month,year);
  targetwin.document.writeln("<TD><INPUT TYPE=BUTTON NAME=prevmonthbutton VALUE='&nbsp;<&nbsp;'"+
   " onclick='opener.calccal(opener.calwin,\""+targetfield+"\","+prevmonth+","+prevmonthyear+",\""+userLanguage+"\",\""+nextAction+"\");'></TD>");

  targetwin.document.writeln("<TD COLSPAN=3 ALIGN=CENTER>");
  var index = eval(month) - 1;
  targetwin.document.writeln("<B>" + monthname[index] + "<br>" + year + "</B></TD>");

  var nextmonth = calcnextmonth(month);
  var nextmonthyear = calcnextyear(month,year);
  targetwin.document.writeln("<TD><INPUT TYPE=BUTTON NAME=nextmonthbutton VALUE='&nbsp;>&nbsp;'"+
   " onclick='opener.calccal(opener.calwin,\""+targetfield+"\","+nextmonth+","+nextmonthyear+",\""+userLanguage+"\",\""+nextAction+"\");'></TD>");

  var nextyear = eval(year) + 1;
  targetwin.document.writeln("<TD><INPUT TYPE=BUTTON NAME=nextyearbutton VALUE='>>'"+
   " onclick='opener.calccal(opener.calwin,\""+targetfield+"\","+month+","+nextyear+",\""+userLanguage+"\",\""+nextAction+"\");'></TD>");

  targetwin.document.writeln("</TR><TR>");

  if (userLanguage=="en") {
    targetwin.document.write("<TD>Su</TD>");
    targetwin.document.write("<TD>Mo</TD>");
    targetwin.document.write("<TD>Tu</TD>");
    targetwin.document.write("<TD>We</TD>");
    targetwin.document.write("<TD>Th</TD>");
    targetwin.document.write("<TD>Fr</TD>");
    targetwin.document.write("<TD>Sa</TD>"); }
  else  {
    targetwin.document.write("<TD>Di</TD>");
    targetwin.document.write("<TD>Lu</TD>");
    targetwin.document.write("<TD>Ma</TD>");
    targetwin.document.write("<TD>Me</TD>");
    targetwin.document.write("<TD>Je</TD>");
    targetwin.document.write("<TD>Ve</TD>");
    targetwin.document.write("<TD>Sa</TD>");
  }

  targetwin.document.write("</TR>");

  targetwin.document.writeln("<TR><TD COLSPAN=7><HR NOSHADE></TD></TR>");

  if (eval(month)<10) month='0'+eval(month);
  var today;
//  var today = new Date();
//  var thisyear = today.getYear() + 1900;
  var selectedyear = eval(year);
  var myname;
  var conditionalpadder = "";
  for(r=0; r<6; r++)
  {
   targetwin.document.write("<TR>");
   for(c=0; c<7; c++)
   {
    targetwin.document.write("<TD>");
    if(days[r][c] != null) {
      if (days[r][c] < 10) {
        conditionalpadder = "&nbsp;"
    myname='0'+days[r][c];
    } else {
      myname=days[r][c];
        conditionalpadder = "";
    }
    if (nextAction==null) {
      nextAction="";
    }
    if (typeof nextAction == "undefined") {
      nextAction="";
    }
      targetwin.document.writeln("<INPUT TYPE=BUTTON NAME="+myname+
        " VALUE=" + conditionalpadder + days[r][c] + conditionalpadder +
        " onClick='window.close();" +
        targetfield+".value="+selectedyear+";"+
    targetfield+".value+=\"-\";"+
        targetfield+".value+=\""+month+"\";" +
    targetfield+".value+=\"-\";"+
    targetfield+".value+=\""+myname+"\";"+
    targetfield+".focus();"+
    nextAction+"'>"
    );
    }
    targetwin.document.write("</TD>");
   }
   targetwin.document.write("</TR>");
  }
  targetwin.document.write("</FORM></TABLE></body>");
  targetwin.document.close();
  targetwin.focus();
}

function calclastid(month,year) {
  if ((month==2) && ((year%4)==0))
    return 29;

  if ((month==2) && ((year%4)!=0))
    return 28;

  if ((month==1) || (month == 3) || (month == 5) || (month == 7) ||
      (month==8) || (month == 10) || (month ==12))
    return 31;

  return 30;
}

function calcnextmonth(month) {
  if (month=="12")
    return "1";
  else
    return (eval(month)+1);
}

function calcnextyear(month,year) {
  if (month=="12")
    return (eval(year)+1);
  else
    return (year);
}



function calcprevmonth(month){
  if (month=="01")
    return "12";
  else
    return (eval(month)-1);
}


function calcprevyear(month,year) {
  if (month=="01")
    return (eval(year)-1);
  else
    return (year);
}



function equals(str1, str2) {
  var thisChar;
  var thatChar;
  if (str1.length!=str2.length) return false;
  for (var i=0;i<str1.length;i++) {
    thisChar = str1.substring(i,i+1);
    thatChar = str2.substring(i,i+1);
    if (thisChar != thatChar) return false;
  }
  return true;
}


function gm(num) {
 var mydate = new Date();
 mydate.setDate(1);
 mydate.setMonth(num-1);
 var datestr = "" + mydate;
 return datestr.substring(4,7);
}

function gy(num) {
  var mydate = new Date();
  return (eval(mydate.getFullYear()) - 4 + num);
}

function ud(mon) {
  var i = mon.selectedIndex;

  if(mon.options[i].value == "2") {
    document.myform.id.options[30] = null;
    document.myform.id.options[29] = null;
    var j = document.myform.year.selectedIndex;
    var year = eval(document.myform.year.options[j].value);
    if ( ((year%400)==0) || (((year%100)!=0) && ((year%4)==0)) ) {
      if (document.myform.id.options[28] == null) {
        document.myform.id.options[28] = new Option("29");
        document.myform.id.options[28].value = "29";
      }
    } else {
      document.myform.id.options[28] = null;
    }

  }

  if(mon.options[i].value == "1" ||
     mon.options[i].value == "3" ||
     mon.options[i].value == "5" ||
     mon.options[i].value == "7" ||
     mon.options[i].value == "8" ||
     mon.options[i].value == "10" ||
     mon.options[i].value == "12")
  {
    if (document.myform.id.options[28] == null) {
      document.myform.id.options[28] = new Option("29");
      document.myform.id.options[28].value = "29";
    }
    if (document.myform.id.options[29] == null) {
      document.myform.id.options[29] = new Option("30");
      document.myform.id.options[29].value = "30";
    }
    if (document.myform.id.options[30] == null) {
      document.myform.id.options[30] = new Option("31");
      document.myform.id.options[30].value = "31";
    }
  }

  if(mon.options[i].value == "4" ||
     mon.options[i].value == "6" ||
     mon.options[i].value == "9" ||
     mon.options[i].value == "11")
  {
    if (document.myform.id.options[28] == null) {
      document.myform.id.options[28] = new Option("29");
      document.myform.id.options[28].value = "29";
    }
    if (document.myform.id.options[29] == null) {
      document.myform.id.options[29] = new Option("30");
      document.myform.id.options[29].value = "30";
    }
    document.myform.id.options[30] = null;
  }

  if (document.myform.id.selectedIndex == -1)
    document.myform.id.selectedIndex = 0;

}
/////START Form Submit Actions///////////

function setAction(_actionValue, _param1, _param2, _param3, _param4) {
  setActionAll('',_actionValue,_param1, _param2, _param3, _param4);
}

function setActionCfm(_confirmMessage,_actionValue,_param1, _param2, _param3, _param4) {
  setActionAll(_confirmMessage,_actionValue,_param1, _param2, _param3, _param4);
}

function setGoto(_screenHandlerName, _screenHandlerModule, _isCheckModified, _invokingAction) {
  setActionAll('','goto',_screenHandlerName,_screenHandlerModule,_isCheckModified,_invokingAction);
}

function setGotoCfm(_confirmMessage,_screenHandlerName, _screenHandlerModule, _isCheckModified, _invokingAction) {
  setActionAll(_confirmMessage,'goto',_screenHandlerName,_screenHandlerModule,_isCheckModified,_invokingAction);
}

function setJump(_screenHandlerName, _screenHandlerModule, _isCheckModified, _invokingAction) {
  setActionAll('','jump',_screenHandlerName,_screenHandlerModule,_isCheckModified,_invokingAction);
}

function setJumpCfm(_confirmMessage,_screenHandlerName, _screenHandlerModule, _isCheckModified, _invokingAction) {
  setActionAll(_confirmMessage,'jump',_screenHandlerName,_screenHandlerModule,_isCheckModified,_invokingAction);
}

function setModJump(_screenHandlerName, _screenHandlerModule){
  setActionAll('','modjump',_screenHandlerName,_screenHandlerModule,'','');
}

function setModGoto(_screenHandlerName, _screenHandlerModule,_isCheckModified){
  setActionAll('','modgoto',_screenHandlerName,_screenHandlerModule,_isCheckModified,'');
}

function doEaa(_isCheckModified,_invokingAction) {
  setActionAll('','goto','DI208','SM',_isCheckModified,_invokingAction);
}

function doEaaCfm(_confirmMessage,_isCheckModified,_invokingAction) {
  setActionAll(_confirmMessage,'goto','DI208','SM',_isCheckModified,_invokingAction);
}

function setActionAll(_confirmMessage,_actionValue, _param1, _param2, _param3, _param4) {
  if (waitingForSubmit) {
    if(userLanguage == 'en'){
      alert('Please Wait...');
    }else{
      alert('Patientez...');
    }
    return;
  }
  if (disBkBtn&&_actionValue!='login') {
    disableBackButton();
  }

  if(_confirmMessage!=''){
    if (!confirm(_confirmMessage)) return;
  }
  waitingForSubmit = true;
  document.form.cdfsaction.value=_actionValue;
  //document.form.elements[2].value = _actionValue ;
  if (_param1==null){
    document.form.param1.value='';
  }else{
    document.form.param1.value=_param1;
  }
  if (_param2==null){
    document.form.param2.value='';
  }else{
    document.form.param2.value=_param2;
  }
  if (_param3==null){
    document.form.param3.value='';
  }else{
    document.form.param3.value=_param3;
  }
  if (_param4==null){
    document.form.param4.value='';
  }else{
    document.form.param4.value=_param4;
  }
  hideMenu('mainMenu');
  activateMenu('pleaseWait');
  parent.timerframe.startTimer();
  document.form.submit();
}

function disableBackButton(){
  parent.dataframe.window.location.replace(nullUrl);
}

// alert message for function not available for user, could pass a msgid to override the default msg
function functionDisabledAlert() {
  if ( arguments.length > 0 ) {
    msgid = arguments[0] ;
    msgstr= "" ;
    if ( msgid == 75504 ) {
      msgstr = userLanguage=="en" ? "Help is not available" :"L'aide n'est pas disponible." ;
    } else if ( msgid == 75505 )  {
      msgstr = userLanguage=="en" ? "Search is not available" :"La recherche n'est pas disponible." ;
    } else if ( msgid == 75500 )  {
      msgstr = userLanguage=="en" ? "Select a module and object before pressing Go or Jump." :"Sélectionnez un module et objet avant appuyer Aller ou Sauter." ;
    }
    // if the msgid doesn't exist, will display msgid only
    alert(msgid + " " + msgstr ) ;
    return ;
  }

  if (userLanguage=="en") {
    alert("That function is not currently available.");
  }
  else {
    alert("Cette fonction n'est pas disponible présentement.") ;
  }
}

/////Start ModuleJumper Actions///
// goto another base screen
function GoScreen(location){
  newLocation = location.options[location.selectedIndex].value ;
  if(newLocation.length!=5){
    functionDisabledAlert(75500) ;
  }  else{
    setModGoto(newLocation, "exp","1");
  }
}
// jump to another base screen
function JumpScreen(location){
  newLocation = location.options[location.selectedIndex].value
  if(newLocation.length!=5){
      functionDisabledAlert(75500) ;
  }  else{
    setModJump(newLocation, "exp");
  }
}
//////Start Menu Actions////////////////////////////////////////
agent = navigator.userAgent.toLowerCase();
major = parseInt(navigator.appVersion);
var isIE5 = ((agent.indexOf("msie") > -1) && (document.compatMode != 'CSS1Compat'));
var isIE6 = ((agent.indexOf("msie") > -1) && (document.compatMode == 'CSS1Compat'));
var isNS4 = ((agent.indexOf('mozilla') > -1) && (agent.indexOf('spoofer') == -1) &&
            (agent.indexOf('compatible') ==  -1) && (major == 4));
var isNS6 = ((agent.indexOf('mozilla') > -1) && (agent.indexOf('spoofer') == -1) &&
            (agent.indexOf('compatible') ==  -1) && (major >= 5));
var activeMenu = 0;
var mouseX = 0;
var mouseY = 0;
var waitingForSubmit = false;

function newPos(e) {
  if (isNS6 || isNS4) {
    mouseX = e.pageX;
    mouseY = e.pageY;
  } else {
    mouseX = event.clientX;
    mouseY = event.clientY;
  }
}

if (isNS4) {
  document.captureEvents(Event.MOUSEMOVE);
}
document.onmousemove=newPos;

function activateMainMenu() {
  if (isNS4) {
    document["mainMenu"].top = mouseY;
  }else if (isNS6){
    document.getElementById("mainMenu").style.top = mouseY+"px";
  }else {
    document.all["mainMenu"].style.top = document.body.scrollTop + mouseY;
  }
  showMenu("mainMenu");
}

function activateMenu(menuLayerRef) {
  if (activeMenu != menuLayerRef) {
    if (activeMenu) {
      hideMenu(activeMenu);
    }
    activeMenu = menuLayerRef;
    if (isNS4) {
      if (window.pageYOffset >=140){
        document[menuLayerRef].top = window.pageYOffset;
      } else {
        document[menuLayerRef].top = 140;
      }
      document[menuLayerRef].clip.height = screen.height;
      document[menuLayerRef].height = screen.height;
    } else if (isNS6) {
      if (window.pageYOffset >=140){
        document.getElementById(menuLayerRef).style.top = window.pageYOffset+"px";
      } else {
        document.getElementById(menuLayerRef).style.top = 140+"px";
      }
      document.getElementById(menuLayerRef).style.clip.height = screen.height+"px";
      document.getElementById(menuLayerRef).style.height = screen.height+"px";
    } else {
      if (document.body.scrollTop >=140){
        document.all[menuLayerRef].style.top = document.body.scrollTop;
      } else {
        document.all[menuLayerRef].style.top = 140;
      }
      document.all[menuLayerRef].style.clip.height = screen.height;
      document.all[menuLayerRef].style.height = screen.height;
    }
    showMenu(menuLayerRef)
  }
}

function deactivatePopup(menuLayerRef) {
  hideMenu(menuLayerRef);
}

function showMenu(layerID) {
  if (isNS6) {
      eval('document.getElementById("'+layerID+'").style.visibility = "visible"');
  } else if (isNS4) {
      eval('document["'+layerID+'"].visibility = "visible"');
  } else {
      eval('document.all["'+layerID+'"].style.visibility = "visible"');
  }
}

function hideMenu(layerID) {
  if (isNS6) {
      eval('document.getElementById("'+layerID+'").style.visibility = "hidden"');
  } else if (isNS4) {
      eval('document["'+layerID+'"].visibility = "hidden"');
  } else {
      eval('document.all["'+layerID+'"].style.visibility = "hidden"');
  }
  if(layerID!='mainMenu'){
    showMenu('mainMenu'); // Shows the Main Menu if you close a sub menu. - Rob
  }
}

// check if there's a menu active
function turnOff() {
  if (activeMenu && !waitingForSubmit) {
    hideMenu(activeMenu);
    activeMenu = 0;
  }
}

// kills menu on clickup
function initLayers() {
  if (isNS4) {
    document.captureEvents(Event.MOUSEUP);
  }
  document.onmouseup = turnOff;
}


/*PMR-1308582 It seems Netscape has fixed the bug with 4.61 and it does a reload automatically
  whenever resize occurs. So the following is removed.
// Work-around Netscape resize bug
if (isNS4) {
  origWidth = innerWidth;
  origHeight = innerHeight;
}

function reDo() {
  if (innerWidth != origWidth || innerHeight != origHeight) {
//    alert("resizing");
    parent.visualframe.window.location.reload();
//    location.reload();
  }
}

if (isNS4) {
  document.captureEvents(Event.RESIZE);
  onresize = reDo;
}
*/


setTimeout("initLayers()", 500);

function setupMenuClickSpace() {
  if (isNS4) {
    document["clickSpace"].clip.width = 150;
    document["clickSpace"].width = 150;
    document["clickSpace"].clip.height = document.height;
    document["clickSpace"].height = document.height;
//    document["clickSpace"].top = 50;
    document["clickSpace"].captureEvents(Event.MOUSEDOWN);
    document["clickSpace"].onmousedown = activateMainMenu;
    document["mainMenu"].top = window.pageYOffset + 195;
  } else if (isNS6) {
    document.getElementById("clickSpace").style.clip.width = 150+"px";
    document.getElementById("clickSpace").style.width = 150+"px";
    document.getElementById("clickSpace").style.clip.height = document.height+"px";
    document.getElementById("clickSpace").style.height = document.height+"px";
//    document.getElementById("clickSpace").style.top = 50+"px";
    document.getElementById("clickSpace").addEventListener("mousedown",activateMainMenu,false);
    document.getElementById('mainMenu').style.top = "195px";
  } else if (isIE6) {
    document.all["clickSpace"].style.width = 150;
    document.all["clickSpace"].style.clip.width = 150;
    document.all["clickSpace"].style.clip.height = document.documentElement.scrollHeight;
    document.all["clickSpace"].style.height = document.documentElement.scrollHeight;
//    document.all["clickSpace"].style.top = 50;
//    document.all["mainMenu"].style.pixelTop = document.documentElement.scrollTop + 195;
    document.all["mainMenu"].style.top = document.documentElement.scrollTop + 195;
  } else {
    document.all["clickSpace"].style.width = 150;
    document.all["clickSpace"].style.clip.width = 150;
    document.all["clickSpace"].style.clip.height = document.body.scrollHeight;
    document.all["clickSpace"].style.height = document.body.scrollHeight;
//    document.all["clickSpace"].style.top = 50;
//    document.all["mainMenu"].style.pixelTop = document.body.scrollTop + 195;
    document.all["mainMenu"].style.top = document.body.scrollTop + 195;
  }
  showMenu("clickSpace");
  showMenu("mainMenu");

}

/////Field Edits functions.///
function checkNumericField(field, fieldLength, fractionDigitsAllowed,isSignAllowed) {
  //trim spaces;
  field.value=field.value.replace(/^\s*/, '').replace(/\s*$/, '');
  //remove leading zeros
  for (i = 0;  i < field.value.length;  i++){
    if(field.value.charAt(i)!='0')
      break;
  }
  if (i>0) field.value=field.value.substring(i,field.value.length);

  if (isNumericFieldValid(field, fieldLength, fractionDigitsAllowed, isSignAllowed))  {
    return true;
  }else {
    field.select();
    field.focus();
    return false;
  }
}

function isNumericFieldValid(field, fieldLength, fractionDigitsAllowed,isSignAllowed) {
// check if the field is a valid numeric field
  var charsAllowed = "0123456789";
  if (fractionDigitsAllowed>0) charsAllowed=charsAllowed+'.';
  var isValid = true;
  var decPoints = 0;
  var fractionDigits=0;
  var integerDigits=0;
  var signPresent=false;

  //Move the sign to the front if it is at the end and sign is allowed.
  if (field.value.length >1){
    ch = field.value.charAt(field.value.length-1);
    if (ch=='+'||ch=='-') field.value=ch+field.value.substring(0,field.value.length-1);
  }

  for (i = 0;  i < field.value.length;  i++){
    ch = field.value.charAt(i);
    if (ch=='+'|| ch=='-'){
      if (i==0){
        signPresent=true;
      }else{
        isValid=false;
        break;
      }
      continue;
    }

    if(charsAllowed.indexOf(ch)<0){
      isValid = false;
      break;
    }

    if (ch=='.') {
      decPoints++;
      continue;
    }
    if(decPoints>0) fractionDigits++;
    else integerDigits++;
  }

  if (!isValid||decPoints>1||
      (integerDigits==0 && fractionDigits==0 && field.value.length!=0)){
    if(userLanguage == 'en'){
      alert('75509 Invalid numeric value ');
    }else{
      alert('75509 Valeure numérique non valide');
    }
    return false;
  }

  if (signPresent && !isSignAllowed){
    if(userLanguage == 'en'){
      alert('75509 Invalid numeric value ');
    }else{
      alert('75509 Valeur numérique non valide');
    }
    return false;
  }

  var integerDigitsAllowed;
  if (fractionDigitsAllowed>0)
    integerDigitsAllowed= fieldLength-fractionDigitsAllowed-1;
  else
    integerDigitsAllowed=fieldLength;

  if (isSignAllowed)  integerDigitsAllowed--;

  if (integerDigits>integerDigitsAllowed){
    if(userLanguage == 'en'){
      alert('75507 Number of digits before the decimal cannot exceed '+ integerDigitsAllowed);
    }else{
      alert('75507 Nombre de chiffre placé avant la décimale ne doit pas excéder '+ integerDigitsAllowed);
    }
    return false;
  }

  if (fractionDigits>fractionDigitsAllowed){
    if(userLanguage == 'en'){
      alert('75508 Number of digits after the decimal cannot exceed '+ fractionDigitsAllowed);
    }else{
      alert('75508 Nombre de chiffre placé après la décimale ne doit pas excéder '+ fractionDigitsAllowed);
    }
    return false;
  }

  return true;
}

function checkDateField(dateField){
  if(isDateValid(dateField)){
    return true;
  }else{
    if(userLanguage == 'en'){
      alert('75510 The format for a date is YYYY-MM-DD');
    }else{
      alert('75510 Le format pour la date est AAAA-MM-JJ');
    }
    dateField.select();
    dateField.focus();
  }
}

function isDateValid(field){
  var checkstr = "0123456789";
  var dateTemp = "";
  var seperator = "-";
  var day='';
  var month='';
  var year='';
  var leap = 0;
  var i;

  dateValue = field.value;
  if (dateValue.length==0) return true;

  // get the year. It is assmed the year is the first 4 numeric chars or a delimiter is met
  for (i = 0; i < dateValue.length; i++) {
    if (checkstr.indexOf(dateValue.substr(i,1)) >= 0) {
      if (year.length <4) year = year + dateValue.substr(i,1);
      else break;
    }else break;
  }

  if (year.length!=4) return false;
  if (year == 0) return false;

  // get the month. It is assmed the month is the next 2 numeric chars or a delimiter is met
  for (; i < dateValue.length; i++) { //skip the delimiter if any
    if (checkstr.indexOf(dateValue.substr(i,1)) >= 0) {
      break;
    }
  }

  for (; i < dateValue.length; i++) {
    if (checkstr.indexOf(dateValue.substr(i,1)) >= 0) {
      if (month.length <2) month = month + dateValue.substr(i,1);
      else break;
    }else break;
  }

  if (month.length==0) return false;
  if (month.length!=1 && month.length!=2) return false;
  if (month.length==1) month= '0'+month;
  if ((month < 1) || (month > 12)) return false;

  // get the day. It is assmed the day is the next 2 numeric chars or the end is met
  for (; i < dateValue.length; i++) {//skip the delimiter if any
    if (checkstr.indexOf(dateValue.substr(i,1)) >= 0) {
      break;
    }
  }

  for (; i < dateValue.length; i++) {
    if (checkstr.indexOf(dateValue.substr(i,1)) >= 0) {
      if (day.length <2) day = day + dateValue.substr(i,1);
      else break;
    }else break;
  }

  if (day.length==0) return false;
  if (day.length!=1 && day.length!=2) return false;
  if (day.length==1) day= '0'+day;
  //day = dateValue.substr(6,2);
  if (day < 1) return false;

  /* Validation leap-year / february / day */
  if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
    leap = 1;
  }
  if ((month == 2) && (leap == 1) && (day > 29)) return false;
  if ((month == 2) && (leap != 1) && (day > 28)) return false;

  /* Validation of other months */
  if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") ||
     (month == "08") || (month == "10") || (month == "12"))) {
    return false;
  }
  if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
    return false;
  }
  /* if 00 ist entered, no error, deleting the entry */
  if ((day == 0) && (month == 0) && (year == 00)) {
    err = 0; day = ""; month = ""; year = ""; seperator = "";
  }

  /* if no error, write the completed date to Input-Field (e.g. 2001-12-13) */
  field.value = year + seperator + month + seperator + day;
  return true;
}

function showRel() {
  document.write(" 4.2");
}



