function validate_forms_is_missing_required_popup(id, alerttxt) {
  if ($(id).value==null || $(id).value=="") {
    alert(alerttxt);
    $(id).focus();
    return true;
  }
  return false;
}

function validate_forms_are_fields_equal(id1, id2, alerttxt) {
	if ($(id1).value != $(id2).value) {
		alert(alerttxt);
		return false;
	}
	return true
}

function validate_forms_validate_required(field, alerttxt) {
  if (field.value==null || field.value=="") {
    forms_flag_field(field);
    forms_insert_error(alerttxt);
    return true;
  }
  forms_unflag_field(field)
  return false;
}

function validate_forms_validate_reg_exp(field, reg, alerttxt) {
  var reg = /^\d{5}/i;
  var val = field.value;

  if (reg.test(val)) {
    forms_unflag_field(field);
    return false;
  }
  else {
    forms_flag_field(field);
    forms_insert_error(alerttxt);
    return true;
  }
}

function validate_forms_validate_email(id, alerttxt) {
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (!filter.test($(id).value)) {
		alert(alerttxt);
		return false;
	}
	return true;
}


//*************************************************************************************************************
//*************************************************************************************************************
// Specific Forms

function validate_forms_validate_register_form(form) {
  if (validate_forms_is_missing_required_popup('reg_name',"Please enter your full name"))
    return false;
  else if (validate_forms_is_missing_required_popup('reg_email',"Please enter your email"))
    return false;
  else if (validate_forms_validate_email('reg_email',"Please enter a valid email address")==false)
    return false;
  else if (validate_forms_is_missing_required_popup('reg_pw',"Please choose a password"))
    return false;
  else if (validate_forms_is_missing_required_popup('reg_pw2', "Please verify your password"))
    return false;
  else if (!validate_forms_are_fields_equal('reg_pw', 'reg_pw2', "Passwords do not match"))
    return false;
  else
    return true;
}


function validate_forms_create_venue() {
  forms_check_required_field('name', 'Venue Name');
  forms_check_required_field('address1', 'Address');
  forms_check_required_object('create_venue_location_location', 'zipcode', 'Location');
  return false;
}


function validate_forms_event_form(form) {
  var haserror = false;
  
  // Disable button
  $('submit_createevent_button').disable();
  $('cancel_createevent_button').disable();
  
  // Assumption that error list set up
  forms_clear_errors();
  
  // Check name
	if(form.name.value == "" ) {
		forms_flag_field(form.name);
    forms_insert_error("Event name not filled in");
		haserror = true;
	}
	else
		forms_unflag_field(form.name);
    
  // Check all event stop venues
  for(var i=0;i<numStops;i++) {
		if($('stop_ignore['+i+']').value == "1")
			continue;

    // Only check venue if it is not disabled
    var is_checked_no_venue = $('disable_venue['+i+']').value;
    //var is_checked_no_venue = $('disable_venue['+i+']').checked;
    if(!is_checked_no_venue) {
      var venueField = document.getElementById('venue_id[' + i + ']');
      var venueInput = document.getElementById('venue_input[' + i + ']');
      if(venueField.value == "0") {
        forms_flag_field(venueInput);
        forms_insert_error("Venue " + (i+1) + " not chosen");
        haserror = true;
      }
      else
        forms_unflag_field(venueInput);
    }

		var dateStartInput = document.getElementById('start_date['+i+']');
		var dateEndInput = document.getElementById('end_date['+i+']');
		if (!date_validate_date(dateStartInput)) {
			forms_flag_field(dateStartInput);
			forms_insert_error("Start time " + (i+1) + " is invalid.");
      haserror = true;
		}
		else
			forms_unflag_field(dateStartInput);

    // Check Endtime only if not disabled   
    var is_checked_no_endtime = $('disable_endtime['+i+']').value;
    //var is_checked_no_endtime = $('disable_endtime['+i+']').checked;
    if(!is_checked_no_endtime) {
      if(!date_validate_date(dateEndInput)) {
        forms_flag_field(dateEndInput);
        forms_insert_error("End time " + (i+1) + " is invalid.");
        haserror = true;
      }
      else 
        forms_unflag_field(dateEndInput);
    }
  }
  
  if(haserror) {
    forms_show_errors();
    $('submit_createevent_button').enable();
    $('cancel_createevent_button').enable();
    return false;
  }
  else {
    hideErrors();
    return true;
  }
}

function validateProfileForm(form) 
{
	$('cancel_button').disabled = true;
	$('update_button').disabled = true;
	
	// Disabled checks for now
  var haserror = false;
  
  // Assumption that error list set up
  forms_clear_errors();
  
  with (form) {
    haserror = haserror || validate_forms_validate_required(form.name, "Please enter your name");
    //haserror = haserror || validate_forms_validate_reg_exp(location_input, /^\d{5}/i, "Please specify your 5 digit ZIP Code");
    //haserror = haserror || validate_forms_validate_reg_exp(phone, /^\d{3}[\-.\s]?\d{3}[\-.\s]?\d{4}/i, "Please specify your phone number (123-345-7890)");
  }
  
  if(haserror) {
    forms_show_errors();
		$('update_button').disabled = false;
		$('cancel_button').disabled = false;
    return false;
  }
  else {
    hideErrors();
    return true;
  }
}

function validate_forms_change_email_form(form) {
	$('submit_button').disabled = true;
	$('cancel_button').disabled = true;
	var haserror = false;
	
	forms_clear_errors();
	if(validate_forms_validate_required(form.email, "Please specify your new email.")) {
		haserror = true;
	}
	
	if (haserror) {
		forms_show_errors();
		$('submit_button').disabled = false;
		$('cancel_button').disabled = false;
		return false;
	}
	else {
		hideErrors();
		return true;
	}
}

function validate_forms_change_password_form(form) {
	$('submit_button').disabled = true;
	$('cancel_button').disabled = true;
	var haserror = false;
	
	forms_clear_errors();
	if(validate_forms_validate_required(form.current_password, "Please fill in your current password")) {
		haserror = true;
	}
	if(validate_forms_validate_required(form.new_password, "Please fill in your new password")) {
		haserror = true;
	}
	if(validate_forms_validate_required(form.new_password_verify, "Please verify your new password")) {
		haserror = true;
	}
	
	if(form.new_password_verify.value != form.new_password.value) {
		haserror = true;
		forms_insert_error("Verification password does not match the new password");
		forms_flag_field(form.new_password_verify);
		forms_flag_field(form.new_password);
	}
	
	if(haserror) {
		forms_show_errors();
		$('submit_button').disabled = false;
		$('cancel_button').disabled = false;
		return false;
	}
	else {
		hideErrors();
		return true;
	}
}

