/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!
!!  form validation script
!!  010.C2-retreat.htm
!!  rev060220;
!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/

//.....  VALIDATOR:
//.....  validating fields: realname/Name, email/Eaddress, Attending

var arrThisForm = new Array ();
var Qra = new Array ();
var Qflag = false;

//------ focus styles ------------------------------------->>

function focusme(thisfield)
  {
  thisfield.style.background='rgb(240,240,240)';
  thisfield.style.borderColor='rgb(102,102,102)';
  }

function blurme(thisfield)
  {
  thisfield.style.background='rgb(255,255,255)';
  thisfield.style.borderColor='rgb(185,204,255)';
  }

//------ Generic Form Fill ------------------------------>>

function goTestFill(thisform)
  {
  var thedate = new Date();
  var theminutes = thedate.getMinutes()+'';
  var thehours = thedate.getHours()+'';
  if (theminutes.length==1) theminutes = '0' + theminutes;
  if (thehours.length==1) thehours = '0' + thehours;
  var thetime = thehours + ':' + theminutes;

  if(thisform.name) thisform.name.value = 'info -- ' + thetime;
  if(thisform.email) thisform.email.value = 'info@westerncanada.com';
  if(thisform.phone) thisform.phone.value = '555-1234';
  if(thisform.status) thisform.status[3].checked = true;
  if(thisform.status_other) thisform.status_other.value = 'programmer';
  if(thisform.abstract) thisform.abstract.value = 'info test []';
  if(thisform.membership) thisform.membership[3].checked = true;
  return (false);
  }

//------ field validation ------------------------------------->>

function isnumber(thisfield)
  {

//alert(thisfield.name);

  if (!parseInt(thisfield.value) && thisfield.value != "")
    {
    alert('* Numeric value expected.\nPlease re-enter a number.\n');
    thisfield.value = "";
    thisfield.focus();
    thisfield.style.borderColor='rgb(255,51,51)';
    }
  }

//------ form validation ------------------------------------->>

function goValid(thisform)
  {
  var theAlert = '';
  var theFocus = '';
  var checkflag = false;

  if (thisform.name.value.toLowerCase() == 'test')
    {
    goTestFill(thisform);
    return (false);
    }

//REQUIRED:realname
  if(!thisform.name.value)
    {
    theAlert = '* Required Info: Name.\n';
    thisform.name.style.border='1px solid rgb(255,51,51)'
    theFocus = 'name';
    }

//REQUIRED:membership
  if(thisform.membership)
    {
    for (i=0; i<thisform.membership.length; i++)
      {
      if (thisform.membership[i].checked)
        {
        checkflag = true;
        break;
        }
      }
      if (!checkflag)
        {
        theAlert += '* Required Info: Membership Status.\n';
        if (!theFocus) theFocus = 'membership[3]';
        }
    }


//REQUIRED:email
  if (!thisform.email.value)
    {
    theAlert += '* Required Info: Email.\n';
    thisform.email.style.border='1px solid rgb(255,51,51)'
    if (!theFocus) theFocus = 'email';
    }
  else
    {
    if (thisform.email.value.indexOf('@')<1 || thisform.email.value.indexOf('.')<4)
      {
      theAlert += '* Required Info: proper Email address.\n';
      thisform.email.style.border='1px solid rgb(255,51,51)'
      if (!theFocus) theFocus = 'email';
      }
    }

//REQUIRED:phone
  if (!thisform.phone.value)
    {
    theAlert += '* Required Info: Phone number.\n';
    thisform.phone.style.border='1px solid rgb(255,51,51)'
    if (!theFocus) theFocus = 'phone';
    }


//REQUIRED:status
  if (thisform.status)
    {
    var statusflag;
    for (i=0; i<thisform.status.length; i++)
      {
      statusflag = thisform.status[i].checked;
      if(statusflag) break;
      }
    if(!statusflag)
      {
      theAlert += '* Required Info: Investigator status.\n';
      if (!theFocus) theFocus = 'status[0]';
      }
    }

//REQUIRED:abstract
  if (thisform.abstract && !thisform.abstract.value)
    {
    theAlert += '* Required Info: You must include your abstract.\n';
    thisform.abstract.style.border='1px solid rgb(255,51,51)'
    if (!theFocus) theFocus = 'abstract';
    }

//ALERT!!
  if  (theAlert)
    {
    alert (theAlert);
    document.location = '#registrationform';
    eval('thisform.' + theFocus + '.focus()');
    return (false);
    }

//--travel
  if(thisform.travel)
    {
    for (var i=0; i<thisform.travel.length; i++)
      {
      thisform.travel.value = 'xx';

    //alert('thisform.travel[i].value = ' + thisform.travel[i].value);

      if (thisform.travel[i].checked == true)
        {
        thisform.travel.value = thisform.travel[i].value;
        break;
        }
      thisform.travel.value = escape('no reply');
      }
    }

//alert('thisform.travel.value = ' + thisform.travel.value);



  if(thisform.realname) thisform.Name.value = thisform.realname.value;
  if(thisform.email) thisform.Eaddress.value = thisform.email.value;
  if(thisform.subject_js) thisform.subject.value = (thisform.subject_js.value + ': ' + thisform.Name.value);
  if(thisform.print_config) thisform.print_config.value = '';

  //thisform.redirect.value = 'http://www.curc.ca/011-AGM/011-01.AGM-thx.htm';

  doSummary(thisform)

  //alert('running summary now');
  //return (false);

  return (true);
  }

//------ Query Passer ----------------------------------->>
//.....  SET REDIRECT VALUE in document!!!

//.....  array-ify form elements

function convertobject(type,name,value,checked,selection)
  {
  this.type = type;
  this.name = name;
  this.value = value;
  this.checked = checked;
  this.selection = selection;
  }

/* ************************************************************
************************************************************** */

function breakdown(thisform)
  {
  for (var i=0; i<thisform.length; i++)
    {
//alert('(' + i + ') ' + thisform[i].type)
    switch(thisform[i].type)
      {
      case 'text'     :digesttext(thisform[i],i); break
      case 'textarea' :digesttext(thisform[i],i); break
      case 'radio'    :digestradio(thisform[i],i); break
      case 'checkbox' :digestcheckbox(thisform[i],i); break
      case 'hidden'   :digesthidden(thisform[i],i); break
      case 'submit'   :digestsubmit(thisform[i],i); break
      case 'reset'    :digestreset(thisform[i],i); break
      case 'image'    :digestimage(thisform[i],i); break
      case 'password' :digestpassword(thisform[i],i); break
      case 'button'   :digestbutton(thisform[i],i); break
      case 'file'     :digestfile(thisform[i],i); break
      default: Qflag = false;
      }
    }

alert('breakdown(thisform) complete');

  dosummary(thisform);
  doQy(thisform)
  }

    function digesttext(thiselement,i)    { Qra[i] = new convertobject(thiselement.type,thiselement.name,(thiselement.value)?thiselement.value:'n/a','***','**') }
    function digestradio(thiselement,i)   { Qra[i] = (thiselement.checked)?  Qra[i] = new convertobject(thiselement.type,thiselement.name,thiselement.value,thiselement.checked,'*') : Qflag = false }
    function digestcheckbox(thiselement,i){ Qra[i] = (thiselement.checked)?  Qra[i] = new convertobject(thiselement.type,thiselement.name,thiselement.value,thiselement.checked,'*') : Qflag = false }
    function digesthidden(thiselement,i)  { Qra[i] = new convertobject(thiselement.type,thiselement.name,(thiselement.value)?thiselement.value:'n/a','***','**') }
    function digestsubmit(thiselement)    {  }
    function digestreset(thiselement)     {  }
    function digestimage(thiselement)     {  }
    function digestpassword(thiselement)  {  }
    function digestbutton(thiselement)    {  }
    function digestfile(thiselement)      {  }

    function doQy(thisform)
      {
      var Qy$ = "?";
      var Qflag = false;
      for (i=0; i<Qra.length; i++)
        {
        if (Qra[i] && thisform.sort.value.indexOf(Qra[i].name)>=0)
          {
          if (!Qflag) Qflag = true;
          else Qy$ += '+';
          var temp$ = escape(Qra[i].value);
          Qy$ += Qra[i].name + '=';
          Qy$ += (temp$.length > 200)? (temp$.substring(0,200) + escape(' . . .')) : temp$;
          }
        }
      thisform.debug.value += '\n\n' + unescape(Qy$);
      }

    function dosummary(thisform)
      {
      thisform.debug.value = "";
      for (var i=0; i<Qra.length; i++)
        {
        if (Qra[i])
          {
          thisform.debug.value += Qra[i].type
          thisform.debug.value += '  ';
          thisform.debug.value += Qra[i].name
          thisform.debug.value += '  ';
          thisform.debug.value += Qra[i].value
          thisform.debug.value += '  ';
          thisform.debug.value += Qra[i].checked
          thisform.debug.value += '  ';
          thisform.debug.value += Qra[i].selection
          thisform.debug.value += '\n';
          }
        }
      dosort(thisform);
      }

    function dosort(thisform)
      {
      var sortseq = thisform.sort.value.split(':');
      sortseq = sortseq[1].split(',');
      for (i=0; i<sortseq.length; i++)
        {
        thisform.debug.value += sortseq[i] + ' | ';
        }
      }


/* ************************************************************
************************************************************** */






function doSummary(thisform)
  {

//alert('running doSummary()');

  for (var i=0; i<thisform.length; i++)
    {

    if (thisform[i].type)
      {

      var processflag = 0;      // the check value
      if ((thisform[i].type == 'text' || thisform[i].type == 'textarea') && (thisform[i].value)) {processflag = 1;}
      if ((thisform[i].type == 'hidden') && (thisform[i].value)) {processflag = 1}
      if ((thisform[i].type == 'radio' || thisform[i].type == 'checkbox') && (thisform[i].checked)) {processflag = 2}
      if ((thisform[i].type.indexOf('select') > -1) && (thisform[i].selectedIndex > 0)) {processflag = 3}
      if (processflag == 3)
        {
        arrThisForm[i] = new convertobject(thisform[i].type,thisform[i].name,thisform[i].options[thisform[i].selectedIndex].value,'*',thisform[i].selectedIndex);
        }
      if (processflag == 2)
        {
        arrThisForm[i] = new convertobject(thisform[i].type,thisform[i].name,thisform[i].value,thisform[i].checked,'*');
        }
      if (processflag == 1)
        {
        arrThisForm[i] = new convertobject(thisform[i].type,thisform[i].name,thisform[i].value,'**','**');
        }
      if (processflag == 0)
        {
        arrThisForm[i] = new convertobject(thisform[i].type,thisform[i].name,'',thisform[i].checked,thisform[i].selection);   //'xx' is for DEBUG
        }
       }
    }
  doMakeQuery(arrThisForm,thisform);
  }

function doMakeQuery(arrThisForm,thisform)
  {

//alert('running doMakeQuery()');

  var strQuery = '';
  var thisflag = 0;
  for (var i=0; i<arrThisForm.length; i++)
    {
    if ((arrThisForm[i]) && (arrThisForm[i].value) && (thisform.sort.value.indexOf(arrThisForm[i].name)>0) )
      {
      strQuery += (thisflag==0)? '?' : '+';
      thisflag++;
      strQuery += arrThisForm[i].name + '=';
      var temp =  escape(arrThisForm[i].value);
      strQuery += (temp.length > 200)? (temp.substring(0,200) + escape(' . . .')):temp;
      }
    }
  thisform.redirect.value += strQuery;

  //if(thisform.debug) thisform.debug.value = unescape(strQuery);
  }

//------ Query Catcher ---------------------------------->>

function fnDecodeQ()
  {
  var strQuery = document.location.search.substring(1);
  var arrData  = strQuery.split('+');
  var strWrite = '<table align="center" border="0" cellspacing="2" cellpadding=6" width="95%">';

  for (i=0; i<arrData.length; i++)
    {
    var arrField = arrData[i].split('=');
    strWrite += '<tr><td class="formsQ" nowrap="nowrap">';
    strWrite += unescape(arrField[0]) + ':';
    strWrite += '<\/td>';
    strWrite += '<td class="formsA" style="font-weight:bold; font-style:italic; white-space:pre;">';
    strWrite += unescape(arrField[1]);
    strWrite += '<\/td>';
    strWrite += '<\/tr>';
    }

  strWrite += '<\/table>';
  document.write(strWrite);
  }

//------ Generic Date Filler ---------------------------->>

function fillDate(thisform)
  {
  var arrMonths = new Array(0,'January','February','March','April','May','June','July','August','September','October','November','December');
  var arrDays = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday')
  var today = new Date();
  var theDay = today.getDate();
  var theMonth = today.getMonth()+1;
  var theYear = today.getYear();
  if (theYear < 2000) theYear += 1900;
  if (theYear < 2002 || theYear > 2005) theYear = '20..';
  thisform.Date.value = theDay+ '-' +arrMonths[theMonth]+ '-' + theYear;
  }

/* !!!!!  end  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */