<!DOCTYPE html>
<html lang="en">
  <head>
        <script async src="https://www.googletagmanager.com/gtag/js?id=UA-147352802-1"></script>
        <script>
          window.dataLayer = window.dataLayer || [];
          function gtag(){dataLayer.push(arguments);}
          gtag('js', new Date());
    
          gtag('config', 'UA-147352802-1');
        </script>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="Contact us at DVC Trip Planner and let us know what you think of our site and what features you think we should add.">

    <link rel="icon" href="/static/img/favicon.ico">

    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">

    <script src="https://code.jquery.com/jquery-3.4.1.min.js" defer></script>
    <script src="https://code.jquery.com/ui/1.12.0/jquery-ui.min.js" defer></script>

    <script src="/static/js/bundle-7211584267.min.js" defer></script>

    <script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js" defer></script>
    <script src="https://kit.fontawesome.com/56684c990a.js" crossorigin="anonymous" defer></script>

    <title>DVC Trip Planner :: Contact Us</title>

    <link rel="stylesheet" href="/static/css/style-ec425774ae.min.css" />
  </head>
  <body>
    <nav id="dvct-navbar" class="navbar navbar-light border-bottom sticky-top dvct-mini-nav">
      <div class="container">
        <button id="dvct-hamburger" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#dvct-nav-menu" aria-controls="dvct-nav-menu" aria-expanded="false" aria-label="Toggle navigation">
          <i class="fas fa-bars"></i>
        </button>
        <span id="dvct-brand" class="navbar-brand mb-0 h1"><a class="dvct-link-logo" href="/">DVC Trip Planner<sup>&reg;</sup></a></span>
        <span id="dvct-slogan" class="navbar-text">Plan Your Trip Home!</span>
      </div>
    
      <div class="collapse" id="dvct-nav-menu">
        <li class="nav-item dropdown">
          <div class="dvct-resort-dropdown-menu">
            <a class="dropdown-item dvct-dropdown-item small" href="/">Home</a>
            <a class="dropdown-item dvct-dropdown-item small" href="/itinerary">Full Itinerary</a>
            <a class="dropdown-item dvct-dropdown-item small" href="/itinerary/compare">Compare Plans</a>
            <a class="dropdown-item dvct-dropdown-item small" href="/dvc-point-charts">Point Charts</a>
            <a class="dropdown-item dvct-dropdown-item small" href="/contact">Contact Us</a>
    
            <div class="dropdown-divider"></div>
    
            <h6 class="dropdown-header">Orlando Resorts</h6>
            <a class="dropdown-item dvct-dropdown-item small" href="/resort/disneys-animal-kingdom-villas">Animal Kingdom</a>
            <a class="dropdown-item dvct-dropdown-item small" href="/resort/bay-lake-tower-at-disneys-contemporary-resort">Bay Lake Tower</a>
            <a class="dropdown-item dvct-dropdown-item small" href="/resort/disneys-beach-club-villas">Beach Club</a>
            <a class="dropdown-item dvct-dropdown-item small" href="/resort/disneys-boardwalk-villas">BoardWalk</a>
            <a class="dropdown-item dvct-dropdown-item small" href="/resort/boulder-ridge-villas-at-disneys-wilderness-lodge">Boulder Ridge</a>
            <a class="dropdown-item dvct-dropdown-item small" href="/resort/copper-creek-villas-and-cabins-at-disneys-wilderness-lodge">Copper Creek</a>
            <a class="dropdown-item dvct-dropdown-item small" href="/resort/the-villas-at-disneys-grand-floridian-resort-and-spa">Grand Floridian</a>
            <a class="dropdown-item dvct-dropdown-item small" href="/resort/disneys-old-key-west-resort">Old Key West</a>
            <a class="dropdown-item dvct-dropdown-item small" href="/resort/disneys-polynesian-villas-and-bungalows">Polynesian</a>
            <a class="dropdown-item dvct-dropdown-item small" href="/resort/disneys-riviera-resort">Riviera</a>
            <a class="dropdown-item dvct-dropdown-item small" href="/resort/disneys-saratoga-springs-resort-and-spa">Saratoga Springs</a>
    
            <div class="dropdown-divider"></div>
    
            <h6 class="dropdown-header">Other Resorts</h6>
            <a class="dropdown-item dvct-dropdown-item small" href="/resort/aulani-disney-vacation-club-villas-ko-olina-hawaii">Aulani</a>
            <a class="dropdown-item dvct-dropdown-item small" href="/resort/the-villas-at-disneyland-hotel">Disneyland Hotel</a>
            <a class="dropdown-item dvct-dropdown-item small" href="/resort/the-villas-at-disneys-grand-californian-hotel-and-spa">Grand Californian</a>
            <a class="dropdown-item dvct-dropdown-item small" href="/resort/disneys-hilton-head-island-resort">Hilton Head</a>
            <a class="dropdown-item dvct-dropdown-item small" href="/resort/disneys-vero-beach-resort">Vero Beach</a>
    
            <div class="dropdown-divider"></div>
    
            <a class="dropdown-item dvct-dropdown-item small" href="/sites">DVC Websites</a>
            <a class="dropdown-item dvct-dropdown-item small" href="https://www.facebook.com/dvctripplanner" aria-label="Facebook"><i class="fab fa-facebook-square"></i></a>
            <a class="dropdown-item dvct-dropdown-item small" href="https://twitter.com/dvctripplanner" aria-label="Twitter"><i class="fab fa-twitter-square"></i></a>
          </div>
        </li>
      </div>
    </nav>

    <div class="content">
      <div class="row">
        <div class="col-1"></div>
        <div class="col-10">
          <div class="col-12 mt-4">
  <header class="page-header">
    <h3>
      <span>Contact Us</span>
      <span><a class="float-right dvct-link-logo" href="https://twitter.com/dvctripplanner" aria-label="Twitter"><i class="fab fa-twitter-square"></i></a></span>
      <span><a class="float-right dvct-link-logo pr-2" href="https://www.facebook.com/dvctripplanner" aria-label="Facebook"><i class="fab fa-facebook-square"></i></a></span>
    </h3>
  </header>

  <p>We would love to hear from you! Please drop us a note with your feedback on DVC Trip Planner<sup>&reg;</sup> and let us know about any features you wish it had!</p>
</div>

<div class="col-12 my-4">
  <form id="dvct-contact-us-form" class="needs-validation" novalidate>
    <div class="row">
      <div class="col-12 col-sm-6 mt-2">
        <input id="dvct-contact-name" type="text" class="form-control" placeholder="Name" required>
        <div class="invalid-feedback">Please provide your name.</div>
      </div>

      <div class="col-12 col-sm-6 mt-2">
        <input id="dvct-contact-email" type="email" class="form-control" aria-describedby="emailHelp" placeholder="Enter email" required>
        <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
        <div class="invalid-feedback">Please provide a valid email.</div>
      </div>
    </div>

    <div class="row">
      <div class="col">
        <label for="exampleFormControlTextarea1">Comments</label>
        <textarea id="dvct-contact-comments" class="form-control" id="exampleFormControlTextarea1" rows="3"
        required></textarea>
        <div class="invalid-feedback">Please provide some comments.</div>
      </div>
    </div>

    <div class="row pt-2">
      <div class="col">
        <button id="dvct-contact-us" type="submit" class="btn">Submit</button>
      </div>
    </div>
  </form>
</div>

<div class="col-12">
  <div id="dvct-contact-success" class="alert alert-success d-none" role="alert">Thank you for your feedback!</div>
  <div id="dvct-contact-error" class="alert alert-danger d-none" role="alert">Uh-oh! Something went wrong</div>
</div>

<script type="text/javascript">
window.addEventListener('DOMContentLoaded', () => {
  $('#dvct-contact-us').click((e) => {
    e.preventDefault();

    const form = document.getElementById('dvct-contact-us-form');

    // Reset any existing classes
    form.classList.remove('was-validated');
    $('#dvct-contact-success').addClass('d-none');
    $('#dvct-contact-error').addClass('d-none');

    // Ensure form is valid before posting
    if (form.checkValidity() === false) {
      form.classList.add('was-validated');
      return;
    }

    // Gather the form data
    const formData = {
      name: $('#dvct-contact-name').val(),
      email: $('#dvct-contact-email').val(),
      comments: $('#dvct-contact-comments').val(),
    };

    $.post('/contact', formData)
      .done(() => $('#dvct-contact-success').removeClass('d-none'))
      .fail(() => $('#dvct-contact-error').removeClass('d-none'));
  });
});
</script>

        </div>
        <div class="col-1"></div>
      </div>
    </div>


    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js" defer></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js" defer></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/intro.js/2.9.3/intro.min.js" defer></script>

<script type="text/javascript">
window.addEventListener('DOMContentLoaded', () => {
  window.dvct.init(true);
});
</script>

  </body>
</html>
