isValidEmailAddress = (emailAddress)  ->
  pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
  return pattern.test(emailAddress)

getCSRF = () ->
  cookies = document.cookie.split(';')
  for i in [0..cookies.length] by 1
    cookie = $.trim(cookies[i])
    if cookie.substring(0, 'csrftoken'.length + 1) == ('csrftoken' + '=')
      return decodeURIComponent(cookie.substring('csrftoken'.length + 1))

createCookie = (name,value,days) ->
  if days
    date = new Date()
    date.setTime(date.getTime()+(days*24*60*60*1000))
    expires = "; expires="+date.toGMTString()
  else
    expires = ""
  document.cookie = name+"="+value+expires+"; path=/"

readCookie = (name) ->
  nameEQ = name + "="
  ca = document.cookie.split(';')
  for c in ca
    while (c.charAt(0)==' ')
      c = c.substring(1,c.length)
    if (c.indexOf(nameEQ) == 0)
      return c.substring(nameEQ.length,c.length)
  return null

  eraseCookie = (name) ->
    createCookie(name,"",-1)

$(window).bind('scroll', (e) ->
  val = $(this).scrollTop()
  $header = $("header.landingPage:not(.pre-scrolled)")
  $mobileNav = $('nav.mobile')
  if val > 25
    if $header.hasClass("notScrolled")
      $header.removeClass("notScrolled").addClass("scrolled")
      $mobileNav.removeClass("notScrolled").addClass("scrolled")
  else if val < 25
    if $header.hasClass("scrolled")
      $header.removeClass("scrolled").addClass("notScrolled")
      $mobileNav.removeClass("scrolled").addClass("notScrolled")
)

$('div.mobile-toggle button').click ->
  $('nav.mobile').toggleClass('is-visible')
  $('header').toggleClass('mobile-nav-toggled')

slideTestimonial = ->
  vpWidth = $(window).width()
  $active = $('ul.testimonials li.active')
  $activeCirc = $('ul.circle-nav li.active')
  # distance = (vpWidth / 2) + $active.width()
  if $active.val() != 6
    $new = $active.next('li')
    $newCirc = $activeCirc.next('li')
  else
    $new = $('ul.testimonials li[value="1"]')
    $newCirc = $('ul.circle-nav li[value="1"]')
  # $new.css({left:distance, display:'block'})

  # $new.animate({left:'0'}, 700).addClass('active')
  # $active.animate({right:distance}, 700, ->
  #   $(this).removeClass('active').removeAttr('style')
  #   $new.removeAttr('style')
  # )
  $active.removeClass('active')
  $new.addClass('active')
  $activeCirc.removeClass('active')
  $newCirc.addClass('active')

slideInterval = window.setInterval(slideTestimonial, 7700)

$("ul.circle-nav li i.fa-circle").click ->
  $new = $(this).parents("li")
  $active = $("ul.circle-nav li.active")
  newValue = $new.val()
  $active.removeClass("active")
  $new.addClass("active")
  $("ul.testimonials li.active").removeClass("active")
  $("ul.testimonials li[value='#{newValue}']").addClass("active")
  clearInterval(slideInterval)
  slideInterval = window.setInterval(slideTestimonial, 7700)

$('ul.trust-values li').hover( ->
  $(this).addClass('flip')
->
  $(this).removeClass('flip')
)

validateGetStarted = ->
  $first_name = ($('input#first-name').val() != '')
  $last_name = ($('input#last-name').val() != '')
  $email = isValidEmailAddress($('input#email').val())
  if $first_name and $last_name and $email
    return true
  else
    return false

validateContactUs = ->
  $first_name = ($('input#first-name').val() != '')
  $last_name = ($('input#last-name').val() != '')
  $email = isValidEmailAddress($('input#email').val())
  $phone = ($('input#phone').val() != '')
  $message = ($('textarea#message').val() != '')
  if $first_name and $last_name and $email and $phone and $message
    return true
  else
    return false

$("form.get-started input").keydown ->
  setTimeout( ->
    if validateGetStarted()
      $("form button").removeClass("btn-disabled").prop("disabled", false)
    else
      $("form button").addClass("btn-disabled").prop("disabled", true) 
  ,0)

$("form.get-started input").blur ->
  if validateGetStarted()
    $("form button").removeClass("btn-disabled").prop("disabled", false)
  else
    $("form button").addClass("btn-disabled").prop("disabled", true) 

$("form.contact-us .input").keydown ->
  setTimeout( ->
    if validateContactUs()
      $("form button").removeClass("btn-disabled").prop("disabled", false)
    else
      $("form button").addClass("btn-disabled").prop("disabled", true) 
  ,0)

$("form.contact-us .input").blur ->
  if validateContactUs()
    $("form button").removeClass("btn-disabled").prop("disabled", false)
  else
    $("form button").addClass("btn-disabled").prop("disabled", true) 

characters = 1000
$("textarea#message").keyup ->
  if ($(this).val().length > characters)
    $(this).val($(this).val().substr(0, characters))
  remaining = characters -  $(this).val().length
  $("#commentCounter p").remove()
  if(remaining <= 10)
    $("#commentCounter").append("<p><strong>"+  remaining+"</strong> characters remaining</p>")

$.fn.allChange = (callback) -> 
  me = this
  last = ""
  infunc = -> 
    text = $(me).val()
    if contact_us
      validate = validateContactUs()
    else
      validate = validateGetStarted()
    if validate
      $("form.lp button").removeClass("btn-disabled").prop("disabled", false)
    else
      $("form.lp button").addClass("btn-disabled").prop("disabled", true)
    setTimeout(infunc, 100)
  setTimeout(infunc, 100)

getQueryVariable = (variable) ->
  query = window.location.search.substring(1)
  vars = query.split('&')
  for v in vars
    pair = v.split('=')
    if decodeURIComponent(pair[0]) == variable
      return decodeURIComponent(pair[1])
  return false

$("form.get-started").submit (e) ->
  e.preventDefault()
  csrftoken = $("form.get-started input[name='csrfmiddlewaretoken']").val()
  from = getQueryVariable("from")
  if from then referrer = from else referrer = "unknown"
  $.post("/get-started-submit/", {
    'csrfmiddlewaretoken': csrftoken,
    'first_name': $("input#first-name").val(),
    'last_name': $("input#first-name").val(),
    'email': $("input#email").val(),
    'referrer': referrer
  }).success( (response) ->
    $("div.form-wrapper").hide()
    $("form.get-started").append("<h2 class='thank-you'>Thanks for signing up!</h2>")
    $("form.get-started").append("<p class='thank-you'>You'll receive an email to confirm your reservation</p>")
    try
      __adroll.record_user({"adroll_segments": "2cbecbf7"})
    createCookie('svsignup','true',90);
  ).error( (response) ->
    )

$("form.contact-us").submit (e) ->
  e.preventDefault()
  csrftoken = $("form.contact-us input[name='csrfmiddlewaretoken']").val()
  $.post("/contact-us-submit/", {
      'csrfmiddlewaretoken': csrftoken,
      'first_name': $("input#first-name").val(),
      'last_name': $("input#first-name").val(),
      'email': $("input#email").val(),
      'phone': $("input#phone").val(),
      'message': $("textarea#message").val()
    }).success( (response) ->
      $("div.form-wrapper").hide()
      $("form.contact-us").append("<h2 class='thank-you'>Thanks!</h2>")
      $("form.contact-us").append("<p class='thank-you'>We'll be in touch soon.</p>")
    ).error( (response) ->
    )
if $("form.contact-us").length > 0
  contact_us = true
else
  contact_us = false

$("form input").allChange()

if app.exitSurvey and (not /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) and not readCookie("svsignup")
  $(document).mouseleave (e) ->
    if e.clientY < 60
      $("#alphaOverlay").show()
      $("#alphaOverlay").addClass("active")
      $(".survey-popup").show()
      $(".survey-popup").addClass("active")
      $(".popup-logo").show()
      $(".popup-logo").addClass("active")

$("div#page-1 button").click ->
  $("div#page-1").removeClass("active")
  setTimeout( ->
    $("div#page-1").hide()
    $("div#page-2").show()
    $("div#page-2").addClass("active")
  ,1000)
  answer = $(this).attr("id")
  if answer == "yes" then app.response = true else app.response = false
  $("div#page-2").addClass(answer)

validatePage2 = ->
  $fName = ($('div#page-2 input#firstNameInput').val() != '')
  $lName = ($('div#page-2 input#lastNameInput').val() != '')
  $email = isValidEmailAddress($('div#page-2 input#emailInput').val())
  if $email and $fName and $lName
    return true
  else
    return false

$("div#page-2 input").keydown ->
  setTimeout( ->
    if validatePage2()
      $("div#page-2 form button").removeClass("btn-disabled").prop("disabled", false)
    else
      $("div#page-2 form button").addClass("btn-disabled").prop("disabled", true) 
  ,0)

$("div#page-2 input").blur ->
  $email = $(this)
  if validatePage2()
    $("div#page-2 form button").removeClass("btn-disabled").prop("disabled", false)
  else
    $("div#page-2 form button").addClass("btn-disabled").prop("disabled", true) 

$.fn.formChange = (callback) ->
  infunc = ->
    if validatePage2()
      $("div#page-2 form button").removeClass("btn-disabled").prop("disabled", false)
    else
      $("div#page-2 form button").addClass("btn-disabled").prop("disabled", true) 
    setTimeout(infunc, 100)
  setTimeout(infunc, 100)

$("div#page-2 input").formChange()

close_bounce_survey = ->
  $("#alphaOverlay").removeClass('active')
  $("div.survey-popup").removeClass('active')
  $("div.popup-logo").removeClass('active')
  $(document).unbind('mouseleave')
  setTimeout( ->
    $("#alphaOverlay").hide()
    $("div.survey-popup").hide()
    $("div.popup-logo").hide()
  , 1000)

$("div#page-3 div.close").click ->
  close_bounce_survey()

$("div#page-2 span.no-thanks p").click ->
  try
    __adroll.record_user({"adroll_segments": "9213c9e8"})
  close_bounce_survey()


bounce_survey_submit = ->
  csrftoken = $("form#reservationForm input[name='csrfmiddlewaretoken']").val()
  $.post("/bounce/", {
    'csrfmiddlewaretoken': csrftoken,
    'first_name': $("#firstNameInput").val(),
    'last_name': $("#lastNameInput").val(),
    'email': $("#emailInput").val(),
    'referrer': app.location,
    'response': app.response
  }).success( (response) ->
    # $("span#reservationNumber").text(response.id)
    $("div#page-2").removeClass("active")
    setTimeout( ->
      $("div#page-2").hide()
      $("div#page-3").show()
      $("div#page-3").addClass("active")
    ,1000)
    $(".tw").click( () ->
      opts   = ',width='  + 575 +
               ',height=' + 400 +
               ',top='    + ($(window).height() - 400) / 2 +
               ',left='   + ($(window).width()  - 575) / 2
      text = "Join me welcoming email into the age of the customer with @SubscriberVoice, email for brands that listen"
      url = "https://www.subscribervoice.com/beta/t/#{response.id}"
      window.open("https://twitter.com/share?text=#{text}&url=#{url}", 'twitter', opts)
    )
    fb_url = "https://www.subscribervoice.com/beta/f/#{response.id}"
    $(".fb").attr('href', "https://facebook.com/dialog/share?app_id=886556818078922&href=#{fb_url}&display=page&redirect_uri=https://www.subscribervoice.com")
    $("#emailReferral").attr('href',"mailto:?subject=Help give email subscribers a voice&body=You know all those brands that you’re listening to in your inbox – well what if those brands actually listened to you? That’s why I just signed up for SubscriberVoice! Join me: https://www.subscribervoice.com/beta/e/#{response.id}")
    try
      __adroll.record_user({"adroll_segments": "2cbecbf7"})
    createCookie('svsignup','true',90);
  ).error( (response) ->
  )

$("form#reservationForm").submit (e) ->
  e.preventDefault()
  if $(this).find("button").hasClass("btn-disabled")
    return false
  bounce_survey_submit()

$("input#id_username").attr('placeholder', 'Email Address')

$("input#id_password").attr('placeholder', 'Password')
