$(function() {
  $('#launchVideo').openDOMWindow({
    width: 873, 
    height: 516, 
    eventType: 'click', 
    windowSource: 'iframe', 
    windowPadding: 0, 
    loader: 1,
    loaderImagePath: 'img/animationProcessing.gif', 
    loaderHeight: 16, 
    loaderWidth: 17
  }).click(function() {
    $('<div id="videoClose" style="position: fixed; left: 50%; margin-left: 462px; top: 50%; margin-top: -258px; width: 29px; height: 29px; z-index: 20000; cursor: pointer;"><img src="img/close_grey.png" alt="" /></div>').appendTo('body').click(function() { $(this).remove(); }).closeDOMWindow({ eventType: 'click' });
    setTimeout(function() { $('#DOMWindowOverlay').click(function() { $('#videoClose').remove(); }) }, 500);
  });
  
  $('input[name=email]').focus(function() {
    if ($(this).val() == 'EMAIL HERE')
      $(this).val('');
  });
  $('#signup_email').change(function() {
    $('input[name=email]').val($(this).val());
  })

  $('#signup').click(function() {
    var o = $('input[name=email]');
    if (o.val() != 'EMAIL HERE')
      $('#signup_email').val(o.val());
  }).openDOMWindow({
    width: 855,
    height: 500,
    borderSize: 0,
    windowPadding: 0,
    eventType: 'click',
    loader: 1, 
    loaderImagePath: 'img/animationProcessing.gif', 
    loaderHeight: 16, 
    loaderWidth: 17
  });
  
  $('#closeOverlay').closeDOMWindow({ eventType: 'click' });
  

  /* Form validation: */
  var _validate = function(o, msg, callback) {
    var root = o.id;
    var validator = $('#validation_' + root);
    if (callback($(o).val())) {
      $(o).data('invalid', true);
      validator.html(msg.replace('{0}', root));
    }
    else {
      $(o).data('invalid', false);
      validator.empty();
    }
  };

  var validateNonBlank = function(o) {
    _validate(this, '* Required.', function(s) {
      return (s == '');
    });
  };
  var validateEmail = function(o) {
    _validate(this, '* Invalid.  Please use mailbox@domain.tld', function(s) {
      return (!s.match(/.*@.*\..*/));
    });
  };
  var validatePhone = function(o) {
    _validate(this, '* Invalid.  Please use xxx-yyy-zzzz', function(s) {
      return (!s.replace(/[()-. ]/g, '').match(/[0-9]{10}/));
    });
  };

  $('#signup_name, #signup_title, #signup_company, #signup_address').change(validateNonBlank);
  $('#signup_phone').change(validatePhone);
  $('#signup_email').change(validateEmail);


  $("#signup_form").submit(function() {
    var complete = true;
    $("#signup_form input[type!=image]").trigger('change').each(function() {
      if ($(this).data('invalid')) complete = false;
    });
    if (complete) {
      // Post form via Ajax.
      $.post('signup_handler.php', $(this).serialize(), function(response) {
        $('#contactFormInner .container').empty().html(response);
      });
    }
    return false;
  });  
});

