// See contact.html and cgi-bin\data\mailalias.txt
// e.g., <a href="http://wellhost.com/contact.html?to=webmaster&subject=JFKWeb:%20DemoFeedback">contact</a>
//       <a href="http://wellhost/contact.html?to=webmaster&force=1&subject=JFKWeb:%20Carrot_Yes&title=Your%20response&prompt=Your%20<b>Comments?</b>">True</a>
// Params:
// to       : use nickname in mailalias
//              (if "page" exists anywhere in nickname, will be 120-char limited text length, subject and name fields disabled).
// subject  : prependable subject; at send time, this is pre-pended to editable subject field
// showsubj : populate fully editable subject field
// force    : if force=1, disable Recipient and Subject (and show prepend subject value in field)
// title    : Instead of "Contact Jeff" or whatever
// prompt   : Some text to tell them what to do, just above textarea.
// showprev : Useful for showing and emailing referringpage url.  If given, it will always show.
// req      : Required fields, separated by period
var maxpagerlength = 120;
var disableMe = ["subj","name","msg"];
var lastVal = new Array();
var presubj = '';
var hidesubject = '';
var force = '';
var phone = '';
var title = '';
var prompt = '';
var showsubj  = '';
var showprev = '';
var subject  = '';
var to='';
var only='';
var enable='';
var togiven = false;
var namerequired = false
var required = new Array()
var req=""

var myObj

parseSearch();
force=1 // 20080605

function initContact () {
  if (document.all || document.getElementById) {  // IE or NS6+ only
    var refObj = document.getElementById("referringpage")
    inform=getRef("mainForm")
    var memail = getCookie("usersEmail");
    var mename = getCookie("userName");
    var mephone = getCookie("userPhone");
    if (!mephone) mephone='';
    if (!memail) memail='';

    if (!mename) mename='';
    else {
      var cookObj = document.getElementById("jfsavecookie")
      cookObj.checked=true
      var cookObj2 = document.getElementById("jfsavecookie2")
      cookObj2.checked=true
      }
    inform.EMAIL.value=memail;
    inform.name.value=mename;
    inform.phone.value=mephone;
//  toalias=getCookie("lastTo");

    if (to == '') to="webmaster" // 20080605

    if (to != '') {
      var cs = document.getElementById("recipient")
      for (j = 0;j<cs.options.length;j++) {
        if (cs.options[j].value) {
          if (cs.options[j].value == to) {
            cs.options[j].selected = true;
            togiven = true;
            }
          }
        }
      }

    if (subject != '') {
      var cs = getRef("subject")
      cs.value=unescape(unescape(subject));
      presubj=cs.value;
      }


    if (phone=="1") {
      document.getElementById("cookiename").style.display="none"
      document.getElementById("cookiephone").style.display=""
      document.getElementById("TR_phone").style.display=""
      }

    if (force == "1") {
      if (togiven && "undefined" != typeof getRef("recipient")) getRef("recipient").disabled=true;
      myObj=document.getElementById("subj")
      myObj.disabled=true;
      myObj.value=unescape(subject)
      myObj.style.backgroundColor="#DDDDDD"
      }
    else {
      document.getElementById("jfclear").style.display="";
      document.getElementById("jfclear").disabled=false;
      }

    if (hidesubject == "1") {
      document.getElementById("TR_subj").style.display="none";
      }

    if (only != '') {
      only = only.split("+")
      var mySel = document.getElementById("recipient")
      var myOpts = mySel.options
      var myKeep = new Array()
      var keepit,myval
      for (var i=0;i<myOpts.length;i++) {
        keepit = false;
        myval = myOpts[i].value.toUpperCase()
        if (myval != '') {
          for (var j=0;j<only.length;j++) {
            if (only[j].toUpperCase() == myval) {
              keepit=true;
              j=1+only.length;
              }
            }
          if (!keepit) {
            myOpts[i] = null
            i--
            }
          }
        }
      if (mySel.options.length <2) {
        var i=mySel.options.length
        mySel.options[i] = new Option("Webmaster","webmaster");
        }
      if (mySel.options.length == 2) {
        mySel.options[1].selected=true;
        mySel.disabled=true;
        }
      }

    if (enable) {
      enarr = enable.split('.')
      for (var i=0;i<enarr.length;i++) {
        myObj = document.getElementById("TR_" + enarr)
        if (myObj) myObj.style.display=""
        }
      }

    required.push("recipient")
    if (namerequired) required.push("name")
    required.push("EMAIL")

    req=req.split('.')
    for (var i=0;i<req.length;i++) {
      if (req[i]) required.push(req[i])
      }

    if (showprev != "") {
      myObj = document.getElementById("showprevious")
      myObj.innerHTML = "&nbsp;" + showprev
      myObj = document.getElementById("referringpage")
      myObj.value=showprev
      myObj = document.getElementById("showprevtr")
      myObj.style.display="";
      }

    if ((title) && ("undefined" != typeof getRef("jfhead").innerHTML)) getRef("jfhead").innerHTML=unescape(unescape(title));
    if (prompt && "undefined" != typeof getRef("jfprompt").innerHTML) {
      getRef("jfprompt").innerHTML=unescape(unescape(prompt));
      document.getElementById("jfprompt").style.backgroundColor="CCCCFF";
      }
    if (showsubj && "undefined" != typeof getRef("subj").value) getRef("subj").value=unescape(unescape(showsubj));
    doPager();
    }
  }

function doPager() {
  var retval=true;
  var recp = getRef('recipient');
  if (recp) {
    isPager = (-1 < recp.value.indexOf("page",0))
    for (var i=0;i<disableMe.length;i++) {
      var myref  =disableMe[i];
      var inp    =getRef(myref)
      if (inp) {
        var inpsty =document.getElementById(myref).style
        var tdsty  =document.getElementById("TD_"+myref).style
        var jmsty = ""
        var jmObj = document.getElementById("jfpagermsg")
        if (jmObj) jmsty  = jmObj.style
    //  alert(inp.value + "/" + inp.disabled + "/" + inp + "/" + inpsty + "/" + tdsty)
        if (inp && inpsty && tdsty) {
          if (isPager) {
            if (jmsty) {
              jmsty.visibility="visible"
              jmsty.display=""
              }
            lastVal[myref]=inp.value
            if (myref == "msg") {
              if (inp.value.length > maxpagerlength) {
                retval=false;
                if (jmsty) jmsty.color="red";
                }
              else {
                if (jmsty) jmsty.color="";
                }
              inp.value = inp.value.substring(0,maxpagerlength);
              inp.maxlength=maxpagerlength;
              }
            else {
              if (inp.value != '') retval=false;
              inp.value='';
  //          inp.disabled=true;
              inpsty.backgroundColor="#DDDDDD";
              }
            }
          else {
            if (jmsty) {
              jmsty.visibility="hidden"
              jmsty.display="none"
              }
            if (lastVal[myref]) inp.value=lastVal[myref];
            if (myref == "msg") {
              inp.maxlength='';
              }
            else {
  //          inp.disabled=false;
              inpsty.backgroundColor="#FFFFFF";
              }
            }
          }
        }
      }
    }
  return retval;
  }


//- Fcn: getRef 1.1
function getRef(id) {
  if (document.getElementById) return document.getElementById(id);
  else if (document.all) return document.all[id];
  else if (document.layers) return document.layers[id];
  else return null;
  }

//- Fcn getStyle 1.1
function getSty(id) {
  myObj=getRef(id);
  if (myObj.style) return myObj.style;
  else return myObj;
  }

function getArgs() {
 var args = new Object();
 var query = location.search.substring(1);
 var pairs = query.split("&");

 for(var i = 0; i < pairs.length; i++) {
  var pos = pairs[i].indexOf('=');
  if (pos == -1) continue;
  var argname = pairs[i].substring(0,pos);
  var value = pairs[i].substring(pos+1);
  args[argname] = unescape(value);
 }
 return args;
}

function toggleCookie(me) {
  var memail = getCookie("usersEmail");
  var mename = getCookie("userName");
  var mephone = getCookie("userphone");
  var emailObj = document.getElementById("EMAIL")
  var nameObj = document.getElementById("name")
  var phoneObj = document.getElementById("phone")
  var currEmail = emailObj.value
  var currName = nameObj.value
  var currPhone = phoneObj.value
  if (!me.checked) {
    setCookie("usersEmail","",offsetDays(365))
    setCookie("userName","",offsetDays(365))
    setCookie("userPhone","",offsetDays(365))
    alert("Your look cookie no longer has your email saved")
    }
  else {
    setCookie("usersEmail",currEmail,offsetDays(365))
    setCookie("userName",currName,offsetDays(365))
    setCookie("userPhone",currPhone,offsetDays(365))
    var savedCookie = getCookie("usersEmail")
    var savedName = getCookie("userName")
    var savedPhone = getCookie("userPhone")
    if (savedPhone) alert('This email, name & phone is saved on your local cookie: email="' + savedCookie + '", name="' + savedName + '", phone="' + savedPhone + '"')
    else alert('This email & name is saved on your local cookie: email="' + savedCookie + '", name="' + savedName + '"')
    }
  }


function validForm(inform) {
  var formsupplied=true;
  if (document.all || document.getElementById) {  // IE or NS6+ only
    if (!inform) {
      inform=document.getElementById("mainForm");
      formsupplied=false;
      }
    for (i = 0; i < inform.length; i++) {
      var tempobj = inform.elements[i];
      if (tempobj.type.toLowerCase() == "submit" || tempobj.type.toLowerCase() == "reset") tempobj.disabled = true;
      }
    }

  if (!inform) {
    inform=getRef("mainForm");
    if (!inform) {
      alert("Unable to check forms with this browser (except when Submitted).  Try Internet Explorer.");
      return false;
      }
    }
  else {
    errSt="";

    tryemail = inform.EMAIL.value;
    if (!tryemail) {
      tryemail='';
      inform.EMAIL.value='';
      }
    else if ((tryemail) && (tryemail.indexOf("@")<1)){
      errSt += "\n* The email address ("+tryemail+") doesn't look right.\n  There's no '@' sign; Please use the e-mail address form as in the example.";
      }

    if (!doPager()) {
      errSt += "\n* Some of your data was removed for sending to a pager; please check to see if it is still ok and re-click Submit."
      }

    var dofocus = true
    for (var i=0;i<required.length;i++) {
      var myfld = required[i]
      var myval = trim(inform[myfld].value)
      if (!myval) errSt += '\n* You didn\'t enter a value for: ' + myfld
      if (dofocus) {
        var myObj = document.getElementById(myfld)
        dofocus=false
        try {
          myObj.focus()
          myObj.select()
          }
        catch (e) {
          dofocus=true;
          }
        }
      }

    if (errSt != "") {
      alert("FORM INCOMPLETE:\n"+errSt)
      // location.href=toploc
      for (i = 0; i < inform.length; i++) {
        var tempobj = inform.elements[i];
        if (tempobj.type.toLowerCase() == "submit" || tempobj.type.toLowerCase() == "reset") tempobj.disabled = false;
        }
      return false;
      }
    else {
      var cookObj = document.getElementById("jfsavecookie")
      var cookObj2 = document.getElementById("jfsavecookie2")
      if ((cookObj.checked) || (cookObj2.checked)) setCookie("usersEmail",inform.EMAIL.value,offsetDays(365))
      for (i = 0; i < inform.length; i++) {
        var tempobj = inform.elements[i];
        if (tempobj.type.toLowerCase() == "submit" || tempobj.type.toLowerCase() == "reset") tempobj.disabled = false;
        }
      if (formsupplied) {
        if ((inform.subj) && (inform.subj.value != "")) { inform.subject.value=inform.subject.value+" "+inform.subj.value }
        }
      inform.recipient.disabled=false;
      inform.subject.disabled=false;
      return true;
      }

    }
  }

//- v v v v v v v Function Suite: COOKIES AND OPTIONS v v v v v v v v v v

function lTrim (myString) {
  if (!myString) return ""
  else return myString.replace( /^\s*/, "" );
  }

function rTrim (myString) {
  if (!myString) return ""
  else return myString.replace( /\s*$/, "" );
  }

function trim (myString) {
  return rTrim(lTrim(myString));
  }


function universalGet(srcid) {
//  alert("universalGet, id=" + srcid)
  var myObj = document.getElementById(srcid)
  if (myObj) {
    if (myObj.nodeName == "INPUT") { // radio buttons must have value attribute
      if (myObj.type == "radio") {
        var myName = myObj.name
//      if ("dup" == myName.substring(0,3)) myName=myName.substring(3,myName.length)
        var myObjRadio = document.getElementsByName(myName)
//       alert("universalGet: " + myName + " / " + myObjRadio.length)
        for (var i=0;i<myObjRadio.length;i++) {
  //      alert("universalGet: " + srcid + " : " + myObjRadio[i].value + " / " + myObjRadio[i].id + " / " + myObjRadio[i].checked)
          if (myObjRadio[i].checked) {
            return myObjRadio[i].value
            }
          }
        return ""
        }
      if (myObj.type == "checkbox") {
        return myObj.checked
        }
      else return myObj.value
      }
    else if (myObj.nodeName == "SELECT") {
      var retval=""
      for (var i=0;i<myObj.options.length;i++) {
        if (myObj.options[i].selected) {
          if (retval == "") retval=myObj.options[i].value
          else retval += "; " + myObj.options[i].value
          }
        }
      return retval
      }
    else return myObj.innerHTML
    }
  else { // if name is given instead of id
    var myObjRadio = document.getElementsByName(srcid)
//    alert(srcid + " // " + myObjRadio.length)
    for (var i=0;i<myObjRadio.length;i++) {
//      alert(srcid + ": " + i + " / " + myObjRadio[i].checked + " / " + myObjRadio[i].value)
      if (myObjRadio[i].checked) {
        return myObjRadio[i].value
        }
      }
    return "";
    }
  }

function universalPut(trgid,myval,trgname) {
  if (trgid == "") { // radio button
    var myObjRadio = document.getElementsByName(trgname)
    for (var i=0;i<myObjRadio.length;i++) {
//      alert(i + " / " + myval + " / " + myObjRadio[i].value)
      if (myObjRadio[i].value == myval) {  // radio buttons must have value attribute
        myObjRadio[i].checked = true;
        }
      else myObjRadio[i].checked=false;
      }
    }
  else {
    myObj = document.getElementById(trgid)
//  alert(trgid + " -> " + myObj.id)
    if (myObj.nodeName == "INPUT") {
      if (myObj.type == "radio") {

        var myName = myObj.name
//      if ("dup" == myName.substring(0,3)) myName=myName.substring(3,myName.length)
        var myObjRadio = document.getElementsByName(myName)

//      var myObjRadio = document.getElementsByName(myObj.name)

        for (var i=0;i<myObjRadio.length;i++) {
//        alert(myObj.id + " / " + myObj.name + " / " + myObjRadio[i].id + " / " + myObjRadio[i].value + " / " + myObjRadio[i].checked)
          if (myObjRadio[i].value == myval) {  // radio buttons must have value attribute
            myObjRadio[i].checked = true;
            }
          else myObjRadio[i].checked=false;
          }
        }
      else if (myObj.type == "checkbox") {
        myObj.checked = myval
        }
      else {
//        alert("SETTING VALUE: " + myObj.id + " / " + myObj.type)
        myObj.value=myval
        }
      }
    else if (myObj.nodeName == "SELECT") {
      var retval=""
      for (var i=0;i<myObj.options.length;i++) {
        if (myObj.options[i].value == myval) {
//        alert(i + " / " + myObj.id + " / " + myObj.options[i].selected)
          myObj.options[i].selected="selected";
          }
        else myObj.options[i].selected="";
        }
      return retval
      }
//    else myObj.innerHTML = myval;
    else eval("myObj" + "." + "inner" + "HTML" + " = myval")
    }
  }


//- Fcn: parseSearch 1.0
function OLDparseSearch () {
  uargs=location.search.substring(1,location.search.length);
  if (-1 < uargs.indexOf('\%26',0)) {
    argArray=uargs.split("\%26")
    }
  else argArray=uargs.split("&");
  for (var i=0;i<argArray.length;i++) {
    thisst=argArray[i];
    thisArgset = thisst.split('=');
    if (thisArgset[1]) eval(thisArgset[0]+'="'+thisArgset[1]+'"')
    }
  }

//- Fcn: parseSearch 1.1
function parseSearch () {
  var thisst, thisArgset, thisVar, thisVal, myCmd
  var uargs=location.search.substring(1,location.search.length);
  if (-1 < uargs.indexOf('\\')) uargs=uargs.replace(/\\/gi,'/')
  if (-1 < uargs.indexOf('\%26',0)) {
    argArray=uargs.split("\%26")
    }
  else argArray=uargs.split("&");
  for (var i=0;i<argArray.length;i++) {
    thisst=argArray[i];
    thisArgset = thisst.split('=');
//  alert(thisArgset[0]+"="+thisArgset[1])
    if (thisArgset[1]) {
      thisVar = thisArgset[0]
      thisVal = thisArgset[1]
      myCmd = thisVar  + '="' + thisVal + '";'
      eval(myCmd)
      }
    }
  }



//- Function: "reportFullCookie()"
//-   External: index.html, newuser.html, std\uncookie.js
//-   Show (via alert()) entire cookie and optionally delete it.
function reportFullCookie(qdelete) {
  var temp_cookie = document.cookie;
  var strlen = temp_cookie.length;
  var i = 0;
  var didone = false;
  var numfound=0;
  var outstring="";
  while (i < strlen) {
    var j = temp_cookie.indexOf("=",i);
    var n = temp_cookie.substring(i,j);
    if (qdelete) var dodelete="Deleted Cookie: ";
    else var dodelete="";
    var outstring = outstring+"\n"+dodelete+n+"="+getCookie(n);
    numfound=numfound+1;
    didone = true;
    if (qdelete) deleteCookie(n);
    i = temp_cookie.indexOf(" ",j) + 1;
    if (i == 0) break;
    }
  if (!qdelete) var outstring = "This site keeps certain things in your browser's cookie.\nHere is a listing of all "+numfound+" fields in this site's cookie: "+outstring;
  if (!didone) var outstring = outstring+"\n(No cookies found)";
  if (!qdelete) {
    var outstring = outstring+"\nClick OK to close this message window, CANCEL to erase ENTIRE cookie...";
    var agree = confirm(outstring);
    if (!agree) {
      reportFullCookie(true);
      }
    }
  else {
    //alert(outstring);
    }
  }

//- Function: "setCookie()"
//-   (External?: content\foocart.html)
//-   Set a cookie attribute/value
//-   Optional 3rd arg: when expire, a Date() object.  cf: offsetDays().  Null means ??
//-   Other optional arguments not used here.
function setCookie (name, value) {
  var args = setCookie.arguments;
  var len = setCookie.arguments.length;
  var expires = (len > 2) ? args[2] : null;
  var path = (len > 3) ? args[3] : null;
  var domain = (len > 4) ? args[4] : null;
  var secure = (len > 5) ? args[5] : false;
  document.cookie = name + "=" + escape (value) +
  ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
  ((path == null) ? "" : ("; path=" + path)) +
  ((domain == null) ? "" : ("; domain=" + domain)) +
  ((secure == true) ? "; secure" : "");
  }

//- Function: "offsetDays()"
//-   Converts number of days to an offset Date object (e.g., for setCookie())
function offsetDays (days) {
  var args = offsetDays.arguments;
  var len = offsetDays.arguments.length;
  var retDate = (len>1) ? args[1] : new Date();
  retDate.setTime(retDate.getTime() + days * 24 * 60 * 60 * 1000);
  return retDate;
  }

//- Fcn: getCookieVal 1.1
//-   Return value at startpoint, assume delimited by ';'
function getCookieVal (startpoint) {
  var cook=document.cookie.replace(/\n|\r|\r\n|\n\r/g,"")
//alert(cook);
  var endindex = cook.indexOf (";", startpoint);
  if (endindex == -1) endindex = cook.length;
  return unescape(document.cookie.substring(startpoint, endindex));
  }

//- Fcn: getCookie 1.1
//-   External: (content\foocart.htm?), newuser.html, std\uncookie.js
//-   Return value for a attribute in cookie
function getCookie (name) {
  var prefix = name + "=";
  var prefixlen = prefix.length;
  var strlen = document.cookie.length;
  var i = 0;
  while (i < strlen) {
    var j = i + prefixlen;
    if (document.cookie.substring(i, j) == prefix) return getCookieVal (j);
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break;
    }
  return null;
  }


//- Function: "deleteCookie()"
//-   External: (content\foocart.htm?), newuser.html, std\uncookie.js
//-   Delete an attribute/value pair from cookie
function deleteCookie (name) {
  var expires = new Date();
  expires.setTime (expires.getTime() - 1);
  var cookieval = getCookie (name);
  document.cookie = name + "=" + cookieval + "; expires=" + expires.toGMTString();
  }

//- Function: "deleteEntireCookie()"
//-   External: index.html, newuser.html
//-   Calls "reportFullCookie() with arguments to delete it quietly
function deleteEntireCookie () {
  reportFullCookie('DELETE')
  }

function getClipboard()  //  remember to do about:config and allow applets
{
  if (window.clipboardData) return(window.clipboardData.getData('Text'));
  else if (window.netscape)
  {
    netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
    var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
    if (!clip) return "";
    var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
    if (!trans) return;
    trans.addDataFlavor('text/unicode');
    clip.getData(trans,clip.kGlobalClipboard);
    var str = new Object();
    var len = new Object();
    try { trans.getTransferData('text/unicode',str,len); }
    catch(error) { return ""; }
    if (str)
    {
      if (Components.interfaces.nsISupportsWString) str=str.value.QueryInterface(Components.interfaces.nsISupportsWString);
      else if (Components.interfaces.nsISupportsString) str=str.value.QueryInterface(Components.interfaces.nsISupportsString);
      else str = null;
    }
    if (str) return(str.data.substring(0,len.value / 2));
  }
  return "";
}

function setClipboard(meintext)
{
  if (window.clipboardData) window.clipboardData.setData('Text',meintext);
  else if (window.netscape)
  {
  netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
   var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
   if (!clip) return;
   var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
   if (!trans) return;
   trans.addDataFlavor('text/unicode');
   var str = new Object();
   var len = new Object();
   var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
   var copytext=meintext;
   str.data=copytext;
   trans.setTransferData("text/unicode",str,copytext.length*2);
   var clipid=Components.interfaces.nsIClipboard;
   if (!clip) return false;
   clip.setData(trans,null,clipid.kGlobalClipboard);
   }
  return;
}

