var NotificantForm = {
  init: function() {
    $("form.remote").ajaxForm({
      beforeSubmit: NotificantForm.validate,
      success: NotificantForm.success
    })

    $('img.valid, img.error').hide()
    $('#notificant_form .valid_first_name input').blur(NotificantForm.val_first_name)
    $('#notificant_form .valid_last_name input').blur(NotificantForm.val_last_name)
    $('#notificant_form .valid_email input').blur(NotificantForm.val_email)
    $('#notificant_form .valid_location input').blur(NotificantForm.val_location)
    // $('#notificant_form').submit(NotificantForm.validate)
  },
  open: function() {
    $("#dialog").dialog({
      height: 300,
      width: 400,
      modal: true,
      hide: 'fade',
      autoOpen: true,
      beforeclose: function() { 
	      $(this).dialog('destroy');
	    },
      close: function(){ 
	      $(this).dialog('destroy'); 
	    }
    })
  },
  val_email: function() {
    var v = $('#notificant_form  .valid_email input').val().match(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i)
    ValidateForm.feedback('#notificant_form .valid_email', v)
    return v
  },
  val_first_name: function() {
    var v = $('#notificant_form .valid_first_name input').val().match(/\w+/)
    ValidateForm.feedback('#notificant_form .valid_first_name', v)
    return v
  },
  val_last_name: function() {
    var v = $('#notificant_form .valid_last_name input').val().match(/\w+/)
    ValidateForm.feedback('#notificant_form .valid_last_name', v)
    return v
  },
  val_location: function() {
    var v = $('#notificant_form .valid_location input').val().match(/\w+/)
    ValidateForm.feedback('#notificant_form .valid_location', v)
    return v
  },
  feedback: function validate(dom, valid) {
    $(dom + ' img.valid').css('display', valid ? 'inline' : 'none')
    $(dom + ' img.error').css('display', valid ? 'none' : 'inline')
  },
  validate: function() {
    var msg = ''
    if(!NotificantForm.val_first_name()) msg += '\n- Please enter your first name'
    if(!NotificantForm.val_last_name()) msg += '\n- Please enter your last name'
    if(!NotificantForm.val_email()) msg += '\n- Please enter a valid email address'
    if(!NotificantForm.val_location()) msg += '\n- Please enter a location'
    if(msg == '') return true
    else {
      return false
    }
  },
  success: function() {
    var form = $("#dialog").html()
    $("#dialog").html('<h1 style="margin-top: 50px;">Thank you!</h1>');
    setTimeout(function() {$("#dialog").dialog('close')}, 2000);
  }
}

var ValidateForm = {
  
  id: null,
  
  init: function(container_id) {
    id = container_id
    $('img.valid, img.error').hide()
    $(id + ' .valid_name input').blur(ValidateForm.val_name)
    $(id + ' .valid_email input').blur(ValidateForm.val_email)
    $(id).submit(ValidateForm.validate)
  },
  val_comment: function() {
    return $(id + ' textarea').val().length > 0
  },
  val_email: function() {
    var v = $(id + ' .valid_email input').val().match(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i)
    ValidateForm.feedback(id + ' .valid_email', v)
    return v
  },
  val_name: function() {
    var v = $(id + ' .valid_name input').val().match(/\w+/)
    ValidateForm.feedback(id + ' .valid_name', v)
    return v
  },
  feedback: function validate(dom, valid) {
    $(dom + ' img.valid').css('display', valid ? 'inline' : 'none')
    $(dom + ' img.error').css('display', valid ? 'none' : 'inline')
  },
  validate: function() {
    var msg = ''
    if(!ValidateForm.val_name()) msg += '\n- Please enter your name'
    if(!ValidateForm.val_email()) msg += '\n- Please enter a valid email address (it will not be displayed with your comment)'
    if(!ValidateForm.val_comment()) msg += '\n- Please enter your comment'
    if(msg == '') return true
    else {
      alert('Sorry, your comment could not be submitted. Please correct the following:\n' + msg)
      return false
    }
  }
}

var Quarantine = {
  ham: function(comment_id) {
    $.post('/flightcontrol/comments/ham', {id: comment_id}, function() {
      $('#quarantine_' + comment_id + ' input').attr('checked', false)
      $('#quarantine_' + comment_id).css('background-color', '#C7D64B')
      $('#quarantine_' + comment_id).fadeOut('slow')
    })
  },
  spam: function(comment_id) {
    $.post('/flightcontrol/comments/spam', {id: comment_id}, function() {
      $('#comment_' + comment_id).css('background-color', '#C7D64B')
      $('#comment_' + comment_id).fadeOut('slow')
    })
  }
}


$(document).ready(NotificantForm.init)