// JavaScript Document
// basic validations
function valid_required(fieldObj, field_type) // is this field required
{
  switch(field_type)
  {
  case 'text':
    if(fieldObj.value == '') return false;
    break;    
  case 'select':
    if(fieldObj.selectedIndex == 0 || fieldObj.selectedIndex == '') return false;
    break;
  default:
    if(fieldObj.value == '')	return false;
  }
  return true;
}
function valid_date(field_id, min_value, max_value)  // is this a valid date
{
  var retValue = true;
  field_value = document.getElementById(field_id).value;
  var reg = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
    //var errorMessage = 'Please enter valid date as month, day, and four digit year.\nYou may use a slash, hyphen or period to separate the values.\nThe date must be a real date. 2-30-2000 would not be accepted.\nFormay mm/dd/yyyy.';
  if(reg.test(field_value) == false)
  {
    retValue = false; 
  }
  // Now if there is a min and max value check that the date is between them
  var submit_date = new Date(field_value);
  if (min_value != '')
  {
    min_date = new Date(min_value);
    if (submit_date < min_date)
    {
      retValue = false;
    }
  } 
  if (max_value != '')
  {
    max_date = new Date(max_value);
    if (submit_date > max_date)
    {
      retValue = false;
    }
  }
  return retValue;
}

function valid_time(field_id)  // is this a valid time
{
  var retValue = true;

  field_value = document.getElementById(field_id).value.toUpperCase();

  var reg = /^((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))$|^([01]\d|2[0-3])(:[0-5]\d){0,2}$/;
  if(reg.test(field_value) == false)
  {
    retValue = false; 
  }
  
  return retValue;
}

function valid_email(field_id)
{
  var retValue = true;
   field_value = document.getElementById(field_id).value;
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   if(reg.test(field_value) == false) {
      retValue = false;
   }
   return retValue;
}

// set the error class
function set_error(fieldBox)
{
	fieldBox.setAttribute("class","mainFormError");
	fieldBox.setAttribute("className","mainFormError");
	fieldObj.focus();
}
// clear the error class
function clear_error(fieldBox)
{
	fieldBox.setAttribute("class","mainForm");
	fieldBox.setAttribute("className","mainForm"); 
}

function valid_field(fieldId, fieldBoxId, fieldType, required, min_value, max_value)
{
	fieldBox = document.getElementById(fieldBoxId);
	fieldObj = document.getElementById(fieldId);

  clear_error(fieldBox);

  var is_valid = true;
  if (required == 1)
  {
    if(fieldType == 'text'  ||  fieldType == 'textarea'  ||  fieldType == 'password'  ||  fieldType == 'file'  ||  fieldType == 'phone'  || fieldType == 'website')
    {
      is_valid = valid_required(fieldObj, 'text');
    } 
    else if (fieldType == 'menu'  || fieldType == 'country'  || fieldType == 'state')
    {
      is_valid = valid_required(fieldObj, 'select');
    }
    else if (fieldType == 'date')
    {
      is_valid = valid_date(fieldId, min_value, max_value);
    }  
    else if (fieldType == 'time')
    {
      is_valid = valid_time(fieldId);
    } 
    else if (fieldType == 'email')
    {
      is_valid = valid_email(fieldId);
    }  
  } else // not required
  {
    if (fieldType == 'email' && fieldObj.value != '')
    {
    is_valid = valid_email(fieldId);
    }
  
  }
  //alert(fieldId + ' ' + is_valid + fieldObj.value);
  // if there is a problem with the field
  if (!is_valid)
  {
    set_error(fieldBox);
    return false;
  }
 
}  

function validatePart1(form)
{
   // Check from last field to first so that focus ends up on first error
	retVal = true;

  document.getElementById('formError').className ='formError';

  if (valid_field('field_22','fieldBox_22','text',0) == false) // DO Gate Code
   retVal=false;         
  if (valid_field('field_31','fieldBox_31','text',0) == false) // DO Street Address
   retVal=false;           
  if (valid_field('field_6','fieldBox_6','menu',1) == false) // DO Address Type
   retVal=false; 
  if (valid_field('field_20','fieldBox_20','text',0) == false) // DO Airline
   retVal=false; 
  if (valid_field('field_4','fieldBox_4','menu',1) == false) // DO Location
   retVal=false;         
  if (valid_field('field_23','fieldBox_23','text',1) == false) // Number of People
   retVal=false;          
  if (valid_field('field_7','fieldBox_7','date',1,'05/21/2008','05/21/2028') == false) // PU Date
   retVal=false;         
  if (valid_field('field_21','fieldBox_21','text',0) == false) // PU Gate Code
   retVal=false;            
  if (valid_field('field_30','fieldBox_30','text',0) == false) // PU Street Address
   retVal=false;          
  if (valid_field('field_3','fieldBox_3','menu',1) == false) // PU Address Type
   retVal=false; 
  if (valid_field('field_19','fieldBox_19','text',0) == false) // PU Arriving From
   retVal=false; 
  if (valid_field('field_18','fieldBox_18','text',0) == false) // PU Flight #
   retVal=false; 
  if (valid_field('field_17','fieldBox_17','text',0) == false) // PU Airline
   retVal=false;                                                
	if (valid_field('field_1','fieldBox_1','menu',1) == false) // PU Location
   retVal=false;

	if(retVal == false)
	{
		document.getElementById('formError').className ='showError';
	}
	return retVal;
}

function validateWhole(form)
{
   // Check from last field to first so that focus ends up on first error
	retVal = true;

  if (valid_field('field_12','fieldBox_12','text',0) == false) // Other Referral
   retVal=false;
  if (valid_field('field_11','fieldBox_11','menu',1) == false) // Referral
   retVal=false;
  if (valid_field('field_10','fieldBox_10','text',0) == false) // Other Occasion
   retVal=false;   
  if (valid_field('field_9','fieldBox_9','menu',1) == false) // Occassion
   retVal=false;         
  if (valid_field('field_16','fieldBox_16','phone',1) == false) // Phone
   retVal=false;         
  if (valid_field('field_15','fieldBox_15','email',1) == false) // Email
   retVal=false;              
  if (valid_field('field_14','fieldBox_14','text',1) == false) // Last Name
   retVal=false;
  if (valid_field('field_13','fieldBox_13','text',1) == false) // First Name
   retVal=false;
  if (valid_field('field_22','fieldBox_22','text',0) == false) // DO Gate Code
   retVal=false;         
  if (valid_field('field_31','fieldBox_31','text',0) == false) // DO Street Address
   retVal=false;           
  if (valid_field('field_6','fieldBox_6','menu',1) == false) // DO Address Type
   retVal=false; 
  if (valid_field('field_20','fieldBox_20','text',0) == false) // DO Airline
   retVal=false; 
  if (valid_field('field_4','fieldBox_4','menu',1) == false) // DO Location
   retVal=false;         
  if (valid_field('field_23','fieldBox_23','text',1) == false) // Number of People
   retVal=false;          
  if (valid_field('field_7','fieldBox_7','date',1,'05/21/2008','05/21/2028') == false) // PU Date
   retVal=false;         
  if (valid_field('field_21','fieldBox_21','text',0) == false) // PU Gate Code
   retVal=false;            
  if (valid_field('field_30','fieldBox_30','text',0) == false) // PU Street Address
   retVal=false;          
  if (valid_field('field_3','fieldBox_3','menu',1) == false) // PU Address Type
   retVal=false; 
  if (valid_field('field_19','fieldBox_19','text',0) == false) // PU Arriving From
   retVal=false; 
  if (valid_field('field_18','fieldBox_18','text',0) == false) // PU Flight #
   retVal=false; 
  if (valid_field('field_17','fieldBox_17','text',0) == false) // PU Airline
   retVal=false;                                                
	if (valid_field('field_1','fieldBox_1','menu',1) == false) // PU Location
   retVal=false;

	if(retVal == false)
	{
		document.getElementById('formError').className ='showError';
	}
	return retVal;
}













	
function validatePart2(form)
{
  // Check from last field to first so that focus ends up on first error
	retVal = true;
	
	document.getElementById('formError').className ='formError';
	
  if (valid_field('field_12','fieldBox_12','text',0) == false) // Other Referral
   retVal=false;
  if (valid_field('field_11','fieldBox_11','menu',1) == false) // Referral
   retVal=false;
  if (valid_field('field_10','fieldBox_10','text',0) == false) // Other Occasion
   retVal=false;   
  if (valid_field('field_9','fieldBox_9','menu',1) == false) // Occassion
   retVal=false;         
  if (valid_field('field_16','fieldBox_16','phone',1) == false) // Phone
   retVal=false;         
  if (valid_field('field_15','fieldBox_15','email',1) == false) // Email
   retVal=false;              
  if (valid_field('field_14','fieldBox_14','text',1) == false) // Last Name
   retVal=false;               
  if (valid_field('field_13','fieldBox_13','text',1) == false) // First Name
   retVal=false;  
  if (valid_field('field_22','fieldBox_22','text',0) == false) // DO Gate Code
   retVal=false;         
  if (valid_field('field_31','fieldBox_31','text',0) == false) // DO Street Address
   retVal=false;           
  if (valid_field('field_6','fieldBox_6','menu',1) == false) // DO Address Type
   retVal=false; 
  if (valid_field('field_20','fieldBox_20','text',0) == false) // DO Airline
   retVal=false; 
  if (valid_field('field_4','fieldBox_4','menu',1) == false) // DO Location
   retVal=false;         
  if (valid_field('field_23','fieldBox_23','text',1) == false) // Number of People
   retVal=false;          
  if (validateDate('field_7','fieldBox_7','date',1,'05/21/2008','05/21/2028') == false) // PU Date
   retVal=false;         
  if (valid_field('field_21','fieldBox_21','text',0) == false) // PU Gate Code
   retVal=false;            
   if (valid_field('field_30','fieldBox_30','text',0) == false) // PU Street Address
   retVal=false;          
  if (valid_field('field_3','fieldBox_3','menu',1) == false) // PU Address Type
   retVal=false; 
  if (valid_field('field_19','fieldBox_19','text',0) == false) // PU Arriving From
   retVal=false; 
  if (valid_field('field_18','fieldBox_18','text',0) == false) // PU Flight #
   retVal=false; 
  if (valid_field('field_17','fieldBox_17','text',0) == false) // PU Airline
   retVal=false;                                                
	if (valid_field('field_1','fieldBox_1','menu',1) == false) // PU Location
   retVal=false;

	if(retVal == false)
	{
		document.getElementById('formError').className ='showError';
	}
	return retVal;
}

function show(field_id, on_off)
{
  if (on_off == 1) {
    document.getElementById(field_id).className ='show';
  } else {
    document.getElementById(field_id).className='hidden';
  }
}

function displaypickup(pickup)
{
  if ((pickup[pickup.selectedIndex].value == 'Phoenix Sky Harbor International Airport' || pickup[pickup.selectedIndex].value == 'Scottsdale Airport'))
    {
      show('airport_pickup', 1);
      show('pickup_address', 0);
      show('gate_code1', 0);
      var addr_type = document.getElementById('field_3');
      addr_type.selectedIndex = 1;      
      document.getElementById('field_17').focus();
    } else {
      show('airport_pickup', 0);
      show('pickup_address', 1);
    }
}

function displaydropoff(dropoff)
{
  if (dropoff[dropoff.selectedIndex].value == 'Phoenix Sky Harbor International Airport' || dropoff[dropoff.selectedIndex].value == 'Scottsdale Airport')
    {
      show('airport_dropoff', 1);
      show('dropoff_address', 0);
      show('gate_code2', 0);
      var addr_type = document.getElementById('field_6');
      addr_type.selectedIndex = 1;      
      document.getElementById('field_20').focus();
    } else {
      show('airport_dropoff', 0);
      show('dropoff_address', 1);
    }
}

function displaypickupoptions(address) {

  if (address[address.selectedIndex].value == 'Residential Address')
    {
      show('gate_code1', 1);
      show('pickup_other', 0);
      document.getElementById('field_30').focus();
    } else if (address[address.selectedIndex].value == 'Other'){
      show('pickup_other', 1);
      document.getElementById('field_32').focus();
      show('gate_code1', 0);
    } else {
      show('pickup_other', 0);
      show('gate_code1', 0);
    }
}

function displaydropoffoptions(address) {

  if (address[address.selectedIndex].value == 'Residential Address')
    {
      show('gate_code2', 1);
      show('dropoff_other', 0);
      document.getElementById('field_31').focus();
    } else if (address[address.selectedIndex].value == 'Other'){
      show('dropoff_other', 1);
      document.getElementById('field_33').focus();
      show('gate_code2', 0);
    } else {
      show('dropoff_other', 0);
      show('gate_code2', 0);
    }
}

function displayoccasion(occasion) {
  var show = document.getElementById('occasion');
  var other_focus = document.getElementById('field_10');
  
  if (occasion[occasion.selectedIndex].value == 'other')
    {
      show.className='show';
      other_focus.focus();
    } else {
      show.className='hidden';
    }
}

function displayrefer(refer) {
  var show = document.getElementById('refer');
  var other_focus = document.getElementById('field_12');
  
  if (refer[refer.selectedIndex].value == 'other')
    {
      show.className='show';
      other_focus.focus();
    } else {
      show.className='hidden';
    }
}

function show_rest_of_form()
{
  var submit_button = document.getElementById('saveForm');
  var show = document.getElementById('rest_of_form');
  var continue_button = document.getElementById('continue');
  var first_name = document.getElementById('field_13');
  
  var val_status = validatePart1('reservation');
  //var val_status = true;
  
  if (val_status == true)
   {
    submit_button.disabled = false;
    show.className='show';
    continue_button.className='hidden';
    first_name.focus();
   }
}
function check_entire_form()
{
  var submit_button = document.getElementById('saveForm');
  var continue_button = document.getElementById('continue');
  
  var val_status = validateWhole('reservation');
  //var val_status = true;
  
  if (val_status == true)
   {
    submit_button.disabled = false;
    show.className='show';
    continue_button.className='hidden';
    return true;
   } else { return false; }
}
function hide_form()
{
  var form = document.getElementById('reservations');
    form.className='hidden';
}
