/* Global Variables */
var isIE,isNN,isOP ;
isIE = false;
isNN = false;
isOP = false;

/* W3C Images */
var W3C_XHTML_A = new Image ;
var W3C_XHTML_B = new Image ;
var W3C_CSS_A = new Image ;
var W3C_CSS_B = new Image ;
W3C_XHTML_A.src = "../IMAGES/w3c_XHTML1.0_A.gif" ;
W3C_XHTML_B.src = "../IMAGES/w3c_XHTML1.0_B.gif" ;
W3C_CSS_A.src = "../IMAGES/w3c_CSS_A.gif" ;
W3C_CSS_B.src = "../IMAGES/w3c_CSS_B.gif" ;
function chgW3Cimg(imgName,newImg) {
 document.getElementById(imgName).src = eval(newImg + '.src') ;
}

/* On-Page-Open Processing */
if(navigator.userAgent.indexOf('MSIE') != -1){isIE = true;}
if(navigator.userAgent.indexOf('Gecko') != -1){isNN = true;}
if(navigator.userAgent.indexOf('Opera') != -1){isOP = true;}
window.onresize = PageLoader;


function CalculateTotal(TheForm){
 //>> This function is used in registration.jsp/registration.xsl/special_registration.xsl
 var Total = 0 ; 
 var TotalFieldDisplay = document.getElementById("TotalField") ;
 var AmountToSubmit = document.getElementsByName("TotalAmount")[0] ;

 switch (TheForm.name) { //<< FORM SPECIFIC PROCESSING
  case "RegistrationForm":
   var GroupsArray = document.getElementsByName("Group") ;
   var NumberOfWarmups = document.getElementsByName("Warmups")[0] ;
   //var AmountToSubmit = document.getElementsByName("TotalAmount")[0] ;
   for(var x = 0; x < GroupsArray.length; x++){
    if(GroupsArray[x].checked == true){
     Total += eval(GroupsArray[x].value) ;
    }
   } 
   Total += eval(NumberOfWarmups.value*PricePerWarmup) ;
   break;
  case "SpecialRegistrationForm":
   var MainEventPaymentField = document.getElementsByName("MainEventPayment")[0] ;
   var FITASCPaymentField = document.getElementsByName("FITASCPayment")[0] ;
   var PrelimEventPaymentField = document.getElementsByName("PrelimEventPayment")[0] ;
   var FiveStandPaymentField = document.getElementsByName("FiveStandPayment")[0] ;
   var GolfCartRentalField = document.getElementsByName("GolfCartRental")[0] ;
   var BanquetTicketsField = document.getElementsByName("BanquetTickets")[0] ;
   var EventRegCheckboxes = new Array();
   var SubGaugeEventRegCheckboxes = new Array();
   EventRegCheckboxes[0] = document.getElementsByName("RegForMainEvent")[0] ;
   EventRegCheckboxes[1] = document.getElementsByName("RegForFITASC")[0] ;
   EventRegCheckboxes[2] = document.getElementsByName("RegForPrelimEvent")[0] ;
   EventRegCheckboxes[3] = document.getElementsByName("RegForFiveStand")[0] ;
   EventRegCheckboxes[4] = document.getElementsByName("RegForSubGauge")[0] ;
   SubGaugeEventRegCheckboxes[0] = document.getElementsByName("SubGauge410ga")[0] ;
   SubGaugeEventRegCheckboxes[1] = document.getElementsByName("SubGauge28ga")[0] ;
   SubGaugeEventRegCheckboxes[2] = document.getElementsByName("SubGauge20ga")[0] ;
   SubGaugeEventRegCheckboxes[3] = document.getElementsByName("SubGaugePump")[0] ;
   SubGaugeEventRegCheckboxes[4] = document.getElementsByName("SubGaugeSXS")[0] ;

   for(var x = 0; x < EventRegCheckboxes.length; x++){
    if(EventRegCheckboxes[x].checked == true){
     if(EventRegCheckboxes[x].name == "RegForMainEvent"){Total += eval(MainEventPaymentField.value) ;}
     if(EventRegCheckboxes[x].name == "RegForFITASC"){Total += eval(FITASCPaymentField.value) ;}
     if(EventRegCheckboxes[x].name == "RegForPrelimEvent"){Total += eval(PrelimEventPaymentField.value) ;}
     if(EventRegCheckboxes[x].name == "RegForFiveStand"){Total += eval(FiveStandPaymentField.value) ;}
     if(EventRegCheckboxes[x].name == "RegForSubGauge"){
      for(var y = 0; y < SubGaugeEventRegCheckboxes.length; y++){
       if(SubGaugeEventRegCheckboxes[y].checked == true){Total += PricePerSubGaugeEvent ;} 
      }
     }
    }
   } 
   Total += eval(GolfCartRentalField.value) ;
   Total += eval(BanquetTicketsField.value) ;
   break;
  case "SpecialRegistrationForm_BSF3DayTacticalEvent":
   Total = 75 ;
   var MealsField = document.getElementsByName("Meals")[0] ;
   Total += eval(MealsField.value) ;
   break;
  default:
 }

 Total = Total.toFixed(2) ; //Converts to a string and displays 2 decimal places 
 AmountToSubmit.value = Total ;
 TotalFieldDisplay.innerHTML = Total ;
}


function ChangeGolfCartStatus(AmountToPay){
 //>> This function is used in registration.jsp/special_registration.xsl
 var GolfCartStat = document.getElementById("GolfCartStatus");
 switch (AmountToPay){
  case "180.00":
   GolfCartStat.value = "Reserved for Fri, Sat & Sun. Paid $180."
   break;
  case "120.00":
   GolfCartStat.value = "Reserved for Sat & Sun. Paid $120."
   break;
  case "50.00":
   GolfCartStat.value = "Reserved for Fri, Sat & Sun. Paid $50 deposit only."
   break;
  case "50":
   GolfCartStat.value = "Reserved for Sat & Sun. Paid $50 deposit only."
   break;
  case "0.00":
   GolfCartStat.value = "No cart reserved."
   break;
 }
}


function DisableInputField(Field){
 //>> This function is used in the DisableNSCAFields() function
 Field.disabled = true ;
}


function DisableNSCAFields(ItemNumber){
 //>> This function is used in registration.jsp/registration.xsl
 DisableInputField(document.getElementsByName("NSCANumber")[0]) ;
 DisableInputField(document.getElementsByName("NSCAClass")[0]) ;
 DisableInputField(document.getElementsByName("Concurrent")[0]) ;
}


function EnableDisableEventFields(EventName){
 //>> This function is used in the registration.jsp/special_registration.xsl
 var EventFields = new Array();
 switch (EventName){
  case "MainEvent":
   EventFields[0] = document.getElementsByName("MainEventPayment")[0]
   EventFields[1] = document.getElementsByName("MainEventPreferredRotation")[0]
   EventFields[2] = document.getElementsByName("MainEventPS1")[0]
   EventFields[3] = document.getElementsByName("MainEventPS2")[0]
   EventFields[4] = document.getElementsByName("MainEventPS3")[0]
   EventFields[5] = document.getElementsByName("MainEventPS4")[0]
   EventFields[6] = document.getElementsByName("MainEventPS5")[0]
   break;
  case "FITASC":
   EventFields[0] = document.getElementsByName("FITASCPayment")[0]
   EventFields[1] = document.getElementsByName("FITASCPreferredRotation")[0]
   EventFields[2] = document.getElementsByName("FITASCPS1")[0]
   EventFields[3] = document.getElementsByName("FITASCPS2")[0]
   EventFields[4] = document.getElementsByName("FITASCPS3")[0]
   EventFields[5] = document.getElementsByName("FITASCPS4")[0]
   EventFields[6] = document.getElementsByName("FITASCPS5")[0]
   break;
  case "PrelimEvent":
   EventFields[0] = document.getElementsByName("PrelimEventPayment")[0]
   EventFields[1] = document.getElementsByName("PrelimEventPreferredRotation")[0]
   EventFields[2] = document.getElementsByName("PrelimEventPS1")[0]
   EventFields[3] = document.getElementsByName("PrelimEventPS2")[0]
   EventFields[4] = document.getElementsByName("PrelimEventPS3")[0]
   EventFields[5] = document.getElementsByName("PrelimEventPS4")[0]
   EventFields[6] = document.getElementsByName("PrelimEventPS5")[0]
   break;
  case "FiveStand":
   EventFields[0] = document.getElementsByName("FiveStandPayment")[0]
   EventFields[1] = document.getElementsByName("FiveStandPreferredRotation")[0]
   EventFields[2] = document.getElementsByName("FiveStandPS1")[0]
   EventFields[3] = document.getElementsByName("FiveStandPS2")[0]
   EventFields[4] = document.getElementsByName("FiveStandPS3")[0]
   EventFields[5] = document.getElementsByName("FiveStandPS4")[0]
   EventFields[6] = document.getElementsByName("FiveStandPS5")[0]
   break;
  case "SubGauge":
   EventFields[0] = document.getElementsByName("SubGauge410ga")[0]
   EventFields[1] = document.getElementsByName("SubGauge28ga")[0]
   EventFields[2] = document.getElementsByName("SubGauge20ga")[0]
   EventFields[3] = document.getElementsByName("SubGaugePump")[0]
   EventFields[4] = document.getElementsByName("SubGaugeSXS")[0]
   break;
  case "ReserveCampsite":
   EventFields[0] = document.getElementsByName("CamperLength")[0]
   break;
  default:
 }
 for(var x = 0; x < EventFields.length; x++){
  if(EventFields[x].disabled == false){ EventFields[x].disabled = true ; }
  else{ EventFields[x].disabled = false ; }
 }
}


function EnableInputField(Field){
 //>> This function is used in the EnableNSCAFields() function
 Field.disabled = false ;
}


function EnableNSCAFields(ItemNumber){
 //>> This function is used in registration.jsp/registration.xsl
 EnableInputField(document.getElementsByName("NSCANumber")[0]) ;
 EnableInputField(document.getElementsByName("NSCAClass")[0]) ;
 EnableInputField(document.getElementsByName("Concurrent")[0]) ;
}


function EnableOnlineRegistration(EventTitle){
 //>> This function is used in registration.jsp/special_registration.xsl
 if(EventTitle == "NSCA Zone 4 Championship"){
  EnableInputField(document.getElementsByName("FirstName")[0]) ;
  EnableInputField(document.getElementsByName("LastName")[0]) ;
  EnableInputField(document.getElementsByName("PhoneAreaCode")[0]) ;
  EnableInputField(document.getElementsByName("PhoneExchange")[0]) ;
  EnableInputField(document.getElementsByName("PhoneNumber")[0]) ;
  EnableInputField(document.getElementsByName("NSCANumber")[0]) ;
  EnableInputField(document.getElementsByName("NSCAClass")[0]) ;
  EnableInputField(document.getElementsByName("Concurrent")[0]) ;
  EnableInputField(document.getElementsByName("StreetAddress")[0]) ;
  EnableInputField(document.getElementsByName("City")[0]) ;
  EnableInputField(document.getElementsByName("State")[0]) ;
  EnableInputField(document.getElementsByName("ZipCode")[0]) ;
  EnableInputField(document.getElementsByName("Email")[0]) ;
  EnableInputField(document.getElementsByName("RegForMainEvent")[0]) ;
  EnableInputField(document.getElementsByName("RegForFITASC")[0]) ;
  EnableInputField(document.getElementsByName("RegForPrelimEvent")[0]) ;
  EnableInputField(document.getElementsByName("RegForFiveStand")[0]) ;
  EnableInputField(document.getElementsByName("RegForSubGauge")[0]) ;
  EnableInputField(document.getElementsByName("GolfCartRental")[0]) ;
  EnableInputField(document.getElementsByName("BanquetTickets")[0]) ;
  EnableInputField(document.getElementsByName("ReserveCampsite")[0]) ;
 }
}


function isElementDisabled(Element){
 //>> This function is used in the ValidateDataEntry() function
 return Element.disabled ;
}


function isElementNumeric(ElementName){
 //>> This function is used in the ValidateDataEntry() function
 var Output = false ;
 var NumericElements = new Array() ;
 
 // Numeric element names are entered here...
 NumericElements[0] = "ZipCode" ;
 NumericElements[1] = "PhoneAreaCode" ;
 NumericElements[2] = "PhoneExchange" ;
 NumericElements[3] = "PhoneNumber" ;

 for(var x in NumericElements){
  if(ElementName == NumericElements[x]){
   Output = true ;
   break;
  }
 }
 return Output ;
}


function isElementOptional(ElementName){
 //>> This function is used in the ValidateDataEntry() function
 var Output = false ;
 var OptionalElements = new Array() ;
 
 // Optional element names are entered here...
 OptionalElements[0] = "MainEventPS1" ;
 OptionalElements[1] = "MainEventPS2" ;
 OptionalElements[2] = "MainEventPS3" ;
 OptionalElements[3] = "MainEventPS4" ;
 OptionalElements[4] = "MainEventPS5" ;
 OptionalElements[5] = "FITASCPS1" ;
 OptionalElements[6] = "FITASCPS2" ;
 OptionalElements[7] = "FITASCPS3" ;
 OptionalElements[8] = "FITASCPS4" ;
 OptionalElements[9] = "FITASCPS5" ;
 OptionalElements[10] = "PrelimEventPS1" ;
 OptionalElements[11] = "PrelimEventPS2" ;
 OptionalElements[12] = "PrelimEventPS3" ;
 OptionalElements[13] = "PrelimEventPS4" ;
 OptionalElements[14] = "PrelimEventPS5" ;
 OptionalElements[15] = "FiveStandPS1" ;
 OptionalElements[16] = "FiveStandPS2" ;
 OptionalElements[17] = "FiveStandPS3" ;
 OptionalElements[18] = "FiveStandPS4" ;
 OptionalElements[19] = "FiveStandPS5" ;
 OptionalElements[20] = "SubGauge410ga" ;
 OptionalElements[21] = "SubGauge28ga" ;
 OptionalElements[22] = "SubGauge20ga" ;
 OptionalElements[23] = "SubGaugePump" ;
 OptionalElements[24] = "SubGaugeSXS" ;
 OptionalElements[25] = "ReserveCampsite" ;
 OptionalElements[26] = "CamperLength" ;

 for(var x in OptionalElements){
  if(ElementName == OptionalElements[x]){
   Output = true ;
   break;
  }
 }
 return Output ;
}


function isNullElement(ElementName){
 //>> This function is used in the ValidateDataEntry() function
 if (ElementName == '' || ElementName == null || ElementName == 'undefined' || ElementName == 'item' || ElementName == 'namedItem' ){
  return true;
 }
 else{
  return false;
 }
}


function KeepPageHeight(){
 //>> This function is used in the PageLoader() function
 var objBodyDiv = document.getElementById('BodyDiv') ;
 var objBody = document.body ;
 if(isNN){
  if(screen.height > (objBodyDiv.offsetHeight)){  
   objBody.style.height = screen.height + "px" ;
   objBodyDiv.style.height = "100%" ;
  }
 }
}


function KeepPageWidth(){
 //>> This function is used in the PageLoader() function
 var objBody = document.body ;
 var objPageDiv = document.getElementById('PageDiv') ;
 if (isNN){
  if (objBody.offsetWidth > objPageDiv.offsetWidth){  
   objPageDiv.style.marginLeft = ((objBody.offsetWidth / 2) - (objPageDiv.offsetWidth / 2)) + "px" ;
  }
  else{
   objPageDiv.style.marginLeft = '' ;
  }
 }
}


function OpenNewWindow(Location,WindowName,Hsize,Vsize){
 //>> This function is used in the Events and Home pages
 open(Location, WindowName,'resizable=no, toolbar=no, location=no, directories=no, status=no, menubar=yes, scrollbars=yes, width='+Hsize+', height='+Vsize)
}


function PageLoader(){
 //>> This function is used on EVERY PAGE via Site.xsl
 KeepPageWidth();
 KeepPageHeight();
 PickBackgroundImg();
}


function PickBackgroundImg(){
 //>> This function is used in the PageLoader() function
 var Body = document.body ;
 var BodyDiv = document.getElementById('BodyDiv');
 if(Body.offsetWidth < 922){
  Body.style.backgroundImage = "none" ;
  BodyDiv.style.backgroundImage = "none" ;
 }
 else{
  Body.style.backgroundImage = "url(http://www.bsfshootingsports.com/IMAGES/PageBackground_right.png)" ;
  BodyDiv.style.backgroundImage = "url(http://www.bsfshootingsports.com/IMAGES/PageBackground_left.png)" ;
 }
}


function UpdateTextFieldValue(Field,NewValue){
 //>> This function is used on EVERY PAGE via Site.xsl
 Field.value = NewValue ;
}


function ValidateDataEntry(TheForm){
 //>> This function is used in registration.jsp/registration.xsl/special_registration.xsl
 var SubmitButton = document.getElementById("SubmitButton");
 //SubmitButton.disabled = true;
 with (TheForm){
  for (var x = 0; x < elements.length; x++){
   if (isNullElement(elements[x].name) == false && isElementOptional(elements[x].name) == false && isElementDisabled(elements[x]) == false){//<< Verify that required fields are filled in
    var AlertMsg = 'ALL FIELDS NOT LABELLED (optional) MUST BE FILLED IN!\n\n ERROR: No data in the "' + elements[x].name + '" field!' ;
    if (ValidateField(elements[x],AlertMsg) == false){//<<Make sure text fields aren't blank
     elements[x].focus() ;
     SubmitButton.disabled = false;
     return false;
    }
    if (elements[x].type == "radio"){//<<Make sure radio buttons aren't blank
     if (ValidateRadioButtonGroup(elements[x].name,AlertMsg) == false){
      elements[x].focus() ;
      SubmitButton.disabled = false;
      return false;
     }
    }
    if (isElementNumeric(elements[x].name) == true){//<<Make sure numeric fields contain only numbers
     AlertMsg = 'NUMERIC FIELDS MUST ONLY CONTAIN NUMBERS!\n\n ERROR: Non-numeric data in the "' + elements[x].name + '" field!' ;
     if (ValidateNumeric(elements[x],AlertMsg) == false){
      elements[x].focus() ;
      SubmitButton.disabled = false;
      return false;
     }
    }
   }
  }
  if (ValidateEmailAddress(Email,"You must enter a valid email address!") == false){//<<Verify email address appears valid
   Email.focus();
   SubmitButton.disabled = false;
   return false;
  }
  if (TheForm.name == "SpecialRegistrationForm"){//<<FORM SPECIFIC PROCESSING: Make sure at least one event has been selected
   if (VerifyEventSelection("Zone4","YOU MUST REGISTER FOR AT LEAST ONE EVENT!\n\n ERROR: No events are selected to register for!") == false){
    RegForMainEvent.focus();
    SubmitButton.disabled = false;
    return false;
   }
   if (RegForSubGauge.checked == true && VerifyEventSelection("SubGauge",'SUBGAUGE REGISTRATION REQUIRES THAT YOU SELECT AT LEAST ONE SUBGAUGE EVENT!\n\n ERROR: No SubGauge events are selected to register for! If you do not wish to register for a SubGauge event then please uncheck the "Register for this event" checkbox in the SubGauge section.') == false){
    SubGauge410ga.focus();
    SubmitButton.disabled = false;
    return false;
   }
  }
 }
}


function ValidateEmailAddress(Field,AlertMsg){
 //>> This function is used in the ValidateDataEntry() function
 with (Field){
  AtPosition = value.indexOf("@") ;
  DotPosition = value.lastIndexOf(".") ;
  if (AtPosition < 1 || DotPosition - AtPosition < 2){
   window.alert(AlertMsg);
   return false;
  }
  else {
   return true;
  }
 }
}


function ValidateField(Field,AlertMsg){
 //>> This function is used in the ValidateDataEntry() function
 with (Field){
  if (value == null || value == ""){
   window.alert(AlertMsg);
   return false;
  }
  else {
   return true;
  }
 }
}


function ValidateNumeric(Field,AlertMsg){
 //>> This function is used in the ValidateDataEntry() function
 var ValidNumericChars = "0123456789" ;
 var Output,Char ;
 with (Field){
  for (x=0 ; x < value.length ; x++){
   Char = value.charAt(x) ;
   if (ValidNumericChars.indexOf(Char) == -1){
    window.alert(AlertMsg);
    Output = false;
    break;
   }
   else{
    Output = true;
   }
  }
 }
 return Output;
}


function ValidateRadioButtonGroup(GroupName,AlertMsg){
 //>> This function is used in the ValidateDataEntry() function
 var Output = false ;
 var GroupElements = document.getElementsByName(GroupName) ;
 for (var x = 0; x < GroupElements.length; x++){
  if (GroupElements[x].checked == true){
   Output = true ;
   break ;
  }
 }
 if (Output == false){
  window.alert(AlertMsg);
 }
 return Output ;
}


function VerifyEventSelection(EventType,AlertMsg){
 //>> This function is used in the ValidateDataEntry() function
 var Output = false ;
 var RegCheckboxes = new Array() ;
 
 // Assign event register checkbox objects...
 switch (EventType){
  case "Zone4":
   RegCheckboxes[0] = document.getElementsByName("RegForMainEvent")[0] ;
   RegCheckboxes[1] = document.getElementsByName("RegForFITASC")[0] ;
   RegCheckboxes[2] = document.getElementsByName("RegForPrelimEvent")[0] ;
   RegCheckboxes[3] = document.getElementsByName("RegForFiveStand")[0] ;
   RegCheckboxes[4] = document.getElementsByName("RegForSubGauge")[0] ;
   break;
  case "SubGauge":
   RegCheckboxes[0] = document.getElementsByName("SubGauge410ga")[0] ;
   RegCheckboxes[1] = document.getElementsByName("SubGauge28ga")[0] ;
   RegCheckboxes[2] = document.getElementsByName("SubGauge20ga")[0] ;
   RegCheckboxes[3] = document.getElementsByName("SubGaugePump")[0] ;
   RegCheckboxes[4] = document.getElementsByName("SubGaugeSXS")[0] ;
   break;
  default:
 }
 for(var x in RegCheckboxes){ //<<Make sure at least one event is checked
  if(RegCheckboxes[x].checked == true){
   Output = true ;
   break;
  }
 }
 if (Output == false){
  window.alert(AlertMsg);
 }
 return Output ;
}


// OLD Processing...
function VerifyDataEntry(ButtonID){
 var Button = document.getElementById(ButtonID) ;
 var TA = document.getElementById('TestArea') ;
 TA.innerHTML = "" ;
 var x = 0 ;
 var y = 0 ;
 do{
  do{
   if(document.forms[x].elements[y].value == ""){
    TA.innerHTML = "DATA FIELD BLANK!!!!! <br /><br /> Information is required in all fields above." ;
    TA.style.visibility = "visible" ;
    Button.disabled = "true" ;
   }
  } while (++y < document.forms[x].elements.length)
 } while (++x < document.forms.length)	 
}
