// coded for OddCon 2010
// kyle davis <anthem1@gmail.com>

var attendees = Array();
var current_attendee = 1;
attendees[1] = Array();
var total_attendees = 1;
var is_dealer = false;
var shirt_color = "Color";
var order_total = 0;

function InitializeForm() {
  document.getElementById("javascript_warning").style.display = "none";
  document.getElementById("dealer_tab").style.display = "none";
  document.getElementById("dealer_section").style.display = "none";
  document.getElementById("checkout_section").style.display = "none";
  document.getElementById("registration_div").style.display = "block";
  NewAttendee(1);
  LoadAttendee(1);
}

function ShowAttendee(index) {
  if (current_attendee == index) {
    return ;
  };
  HideCurrentTab();
  LoadAttendee(index);
};

function ShowDealerInfo() {
  if (current_attendee == -1) {
    return ;
  };
  HideCurrentTab();
  current_attendee = -1;
  document.getElementById("dealer_tab").className = "tab_selected";
  document.getElementById("dealer_section").style.display = "block";
};

function ShowCheckoutInfo() {
  if (current_attendee == -2) {
    return ;
  };
  HideCurrentTab();
  current_attendee = -2;
  FillCheckoutTable();
  document.getElementById("checkout_tab").className = "tab_selected";
  document.getElementById("checkout_section").style.display = "block";
};

function HideCurrentTab() {
  if ((current_attendee > 0) && (current_attendee <= total_attendees)) {
    ReplaceCurrentAttendeeInCopyList();
    SaveAttendee(current_attendee);
    document.getElementById("attendee_tab_" + current_attendee).className = "tab";
    document.getElementById("attendee_section").style.display = "none";
  }
  else if (current_attendee == -1) {
    document.getElementById("dealer_tab").className = "tab";
    document.getElementById("dealer_section").style.display = "none";
  }
  else if (current_attendee == -2) {
    document.getElementById("checkout_tab").className = "tab";
    document.getElementById("checkout_section").style.display = "none";
  };
};

function AddAttendee() {
  var tab_bar = document.getElementById("tab_bar");
  var add_new_tab = document.getElementById("add_new_tab");
  
  total_attendees += 1;
  attendees[total_attendees] = Array();
  NewAttendee(total_attendees);

  // Create new tab
  var new_tab = document.createElement('div');
  new_tab.className = "tab";
  new_tab.id = "attendee_tab_" + total_attendees;
  new_tab.innerHTML = "<a href=\"javascript:ShowAttendee(" + total_attendees + ");\">Attendee " + total_attendees + "</a>";  
  tab_bar.insertBefore(new_tab, add_new_tab);

  var new_option = document.createElement('option');
  new_option.innerHTML = "Attendee " + total_attendees;
  new_option.value = total_attendees;
  document.getElementById("address_same_as").appendChild(new_option);

  new_option = document.createElement('option');
  new_option.innerHTML = "Attendee " + total_attendees;
  new_option.value = total_attendees;
  document.getElementById("parent_is").appendChild(new_option);

  new_option = document.createElement('option');
  new_option.innerHTML = "Attendee " + total_attendees;
  new_option.value = total_attendees;
  document.getElementById("dealer_address_same_as").appendChild(new_option);

  ShowAttendee(total_attendees);
};

// Remove an attendee from the array, tabs, and copy lists
function RemoveAttendee() {
  if ((current_attendee < 1) || (current_attendee > total_attendees)) {
    return ;
  };
  if (total_attendees == 1) {
    alert('Can\'t remove the only attendee.');
    return ;
  }
  var delete_index = current_attendee;

  ReplaceCurrentAttendeeInCopyList();
  
  // Shuffle attendees down
  for(index = current_attendee; index < total_attendees; index++) {
    attendees[index] = attendees[index + 1];
  };
  attendees[total_attendees] = null;
  
  // Remove last attendee tab
  var tab_bar = document.getElementById("tab_bar");
  var remove_tab = document.getElementById("attendee_tab_" + total_attendees);
  tab_bar.removeChild(remove_tab);

  var select_object = document.getElementById("address_same_as");
  var remove_option = select_object.lastChild;
  select_object.removeChild(remove_option);

  select_object = document.getElementById("parent_is");
  remove_option = select_object.lastChild;
  select_object.removeChild(remove_option);

  select_object = document.getElementById("dealer_address_same_as");
  remove_option = select_object.lastChild;
  select_object.removeChild(remove_option);
  
  // Decrement total_attendees
  total_attendees -= 1;
  // fix parent references
  for(index = 1; index <= total_attendees; index++) {
    if (attendees[index]['parent_is'] == delete_index) {
      attendees[index]['parent_is'] = '';
    }
    else if (attendees[index]['parent_is'] > delete_index) {
      attendees[index]['parent_is'] -= 1;
    }
  };
  // Load up attendee
  if (current_attendee > total_attendees) {
    current_attendee = total_attendees;
  }
  LoadAttendee(current_attendee);
};

// Inserts defaults for a new attendee
function NewAttendee(index) {
  attendees[index]['registration_type'] = 'Full';
  attendees[index]['registration_day'] = '';
  attendees[index]['dealer'] = '0';
  attendees[index]['first_name'] = '';
  attendees[index]['middle_name'] = '';
  attendees[index]['last_name'] = '';
  attendees[index]['badge_line_1'] = '';
  attendees[index]['badge_line_2'] = '';
  attendees[index]['street_line_1'] = '';
  attendees[index]['street_line_2'] = '';
  attendees[index]['city'] = '';
  attendees[index]['state'] = '';
  attendees[index]['zip'] = '';
  attendees[index]['email'] = '';
  attendees[index]['phone'] = '';
  attendees[index]['over_18'] = '0';
  attendees[index]['parent_is'] = '';
  attendees[index]['parent_first_name'] = '';
  attendees[index]['parent_middle_name'] = '';
  attendees[index]['parent_last_name'] = '';
  attendees[index]['parent_street_line_1'] = '';
  attendees[index]['parent_street_line_2'] = '';
  attendees[index]['parent_city'] = '';
  attendees[index]['parent_state'] = '';
  attendees[index]['parent_zip'] = '';
  attendees[index]['parent_email'] = '';
  attendees[index]['parent_phone'] = '';
  attendees[index]['shirt_color_M'] = '0';
  attendees[index]['shirt_color_L'] = '0';
  attendees[index]['shirt_color_XL'] = '0';
  attendees[index]['shirt_color_XXL'] = '0';
  attendees[index]['shirt_color_XXXL'] = '0';
  attendees[index]['shirt_grey_M'] = '0';
  attendees[index]['shirt_grey_L'] = '0';
  attendees[index]['shirt_grey_XL'] = '0';
  attendees[index]['shirt_grey_XXL'] = '0';
  attendees[index]['shirt_grey_XXXL'] = '0';
};

// Saves the attendee form to the attendees array
function SaveAttendee(index) {
  if ((index < 1) || (index > total_attendees)) {
    return ;
  };
  attendees[index]['registration_type'] = document.getElementById('registration_type').value;
  if (attendees[index]['registration_type'] == 'Day') {
    attendees[index]['registration_day'] = document.getElementById('registration_day').value;
  }
  else {
    attendees[index]['registration_day'] = '';
  };
  if (document.getElementById('dealer').checked) {
    attendees[index]['dealer'] = '1';
  }
  else {
    attendees[index]['dealer'] = '0';
  };
  attendees[index]['first_name'] = document.getElementById('first_name').value;
  attendees[index]['middle_name'] = document.getElementById('middle_name').value;
  attendees[index]['last_name'] = document.getElementById('last_name').value;
  attendees[index]['badge_line_1'] = document.getElementById('badge_line_1').value;
  attendees[index]['badge_line_2'] = document.getElementById('badge_line_2').value;
  attendees[index]['street_line_1'] = document.getElementById('street_line_1').value;
  attendees[index]['street_line_2'] = document.getElementById('street_line_2').value;
  attendees[index]['city'] = document.getElementById('city').value;
  attendees[index]['state'] = document.getElementById('state').value;
  attendees[index]['zip'] = document.getElementById('zip').value;
  attendees[index]['email'] = document.getElementById('email').value;
  attendees[index]['phone'] = document.getElementById('phone').value;
  if (document.getElementById('over_18').checked) {
    attendees[index]['over_18'] = '1';
  }
  else {
    attendees[index]['over_18'] = '0';
  };
  attendees[index]['parent_is'] = document.getElementById('parent_is').value;
  attendees[index]['parent_first_name'] = document.getElementById('parent_first_name').value;
  attendees[index]['parent_middle_name'] = document.getElementById('parent_middle_name').value;
  attendees[index]['parent_last_name'] = document.getElementById('parent_last_name').value;
  attendees[index]['parent_street_line_1'] = document.getElementById('parent_street_line_1').value;
  attendees[index]['parent_street_line_2'] = document.getElementById('parent_street_line_2').value;
  attendees[index]['parent_city'] = document.getElementById('parent_city').value;
  attendees[index]['parent_state'] = document.getElementById('parent_state').value;
  attendees[index]['parent_zip'] = document.getElementById('parent_zip').value;
  attendees[index]['parent_email'] = document.getElementById('parent_email').value;
  attendees[index]['parent_phone'] = document.getElementById('parent_phone').value;
  attendees[index]['shirt_color_M'] = document.getElementById('shirt_color_M').value;
  attendees[index]['shirt_color_L'] = document.getElementById('shirt_color_L').value;
  attendees[index]['shirt_color_XL'] = document.getElementById('shirt_color_XL').value;
  attendees[index]['shirt_color_XXL'] = document.getElementById('shirt_color_XXL').value;
  attendees[index]['shirt_color_XXXL'] = document.getElementById('shirt_color_XXXL').value;
  attendees[index]['shirt_grey_M'] = document.getElementById('shirt_grey_M').value;
  attendees[index]['shirt_grey_L'] = document.getElementById('shirt_grey_L').value;
  attendees[index]['shirt_grey_XL'] = document.getElementById('shirt_grey_XL').value;
  attendees[index]['shirt_grey_XXL'] = document.getElementById('shirt_grey_XXL').value;
  attendees[index]['shirt_grey_XXXL'] = document.getElementById('shirt_grey_XXXL').value;
}

// Loads the attendee form from the attendee array
function LoadAttendee(index) {
  if ((index < 1) || (index > total_attendees)) {
    return ;
  };
  document.getElementById('registration_type').value = attendees[index]['registration_type'];
  document.getElementById('registration_day').value = attendees[index]['registration_day'];
  document.getElementById('dealer').checked = (attendees[index]['dealer'] == '1');
  document.getElementById('first_name').value = attendees[index]['first_name'];
  document.getElementById('middle_name').value = attendees[index]['middle_name'];
  document.getElementById('last_name').value = attendees[index]['last_name'];
  document.getElementById('badge_line_1').value = attendees[index]['badge_line_1'];
  document.getElementById('badge_line_2').value = attendees[index]['badge_line_2'];
  document.getElementById('street_line_1').value = attendees[index]['street_line_1'];
  document.getElementById('street_line_2').value = attendees[index]['street_line_2'];
  document.getElementById('city').value = attendees[index]['city'];
  document.getElementById('state').value = attendees[index]['state'];
  document.getElementById('zip').value = attendees[index]['zip'];
  document.getElementById('email').value = attendees[index]['email'];
  document.getElementById('phone').value = attendees[index]['phone'];
  document.getElementById('over_18').checked = (attendees[index]['over_18'] == '1');
  document.getElementById('parent_is').value = attendees[index]['parent_is'];
  document.getElementById('parent_first_name').value = attendees[index]['parent_first_name'];
  document.getElementById('parent_middle_name').value = attendees[index]['parent_middle_name'];
  document.getElementById('parent_last_name').value = attendees[index]['parent_last_name'];
  document.getElementById('parent_street_line_1').value = attendees[index]['parent_street_line_1'];
  document.getElementById('parent_street_line_2').value = attendees[index]['parent_street_line_2'];
  document.getElementById('parent_city').value = attendees[index]['parent_city'];
  document.getElementById('parent_state').value = attendees[index]['parent_state'];
  document.getElementById('parent_zip').value = attendees[index]['parent_zip'];
  document.getElementById('parent_email').value = attendees[index]['parent_email'];
  document.getElementById('parent_phone').value = attendees[index]['parent_phone'];
  document.getElementById('shirt_color_M').value = attendees[index]['shirt_color_M'];
  document.getElementById('shirt_color_L').value = attendees[index]['shirt_color_L'];
  document.getElementById('shirt_color_XL').value = attendees[index]['shirt_color_XL'];
  document.getElementById('shirt_color_XXL').value = attendees[index]['shirt_color_XXL'];
  document.getElementById('shirt_color_XXXL').value = attendees[index]['shirt_color_XXXL'];
  document.getElementById('shirt_grey_M').value = attendees[index]['shirt_grey_M'];
  document.getElementById('shirt_grey_L').value = attendees[index]['shirt_grey_L'];
  document.getElementById('shirt_grey_XL').value = attendees[index]['shirt_grey_XL'];
  document.getElementById('shirt_grey_XXL').value = attendees[index]['shirt_grey_XXL'];
  document.getElementById('shirt_grey_XXXL').value = attendees[index]['shirt_grey_XXXL'];  

  current_attendee = index;
  document.getElementById("attendee_tab_" + current_attendee).className = "tab_selected";
  document.getElementById("attendee_section").style.display = "block";
  InitializeAttendeeForm();
};

function InitializeAttendeeForm() {
  RegistrationTypeChanged();
  Over18Changed();
  RemoveCurrentAttendeeFromCopyList();
  ParentIsChanged();
};

// Removes the current attendee from the copy and parent is list
// so it cannot copy itself or be their own parent
function RemoveCurrentAttendeeFromCopyList() {
  var select_object = document.getElementById("address_same_as");
  var remove_option = select_object.options[current_attendee];
  select_object.removeChild(remove_option);

  if (select_object.options.length <= 1) {
    document.getElementById("copy_address_div").style.display = "none"; 
  }
  else {
    document.getElementById("copy_address_div").style.display = "block"; 
  };

  select_object = document.getElementById("parent_is");
  remove_option = select_object.options[current_attendee];
  select_object.removeChild(remove_option);
};

// Replaces the current attendee in the copy and parent is list
function ReplaceCurrentAttendeeInCopyList() {
  var new_option = document.createElement('option');
  new_option.innerHTML = "Attendee " + current_attendee;
  new_option.value = current_attendee;
  var select_object = document.getElementById("address_same_as");
  if (select_object.options.length <= current_attendee) {
    select_object.appendChild(new_option);
  }
  else {
    select_object.insertBefore(new_option, select_object.options[current_attendee]);
  };

  new_option = document.createElement('option');
  new_option.innerHTML = "Attendee " + current_attendee;
  new_option.value = current_attendee;
  select_object = document.getElementById("parent_is");
  if (select_object.options.length <= current_attendee) {
    select_object.appendChild(new_option);
  }
  else {
    select_object.insertBefore(new_option, select_object.options[current_attendee]);
  };
};

function RegistrationTypeChanged() {
  var registration_type = document.getElementById("registration_type").value;
  if (registration_type == 'Day') {
    document.getElementById("registration_day_div").style.display = "block"; 
  }
  else {
    document.getElementById("registration_day_div").style.display = "none"; 
  };
  if ((registration_type == 'Youth') || (registration_type == 'Child')) {
    document.getElementById("over_18").checked = false;
    document.getElementById("over_18_div").style.display = "none";
    document.getElementById("parent_is_prompt").className = "prompt required";
    document.getElementById("parent_is_label").innerHTML = "Responsible Adult Is Attending:*";
    document.getElementById("parent_info_details_div").style.display = "none";
  }
  else {
    document.getElementById("over_18_div").style.display = "block";
    document.getElementById("parent_is_prompt").className = "prompt";
    document.getElementById("parent_is_label").innerHTML = "Responsible Adult Is Attending:";
    ParentIsChanged();
  }
  if (registration_type == 'Student') {
    document.getElementById("student_instructions").style.display = "block"; 
  }
  else {
    document.getElementById("student_instructions").style.display = "none"; 
  };
  Over18Changed();
};

function DealerChanged() {
  if (document.getElementById('dealer').checked) {
    attendees[current_attendee]['dealer'] = '1';
  }
  else {
    attendees[current_attendee]['dealer'] = '0';
  };  
  is_dealer = false;
  for(index = 1; index <= total_attendees; index++) {
    if (attendees[index]['dealer'] == '1') {
      is_dealer = true;
    }; 
  };
  if (is_dealer) {
    document.getElementById("dealer_tab").style.display = "block";
  }
  else {
    document.getElementById("dealer_tab").style.display = "none";
  };
};

function NameChanged() {
  var first_name = document.getElementById('first_name').value;
  var last_name = document.getElementById('last_name').value;

  document.getElementById('badge_line_1').value = first_name;
  document.getElementById('badge_line_2').value = last_name;
};

function Over18Changed() {
  if (document.getElementById("over_18").checked) {
    document.getElementById("parent_info_div").style.display = "none";
  }
  else {
    document.getElementById("parent_info_div").style.display = "block";
  };
};

function ParentIsChanged() {
  var registration_type = document.getElementById("registration_type").value;
  if ((registration_type == 'Youth') || (registration_type == 'Child') || (document.getElementById("parent_is").value != '')) {
    document.getElementById("parent_info_details_div").style.display = "none";
  }
  else {
    document.getElementById("parent_info_details_div").style.display = "block";
  };
};

function CopyContact() {
  var attendee_from = document.getElementById("address_same_as").value;
  document.getElementById('street_line_1').value = attendees[attendee_from]['street_line_1'];
  document.getElementById('street_line_2').value = attendees[attendee_from]['street_line_2'];
  document.getElementById('city').value = attendees[attendee_from]['city'];
  document.getElementById('state').value = attendees[attendee_from]['state'];
  document.getElementById('zip').value = attendees[attendee_from]['zip'];
  document.getElementById('email').value = attendees[attendee_from]['email'];
  document.getElementById('phone').value = attendees[attendee_from]['phone'];  
};

function CopyContactToParentContact() {
  document.getElementById('parent_street_line_1').value = document.getElementById('street_line_1').value;
  document.getElementById('parent_street_line_2').value = document.getElementById('street_line_2').value;
  document.getElementById('parent_city').value = document.getElementById('city').value;
  document.getElementById('parent_state').value = document.getElementById('state').value;
  document.getElementById('parent_zip').value = document.getElementById('zip').value;
  document.getElementById('parent_email').value = document.getElementById('email').value;
  document.getElementById('parent_phone').value = document.getElementById('phone').value;  
};

function CopyDealerContact() {
  var attendee_from = document.getElementById("dealer_address_same_as").value;
  document.getElementById('dealer_street_line_1').value = attendees[attendee_from]['street_line_1'];
  document.getElementById('dealer_street_line_2').value = attendees[attendee_from]['street_line_2'];
  document.getElementById('dealer_city').value = attendees[attendee_from]['city'];
  document.getElementById('dealer_state').value = attendees[attendee_from]['state'];
  document.getElementById('dealer_zip').value = attendees[attendee_from]['zip'];
  document.getElementById('dealer_email').value = attendees[attendee_from]['email'];
  document.getElementById('dealer_phone').value = attendees[attendee_from]['phone'];  
};

function FillCheckoutTable() {
  var names = '';
  var has_shirts = false;
  var total = 0;
  var checkout_table = document.getElementById("checkout_table");
  while (checkout_table.rows.length > 2) { // Clear any old data out
    checkout_table.deleteRow(1);
  };
  for (index = 1; index <= total_attendees; index++) {
    var name = FormatName(attendees[index]['first_name'], attendees[index]['middle_name'], attendees[index]['last_name']);
    var new_row = checkout_table.insertRow(checkout_table.rows.length - 1);
    new_row.className = "checkout_table_row";
    new_row.insertCell(0).innerHTML = name
    new_row.insertCell(1).innerHTML = FormatMembership(attendees[index]['registration_type'], attendees[index]['registration_day']);
    var amount = GetRegistrationAmount(attendees[index]['registration_type']);
    total += amount;
    new_row.insertCell(2).innerHTML = "$ " + amount + ".00";

    if (names.length > 0 ) {
      names += ', ' + name;
    }
    else {
      names = name;
    };

    if (attendees[index]['shirt_color_M'] > 0) {
      has_shirts = true;
      var new_row = checkout_table.insertRow(checkout_table.rows.length - 1);
      new_row.className = "checkout_table_row";
      new_row.insertCell(0).innerHTML = name;
      new_row.insertCell(1).innerHTML = attendees[index]['shirt_color_M'] + ' M ' + shirt_color + ' Shirt(s)';
      var shirt_amount = 12 * attendees[index]['shirt_color_M'];
      total += shirt_amount;
      new_row.insertCell(2).innerHTML = "$ " + shirt_amount + ".00";
    };

    if (attendees[index]['shirt_color_L'] > 0) {
      has_shirts = true;
      var new_row = checkout_table.insertRow(checkout_table.rows.length - 1);
      new_row.className = "checkout_table_row";
      new_row.insertCell(0).innerHTML = name;
      new_row.insertCell(1).innerHTML = attendees[index]['shirt_color_L'] + ' L ' + shirt_color + ' Shirt(s)';
      var shirt_amount = 12 * attendees[index]['shirt_color_L'];
      total += shirt_amount;
      new_row.insertCell(2).innerHTML = "$ " + shirt_amount + ".00";
    };

    if (attendees[index]['shirt_color_XL'] > 0) {
      has_shirts = true;
      var new_row = checkout_table.insertRow(checkout_table.rows.length - 1);
      new_row.className = "checkout_table_row";
      new_row.insertCell(0).innerHTML = name;
      new_row.insertCell(1).innerHTML = attendees[index]['shirt_color_XL'] + ' XL ' + shirt_color + ' Shirt(s)';
      var shirt_amount = 14 * attendees[index]['shirt_color_XL'];
      total += shirt_amount;
      new_row.insertCell(2).innerHTML = "$ " + shirt_amount + ".00";
    };

    if (attendees[index]['shirt_color_XXL'] > 0) {
      has_shirts = true;
      var new_row = checkout_table.insertRow(checkout_table.rows.length - 1);
      new_row.className = "checkout_table_row";
      new_row.insertCell(0).innerHTML = name;
      new_row.insertCell(1).innerHTML = attendees[index]['shirt_color_XXL'] + ' XXL ' + shirt_color + ' Shirt(s)';
      var shirt_amount = 14 * attendees[index]['shirt_color_XXL'];
      total += shirt_amount;
      new_row.insertCell(2).innerHTML = "$ " + shirt_amount + ".00";
    };

    if (attendees[index]['shirt_color_XXXL'] > 0) {
      has_shirts = true;
      var new_row = checkout_table.insertRow(checkout_table.rows.length - 1);
      new_row.className = "checkout_table_row";
      new_row.insertCell(0).innerHTML = name;
      new_row.insertCell(1).innerHTML = attendees[index]['shirt_color_XXXL'] + ' XXXL ' + shirt_color + ' Shirt(s)';
      var shirt_amount = 14 * attendees[index]['shirt_color_XXXL'];
      total += shirt_amount;
      new_row.insertCell(2).innerHTML = "$ " + shirt_amount + ".00";
    };

    if (attendees[index]['shirt_grey_M'] > 0) {
      has_shirts = true;
      var new_row = checkout_table.insertRow(checkout_table.rows.length - 1);
      new_row.className = "checkout_table_row";
      new_row.insertCell(0).innerHTML = name;
      new_row.insertCell(1).innerHTML = attendees[index]['shirt_grey_M'] + ' M Grey Shirt(s)';
      var shirt_amount = 12 * attendees[index]['shirt_grey_M'];
      total += shirt_amount;
      new_row.insertCell(2).innerHTML = "$ " + shirt_amount + ".00";
    };

    if (attendees[index]['shirt_grey_L'] > 0) {
      has_shirts = true;
      var new_row = checkout_table.insertRow(checkout_table.rows.length - 1);
      new_row.className = "checkout_table_row";
      new_row.insertCell(0).innerHTML = name;
      new_row.insertCell(1).innerHTML = attendees[index]['shirt_grey_L'] + ' L Grey Shirt(s)';
      var shirt_amount = 12 * attendees[index]['shirt_grey_L'];
      total += shirt_amount;
      new_row.insertCell(2).innerHTML = "$ " + shirt_amount + ".00";
    };

    if (attendees[index]['shirt_grey_XL'] > 0) {
      has_shirts = true;
      var new_row = checkout_table.insertRow(checkout_table.rows.length - 1);
      new_row.className = "checkout_table_row";
      new_row.insertCell(0).innerHTML = name;
      new_row.insertCell(1).innerHTML = attendees[index]['shirt_grey_XL'] + ' XL Grey Shirt(s)';
      var shirt_amount = 14 * attendees[index]['shirt_grey_XL'];
      total += shirt_amount;
      new_row.insertCell(2).innerHTML = "$ " + shirt_amount + ".00";
    };

    if (attendees[index]['shirt_grey_XXL'] > 0) {
      has_shirts = true;
      var new_row = checkout_table.insertRow(checkout_table.rows.length - 1);
      new_row.className = "checkout_table_row";
      new_row.insertCell(0).innerHTML = name;
      new_row.insertCell(1).innerHTML = attendees[index]['shirt_grey_XXL'] + ' XXL Grey Shirt(s)';
      var shirt_amount = 14 * attendees[index]['shirt_grey_XXL'];
      total += shirt_amount;
      new_row.insertCell(2).innerHTML = "$ " + shirt_amount + ".00";
    };

    if (attendees[index]['shirt_grey_XXXL'] > 0) {
      has_shirts = true;
      var new_row = checkout_table.insertRow(checkout_table.rows.length - 1);
      new_row.className = "checkout_table_row";
      new_row.insertCell(0).innerHTML = name;
      new_row.insertCell(1).innerHTML = attendees[index]['shirt_grey_XXXL'] + ' XXXL Grey Shirt(s)';
      var shirt_amount = 14 * attendees[index]['shirt_grey_XXXL'];
      total += shirt_amount;
      new_row.insertCell(2).innerHTML = "$ " + shirt_amount + ".00";
    };

  };
  if (is_dealer) {
    var new_row = checkout_table.insertRow(checkout_table.rows.length - 1);
    new_row.className = "checkout_table_row";
    var table_count = document.getElementById("dealer_tables").value
    new_row.insertCell(0).innerHTML = document.getElementById("dealer_name").value;
    new_row.insertCell(1).innerHTML = table_count + " Dealer Table(s)";
    var table_cost = table_count * 30;
    total += table_cost;
    new_row.insertCell(2).innerHTML = "$ " + table_cost + ".00";
  };
  checkout_table.rows[checkout_table.rows.length-1].cells[2].innerHTML = "$ " + total + ".00";

  order_total = total; // global variable

  // Set Paypal Variables
  order_name = "OddCon Preregistration";
  if (has_shirts) {
    order_name += ", Shirts";
  };
  if (is_dealer) {
    order_name += ", Dealer Tables";
  };
  document.getElementById("paypal_item_name").value = order_name;
  document.getElementById("paypal_amount").value = total;
  document.getElementById("paypal_option_name").value = names;
  document.getElementById("paypal_first_name").value = attendees[1]['first_name'];
  document.getElementById("paypal_last_name").value = attendees[1]['last_name'];
  document.getElementById("paypal_address1").value = attendees[1]['street_line_1'];
  document.getElementById("paypal_address2").value = attendees[1]['street_line_2'];
  document.getElementById("paypal_city").value = attendees[1]['city'];
  document.getElementById("paypal_state").value = attendees[1]['state'];
  document.getElementById("paypal_zip").value = attendees[1]['zip'];
  // decided not to prepopulate email because it takes the user directly
  //  to the paypal login rather than accepting just CC entry
  //document.getElementById("paypal_email").value = attendees[1]['email'];
};

function FormatName(first, middle, last) {
  if (middle != '') {
    return (first + ' ' + middle + ' ' + last);
  }
  else {
    return (first + ' ' + last);
  };
};

function FormatMembership(type, day) {
  switch (type) {
    case "Full":
      return "Full Weekend Membership";
      break;
    case "Student":
      return "Student Full Weekend Membership";
      break;
    case "Youth":
      return "Youth (ages 6-12) Full Weekend Membership";
      break;
    case "Child":
      return "Child (ages 0-5) Full Weekend Membership";
      break;
    case "Day":
      switch(day) {
        case "Fri":
          return "Day Pass - Friday";
          break;
        case "Sat":
          return "Day Pass - Saturday";
          break;
        case "Sun":
          return "Day Pass - Sunday";
          break;
      };
      break;      
  };
};

function GetRegistrationAmount(type) {
  switch (type) {
    case "Full":
      return 35;
      break;
    case "Student":
      return 25;
      break;
    case "Youth":
      return 15;
      break;
    case "Child":
      return 0;
      break;
    case "Day":
      return 20;
      break;
  };
};

function VerifyForm() {

  for (index = 1; index <= total_attendees; index++) {

    if (attendees[index]['first_name'] == "") {
      ShowAttendee(index);
      document.getElementById('first_name').focus();
      alert('You must enter a first name for attendee ' + index + '.');
      return ;
    };

    if (attendees[index]['last_name'] == "") {
      ShowAttendee(index);
      document.getElementById('last_name').focus();
      alert('You must enter a last name for attendee ' + index + '.');
      return ;
    };

    if (attendees[index]['street_line_1'] == "") {
      ShowAttendee(index);
      document.getElementById('street_line_1').focus();
      alert('You must enter a street address for attendee ' + index + '.');
      return ;
    };

    if (attendees[index]['city'] == "") {
      ShowAttendee(index);
      document.getElementById('city').focus();
      alert('You must enter a city for attendee ' + index + '.');
      return ;
    };

    if (attendees[index]['state'] == "") {
      ShowAttendee(index);
      document.getElementById('state').focus();
      alert('You must enter a state for attendee ' + index + '.');
      return ;
    };

    if (attendees[index]['zip'] == "") {
      ShowAttendee(index);
      document.getElementById('zip').focus();
      alert('You must enter a zip for attendee ' + index + '.');
      return ;
    };

    if ((attendees[index]['over_18'] != '1') && (attendees[index]['parent_is'] == '')) {

      if ((attendees[index]['registration_type'] == 'Youth') || (attendees[index]['registration_type'] == 'Child')) {
        ShowAttendee(index);
        document.getElementById('parent_is').focus();
        alert('You must enter a responsible adult\'s that is attending OddCon with attendee ' + index + '.');
        return ;
      }
      else {        
        var error_addendum = ', select the responsible adult attending OddCon, or select that the attendee is over 18.';

        if (attendees[index]['parent_first_name'] == "") {
          ShowAttendee(index);
          document.getElementById('parent_first_name').focus();
          alert('You must enter a responsible adult\'s first name for attendee ' + index + error_addendum);
          return ;
        };

        if (attendees[index]['parent_last_name'] == "") {
          ShowAttendee(index);
          document.getElementById('parent_last_name').focus();
          alert('You must enter a responsible adult\'s last name for attendee ' + index + error_addendum);
          return ;
        };

        if (attendees[index]['parent_street_line_1'] == "") {
          ShowAttendee(index);
          document.getElementById('parent_street_line_1').focus();
          alert('You must enter a responsible adult\'s street address for attendee ' + index + error_addendum);
          return ;
        };

        if (attendees[index]['parent_city'] == "") {
          ShowAttendee(index);
          document.getElementById('parent_city').focus();
          alert('You must enter a responsible adult\'s city for attendee ' + index + error_addendum);
          return ;
        };

        if (attendees[index]['parent_state'] == "") {
          ShowAttendee(index);
          document.getElementById('parent_state').focus();
          alert('You must enter a responsible adult\'s state for attendee ' + index + error_addendum);
          return ;
        };

        if (attendees[index]['parent_zip'] == "") {
          ShowAttendee(index);
          document.getElementById('parent_zip').focus();
          alert('You must enter a responsible adult\'s zip for attendee ' + index + error_addendum);
          return ;
        };

        if (attendees[index]['parent_phone'] == "") {
          ShowAttendee(index);
          document.getElementById('parent_phone').focus();
          alert('You must enter a responsible adult\'s phone number for attendee ' + index + error_addendum);
          return ;
        };
      };
    };

    if (is_dealer) {
      if (document.getElementById('dealer_name').value == '') {
        ShowDealerInfo();
        document.getElementById('dealer_name').focus();
        alert('You must enter a name for the dealer.');
        return ;
      };
    };
  };
  SaveData();
};

function SaveData() {
  var xmlHttp = null;
  if (window.XMLHttpRequest) {
    xmlHttp = new XMLHttpRequest();
  }
  else {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  };

  var timestamp = Date("d m Y G:i:s");
  document.getElementById("paypal_item_number").value = timestamp;
  
  //form the address query 
  var pst = "";
  
  pst = "timestamp=" + timestamp;
  pst += "&total_attendees=" + total_attendees;
  pst += "&order_total=" + order_total;
  
  for (index = 1; index <= total_attendees; index++) {

    pst += "&registration_type_" + index + "=" + escape(attendees[index]['registration_type']);
    pst += "&registration_day_" + index + "=" + escape(attendees[index]['registration_day']);
    pst += "&dealer_" + index + "=" + escape(attendees[index]['dealer']);
    pst += "&first_name_" + index + "=" + escape(attendees[index]['first_name']);
    pst += "&middle_name_" + index + "=" + escape(attendees[index]['middle_name']);
    pst += "&last_name_" + index + "=" + escape(attendees[index]['last_name']);
    pst += "&badge_line_1_" + index + "=" + escape(attendees[index]['badge_line_1']);
    pst += "&badge_line_2_" + index + "=" + escape(attendees[index]['badge_line_2']);
    pst += "&street_line_1_" + index + "=" + escape(attendees[index]['street_line_1']);
    pst += "&street_line_2_" + index + "=" + escape(attendees[index]['street_line_2']);
    pst += "&city_" + index + "=" + escape(attendees[index]['city']);
    pst += "&state_" + index + "=" + escape(attendees[index]['state']);
    pst += "&zip_" + index + "=" + escape(attendees[index]['zip']);
    pst += "&email_" + index + "=" + escape(attendees[index]['email']);
    pst += "&phone_" + index + "=" + escape(attendees[index]['phone']);
    pst += "&over_18_" + index + "=" + escape(attendees[index]['over_18']);
    if (attendees[index]['over_18'] != 1) {
      pst += "&parent_is_" + index + "=" + escape(attendees[index]['parent_is']);
      if (attendees[index]['parent_is'] == '') {
        pst += "&parent_first_name_" + index + "=" + escape(attendees[index]['parent_first_name']);
        pst += "&parent_middle_name_" + index + "=" + escape(attendees[index]['parent_middle_name']);
        pst += "&parent_last_name_" + index + "=" + escape(attendees[index]['parent_last_name']);
        pst += "&parent_street_line_1_" + index + "=" + escape(attendees[index]['parent_street_line_1']);
        pst += "&parent_street_line_2_" + index + "=" + escape(attendees[index]['parent_street_line_2']);
        pst += "&parent_city_" + index + "=" + escape(attendees[index]['parent_city']);
        pst += "&parent_state_" + index + "=" + escape(attendees[index]['parent_state']);
        pst += "&parent_zip_" + index + "=" + escape(attendees[index]['parent_zip']);
        pst += "&parent_email_" + index + "=" + escape(attendees[index]['parent_email']);
        pst += "&parent_phone_" + index + "=" + escape(attendees[index]['parent_phone']);
      };
    };
    pst += "&shirt_color_M_" + index + "=" + escape(attendees[index]['shirt_color_M']);
    pst += "&shirt_color_L_" + index + "=" + escape(attendees[index]['shirt_color_L']);
    pst += "&shirt_color_XL_" + index + "=" + escape(attendees[index]['shirt_color_XL']);
    pst += "&shirt_color_XXL_" + index + "=" + escape(attendees[index]['shirt_color_XXL']);
    pst += "&shirt_color_XXXL_" + index + "=" + escape(attendees[index]['shirt_color_XXXL']);
    pst += "&shirt_grey_M_" + index + "=" + escape(attendees[index]['shirt_grey_M']);
    pst += "&shirt_grey_L_" + index + "=" + escape(attendees[index]['shirt_grey_L']);
    pst += "&shirt_grey_XL_" + index + "=" + escape(attendees[index]['shirt_grey_XL']);
    pst += "&shirt_grey_XXL_" + index + "=" + escape(attendees[index]['shirt_grey_XXL']);
    pst += "&shirt_grey_XXXL_" + index + "=" + escape(attendees[index]['shirt_grey_XXXL']);
  };

  if (is_dealer) {
    pst += "&dealer=1"
    pst += "&dealer_name=" + escape(document.getElementById('dealer_name').value);
    pst += "&dealer_tables=" + escape(document.getElementById('dealer_tables').value);
    pst += "&dealer_street_line_1=" + escape(document.getElementById('dealer_street_line_1').value);
    pst += "&dealer_street_line_2=" + escape(document.getElementById('dealer_street_line_2').value);
    pst += "&dealer_city=" + escape(document.getElementById('dealer_city').value);
    pst += "&dealer_state=" + escape(document.getElementById('dealer_state').value);
    pst += "&dealer_zip=" + escape(document.getElementById('dealer_zip').value);
    pst += "&dealer_email=" + escape(document.getElementById('dealer_email').value);
    pst += "&dealer_phone=" + escape(document.getElementById('dealer_phone').value);
    pst += "&dealer_special_instructions=" + escape(document.getElementById('dealer_special_instructions').value);
  }
  else {
    pst += "&dealer=0"
  };
  
  xmlHttp.onreadystatechange = function()
  {
    if (xmlHttp.readyState == 4)
    {
      var response = xmlHttp.responseText;
      
      if(response.indexOf('ERROR') > -1)
      {
        alert(response);
        return;
      };

			if(response != "SUCCESS")
      {
        alert(response);
        return;
      };
			
	      document.getElementById('paypal_form').submit();
	      return;
    };
  };
  
  xmlHttp.open("POST","/registration/oddcon_registration_process.php",true);
  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlHttp.setRequestHeader("Content-length", pst.length);
  xmlHttp.setRequestHeader("Connection", "close");

  xmlHttp.send(pst);
};

