function getObject(name) {
  var ns4 = (document.layers) ? true : false;
  var w3c = (document.getElementById) ? true : false;
  var ie4 = (document.all) ? true : false;

  if (ns4) return eval('document.' + name);
  if (w3c) return document.getElementById(name);
  if (ie4) return eval('document.all.' + name);

  return false;
}

function makeRequest(url, successfunc, uiElement, method, params) {
  if(typeof(method) == "undefined")
    method = "get";

  if(method=='POST')
     method='post';
  
  if(typeof(params) == "undefined")
    params = null;

  var 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 = function() { FillResponse(http_request, successfunc, uiElement, url); };
  http_request.open(method, url, true);

  if(method == "post") {
    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http_request.setRequestHeader("Content-length", params == null? 0: params.length);
    http_request.setRequestHeader("Connection", "close");
  }

  http_request.send(params);
}

function FillResponse(http_request, successfunc, uiElement, url) {
  if (http_request.readyState == 4) {
    if (http_request.status == 200) {
      if(successfunc == null || successfunc == "")
        successfunc = "NormalFillResponse";

      // evaluate the success function
      eval(successfunc +'(http_request,\''+uiElement+'\');');
    }
    else {
      // set error handler
      if(getObject(uiElement) != null) {
        getObject(uiElement).innerHTML="<br /><br /><div align='center' class='botHeadderRed'>" + ErrorHandling(http_request.status) + "</div>";
      }

      if(http_request.status == 408)
        makeRequest(url, successfunc, uiElement);// if request time out then re call same url
    }
  }
}

// function to set the error messages for different http errors
// error messages are self explaining
function ErrorHandling(temp_error_code) {
  switch(temp_error_code) {
    case 400 : temp_error_code="Bad Request"; break;
    case 401 : temp_error_code="Unauthorized Request made"; break;
    case 403 : temp_error_code="Forbidden: You don't have permission to access"; break;
    case 404 : temp_error_code="Requested Page Not Found"; break;
    case 405 : temp_error_code="The method specified in the Request-Line is not allowed"; break;
    case 500 : temp_error_code="Unable to send response due to Internal Server Error."; break;
    default :  temp_error_code="Trying to reach the Server. " + temp_error_code; break;
  }
  return temp_error_code;
}

function NormalFillResponse(http_request, uiElement) {
  getObject(uiElement).innerHTML = http_request.responseText;
}

function FillCampus(val) {
  if (val=="Online") {
    if (getObject('selState').value=="") {
      alert("Please, Select the State First");
      getObject('selState').focus();

      getObject('frm_str_campusType1').checked=false;
      return false;
    }
    else {
      State = getObject('selState').value;

      params = "state=" + State + "&CampusType=" + val + "&WhichData=campus";
    }
  }
  else if (val=="Campus") {
    if (getObject('selZip').value=="") {
      alert("Please, Enter the Zip.");
      getObject('selZip').focus();

      getObject('frm_str_campusType2').checked=false;
      return false;
    }
    else {
      Zip = getObject('selZip').value;

      params = "zip=" + Zip + "&WhichData=campus";
    }
  }

  while (getObject('frm_str_program').firstChild) {
    getObject('frm_str_program').removeChild(getObject('frm_str_program').firstChild);
  }

  while (getObject('frm_str_areaOfInterest').firstChild) {
    getObject('frm_str_areaOfInterest').removeChild(getObject('frm_str_areaOfInterest').firstChild);
  }

  while (getObject('frm_str_campus').firstChild) {
    getObject('frm_str_campus').removeChild(getObject('frm_str_campus').firstChild);
  }

  myEle=document.createElement("option");
  theText=document.createTextNode("Select");
  myEle.appendChild(theText);
  myEle.setAttribute("value","");
  getObject('frm_str_program').appendChild(myEle);

  myEle1=document.createElement("option");
  theText=document.createTextNode("Select");
  myEle1.appendChild(theText);
  myEle1.setAttribute("value","");
  getObject('frm_str_areaOfInterest').appendChild(myEle1);

  myEle2=document.createElement("option");
  theText=document.createTextNode("Select");
  myEle2.appendChild(theText);
  myEle2.setAttribute("value","");
  getObject('frm_str_campus').appendChild(myEle2);

  makeRequest("getdata.php", "AddCampus", "frm_str_campus", "post", params);
}

function AddCampus(http_request, uiElement) {
  var CampusName = http_request.responseText.split(",");

  var myEle ;
  var x ;
  
  if (CampusName.length>1) {
    // Empty the second drop down box of any choices
    for (var q=getObject(uiElement).options.length; q>=0; q--) {
      getObject(uiElement).options[q]=null;
    }

    myEle=document.createElement("option");
    theText=document.createTextNode("Select");
    myEle.appendChild(theText);
    myEle.setAttribute("value","");
    getObject(uiElement).appendChild(myEle);

    for ( x = 0 ; x < CampusName.length; x++ ) {
      if (CampusName[x]!="") {
        myEle = document.createElement("option") ;
        myEle.setAttribute("value", CampusName[x]);
        var txt = document.createTextNode(CampusName[x]);
        myEle.appendChild(txt)

        getObject(uiElement).appendChild(myEle)
      }
    }
  }
  else {
    alert("No Campus is Avaliable for Desired Zip.");
  }
  /*
  else if (getObject('selState').value!="") {
    getObject('frm_str_campusType1').checked=true;
    State = getObject('selState').value;

    params = "state=" + State + "&CampusType=" + getObject('frm_str_campusType1').value + "&WhichData=campus";

    makeRequest("getdata.php", "AddCampus", "frm_str_campus", "post", params);
  }
  */
}


function FillProgramTypes(val) {
  var CampusName = val.split("-");

  var eduLevel  = document.getElementById('frmLevelEdu').value; 
  var campTyp   = 'Online';
  
  params = "cname=" + CampusName[1] + "&WhichData=instofarea&eLevel="+eduLevel+"&cType="+campTyp;
  makeRequest("getdata.php", "AddInterest", "frm_str_areaOfInterest", "post", params);
}


function AddInterest(http_request, uiElement) {
  var ProgramType = http_request.responseText.split(",");
  var myEle ;
  var x ;

  // Empty the second drop down box of any choices
  for (var q=getObject(uiElement).options.length; q>=0; q--) {
    getObject(uiElement).options[q]=null;
  }

  myEle=document.createElement("option");
  theText=document.createTextNode("Select");
  myEle.appendChild(theText);
  myEle.setAttribute("value","");
  getObject(uiElement).appendChild(myEle);

  for ( x = 0 ; x < ProgramType.length; x++ ) {
    if (ProgramType[x]!="") {
      myEle = document.createElement("option") ;
      myEle.setAttribute("value", ProgramType[x]);
      var txt = document.createTextNode(ProgramType[x]);
      myEle.appendChild(txt);

      getObject(uiElement).appendChild(myEle);
    }
  }
}


function FillPrograms(val) {
  var CampusName = getObject('frm_str_campus').value.split("-");
  var AddToUrl = "";
  var eduLevel  = document.getElementById('frmLevelEdu').value;

  if (val!="Show All") {
    AddToUrl = "&progtype=" + val;
  }

  params =  "cname=" + CampusName[1] + AddToUrl + "&WhichData=instofprog&eLevel="+eduLevel+"&cType=Online";
  makeRequest("getdata.php", "AddPrograms", "frm_str_program", "post", params);
}


function AddPrograms(http_request, uiElement) {
  var myEle;
  var OldProgramType;
  var Programs = new Array();
  var x ;
  
  if(trim(http_request.responseText) &&  http_request.responseText != ''){
    var ProgramArray = http_request.responseText.split("@");

    for(key in ProgramArray) {
      if (ProgramArray[key]!="") {
        var val=ProgramArray[key].split("~");
        var ProgramCode = val[0];
        var ProgramName = val[1];
        var ProgramType = val[2];

        if (OldProgramType != ProgramType)
          Programs[ProgramType] = new Array();

        Programs[ProgramType][ProgramCode] = new Array();

        Programs[ProgramType][ProgramCode] = ProgramName;

        OldProgramType = ProgramType;
      }
    }
  }

  // Empty the second drop down box of any choices

  while (getObject(uiElement).firstChild) {
    getObject(uiElement).removeChild(getObject(uiElement).firstChild);
  }

  myEle=document.createElement("option");
  theText=document.createTextNode("Select");
  myEle.appendChild(theText);
  myEle.setAttribute("value","");
  getObject(uiElement).appendChild(myEle);

  if(trim(http_request.responseText) &&  http_request.responseText != ''){
    for(ProgramType in Programs) {
      var optGroup = document.createElement('optgroup');
      optGroup.label = ProgramType;
      //optGroup.appendChild(myEle);
      //getObject(uiElement).appendChild(optGroup);

      for(ProgramCode in Programs[ProgramType]) {
        myEle = document.createElement("option");
        myEle.setAttribute("value", Programs[ProgramType][ProgramCode] + '~' + ProgramCode);
        var txt = document.createTextNode(Programs[ProgramType][ProgramCode]);
        myEle.appendChild(txt);
        optGroup.appendChild(myEle);
      }

      getObject(uiElement).appendChild(optGroup);
    }
  }
  
  if(trim(http_request.responseText) == ''){
    myEle=document.createElement("option");
    theText=document.createTextNode("No program exists");
    myEle.appendChild(theText);
    myEle.setAttribute("value","");
    getObject(uiElement).appendChild(myEle);
  }

}

function ReCheck(ControlName) {
  if (getObject('selState').value!="" || getObject('selZip').value!="") {
    if (getObject('frm_str_campusType1').checked==true || getObject('frm_str_campusType2').checked==true) {

      if (ControlName == 'selZip' && getObject('frm_str_campusType2').checked==true) {
        val = getObject('frm_str_campusType2').value;
        FillCampus(val);
      }
      else if (ControlName == 'selState' && getObject('frm_str_campusType1').checked==true) {
        val = getObject('frm_str_campusType1').value;
        FillCampus(val);
      }
    }
  }
}


function showTip(UIElement, ShowThis) {
  var val=ShowThis.split("~");
  var ProgramName = val[0];
  var ProgramCode = val[1];
  
  getObject(UIElement).innerHTML = ProgramName;
  getObject(UIElement).style.display="";

  setTimeout("hideTip('" + UIElement + "')", 5000);
}

function hideTip(UIElement) {
  getObject(UIElement).style.display = "none";
}


function showNursQue(prog){
  CodeOnArr1 = new Array ('BSN', 'MSN', 'MSN/ED', 'MSN/MBA/HC', 'MSN/MHA', 'MSN/NPFT', 'AZ', 'LPN/BSN', 'MSN/FNP', 'LVN/BSN', 'SNC');
  CodeOffArr1 = new Array ('BSN', 'MSN', 'MSN/ED', 'MSN/MBA/HC', 'MSN/MHA', 'MSN/NPFT', 'AZ', 'LPN/BSN', 'MSN/FNP', 'LVN/BSN');
  
  var ProgDet = prog.split("~");
  if(document.getElementById('frm_str_campusType1').checked==true  && chkExist(ProgDet[1], CodeOnArr1)==1 ){
    document.getElementById('nurseCaptionRow').style.display = '';
    document.getElementById('nurseSelectionRow').style.display = '';
  }
  else if (document.getElementById('frm_str_campusType2').checked==true && chkExist(ProgDet[1], CodeOffArr1)==1) {
    document.getElementById('nurseCaptionRow').style.display = '';
    document.getElementById('nurseSelectionRow').style.display = '';
  }
  else{
    document.getElementById('nurseCaptionRow').style.display = 'none';
    document.getElementById('nurseSelectionRow').style.display = 'none';
  }
}

function chkExist(CodeVal, CodeArr)
{
  var Exist=0; // Default Return Value
  if(CodeVal == undefined){
    var CodeVal = '';
  }
  
  for(var Counter=0; Counter<CodeArr.length; Counter++)
  {
    if (trim(CodeArr[Counter])==trim(CodeVal)){
      Exist=1;
    }
  }

  if (Exist>0)
    return 1;
  else
    return 0;
}


function resetAll(){
 
 while (getObject('frm_str_program').firstChild) {
    getObject('frm_str_program').removeChild(getObject('frm_str_program').firstChild);
  }

  while (getObject('frm_str_areaOfInterest').firstChild) {
    getObject('frm_str_areaOfInterest').removeChild(getObject('frm_str_areaOfInterest').firstChild);
  }

  myEle=document.createElement("option");
  theText=document.createTextNode("Select");
  myEle.appendChild(theText);
  myEle.setAttribute("value","");
  getObject('frm_str_program').appendChild(myEle);

  myEle1=document.createElement("option");
  theText=document.createTextNode("Select");
  myEle1.appendChild(theText);
  myEle1.setAttribute("value","");
  getObject('frm_str_areaOfInterest').appendChild(myEle1);

  if(document.getElementById('nurseCaptionRow').style.display == '' || document.getElementById('nurseSelectionRow').style.display == ''){
    document.getElementById('nurseCaptionRow').style.display = 'none';
    document.getElementById('nurseSelectionRow').style.display = 'none';
  }
  
}

// Removes leading whitespaces
function LTrim( value ) {  
  var re = /\s*((\S+\s*)*)/;
  return value.replace(re, "$1");  
}

// Removes ending whitespaces
function RTrim( value ) {  
  var re = /((\s*\S+)*)\s*/;
  return value.replace(re, "$1");  
}

// Removes leading and ending whitespaces
function trim( value ) {  
  return LTrim(RTrim(value));  
}