//*********************************************************************************************
//*** ENTER Trapping **************************************************************************
function kH(e) {
var pK = e ? e.which : window.event.keyCode;

if(pK == 13)
{
	var hf;
	if ( document.activeElement ) 
	{
		hf = document.activeElement;
	}
	else
	{
		hf = document.focusNode;
	}


	for(var i=0;i<document.reg.length;i++)
 	{
		var e = document.reg.elements[i];

		if(e.name == hf.name)
  		{
			var test = 0;
			var target = i+1;
			
			while(test==0 && target < document.reg.length)
			{
				try
				{
					document.reg.elements[target].focus();

				
					if(!document.activeElement.name)
					{
					 target = target + 1;
					 test = 0;
					}
					else
					{
					 test = 1;
					}
				}
				catch ( e ) 
				{
					target = target + 1;
					test = 0;
				}
			}

		}
	}
}

	return pK != 13;
}

document.onkeypress = kH;


//*********************************************************************************************
function ClearForm()
{

		for(var i=0;i<document.reg.length;i++)
 		{
			var e = document.reg.elements[i];
			if(e.value == 'X')
			{
			 	e.value = '';
				e.style.backgroundColor = Highlight;
			}
		}

}

//*********************************************************************************************
function bigger()
{
 document.zzz.fsize.value = (document.zzz.fsize.value*1) + 10;
 var fsize = (document.zzz.fsize.value*1) + 10; 
 document.body.style.fontSize = fsize+'%';
}


//*********************************************************************************************
function smaller()
{
 if(document.zzz.fsize.value > 20)
 {
  document.zzz.fsize.value = (document.zzz.fsize.value*1) - 10;
  var fsize = (document.zzz.fsize.value*1) + 10; 
  document.body.style.fontSize = fsize+'%';
 }
}


//*********************************************************************************************
function early(month,day)
{
 now = new Date();

 if( (now.getMonth()+1 > month) || (now.getMonth()+1 == month && now.getDate > day))
 {
  return false
 }

 return true
}


//*********************************************************************************************
function hi(x)
{
 document.getElementsByName(x)[0].style.backgroundColor = Highlight;

 var fsize = 100+((document.zzz.fsize.value-100)*.1); 
 document.getElementsByName(x)[0].style.fontSize = '110%';
 document.getElementsByName(x)[0].style.fontWeight = 'bold';
}


//*********************************************************************************************
function bye(x)
{
 document.getElementsByName(x)[0].style.backgroundColor = 'white';
 document.getElementsByName(x)[0].style.fontSize = '';
 document.getElementsByName(x)[0].style.fontWeight = '';
}

//*********************************************************************************************
function loadform()
{
 var secure = document.URL;
 secure = secure.split(':');

 if(parent.frames.length != 0 || secure[0] != "https")
 {
  top.location="https:" + secure[1];
 }

 for(var i=0;i<document.reg.length;i++)
 {
  if(document.reg.elements[i].value == "X")
  {
   document.getElementsByName(document.reg.elements[i].name)[0].style.backgroundColor = "#000000";
  }
 }
}


//********************************************************************************************
function checkbox(field, skip, options)
{

 if(options)
 {
  for(var x=0;x<options;x++)
  {
   if(x != skip)
   {
    var target = field + x;
    document.getElementsByName(target)[0].value = '';
    document.getElementsByName(target)[0].style.backgroundColor = Highlight;
   }
  }
 }

 var target = field + skip;

 if(document.getElementsByName(target)[0].value == "X")
 {
  document.getElementsByName(target)[0].value = '';
  document.getElementsByName(target)[0].style.backgroundColor = Highlight;
 }
 else
 {
  document.getElementsByName(target)[0].value = 'X';
  document.getElementsByName(target)[0].style.backgroundColor = '#000000';
 }
}


//********************************************************************************************
function textval(TheText)
{

 if(TheText.charAt(0) == " ")
 {
  TheText = TheText.slice(1);
  tvAgain = 1;
 }

 tvL = TheText.length;
 var tvAgain =0;

 for(var tvX=0;tvX<tvL;tvX++)
 {
  if(TheText.charAt(tvX) == ' ' && TheText.charAt(tvX-1) == ' ')
  {
   TheText = TheText.slice(0,tvX) + TheText.slice(tvX+1,tvL);
   tvAgain = 1;
  }
 }
 if(tvAgain > 0){TheText = textval(TheText);}
 return TheText
}


//********************************************************************************************
function emailval(TheEmail)
{

 if(TheEmail != "")
 {
  var em1 = TheEmail;
  var GotAt = 0;
  var GotDot = 0;

  emL = em1.length;

  for(var i=0;i<emL;i++)
  {
   if(em1.charAt(i) == '@')
   {
    GotAt = GotAt + 1;
   }
   if(em1.charAt(i) == '.')
   {
    GotDot = i;
   }
  }

  if(GotAt > 0 && GotAt < 2 && GotDot > 2)
  {
   var emRE = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/

   if(!emRE.test(TheEmail))
   {
    alert("It appears that your Email address is invalid.  Please enter a valid Email address.");
    return "";
   }
  }
  else
  {
   alert("It appears that your Email address is invalid.  Please enter a valid Email address.");
   return "";
  }

  return TheEmail;

 }
}


//********************************************************************************************
function payment()
{
 document.reg.PaymentType.value = "";
 for(var i=0; i<5; i++)
 {
  if(document.getElementsByName("Pay"+i)[0].value == "X")
  {
   document.reg.PaymentType.value = PayT[i];
  }
 }
}

//********************************************************************************************
function numval(TheNumber)
{

 var nvX=0;
 var nvL= TheNumber.length;
 
 for(nvX=0;nvX<nvL;nvX++)
 {
  if(TheNumber.charAt(nvX) == " " || isNaN(TheNumber.charAt(nvX)))
  {
   TheNumber = TheNumber.slice(0,nvX) + TheNumber.slice(nvX+1,nvL);
   TheNumber = numval(TheNumber);
  }
}
return TheNumber;
}


//********************************************************************************************
function vcodeval(VCode)
{
 if(VCode != "" && document.reg.PaymentType.value != "" && document.reg.PaymentType.value != "Check" && document.reg.PaymentType.value != "PO" && document.reg.PaymentType.value != "MoneyOrder")
 {
  VCode = numval(VCode);


  if(document.reg.PaymentType.value == "Amex" && VCode.length != 4)
  {
   alert("Your Verification Code is incorrect.\n\n  Your Verification Number is a 4-digit, unembossed (flat) number printed above the account number.");
   return "";
  }

  else if(document.reg.PaymentType.value != "Amex" && VCode.length != 3)
  {
   alert("Your CVV2 Verification Code is incorrect.\n\n  The 3-digit code is located on the back of your card, inside the signature area. Typically the signature panel will have a series of numbers, but only the last three digits make up the CVV2 Verification Code");
   return "";
  }
 }
 return VCode;
}


//********************************************************************************************
function cardval(test)
{

 if(test != "" && test.slice(0,14) != "Card on Record")
 {
  test = numval(test);

  if(document.reg.PaymentType.value != "" && document.reg.PaymentType.value != "Check")
  {
   var CVccn = "x" + test;
   var CVL = CVccn.length - 1;
   var CVsum = 0;
   var CVchecksum = "";
   var CVLok = "";
   var CVdigits = "";


   // Verify Checksum **************************************
   for(var CVx = CVL-1; CVx > 0; CVx=CVx-2)
   {
    var CVdub = CVccn.charAt(CVx) * 1;
    CVdub = CVdub * 2;

    if(CVdub > 9)
    {
     CVdub = 1 + (CVdub-10);
    }

    CVsum = CVsum + CVdub;
   }

   for(var CVx = CVL; CVx > 0; CVx=CVx-2)
   {
    CVsum = CVsum + (CVccn.charAt(CVx)*1);
   }

   if(CVsum%10 ==0)
   {
    CVchecksum = "OK";
   }


   // Verify Length ****************************************
   if(document.reg.PaymentType.value == "Amex")
   {
    if(CVL == 15 || CVL == 16)
    {
     CVLok = "OK";
    }
   }
   else if(document.reg.PaymentType.value == "VISA")
   {
    if(CVL == 13 || CVL == 16)
    {
     CVLok = "OK";
    }
   }
   else if(document.reg.PaymentType.value == "MasterCard" || document.reg.PaymentType.value == "Discover")
   {
    if(CVL == 16)
    {
     CVLok = "OK";
    }
   }

   // Verify Start Digits **********************************
   if(document.reg.PaymentType.value == "Amex")
   {
    if(CVccn.charAt(1) == 3 && (CVccn.charAt(2) == 4 || CVccn.charAt(2) == 7) )
    {
     CVdigits = "OK";
    }
   }
   else if(document.reg.PaymentType.value == "VISA")
   {
    if(CVccn.charAt(1) == 4)
    {
     CVdigits = "OK";
    }
   }
   else if(document.reg.PaymentType.value == "MasterCard")
   {
    if(CVccn.charAt(1) == 5 && (CVccn.charAt(2) >= 1 && CVccn.charAt(2) <= 5) )
    {
     CVdigits = "OK";
    }
   }
   else if(document.reg.PaymentType.value == "Discover")
   {
    if(CVccn.charAt(1) == 6 && CVccn.charAt(2) == 0 && CVccn.charAt(3) == 1  && CVccn.charAt(3) == 1)
    {
     CVdigits = "OK";
    }
   }
  
   if(CVchecksum != "OK" || CVLok != "OK" || CVdigits != "OK")
   {
    alert("It appears that you have entered an invalid Card Number.  Please re-enter your Card Number.");
    return "";
   }
  }
 }
 return test;
}


//****************************************************************************************************
function isblanks(s) 
{
 for(var i=0;i<s.length;i++)
 {
  var c=s.charAt(i);
  if ((c != ' ') && (c != '\n') && (c != '\t')) 
   return false;
 }
  return true;
}


//****************************************************************************************************
function verify()
{
 payment();
 CheckRequired();

 if(document.reg.Month.value && document.reg.Year.value)
 {
  document.reg.ExpirationDate.value = document.reg.Month.value + "/" + document.reg.Year.value;
  if(document.reg.ExpirationDate.value == "/")
  {
   document.reg.ExpirationDate.value = "";
  }
 }


 var empty= "";

 for(var i=0;i<document.reg.length;i++)
 {
  var e = document.reg.elements[i];  
  if(((e.type == "text") || (e.type == "textarea") || (e.type == "select-one") || (e.type == "hidden")) && (!e.optional)) 
  {
   if( (e.value==null) || (e.value=="") || isblanks(e.value) )
   {
    var temp = e.name;
    var needed = temp[0];
    for(var j=1;j<temp.length; j++)
    {
     if(temp[j] == temp[j].toUpperCase() && temp[j-1] != temp[j-1].toUpperCase())
     {
      needed = needed + " ";
     }

     if(temp[j] == temp[j].toUpperCase() && !isNaN(temp[j-1]))
     {
      needed = needed + ": ";
     }


     if(!isNaN(temp[j]) && isNaN(temp[j-1]))
     {
      needed = needed + " #";
     }
     needed = needed + temp[j];
    }

    empty += "\n     "+needed;
    continue;
   }
  }
 }

 if(document.reg.RegCode.value=="")
 {
  empty += "\n     Registration Type";
 }


 if (!empty)
 {
  return true;
 }
 else
 {
  msg  = "________________________________________________________\n\n"; 
  msg += "The form was not submitted because  of the following error(s).\n"; 
  msg += "Please correct these error(s) and re-submit.\n"; 
  msg += "________________________________________________________\n\n";
  msg += "- The following required field(s) are empty:" + empty + "\n\n";

  alert(msg);
  return false;
 }
}