function McJumpPopup(Target,SelObj,wHeight,wWidth)
{
  var Url= SelObj.options[SelObj.selectedIndex].value;
  var Win = window.open(Url, Target,"width=" + wWidth + ",height=" + wHeight + ",status=yes,resizable=yes,toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,left = 0,top = 0");
  SelObj.selectedIndex=0;
  Win.focus();
}

function McJumpLoad(SelObj)
{
  var Url= SelObj.options[SelObj.selectedIndex].value;
  window.location = Url ;
}

function McInsert(Target,Url,wHeight,wWidth)
{
  var Win = window.open(Url, Target,"width=" + wWidth + ",height=" + wHeight + ",status=yes,resizable=yes,toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,left = 0,top = 0");
  Win.focus();
}

function McRefresh(NewUrl)
{
try {
     if ( arguments.length == 1) {   window.opener.location=NewUrl; }
     else                        {   window.opener.location.reload(); }
    }
catch(ex) {alert(ex); }
}

function McConf(msg)
{
var chktext;
if ( arguments.length == 1) chktext = msg;
else chktext = "You have chosen to Delete a record. Please confirm that this is correct.";
return(confirm(chktext));
}


function McOpen(Target,wHeight,wWidth)
{
  if (navigator.appName.indexOf("Netscape")  != -1) return;
  var Win = window.open("../scripts/empty.htm", Target,"width=" + wWidth + ",height=" + wHeight + ",status=yes,resizable=yes,toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,left = 0,top = 0");
  Win.focus();
}

function JcOpen(Target,wHeight,wWidth)
{
  if (navigator.appName.indexOf("Netscape")  != -1) return;
  var Win = window.open("../scripts/empty.htm", Target,"width=" + wWidth + ",height=" + wHeight + ",status=0,resizable=0,toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,left = 0,top = 0");
  Win.focus();
}

function McToTop(Win)
{
 try
  {
  var NewWin = window.open("",Win);
  NewWin.focus();
  }

catch(ex) {alert("McToTop"+ex); }

}


function McChkPassword(Password0, Password1,vMsg)
{
  var str = Password0.value.replace(" ","");
  Password0.value = str;
  if((str == null) || (str.length == 0))
  {
    alert(vMsg+': '+ErrMsgMAND);
    Password0.focus();
    return false;
  }
  var str = Password1.value.replace(" ","");
  Password1.value = str;

  if (Password0.value == Password1.value) return true;

  alert(vMsg+': '+ErrMsgPWER);
  Password0.value = "";
  Password1.value = "";
  Password0.focus();
  return (false);

}


// handles the display language menu  ( no longer used!  2nd opt para = RecL if Course page where sess var not to be changed )
function McLang(SelObj,KeyL)
{
try {
  var LKey = 'Lang';
  if (arguments.length == 2) LKey = KeyL;
  var Lang =  SelObj.options[SelObj.selectedIndex].value;
  Lang = '?'+LKey+'='+Lang+'&';
  var Url  = window.location.href ;
  var xpos = Url.indexOf('?');
  if (xpos < 0 ) Url +='?'+LKey+'=eng';
  Url = Url + '&';
  var reg = /Lang=[a-zA-Z0-9]*&/;                    //  remove any old Lang and RecL paras
  var NewUrl = Url.replace(reg,'');
  reg = /RecL=[a-zA-Z0-9]*&/;
  NewUrl = NewUrl.replace(reg,'');
  NewUrl = NewUrl.replace('?',Lang);
  reg = /&$/;
  NewUrl = NewUrl.replace(reg,'');
  window.location = NewUrl;
  }

catch(ex) {alert(ex); }

}







// based on AjAx documentation by developer.mozilla.org/en/docs/
var http_request = false;

function McMakeRequest(SelObj, url, SelList, CrsCode)
{
  try
  {
    var code =  SelObj.options[SelObj.selectedIndex].value;
    newurl = '../scripts/' + url + '?Code=' + code + '&SelList=' + SelList;
    if (arguments.length == 4) newurl += '&CrsCode=' + CrsCode;
    http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml');
            // See note below about this line
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }

    if (!http_request) {
        alert('Giving up :( Cannot create an XMLHTTP instance');
        return false;
    }

    http_request.onreadystatechange = McAlertContents;

    http_request.open('GET', newurl, true);
    http_request.send(null);
  }

catch(ex) {alert("McMakeRequest"+ex); }

}

function McAlertContents()
{
  try
  {
        if (http_request.readyState == 4) {
        if (http_request.status == 200) {
 //           alert(http_request.responseText);
            McAjaxReply(http_request.responseXML);

        } else {
            alert('Sorry your browser does not support AJAX.');
        }
    }
  }

catch(ex) {alert("McAlertContents"+ex); }
}

function McAjaxReply(Response)
{
  try
  {
   //alert("entry");
   var SelList  = Response.getElementsByTagName("SelList")[0].firstChild.data;
   n = document.getElementById(SelList);
   n.length = 0;

   var rowone = true;
   var optionlines = Response.getElementsByTagName("option");
   var numkids = optionlines.length;
   for (var i = 0;i < numkids; i++)
   {
     var l = optionlines[i];
     var text  = l.getElementsByTagName("text")[0].firstChild.data;
     var value = l.getElementsByTagName("value")[0].firstChild.data;
     //alert(text+value+SelList);

     var nopt = new Option(text,value,false,rowone);
     n.options[n.length] = nopt;
     rowone = false;
   }
  }

catch(ex) {alert("McAjaxReply"+ex); }
}





/* Thomas Powell Javascript Validation ( from HTML & XHTML 4th Edition
   enhanced Malcolm Cowen for multi-language and field names
                                                                                                                                                                                                                                                                                                                                                 */
var whitespace = " \t\n\r";

function isEmpty(s)
{
  var i;
  if((s == null) || (s.length == 0))
    return true;

// Search string looking for characters that are not whitespace
  for (i = 0; i < s.length; i++)
    {
      var c = s.charAt(i);
      if (whitespace.indexOf(c) == -1)
        return false;
    }

// All characters are whitespace.
  return true;
}

function ChkEmail(vFld,vMsg)
{
  var positionOfAt;
  var s = vFld.value;
  positionOfAt = s.indexOf('@',1);
  if ( ( positionOfAt == -1) || (positionOfAt == (s.length-1)) )
    {
      alert(vMsg+': '+ErrMsgEMWR);
      vFld.focus();
      return false;
    }
  return true;
}

function ChkMand(vFld,vMsg)
{
  if (isEmpty(vFld.value))
    {
      alert(vMsg+': '+ErrMsgMAND);
      vFld.focus();
      return false;
    }
  return true;
}

function isDigit(c)
{
  return ((c >= "0") && (c <= "9"))
}


function ChkInteger(vFld,vMsg)
{
  var i, c;
  var s = vFld.value;
  if (isEmpty(s))
    {
      alert(vMsg+': '+ErrMsgMAND);
      vFld.focus();
      return false;
    }
  for (i = 0; i < s.length; i++)
    { // Check if current character is number.
      c = s.charAt(i);
      if (!isDigit(c))
        {
          alert(vMsg+': '+ErrMsgNRWR);
          vFld.focus();
          return false;
        }
    }
  return true;
}


function ChkDropMenu(vFld,vMsg)
{
  var i, c;
  var s = vFld.selectedIndex;
  if (s < 1)
    {
      alert(vMsg+': '+ErrMsgDROP);
      vFld.focus();
      return false;
    }
  return true;
}



function ChkMenuMin1(vSelList,vMsg,vAltFld, vDelArray)
{
  var i ;
  var s = vSelList.selectedIndex;
  if (s > -1)   return true;

  var sArray = vDelArray.split(":");
  for (i = 1; i < sArray.length; i++)
    {
    var sThis = eval(sArray[i]);
    if ( sThis.checked == false ) return true;
    }
  alert(vMsg+': '+ErrMsgDROP);
  vAltFld.focus();
  return false;
}


function NoLink(vSelList,vMsg,vNone, vDelArray)
{
  var i ;
  var crd = 0;
  var s = vSelList.selectedIndex;
  if (s > -1)   crd = 1;

  var sArray = vDelArray.split(":");
  for (i = 1; i < sArray.length; i++)
    {
    var sThis = eval(sArray[i]);
    if ( sThis.checked == false ) crd = 1;
    }

  if ( (vNone.checked == true ) && (crd == 0) ) return true;
  if ( (vNone.checked == false) && (crd >  0) ) return true;

  alert(vMsg);
  vNone.focus();
  return false;
}



function validate(validations)
{
  var i;
  var vType;
  var vMsg;
  var vFld;
  for (i = 0; i < validations.length; i++)
    {
      vFld     = eval(validations[i][0]);
      vMsg     = validations[i][1];
      vType    = validations[i][2];
      vAltFld  = eval(validations[i][3]);
      vArray   = validations[i][4];
      switch (vType)
        {
          case 'NotBlank'     : if (!ChkMand(vFld,vMsg))           return false;
                                break;
          case 'ValidEmail'   : if (!ChkMand(vFld,vMsg))           return false;
                                if (!ChkEmail(vFld,vMsg))          return false;
                                break;
          case 'OptionalEmail': if ( (!isEmpty(vFld.value)) && (!ChkEmail(vFld)) )  return false;
                                break;
          case 'IsNumber'     : if (!ChkInteger(vFld,vMsg))        return false;
                                break;
          case 'DropMenu'     : if (!ChkDropMenu(vFld,vMsg))       return false;
                                break;
          case 'MenuMin1'     : if (!ChkMenuMin1(vFld,vMsg,vAltFld, vArray))  return false;
                                break;
          case 'NoLink'       : if (!NoLink(vFld,vMsg,vAltFld, vArray))  return false;
                                break;
        }
    }
  return true;
}

