function alphanumerals(evt) {
  evt = (evt) ? evt : event;
  var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : ((evt.which) ? evt.which : 0));
  if ((charCode > 31 && charCode < 48) ||
    (charCode > 57 && charCode < 65) ||
    (charCode > 90 && charCode < 97) ||
    charCode > 122) {
    alert("Enter alphanumerals only in this field.");
    return false;
  }
  return true;
}

function alphanumericOnly(evt) {
  evt = (evt) ? evt : event;
  var c = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : ((evt.which) ? evt.which : 0));
  if (!(c<=31||(c>=48 && c<=57)||(c>=65 && c<=90)||(c>=97&&c<=122))) {
    return false;
  }
  return true;
}

function aToggleSelection(formName,cName) {
  checkStatus(document.getElementById(formName), cName);
  if (flag==0) {
    document.forms[0].checkall.checked=false;
  } else {
    document.forms[0].checkall.checked=true;
  }
}

function autofocus(field, limit, next, evt) {
  evt = (evt) ? evt : event;
  var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : ((evt.which) ? evt.which : 0));
  if (charCode > 31 && field.value.length == limit) {
    field.form.elements[next].focus( );
  }
}

// Function Name: CHECK ALL FUNCTION
// Description: Group of function for Check All
// Required parameters: @
// Return: @
// Remarks: @
function checkAll(formId, cName, check) {
  if (check==1) {
    for (i=0,n=formId.elements.length;i<n;i++)
    if (formId.elements[i].className.indexOf(cName) !=-1)
      formId.elements[i].checked = true;
    document.forms[0].checkall.checked=true;
  }
  if (check==0) {
    for (i=0,n=formId.elements.length;i<n;i++)
    if (formId.elements[i].className.indexOf(cName) !=-1)
      formId.elements[i].checked = false;
    document.forms[0].checkall.checked=false;
  }
}

function checkIDS(that, thename, actionname, recordselect) {
  checkno=0;
  for (i=0; i<that.length; i++) {
    theitem=that.elements[i];
    if (theitem.name==thename && theitem.checked) {
      checkno++;
    }
  }

  if (recordselect==null) {
    if (checkno > 0) {
      return confirm("Are you sure you want to "+actionname+"?");
    }
    else {
      alert("Please select at least one record before proceeding!");
      return false;
    }
  }
  else {
    if (checkno>recordselect && recordselect!='') {
      alert("Please select only "+recordselect+" record(s) before proceeding!");
      return false;
    }
    else if (checkno<recordselect && recordselect!=''){
      alert("Please select at least "+recordselect+" record(s) before proceeding!");
      return false;
    }
    else {
      return confirm("Are you sure you want to "+actionname+"?");
    }
  }
}

// Function Name: checkpublic
// Description: Collapse all DIV and disable radio button if user check the public checkbox
// Required parameters: Chekcboxid
// Return: Disable the radiobutton, Collapes the DIV,
//         Check selected Radio button (when user unchecked checkbox)
// Remarks: @
function checkpublic(CheckboxID,radioButtonName) {
  var radiobuttonselection = document.forms[0][radioButtonName];
  var ISChecked = CheckboxID.checked
  //Disable the radiobutton
  for (i=0; i < radiobuttonselection.length; i++ )
  {
    radiobuttonselection[i].disabled = ISChecked
    //Collapes the DIV
    var getdivname = radiobuttonselection[i].value + 'div' ;
    var getdiv = getObject(getdivname);
    if (getdiv != null){
      getdiv.style.display = 'none';
    }
  }
}

// Function Name: checkSelectedCheckBox
// Description: check either users have select any checkbox before
// click the Deactivate button
// Required parameters: Form ID/Name, CheckBox Class Name/ hidden field ID
// Return: TRUE = assign the selectedID into a Hidden fields , FALSE = alert message
// Remarks: @
function checkSelectedCheckBox(formId,cName,hiddenFieldID,toOption) {
  var status = false;
  var formId = document.getElementById(formId);
  var SelectedID = "" ;

  for (i=0,n=formId.elements.length;i<n;i++) {
    if (formId.elements[i].className.indexOf(cName)!=-1) {
      if (formId.elements[i].checked) {
        // Assign the SelectedID into variable
        SelectedID = SelectedID + formId.elements[i].value + "," ;
        status = true;
      }
    }
  }

  if (!status) {
    alert('Please select at least one record before proceeding!');
  } else {
    if (toOption == "enroll")
    {
      var ISConfirm = confirm('Are you sure you want to enroll?');
    }
    else if (toOption == "proceed")
    {
      var ISConfirm = confirm('Are you sure you want to proceed?');
    }
    else if (toOption == "delete")
    {
      var ISConfirm = confirm('Are you sure you want to delete?');
    }
    else if (toOption == "publish")
    {
      var ISConfirm = confirm('Are you sure you want to publish?');
    }
    else if (toOption == "unpublish")
    {
      var ISConfirm = confirm('Are you sure you want to unpublish?');
    }
    else if (toOption == "update")
    {
      var ISConfirm = confirm('Are you sure you want to update?');
    }
    else
    {
      var ISConfirm = confirm('Are you sure you want to deactivate?');
    }
    //alert (ISConfirm);
    if (ISConfirm) {
      SelectedID = SelectedID.substring(0,SelectedID.length-1 );
      // Assign the SelectedID into hidden field in the Form
      // The hidden should not be fixed
      // TO DO: pass in the hidden field id in the function
      // Please change it after UAT and notice others as soon as possible.

      var HiddenSelectedID = getObject(hiddenFieldID);

      if (HiddenSelectedID != null) {
        HiddenSelectedID.value = SelectedID;
      } else {
        alert('Object not found!');
        status = false;
      }
    } else {
      status = false;
    }
  }
  return status;
}

function checkStatus(formId,cName) {
  for (i=0,n=formId.elements.length;i<n;i++) {
    if (formId.elements[i].className.indexOf(cName) !=-1) {
      if (formId.elements[i].checked==true) {
        flag=1;
      } else {
        flag=0;
        return;
      }
    }
  }
}
// # End All Function For CHECK ALL function

// that: the form object
// fieldname: the individual fieldname
function checkToggle(that, fieldname) {
  n=that.length;
  count=0;
  total=0;
  for (i=0; i<n; i++) {
    inp=that.elements[i];
    if (inp.name==fieldname) {
      total++;
      if (inp.checked==true) {
        count++;
      }
    }
  }
  if (count==total) {
    that.checkall.checked=true;
  } else {
    that.checkall.checked=false;
  }
}

function checkToggleAll(that, fieldname) {
  n=that.length;
  for (i=0; i<n; i++) {
    inp=that.elements[i];
    if (inp.name==fieldname) {
      inp.checked=that.checkall.checked;
    }
  }
}

// Clear value of the specified object.
function clearValue(obj) {
  if (obj.form) {
    if (obj.type == "select-one" || obj.type == "select-multiple") {
      for(i=0; i<obj.length; i++) {
        obj.options[i].selected = false;
      }
    } else if (obj.type == "radio" || obj.type == "checkbox") {
      var field = obj.form[obj.name];
      for(i=0; i<field.length; i++) {
        field[i].checked = false;
      }
    } else {
      obj.value = "";
    }
  } else if (!isNaN(obj.length)) {
    for(i=0; i<obj.length; i++) {
      obj[i].checked = false;
    }
  } else {
    obj.innerHTML == "";
  }
}

// Function Name: confirmDeactivate
// Description: confirmation message when click the Deactivate button, Delete button, duplicate button
// Required parameters: @ toOption, null for deactivate only
// Return: @
// Remarks: @
function confirmDeactivate(toOption) {
  if (toOption == "delete") {
    var ISConfirm = confirm('Are you sure you want to delete?');
  }
  else if (toOption == "duplicateCourse") {
    var ISConfirm = confirm('Are you sure you want to duplicate this course?');
  }
  else if (toOption == "duplicateProgram") {
    var ISConfirm = confirm('Are you sure you want to duplicate this program?');
  }
  else {
    var ISConfirm = confirm('Are you sure you want to deactivate?');
  }
  if (ISConfirm) { return true; }
  else { return false; }
}

// for multiple selected items
// merger all items into one string
function copyAllUsers(fromList,toList) {
  for (i=0; i<fromList.length; i++) {
    if (i>0) {
      toList.value += ",";
    }
    toList.value += String(fromList.options[i].value);
  }
  return true;
}

// Limit characters to the digits 0 through 9, minus sign, and decimal.
// onkeypress="return decimalKey(this.event, 2)"
function decimalKey(evt, decimal) {
  evt = (evt) ? evt : ((window.event) ? event : null);
  if (evt) {
    var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
    if (elem) {
      if (evt.type == 'keypress') {
        var charCode = (evt.charCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode);
        if (!((charCode < 32 ) ||
            (charCode > 44 && charCode < 47) ||
          (charCode > 47 && charCode < 58))) {
          return false;
        }
        if ((elem.value.indexOf('.') >=0) && (charCode == 46)) {
          return false;
        }

        var index = elem.value.indexOf('.');
        if ((index >= 0) && (elem.value.length - index) > decimal) {
          return false;
        }
        return true;
      } else {
        elem.value = elem.value.replace(/[^0-9.-]/g, "");

        var index = elem.value.indexOf('.');
        if ((index >= 0) && (elem.value.length - index) > decimal) {
          elem.value = elem.value.substring(0, index + decimal + 1);
        }
      }
    }
  }
}

function decimalKeyWithLimit(evt, oldvalue, decimal, minval, maxval) {
  evt = (evt) ? evt : ((window.event) ? event : null);
  if (evt) {
    var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
    if (elem) {
      if (evt.type == 'keyup') {
        var charCode = (evt.charCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode);
        /*
        if (!(charCode == 8 || charCode == 9 || charCode == 16 || charCode == 190 || (charCode >= 48  && charCode <= 57))) {
          alert("Please input numeric....."+ charCode);
        return false;
        }
         */
        if (!(elem.value >= minval && elem.value <= maxval))
        {
          alertsay = "Only numerals are allowed. Please enter a value greater than or "
          alertsay = alertsay + "equal to \"" + minval + "\" and less than or "
          alertsay = alertsay + "equal to \"" + maxval + "\" "
          alert(alertsay);
          elem.value = oldvalue;
          return false;
        }
      }

      if (evt.type == 'keypress') {
        if ((elem.value.indexOf('.') >=0) && (charCode == 46)) {
          return false;
        }

        var index = elem.value.indexOf('.');
        if ((index >= 0) && (elem.value.length - index) > decimal) {
          return false;
        }
        return true;
      } else {
        elem.value = elem.value.replace(/[^0-9.-]/g, "");

        var index = elem.value.indexOf('.');
        if ((index >= 0) && (elem.value.length - index) > decimal) {
          elem.value = elem.value.substring(0, index + decimal + 1);
        }
      }
    }
  }
}

// THIS FUNCTION TEMPORARY PUT IT HERE
function defaultAnnounceList() {
  var getdiv = getObject('listannounce');
  if (getdiv != null){
    getdiv.style.display = 'none';
  }

  var getshowall = getObject('showall');
  if (getshowall != null) {
    getshowall.style.display = 'block';
  }

  var getdefault = getObject('default');
  if (getdefault != null) {
    getdefault.style.display = 'none';
  }
}

//Disable form object.
function disableObject(obj) {
  if (obj.form) {
    if (obj.type == "radio" || obj.type == "checkbox") {
      var field = obj.form[obj.name];
      for(i=0; i<field.length; i++) {
        field[i].disabled = true;
      }
    } else {
      obj.disabled = true;
    }
  } else if (!isNaN(obj.length)) {
    for(i=0; i<obj.length; i++) {
      obj[i].disabled = true;
    }
  }
}

function emailvalidation(entered, alertbox) {
  with (entered) {
    apos=entered.indexOf("@");
    dotpos=entered.lastIndexOf(".");
    lastpos=entered.length-1;
    if (apos<1 || dotpos-apos<2 || lastpos-dotpos>3 || lastpos-dotpos<2) {
      if (alertbox) {alert(alertbox);} return false;
    } else {
      return true;
    }
  }
}

//Enable form object.
function enableObject(obj) {
  if (obj.form) {
    if (obj.type == "radio" || obj.type == "checkbox") {
      var field = obj.form[obj.name];
      for(i=0; i<field.length; i++) {
        field[i].disabled = false;
      }
    } else {
      obj.disabled = false;
    }
  } else if (!isNaN(obj.length)) {
    for(i=0; i<obj.length; i++) {
      obj[i].disabled = false;
    }
  }
}

// Function Name: getObject
// Description: Get the object by id/name
// Required parameters: Control id/name
// Return: return control object
// Remarks: @
function getObject(id) {
  var ie4 = false; if(document.all) { ie4 = true; }
  if (ie4) { return document.all[id]; } else { return document.getElementById(id); }
}

//Retrives the value of the given object.
function getValue(obj) {
  var value = '';
  if (obj.form) {
    if (obj.type == "select-one") {
      value = obj.options[obj.selectedIndex].value;
    } else if (obj.type == "select-multiple") {
      for(i=0; i<obj.length; i++) {
        if (obj.options[i].selected) {
          if (value.length > 0) value += ";";
          value += obj[i].value;
        }
      }
    } else if (obj.type == "radio") {
      var field = obj.form[obj.name];
      for(i=0; i<field.length; i++) {
        if (field[i].checked) {
          value = field[i].value;
          break;
        }
      }
    } else if (obj.type == "checkbox") {
      var field = obj.form[obj.name];
      for(i=0; i<field.length; i++) {
        if (field[i].checked) {
          if (value.length > 0) value += ";";
          value += field[i].value;
        }
      }
    } else {
      value = obj.value;
    }
  } else {
    if (isNaN(obj.length)) {
      value = obj.innerHTML;
    } else {
      for(i=0; i<obj.length; i++) {
        if (obj[i].checked) {
          if (value.length > 0) value += ";";
          value += obj[i].value;
        }
      }
    }
  }
  return value;
}

//Sets object to hidden.
function hideObject(obj) {
  obj.style.display = "none";
}

function isAlphaNumeric(str) {
  n=str.length;
  for (i=0; i<n; i++) {
    c=str.charCodeAt(i);
    if (!((c>=48 && c<=57)||(c>=65 && c<=90)||(c>=97&&c<=122))) {
      return false;
    }
  }
  return true;
}

function isValidUsername(str) {
  n=str.length;
  for (i=0; i<n; i++) {
    c=str.charCodeAt(i);
    if (!(c==45||(c>=48 && c<=57)||(c>=65 && c<=90)||c==95||(c>=97&&c<=122))) {
      return false;
    }
  }
  return true;
}

function moveOpt(selFrom, selTo) {
  selength = selFrom.length;
  for (i=0; i<selength; i++) {
    curOpt = selFrom.options[i];
    if (curOpt.selected==true) {
      for (j=0; j<selTo.length; j++) {
        if (curOpt.text < selTo.options[j].text) {
          break;
        }
      }
      selTo.options[selTo.length] = new Option();
      for (k=selTo.length-1; k>j; k--) {
        selTo.options[k].text = selTo.options[k-1].text;
        selTo.options[k].value = selTo.options[k-1].value;
      }
      selTo.options[j] = new Option(curOpt.text, curOpt.value);
      selFrom.options[i] = null;
      i--; selength--;
    }
  }
  return false;
}

function numeralsOnly(evt) {
  evt = (evt) ? evt : event;
  var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : ((evt.which) ? evt.which : 0));
  if (charCode > 31 && (charCode < 48 || charCode > 57)) {
    alert("Enter numerals only in this field.");
    return false;
  }
  return true;
}

//open popup window
function openWindow(url, width, height) {
  var top = (screen.height) ? (screen.height - height)/2 : 0;
  var left = (screen.width) ? (screen.width - width)/2 : 0;
  return window.open(url, 'win', 'width=' + width + ',height=' + height + ',top=' + top + ',left=' + left + ',resizable=1,scrollbars=1');
}

function resetForm(that) {
  for (i=0; i<that.length; i++) {
    inp=that.elements[i];
    if (inp.type=="checkbox"||inp.type=="radio") {
      inp.checked=false;
    } else if (inp.type=="file") {
      // security reasons, file value cannot be clear.
    } else if (inp.type=="password"||inp.type=="textarea"||inp.type=="text") {
      inp.value="";
    } else if (inp.type=="select-one"||inp.type=="select-multiple") {
      inp.selectedIndex=0;
      for (j=0; j<inp.length; j++) {
        inp.options[j].selected=false;
      }
    }
  }
  return false;
}

//Reset object value to default.
function resetValue(obj) {
  if (obj.form) {
    if (obj.type == "select-one" || obj.type == "select-multiple") {
      for(i=0; i<obj.length; i++) {
        obj.options[i].selected = false;
        if (obj.options[i].defaultSelected) {
          obj.options[i].selected = true;
        }
      }
    } else if (obj.type == "radio" || obj.type == "checkbox") {
      var field = obj.form[obj.name];
      for(i=0; i<field.length; i++) {
        field[i].checked = false;
        if (field[i].defaultChecked) {
          field[i].checked = true;
          if (obj.type == "radio") break;
        }
      }
    } else {
      obj.value = obj.defaultValue;
    }
  } else if (!isNaN(obj.length)) {
    for(i=0; i<obj.length; i++) {
      obj[i].checked = false;
      if (obj[i].defaultChecked) {
        obj[i].checked = true;
        if (obj[i].type == "radio") break;
      }
    }
  }
}

// Rounds the given number and according to the specified decimal.
function roundDecimal(number, decimal) {
  var result1 = number * Math.pow(10, decimal)
  var result2 = Math.round(result1)
  var result3 = result2 / Math.pow(10, decimal)
  return toDecimal(result3, decimal);
}

function selectAll(selFrom, selTo) {
  selength = selFrom.length;
  for (i=0; i<selength; i++) {
    curOpt = selFrom.options[i];
    curOpt.selected=true;
  }
  return false;
}

//Sets the value of the given object.
function setValue(obj, value) {
  resetValue(obj);
  if (obj.form) {
    if (obj.type == "select-one" || obj.type == "select-multiple") {
      for(i=0; i<obj.length; i++) {
        if (obj.options[i].value == value) {
          obj.options[i].selected = true;
          if (obj.type == "select-one") break;
        }
      }
    } else if (obj.type == "radio" || obj.type == "checkbox") {
      var field = (isNaN(obj.length)) ? obj.form[obj.name] : obj;
      for(i=0; i<field.length; i++) {
        if (field[i].value == value) {
          field[i].checked = true;
          if (obj.type == "radio") break;
        }
      }
    } else {
      obj.value = value;
    }
  } else {
    if (isNaN(obj.length)) {
      obj.innerHTML = value;
    } else {
      for(i=0; i<obj.length; i++) {
        if (obj[i].value == value) {
          obj[i].checked = true;
          if (obj[i].type == "radio") break;
        }
      }
    }
  }
}

// THIS FUNCTION TEMPORARY PUT IT HERE
function showAllAnnounceList() {
  var getdiv = getObject('listannounce');
  if (getdiv != null) {
    getdiv.style.display = 'block';
  }
  var getshowall = getObject('showall');
  if (getshowall != null) {
    getshowall.style.display = 'none';
  }

  var getdefault = getObject('default');
  if (getdefault != null) {
    getdefault.style.display = 'block';
  }
}

//Sets object to visible.
function showObject(obj) {
  obj.style.display = "block";
}

function testForm(that) {
  for (i=0; i<that.length; i++) {
    inp=that.elements[i];
    alert (inp.name+"="+inp.type);
  }
  return true;
}

// Formats the the given number according to the specified decimal.
function toDecimal(number, decimal) {
  var str = number.toString()
  var index = str.indexOf(".")

  if (index == -1) {
    part_length = 0
    str += decimal > 0 ? "." : ""
  } else {
    part_length = str.length - index - 1
  }

  var pad_total = decimal - part_length

  if (pad_total > 0) {
    for (j=1; j<= pad_total; j++) {
      str += "0"
    }
  } else if (pad_total < 0) {
    pos = index + 1;
    str = str.substring(0, pos) + str.substring(pos, pos + 2);
  }

  return str
}

/** Function Name: toggle
Description: Expand and Collapse the DIV
Required parameters: Radio button id
Return: Expand or collape DIV base on selection of option
Remarks: Only one radio button selected at one time, and only one DIV section
shown at one time. DIV naming converntion follow <<radiobuttonid>>div
 **/
function toggle(controlId,radioButtonName) {
  var divname = controlId.value + 'div'   ;
  if (controlId.checked)
  {
    var radiobuttonselection = document.forms[0][radioButtonName];
    for (i=0; i < radiobuttonselection.length; i++ )
    {
      if ( radiobuttonselection[i].value == controlId.value)
      {
        var getdivname = radiobuttonselection[i].value + 'div' ;
        var getdiv = getObject(getdivname);
        if (getdiv != null){
          getdiv.style.display = 'block';
        }
      }
      else
      {
        var getdivname = radiobuttonselection[i].value + 'div' ;
        var getdiv = getObject(getdivname);
        if (getdiv != null){
          getdiv.style.display = 'none';
        }
      }

    }
  }
  else
  {
    d.style.display = 'none';
  }
}

function toggleSelection(formName,cName) {
  if (global==0) global=1;
  else global=0;
  checkAll(document.getElementById(formName), cName, global);
}

function trimAll(sString) {
  while (sString.substring(0,1) == ' ') {
    sString = sString.substring(1, sString.length);
  }
  while (sString.substring(sString.length-1, sString.length) == ' ') {
    sString = sString.substring(0,sString.length-1);
  }
  return sString;
}

function usernameOnly(evt) {
  evt = (evt) ? evt : event;
  var c = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : ((evt.which) ? evt.which : 0));
  if (!(c<=31||c==45||(c>=48 && c<=57)||(c>=65 && c<=90)||c==95||(c>=97&&c<=122))) {
    return false;
  }
  return true;
}

/** Function Name: validateAttachment
Description: Validate Attachment before submit
Required parameters: Attachment Control ID
Return: TRUE / FALSE
Remarks: @
 **/
function validateAttachment(AttachControlID) {
  var passvalidation =true;

  if (AttachControlID != "")
  {   var arryExt=new Array("jpg","jpeg","gif","tiff","doc","pdf","zip");
  }
  else{
    return false;
  }

  var getControl = getObject(AttachControlID);
  if (getControl != null){
    var strvalue = getControl.value;
    if (strvalue != "") {
      strvalue = strvalue.toLowerCase();
      // Find the last 5 characters
      var arryValue=strvalue.split(".");

      // Compare the ext with the array
      var num=0;
      var ISExists = false;
      while (num < arryExt.length)
      {   if(arryValue[arryValue.length-1] == arryExt[num])
        {ISExists = true;}
        num+=1;
      }
      //alert(arryValue[arryValue.length-1]);
      if (ISExists == false){

        alert('Only image (.jpeg, .gif, .tiff), .doc,.zip,.pdf file are allowed for attachment.');
        passvalidation = false;
      }
    }
  }
  else
    {alert("Attachment control not found"); return false;}
  return passvalidation;
}

/** Function Name: validateLearnerID
Description: Validate Learner ID ie: IExxxxx123
Required parameters: objName,minval,maxval,comma,period,hyphen
Return: TRUE / FALSE
Remarks:
only allow 0-9 be entered, plus any values passed
(can be in any order, and don't have to be comma, period, or hyphen)
if all numbers allow commas, periods, hyphens or whatever,
  just hard code it here and take out the passed parameters
 **/
function validateLearnerID(objForm,objName,minval,maxval,comma,period,hyphen) {
  var checkOK = "0123456789" + comma + period + hyphen;
  var checkStr = objName;
  var allValid = true;
  var decPoints = 0;
  var allNum = "";

  // check value length
  if (checkStr.value.length != 8 && checkStr.value.length != 0)
  {
    alertsay = "Please enter a 8 digit value."
    alert(alertsay);
    return (false);
  }

  for (i = 0;  i < checkStr.value.length;  i++)
  {
    ch = checkStr.value.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
    if (ch == checkOK.charAt(j))
      break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    if (ch != ",")
      allNum += ch;
  }

  if (!allValid)
  {
    alertsay = "Please enter only these values \""
    alertsay = alertsay + checkOK + "\" in the \"" + checkStr.name + "\" field."
    alert(alertsay);
    return (false);
  }

  // set the minimum and maximum
  var chkVal = allNum;
  var prsVal = parseFloat(allNum);

  //To place converted learner id
  objForm.convertedLearnerID.value = prsVal;

  if (chkVal != "" && !(prsVal >= minval && prsVal <= maxval))
  {
    alertsay = "Please enter a value greater than or "
    alertsay = alertsay + "equal to \"" + minval + "\" and less than or "
    alertsay = alertsay + "equal to \"" + maxval + "\" in the \"" + checkStr.name + "\" field."
    alert(alertsay);
    return (false);
  }

  return (true);
}//  End validateLearnerID()

// Function Name: validatePage
//
// Description: Validate all page fields
// Required parameters:
// 1. Name of fields to be validated (to be stored as hidden field in PHP page and passed to
// this function. Hidden field stores comma-delimited string. For each type of validation, the string
// is stored delimited by semicolon. For example String = "Mandatory,Name,Email;Numeric,House,Mobile" which
// will firstly be delimited by semicolon. Then each array is further split to isolate each field, with the
// first index (Mandatory, Numeric etc) being used in a CASE statement to identify type of validation.
//
// Return: True/False
// Remarks: Created by mingtze 18/2/2005. Forms[] hardcoded for now.
function validatePage(fields) {
  var field;
  var validateTypes_array = fields.split(";"); //store fields in an array
  for (var i=0;i<validateTypes_array.length;i++) { //check each type of validation
    var validateFields_array = validateTypes_array[i].split(",");
    switch (validateFields_array[0]) { //determine type of validation
      case "Mandatory":
      for (var i=1;i<validateFields_array.length;i++) {
        field = document.getElementById(validateFields_array[i]).value;
        if (trimAll(field).length == 0) {
          alert(validateFields_array[i] + " is a mandatory field.");
          return false;
          break;
        }
      }
      break;
      case "Numeric":
        //nothing yet
      //for(var i=1;i<validateFields_array.length;i++) {
      //
      //}
      break;
      case "Email":
        //nothing yet
      return true;
      break;
    }
  }
  return true;
}
