//BEGIN ENROLLMENT SECTION

var TR_URL = ''; // user to store the transpoarent direct URL for Braintree

function course_toggle(courseid) {
  if (courseid) {
     if (document.course_form) {
        eval('document.course_form.course'+courseid+'_1.checked = true');
        checkbox_toggle(courseid, '1');
     }
     else {
	var cookie_name = "course" + courseid;
	setCookie(cookie_name, 1, get_now(),"/");	
     }
     window.location = '/enroll/your-selection.php';
  }
}

function certificate_toggle(rebateno, jump) {
   //checks all courses within a Certificate, for rebates
   var array_number = 0;

   while (courseid_field = eval('document.course_form.rebate_array'+rebateno+'_'+array_number)) {
      var courseid = courseid_field.value;

      if (!(eval('document.course_form.course'+courseid+'_1.style.display') == 'none') && !(eval('document.course_form.course'+courseid+'_1.checked'))) {
         //if not checked already, check this
         eval('document.course_form.course'+courseid+'_1.checked = true');
         checkbox_toggle(courseid, 1);
      }

      array_number++;
   }

   if (jump) {
      window.location = '/enroll/your-selection.php';
   }
}

function cert_toggle(cert_array, jump) {
   for (i = 0; i < cert_array.length; i++) {
      if (!(eval('document.course_form.course'+cert_array[i]+'_1.style.display') == 'none') && !(eval('document.course_form.course'+cert_array[i]+'_1.checked'))) {
         //if not checked already, check this
         eval('document.course_form.course'+cert_array[i]+'_1.checked = true');
         checkbox_toggle(cert_array[i], 1);
      }
   }

   if (jump) {
      window.location = '/enroll/your-selection.php';
   }
}

function checkbox_toggle(courseid, which) {
   //this is just to show that all 'HTML' checkboxes are the same course, and so on
   if (!(which)) {
      which = 1;
   }

   if (eval('document.course_form.course'+courseid+'_'+which+'.style.visibility') == 'visible') {
      var checkbox_checked = eval('document.course_form.course'+courseid+'_'+which+'.checked');
      var course_string = 'document.course_form.course'+courseid+"_";
      var li_string = 'courseli'+courseid+"_";
      var price_string = 'course'+courseid+"_price_";
      var check_string = 'check'+courseid+"_";
      var counter = 1;
      var this_checkbox = null;

      while (this_checkbox = eval(course_string + counter.toString())) {
         var this_li = document.getElementById(li_string + counter.toString());
         var this_price = document.getElementById(price_string + counter.toString());

         if (!(counter == which)) {
            if (checkbox_checked) {
               this_checkbox.checked = true;
            } else {
               this_checkbox.checked = false;
               var cookie_name = "course" + courseid; // + "_" + counter.toString();
               deleteCookie(cookie_name, "/");
            }
         } else {
            if (checkbox_checked) {
               this_li.className = 'chosen'; 
               add_to_total(courseid);

               var cookie_name = "course" + courseid; // + "_" + counter.toString();

               if (!(getCookie(cookie_name))) {
                  // set the new cookie
                  setCookie(cookie_name, 1, get_now(),"/");
               }      
            } else {
               this_price.setAttribute('style','visibility:visible');
               remove_from_total(courseid);

               var cookie_name = "course" + courseid; // + "_" + counter.toString();
               deleteCookie(cookie_name, "/");
            }
         }

         counter++;
      }

      var num_rebates = check_rebates();
      if (num_rebates > 1) { //10/28/10 REMOVED BUY 1 GET 1 FREE
//6/21/10 TMG ONLY ALLOW 1 BUY 1 GET 1 FREE PROMO
	//eval('document.course_form.course'+courseid+'_1.checked = false');
        //checkbox_toggle(courseid, 1);        
      }
      check_coupons();
   }
}

function add_to_total(courseid) {
   if (intro_element = document.getElementById('price_intro')) {
      intro_element.style.display = 'none';
   }
   if (roster_element = document.getElementById('roster')) {
	roster_element.style.display = 'block';
	if (learnmore_element = document.getElementById('learn_more')) {
	   learnmore_element.style.display = 'none';
	}
	if (learnmore_submit_element = document.getElementById('learn_more_submit')) {
	   learnmore_submit_element.style.display = 'none';
	}
	if (roster_submit_element = document.getElementById('roster_submit')) {
	   roster_submit_element.style.display = 'inline';
	}
       show_roster();
   }

   //adds this courseid's price to the totals table
   var course_price_field = eval('document.course_form.course'+courseid+'_price');
   var course_price = parseFloat(course_price_field.value);
   var course_name_field = document.getElementById('courseli'+courseid+'_1');
   var course_name = course_name_field.childNodes[0].nodeValue;
   var price_string = 'course'+courseid+'_price_div';
   var price_element;
   var viewcart = 0;
   var payment = 0;
   if (document.course_form.viewcart) {
      viewcart = parseInt(document.course_form.viewcart.value);
   }
   else if (document.course_form.payment) {
      payment = parseInt(document.course_form.payment.value);
   }
   if (!(price_element = document.getElementById(price_string))) {
	price_element = document.createElement('tr');
	price_element.setAttribute('id',price_string);
	price_element.setAttribute('width','180px');
        if (!(viewcart || payment)) {
	price_element.setAttribute('display','');
	}
	else {
	price_element.setAttribute('display','none');
        }
	var rebate_div = document.getElementById('rebates');
	var main_div;
	if (main_div = document.getElementById('price_totals')) {
	   main_div.style.display = 'block';
	}

	var course_price_str = fix_decimals(course_price, 2);
	if (course_name.length > 24) {
	   course_name = course_name.substring(0,20) + "...";
	}
	//NEW ADDED 01/15/07 TMG
	if (!(viewcart || payment)) {
	   var first_td = document.createElement('td');
	   first_td.setAttribute('width','160px');
	   var first_td_text = document.createTextNode(course_name);
	   first_td.appendChild(first_td_text);

	   price_element.appendChild(first_td);

	   var second_td = document.createElement('td');
           second_td.setAttribute('text-align','right');
           var second_td_text = document.createTextNode(course_price_str);
           second_td.appendChild(second_td_text);

           price_element.appendChild(second_td);

	}
	//add a "remove" link, if not in checkout mode
	if (!(getCookie("checkout"))) {
   	   var remove_element = document.createElement('a');
	   remove_element.className = 'new_price';
	   remove_element.setAttribute('color','#777777');
	   remove_element.setAttribute('href','JavaScript:remove_from_roster('+courseid+');');
	   var remove_text = document.createTextNode('X');
	   remove_element.appendChild(remove_text);
	}
	if (main_div) {
	main_div.insertBefore(price_element,rebate_div); 
 	}

	//find out if any extra lab fees apply
	var extra_total = 0;
        if (labfee_element = document.getElementById('lab_currency')) {
        var labfee_total = parseFloat(labfee_element.firstChild.nodeValue);
//alert(labfee_total);
	var labfee_reprise = document.getElementById('lab_currency_reprise');
	var i = 0;
	var next_extra;

	while (next_extra = eval('document.course_form.extra_array'+i.toString())) {
	  var extrano = next_extra.value;
	  var j = 0;
	  var next_course;

	  while (next_course = eval('document.course_form.extra_array'+extrano+'_'+j.toString())) {
	     var this_courseid = next_course.value;

	     if (this_courseid == courseid) {
		 var extra_element;
		 if (!(document.getElementById('extra'+extrano))) {
		    extra_element = document.createElement('tr');
	            extra_element.setAttribute('id','extra'+extrano);
		    extra_element.className = 'interval';
		    extra_element.setAttribute('display','inline');
		    var extra_price = parseFloat(eval('document.course_form.extra'+extrano+'_price.value'));


		    var interval = parseInt(document.course_form.current_interval.value);
		    var gap = parseInt(document.course_form.gap.value);
		    var prorated = 0.00;
		    if (gap > 0) {
			//prorate so that the past is not charged
			interval = Math.floor(interval - (gap / 30));
			prorated = (extra_price / 30) * (gap % 30);
		    }
		    extra_total = extra_price * interval + prorated;


		    var extra_name = eval('document.course_form.extra'+extrano+'_name.value');
		    var extra_price_str = fix_decimals(extra_price, 2);
		    //var extra_text = document.createTextNode(extra_name+' Lab Fee @ $ '+extra_price_str+'/month: $ ');
		    //extra_element.appendChild(extra_text);


		    //var total_element = document.createElement('div');
		    //total_element.setAttribute('id','extra'+extrano+'_total');
		    //total_element.className = 'interval';
		    //total_element.setAttribute('style','display:block;');
		    var extra_total_str = fix_decimals(extra_total, 0);
		    //var total_text = document.createTextNode(extra_total_str);
		    //total_element.appendChild(total_text);
		    //extra_element.appendChild(total_element);
//alert("hello7-7");

		    //extra_element.innerHTML = '<span style="350px;">'+extra_name+' Lab Fee @ $'+extra_price_str+'/month: </span>$<span id=extra'+extrano+'_total>'+extra_total_str+'</span><br />';

           var first_span = document.createElement('span');
           first_span.setAttribute('width','350px');
           var first_span_text = document.createTextNode(extra_name+' Lab Fee @ $'+extra_price_str+'/month: ');
           first_span.appendChild(first_span_text);

           extra_element.appendChild(first_span);

	   var second_span_text = document.createTextNode('$');
	   extra_element.appendChild(second_span_text);

           var third_span = document.createElement('span');
           third_span.setAttribute('id','extra'+extrano+'_total');
           var third_span_text = document.createTextNode(extra_total_str);
           third_span.appendChild(third_span_text);

           extra_element.appendChild(third_span);
	   
	   var fourth_span = document.createElement('br');
           extra_element.appendChild(fourth_span);

		    var extras = document.getElementById('extras');
		    extras.appendChild(extra_element);
//alert("hello7-8");

		    //add extra lab fee to lab fee total
		    labfee_total = labfee_total + extra_total;
		 }
	      }
	      j++;
	   }
 	   i++;
	}
        labfee_element.firstChild.nodeValue = fix_decimals(labfee_total, 2);
        if (labfee_reprise) {
	   labfee_reprise.firstChild.nodeValue = fix_decimals(labfee_total, 2);
	}
	}
//alert("hello8");
	//now add tuition to total
	if (total_element = document.getElementById('currency')) {
   	   var curr_total = parseFloat(total_element.firstChild.nodeValue);
	   var new_total = curr_total + course_price + extra_total;
//alert(new_total);

	   total_element.firstChild.nodeValue = fix_decimals(new_total, 2);
	   document.getElementById('total').style.visibility = 'visible';
	   document.getElementById('labfees_reprise').style.visibility = 'visible';

	   //now check for free students
	   if (new_total <= 0) {
	      toggle_payment('check');
	   
	   }
	}
   }
}

function remove_from_total(courseid) {
   var price_string = 'course'+courseid+'_price_div';
   if (main_div = document.getElementById('price_totals')) {
   if (price_element = document.getElementById(price_string)) {
      main_div.removeChild(price_element);

      //now subtract tuition from total
      var course_price_field = eval('document.course_form.course'+courseid+'_price');
      var course_price = parseFloat(course_price_field.value);
      var total_element = document.getElementById('currency');
      var curr_total = parseFloat(total_element.firstChild.nodeValue);
      var new_total = curr_total - course_price;

      //find out if any extra lab fees apply
      var extra_total = 0;
      if (labfee_element = document.getElementById('lab_currency')) {
      var labfee_total = parseFloat(labfee_element.firstChild.nodeValue);
      var labfee_reprise = document.getElementById('lab_currency_reprise');

      var i = 0;
      var next_extra;
      while (next_extra = eval('document.course_form.extra_array'+i.toString())) {
         var extrano = next_extra.value;
         var extra_element;
         var empty = 1;
      if (extra_element = document.getElementById('extra'+extrano)) {
	 var j = 0;
	 var next_course;
         while (next_course = eval('document.course_form.extra_array'+extrano+'_'+j.toString())) {
		 var this_course = next_course.value;
		 if (thecheckbox = eval('document.course_form.course'+this_course+'_1')) {
		   if (thecheckbox.checked || thecheckbox.style.visibility == 'hidden') {
		      empty = 0;
		   }
		 }
		 j++;
         }
	 if (empty == 1) {
		//no need to keep this extra, remove...
                var extra_price = parseFloat(eval('document.course_form.extra'+extrano+'_price.value'));
                var interval = parseInt(document.course_form.current_interval.value);
                extra_total = extra_price * interval;

                var extras = document.getElementById('extras');
                extras.removeChild(extra_element);

                //subtract extra lab fee from lab fee total
                labfee_total = labfee_total - extra_total;
         }
      }
      i++;
   }
   labfee_element.firstChild.nodeValue = fix_decimals(labfee_total, 2);
   labfee_reprise.firstChild.nodeValue = fix_decimals(labfee_total, 2);
   }

   new_total = new_total - extra_total;
   new_total = fix_decimals(new_total, 2);

   total_element.firstChild.nodeValue = fix_decimals(new_total, 2);

        //now check for free students
        if (new_total <= 0) {
           toggle_payment('check');

        }

   }

   if (!(first_node = main_div.childNodes[0].id)) {
      first_node = " ";
   }
   var node_id = main_div.childNodes[1].id;
//alert(node_id);
   if (node_id.indexOf("course") < 0 && first_node.indexOf("course") < 0) {
        //document.getElementById('total').style.visibility = 'hidden';
	//document.getElementById('labfees_reprise').style.visibility = 'hidden';
        if (intro_element = document.getElementById('price_intro')) {
           intro_element.style.display = 'block';
	}
	if (roster_element = document.getElementById('roster')) {
           roster_element.style.display = 'none';
           if (learnmore_element = document.getElementById('learn_more')) {
              learnmore_element.style.display = 'block';
           }
           if (learnmore_submit_element = document.getElementById('learn_more_submit')) {
              learnmore_submit_element.style.display = 'inline';
           }
           if (roster_submit_element = document.getElementById('roster_submit')) {
              roster_submit_element.style.display = 'none';
           }
        }

	//main_div.style.display = 'none';
   }
   }
}

function check_rebates() {
   //checks for rebates using hidden 'rebate_array' fields (a sort of pseudo-array), based on all checked courses
   index = 0;
   var rebates = 0;
   var next_rebate;
   var viewcart = 0;
   var payment = 0;
   if (document.course_form.viewcart) {
      viewcart = parseInt(document.course_form.viewcart.value);
   }
   else if (document.course_form.payment) {
     payment = parseInt(document.course_form.payment.value);
   }
   while (next_rebate = eval('document.course_form.rebate_array'+index.toString())) {
      var rebateno = next_rebate.value;
      var matched = 1;

      var rebate_field = eval('document.course_form.rebate'+rebateno);
      var rebate = parseFloat(rebate_field.value);
      var discount_field = eval('document.course_form.rebate'+rebateno+'_discount');
      var discount = parseFloat(discount_field.value);

      var rebate_div = document.getElementById('rebates');
      var rebate_string = 'rebate'+rebateno+'_price';
      var curr_total = 0;
      if (total_element = document.getElementById('currency')) {
         curr_total = parseFloat(total_element.firstChild.nodeValue);
      }

      var courseindex = 0;
      var next_course;
//alert(rebateno);
      while (next_course = eval('document.course_form.rebate_array'+rebateno+'_'+courseindex.toString())) {
         var courseid = next_course.value;
//alert(courseid);
         var course_box = eval('document.course_form.course'+courseid+"_1");
         if ((course_box.type == 'hidden' && course_box.value == "0") ||
	     !(course_box.checked || course_box.style.visibility == 'hidden')) {
	       //this means that the course has NOT been chosen
	       matched = 0;
	       course_box.checked = false;

	       //ensure that this rebate is NOT in the total
	       var rebate_element;
	       if (rebate_element = document.getElementById(rebate_string)) {
		  rebate_div.removeChild(rebate_element);
                  var new_total = (curr_total/(1 - discount)) - rebate;
		  if (total_element) {
		     total_element.firstChild.nodeValue = fix_decimals(new_total, 2);
		  }
	       }    
	       break;
	 }
	 courseindex++;
      }
      if (matched == 1) {
	//success, add rebate to price field
        var rebate_name_field = eval('document.course_form.rebate'+rebateno+'_name');
        var rebate_name = rebate_name_field.value;
	var rebate_element;
 	if (!(rebate_element = document.getElementById(rebate_string))) {
 	      rebate_element = document.createElement('tr');
              rebate_element.setAttribute('id', rebate_string);
	      if (viewcart || payment) {
	        rebate_element.setAttribute('width','500px');
	      }
	      else {
		rebate_element.setAttribute('width','180px');
	      }
	      rebate_element.setAttribute('style','color:darkblue');
	      
	      //rebate = rebate;
	      var rebate_str = fix_decimals(rebate, 2);
              //var price_text = document.createTextNode(rebate_name+": $"+rebate_str);
              //rebate_element.appendChild(price_text);

	      //NEW ADDED 01/15/07 TMG

           var first_td = document.createElement('td');
	   var td_width = '160px';
	   var second_width = '';
              if (viewcart || payment) {
                td_width = '408px';
                second_width = '68px';
              }

           first_td.setAttribute('width', td_width);
           var first_td_text = document.createTextNode(rebate_name);
           first_td.appendChild(first_td_text);

           rebate_element.appendChild(first_td);

           var second_td = document.createElement('td');
           second_td.setAttribute('text-align','right');
	   second_td.setAttribute('width',second_width);
	   second_td.setAttribute('white-space','no-wrap');
           var second_td_text = document.createTextNode(rebate_str);
           second_td.appendChild(second_td_text);

           rebate_element.appendChild(second_td);


           if (payment || viewcart) {
           var third_td = document.createElement('td');
           third_td.setAttribute('width','14px');
           var third_td_text = document.createElement("dd");
           third_td.appendChild(third_td_text);
           rebate_element.appendChild(third_td);
           }



	   if (rebate_div) {
              rebate_div.appendChild(rebate_element);
	   }

              //now add (negative) tuition to total
              var new_total = (curr_total + rebate) * (1 - discount);
	      var new_total_str = fix_decimals(new_total, 2);
	      if (total_element) {
                 total_element.firstChild.nodeValue = new_total_str;
	      }
	}

	rebates++;
      }
      index++;
   }
   return rebates;
}

function check_coupons() {
   var viewcart = 0;
   var payment = 0;
   if (document.course_form.viewcart) {
      viewcart = parseInt(document.course_form.viewcart.value);
   }
   else if (document.course_form.payment) {
     payment = parseInt(document.course_form.payment.value);
   }

   if (couponid_field = eval('document.course_form.couponid')) {
      if (couponid = couponid_field.value) {

      var coupon_field = eval('document.course_form.coupon'+couponid);
      var coupon = parseFloat(coupon_field.value);
      var discount_field = eval('document.course_form.coupon'+couponid+'_discount');
      var discount = parseFloat(discount_field.value);
//alert("Discount = "+ discount);
      var coupon_div = document.getElementById('coupons');
      var total_element = document.getElementById('currency');
      var curr_total = parseFloat(total_element.firstChild.nodeValue);
      var labfee_total = 0;
      if (labfee_element = document.getElementById('lab_currency')) {
         labfee_total = parseFloat(labfee_element.firstChild.nodeValue);
      }
//alert("Lab Fee Total = " + labfee_total);
      var tuition_total = curr_total - labfee_total;
//alert("Original Tuition = " + tuition_total);
      //add coupon to price field
      if (coupon_name_field = eval('document.course_form.coupon'+couponid+'_name')) {
        var coupon_name = coupon_name_field.value;
        var coupon_element;
        var coupon_string = 'coupon'+couponid+'_price';
        var coupon_total = (-1 * tuition_total * discount) + coupon;
        var coupon_str = fix_decimals(coupon_total, 2);
//alert("Coupon total = "+coupon_str);
        if (!(coupon_element = document.getElementById(coupon_string))) {
//alert("adding coupon");
              coupon_element = document.createElement('tr');
              coupon_element.setAttribute('id', coupon_string);
              if (viewcart || payment) {
                coupon_element.setAttribute('width','500px');
              }
              else {
                coupon_element.setAttribute('width','180px');
              }
              coupon_element.setAttribute('color','darkblue');

              //NEW ADDED 02/12/07 TMG

           var first_td = document.createElement('td');
           var td_width = '160px';
	   var second_width = '';
              if (viewcart || payment) {
                td_width = '408px';
		second_width = '68px';
              }

           first_td.setAttribute('width', td_width);
           var first_td_text = document.createTextNode(coupon_name);
           first_td.appendChild(first_td_text);

           coupon_element.appendChild(first_td);

           var second_td = document.createElement('td');
	   second_td.setAttribute('id','coupon'+couponid+'_currency');
           second_td.setAttribute('text-align','right');
	   second_td.setAttribute('width',second_width);
	   second_td.setAttribute('nowrap','true');
           var second_td_text = document.createTextNode(coupon_str);
           second_td.appendChild(second_td_text);

           coupon_element.appendChild(second_td);

	   if (payment || viewcart) {
	   var third_td = document.createElement('td');
	   third_td.setAttribute('width','14px');
	   var third_td_text = document.createElement("dd");
	   third_td.appendChild(third_td_text);
	   //coupon_element.appendChild(third_td);
	   }

	   coupon_div.appendChild(coupon_element);
	 }
	 else {
//alert("updating coupon");
	      coupon_price_element = document.getElementById('coupon'+couponid+'_currency');
	      var coupon_price = parseFloat(coupon_price_element.firstChild.nodeValue);
	      tuition_total = tuition_total - coupon_price;  //this will actually add
	      curr_total = curr_total - coupon_price;
	      coupon_total = (-1 * tuition_total * discount) + coupon;
	      coupon_str = fix_decimals(coupon_total, 2);
	      coupon_price_element.firstChild.nodeValue = coupon_str;
	 }
              //now add (negative) tuition to total
              var new_total = (curr_total + coupon_total);
              var new_total_str = fix_decimals(new_total, 2);
              total_element.firstChild.nodeValue = new_total_str;

      }
   }
   }
}


function toggle_months(num_months) {
   var current_interval = parseInt(num_months);
   var initial_months = parseInt(document.course_form.initial_months.value);

   // set the new cookie
   var cookie_name = "months";
   setCookie(cookie_name, num_months, get_now(), "/");

   var start_date = new Date();
   var start_time = parseInt(document.course_form.start_date.value) * 1000;
   start_date.setTime(start_time);

   var end_date = new Date();
   var end_time = parseInt(document.course_form.end_date.value) * 1000;
   end_date.setTime(end_time);

   var now_date = new Date();

   // Set to midnight
   now_date.setHours(0);
   now_date.setMinutes(0);
   now_date.setSeconds(0);
   now_date.setMilliseconds(0);

   var now_time = now_date.getTime();

   //check to ensure that the new num_months will not mess anything up
   var new_end_date = new Date();
   new_end_date.setTime(start_time);

   //add num_months to new_end_date
   var start_month = start_date.getMonth();
   var new_end_year = start_date.getFullYear();
   var new_end_month = start_month + parseInt(num_months);

   if (new_end_month > 11) {
      new_end_month = new_end_month - 12;
      new_end_year++;
   }

   new_end_date.setMonth(new_end_month);
   new_end_date.setFullYear(new_end_year);

   // Set to midnight
   new_end_date.setHours(0);
   new_end_date.setMinutes(0);
   new_end_date.setSeconds(0);
   new_end_date.setMilliseconds(0);

   var new_end_time = new_end_date.getTime();

   //gap is for proration and to ensure any added extras synch up with what's already paid
   //gap is in days, new_end_time is in milliseconds
   var gap = parseInt(document.course_form.gap.value);

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

   var new_gap = Math.floor((new_end_time - now_time) / (24 * 60 * 60 * 1000));

   while ((new_end_time <= now_time) || (new_gap < gap)) {
      //this means that the student's account won't be current with this month choice
      new_end_month++;
      current_interval++;

      if (new_end_month > 11) {
         new_end_month = new_end_month - 12;
         new_end_year++;
      }

      new_end_date.setMonth(new_end_month);
      new_end_date.setFullYear(new_end_year);

      var new_end_time = new_end_date.getTime();
      new_gap = Math.floor((new_end_time - now_time) / (24 * 60 * 60 * 1000));
   }

   var pkg_total = 0.0;
   var extra_total = 0.0;

   //finally, update end_date and totals
   var end_date_seconds = Math.floor(new_end_time / 1000);
   document.course_form.end_date.value = end_date_seconds.toString();

   var end_div = document.getElementById("end");
   end_div.firstChild.nodeValue = (new_end_date.getMonth()+1).toString() + "/" + new_end_date.getDate().toString() + "/" + new_end_date.getFullYear().toString();

   var months_difference = Math.round((new_end_time - end_time) / (30 * 24 * 60 * 60 * 1000));

   //if months_difference is negative, it will subtract amounts instead of adding
   var total_difference = 0.00;
   initial_months = initial_months + months_difference;

   //first get the package
   var pkgno = document.course_form.pkg_array_1.value;
   var pkg_price = parseFloat(eval('document.course_form.pkg'+pkgno+'_price.value'));

   var pkg_difference = pkg_price * months_difference;
   total_difference = total_difference + pkg_difference;
   pkg_total = pkg_price * initial_months;  //ADDED 02/12/07

   var pkg_total_element = document.getElementById('pkg'+pkgno+'_total');
   pkg_total_element.firstChild.nodeValue = fix_decimals(Math.abs(pkg_total), 2);  //CHANGED 02/12/07, was pkg_total + pkg_differnece

   //now get to all extras
   var extra_index = 0;
   var next_extra;
   var new_extras = getCookie('new_extras');

   if(new_extras) {
      new_extras = new_extras.split(',');
   } else {
      new_extras = '';
   }

   if(new_extras.constructor.toString().indexOf('Array') == -1) {
      new_extras = new Array(new_extras);
   }

   while (next_extra = eval('document.course_form.extra_array'+extra_index.toString())) {
      var extrano = next_extra.value;

      if (extra_total_element = document.getElementById('extra'+extrano+'_total')) {
         var current_extra_total = 0;
         var extra_price = parseFloat(eval('document.course_form.extra'+extrano+'_price.value'));
         var new_extra_flag = false;

         //	 var extra_difference = extra_price * months_difference;
         //	 total_difference = total_difference + extra_difference;

         for(var i = 0; i < new_extras.length; i++) {
            if(extrano == new_extras[i]) {
               new_extra_flag = true;
               break;
            }
         }

         if(new_extra_flag) {
            var prorate_months = Math.floor((now_time - start_time) / (1000 * 60 * 60 * 24 * 30));

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

            current_extra_total = extra_price * (current_interval - prorate_months);
         } else {
            current_extra_total = extra_price * initial_months;
         }

         extra_total_element.firstChild.nodeValue = fix_decimals(current_extra_total, 2);
         extra_total += current_extra_total;
      }

      extra_index++;
   }

   //now update lab fee and lab fee reprise
   var lab_currency = document.getElementById("lab_currency");
   var lab_total = parseFloat(lab_currency.firstChild.nodeValue);
   //lab_total = lab_total + total_difference; 
   lab_total = pkg_total + extra_total;  //CHANGED 02/12/07
   lab_currency.firstChild.nodeValue = fix_decimals(lab_total, 2);

   var lab_interval = document.getElementById('interval_div');
   lab_interval.firstChild.nodeValue = current_interval.toString();

   if (mylab_currency_reprise = document.getElementById("lab_currency_reprise")) {
     mylab_currency_reprise.firstChild.nodeValue = fix_decimals(lab_total, 2);
   }

   if (lab_interval_reprise = document.getElementById('interval_div_reprise')) {
   lab_interval_reprise.firstChild.nodeValue = current_interval.toString();
   }

   //now, update actual roster total
   if (total_element = document.getElementById('currency')) {
      var total = parseFloat(total_element.firstChild.nodeValue);
      total = total + total_difference;
      total_element.firstChild.nodeValue = fix_decimals(total, 2);
   }

   //finally, update the hidden variables
   document.course_form.num_months.value = num_months;
   document.course_form.current_interval.value = current_interval.toString();
   document.course_form.initial_months.value = initial_months.toString();
}

function update_country(country_code, select_menu) {
   for (i = 0; i < select_menu.length; i++) {
      if (select_menu[i].value == country_code) {
         select_menu[i].selected = true;
      } else {
         select_menu[i].selected = false;
      }
   }
}

function update_state(state_code, select_menu) {
   for (i = 0; i < select_menu.length; i++) {
      if (select_menu[i].value == state_code) {
         select_menu[i].selected = true;
      } else {
         select_menu[i].selected = false;
      }
   }
}

function country_check(country, state_menu_id) {
   if((country == 'US') || (country == 'CA')) {
      document.getElementById(state_menu_id).disabled = false;
   } else {
      document.getElementById(state_menu_id).disabled = true;
      document.getElementById(state_menu_id)[0].selected = true;
   }
}

function toggle_payment(payment_type) {
   if (!(payment_type) && (theelement = document.course_form.payment_type)) {
      if (theelement[0].checked) {
         payment_type = "cc";
      } else if (theelement[1].checked) {
         payment_type = "check";
      }

      if (total_element = document.getElementById('currency')) {
         var total = parseInt(total_element.firstChild.nodeValue);

         if (total <= 0) {
            if (free_or_not_element = document.getElementById('free_or_not')) {
               free_or_not_element.firstChild.nodeValue = 'I am enrolling in courses that are already paid for.';
               payment_type = "check";
               theelement[1].checked = true;
            }  
         }
      }
   }

   if(!(TR_URL.length)) {
      TR_URL = document.course_form.action;
   }

   if (payment_type == "check") {
      hide_course_error('cc_name');
      hide_course_error('cc_number');      
      hide_course_error('cc_exp_month');
      hide_course_error('cc_exp_year');
   }

   if (po_element = document.getElementById('po_toggle')) {
      var cc_element = document.getElementById('cc_div');

      if (payment_type == 'check') {
         po_element.style.display = "inline";
         //cc_element.style.display = "none";
      } else {
         //cc_element.style.display = "block";
         po_element.style.display = "none";

         if(document.course_form.payment_option) {
            document.course_form.payment_option[0].checked = true;
         }
      }

      show_error_div("0");

      if (submit_element = document.getElementById("submit_div")) {
         submit_element.style.display = "block";
      }

      if (wait_element = document.getElementById("please_wait")) {
         wait_element.style.display = "none";
      }
   }
}

function toggle_po() {
   var po_element = document.getElementById('po_div');
   var po_question = document.getElementById('po_question');
   if (po_element.style.display == 'none' || po_element.style.display == '') {
      po_element.style.display = 'block';
      po_question.firstChild.nodeValue = 'Remove p.o. number';
   }
   else {
      document.course_form.po_number.value = '';
      po_element.style.display = 'none';
      po_question.firstChild.nodeValue = 'Add p.o. number?';
   }
}

function update_cc(type) {
   var theindex = document.course_form.cc_choices.selectedIndex;

   if (!(document.course_form.cc_choices[theindex].value == '')) {
      var card_text = document.course_form.cc_choices[theindex].text;
      var space_index = card_text.indexOf(" ");
      var number_exp = card_text.substring(space_index + 1, card_text.length);
      space_index = number_exp.indexOf(" ");

      var blinded_number = number_exp.substring(0, space_index);
      document.course_form.elements['credit_card[number]'].value = blinded_number;
      hide_course_error('cc_number');

      var exp_date = number_exp.substring(space_index + 1, number_exp.length);
      var exp_month = exp_date.substring(0,2);

      for (i = 0; i < document.course_form.elements['credit_card[expiration_month]'].length; i++) {
         if (document.course_form.elements['credit_card[expiration_month]'][i].value == exp_month) {
            document.course_form.elements['credit_card[expiration_month]'][i].selected = true;
            hide_course_error('cc_exp_month');
            break;
         }
      }

      var exp_year = exp_date.substring(3,5);

      for (i = 0; i < document.course_form.elements['credit_card[expiration_year]'].length; i++) {
         if (document.course_form.elements['credit_card[expiration_year]'][i].value == exp_year) {
            document.course_form.elements['credit_card[expiration_year]'][i].selected = true;
            hide_course_error('cc_exp_year');
         }
      }      
      
      if(document.course_form.elements['credit_card[cvv]']) {
         document.course_form.elements['credit_card[cvv]'].disabled = 'disabled';
      }

      if(!(TR_URL.length)) {
         TR_URL = document.course_form.action;
      }

      if(type == 'invoice') {
         document.course_form.action = 'invoice_submit.php?manual=1';
      } else {
         document.course_form.action = 'thankyou.php';
      }
   } else {
      document.course_form.elements['credit_card[number]'].value = '';
      document.course_form.elements['credit_card[expiration_month]'][0].selected = true;
      document.course_form.elements['credit_card[expiration_year]'][0].selected = true;
      document.course_form.action = TR_URL;
      
      if(document.course_form.elements['credit_card[cvv]']) {
         document.course_form.elements['credit_card[cvv]'].disabled = '';
      }
   }
}

function clear_cc() {
   document.course_form.cc_choices[0].selected = true;
   toggle_payment('cc');
}

function check_student_info(url_vars) {
   var error = 0;
   var wait = "Please wait . .";

   //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', 'student_phone');
   var step2_list = document.createElement('div');
   step2_list.className = 'error';
   for (i = 0; i < student_fields.length; i++) {
      //document.course_form.submit_button.value = wait;
      var thevalue = document.course_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";
         if (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";

            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) + "&";
         setCookie(student_fields[i],thevalue,get_now(),"/",".oreillyschool.com");
      }

      wait = wait + " .";
   }
   var thecountry;
   if (theindex = document.course_form.student_country.selectedIndex) {
      thecountry = document.course_form.student_country[theindex].value;
   }
   else {
      thecountry = document.course_form.student_country.value;
   }
   if ((thecountry == "US" || thecountry == "CA") && document.course_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) + '&';
     //setCookie("student_country",thecountry,get_now(),"/",".oreillylearning.com");
   }
   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);
	
      return new Array(true, step2_error);
   }
   else {
      return new Array(false, url_vars);  //need to return url_vars here
   }
}

// the following combines aboove register_submit and approve_submit
// for submit_registration's use
function submit_registration() {
   var error = 0;

   //here's where the error message would reside
   var error_div_old = document.getElementById('error_div');
   var error_parent = document.getElementById('error_td');

   //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:darkred;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);

   //STEP 2:
   var return_array = check_student_info();

   if (return_array[0]) {
      error = 1;
      error_div.appendChild(return_array[1]);
   }

   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();
   }

   //END regist_submit
   //BEGIN approve_submit

   manual_submit = 1;  //UNCOMMENTED BY TRISH 2008-06-19 FOR DEBUGGING

   //first, shut off button to prevent premature resubmit
   if (mysubmit_div = document.getElementById("submit_div")) {
      mysubmit_div.style.display = "none";
   }

   if (wait_element = document.getElementById("please_wait")) {
      wait_element.style.display = "block";
   }

   var error = 0;
   var wait = "Please wait . .";
   var url_vars = '?';

   //STEP 1: check to ensure at least one course has been chosen
   var num_courses = 0;

   var keyValuePairs = document.cookie.split(';');
   for(var i = 0; i < keyValuePairs.length; i++) {
      var name = keyValuePairs[i].substring(0, keyValuePairs[i].indexOf('='));
      var value = keyValuePairs[i].substring(keyValuePairs[i].indexOf('=')+1);

      if ((name.indexOf("course") >= 0) && value) {
         num_courses++;
         url_vars = url_vars + name + "=1&";
      }
   }

   if (num_courses <= 0) {
      error = 1;
      //create error message
      var step1_error = document.createElement('div');
      step1_error.setAttribute('id','step1_error');

      var step1_text = document.createTextNode('Step 1:');
      step1_error.appendChild(step1_text);

      var step1_list = document.createElement('div');
      step1_list.className = 'error';

      var step1_li = document.createElement('li');
      step1_li.className = "indented";

      var step1_message = document.createTextNode('You have not chosen any courses.');
      step1_li.appendChild(step1_message);
      step1_list.appendChild(step1_li);
      step1_error.appendChild(step1_list);

      error_div.appendChild(step1_error);
   }

   //STEP 2:
   var return_array = check_student_info(url_vars);

   if (return_array[0]) {
      error = 1;
      error_div.appendChild(return_array[1]);
   } else {
      url_vars = return_array[1];
   }

   //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]', 'billing_phone');
   var step5_list = document.createElement('div');
   step5_list.className = 'error';

   for (i = 0; i < billing_fields.length; i++) {
      var thevalue = document.course_form.elements[billing_fields[i]].value;
      var showerror = 0;

      if (i < 4 && thevalue == '') {
         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;
         }
      }

      if (showerror == 1) {
         theindex = billing_fields[i] + "_error";

         var error_element = document.getElementById(theindex);
         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(),"/",".oreillyschool.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");
      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 + "credit_card[billing_address][country_code_alpha2=" + URLencode(thecountry) + '&';
   }

   // gotta save billing email address
   setCookie('contact_email',document.course_form.elements['contact_email'].value,get_now(),"/",".oreillyschool.com");

   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);
   }

   // STEP 6: Check payment option
   var payment_option = document.forms['course_form'].elements['payment_option'];
   var payment_selected = false;

   if(payment_option) {
      for(var i = 0; i < payment_option.length; i++) {
         if(payment_option[i].checked) {
            payment_selected = true;
         }
      }
   }

   if(!payment_selected) {
      document.getElementById('payment_option_error').style.display = '';
      error = 1;
   }

   // STEP 7: Verify lab fee jives with payment option
   var labfee_error = 0;

   if (!getCookie('months')) {
      setCookie('months', 1, get_now(), "/");
   }

   if (getCookie('months') == '1') {
      //this is the monthly subscription choice.  Check payment method.
      for (var j = 0; j < document.course_form.payment_option.length; j++) {
         if (document.course_form.payment_option[j].checked && !(document.course_form.payment_option[j].value == 'cc') && !(document.course_form.payment_option[j].value == 'credit')) {
            error = 1;
            labfee_error = 1;

            var step7_error = document.createElement('div');
            step7_error.setAttribute('id','step7_error');

            var step7_text = document.createTextNode('Payment Method:');
            var step7_list = document.createElement('div');
            step7_list.className = 'error';
            step7_list.appendChild(step7_text);

            var step7_li = document.createElement('li');
            step7_li.className = "indented";
            step7_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>.";
            step7_list.appendChild(step7_li);
            step7_error.appendChild(step7_list);

            error_div.appendChild(step7_error);
         }
      }
   }

   if (labfee_error == 0) {
      var months_value = getCookie('months');
      url_vars = url_vars + "months=" + getCookie('months') + "&";	    
   }

   if(document.course_form.po_number.value.length) {
      url_vars = url_vars + URLencode("po_number") + "=" + URLencode(document.course_form.po_number.value) + "&";
   }

   //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 {
      document.course_form.method = "POST";
      document.course_form.action = '/include/roster_cart/submit_registration.php';
      document.course_form.submit();
   }
}

function register_submit(mode) {
   //this is manual for all
   if (mysubmit_div = document.getElementById("submit_div")) {
       mysubmit_div.style.display = "none";
   }
   if (wait_element = document.getElementById("please_wait")) {
         wait_element.style.display = "block";
   }

   var error = 0;
   //here's where the error message would reside
   var error_div_old = document.getElementById('error_div');
   var error_parent = document.getElementById('error_td');
   //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:darkred;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);

   //STEP 2:
   var return_array = check_student_info();
   if (return_array[0]) {
        error = 1;
	error_div.appendChild(return_array[1]);
   }

   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 {
	hide_please_wait();
         document.course_form.method = "POST";
	 if (mode == 'refer') {
	    document.course_form.action = '/refer/register_submit.php';
	 }
	 else {
            document.course_form.action = '/include/roster_cart/register_submit.php';
	 }
         document.course_form.submit();
   }
}


var approve_requester = null;

function approve_submit(manual_submit) {
   manual_submit = 1;  //UNCOMMENTED BY TRISH 2008-06-19 FOR DEBUGGING

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

   var error = 0;
   var wait = "Please wait . .";
   var url_vars = '?';

   //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:darkred;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);

   //STEP 1: check to ensure at least one course has been chosen
   var num_courses = 0;
   for (i = 0; i < document.course_form.elements.length; i++) {
      if (document.course_form.elements[i].type == 'checkbox' &&
	  document.course_form.elements[i].name.indexOf('course') != -1) {
	 if (document.course_form.elements[i].checked) {
	    num_courses++;
	    var course_var = document.course_form.elements[i].name;
	    var underscore = course_var.indexOf('_');
	    var course_name = course_var.substring(0, underscore);
	    url_vars = url_vars + course_name + "=1&";
	 }
      }
      else if (document.course_form.elements[i].name == 'end_of_courses') {
	 break;
      }
   }
   if (num_courses <= 0) {
      error = 1;
      //create error message
      var step1_error = document.createElement('div');
      step1_error.setAttribute('id','step1_error');
      var step1_text = document.createTextNode('Step 1:');
      step1_error.appendChild(step1_text);
      var step1_list = document.createElement('div');
      step1_list.className = 'error';
      var step1_li = document.createElement('li');
      step1_li.className = "indented";
      var step1_message = document.createTextNode('You have not chosen any courses.');
      step1_li.appendChild(step1_message);
      step1_list.appendChild(step1_li);
      step1_error.appendChild(step1_list);

      error_div.appendChild(step1_error);
   }

   //STEP 2:
   var return_array = check_student_info(url_vars);
   if (return_array[0]) {
        error = 1;
        error_div.appendChild(return_array[1]);
   }
   else {
	url_vars = return_array[1];
   }
//alert(url_vars);
   //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++) {
      //document.course_form.submit_button.value = wait;
      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 + "months=" + URLencode(document.course_form.months[i].value) + "&";	    
            setCookie("months",months_value,get_now(),"/");
	 }
	 break;
      }
      wait = wait + " .";
   }

   //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("billing_state_error");
      //error_element.style.display = "inherit";
      var tr_element = document.getElementById("billing_state_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 + "credit_card[billing_address][country_code_alpha2=" + 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 = /\D/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
      //document.course_form.action = "JavaScript:approve_submit(" + manual_submit.toString() + ");";
      //document.course_form.submit_button.value = "COMPLETE ENROLLMENT";
	   hide_please_wait();
   } else {
      setCookie("student_first", document.course_form.elements['student_first'].value, get_now(), '/');
      setCookie("student_last", document.course_form.elements['student_last'].value, get_now(), '/');
      setCookie("student_add1", document.course_form.elements['student_add1'].value, get_now(), '/');
      setCookie("student_add2", document.course_form.elements['student_add2'].value, get_now(), '/');
      setCookie("student_city", document.course_form.elements['student_city'].value, get_now(), '/');
      setCookie("student_state", document.course_form.elements['student_state'].value, get_now(), '/');
      setCookie("student_zip", document.course_form.elements['student_zip'].value, get_now(), '/');
      setCookie("student_country", document.course_form.elements['student_country'].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 (approve_requester != null && approve_requester.readyState != 0 && approve_requester.readyState != 4) {
            approve_requester.abort();
         }
         try {
            approve_requester = new XMLHttpRequest();
         }
         catch (error) {
            try {
               approve_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) {
//alert("manual");
         document.course_form.method = "POST";
	 //document.course_form.target = "_new";
         document.course_form.action = '/include/roster_cart/course_submit.php?manual=1';
         document.course_form.submit();
	 //document.course_form.submit_button.value = "COMPLETE ENROLLMENT";
	 //hide_please_wait();
      }
      else {
//alert("ajax");
         approve_requester.onreadystatechange = approve_stateHandler;
         approve_requester.open("POST", "/include/roster_cart/course_submit.php?"+url_vars);
         approve_requester.send(url_vars);
         //document.course_form.submit_button.value = "Processing";
      }
      */

      document.course_form.submit();
   }
}

function finalize() {
   var billing_error = 0;
   var error = 0;
   var wait = "Please wait . .";
   var url_vars = '?';

   //here's where the error message would reside
   var error_div_old = document.getElementById('error_div');
   var error_parent = document.getElementById('payment_div');

   var step5_list = document.createElement('div');
   step5_list.className = 'error';
   step5_list.style.width = '95%';

   //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:darkred;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((document.course_form.payment_option.value == 'credit') || (document.course_form.payment_option.value == '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]','credit_card[cvv]');

         for (var j = 0; j < cc_fields.length; j++) {
            var thevalue;
            var theindex;

            thevalue = document.course_form.elements[cc_fields[j]].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 = /\D/g;
               var thedigits = thevalue.replace(re,"");
               var validcard = /^\d+$/;

               if (thedigits.length < 13 || !(thedigits.match(validcard))) {
                  //required element, make error message appear
                  showerror = 1;
               }
            } else if (cc_fields[j] == 'credit_card[cvv]') {
               // verify cvv is 3 digits
               var re = /\D/g;
               var thedigits = thevalue.replace(re,"");
               var validcvv = /^\d+$/;

               if (thedigits.length < 3 || !(thedigits.match(validcvv))) {
                  //required element, make error message appear
                  showerror = 1;
               }
            }

            if (showerror == 1) {
               theindex = cc_fields[j] + "_error";
               var error_element = document.getElementById(theindex);
               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 + " .";
         }
	    }
   }

   error_div.appendChild(step5_list);

   //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
      //document.course_form.action = "JavaScript:approve_submit(" + manual_submit.toString() + ");";
      //document.course_form.submit_button.value = "COMPLETE ENROLLMENT";
	   hide_please_wait();
   } else {
      document.getElementById("finalize_span").style.display = 'none';
      show_please_wait();
      document.course_form.submit();
   }
}

function hide_course_error(field) {
   show_error_div("0");  //this clears out all error divs
   if (my_submit_div = document.getElementById("submit_div")) {
      my_submit_div.style.display = "block";
   }
   else if (my_submit_div = document.getElementById("shipping_submit")) {
      my_submit_div.style.display = "block";
   }

   if (wait_element = document.getElementById("please_wait")) {
         wait_element.style.display = "none";
   }
   if (wait_element = document.getElementById("shipping_please_wait")) {
         wait_element.style.display = "none";
   }

   //document.course_form.submit_button.value = "COMPLETE ENROLLMENT";

   var errorfield = field + "_error";
   if (error_element = document.getElementById(errorfield)) {
      error_element.style.display = "none";
   }

   var tr_field = field + "_tr";

   if (tr_field == "credit_card[expiration_month]_tr" || tr_field == "credit_card[expiration_year]_tr") {
      tr_field = "cc_exp_tr";
   }

   if (tr_element = document.getElementById(tr_field)) {
      tr_element.style.background = 'transparent';
   }
}

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

        if (getCookie("checkout_errcode")) {
           deleteCookie("checkout_errcode","/");
        }
        if (myerrcode == "0") {
           //redirect accordingly
           if (manager_id = getCookie("manager_id")) {
                top.location = '/manager/';
           }
           else {
                top.location = '/enroll/thankyou.php';
           }
	   var submit_element = document.getElementById("submit_div");
           submit_element.style.display = "block";
	
	   //document.course_form.submit_button.value = "COMPLETE ENROLLMENT";
        }
        else {
           show_error_div(myerrcode);
        }
     }
     /* IE returns a status code of 0 on some occasions, so ignore this case */
     else if (approve_requester.status != 0) {
        alert("There was an error while retrieving the URL.");
        approve_submit(1);
     }
  }
  else {
        var theelement = 'document.course_form.submit_button';
        //window.setTimeout(theelement+'.value = '+theelement+'.value + " . "',500);
   }
   return true;
}

//END ENROLLMENT SECTION

//BEGIN ROSTER COLUMN SECTION

function remove_from_roster(courseid) {
      var course_string = 'document.course_form.course'+courseid+"_";
      var li_string = 'courseli'+courseid+"_";
      var price_string = 'course'+courseid+"_price_";
      var counter = 1;
      var this_checkbox = null;
      while (this_checkbox = eval(course_string + counter.toString())) {
	 var which = counter.toString();
         var this_li = document.getElementById(li_string + which);
         var this_price = document.getElementById(price_string + which);
         var checkbox_checked = eval('document.course_form.course'+courseid+'_'+which+'.checked');

               this_li.className = 'question';
               this_checkbox.style.visibility = 'visible';
               this_checkbox.checked = false;
               this_price.setAttribute('style','visibility:visible');
               remove_from_total(courseid);

         var cookie_name = "course" + courseid;  // + "_" + which;
	 if (getCookie(cookie_name)) {
               deleteCookie(cookie_name, "/");
         }
         counter++;
      }
      check_rebates();
      check_coupons();
}

function show_labfees() {
  if (prefs_element = document.getElementById("prefs_td")) {
	prefs_element.style.display = "block";
	if (price_element = document.getElementById("price_td")) {
	   price_element.style.display = "none";
	}
   show_error_div("0");
      if (submit_element = document.getElementById("submit_div")) {
         submit_element.style.display = "block";
      }
      if (wait_element = document.getElementById("please_wait")) {
         wait_element.style.display = "none";
      }

  }
}

function show_roster() {
  if (price_element = document.getElementById("price_td")) {
        price_element.style.display = "block";
        if (prefs_element = document.getElementById("prefs_td")) {
           prefs_element.style.display = "none";
        }
	if (login_element = document.getElementById("login_td")) {
	   login_element.style.display = "none";
	}
	if (error_element = document.getElementById("error_td")) {
	   error_element.style.display = "none";
	}
	if (question_element = document.getElementById('question_field')) {
     	   question_element.style.display = "none";
  	}
     hide_please_wait();
     if (document.course_form.task_field) {
     document.course_form.task_field.value = "checkout";
     }
     document.course_form.action = "JavaScript:submit_task();";
  }
}

function show_question() {
  if (question_element = document.getElementById('question_field')) {
     question_element.style.display = "block";
  }
}

function hide_question() {
  if (question_element = document.getElementById('question_field')) {
     question_element.style.display = "none";
  }
}

function show_promo_code() {
  if (promo_code_element = document.getElementById('promo_code_field')) {
     promo_code_element.style.display = "block";
  }
}

function hide_promo_code() {
  if (promo_code_element = document.getElementById('promo_code_field')) {
     promo_code_element.style.display = "none";
     document.course_form.promo_code.value = "";
     hide_roster_error("promo_code");
  }
}


var task_requester = null;
function submit_task(thetask, manual_submit, bypass) {
   var isMSIE = /*@cc_on!@*/0;
   //show_roster();

   if (thetask == 'refer') {
      manual_submit = 1;
   }

   if (!bypass) {
      bypass = 0;
   }

   if (!(thetask)) {
      thetask = document.course_form.task_field.value;
      //thetask can be "checkout", "save_for_later", "multiple_students", or "promo_code"

      if (!(thetask == "checkout" || thetask == "save_for_later" || thetask == "multiple_students" || thetask == "promo_code" || thetask == "dear_trish")) {
         thetask = "checkout";
      }
   }

   document.course_form.task_field.value = thetask;

   if ((navigator.userAgent.indexOf("Safari") > -1) || (isMSIE)) {
      manual_submit = 1; //Safari doesn't allow the back button to work at all.
      // apparently IE has some issues with it too...
   } else if (manual_submit == '') {
      manual_submit = 0;
   }

   var thefield = document.course_form.theemail;
   var alternate_field = document.course_form.login_email;
   var thevalue = thefield.value;

   //ensure all email fields are set
   if (alternate_field) {
      alternate_field.value = thevalue;
   }

   //clear any errcode cookie
   if (getCookie("errcode")) {
      deleteCookie("errcode", "/");
   }

   if (getCookie("bypass")) {
      deleteCookie("bypass", "/");
   }

   //add bypass cookie, if there
   if (bypass) {
      setCookie("bypass", 1, get_now(), "/");
   }

   if (getCookie("checkout")) {
      deleteCookie("checkout", "/");
   }

   var myconfirmno = getCookie("confirmno");

   //clear out referral email is mistake was made
   if((getCookie("referral_email")) && !(document.course_form.referral_email.value)) {
      deleteCookie("referral_email", "/");
   }

   //set email and task cookie, just so we have it, and promo code
   var cookie_name = "theemail";
   setCookie(cookie_name, thevalue, get_now(), "/");
   cookie_name = "task_field";
   setCookie(cookie_name, thetask, get_now(), "/");
   cookie_name = "referral_email";

   var referral_email = "";

   if (document.course_form.referral_email && document.course_form.referral_email.value) {
      setCookie(cookie_name, document.course_form.referral_email.value, get_now(), "/");
      referral_email = document.course_form.referral_email.value;
   }

   cookie_name = "promo_code";

   var mypromo_code = "";

   if (document.course_form.promo_code && document.course_form.promo_code.value) {
      setCookie(cookie_name, document.course_form.promo_code.value, get_now(), "/");
      mypromo_code = document.course_form.promo_code.value;
   } else if (document.course_form.coupon_code && !(document.course_form.coupon_code.value == 'null')) {
      setCookie(cookie_name, document.course_form.coupon_code.value, get_now(), "/");
      mypromo_code = document.course_form.coupon_code.value;
   } else if (mypromo_code = getCookie("promo_code")) {
      // ?
   }

   if (mypromo_code == "null") {
      mypromo_code = "";
   }

   var months;

   if (document.course_form.months) {
      for(var i = 0; i < document.course_form.months.length; i++) {
         if(document.course_form.months[i].checked == true) {
            months = document.course_form.months[i].value;
         }
      }
   }

   //confirm email and ask for name
   if (document.course_form.thename) {
      default_name = document.course_form.thename.value;
   } else {
      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('email_field');
   } else if (manual_submit || bypass || myconfirmno || (1)) {
      cookie_name = "thename";
      setCookie(cookie_name, myname, get_now(), "/");

      //time for Ajax
      var question_field = "";   

      if (document.course_form.customer_question) {
         question_field = document.course_form.customer_question.value;
      }

      var url_vars = URLencode("task_field") + "=" + URLencode(thetask) + "&" +
      URLencode("months") + "=" + URLencode(months) + "&" +
      URLencode("theemail") + "=" + URLencode(thevalue) + "&" +
      URLencode("thename") + "=" + URLencode(myname) + "&" +
      URLencode("bypass") + "=" + URLencode(bypass) + "&" +
      URLencode("customer_question") + "=" + URLencode(question_field) + "&" +
      URLencode("promo_code") + "=" + URLencode(mypromo_code) + "&" + 
      URLencode("referral_confirmno") + "=" + URLencode(getCookie('referral_confirmno')) + "&" + 
      URLencode("referral_email") + "=" + URLencode(referral_email);

      if (!(manual_submit)) {
         // Check for running connections
         if (task_requester != null && task_requester.readyState != 0 && task_requester.readyState != 4) {
            task_requester.abort();
         }

         try {
            task_requester = new XMLHttpRequest();
         } catch (error) {
            try {
               task_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";
         window.location = '/include/roster_cart/submit_task.php?manual=1&' + url_vars;
      } else {
         task_requester.onreadystatechange = task_stateHandler;
         task_requester.open("GET", "/include/roster_cart/submit_task.php?"+url_vars);
         task_requester.send(url_vars);
         document.course_form.action = "JavaScript:void();";
         show_please_wait();
      }
   }
}


function task_stateHandler() {
  if (task_requester.readyState == 4) {
//alert(task_requester.status);
     if (task_requester.status == 200) {
   //     alert("success!");
	var myerrcode = task_requester.responseText;
	if (!(myerrcode)) {
	   myerrcode = "0";
 	}
	if (getCookie("errcode")) {
   	   deleteCookie("errcode", "/");
	}
	//alert(myerrcode);	

	var mytask = document.course_form.task_field.value;
        document.course_form.action = "JavaScript:submit_task('"+mytask+"');";
	
	if (myerrcode == "0" && (mytask == "checkout" || mytask == "multiple_students" || mytask == "promo_code")) {
	   //redirect accordingly
	   if (mytask == "multiple_students") {
		goto_url('/enroll/manager.php');
	   }
	   else if (mytask == "promo_code") {
                goto_url('/enroll/your-selection.php');
	   }
	   else {
		goto_url('/enroll/register.php');
	   }
	   //submit_task(mytask, 1);
	}
	else if (myerrcode == "1") {
		goto_url('/enroll/please-login.php');
	}
	else if (myerrcode == "7") {
	   show_roster_error('promo_code');	   
	   //show_roster();
	   hide_please_wait();
	}
	else if (myerrcode == "8") {
	   show_roster_error('referral_email8');
	   hide_please_wait();
   }
	else if (myerrcode == "9") {
	   show_roster_error('referral_email9');	   
	   hide_please_wait();
   }
	else {
	   show_error_panel(myerrcode);
	   hide_please_wait();
	}
     }
     /* IE returns a status code of 0 on some occasions, so ignore this case */
     else if (task_requester.status != 0) {
        //alert("There was an error while retrieving the URL.");
        submit_task('',1);
     }
   }
   else {
        //window.setTimeout('theelement.value = theelement.value + " . "',5000);
   }
   return true;
}

//END ROSTER COLUMN SECTION

//BEGIN CHECKOUT SECTION

function same_as_shipping() {
   var myform = document.course_form;

   if (myform.same.checked) {
      myform.billing_name.value = myform.student_first.value.replace(/^\s+|\s+$/g, '')  + " " + myform.student_last.value.replace(/^\s+|\s+$/g, '');
      hide_course_error('billing_name');

      myform.elements['credit_card[billing_address][street_address]'].value = myform.student_add1.value;
      hide_course_error('billing_add1');

      myform.elements['credit_card[billing_address][extended_address]'].value = myform.student_add2.value;
      myform.elements['credit_card[billing_address][locality]'].value = myform.student_city.value;
      hide_course_error('billing_city');

      myform.elements['credit_card[billing_address][region]'].value = myform.student_state.value;
      hide_course_error('billing_state');

      myform.elements['credit_card[billing_address][postal_code]'].value = myform.student_zip.value;
      hide_course_error('billing_zip');

      myform.elements['billing_phone'].value = myform.student_phone.value;
      hide_course_error('billing_phone');

      var cookies = document.cookie.split(";");

      for(var i=0; i < cookies.length; i++) {
         var cookie_value = cookies[i];

         if(cookie_value.match(/theemail/g)) {
            var cookie_split = cookie_value.split("=");
            myform.elements['contact_email'].value = cookie_split[1];
            hide_course_error('contact_email');
         }
      }

      var student_country = myform.student_country.value;
      var country_field = myform.elements['credit_card[billing_address][country_code_alpha2]'];

      for (j = 0; j < country_field.length; j++) {
         if (country_field[j].value == student_country) {
            country_field[j].selected = true;
            break;
         }
      }
   }
}

function show_error_div(errcode) {
  if (document) {
  if (error_element = document.getElementById("error_div")) {
     error_element.style.display = "none";
  }
  else if (error_element = document.getElementById("shipping_error_div")) {
     error_element.style.display = "none";
  }

  //show the proper error content
  for (i = 0; i < 10; i++) {
     var error_str = "error" + i.toString();
     if (error_element = document.getElementById(error_str + "_div")) {
        if (i == parseInt(errcode)) {
           error_element.style.display = "block";
        }
        else {
           error_element.style.display = "none";
        }
     }
  }
  }
}

function go_back() {
   window.location = '/enroll/your-selection.php';
}

function retrieve_info() {
   var info_array = new Array("student_first","student_last","student_add1","student_add2","student_city", "student_state","student_zip","billing_name","credit_card[billing_address][street_address]","credit_card[billing_address][extended_address]","credit_card[billing_address][city]", "credit_card[billing_address][region]","credit_card[billing_address][postal_code]","contact_email");

   for (i = 0; i < info_array.length; i++) {
      if(info_array[i] in document.course_form) {
         if (cookie_value = getCookie(info_array[i])) {
            var cookie_field = eval("document.course_form."+info_array[i]);

            if(cookie_field) {
               cookie_field.value = cookie_value;
            }
         }
      }
   }

   //now the countries
   var country_array = new Array("student_country","credit_card[billing_address][country_code_alpha2]");

   for (i = 0; i < country_array.length; i++) {
      if (cookie_value = getCookie(country_array[i])) {
         var country_field = eval("document.course_form."+country_array[i]);

         for (j = 0; j < country_field.length; j++) {
            if (country_field[j].value == cookie_value) {
               country_field[j].selected = true;
               break;
            }
         }
      }
   }
}

function show_referral(el) {
   if(el.checked) {
      document.getElementById('referral_row').style.display = '';
   } else {
      document.getElementById('referral_row').style.display = 'none';
   }
}

function delete_promos(no_alert) {
   if (no_alert || confirm("Are you sure you want to remove this promotion?")) {
      deleteCookie("corporateid", "/");
      deleteCookie("promo_code", "/");

      if(document.URL.match(/enroll/g)) {
         setCookie("promos_deleted", 1, get_now(), "/");
         history.go(-1);
      } else {
         history.go(0);
      }
   }
}

function show_print_contract() {
   var contract = document.getElementById('enrollment_contract').value;
   var contractWin = window.open('', 'contractWin', 'width=720,location=no,resizable=yes,scrollbars=yes');

   str = contract.split("\n");

   contractWin.document.write('<html><head><title>Registration Contract</title></head>');
   contractWin.document.write('<body>');
   contractWin.document.write('<p>' + (str.join('</p><p>')) + '</p>');
   contractWin.document.write('</body></html');
   contractWin.document.close();
   contractWin.focus();
}

function toggle_enrollment() {
   var fbutton_img = document.getElementById('finalize_button_image');
   var fbutton = document.getElementById('finalize_button');

   if(fbutton_img.style.opacity == .4) {
      fbutton_img.style.opacity = 1;
      fbutton.onclick = function() {
         finalize();
      }
      fbutton.href = "Javascript:void(0)";
   } else {
      fbutton_img.style.opacity = .4;
      fbutton.onclick = "";
      document.anchors['finalize_button'].removeAttribute("href");
   }
}

//END CHECKOUT SECTION

//BEGIN STUDENT SECTION


//END STUDENT SECTION

