// JavaScript Document
function remove_spaces(field)
{
while(''+field.value.charAt(0)==' ')
     field.value=field.value.substring(1,field.value.length);
}


var error = "";

// get values from URL

function getValue()
{
  // First, we load the URL into a variable
  var url = window.location.href;

  // Next, split the url by the ?
  var qparts = url.split("?");

  // Check that there is a querystring, return "" if not
  if (qparts.length == 0)
  {
    return "";
  }

  // Then find the querystring, everything after the ?
  var query = qparts[1];

  // Split the query string into variables (separates by &s)
  var vars = query.split("&");

  // Initialize the value with "" as default
  var cValue = "";

  // Iterate through vars, checking each one for varname
  for (i=0;i<vars.length;i++)
  {
    // Split the variable by =, which splits name and value
    var parts = vars[i].split("=");

    // Check if the correct variable
    if (parts[0] == "c")
    {
      // Load value into variable
      cValue = parts[1];
   // alert ("V "+cValue);
      // End the loop
      break;
    }
  }
  
  // Convert escape code
  value = unescape(cValue);

  // Convert "+"s to " "s
  value.replace(/\+/g," ");

  // Return the value
  //alert("send " + value)
  return value;
}


function validate_form() 
{
error = "";

//if (document.form1.fSession.selectedIndex == 0) {
  //  error += "Please select the Session.\n";
   // select_error('fSession');
  // }

if (document.form1.fFName.value == "") {
    error += "Please enter the Students First Name.\n";
    textbox_error('fFName');
   }

if (document.form1.fLName.value == "") {
    error += "Please enter the Students Last Name.\n";
    textbox_error('fLName');
   }

if (document.form1.fAge.value == "") {
    error += "Please enter the Students Age.\n";
    textbox_error('fAge');
   }
else
if (isNaN(document.form1.fAge.value)) { 
    error += "Please enter a numeric Age.\n";
    textbox_error('fAge');
   }
else

//var lowAge = "5";
//var highAge = "12";
var value ="";

if (parseInt(document.form1.fAge.value) < lowAge || parseInt(document.form1.fAge.value) > highAge) { 
    error += "Age must be between "+ lowAge +" and " + highAge + ".\n";
    textbox_error('fAge');
   };
// Add date logic here for 
if (document.form1.fBMonth.selectedIndex == 0) {
    error += "Please select Birth Month.\n";
    select_error('fBMonth');
   }

if (document.form1.fBDay.selectedIndex == 0) {
    error += "Please select Birth Day.\n";
    select_error('fBDay');
   }

if (document.form1.fBYear.selectedIndex == 0) {
    error += "Please select Birth Year.\n";
    select_error('fBYear');
   }

if (document.form1.fBMonth.selectedIndex != 0 && 
    document.form1.fBDay.selectedIndex != 0 && 
    document.form1.fBYear.selectedIndex != 0) {
//    alert("checking valid date");
    var validDate = isDate(document.form1.fBDay.value,document.form1.fBMonth.value,document.form1.fBYear.value);
//    alert(parseInt(document.form1.fBDay.value));
    if (!validDate) {
       error += "Please enter a valid Birthdate.\n";
       select_error('fBMonth');
       select_error('fBDay');
       select_error('fBYear');
    };
};

if (validDate && document.form1.fAge.value != "")
    validate_age();

if (document.form1.fEmail.value == "") {
    error += "Please enter valid Parent or Guardian E-Mail.\n";
    textbox_error('fEmail');
   }

if (document.form1.fParent.value == "") {
    //error += "Please enter the Parent or Guardian Name.\n";
    //textbox_error('fParent');
    document.form1.fParent.value = " ";
   }

if (document.form1.fAddr1.value == "") {
    error += "Please enter an Address.\n";
    textbox_error('fAddr1');
   }

if (document.form1.fCity.value == "") {
    error += "Please enter a City.\n";
    textbox_error('fCity');
   }

if (document.form1.fState.selectedIndex == 0) {
    error += "Please select State.\n";
    select_error('fState');
   }

if (document.form1.fZip.value == "") {
    error += "Please enter a Zip Code.\n";
    textbox_error('fZip');
   }
else
if (isNaN(document.form1.fZip.value)) {
    error += "Zip Code must be numeric.\n";
    textbox_error('fZip');
   }
else
if (document.form1.fZip.value.length != 5) {
    error += "Zip Code must be 5 digits.\n";
    textbox_error('fZip');
   }

HPhone = false;
WPhone = false;
CPhone = false;

if (document.form1.fHome1.value != "" || document.form1.fHome2.value != "" || document.form1.fHome3.value != "")
    HPhone = true; 
if (document.form1.fWork1.value != "" || document.form1.fWork2.value != "" || document.form1.fWork3.value != "")
    WPhone = true; 
if (document.form1.fCell1.value != "" || document.form1.fCell2.value != "" || document.form1.fCell3.value != "")
    CPhone = true; 

if (!HPhone && !WPhone && !CPhone)
    error += "Please enter at least 1 contact Phone Number.\n";

if (HPhone)
    validate_phone_number('Home');
if (WPhone)
    validate_phone_number('Work');
if (CPhone)
    validate_phone_number('Cell');

// validate_payment_info(); Turned off for paypal

if (error != "")
   {
    error += "\nPlease correct the fields in red.\n";
    alert(error);
    return (false);
   }
else
   { 
    document.form1.Submit.disabled = true;
    myDate = new Date();
    myDate.setYear(document.form1.fBYear.value);
    myDate.setMonth(document.form1.fBMonth.value-1);
    myDate.setDate(document.form1.fBDay.value);
//    alert(myDate);
    myMonth=myDate.getMonth()+1;
//    alert("M: " + myMonth);
    myDay=myDate.getDate();
//    alert("D: " + myDay);
    myYear=myDate.getFullYear();
//    alert("Y: " + myYear);
    document.form1.fBirthDate.value = myMonth + "/" + myDay + "/" + myYear;
//    alert(document.form1.fBirthDate.value); 
   //   alert("birthdate: " + document.form1.fBirthDate.value + " ");
    return (true);
   }	 
}
function validate_phone_number(type) 
//  *********************************************************************************************************
//  if any part entered, all 3 parts must be entered
//  must be numeric
//  must be proper length
//  if work number and extension entered, extension must be numeric
//  *********************************************************************************************************
{
if (eval("document.form1.f" + type + "1.value") != "" ||
    eval("document.form1.f" + type + "2.value") != "" ||
    eval("document.form1.f" + type + "3.value") != "" ) 
    if (eval("document.form1.f" + type + "1.value") == "" ||
        eval("document.form1.f" + type + "2.value") == "" ||
        eval("document.form1.f" + type + "3.value") == "" ) {
        error += "Please enter all 3 parts of your " + type + " Phone number.\n";
        textbox_error(eval("'f" + type + "1'"));
        textbox_error(eval("'f" + type + "2'"));
        textbox_error(eval("'f" + type + "3'")); }
    else
    if (validate_number("f" + type + "1") == "n" ||
        validate_number("f" + type + "2") == "n" ||
        validate_number("f" + type + "3") == "n" ) {
        error += "Please enter a numeric " + type + " Phone number.\n"
        textbox_error(eval("'f" + type + "1'"));
        textbox_error(eval("'f" + type + "2'"));
        textbox_error(eval("'f" + type + "3'")); }
    else
    if (eval("document.form1.f" + type + "1.value.length") != 3 ||
        eval("document.form1.f" + type + "2.value.length") != 3 ||
        eval("document.form1.f" + type + "3.value.length") != 4  ) {
        error += "Please enter all 10 digits of your " + type + " pPone number.\n";
        textbox_error(eval("'f" + type + "1'"));
        textbox_error(eval("'f" + type + "2'"));
        textbox_error(eval("'f" + type + "3'")); }
}

function validate_number(field) 
//  *********************************************************************************************************
//  Validate passed value is a number
//  *********************************************************************************************************
{
var result = " ";
isNaN(eval("document.form1." + field + ".value"))?result = "n":result = "y";
return result;
}

function validate_payment_info()
//  *********************************************************************************************************
//  Card type must be selected
//  Card number
//  - must be entered
//  - must be numeric
//  - Visa/Mastercard must be 16 digits ; Amex must be 15 digits
//  Card expiration month
//  - must be selected
//  - must be equal to or greater than current month (if current year)
//  Card expiration year must be selected
//  - must be equal or greater than current year
//  *********************************************************************************************************
{
if  (document.form1.fCCType.selectedIndex == 0) {
     error += "Please select credit card type.\n";
     select_error('fCCType'); }
					
if  (document.form1.fCCName.value == "") {
     error += "Please enter the Name on the credit card.\n";
     textbox_error('fCCName'); }
					
if      (document.form1.fCCNbr.value == "") {
         error += "Please enter credit card number.\n"
         textbox_error('fCCNbr'); }
else if (validate_number('fCCNbr') == "n") {
         error += "Credit Card Number must be numeric.\n"
         textbox_error('fCCNbr'); }
else if (document.form1.fCCType.value == "American Express")
        {
         if (document.form1.fCCNbr.value.length != 15) {
             error += "American Express credit card number should be 15 numbers.\n"
             textbox_error('fCCNbr'); }
         else
         if (document.form1.fCCNbr.value.substr(0,1) != "3") {
             error += "Please enter a valid American Express credit card number.\n"
             textbox_error('fCCNbr'); }
        }
else if (document.form1.fCCType.value == "Visa")
        {
         if (document.form1.fCCNbr.value.length != 16) {
             error += "Visa credit card number should be 16 numbers.\n"
             textbox_error('fCCNbr'); }
         else
         if (document.form1.fCCNbr.value.substr(0,1) != "4") {
             error += "Please enter a valid Visa credit card number.\n"
             textbox_error('fCCNbr'); }
        }
else if (document.form1.fCCType.value == "Master Card")
        {
         if (document.form1.fCCNbr.value.length != 16) {
             error += "Master Card credit card number should be 16 numbers.\n"
             textbox_error('fCCNbr'); }
         else
         if (document.form1.fCCNbr.value.substr(0,1) != "5") {
             error += "Please enter a valid Master Card credit card number.\n"
             textbox_error('fCCNbr'); }
        };

var today = new Date();
var today_month = today.getMonth() + 1;
var today_year  = y2k(today.getYear());

if      (document.form1.fCCExpMonth.selectedIndex == 0) {
         error += "Please select credit expiration month.\n"
         select_error('fCCExpMonth'); }
else if (document.form1.fCCExpYear.options[0].selected != true)
         if (eval(document.form1.fCCExpYear.selectedIndex + (today_year - 1)) == today_year)
             if (document.form1.fCCExpMonth.selectedIndex < today_month) {
                 error += "Please enter a valid Expiration Month & Year - Expiration Date has passed.\n";
                 select_error('fCCExpMonth'); 
                 select_error('fCCExpYear'); }

if      (document.form1.fCCExpYear.selectedIndex == 0) {
         error += "Please select credit expiration year.\n";
         select_error('fCCExpYear'); }
else if (document.form1.fCCExpYear.value < today_year) {
         error += "Please enter a valid Expiration Year.\n";
         select_error('fCCExpYear'); }
}

function validate_age() {
var sDate = document.form1.fBDay.value + "/" + document.form1.fBMonth.value + "/" + document.form1.fBYear.value;
var sAge = getAge(sDate,3);
if (sAge != parseInt(document.form1.fAge.value)) {
    error += "Age field =" + document.form1.fAge.value + " but Birthdate age =" + sAge + ".\n";
    textbox_error('fAge');
    select_error('fBMonth'); 
    select_error('fBDay'); 
    select_error('fBYear'); 
   }
}

function getAge(dateString,dateType) {
/*
   function getAge
   parameters: dateString dateType
   returns: boolean

   dateString is a date passed as a string in the following
   formats:

   type 1 : 19970529
   type 2 : 970529
   type 3 : 29/05/1997
   type 4 : 29/05/97

   dateType is a numeric integer from 1 to 4, representing
   the type of dateString passed, as defined above.

   Returns string containing the age in years, months and days
   in the format yyy years mm months dd days.
   Returns empty string if dateType is not one of the expected
   values.
*/

    var now = new Date();
    var today = new Date(y2k(now.getYear()),now.getMonth(),now.getDate());
//alert("today: " + today + " ")
    var yearNow = y2k(now.getYear());
//alert("yearnow: " + yearNow + " ")
    var monthNow = now.getMonth();
    var dateNow = now.getDate();

    if (dateType == 1)
        var dob = new Date(dateString.substring(0,4),
                            dateString.substring(4,6)-1,
                            dateString.substring(6,8));
    else if (dateType == 2)
        var dob = new Date(dateString.substring(0,2),
                            dateString.substring(2,4)-1,
                            dateString.substring(4,6));
    else if (dateType == 3)
        var dob = new Date(dateString.substring(6,10),
                            dateString.substring(3,5)-1,
                            dateString.substring(0,2));
    else if (dateType == 4)
        var dob = new Date(dateString.substring(6,8),
                            dateString.substring(3,5)-1,
                            dateString.substring(0,2));
    else
        return '';

    var yearDob = y2k(dob.getYear());
    var monthDob = dob.getMonth();
    var dateDob = dob.getDate();

    yearAge = yearNow - yearDob;

    if (monthNow >= monthDob)
        var monthAge = monthNow - monthDob;
    else {
        yearAge--;
        var monthAge = 12 + monthNow -monthDob;
    }

    if (dateNow >= dateDob)
        var dateAge = dateNow - dateDob;
    else {
        monthAge--;
        var dateAge = 31 + dateNow - dateDob;

        if (monthAge < 0) {
            monthAge = 11;
            yearAge--; 
        }
    }
//    return yearAge + ' years ' + monthAge + ' months ' + dateAge + ' days';
//    alert(" yearAge: " + yearAge);
    return yearAge;
}

function y2k(number) { 
return (number < 1000) ? number + 1900 : number;
}

function isDate (day,month,year) {
// checks if date passed is valid
// will accept dates in following format:
// isDate(dd,mm,ccyy), or
// isDate(dd,mm) - which defaults to the current year, or
// isDate(dd) - which defaults to the current month and year.
// Note, if passed the month must be between 1 and 12, and the
// year in ccyy format.

    var today = new Date();
    year = ((!year) ? y2k(today.getYear()):year);
    month = ((!month) ? today.getMonth():month-1);
    if (!day) return false
    var test = new Date(year,month,day);
    if ( (y2k(test.getYear()) == year) &&
         (month == test.getMonth()) &&
         (day == test.getDate()) )
        return true
    else
        return false
}

function text_focus(i) {
 i.style.border='1px solid #000000'; 
}

function text_blur(i) {
 if (i.value == "")
     i.style.border='1px solid #999999'; 
}

function select_focus(i) {
 i.style.color='#000000'; 
}

function select_blur(i) {
 if (i.selectedIndex == 0)
     i.style.color='#999999'; 
}

function textbox_error(f) {
    eField=document.getElementById(f);
    eField.style.border="1px solid red";
}

function select_error(f) {
    eField=document.getElementById(f);
    eField.style.color="red";
}

