
var support_email = "support@oreillyschool.com";

function choosedotnetpage() {
  if (getCookie("instructions")) {
     url = '/courses/dotnet_instr/oreillyschool.rdp';
     window.location = url;
  }
  else {
     url = '/courses/dotnet_instr/rdpinstructions.html';
     if (navigator.appVersion.toLowerCase().indexOf("mac") > 0) {
	url = '/courses/dotnet_instr/macrdpinstructions.html';
     }
     window.open(url,'rdpinstructions');
     setCookie("instructions", "1", get_now(), "/");
  }
}



function show_login() {
  if (login_element = document.getElementById("login_td")) {
        login_element.style.display = "block";
        if (prefs_element = document.getElementById("prefs_td")) {
           prefs_element.style.display = "none";
        }
        if (price_element = document.getElementById("price_td")) {
           price_element.style.display = "none";
        }
        if (error_element = document.getElementById("error_td")) {
           error_element.style.display = "none";
        }

     document.course_form.task_field.value = "login";
     document.course_form.action = "JavaScript:submit_login();";
  }
   //  the following code will check if cookies are enabled
   var cookieEnabled=(navigator.cookieEnabled)? true : false
   //if not IE4+ nor NS6+
   if (typeof navigator.cookieEnabled=="undefined" && !cookieEnabled){ 
       setCookie("testcookie", "testcookie", get_now(), "/");
       cookieEnabled=(document.cookie.indexOf("testcookie")!=-1)? true : false
   }

  if (!(cookieEnabled)) { //if cookies are not enabled on client's browser
     show_roster_error('cookies_error');
  }

}

var login_requester = null;
function submit_login(manual_submit) {
   //firefox and IE are weird about Ajax-submitted passwords.  Submit manually.
   //if (navigator.userAgent.indexOf("MSIE") > -1 || navigator.vendor == "Firefox"  || navigator.userAgent.indexOf("Firefox") > -1) {
      manual_submit = 1;
   //}
   //else if (manual_submit == '') {
     // manual_submit = 0;
   //}
   hide_roster_error("mypassword");
   hide_roster_error("login_email");
   for (i = 0; i <= 6; i++) {
      hide_roster_error("errcode"+ i.toString());
   }
   

   var thefield = document.course_form.login_email;
   var alternate_field = document.course_form.theemail;
   var thevalue = thefield.value;
   var mypassword = document.course_form.mypassword.value;
   
   //clear any errcode cookie
   if (getCookie("errcode")) {
      deleteCookie("errcode");
   }
   if (getCookie("bypass")) {
      deleteCookie("bypass");
   }
   if (getCookie("checkout")) {
      deleteCookie("checkout");
   }

   //  the following code will check if cookies are enabled
   var cookieEnabled=(navigator.cookieEnabled)? true : false
   //if not IE4+ nor NS6+
   if (typeof navigator.cookieEnabled=="undefined" && !cookieEnabled){ 
       setCookie("testcookie", "testcookie", get_now(), "/");
       cookieEnabled=(document.cookie.indexOf("testcookie")!=-1)? true : false
   }

  if (!(cookieEnabled)) { //if cookies are not enabled on client's browser
     show_roster_error('cookies_error');
  }

   if (!(valid_email(thevalue)) && !(valid_login(thevalue))) {
      show_roster_error('login_email');
   }
   else if (mypassword == "") {
      show_roster_error('mypassword');
   }
   else {
      //time for Ajax
      var url_vars = URLencode("login_email") + "=" + URLencode(thevalue) + "&" +
        URLencode("mypassword") + "=" + URLencode(mypassword);
      if (!(manual_submit)) {
         /* Check for running connections */
         if (login_requester != null && login_requester.readyState != 0 && login_requester.readyState != 4) {
            login_requester.abort();
         }
         try {
            login_requester = new XMLHttpRequest();
         }
         catch (error) {
            try {
              login_requester = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (error) {
               //this probably means that Ajax isn't supported on this browser;
               //just submit form normally
               manual_submit = 1;
            }
         }
      }
      if (manual_submit) {
         document.course_form.method = "POST";
         document.course_form.manual.value = '1';
         document.course_form.action = '/include/roster_cart/submit_login.php';
         document.course_form.submit();
      }
      else {
         //document.course_form.login_button.value = "Processing";
         document.course_form.action = "JavaScript:void();";
         //document.course_form.login_button.onclick = '';

         login_requester.onreadystatechange = login_stateHandler;
         login_requester.open("POST", "/include/roster_cart/submit_login.php?"+url_vars);
         login_requester.send(url_vars);
         show_please_wait();
      }
   }
}


function login_stateHandler() {
  if (login_requester.readyState == 4) {
     if (login_requester.status == 200) {
   //     alert("success!");
        var myerrcode = login_requester.responseText;
        //document.course_form.login_button.value = "Login";
        document.course_form.action = "JavaScript:submit_login('');";
        //document.course_form.login_button.onClick = "submit_login('');";
	hide_please_wait();
	if (myerrcode == "3") {
	   show_roster_error("errcode3");
           if (getCookie("errcode")) {
              deleteCookie("errcode","/");
           }
        }
	else {
	   window.location.reload();  //reloads page to update logged in user info

	}
     }
     /* IE returns a status code of 0 on some occasions, so ignore this case */
     else if (login_requester.status != 0) {
        //alert("There was an error while retrieving the URL.");
        submit_login(1);
     }
   }
   else {
        //window.setTimeout('theelement.value = theelement.value + " . "',5000);
   }
   return true;
}

var forgot_requester = null;
function submit_forgot(manual_submit) {
   if (manual_submit == '') {
      manual_submit = 0;
   }

manual_submit = 1;
   var thevalue = '';
   var thefield;
   if (thefield = document.course_form.login_email) {
      thevalue = thefield.value;
   }


   if(thevalue.length < 1) {
      show_roster_error('no_email');
      thefield.style.background = 'orange';
      return;
   }

   //ensure all email fields are set
   if (alternate_field = document.course_form.theemail) {
      if (thevalue) {
      alternate_field.value = thevalue;
      }
      else {
         thevalue = alternate_field.value;
      }
   }
   if (!(thevalue)) {
      thevalue = getCookie("theemail");
   }
   //set email and task cookie, just so we have it
   var cookie_name = "theemail";
   setCookie(cookie_name, thevalue, get_now(), "/");
   //clear any errcode cookie
   if (getCookie("errcode")) {
      deleteCookie("errcode", "/");
   }
   if (getCookie("bypass")) {
      deleteCookie("bypass", "/");
   }
   if (getCookie("checkout")) {
     deleteCookie("checkout","/");
   }

   for (i = 0; i <= 6; i++) {
      hide_roster_error("errcode"+ i.toString());
   }


   //confirm email and ask for name
   var default_name = getCookie("thename");
   if (!(default_name)) {
      var prefix = thevalue.substr(0, thevalue.indexOf("@"));
      var name_array = new Array();
      name_array = prefix.split(/[^a-zA-Z]/);
      for (i = 0; i < name_array.length; i++) {
        var first_letter = name_array[i].substr(0,1);
        var rest = name_array[i].substr(1, name_array[i].length);
        if (!(default_name)) {
           default_name = first_letter.toUpperCase() + rest;
        }
        else if (name_array[i]) {
           default_name = default_name + " " + first_letter.toUpperCase() + rest;
        }
      }
   }
   var confirm_msg = "Your password will be sent to "
        + thevalue + ".  Please enter your name and click OK to confirm.";
   var myname = default_name;
   if (!valid_email(thevalue)) {
      show_roster_error('login_email');
   }
   else if (manual_submit || (myname = prompt(confirm_msg, default_name))) {

      cookie_name = "thename";
      setCookie(cookie_name, myname, get_now(), "/");

      //time for Ajax
      var url_vars = URLencode("login_email") + "=" + URLencode(thevalue);
      if (!(manual_submit)) {
         /* Check for running connections */
         if (forgot_requester != null && forgot_requester.readyState != 0 && forgot_requester.readyState != 4) {
            forgot_requester.abort();
         }
         try {
            forgot_requester = new XMLHttpRequest();
         }
         catch (error) {
            try {
              forgot_requester = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (error) {
               //this probably means that Ajax isn't supported on this browser;
               //just submit form normally
               manual_submit = 1;
            }
         }
      }
      if (manual_submit) {
         //document.course_form.method = "GET";
         //document.course_form.action = '/include/roster_cart/submit_forgot.php?manual=1';
         //document.course_form.submit();

        //document.course_form.login_button.value = "Login";
        document.course_form.action = "JavaScript:submit_login('');";
        //document.course_form.login_button.onClick = "submit_login('');";
        window.location = "/include/roster_cart/submit_forgot.php?manual=1";
      }
      else {
   	 if (document.course_form.login_button) {
         //document.course_form.login_button.value = "Processing";
         //document.course_form.login_button.onClick = '';
         }
	 show_please_wait();
         document.course_form.action = "JavaScript:void();";
         forgot_requester.onreadystatechange = forgot_stateHandler;

         forgot_requester.open("POST", "/include/roster_cart/submit_forgot.php?"+url_vars);
         forgot_requester.send(url_vars);
      }
   }
}

function forgot_stateHandler() {
  if (forgot_requester.readyState == 4) {
     if (forgot_requester.status == 200) {
   //     alert("success!");
        var myerrcode = forgot_requester.responseText;
        if (getCookie("errcode")) {
           deleteCookie("errcode","/");
        }
         if (document.course_form.login_button) {
         //document.course_form.login_button.value = "Login";
	 //document.course_form.login_button.onClick = "submit_login('');";
         }
         document.course_form.action = "JavaScript:submit_login('');";
        //if (myerrcode == "6") {
           show_roster_error("errcode"+myerrcode);
        //}
        //else {
         //show_error_panel(myerrcode);
	//}
	hide_please_wait();
     }
     /* IE returns a status code of 0 on some occasions, so ignore this case */
     else if (forgot_requester.status != 0) {
        //alert("There was an error while retrieving the URL.");
        submit_forgot(1);
     }
   }
   else {
        //window.setTimeout('theelement.value = theelement.value + " . "',5000);
   }
   return true;
}


//END ROSTER COLUMN SECTION

//BEGIN CHECKOUT SECTION

//END CHECKOUT SECTION

//BEGIN STUDENT SECTION

function toggle_status(mystatus, noshow) {
   hide_status_result();

   var status;

   if(mystatus == 'Cancel') {
      status = 'Freeze/Cancel';
   } else {
      status = mystatus;
   }

   if (mystatus_tr = document.getElementById("status_tr")) {
      var mystatus_div = document.getElementById("status_div");

      if (mystatus_tr.style.display == "none" && !(noshow)) {
         mystatus_div.className = "dlg";
         mystatus_div.setAttribute("style","border:1px solid yellow;");
         mystatus_div.innerHTML = "|<a href='JavaScript:toggle_status(\""+mystatus+"\");'>X</a>|";
         mystatus_tr.style.display = "";
      } else {
         mystatus_div.className = "student_link";
         mystatus_div.setAttribute("style","background:#FFFFFF;border:0px;");

         if (mystatus == "Reinstate") {
            mystatus_div.innerHTML = "|<a href='JavaScript:submit_status(0,\"ok\");'>"+status+"</a>|";
            document.status_form.status.value = "ok";
         } else {
            mystatus_div.innerHTML = "|<a href='JavaScript:toggle_status(\""+mystatus+"\");'>"+status+"</a>|";
            document.status_form.status.value = "";
         }

         mystatus_tr.style.display = "none";
      }
   }
}

function show_status_result() {
   if (mystatus_result_tr = document.getElementById("status_result_tr")) {
      //mystatus_result_tr.style.display = "table-row";
      mystatus_result_tr.style.display = "";
   }
}

function hide_status_result() {
   if (mystatus_result_tr = document.getElementById("status_result_tr")) {
      mystatus_result_tr.style.display = "none";
   }
   if (mystatus_result = document.getElementById("status_result")) {
      mystatus_result.innerHTML = "";
   }
}

var status_requester = null;
function submit_status(manual_submit, status) {
//alert(navigator.userAgent);
   if (navigator.userAgent.indexOf("MSIE") > -1) {
      //set manual
      manual_submit = 1;
   }
   else if (manual_submit == '') {
      manual_submit = 0;
   }
   if (status) {
      thevalue = status;
      thereason = "";
   }
   else if (thevalue = document.status_form.status.value) {
      thereason = "";
   }
   else if (thefield = document.status_form.status_choice) {
      if (thefield[1].checked) {
         thevalue = thefield[1].value;
      }
      else {
         thevalue = thefield[0].value;
      }
      thereason = document.status_form.status_reason.value;
   }

   if (thevalue == "ok") {
      confirmmsg = "Are you sure you want to reactivate your account and lab fees?";
   }
   else {
      confirmmsg = "Are you sure you want to change your account status to "+thevalue+"?";
   }


   //confirm status change
   if (manual_submit || confirm(confirmmsg)) {
      //time for Ajax
      var url_vars = URLencode("status_choice") + "=" + URLencode(thevalue) + "&" + URLencode("status_reason") + "=" + URLencode(thereason);
      if (!(manual_submit)) {
         /* Check for running connections */
         if (status_requester != null && status_requester.readyState != 0 && status_requester.readyState != 4) {
            status_requester.abort();
         }
         try {
            status_requester = new XMLHttpRequest();
         }
         catch (error) {
            try {
              status_requester = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (error) {
               //this probably means that Ajax isn't supported on this browser;
               //just submit form normally
               manual_submit = 1;
	    }
         }
      }
      if (manual_submit) {
         document.status_form.method = "GET";
         document.status_form.action = '/student/submit_status.php?manual=1&'+url_vars;
//alert(document.status_form.action);
	 window.location = '/student/submit_status.php?manual=1&'+url_vars;
         //document.status_form.submit();
      }
      else {
//alert('cancelling');
	 show_please_wait();
         status_requester.onreadystatechange = status_stateHandler;

         status_requester.open("GET", "/student/submit_status.php?"+url_vars);
         status_requester.send(url_vars);
      }
   }
}

function status_stateHandler() {
   if (status_requester.readyState == 4) {
      if (status_requester.status == 200) {
         var theresult = status_requester.responseText;
         var theindex = theresult.indexOf(" ");

         if (theindex < 0) {
            theindex = 0;
         }

         var thestatus = theresult.substring(0, theindex);

         if (thestatus) {
            //TRISH 2006-09-18
            var the_td = document.getElementById("status_td");
            var the_b = document.getElementById("status_b");

            if (thestatus == "labfees") {
               goto_url("/student/lab_fees.php");
            } else {
               the_b.innerHTML = thestatus;

               if (thestatus == "frozen" || thestatus == "cancel" || thestatus == "demo") {
                  toggle_status("Reinstate");

                  var table = document.getElementById("ebook_table");

                  if(table) {
                     var table_cells = table.getElementsByTagName("td");

                     for(var i = 0; i < table_cells.length; i++) {
                        if(table_cells[i].className.indexOf("ebook-download") != -1) {
                           table_cells[i].innerHTML = "Download Unavailable";
                        }
                     }
                  }

               } else if (thestatus == "ok" || thestatus == "free") {
                  toggle_status("Cancel", 1);
               }
            }
         }

         document.getElementById("status_result").innerHTML = theresult.substring(theindex + 1, theresult.length);
         show_status_result();
         hide_please_wait();
      }
      /* IE returns a status code of 0 on some occasions, so ignore this case */
      else if (status_requester.status != 0) {
      //alert("There was an error while retrieving the URL.");
      hide_please_wait();
      submit_status(1);
      }
   } else {
      //window.setTimeout('theelement.value = theelement.value + " . "',5000);
   }

   return true;
}

function toggle_email() {
   if (myemail_tr = document.getElementById("email_tr")) {
   var myemail_div = document.getElementById("email_div");
   if (myemail_tr.style.display == "none") {
      myemail_div.className = "dlg";
      myemail_div.setAttribute("style","border:1px solid yellow;");
      myemail_div.innerHTML = "|<a class=student_link href='JavaScript:toggle_email();'>X</a>|";
      myemail_tr.style.display = "";
      hide_email_result();
   }
   else {
      myemail_div.className = "student_link";
      myemail_div.setAttribute("style","background:#FFFFFF;border:0px;");
      myemail_div.innerHTML = "|<a class=student_link href='JavaScript:toggle_email();'>Update</a>|";
      myemail_tr.style.display = "none";
   }
   }
}

function toggle_password() {
   if (mypassword_tr = document.getElementById("password_tr")) {
   var mypassword_div = document.getElementById("password_div");
   if (mypassword_tr.style.display == "none") {
      mypassword_div.className = "dlg";
      mypassword_div.setAttribute("style","border:1px solid yellow;");
      mypassword_div.innerHTML = "|<a class=student_link href='JavaScript:toggle_password();'>X</a>|";
      //mypassword_tr.style.display = "table-row";
      mypassword_tr.style.display = "";
      hide_password_result();
   }
   else {
      mypassword_div.className = "student_link";
      mypassword_div.setAttribute("style","background:#FFFFFF;border:0px;");
      mypassword_div.innerHTML = "|<a class=student_link href='JavaScript:toggle_password();'>Update</a>|";
      mypassword_tr.style.display = "none";
   }
   }
}

var password_requester = null;
function submit_password(manual_submit) {
   //firefox and IE are weird about Ajax-submitted passwords.  Submit manually.
   if (navigator.userAgent.indexOf("MSIE") > -1 || navigator.vendor == "Firefox"  || navigator.userAgent.indexOf("Firefox") > -1) {
      manual_submit = 1;
   }
   else if (manual_submit == '') {
      manual_submit = 0;
   }

   // Hardcoding manual submit. Safari seems to be bailing as well.
   manual_submit = 1;

   var oldpass = document.password_form.oldpass.value;
   var newpass1 = document.password_form.newpass1.value;
   var newpass2 = document.password_form.newpass2.value;

   if (oldpass == "" || newpass1 == "") {
      errmsg = "It seems that a field is blank.  Please retype, <br>and if there is still a problem, contact us at <a href='mailto:"+support_email+"'>"+support_email+"</a>.";
      var pass_error = document.getElementById("password_error_td");
      pass_error.innerHTML = errmsg;
      show_password_error("");
   }
   else if (!(newpass1 == newpass2)) {
      errmsg = "Your new passwords do not match.  Please retype, <br>and if there is still a problem, contact us at <a href='mailto:"+support_email+"'>"+support_email+"</a>.";
      document.getElementById("password_error_td").innerHTML = errmsg;
      show_password_error("");
   }
   else if (newpass1.length > 24 || newpass1.length < 6) {
      errmsg = "Your new password should be between 6 and 24 alphanumeric characters.  Please retype, <br>and if there is still a problem, contact us at <a href='mailto:"+support_email+"'>"+support_email+"</a>.";
      document.getElementById("password_error_td").innerHTML = errmsg;
      show_password_error("");
   }
   else {
      //time for Ajax
      var url_vars = URLencode("oldpass") + "=" + URLencode(oldpass) + "&" + URLencode("newpass1") + "=" + URLencode(newpass1);
      var password_requester;

      if (!(manual_submit)) {
         /* Check for running connections */
         if (password_requester != null && password_requester.readyState != 0 && password_requester.readyState != 4) {
            password_requester.abort();
         }
         try {
            password_requester = new XMLHttpRequest();
         }
         catch (error) {
            try {
               password_requester = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (error) {
               //this probably means that Ajax isn't supported on this browser;
               //just submit form normally
               manual_submit = 1;
            }
         }
      }

      if (manual_submit) {
         document.password_form.method = "POST";
         document.password_form.action = '/student/submit_password.php';
         document.password_form.manual.value = "1";
         document.password_form.submit();
         //window.location = '/student/submit_password.php?manual=1&'+url_vars;
      }
      else {
         show_please_wait();
         password_requester.onreadystatechange = password_stateHandler;
         password_requester.open("POST", "/student/submit_password.php?"+url_vars);
         password_requester.send(url_vars);
      }
   }
}

var email_requester = null;
function submit_email(manual_submit) {
   var newemail1 = document.email_form.newemail1.value;
   var newemail2 = document.email_form.newemail2.value;
   var update_billing = document.email_form.update_billing.value;

   if (newemail1 == "" || newemail2 == "") {
      errmsg = "It seems that a field is blank.  Please retype, <br>and if there is still a problem, contact us at <a href='mailto:"+support_email+"'>"+support_email+"</a>.";
      var email_error = document.getElementById("email_error_td");
      email_error.innerHTML = errmsg;
      show_email_error("");
   }
   else if (!(newemail1 == newemail2)) {
      errmsg = "Your new emails do not match.  Please retype, <br>and if there is still a problem, contact us at <a href='mailto:"+support_email+"'>"+support_email+"</a>.";
      document.getElementById("email_error_td").innerHTML = errmsg;
      show_email_error("");
   }
   else if (!(check_email(newemail1))) {
      errmsg = "Your email address does not appear to be valid.  Please retype, <br>and if there is still a problem, contact us at <a href='mailto:"+support_email+"'>"+support_email+"</a>.";
      document.getElementById("email_error_td").innerHTML = errmsg;
      show_email_error("");
   }
   else {
      //time for Ajax
      var url_vars = URLencode("newemail") + "=" + URLencode(newemail1) + "&" + URLencode("update_billing") + "=" + URLencode(update_billing);
      if (!(manual_submit)) {
         /* Check for running connections */
         if (email_requester != null && email_requester.readyState != 0 && email_requester.readyState != 4) {
            email_requester.abort();
         }
         try {
            email_requester = new XMLHttpRequest();
         }
         catch (error) {
            try {
              email_requester = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (error) {
               //this probably means that Ajax isn't supported on this browser;
               //just submit form normally
               manual_submit = 1; 
            }
         }
      }
      if (manual_submit) {
         document.email_form.method = "POST";
         document.email_form.action = '/student/submit_email.php';
    document.email_form.manual.value = "1";
    document.email_form.submit();
      }
      else {
         show_please_wait();
         email_requester.onreadystatechange = email_stateHandler;
         email_requester.open("POST", "/student/submit_email.php?"+url_vars);
         email_requester.send(url_vars);
      }
   }
}

function email_stateHandler() {
  if (email_requester.readyState == 4) {
     if (email_requester.status == 200) {
        var errcode = parseInt(email_requester.responseText);
//alert(errcode); 
   if (errcode == 1 || errcode == 2) {
      show_email_error(errcode);
   }
   else if (errcode == 5) {
      //AJAX didn't put through POST variables.  Retry without AJAX.
      hide_please_wait();
      submit_email(1);
   }
   else {
      if (!(errcode == 0)) {
         errcode = 4;
      }
      else if (document.email_form.welcome) {
         window.location = '/student/';
      }
           show_email_result(errcode);
         toggle_email();
   }
        hide_please_wait();
     }
     /* IE returns a status code of 0 on some occasions, so ignore this case */
     else if (email_requester.status != 0) {
        //alert("There was an error while retrieving the URL.");
        hide_please_wait();
        submit_email(1);
     }
   }
   else {
        //window.setTimeout('theelement.value = theelement.value + " . "',5000);
   }
   return true;
}

function password_stateHandler() {
  if (password_requester.readyState == 4) {
     if (password_requester.status == 200) {
        var errcode = parseInt(password_requester.responseText);
//alert(errcode);
	if (errcode == 1 || errcode == 2) {
	   show_password_error(errcode);
	}
	else if (errcode == 5) {
 	   //AJAX didn't put through POST variables.  Retry without AJAX.
	   hide_please_wait();
	   submit_password(1);
  	}
	else {
	   if (!(errcode == 0)) {
	      errcode = 4;
	   }
	   else if (document.password_form.welcome) {
	      window.location = '/student/';
	   }
           show_password_result(errcode);
    	   toggle_password();
	}
        hide_please_wait();
     }
     /* IE returns a status code of 0 on some occasions, so ignore this case */
     else if (password_requester.status != 0) {
        //alert("There was an error while retrieving the URL.");
        hide_please_wait();
        submit_password(1);
     }
   }
   else {
        //window.setTimeout('theelement.value = theelement.value + " . "',5000);
   }
   return true;
}

function show_email_error(errcode) {
   var error_div_str = "email_error" + errcode + "_td";
   if (error_div = document.getElementById(error_div_str)) {
      error_div.style.display = "block";
   }
   if (myemail_error_tr = document.getElementById("email_error_tr")) {
      myemail_error_tr.style.display = "";
   }
}

function show_password_error(errcode) {
   var error_div_str = "password_error" + errcode + "_td";
   if (error_div = document.getElementById(error_div_str)) {
      error_div.style.display = "block";
   }
   if (mypassword_error_tr = document.getElementById("password_error_tr")) {
      //mypassword_error_tr.style.display = "table-row";
      mypassword_error_tr.style.display = "";
   }
}

function hide_email_error() {
   if (myemail_error_tr = document.getElementById("email_error_tr")) {
      myemail_error_tr.style.display = "none";
   }
   if (error_div = document.getElementById("email_error_td")) {
      error_div.style.display = "none";
   }
   if (error_div = document.getElementById("email_error1_td")) {
      error_div.style.display = "none";
   }
   if (error_div = document.getElementById("email_error2_td")) {
      error_div.style.display = "none";
   }
}

function hide_password_error() {
   if (mypassword_error_tr = document.getElementById("password_error_tr")) {
      mypassword_error_tr.style.display = "none";
   }
   if (error_div = document.getElementById("password_error_td")) {
      error_div.style.display = "none";
   }
   if (error_div = document.getElementById("password_error1_td")) {
      error_div.style.display = "none";
   }
   if (error_div = document.getElementById("password_error2_td")) {
      error_div.style.display = "none";
   }
}

function show_email_result(errcode) {
   var result_str = "email_result" + errcode;
   if (result_div = document.getElementById(result_str)) {
      result_div.style.display = "block";
   }
   if (result_tr = document.getElementById("email_result_tr")) {
      //result_tr.style.display = "table-row";
      result_tr.style.display = "";
   }
}

function show_password_result(errcode) {
   var result_str = "password_result" + errcode;
   if (result_div = document.getElementById(result_str)) {
      result_div.style.display = "block";
   }
   if (result_tr = document.getElementById("password_result_tr")) {
      //result_tr.style.display = "table-row";
      result_tr.style.display = "";
   }
}

function hide_email_result() {
   if (result_div = document.getElementById("email_result0")) {
      result_div.style.display = "none";
   }
   if (result_div = document.getElementById("email_result4")) {
      result_div.style.display = "none";
   }
   if (result_tr = document.getElementById("email_result_tr")) {
      result_tr.style.display = "none";
   }
}

function hide_password_result() {
   if (result_div = document.getElementById("password_result0")) {
      result_div.style.display = "none";
   }
   if (result_div = document.getElementById("password_result4")) {
      result_div.style.display = "none";
   }
   if (result_tr = document.getElementById("password_result_tr")) {
      result_tr.style.display = "none";
   }
}

function retrieve_password_cookie() {
   if (errcode = getCookie("password_errcode"))  {
        if (errcode == "1" || errcode == "2") {
           show_password_error(errcode);
           toggle_password();
        }
        else {
           show_password_result(errcode);
        }
        hide_please_wait();
   }
   deleteCookie("password_errcode");
}

function show_print_txn(txn_id) {
   var txn_window = window.open('/student/view_txn.php?txn_id='+txn_id,'txn_win','width=720,height=600,location=no,resizable=yes,scrollbars=yes');
   txn_window.focus();
}

function toggle_po_number(txn_id) {
   var po_div = document.getElementById('po_'+txn_id+'_div');
   var po_link = document.getElementById('po_'+txn_id+'_link');
   if (po_div && po_link) {
   if (po_link.style.display == 'none') {
      po_div.style.display = 'none';
      po_link.style.display = 'block';
   }
   else {
      po_link.style.display = 'none';
      po_div.style.display = 'block';
   }
   }
}

var po_number_requester = null;
function submit_po_number(txn_id, manual_submit) {
   if (manual_submit == '') {
      manual_submit = 0;
   }
   var po_number = eval("document.po_"+txn_id+"_form.po_"+txn_id+".value");
   setCookie("txn_id", txn_id, get_now(), "/");
   setCookie("po_number", po_number, get_now(), "/");

   if (po_number) {
      //time for Ajax
      var url_vars = URLencode("txn_id") + "=" + URLencode(txn_id) + "&" + URLencode("po_number") + "=" + URLencode(po_number);
      if (!(manual_submit)) {
         /* Check for running connections */
         if (po_number_requester != null && po_number_requester.readyState != 0 && po_number_requester.readyState != 4) {
            po_number_requester.abort();
         }
         try {
            po_number_requester = new XMLHttpRequest();
         }
         catch (error) {
            try {
              po_number_requester = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (error) {
               //this probably means that Ajax isn't supported on this browser;
               //just submit form normally
               manual_submit = 1;
            }
         }
      }
      if (manual_submit) {
         window.location = '/student/submit_po_number.php?manual=1&'+url_vars;
      }
      else {
         //show_please_wait();
         po_number_requester.onreadystatechange = po_number_stateHandler;
         po_number_requester.open("GET", "/student/submit_po_number.php?"+url_vars);
         po_number_requester.send(url_vars);
      }
   }
}

function po_number_stateHandler() {
  if (po_number_requester.readyState == 4) {
     if (po_number_requester.status == 200) {
        var txn_id = parseInt(po_number_requester.responseText);
	if (link_element = document.getElementById("link_"+txn_id)) {
	   link_element.innerHTML = eval("document.po_"+txn_id+"_form.po_"+txn_id+".value");
   	   toggle_po_number(txn_id);
	}
     }
     /* IE returns a status code of 0 on some occasions, so ignore this case */
     else if (po_number_requester.status != 0) {
	var txn_id = getCookie("txn_id");
        submit_po_number(txn_id, 1);
     }
   }
   else {
        //window.setTimeout('theelement.value = theelement.value + " . "',5000);
   }
   return true;
}

function retrieve_po_cookie() {
   var txn_id = getCookie("txn_id");
   var po_number = getCookie("po_number");
        if (link_element = document.getElementById("link_"+txn_id)) {
           link_element.innerHTML = eval("document.po_"+txn_id+"_form.po_"+txn_id+".value");
           toggle_po_number(txn_id);
        }
}

var invoice_requester = null;

function invoice_submit(manual_submit, labfee) {
   //first, shut off button to prevent premature resubmit
   //document.course_form.submit_button.onClick = '';
   document.getElementById("submit_div").style.display = "none";
   if (wait_element = document.getElementById("please_wait")) {
         wait_element.style.display = "block";
   }


   //firefox and IE are weird about Ajax-submitted passwords.  Submit manually.
   if (navigator.userAgent.indexOf("MSIE") > -1 || navigator.vendor == "Firefox"  || navigator.userAgent.indexOf("Firefox") > -1) {
      manual_submit = 1;
   }
   else if (manual_submit == '') {
      manual_submit = 0;
   }

//BIG problem with "sessions timing out", I think it's due to the CC# being 
//passed through AJAX.
manual_submit = 1;

   if (!(labfee) && (document.course_form.labfee)) {
      labfee = document.course_form.labfee.value;
      setCookie("labfee", labfee, get_now(), '/');
   }


   var error = 0;
   var wait = "Please wait . .";
   var txn_id = "";
   if (document.course_form.txn_id) {
      txn_id = document.course_form.txn_id.value;
   }
   var url_vars = 'txn_id=' + URLencode(txn_id);

   //here's where the error message would reside
   var error_div_old = document.getElementById('error_div');
   var error_parent = document.getElementById('payment_div');
   //be sure it's clear of all previous errors
   if (error_div_old) {
      error_parent.removeChild(error_div_old);
   }
   var error_div = document.createElement('div');
   error_div.setAttribute('id','error_div');
   error_div.className = 'column_header';
   error_div.setAttribute('style','font-weight:bold;font-size:12px;color:red;height:inherit;');
   var error_tag = document.createElement('div');
   var error_text = document.createTextNode('Please help us with the following:');
   error_tag.appendChild(error_text);
   error_div.appendChild(error_tag);


if (labfee) {
   //STEP 3:  Ensure that monthly subscription choice coincides with credit card payment
   var labfee_error = 0;
   for (var i=0; i < document.course_form.months.length; i++) {
      if (document.course_form.months[i].checked) {
         if (document.course_form.months[i].value == '1') {
            //this is the monthly subscription choice.  Check payment method.
            for (var j = 0; j < document.course_form.payment_type.length; j++) {
                if (document.course_form.payment_type[j].checked &&
                    !(document.course_form.payment_type[j].value == 'cc')) {
                   error = 1;
                   labfee_error = 1;
                   var step3_error = document.createElement('div');
                   step3_error.setAttribute('id','step3_error');
                   var step3_text = document.createTextNode('Payment Method:');
                   var step3_list = document.createElement('div');
                   step3_list.className = 'error';
                   step3_list.appendChild(step3_text);
                   var step3_li = document.createElement('li');
                   step3_li.className = "indented";
                   var step3_message = document.createTextNode('You have chosen the monthly subscription lab option, which requires automatic credit card deductions.  Please change your payment method to Credit Card, or choose a different lab fee option.');
                   step3_li.appendChild(step3_message);
                   //step3_li.innerHTML = "You have chosen the monthly subscription lab option, which requires automatic credit card deductions.  Please change your payment method to Credit Card, or <a href='/enroll/your-selection.php'>choose a different lab fee option</a>.";
                   step3_list.appendChild(step3_li);
                   step3_error.appendChild(step3_list);

                   error_div.appendChild(step3_error);
                }
            }
         }
         if (labfee_error == 0) {
            var months_value = document.course_form.months[i].value;
            url_vars = url_vars + "&labfee=1&months=" + URLencode(document.course_form.months[i].value);
            setCookie("months",months_value,get_now(),"/");
            setCookie("labfee", 1, get_now(), '/');
         }
         break;
      }
   }
}

   //STEP 5: check billing info form
   var billing_error = 0;
   var billing_fields = new Array('billing_name','credit_card[billing_address][street_address]','credit_card[billing_address][locality]','credit_card[billing_address][postal_code]', 'credit_card[billing_address][extended_address]','credit_card[billing_address][region]');
   var step5_list = document.createElement('div');
   step5_list.className = 'error';

   for (i = 0; i < 6; i++) {
      //document.course_form.submit_button.value = wait;
      var thevalue = document.course_form.elements[billing_fields[i]].value;
      var showerror = 0;
      if (i < 4 && thevalue == '') {
         //required element, make error message appear
         showerror = 1;
      }
      else if (billing_fields[i] == 'billing_phone') {
         //make sure proper format, at least 10 numbers
         var re = /[^\d]/g;
         var thedigits = thevalue.replace(re,"");
         if (thedigits.length < 10) {
            //required element, make error message appear
            showerror = 1;
         }
      } else if (billing_fields[i] == 'billing_name') {
         var name_array = document.course_form.elements['billing_name'].value.split(' ');

         for(var i = 0; i < name_array.length; i++) {
            if(i == (name_array.length - 1)) {
               document.course_form.elements['credit_card[billing_address][last_name]'].value = document.course_form.elements['credit_card[billing_address][last_name]'].value + ' ' + name_array[i];
            } else {
               document.course_form.elements['credit_card[billing_address][first_name]'].value = document.course_form.elements['credit_card[billing_address][first_name]'].value + ' ' + name_array[i];
            }
         }
      }

      if (showerror == 1) {
         theindex = billing_fields[i] + "_error";
         var error_element = document.getElementById(theindex);
         //error_element.style.display = "inherit";
         var tr_element = document.getElementById(billing_fields[i] + "_tr");
         tr_element.style.background = "yellow";

         var step5_li = document.createElement('li');
         step5_li.className = "indented";
         var error_message = error_element.firstChild.nodeValue;
         var step5_message = document.createTextNode(error_message);
         step5_li.appendChild(step5_message);
	 step5_list.appendChild(step5_li);

         error = 1;
         billing_error = 1;
      }
      else {
         url_vars = url_vars + "&" + URLencode(billing_fields[i]) + "=" + URLencode(thevalue) + "&";
         //setCookie(billing_fields[i],thevalue,get_now(),"/",".oreillylearning.com");
      }

      wait = wait + " .";
   }
   theindex = document.course_form.elements['credit_card[billing_address][country_code_alpha2]'].selectedIndex;
   thecountry = document.course_form.elements['credit_card[billing_address][country_code_alpha2]'][theindex].value;
   if ((thecountry == "US" || thecountry == "CA") && document.course_form.elements['credit_card[billing_address][region]'].value == '') {
      var error_element = document.getElementById("credit_card[billing_address][region]_error");
      //error_element.style.display = "inherit";
      var tr_element = document.getElementById("credit_card[billing_address][region]_tr");
      tr_element.style.background = "yellow";

      error = 1;
      billing_error = 1;
      var step5_li = document.createElement('li');
      step5_li.className = "indented";
      var error_message = error_element.firstChild.nodeValue;
      var step5_message = document.createTextNode(error_message);
      step5_li.appendChild(step5_message);
      step5_list.appendChild(step5_li);
   }
   else {
     url_vars = url_vars + "billing_country=" + URLencode(thecountry) + '&';
     //setCookie("billing_country",thecountry,get_now(),"/",".oreillylearning.com");
   }
   //finally, payment method
   for (var i = 0; i < document.course_form.payment_type.length; i++) {
      if (document.course_form.payment_type[i].checked) {
         var payment_method = document.course_form.payment_type[i].value;
         setCookie("payment_type",payment_method,get_now(), "/");

         if (payment_method == 'check') {
            url_vars = url_vars + "payment_type=check&po_number="
                + URLencode(document.course_form.po_number.value);
         }
         else if (payment_method == 'cc') {
            //check cc fields
            var card_index = document.course_form.cc_choices.selectedIndex;
            var chosen_card = document.course_form.cc_choices[card_index].value;
            if (!(chosen_card == '')) {
               url_vars = url_vars + "payment_type=cc&cc_choices=" + URLencode(chosen_card);
               setCookie("info_id",chosen_card,get_now(),"/");
            }
            else {
               var cc_fields = Array('credit_card[cardholder_name]','credit_card[number]','credit_card[expiration_month]','credit_card[expiration_year]');
               for (var j = 0; j < 4; j++) {
                   //document.course_form.submit_button.value = wait;
                   var thevalue;
                   if (j < 2) {
                        thevalue = document.course_form.elements[cc_fields[j]].value;
                   }
                   else {
                        theindex = document.course_form.elements[cc_fields[j]].selectedIndex;
                        thevalue = document.course_form.elements[cc_fields[j]][theindex].value;
                   }
                  var showerror = 0;
                  if (thevalue == '') {
                         //required element, make error message appear
                        showerror = 1;
                  }
                  else if (cc_fields[j] == 'credit_card[number]') {
                       //make sure proper format, at least 13 numbers
                       var re = /\s/g;
                       var thedigits = thevalue.replace(re,"");
                       var validcard = /^\d+$/;
                       if (thedigits.length < 13 || !(thedigits.match(validcard))) {
                            //required element, make error message appear
                            showerror = 1;
                       }
                  }
                  if (showerror == 1) {
                       theindex = cc_fields[j] + "_error";
                       var error_element = document.getElementById(theindex);
                       //error_element.style.display = "inherit";
                       var tr_index = cc_fields[j] + "_tr";
                       if (cc_fields[j] == "credit_card[expiration_month]" || cc_fields[j] == "credit_card[expiration_year]") {
                          tr_index = "cc_exp_tr";
                       }
                       var tr_element = document.getElementById(tr_index);
                       tr_element.style.background = "yellow";
                       //tr_element.className = "v2";

                       var step5_li = document.createElement('li');
                       step5_li.className = "indented";
                       var error_message = error_element.firstChild.nodeValue;
                       var step5_message = document.createTextNode(error_message); step5_li.appendChild(step5_message);
                       step5_list.appendChild(step5_li);

                       error = 1;
                       billing_error = 1;
                  }
                  else {
                       url_vars = url_vars + URLencode(cc_fields[j]) + "=" + URLencode(thevalue) + "&";

                  }
                  wait = wait + " .";
               }
            }
         }
      }
   }
   if (billing_error == 1) {
      var step5_error = document.createElement('div');
      step5_error.setAttribute('id','step5_error');
      step5_error.className = "error";
      var step5_text = document.createTextNode('Billing Info:');
      step5_error.appendChild(step5_text);
      step5_error.appendChild(step5_list);

      error_div.appendChild(step5_error);
   }


   //finally, move on....or show errors to fix
   if (error == 1) {
      if (navigator.userAgent.indexOf("IE") > -1 && navigator.userAgent.indexOf("Mac") > -1) {
         //strange problem with dynamic error, just show error6_div
         show_error_div("6");
      }
      else {
         error_parent.appendChild(error_div);
         error_div.style.display = "block";
      }

      //now turn submit button back on
        hide_please_wait();
   }
   else {
      setCookie("checkout_txn_id", document.course_form.elements['txn_id'].value, get_now(), '/');
      setCookie("manual", document.course_form.elements['manual'].value, get_now(), '/');

      setCookie("billing_name", document.course_form.elements['billing_name'].value, get_now(), '/');
      setCookie("billing_add1", document.course_form.elements['credit_card[billing_address][street_address]'].value, get_now(), '/');
      setCookie("billing_add2", document.course_form.elements['credit_card[billing_address][extended_address]'].value, get_now(), '/');
      setCookie("billing_city", document.course_form.elements['credit_card[billing_address][locality]'].value, get_now(), '/');
      setCookie("billing_state", document.course_form.elements['credit_card[billing_address][region]'].value, get_now(), '/');
      setCookie("billing_zip", document.course_form.elements['credit_card[billing_address][postal_code]'].value, get_now(), '/');
      setCookie("billing_country", document.course_form.elements['credit_card[billing_address][country_code_alpha2]'].value, get_now(), '/');

      setCookie("contact_email", document.course_form.elements['contact_email'].value, get_now(), '/');

      for(var i = 0; i < document.course_form.elements['payment_type'].length; i++) {
         if(document.course_form.elements['payment_type'][i].checked) {
            setCookie("payment_type", document.course_form.elements['payment_type'][i].value, get_now(), '/');
         }
      }

      setCookie("cc_choices", document.course_form.elements['cc_choices'].value, get_now(), '/');
      setCookie("po_number", document.course_form.elements['po_number'].value, get_now(), '/');

      /*
     //TIME FOR AJAX
      if (!(manual_submit)) {
         // Check for running connections
         if (invoice_requester != null && invoice_requester.readyState != 0 && invoice_requester.readyState != 4) {
            invoice_requester.abort();
         }
         try {
            invoice_requester = new XMLHttpRequest();
         }
         catch (error) {
            try {
               invoice_requester = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (error) {
               //this probably means that Ajax isn't supported on this browser;
               //just submit form normally
               manual_submit = 1;
            }
         }
      }
      */

      if (manual_submit) {
         document.course_form.method = "POST";
	      document.course_form.manual.value = "1";
         document.course_form.submit();
      }
      else {
         invoice_requester.onreadystatechange = invoice_stateHandler;
         invoice_requester.open("POST", "invoice_submit.php?"+url_vars);
         invoice_requester.send(url_vars);
      }
   }
}

function invoice_stateHandler() {
  if (invoice_requester.readyState == 4) {
     if (invoice_requester.status == 200) {
        var myerrcode = invoice_requester.responseText;
//alert(myerrcode);
        if (wait_element = document.getElementById("please_wait")) {
                 wait_element.style.display = "none";
        }

        if (getCookie("checkout_errcode")) {
           deleteCookie("checkout_errcode","/");
        }
//alert("myerrcode = "+myerrcode);
        if (myerrcode == "0") {
           //redirect accordingly
           if (manager_id = getCookie("manager_id")) {
                top.location = '/manager/';
           }
           else {
		mytxn_id = document.course_form.txn_id.value;
                top.location = '/student/payments.php?txn_id=' + mytxn_id;
           }
           var submit_element = document.getElementById("submit_div");
           submit_element.style.display = "block";

        }
        else if (parseInt(myerrcode) > 0) {
	   if (myerrcode == "9") {
	      alert("Your session has ended, so your payment could not be processed.  Click OK to log in again, or email us at "+support_email+" if you need help.");
	      window.open('/student/');
	   }
	   else if (myerrcode == "10") {
              alert("According to our records, this invoice has been paid.  Click OK to see your receipt, or email us at "+support_email+" if you need help.");
              window.location = '/student/payments.php';
	   }
	   else {
              show_error_div(myerrcode);
	   }
        }
	else {
        //alert("There was an error while retrieving the URL.");
        invoice_submit(1);

	}
     }
     /* IE returns a status code of 0 on some occasions, so ignore this case */
     else if (invoice_requester.status != 0) {
        //alert("There was an error while retrieving the URL.");
        invoice_submit(1);
     }
  }
  else {
        //var theelement = 'document.course_form.submit_button';
        //window.setTimeout(theelement+'.value = '+theelement+'.value + " . "',500);
   }
   return true;
}

function toggle_contact() {
   var contact_div = document.getElementById('shipping_info');
   var contact_link = document.getElementById('shipping_link');
   var contact_update = document.getElementById('shipping_update');
   if (contact_div && contact_link && contact_update) {
   if (contact_update.style.display == 'none') {
      contact_div.style.display = 'none';
      contact_update.style.display = 'block';
      contact_link.className = "dlg";
      contact_link.setAttribute("style","border:1px solid yellow;");
      contact_link.innerHTML = "|<a class=student_link href='JavaScript:toggle_contact();'>X</a>|";
   }
   else {
      contact_link.className = "student_link";
      contact_link.setAttribute("style","background:#FFFFFF;border:0px;font-weight:bold;");
      contact_link.innerHTML = "|<a class=student_link href='JavaScript:toggle_contact();'>Update</a>|";

      contact_update.style.display = 'none';
      contact_div.style.display = 'block';
   }
   }
}


var contact_requester = null;

function contact_submit(manual_submit, ceu) {
   //first, shut off button to prevent premature resubmit
   //document.course_form.submit_button.onClick = '';
   if (submit_element = document.getElementById("shipping_submit")) {
	submit_element.style.display = "none";
   }
   if (wait_element = document.getElementById("shipping_please_wait")) {
         wait_element.style.display = "block";
   }

   if (!(ceu) && (document.shipping_form.ceu)) {
      ceu = document.shipping_form.ceu.value;
   }

   var error = 0;
   url_vars = "?";
   if (ceu && (document.shipping_form.courseid)) {
      url_vars = url_vars + "courseid=" + URLencode(document.shipping_form.courseid.value) + "&";
   }

   //here's where the error message would reside
   //be sure it's clear of all previous errors
   if (error_div = document.getElementById('shipping_error_div')) {
      error_div.innerHTML = "";
   }
   error_div.className = 'column_header';
   error_div.setAttribute('style','font-weight:bold;font-size:12px;color:red;height:inherit;display:none;');
   var error_tag = document.createElement('div');
   var error_text = document.createTextNode('Please help us with the following:');
   error_tag.appendChild(error_text);
   error_div.appendChild(error_tag);


   //STEP 2:  Student Info
   var student_error = 0;
   var student_fields = new Array('student_first','student_last','student_add1','student_city','student_zip',
                        'student_add2','student_state');
   var step2_list = document.createElement('div');
   step2_list.className = 'error';
   for (i = 0; i < 7; i++) {
      //document.course_form.submit_button.value = wait;
      var thevalue = document.shipping_form.elements[student_fields[i]].value;
      var showerror = 0;
      if (i < 5 && thevalue == '') {
         //required element, make error message appear
         showerror = 1;
      }
      else if (student_fields[i] == 'student_phone') {
         //make sure proper format, at least 10 numbers
         var re = /[^\d]/g;
         var thedigits = thevalue.replace(re,"");
         if (thedigits.length < 10) {
            //required element, make error message appear
            showerror = 1;
         }
      }

      if (showerror == 1) {
         theindex = student_fields[i] + "_error";
         var error_element = document.getElementById(theindex);
         //error_element.style.display = "inherit";
         var tr_element = document.getElementById(student_fields[i] + "_tr");
         tr_element.style.background = "yellow";
         //tr_element.className = "v2";

         var step2_li = document.createElement('li');
         step2_li.className = "indented";
         var error_message = error_element.firstChild.nodeValue;
         var step2_message = document.createTextNode(error_message);
         step2_li.appendChild(step2_message);
         step2_list.appendChild(step2_li);

         error = 1;
         student_error = 1;
      }
      else {
         url_vars = url_vars + URLencode(student_fields[i]) + "=" + URLencode(thevalue) + "&";
      }
   }
   theindex = document.shipping_form.student_country.selectedIndex;
   thecountry = document.shipping_form.student_country[theindex].value;
   if ((thecountry == "US" || thecountry == "CA") && document.shipping_form.elements['student_state'].value == '') {
      var error_element = document.getElementById("student_state_error");
      //error_element.style.display = "inherit";
      var tr_element = document.getElementById("student_state_tr");
      tr_element.style.background = "yellow";

      error = 1;
      student_error = 1;
      var step2_li = document.createElement('li');
      step2_li.className = "indented";
      var error_message = error_element.firstChild.nodeValue;
      var step2_message = document.createTextNode(error_message);
      step2_li.appendChild(step2_message);
      step2_list.appendChild(step2_li);
   }
   else {
     url_vars = url_vars + "student_country=" + URLencode(thecountry) + '&';
   }
   if (student_error == 1) {
      var step2_error = document.createElement('div');
      step2_error.setAttribute('id','step2_error');
      step2_error.className = "error";
      var step2_text = document.createTextNode('Shipping Info:');
      step2_error.appendChild(step2_text);
      step2_error.appendChild(step2_list);
      error_div.appendChild(step2_error);
   }

   //finally, move on....or show errors to fix
   if (error == 1) {
      if (navigator.userAgent.indexOf("IE") > -1 && navigator.userAgent.indexOf("Mac") > -1) {
         //strange problem with dynamic error, just show error6_div
         show_error_div("6");
      }
      else {
         error_div.style.display = "block";
      }

      //now turn submit button back on
	document.getElementById("shipping_submit").style.display = "block";
        hide_please_wait();
   }
   else {
     //TIME FOR AJAX
      if (!(manual_submit)) {
         /* Check for running connections */
         if (contact_requester != null && contact_requester.readyState != 0 && contact_requester.readyState != 4) {
            contact_requester.abort();
         }
         try {
            contact_requester = new XMLHttpRequest();
         }
         catch (error) {
            try {
               contact_requester = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (error) {
               //this probably means that Ajax isn't supported on this browser;
               //just submit form normally
               manual_submit = 1;
            }
         }
      }

      if (manual_submit) {
         document.shipping_form.method = "POST";
         document.shipping_form.manual.value = "1";
         if (ceu) {
	   document.shipping_form.action = 'ceu_submit.php';
	 }
	 else {
           document.shipping_form.action = 'contact_submit.php';
	 }
         document.shipping_form.submit();
      }
      else {
         contact_requester.onreadystatechange = contact_stateHandler;
	 if (ceu) {
	    contact_requester.open("POST", "ceu_submit.php"+url_vars);
	 }
	 else {
            contact_requester.open("POST", "contact_submit.php"+url_vars);
	 }
         contact_requester.send(url_vars);
      }
   }
}

function contact_stateHandler() {
  if (contact_requester.readyState == 4) {
     if (contact_requester.status == 200) {
        var myresponse = contact_requester.responseText;
	var myerrcode = myresponse.substring(0,1);
	var newaddress = myresponse.substring(1,myresponse.length);
        if (wait_element = document.getElementById("shipping_please_wait")) {
                 wait_element.style.display = "none";
        }
        if (myerrcode == "0") {
	   if (shipping_element = document.getElementById("shipping_info")) {
	      shipping_element.innerHTML = newaddress;
	      toggle_contact();
	   }
           if (submit_element = document.getElementById("shipping_submit")) {
              submit_element.style.display = "block";
	   }
	   hide_please_wait();
        }
        else if (parseInt(myerrcode) > 0) {
              show_error_div(myerrcode);
        }
        else {
        //alert("There was an error while retrieving the URL.");
        contact_submit(1);

        }
     }
     /* IE returns a status code of 0 on some occasions, so ignore this case */
     else if (contact_requester.status != 0) {
        //alert("There was an error while retrieving the URL.");
        contact_submit(1);
     }
  }
  else {
        //window.setTimeout(theelement+'.value = '+theelement+'.value + " . "',500);
   }
   return true;
}

function remove_graded_link() {
   //function for Eclipse-based courses; a way for Mike Long to remove the handback 
   //link if there's no associated handback file
   if (handback_object = getElementById("handback_link")) {
      handback_object.style.display = "none";
   }
}

function eclipse_student() {
   //function to redirect the SSP to an Eclipse version that contains
   //no outside navigation and only Eclipse-based courses
   //if (window.location.pathname.indexOf('student/') > 0 && window.location.search.indexOf('eclipse=1') <= 0) {
	//var formvars = window.location.search.replace('?','');
	//formvars = formvars.replace('talend=1','');
	//window.location.replace(window.location.pathname + '?eclipse=1&' + formvars);
   //}
   //else if (window.location.pathname.indexOf('student/') > 0 && window.location.search.indexOf('talend=1') <= 0) {
     //   var formvars = window.location.search.replace('?','');
    //	formvars = formvars.replace('eclipse=1','');
   //      window.location.replace(window.location.pathname + '?talend=1&' + formvars);
   //}
}

function check_email(email_str){
 var filter=/^.+@.+\..{2,3}$/;

 if (filter.test(email_str)) {
    return true;
 }

 return false;
}

function betaPopUp() {
   window.open('/student/beta.html', 'betaWindow', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width=400,height=350,top=75,left=75')
}

//END STUDENT SECTION

