var itemCount = 0;
function BuildEvents()
{
  var loc = document.getElementById("events");
  
  var startDate = document.getElementById('startdate').value;

  //get the checkboxes that are selected
  
  var checks = document.getElementsByTagName("input");
  
  var params = "";
  for(i=0; i<checks.length; i++)
  {
    if(checks[i].type=="checkbox")
    {
      if(checks[i].checked)
      {
        params += (params=="" ? "" : ",") + checks[i].name;
      }
    }
  }
  
  if(params == "")
    return;
  else
    params="ids=" + params + "&startdate=" + startDate
  
  var http = createHTTPRequest();

  http.open("POST","/events/get_events.php", true);  
  http.onreadystatechange=function()
  {
    if(http.readyState == 4)
    {
      var response = http.responseText;
      
      if(response == "")
      {
        itemCount = 0;
        loc.innerHTML='<p style="padding-left:15px;">There are no events scheduled for this week.</p>';
        return;
      }
      
      var events = response.split("\n");
      
      if(events.length == itemCount)
        return;
      else
        loc.innerHTML="";

      itemCount = events.length;
      
      //return line and comma separated values with the following format
      //event.id, eventdateid, event.name, event.description, charge, date, starttime, endtime, canregister
      for(i=0; i<events.length; i++)
      {
        var data = events[i].split(",");
        createEventListings(unescape(data[0]), unescape(data[1]), unescape(data[2]), unescape(data[3]), unescape(data[4]), unescape(data[5]), unescape(data[6]), unescape(data[7]), unescape(data[8]), unescape(data[9]));    
      }
    }
  }

  http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http.setRequestHeader("Content-length", params.length);
  http.setRequestHeader("Connection", "close"); 
  
  http.send(params);
}


function createEventListings(eventId, eventDateId, eventName, description, charge, eventDate, startTime, endTime, canRegister, eventTypeId)
{
  var loc = document.getElementById("events");
  
  
  var container = document.createElement("p");
  container.style.color="#ffffff";
  container.style.fontSize="14px";
  if(endTime != "")
  {
    if(eventTypeId=="1")
      container.innerHTML = "<b>To-Do: </b>" + eventName + "<br /><b>Description:</b> " + description + "<br /><br />";
    else
      container.innerHTML = "<b>Event: </b>" + eventName + "<br /><b>Event Date: </b>" + eventDate + " (" + startTime + " - " + endTime + ")<br /><b>Cost: </b>" + charge + "<br /><b>Description:</b> " + description + "<br /><br />";
  }
  else
  {
    if(startTime == '')
    {
      if(eventTypeId=="1")
        container.innerHTML = "<b>To-Do: </b>" + eventName + "<br /><b>Description:</b> " + description + "<br /><br />";
      else
        container.innerHTML = "<b>Event: </b>" + eventName + "<br /><b>Event Date: </b>" + eventDate + "<br /><b>Cost: </b>" + charge + "<br /><b>Description:</b> " + description + "<br /><br />";
    }
    else
    {
      if(eventTypeId=="1")
        container.innerHTML = "<b>To-Do: </b>" + eventName + "<br /><b>Description:</b> " + description + "<br /><br />";
      else
        container.innerHTML = "<b>Event: </b>" + eventName + "<br /><b>Event Date: </b>" + eventDate + " (" + startTime + ")<br /><b>Cost: </b>" + charge + "<br /><b>Description:</b> " + description + "<br /><br />";
    }
  }
  
  if(canRegister == "1")
  {
    var lnk = document.createElement("a");
    lnk.href="#";
    lnk.onclick = function() { showRegistration(eventDateId, unescape(eventName), description, charge, eventDate, startTime, endTime); };
  
    var image = document.createElement("img");
    image.src="/events/images/register.gif";
    image.alt="Register!";
  
    lnk.appendChild(image);
    container.appendChild(lnk);
  }

  loc.appendChild(container);
  
  var sep = document.createElement("div");
  sep.className="calendarSeparator";
  loc.appendChild(sep);
}

function showRegistration(eventDateId, eventName, description, charge, eventDate, startTime, endTime)
{
  var ie6 = navigator.userAgent.toLowerCase().indexOf('msie 6') != -1;
  
  var waitBG = document.createElement("div");
  if(ie6)
  {
    waitBG.style.position="absolute";
    waitBG.style.width="100%";
    waitBG.style.height = document.getElementById("centerDiv").clientHeight + "px";
  }
  else
  {
    waitBG.style.width="100%";
    waitBG.style.height="100%";
    waitBG.style.position="fixed";
  }
  waitBG.style.left="0px";
  waitBG.style.top="0px";
  waitBG.id="waitBG";
  waitBG.style.backgroundColor="#000000";
  if (((navigator.userAgent.toLowerCase().indexOf("msie") != -1) && (navigator.userAgent.toLowerCase().indexOf("opera") == -1)))
    waitBG.style.filter = 'alpha(opacity=30)';
  else // for mozilla
    waitBG.style.opacity = 0.3;

  document.body.appendChild(waitBG);

  var container = document.createElement("div");
  container.id="regContainer";
  container.style.backgroundColor="#ffffff";
  if(ie6)
  {
    container.style.position="absolute";
    container.style.left="50%";
    container.style.top="50%";
  }
  else
  {
    container.style.position="absolute";
    container.style.left="50%";
    container.style.top="50%";
  }
  container.style.width="700px";
  container.style.height="550px";
  container.style.marginLeft="-350px";
  container.style.marginTop="-225px";
  container.style.paddingTop="0px";
  container.style.paddingLeft="15px";
  container.style.paddingRight="5px";
  container.style.overflowY="scroll";

  document.body.appendChild(container);
  
  //styling - display information about the event
  var info = document.createElement("div");
  info.style.fontSize="14px";
  info.style.color="#000000";
  info.innerHTML='<div style="float:right;padding-top:5px;padding-right:5px;"><img src="/images/templates/tbc/logo.gif" alt="The Bruce Company" /></div><h1 class="registrationHeading" style="padding-bottom:0px;">' + eventName + '</h1><div style="padding-left:15px;"><div style="clear:left;"><div style="float:left;padding-right:5px;text-align:right;width:100px;" class="bold">Description:</div><div style="float:left;width:300px;">' + description + '</div></div><div style="clear:left;"><div style="float:left;padding-right:5px;text-align:right;width:100px;" class="bold">Event Date: </div>' + eventDate + ' <div style="clear:left;"><div style="float:left;padding-right:5px;text-align:right;width:100px;" class="bold">Time: </div>' + startTime + " - " + endTime + '</div><div style="clear:left;padding-bottom:20px;"><div style="float:left;padding-right:5px;text-align:right;width:100px;" class="bold">Charge: </div>' + charge + '</div></div><div style="clear:both;width:90%;height:1px;background-color:#000000;margin:10px 0px 10px 0px;"></div>';
  
  container.appendChild(info);
  
  var frm = document.createElement("form");
  frm.method="POST";
  frm.name="frmRegistration";
  frm.onsubmit = function() { if(verifyRegistration()) saveRegistration(); return false; };

  frm.appendChild(createInputField("txtFirstName", "First Name:"));
  frm.appendChild(createInputField("txtLastName", "Last Name:"));
  frm.appendChild(createInputField("txtAddress1", "Address Line 1:"));
  frm.appendChild(createInputField("txtAddress2", "Address Line 2:"));
  frm.appendChild(createInputField("txtCity", "City:"));
  frm.appendChild(createInputField("txtState", "State:"));
  frm.appendChild(createInputField("txtZip", "Zip Code:"));
  frm.appendChild(createInputField("txtPhone", "Phone Number:"));
  frm.appendChild(createInputField("txtEmail", "Email Address:"));
  frm.appendChild(createInputField("txtRegistrationCount", "Number Attending:"));
  
  var dateId = document.createElement("input");
  dateId.type="hidden";
  dateId.name="eventdateid";
  dateId.id="eventdateid";
  dateId.value=eventDateId;
  frm.appendChild(dateId);

  var sbmtContainer = document.createElement("div");
  sbmtContainer.style.paddingTop="10px";
  sbmtContainer.style.paddingLeft="200px";
  
  var sbmt = document.createElement("input");
  sbmt.type="image";
  sbmt.src="/events/images/register_white.gif";
  sbmtContainer.appendChild(sbmt);
  
  var btnCancel = document.createElement("a");
  btnCancel.href="#";
  btnCancel.style.paddingLeft="10px";
  btnCancel.onclick = function() { closeRegistration(); }
  
  var btnCancelImage = document.createElement("img");
  btnCancelImage.src="/events/images/register_cancel.gif";
  btnCancelImage.alt="Cancel Registaration";
  btnCancel.appendChild(btnCancelImage);
  sbmtContainer.appendChild(btnCancel);
  
  frm.appendChild(sbmtContainer);    
  
  container.appendChild(frm);
}

function createInputField(inputName, inputLabel)
{
  var container = document.createElement("div");
  container.style.clear = "left";
  container.style.paddingTop="5px";
  
  var lbl = document.createElement("div");
  if(lbl.style.styleFloat != undefined)
    lbl.style.styleFloat = "left";
  else
    lbl.style.cssFloat = "left";
  lbl.style.width="125px";
  lbl.style.textAlign="right";
  lbl.style.paddingRight = "5px";
  lbl.style.color="#000000";
  lbl.innerHTML=inputLabel;
  
  container.appendChild(lbl);
  
  var inpt = document.createElement("input");
  inpt.type="text";
  inpt.name=inputName;
  inpt.id=inputName;
  inpt.style.width="450px";
  
  container.appendChild(inpt);
  
  return container;
}

function verifyRegistration()
{
  if(document.getElementById('txtFirstName').value == "")
    return fail("Please enter your first name");

  if(document.getElementById('txtLastName').value == "")
    return fail("Please enter your last name");

  if(document.getElementById('txtAddress1').value == "")
    return fail("Please enter your address");
    
  if(document.getElementById('txtCity').value == "")
    return fail("Please enter your city");
  
  if(document.getElementById('txtState').value.length != 2)
    return fail("Please enter your two-letter state");
  
  if(document.getElementById('txtPhone').value == "")
    return fail("Please enter your phone number");
  
  if(document.getElementById('txtEmail').value.length < 5)
    return fail("Please enter a valid email address");

  var emailRegEx = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;
  if(!emailRegEx.test(document.getElementById('txtEmail').value))
    return fail("Please enter a valid email address");
  
  if(document.getElementById('txtRegistrationCount').value == "")
    return fail("Please enter the number attending.");
    
  return true;
}

function saveRegistration()
{
  var params = "firstname=" + escape(document.getElementById('txtFirstName').value) + "&lastname=" + escape(document.getElementById('txtLastName').value) + "&address1=" + escape(document.getElementById('txtAddress1').value) + "&address2=" + escape(document.getElementById('txtAddress2').value) + "&city=" + escape(document.getElementById('txtCity').value) + "&state=" + escape(document.getElementById('txtState').value) + "&zip=" + escape(document.getElementById('txtZip').value) + "&phone=" + escape(document.getElementById('txtPhone').value) + "&email=" + escape(document.getElementById('txtEmail').value) + "&count=" + escape(document.getElementById('txtRegistrationCount').value) + "&eventdateid=" + escape(document.getElementById('eventdateid').value);
  
  var http = createHTTPRequest();

  http.open("POST","/events/registration_save.php", true);  
  http.onreadystatechange=function()
  {
    if(http.readyState == 4)
    {
      var response = http.responseText;
      if(response == "OK")
      {
        alert('Thank you for registering for our event!  We look forward to seeing you at our Middleton Garden Center location.\n\n- The Bruce Company Team');
        closeRegistration();
      }
      else
      {
        alert('There was a problem registering you for this event.  Please ensure that all of the fields have been filled out properly and resubmit your registration.');
      }
    }
  }

  http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http.setRequestHeader("Content-length", params.length);
  http.setRequestHeader("Connection", "close"); 
  
  http.send(params);  
}

function fail(err)
{
  alert(err);
  return false;
}

function closeRegistration()
{
  document.body.removeChild(document.getElementById('waitBG'));
  document.body.removeChild(document.getElementById('regContainer'));
}