// burn.js - javascript support for nctpba.com (CSS version)
// version: 9/10/2009
// copyright 2009 nctpba, all rights reserved
// portions copyright 2009 amalgamated binaries, inc.

// cursor variables and constants
var cY = 0;
var rY = 0;
var cPanel = 'null';
var pre = 'null';
var post = 'null';

// code constants
var Code = new Array()
 Code[0]  = "0000";
 Code[1]  = "3h6b";
 Code[2]  = "2e4h";
 Code[3]  = "8i9p";
 Code[4]  = "a3k8";
 Code[5]  = "9f2r";
 Code[6]  = "6d3k";
 Code[7]  = "5u7h";
 Code[8]  = "4m4f";
 Code[9]  = "7d2d";
 Code[10] = "9n5k";
 Code[11] = "k5r9";
 Code[12] = "5s6m";
 Code[13] = "1k9b";
 Code[14] = "p2f8";
 Code[15] = "3n2y";
 Code[16] = "2b5c";
 Code[17] = "m4b7";
 Code[18] = "8p4n";
 Code[19] = "9d4i";
 Code[20] = "4k7n";
var CL = Code.length;
var CR = Code.length-1;
var CODEINDEX = 0;

// genRand support function
function genRand(iLo, iHi)
{
 var cTime = new Date();
 var cS = cTime.getSeconds();
 var iL = Math.floor(iLo);
 var iH = Math.floor(iHi);
 return( Math.floor( iL + ( (iH - iL + 1) *  Math.random( (cS != null) ? cS: 0 ) )) );
}

// support functions
if(document.layers)
{
 pre = 'document.';
 post = '';
}
if(document.getElementById)
{
 pre = 'document.getElementById("';
 post = '").style';
}
if(document.all)
{
 pre = 'document.all.';
 post = '.style';
}

// setClass function
function setClass(target, nClass)
{
 if (document.getElementById)
 {
   document.getElementById(target).className = nClass;
 }
}

// showPanel function
// function conditionally hides "current" panel and resets selected object's visibility style to "visible"
function showPanel(strID)
{
 if (cPanel != 'null') hidePanel(cPanel);
 eval(pre + strID + post).visibility = 'visible';
 cPanel = strID;
}

// hidePanel function
// function resets selected object's visibility style to "hidden"
function hidePanel(strID)
{
 eval(pre + strID + post).visibility = 'hidden';
 cPanel = 'null';
}

function createCookie(name,value,days)
{
 if (days)
 {
  var date = new Date();
  date.setTime(date.getTime()+(days*24*60*60*1000));
  var expires = "; expires="+date.toGMTString();
 }
 else var expires = "";
 document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
 var nameEQ = name + "=";
 var ca = document.cookie.split(';');
 for(var i=0;i < ca.length;i++)
 {
  var c = ca[i];
  while (c.charAt(0)==' ') c = c.substring(1,c.length);
  if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
 }
 return null;
}

function eraseCookie(name)
{
 createCookie(name,"",-1);
}

// inTxt function
function inTxt(target, html)
{
  if (document.getElementById) document.getElementById(target).innerHTML = html
}

// outTxt function
function outTxt(target)
{
  if (document.getElementById) document.getElementById(target).innerHTML = '&nbsp;'
}

// assignTop function
function assignTop(d)
{
 if(self.pageYOffset)
 {
  rY = self.pageYOffset;
 }
 else if(document.documentElement && document.documentElement.scrollTop)
 {
  rY = document.documentElement.scrollTop;
 }
 else if(document.body)
 {
  rY = document.body.scrollTop;
 }
 if(document.all)
 {
  cY += rY;
  }
 d.style.top = (cY+10) + "px";
}

// setInsets function
function setInsets()
{
 // declare local variables
 var v = 0;
 var i1 = 0;
 var i2 = 0;
 // var i3 = 0;
 // reset random background in inset div (id "inid1")...
 v=genRand(1,23);
 i1 = v;
 if (i1<10) { numStr = "0"+i1 } else { numStr = ""+i1 };
 setClass('inid1', 'inset'+numStr);

 // reset random background in inset div (id "inid2"); a "while" loop is added to prevent equality with i1
 i2 = i1;
 while (i2==i1) { i2=genRand(1,23); }
 if (i2<10) { numStr = "0"+i2 } else { numStr = ""+i2 };
 setClass('inid2', 'inset'+numStr);

 // reset random background in inset div (id "inid3") another "while" loop is added to prevent equality with i1 or i2
 // i3 = i1;
 // while ((i3 == i1) || (i3 == i2)) { i3=genRand(1,20); }
 // if (i3<10) { numStr = "0"+i3 } else { numStr = ""+i3 };
 // setClass('inid3', 'inset'+numStr);
}

// clearForm function
// note: form name is "contact"
function clearForm()
{
 var codeElement;
 // pass 1: clear sender name
 codeElement = document.contact.realname;
 if (codeElement.value) { codeElement.value =''; }
 // pass 2: clear sender company
 codeElement = document.contact.company;
 if (codeElement.value) { codeElement.value=''; }
 // pass 3: clear sender phone number
 codeElement = document.contact.phone;
 if (codeElement.value) { codeElement.value=''; }
 // pass 5: clear sender e-mail address
 codeElement = document.contact.email;
 if (codeElement.value) { codeElement.value=''; }
 // pass 6: clear topic selection
 codeElement = document.contact.topic;
 if (codeElement.value) { codeElement.value='general information'; }
 // pass 7: clear verification code
 codeElement = document.contact.formcode;
 if (codeElement.value) { codeElement.value=''; }
 // pass 8: clear comments
 codeElement = document.contact.comments;
 if (codeElement.value) { codeElement.value=''; }
 // pass 9: reset error text
 document.getElementById('errortext').innerHTML = '* Required Fields';
}

// genCode function
function genCode(t)
{
 var curTime = new Date();
 var CS = curTime.getSeconds();
 // initialize global CODEINDEX variable
 CODEINDEX = 0;
 // call genRand with Lo/Hi range
 CODEINDEX=genRand(1,CR);
 if (document.getElementById)
 {
  switch(CODEINDEX)
  {
   case  0: document.getElementById('ci').style.backgroundImage='url(art/forms/formok00.png)'; break;
   case  1: document.getElementById('ci').style.backgroundImage='url(art/forms/formok01.png)'; break;
   case  2: document.getElementById('ci').style.backgroundImage='url(art/forms/formok02.png)'; break;
   case  3: document.getElementById('ci').style.backgroundImage='url(art/forms/formok03.png)'; break;
   case  4: document.getElementById('ci').style.backgroundImage='url(art/forms/formok04.png)'; break;
   case  5: document.getElementById('ci').style.backgroundImage='url(art/forms/formok05.png)'; break;
   case  6: document.getElementById('ci').style.backgroundImage='url(art/forms/formok06.png)'; break;
   case  7: document.getElementById('ci').style.backgroundImage='url(art/forms/formok07.png)'; break;
   case  8: document.getElementById('ci').style.backgroundImage='url(art/forms/formok08.png)'; break;
   case  9: document.getElementById('ci').style.backgroundImage='url(art/forms/formok09.png)'; break;
   case 10: document.getElementById('ci').style.backgroundImage='url(art/forms/formok10.png)'; break;
   case 11: document.getElementById('ci').style.backgroundImage='url(art/forms/formok11.png)'; break;
   case 12: document.getElementById('ci').style.backgroundImage='url(art/forms/formok12.png)'; break;
   case 13: document.getElementById('ci').style.backgroundImage='url(art/forms/formok13.png)'; break;
   case 14: document.getElementById('ci').style.backgroundImage='url(art/forms/formok14.png)'; break;
   case 15: document.getElementById('ci').style.backgroundImage='url(art/forms/formok15.png)'; break;
   case 16: document.getElementById('ci').style.backgroundImage='url(art/forms/formok16.png)'; break;
   case 17: document.getElementById('ci').style.backgroundImage='url(art/forms/formok17.png)'; break;
   case 18: document.getElementById('ci').style.backgroundImage='url(art/forms/formok18.png)'; break;
   case 19: document.getElementById('ci').style.backgroundImage='url(art/forms/formok19.png)'; break;
   case 20: document.getElementById('ci').style.backgroundImage='url(art/forms/formok20.png)'; break;
  }
  // TEST MODE
  // --------- activated by passing non-zero value to "t" parameter
  // --------- displays code generation information in a <p> element with id="codetest"
  // --------- if t=99, code generation information is displayed in an alert message box
  if ((t!=0) && (t!=99)) document.getElementById('codetest').innerHTML = 'Range: 1-'+CR+'<br />Random Index: '+CODEINDEX+'<br />Random Code: '+Code[CODEINDEX]+'<br />Seed Number: '+CS;
  if ((t!=0) && (t==99)) alert('Range: 1-'+CR+'<br />Random Index: '+CODEINDEX+' | Random Code: '+Code[CODEINDEX]+'<br />Seed Number: '+CS);
 }
}

// eCheck support function
function eCheck(str)
{
 var at="@";
 var dot=".";
 var lat=str.indexOf(at);
 var lstr=str.length;
 var ldot=str.indexOf(dot);
 if (str.indexOf(at)==-1) return false;
 if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr) return false;
 if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr) return false
 if (str.indexOf(at,(lat+1))!=-1) return false
 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot) return false
 if (str.indexOf(dot,(lat+2))==-1) return false
 if (str.indexOf(" ")!=-1) return false
 return true;
}

// verifyForm function
function verifyForm(t)
{
 // ERROR HANDLING VIA TEST MODE
 // ----- enabled via non-zero "t" parameter value; displays error information in a <p> element with id="errortext"
 // ----- if t=99, error information is also displayed in an alert message box
 var codeElement;
 var codeTopic;
 var codeSender;
 var codeRecipient;
 // pass 1: check for sender name (required)
 codeElement = document.contact.realname;
 // 1a: check for name existence...
 if (!codeElement.value)
 {
  // error trapping
  if ((t!=0) && (t!=99)) document.getElementById('errortext').innerHTML = '* Error: Your name (required) has not been entered.';
  if ((t!=0) && (t==99)) alert('Your name (required) has not been entered.&nbsp; Correspondence canceled.');
  codeElement.focus();
  return false;
 }
 //
 // pass 2: check for sender phone (required)
 codeElement = document.contact.phone;
 // 2a: check for phone existence...
 if (!codeElement.value)
 {
  // error trapping
  if ((t!=0) && (t!=99)) document.getElementById('errortext').innerHTML = '* Error: Your phone number (required) has not been entered.';
  if ((t!=0) && (t==99)) alert('Your phone number (required) has not been entered.&nbsp; Correspondence canceled.');
  codeElement.focus();
  return false;
 }
 // 2b: check for string length... (at least 10 digits)
 if (codeElement.value.length<10)
 {
  // error trapping
  if ((t!=0) && (t!=99)) document.getElementById('errortext').innerHTML = '* Error: Please enter phone number including area code.';
  if ((t!=0) && (t==99)) alert('Your phone number (required) has not been entered.&nbsp; Correspondence canceled.');
  codeElement.focus();
  return false;
 }
 //
 // pass 3: check for e-mail address (required)
 codeElement = document.contact.email;
 // 3a: check for address existence...
 if (!codeElement.value)
 {
  // error trapping
  if ((t!=0) && (t!=99)) document.getElementById('errortext').innerHTML = '* Error: E-Mail address (required) has not been entered.';
  if ((t!=0) && (t==99)) alert('E-Mail address (required) has not been entered.&nbsp; Correspondence canceled.');
  codeElement.focus();
  return false;
 }
 // 3b: check for address validity...
 if (!eCheck(codeElement.value))
 {
  // error trapping
  if ((t!=0) && (t!=99)) document.getElementById('errortext').innerHTML = '* Error: An invalid E-Mail address has been entered.';
  if ((t!=0) && (t==99)) alert('An invalid E-Mail address has been entered.&nbsp; Correspondence canceled.');
  codeElement.focus();
  return false;
 }
 //
 // pass 4: check for verification code...
 codeElement = document.contact.formcode;
 // 4a: check for code existence...
 if (!codeElement.value)
 {
  // error trapping
  if ((t!=0) && (t!=99)) document.getElementById('errortext').innerHTML = '* Error: Verification code (required) has not been entered.';
  if ((t!=0) && (t==99)) alert('Verification code (required) has not been entered.&nbsp; Correspondence canceled.');
  codeElement.focus();
  return false;
 }
 // 4b: check for code length...
 if (codeElement.value.length!=4)
 {
  // error trapping
  if ((t!=0) && (t!=99)) document.getElementById('errortext').innerHTML = '* Error: Four characters are required in code entry.';
  if ((t!=0) && (t==99)) alert('Four characters are required in code entry.&nbsp; Correspondence canceled.');
  codeElement.focus();
  return false;
 }
 // 4c: check for code validity...
 if (codeElement.value!=Code[CODEINDEX])
 {
  // error trapping
  if ((t!=0) && (t!=99)) document.getElementById('errortext').innerHTML = '* Error: Incorrect verification code.';
  if ((t!=0) && (t==99)) alert('Incorrect verification code.&nbsp; Correspondence canceled.');
  codeElement.focus();
  return false;
 }
 //
 // SUCCESS! post a success message...
 if ((t!=0) && (t!=99)) document.getElementById('errortext').innerHTML = '* Your message has been validated.&nbsp; Now processing correspondence...';

 // before returning "true", establish the message recipient, based on "topic" selection...
 codeTopic = document.contact.topic;
 codeSender = document.contact.realname;
 codeRecipient = document.contact.recipient;
 /*
  if (codeTopic == 'questions')   { codeRecipient.value=both; }
  if (codeTopic == 'membership')  { codeRecipient.value=both; }
  if (codeTopic == 'corrections') { codeRecipient.value=both; }
  if (codeTopic == 'feedback')    { codeRecipient.value=both; }
 */

 // before returning "true", copy select values from formMail inputs to custom inputs (used for user-friendly e-mail composition)
 document.contact.from.value = document.contact.realname.value;

 // return true
 return true;
}

