function forumIntro(name)  {
  switch (name) {
    case "Identification": return "<p><i>Note:</i>  When Shoot posts a new specimen for identification, the first person to identify it will receive a token gift&mdash;usually a few conifer seeds, but sometimes a larger plant, T-shirt, or hat.</p>"; break;
    default: return "";  }  }

function Random(N) {  return Math.floor(N * (Math.random() % 1));  }

function random3letters() {
  var j, S = "";
  for (j = 0; j < 3; j++) {  S += String.fromCharCode(97 + Random(26));  }
  return S;  }

salt = random3letters();

//need forumSetFormValues to set values at outset, avoid setting url

function forumSetFormValues(f) {
  var val = getCookie("typepadauthor");
  if(!f.author.value && val) f.author.value = val;
  val = getCookie("typepademail");
  if(!f.email.value && val) f.email.value = val;
  val = getCookie("forumzone");
  if(!f.zone.value && val) f.zone.value = val;
  val = getCookie("forumlocation");
  if(!f.location.value && val) f.location.value = val;  }

function forumParagraphize(s) {
  s = s.replace(/</g, "&lt;");
  s = s.replace(/&/g, "&amp;");
  s = s.replace(/^\s*/, "<p>");
  s = s.replace(/\s*$/, "</p> ");
  s = s.replace(/[\r\n]+/g, "</p><p>");
  s = s.replace(/"/g, "\\\"");
  return s;
  }
  
function forumXmlEscape(s) {
  s = s.replace(/[\r\n]/g, "");
  s = s.replace(/</g, "&lt;");
  s = s.replace(/&/g, "&amp;");
  s = s.replace(/"/g, "\\\"");
  return s;  }

function forumNewThreadId() {
  var d = new Date();
  return d.getTime() + salt;  }
  
function forumProcessData(f) {
  if (!f.author.value.match(/\w/)) return 1;
  if (!f.email.value.match(/^\S+@\S+$/)) return 2;
  if (!f.comments.value.match(/\w/)) return 3;
  document.getElementById("comment-text").value = ' </p><threadId>' + (f.threadId.value || forumNewThreadId()) + '</threadId><zone>' + f.zone.value + '</zone><location>' + forumXmlEscape(f.location.value) + '</location><title>' + forumXmlEscape(f.title.value) + '</title><text>' + forumParagraphize(f.comments.value) + '</text><p> ';
  return 0;  }

//need forumHandleSubmit to bake zone & location cookies, process data

function forumDisableButton(e) {
  if (!requestSubmitted) {
    theForm = e.form;
    var resultCode = forumProcessData(theForm);
    if (!resultCode) {
      e.disabled = true;
      requestSubmitted = true;
      var now = new Date();
      now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000);
      if (theForm.zone.value) setCookie('forumzone', theForm.zone.value, now);
      if (theForm.location.value) setCookie('forumlocation', theForm.location.value, now);
      if (theForm.bakecookie.checked) rememberMe(theForm);
      else forgetMe();
      setTimeout('submitIt()', 250);  }
    else {
      switch (resultCode) {
        case 1: alert("You must provide a name or online \"handle\"."); break
        case 2: alert("You must provide an e-mail address.  The address will not be displayed or provided to others."); break
        case 3: alert("Please provide some comments!"); break
        default: alert("There is a problem with your submission.  Please try to provide other values.");  }  }  }
  else {  return false;  }  }

function forumNewThread() {

  var f = document.getElementById("comments_form");

  f.threadId.value = "";
  f.title.value = "";
  document.getElementById("formTitle").firstChild.nodeValue = "Post to this forum";
  document.getElementById("newPostLink").className = "displaynone";
  f.title.focus();  }  

function forumReply(thrd, tl) {

  var f = document.getElementById("comments_form");

  f.threadId.value = thrd;
  f.title.value = "RE: " + tl;
  document.getElementById("formTitle").firstChild.nodeValue = "Reply to \"" + tl +"\"";
  document.getElementById("newPostLink").className = "posted";
  f.comments.focus();  }

var previewing = 0;
var weekday = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
var month = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

function forumFormatDate(d) {

  var hours = d.getHours() ? ((d.getHours() < 13) ? d.getHours() : (d.getHours() - 12)) : 12;
  var minutes = (d.getMinutes() < 10) ? ("0" + d.getMinutes()) : d.getMinutes();
  var ampm = (d.getHours() < 12) ? "AM" : "PM";
  
  return (weekday[d.getDay()] + ", " + month[d.getMonth()] + " " + d.getDate() + " at " + hours + ":" + minutes + " " + ampm);  }

function forumPreview(e) {
  if (previewing) {
    e.value = " Preview ";
    document.getElementById("previewdiv").className = "displaynone";
    document.getElementById("formdiv").className = "displayblock";
    previewing = 0;  }
  else {
    theForm = e.form;
    var resultCode = forumProcessData(theForm);
    if (!resultCode) {
      var now = new Date();
      var previewxml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?> <?xml-stylesheet type=\"text/xsl\" href=\"http://www.treedazzled.com/forums/forum3.xsl\"?>  <forum> <post> <p>" + document.getElementById("comment-text").value + "</p> <timestamp>1</timestamp> <timetext>" + forumFormatDate(now) + "</timetext> <author><![CDATA[" + theForm.author.value + "]]></author> <link><![CDATA[" + theForm.url.value +"]]></link> </post> </forum> ";
      renderxml(previewxml, "previewdiv");
      var previewdiv = document.getElementById("previewdiv");
      topul = previewdiv.getElementsByTagName("ul")[0];
      processULELC(topul);
      topul.childNodes[0].className = "aq3open";
      e.value = " Edit ";
      document.getElementById("formdiv").className = "displaynone";
      previewdiv.className = "displaygreenbg";
      previewing = 1;  }
    else {
      switch (resultCode) {
        case 1: alert("You must provide a name or online \"handle\"."); break
        case 2: alert("You must provide an e-mail address.  The address will not be displayed or provided to others."); break
        case 3: alert("Please provide some comments!"); break
        default: alert("There is a problem with your submission.  Please try to provide other values.");  }  }  }  }
  
//need forumHandleCheck to use forumSetFormValues

function forumHandleCheck(e) {
    if (hasChanged) return;
    if (e.checked)
        forumSetFormValues(e.form);
    else
        unsetFormValues(e.form);
}


