


function renderDate(pre,date,post,date_format)
{
  var i;
  var t;
  mnths = new Array("January ","February ","March ","April ","May ","June ","July ","August ","September ","October ","November ","December ");
  var re = /(\d\d\d\d)-(\d\d)-(\d\d)/;
  var dateDecompose = re.exec(date);
  if (dateDecompose == null) return;
  /*
    dateDecompose[1] = year
    dateDecompose[2] = month
    dateDecompose[3] = day
  */


  if (dateDecompose[1] == "0000") {
    document.writeln(pre + "&nbsp;" + post);
    return;
  }
  switch(date_format){
    case 1:
      i = dateDecompose[2] - 1;
      t = pre + mnths[i] + dateDecompose[3] + ", " + dateDecompose[1] + post;
      break;
    case 2:
      t = pre + dateDecompose[2] + "/" + dateDecompose[3] + "/" + dateDecompose[1] + post;
      break;
    default:
      t = pre +  dateDecompose[1] + "-" + dateDecompose[2] + "-" + dateDecompose[3] + post;
      break;
  }
  return(t);
}


function gotoObit(ObitNum){
  var h = 'http://www.sparksfh.com/cgi-bin/CompanyInternal?stdout+115+sparksfh.com+';
  h += ObitNum + "+" + pageType + "+9103:Lcgi_html/";
  location.href = h;
  return(false);
}






    var gbEntries = new Array();
    var obitCount = 0;
    var oNum;
    var lName;
    var fName;
    var mName;
    var DOD;
    var searchLastName = "";
    var searchFirstName = "";
    var obitList = new Array();
    var obitListTitle;
    var pageType = 0;
    var obitItem;

    function newObit(obitNum,l_n,f_n,m_n,dod){
      this.obitNum = obitNum;
      this.l_n = l_n;
      this.f_n = f_n;
      this.m_n = m_n;
      this.dod = dod;
    }


    function newFullObit(obitNum,l_n,f_n,m_n,dob,dod,title,visit,funeral,interment,vb){
      this.obitNum = obitNum;
      this.lname = l_n;
      this.fname = f_n;
      this.mname = m_n;
      this.dob = dob;
      this.dod = dod;
      this.title = title;
      this.visit = visit;
      this.funeral = funeral;
      this.interment = interment;
      this.vb = vb;
      this.picFileName = "";
      this.picW = "__";
      this.picH = "__";
      this.path = "";
      this.showAge = false;
      this.showDOB_DOD = false;
    }


    function newGBItem(obitNum,messageID,LineNum,fn,mn,ln,city,state,lastchange)
    {
      this.obitNum = obitNum;
      this.messageID = messageID;
      this.LineNum = LineNum;
      this.fn = fn;
      this.mn = mn;
      this.ln = ln;
      this.city = city;
      this.state = state;
      this.lastchange = lastchange;
    }



    function renderGBEntries(ordering,nameDOD,obitNum)
    {
      var messageDivId = document.getElementById("visitorBook");
      var t = "";
      var i;
      var visitor;
      var name = "";
      var dod = "";
      var gbHeder = "";
      var returnToObit = "";

      switch(ordering.toLowerCase()){
        case "name":
          gbEntries.sort(orderGBEntriesByName);
          break;
        case "date":
          gbEntries.sort(orderGBEntriesByEntryTime);
          break;
      }
      i = nameDOD.indexOf("^");
      if (i > -1){
        name = nameDOD.slice(0,i);
        dod = nameDOD.slice(i+1);
        gbHeader = '<p class="boxTitle">Visitor Book for ' + name + "</p>\n";
      }
      for (i=0;i<gbEntries.length;i++){
        visitor = "<p class='renderVBName'>" + gbEntries[i].fn + " " + gbEntries[i].mn + " " + gbEntries[i].ln + "</p>\n";
        if (gbEntries[i].city.length + gbEntries[i].state.length > 0){
          visitor += "<p class='renderVBLoc'>" + gbEntries[i].city;
          if (gbEntries[i].state.length > 0) visitor += ", " + gbEntries[i].state + "</p>\n";
        }
        t += visitor;
        t += '<p class="renderVBMessage">' + document.getElementById(gbEntries[i].messageID).innerHTML + "</p>\n";
        t += '<hr class="renderVBSeparator" />\n';
      }
      returnToObit = '<center><br /><form onSubmit="return gotoObit(' +  obitNum + ')"><input type="submit" value="Return to Obituary"></form></center>\n';
      messageDivId.innerHTML = gbHeader + t + returnToObit;
    }

    function orderGBEntriesByName(a,b){
      if (a.ln < b.ln) return -1;
      if (a.ln > b.ln) return 1;
      if (a.fn < b.fn) return -1;
      if (a.fn > b.fn) return 1;
      if (a.mn < b.mn) return -1;
      if (a.mn > b.mn) return 1;
      return 0;
    }



    function orderGBEntriesByEntryTime(a,b){
      if (a.lastchange < b.lastchange) return -1;
      if (a.lastchange > b.lastchange) return 1;
      return 0;
    }

    function orderObits(a,b){
      if (a.dod > b.dod) return -1;
      if (a.dod < b.dod) return 1;
      if (a.l_n < b.l_n) return -1;
      if (a.l_n > b.l_n) return 1;
      if (a.f_n < b.f_n) return -1;
      if (a.f_n > b.f_n) return 1;
      if (a.m_n < b.m_n) return -1;
      if (a.m_n > b.m_n) return 1;
      return 0;
    }


    function returnListElement(i){

      var o = obitList[i];
      var linkCell =  "<td class='fullObitListLinkCell'><a href='javascript:void(0);'><img src='../art/show.gif'  onclick='gotoObit(" + o.obitNum + ")' border='0' /></a></td>\n";
      var nameCell = "<td class='fullObitListNameCell'>" + o.l_n;
      if (o.f_n.length > 0 || o.m_n.length > 0) nameCell += ", " + o.f_n + " " + o.m_n + "</td>\n";
      var dateCell = renderDate("<td class='fullObitListDateCell'>",o.dod,"</td>\n",2);
      return(nameCell + dateCell + linkCell);
    }


    var maxTimeSep = 864000000;  // 10 days in mSec
    var imposeRecentLimit = false;

    function renderRecentList(){
      var i;
      var d = new Date();
      var dd;
      var re = /(\d\d\d\d)-(\d\d)-(\d\d)/;
      var dateDecompose;

      var t1;
      var t2;
      var t3;

      var numRecent = 0;
      for (i=0;i<obitList.length;i++){
        dateDecompose = re.exec(obitList[i].dod);
        t1 = 1 * dateDecompose[1];
        t2 = 1 * dateDecompose[2];
        t3 = 1 * dateDecompose[3];
        dd = new Date(t1,t2-1,t3,0,0,0,0);
        if (Math.abs(d - dd) > maxTimeSep && imposeRecentLimit) break;
        numRecent++;
//alert(dd.getFullYear() + "-" + dd.getMonth() + "-" + dd.getDate() + "\n" + obitList[i].dod);
      }
      if (numRecent > 0){
        t1 = '<table cellpadding="0" cellspacing="0" class="fullObitListTableStyle">\n';
        for (i=0;i<numRecent;i++){
           t1 += "<tr>\n" + returnListElement(i) + "</tr>\n";
           if (i < numRecent - 1) t1 += "<tr><td colspan='3'><img src='../art/trans_1x1.gif' height='4' width='4' /></td></tr>";
        }
        t1 += "</table>\n";
      } else {
        t1 = "<p>No obituaries were found in the archive that matched your search criterion.  Your search criterion were:</p>";
        t1 += "<table cellpadding='4'>\n<tr><td>Last name starting with: </td><td>" + searchLastName + "</td></tr>\n";
        t1 += "<tr><td>First name starting with: </td><td>" + searchFirstName + "</td></tr>\n</table>";

      } 
      document.writeln(t1);
    }


function invokeArchiveSearch(tf)
{
  var h;
  h = 'http://www.sparksfh.com/cgi-bin/CompanyInternal?stdout+115+sparksfh.com+102+3+9105:Lcgi_html/';
  h = h + "+" + tf.lname.value + "+" + tf.fname.value;
  window.location.href = h;
  return(false);
}


function getName(oi) {
  var decName = "";
  if (oi.title.length > 0) decName += oi.title + " ";
  if (oi.fname.length > 0) decName += oi.fname + " ";
  if (oi.mname.length > 0) decName += oi.mname + " ";
  if (oi.lname.length > 0) decName += oi.lname;
  return(decName);
}

function renderObit(){
  var decName = "";
  var t = "";
  var t1;
  var picRatio;
  var w;
  var h;
  var copyId;

  if (obitItem.picW.indexOf('_') == -1 && obitItem.picH.indexOf('_') == -1){
    picRatio = (obitItem.picW * 1) / (obitItem.picH * 1);
    if (picRatio > 1){
      if (obitItem.picW > 175){
        w = 175;
        h = 175 / picRatio;
      } else {
        w = obitItem.picW;
        h = obitItem.picH;
      }
    } else {
      if (obitItem.picH > 200){
        h = 200;
        w = 200 * picRatio;
      } else {
        w = obitItem.picW;
        h = obitItem.picH;
      }
    }
    t += '<img src="' + obitItem.path + obitItem.picFileName + '" ';
    t += 'width="' + w + '" ';
    t += 'height="' + h + '" ';
    t += 'style="margin: 0px 10px; 10px 0px;" align="left" />\n'; 
  }
  decName = getName(obitItem);
/*
  if (obitItem.title.length > 0) decName += obitItem.title + " ";
  if (obitItem.fname.length > 0) decName += obitItem.fname + " ";
  if (obitItem.mname.length > 0) decName += obitItem.mname + " ";
  if (obitItem.lname.length > 0) decName += obitItem.lname;
*/
  if (decName.length > 0){
    t = '<p class="boxTitle" style="margin: 0px 0px 0px 0px;">' + t + decName + '</p>\n';
  }
  if (obitItem.visit.length > 0  ||  obitItem.funeral.length > 0  ||  obitItem.interment.length > 0){
    t += "<table style='margin: 10px 0px 10px 0px;'>";
    t1 = "";
    if (obitItem.visit.length > 0) t1 += "<tr><td class='obitDetails'>Visitation</td><td class='obitDetails' style='font-weight: bold;'>" +  obitItem.visit + "</td></tr>\n";
    if (obitItem.funeral.length > 0) t1 += "<tr><td class='obitDetails'>Memorial Service</td><td class='obitDetails' style='font-weight: bold;'>" +  obitItem.funeral + "</td></tr>\n";
    if (obitItem.interment.length > 0) t1 += "<tr><td class='obitDetails'>Interment</td><td class='obitDetails' style='font-weight: bold;'>" + obitItem.interment + "</td></tr>\n";
    if (obitItem.showAge){
      if (obitItem.dob.slice(0,4) != "0000" && obitItem.dod.slice(0,4) != "0000")
      t1 += "<tr><td class='obitDetails'>Age</td><td class='obitDetails' style='font-weight: bold;'>" + getAge(obitItem.dob,obitItem.dod) + "</td></tr>\n";
    }
    if (obitItem.showDOB_DOD) {
      if (obitItem.dob.slice(0,4) != "0000") t1 += "<tr><td class='obitDetails'>Born</td><td class='obitDetails' style='font-weight: bold;'>" + renderDate("",obitItem.dob,"",1) + "</td></tr>\n";
      if (obitItem.dod.slice(0,4) != "0000") t1 += "<tr><td class='obitDetails'>Died</td><td class='obitDetails' style='font-weight: bold;'>" + renderDate("",obitItem.dod,"",1) + "</td></tr>\n";

    }
    t += t1 + "</table>\n";
  }
//alert(t);
  document.writeln(t);
  copyId = document.getElementById("obitCopy");
  document.writeln(obitCopy.innerHTML);  
}





function gb_checkform(tf,simple)
{
  if (tf.message.value.length > 2045){
    alert("Your message must be less than 2040 characters long.\nYour message is " + tf.message.length + " long.");
    tf.message.focus();
    return(false);
  }

  if (tf.fname.value.length == 0){
    alert("You must enter your first name.");
    tf.fname.focus();
    return(false);
  }
  if (tf.lname.value.length == 0){
    alert("You must enter your last name.");
    tf.lname.focus();
    return(false);
  }
  return(true);
}


function getAge(dob,dod)
{
  re = /(\d\d\d\d)-(\d\d)-(\d\d)/;
  dobDecompose = re.exec(dob);
  if (dobDecompose == null) return;
  dodDecompose = re.exec(dod);
  if (dodDecompose == null) return;
  age = dodDecompose[1] - dobDecompose[1];
  if (dodDecompose[2] < dobDecompose[2]) age--;
  else if (dodDecompose[2] == dobDecompose[2]){
    if (dodDecompose[3] < dobDecompose[3]) age--;
  }
  return(age);

}

function renderGBResponse(f_n,l_n){
  var t = "";

  t += '<p class="boxTitle" style="margin: 0px 0px 0px 0px;">Visitor Book Entry Received</p>\n';  
  t += '<p class="obitCondolenceDetails">for the family of <b>' + getName(obitItem) + '</b></p>\n';
  t += "<p><b>Dear " + f_n + " " + l_n + ",</b></p>\n";
  t += "<p>Thank you for signing the visitor book.  Your message will be delivered to the family.</p>\n";
  t += "<br><p>Sincerely yours,<br>Sparks Funeral Home</p>\n";
  t += "<center><br /><br /><form onSubmit='return gotoObit(" + obitItem.obitNum + ")'>\n";
  t += "<input type='submit' value='Return to Obituary' />\n";
  t += "</form>"
  document.writeln(t);
}


