var httpRequest = null;



/********************/

/*                  */

/*  Public Content  */

/*                  */

/********************/

function loadEntity (entity) {

  

}



/***********/

/*         */

/*  LOGIN  */

/*         */

/***********/

function memberLogin () {

  var email = getElement("email");

  var password = getElement("password");

  httpRequest = new HttpRequest("http://www.stlbhc.org/script/login_script.php5", memberLoginCallback);

  var params = "email=" + email.value + "&password=" + password.value;

  httpRequest.post(params);

}



function memberLoginCallback () {

  var response = httpRequest.getResponse();

  response = trim(response);

  // alert(response);

  if (response == "1")

    window.location = "members_home.php5";

  else {

    var password = getElement("password");

    password.value = "";

  }

}



function remindPassword () {

  var email = getElement("email");

  if (email.value.indexOf("@") == -1) {

    alert("Please enter a valid email address for your new password to be sent to");

    return;

  }

  else httpRequest = new HttpRequest("http://www.stlbhc.org/script/reset_password.php5", remindPasswordCallback);

  var params = "email=" + email.value;

  httpRequest.post(params);

}



function remindPasswordCallback () {

  var response = httpRequest.getResponse();

  var email = getElement("email");

  response = trim(response);

  // alert(response);

  if (response == "1")

    alert("A new password has been emailed to " + email.value + ".");

  else alert("The email you entered could not be found.");

}



function adminLogin () {

  var username = getElement("username");

  var password = getElement("password");

  httpRequest = new HttpRequest("script/admin_login_script.php5", adminLoginCallback);

  var params = "username=" + username.value + "&password=" + password.value;

  httpRequest.post(params);

}



function adminLoginCallback () {

  var response = httpRequest.getResponse();

  response = trim(response);

  // alert(response);

  if (response == "1")

    window.location = "admin_main.php5";

  else {

    var password = getElement("password");

    password.value = "";

  }

}



/**********/

/*        */

/*  UTIL  */

/*        */

/**********/

function closeWindow () {

  window.close();

}



function log (message) {

  while (message.length > 100) {

    var first = message.substring(0, 100);

    var next = message.substring(100, message.length);

    // console.log(first);

    message = next;

  }

  // console.log(message);

}



/*********/

/*       */

/*  ADD  */

/*       */

/*********/

function addAnnouncement () {

  addEntity("announcement");

}



function addEvent () {

  addEntity("event", 450, 275);

}



function addGroup () {

  addEntity("group");

}



function addMember (groupID) {

  addEntity("member", 300, 570, "group_ID=" + groupID);

}



function addReport () {

  addEntity("report");

}



function addSurvey () {

  addEntity("survey");

}



function addEntity (entity, width, height, params) {

  if (!width)

    width = 375;

  if (!height)

    height = 300;

  var entityParams = "entity=" + entity + "&" + params;

  openInnerWindow("add_entity.php5", width, height, entityParams);

  // openCenteredWindow("add_entity.php5?entity=" + entity + "&" + params, width, height, false, true);

}



/**********/

/*        */

/*  SAVE  */

/*        */

/**********/

function saveAnnouncement (announcementID) {

  saveEntity("announcement", announcementID);

}



function saveEvent (eventID) {

  saveEntity("event", eventID);

}



function saveReport (reportID) {

  saveEntity("report", reportID);

}



function saveSurvey (surveyID) {

  saveEntity("survey", surveyID);

}



function saveGroup (groupID) {

  saveEntity("group", groupID);

}



function saveEntity (entity, entityID) {

  httpRequest = new HttpRequest("script/save_entity.php5", saveEntityCallback);

  var entityForm = getElement("entity");

  var messageDiv = getElement("message_div");

  var params = getFormContents(entityForm);

  messageDiv.innerHTML = "<B>Saving...</B>";

  params += "entity=" + entity + "&entity_ID=" + entityID;

  // log(entityID);

  // alert(params);

  // log(params);

  httpRequest.post(params);

}



function saveEntityCallback () {

  var response = httpRequest.getResponse();

  // console.log(response);

  closeInnerWindow();    // window.close();

  window.location = window.location;

}



function uploadEntityFile (entity) {

  uploadFile(entity, "pdf");

}



function uploadFile (entity, expectedExtension) {

  var form = getElement(entity + "_file_form");

  var entity_file = getElement(entity + "_file");

  var entity_filename = entity_file.value;

  var entity_filename_parts = entity_filename.split(".");

  var extension = entity_filename_parts[entity_filename_parts.length -1];

  if (extension != expectedExtension) {

    alert("Please upload a " + expectedExtension + " file.");

    entity_file.value = "";

    return;

  }

  form.submit();

}



/**********/

/*        */

/*  EDIT  */

/*        */

/**********/



function cancel () {

  closeInnerWindow();      // window.close();

}



function cancelEditEntity () {

  cancel();

}



function editEntity (entity, entityID, width, height) {

  if (typeof(width) == "undefined")

    width = 475;

  if (typeof(height) == "undefined")

    height = 300;

  var params = "entity=" + entity + "&entity_ID=" + entityID;

  openInnerWindow("edit_entity.php5", width, height, params);

   

  // openCenteredWindow("edit_entity.php5?entity=" + entity + "&entity_ID=" + entityID, 475, 300, false, true);

}



function cancelEditGroup () {

  cancel();

}



function editMember (memberID) {

  editEntity("member", memberID, 300, 570);

}



function editGroup (groupID) {

  editEntity("group", groupID, 320, 320)

  // openCenteredWindow("edit_entity.php5?entity=group&entity_ID=" + groupID, 320, 320, false, true);

}



function expandAttendees (eventID) {

  httpRequest = new HttpRequest("script/get_event_attendees.php5", expandAttendeesCallback);

  httpRequest.setParameter("event_ID", eventID);

  var params = "event_ID=" + eventID;

  httpRequest.post(params);

}



function expandAttendeesCallback () {

  var response = httpRequest.getResponse();

  var eventID = httpRequest.getParameter("event_ID");

  var eventRow = getElement("event_" + eventID);

  var attendeesContainer = document.createElement("DIV");

  attendeesContainer.setAttribute("id", "event_" + eventID + "_attendees");

  attendeesContainer.innerHTML = response;

  var linkDiv = getElement("view_" + eventID + "_attendees");

  linkDiv.innerHTML = "<A href=\"javascript: collapseAttendees(" + eventID + ")\">Hide Attendees</A>";

  eventRow.appendChild(attendeesContainer);

}



function collapseAttendees (eventID) {

  var eventRow = getElement("event_" + eventID);

  var attendeesContainer = getElement("event_" + eventID + "_attendees");

  var linkDiv = getElement("view_" + eventID + "_attendees");

  linkDiv.innerHTML = "<A href=\"javascript: expandAttendees(" + eventID + ")\">View Attendees</A>";

  if (attendeesContainer)

    eventRow.removeChild(attendeesContainer);

}



/************/

/*          */

/*  Entity  */

/*          */

/************/



function viewDetails (entity, entityID) {

  var params = "entity=" + entity + "&entity_ID=" + entityID;

  openInnerWindow("http://www.stlbhc.org/entity_details.php5", 475, 300, params);

}



function rsvpLogin (eventID) {

  var email = getElement("email");

  var password = getElement("password");

  httpRequest = new HttpRequest("script/login_script.php5", rsvpLoginCallback);

  httpRequest.setParameter("event_ID", eventID);

  var params = "email=" + email.value + "&password=" + password.value;

  httpRequest.post(params);

}



function rsvpLoginCallback () {

  var response = httpRequest.getResponse();

  response = trim(response);

  var messageDiv = getElement("message_div");

  // alert(response);

  if (response != "1") {

    var password = getElement("password");

    messageDiv.innerHTML = "<FONT color=\"#990000\">Login incorrect</FONT>";

    password.value = "";

    return;

  }

  else {

    var eventID = httpRequest.getParameter("event_ID");

    messageDiv.innerHTML = "Loggin in...";

    delayedRedirect("rsvp.php5", 1.5, "event_ID=" + eventID);

  }

}



function delayedRedirect (url, pauseSeconds, params) {

  setTimeout("redirect('" + url + "?" + params + "')", pauseSeconds * 1000);

}



function redirect (url) {

  window.location = url;

}



function eventRSVP (eventID) {

  openCenteredWindow("https://www.stlbhc.org/rsvp.php5?event_ID=" + eventID, 350, 500, true, true);

}



/************/

/*          */

/*  DELETE  */

/*          */

/************/

function deleteAnnouncement (announcementID) {

  deleteEntity("announcement", announcementID, "entitys");

}



function deleteEvent (eventID) {

  deleteEntity("event", eventID, "entitys");

}



function deleteReport (reportID) {

  deleteEntity("report", reportID, "entitiys");

}



function deleteSurvey (surveyID) {

  deleteEntity("survey", surveyID, "entitys");

}



function deleteMember (groupID, memberID) {

  deleteEntity("member", memberID, "group_" + groupID + "_members");

}



function deleteGroup (groupID) {

  deleteEntity("group", groupID, "groups");

}



function deleteEntity (entity, entityID, parentDivID) {

  var confirmation = confirm("Are you sure you want to delete this " + entity + "? This operation cannot be undone.");

  if (!confirmation)

    return;



  var entitiesDiv = getElement(parentDivID);

  var entityDiv = getElement(entity + "_" + entityID);

  if (entitiesDiv && entityDiv)

    entityDiv.innerHTML = "";

//    entitiesDiv.removeChild(entityDiv);

  httpRequest = new HttpRequest("script/delete_entity.php5", deleteEntityCallback);

  var params = "entity=" + entity + "&entity_ID=" + entityID;

  httpRequest.post(params);

}



function deleteEntityCallback () {

  var response = httpRequest.getResponse();

  // log(response);

  closeInnerWindow();       // window.close();

}



/***********/

/*         */

/*  GROUP  */

/*         */

/***********/

function expandMembers (groupID) {

  httpRequest = new HttpRequest("script/get_group_members.php5", expandMembersCallback);

  httpRequest.setParameter("group_ID", groupID);

  var params = "group_ID=" + groupID;

  httpRequest.post(params);

}



function expandMembersCallback () {

  var response = httpRequest.getResponse();

  // alert(response);

  var groupID = httpRequest.getParameter("group_ID");

  var groupRow = getElement("group_" + groupID);

  var membersContainer = document.createElement("DIV");

  membersContainer.setAttribute("id", "group_" + groupID + "_members");

  membersContainer.innerHTML = response;

  var linkDiv = getElement("view_" + groupID + "_members");

  linkDiv.innerHTML = "<A href=\"javascript: collapseMembers(" + groupID + ")\">Hide Members</A>";

  groupRow.appendChild(membersContainer);

}



function collapseMembers (groupID) {

  var groupRow = getElement("group_" + groupID);

  var membersContainer = getElement("group_" + groupID + "_members");

  var linkDiv = getElement("view_" + groupID + "_members");

  linkDiv.innerHTML = "<A href=\"javascript: expandMembers(" + groupID + ")\">View Members</A>";

  if (membersContainer)

    groupRow.removeChild(membersContainer);

  

}



function uploadLogoFile () {

  uploadFile("group", "jpg");

}



function saveMember (memberID) {

  var email = getElement("email");

  var confirmEmail = getElement("confirm_email");

  if (email.value != confirmEmail.value) {

    alert("Please ensure you have entered your email correctly.");

    return;

  }

  var password = getElement("password");

  var confirmPassword = getElement("confirm_password");

  if (password.value != confirmPassword.value) {

    password.value = "";

    confirm_password.value = "";

    return;

  }

  saveEntity("member", memberID);

}



/*************/

/*           */

/*  Payment  */

/*           */

/*************/

function savePayment () {

  var paymentForm = getElement("payment");

  var name = getElement("name");

  var number = getElement("number");

  if (name.value == "" || number.value.length < 16) {

    alert("Please enter your correct credit card information.");

    return;

  }

  paymentForm.submit();

}



function processPayment (paymentID) {

  openCenteredWindow("process_payment.php5?payment_ID=" + paymentID, 300, 200, 0, 0, 0);

  // Not Secure:

  // openInnerWindow("process_payment.php5", 300, 200, "payment_ID=" + paymentID);

}



function markAsProcessed (paymentID) {

  httpRequest = new HttpRequest("script/process_payment.php5", markAsProcessedCallback);

  httpRequest.setParameter("payment_ID", paymentID);

  var params = "payment_ID=" + paymentID;

  httpRequest.post(params);

}



function markAsProcessedCallback () {

  /*

  var response =  httpRequest.getResponse();

  var paymentID = httpRequest.getParameter("payment_ID");

  var confirmation = getElement("payment_" + paymentID);

  confirmation.innerHTML = response;

  */

  window.close();

}



/***************/

/*             */

/*  Windowing  */

/*             */

/***************/



function getWindowWidth () {

  if (parseInt(navigator.appVersion)>3) {

    if (navigator.appName=="Netscape")

      return window.innerWidth;

    if (navigator.appName.indexOf("Microsoft")!=-1)

      return document.body.offsetWidth;

  }

}



function getWindowHeight () {

  if (parseInt(navigator.appVersion)>3) {

    if (navigator.appName=="Netscape")

      return window.innerHeight;

    if (navigator.appName.indexOf("Microsoft")!=-1)

      return document.body.offsetHeight;

  }

}



function openInnerWindow (url, width, height, params) {

  if (typeof(width) == "undefined")

    width = 500;

  if (typeof(height) == "undefined")

    height = 375;

  

  httpRequest = new HttpRequest(url, openInnerWindowCallback);

  httpRequest.setParameter("width", width);

  httpRequest.setParameter("height", height);

  httpRequest.post(params);

}



function openInnerWindowCallback () {

  var response = httpRequest.getResponse();

  var width = httpRequest.getParameter("width");

  var height = httpRequest.getParameter("height");

  // alert(response);

  var innerWindow = getElement("inner_window");

  if (!innerWindow || innerWindow == "undefined") {

    innerWindow = document.createElement("DIV");

    var body = document.body;

    innerWindow.setAttribute("id", "inner_window");

    body.appendChild(innerWindow);

  }

  var style = getStyleObject("inner_window");

  var windowWidth = getWindowWidth();

  var windowHeight = getWindowHeight();

  // alert(windowWidth + " x " + windowHeight);  

  var left = windowWidth/2 - Number(width)/2;

  var top = windowHeight/2 - Number(height)/2;

  if (top < 0)

    top = 150;

  style.position = "absolute";

  style.left = left + "px";

  style.top = top + "px";

  style.width = width + "px";

  style.height = height + "px";

  style.border = "solid #000000 1px";

  var titlebar = "<DIV class=\"titlebar\" id=\"inner_window_titlebar\"><IMG src=\"images/delete.gif\" onClick=\"closeInnerWindow()\"></DIV>";

  innerWindow.innerHTML = titlebar + response;

}



function closeInnerWindow () {

  var innerWindowDiv = getElement("inner_window");

  var body = document.body;

  if (innerWindowDiv)

    body.removeChild(innerWindowDiv);

}