

//BEGIN MANAGER SECTION


//END MANAGER SECTION

//BEGIN ENROLLMENT SECTION

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) { //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);        
	alert('You may only redeem one free Certificate series. To enroll in this course, please remove another course from your Cart roster.');
      }
      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);
//alert(current_interval);
   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();
   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);
   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_month+1).toString() + "/" + new_end_date.getDate().toString() + "/" + new_end_year.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');
   //var pkg_total = parseFloat(pkg_total_element.firstChild.nodeValue);
   pkg_total_element.firstChild.nodeValue = fix_decimals(pkg_total, 2);  //CHANGED 02/12/07, was pkg_total + pkg_differnece

   //now get to all extras
   var extra_index = 0;
   var next_extra;
   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')) {
	 extra_total = parseFloat(extra_total_element.firstChild.nodeValue);
	 var extra_price = parseFloat(eval('document.course_form.extra'+extrano+'_price.value'));

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

  	 extra_total = extra_price * initial_months;  //ADDED 02/12/07
	 extra_total_element.firstChild.nodeValue = fix_decimals(extra_total, 2);  //CHANGED 02/12/07
      }
      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 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 (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";
         document.course_form.payment_type[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 {
      po_element.style.display = 'none';
      po_question.firstChild.nodeValue = 'Add p.o. number?';
   }
}

function update_cc() {
   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.cc_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.cc_exp_month.length; i++) {
	 if (document.course_form.cc_exp_month[i].value == exp_month) {
	    document.course_form.cc_exp_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.cc_exp_year.length; i++) {
         if (document.course_form.cc_exp_year[i].value == exp_year) {
            document.course_form.cc_exp_year[i].selected = true;
	    hide_course_error('cc_exp_year');
         }
      }      
   }
}

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

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','billing_add1','billing_city','billing_zip',
                        'billing_add2','billing_state');
   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;
         }
      }

      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.billing_country.selectedIndex;
   thecountry = document.course_form.billing_country[theindex].value;
   if ((thecountry == "US" || thecountry == "CA") && document.course_form.elements['billing_state'].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 + "billing_country=" + URLencode(thecountry) + '&';
     //setCookie("billing_country",thecountry,get_now(),"/",".oreillylearning.com");	
   }

   //finally, payment method
   for (var i = 0; i < document.course_form.payment_type.length; i++) {
      if (document.course_form.payment_type[i].checked) {
	 var payment_method = document.course_form.payment_type[i].value;
	 setCookie("payment_type",payment_method,get_now(),"/");

	 if (payment_method == 'check') {
	    url_vars = url_vars + "payment_type=check&po_number=" 
		+ URLencode(document.course_form.po_number.value);
	 }
	 else if (payment_method == 'cc') {
	    //check cc fields
	    var card_index = document.course_form.cc_choices.selectedIndex;
	    var chosen_card = document.course_form.cc_choices[card_index].value;
	    if (!(chosen_card == '')) {
	       url_vars = url_vars + "payment_type=cc&cc_choices=" + URLencode(chosen_card);
	       setCookie("info_id",chosen_card,get_now(),"/");
	    }
	    else {
	       var cc_fields = Array('cc_name','cc_number','cc_exp_month','cc_exp_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] == 'cc_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] == "cc_exp_month" || cc_fields[j] == "cc_exp_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 {
     //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";
      }
   }
}

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 == "cc_exp_month_tr" || tr_field == "cc_exp_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) {
   //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) {
	manual_submit = 1; //Safari doesn't allow the back button to work at all.
   }
   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 = "";
}
//alert(mypromo_code);

   //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)) {
//(myname = prompt(confirm_msg, default_name))) {

      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("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 + " " + myform.student_last.value;
hide_course_error('billing_name');
   myform.billing_add1.value = myform.student_add1.value;
hide_course_error('billing_add1');
   myform.billing_add2.value = myform.student_add2.value;
   myform.billing_city.value = myform.student_city.value;
hide_course_error('billing_city');
   myform.billing_state.value = myform.student_state.value;
hide_course_error('billing_state');
   myform.billing_zip.value = myform.student_zip.value;
hide_course_error('billing_zip');
   var student_country = myform.student_country.value;
   var country_field = myform.billing_country;
         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","billing_add1","billing_add2","billing_city",
		"billing_state","billing_zip","contact_email");
   for (i = 0; i < info_array.length; i++) {
       if (cookie_value = getCookie(info_array[i])) {
	  var cookie_field = eval("document.course_form."+info_array[i]);
	  cookie_field.value = cookie_value;
	}
   }
   //now the countries
   var country_array = new Array("student_country","billing_country");
   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", "/");
	history.go(0);
   }
}

//END CHECKOUT SECTION

//BEGIN STUDENT SECTION


//END STUDENT SECTION
