
/* Contact Form **************************************************************/

function onContactFormSubmit()
{
  var element;
  var error = false;
  var postData = {name:'', email:'', message:'', salt:''};
  
  // Hide all messages
  $('div.buttonfeedback.progress').hide();
  $('div.buttonfeedback.error').hide();
  $('div.buttonfeedback.success').hide();
  
  // Ensure name is not empty
  element = $('input[name="name"]');
  if('' == element.val()){
    error = true;
    element.siblings('span[class="error"]').fadeIn('fast');
  }
  else {
    postData.name = element.val();
    element.siblings('span[class="error"]').fadeOut('fast');
  }

  // Ensure email is not total trash
  element = $('input[name="email"]');
  if(0 >= element.val().indexOf("@")){
    error = true;
    element.siblings('span[class="error"]').fadeIn('fast');
  }
  else {
    postData.email = element.val();
    element.siblings('span[class="error"]').fadeOut('fast');
  }

  // Ensure message is not empty
  element = $('textarea[name="message"]');
  if('' == element.val()){
    error = true;
    element.siblings('span[class="error"]').fadeIn('fast');
  }
  else {
    postData.message = element.val();
    element.siblings('span[class="error"]').fadeOut('fast');
  }

  // Invalid form, display error
  if(error){
    $('div.buttonfeedback.error').fadeIn('fast');
    return false;
  }

  // Display that we are busy
  $('div.buttonfeedback.progress').fadeIn('fast');

  // Submit
  $.ajax(
    {
      type: 'POST',
      url: '/assets/ajax/contact.php',
      data: postData,
      error: onContactFormSubmitError,
      success: onContactFormSubmitSuccess
    }
  );

  // Disable fields & submit
  $('input[name="name"]').attr('disabled', 'disabled');
  $('input[name="email"]').attr('disabled', 'disabled');
  $('textarea[name="message"]').attr('disabled', 'disabled');
  $('button[type="submit"]').attr('disabled', 'disabled');
  $('button[type="submit"]').css('cursor', 'default');
  $('button[type="submit"]').fadeTo('fast', 0.4);
  $('label').fadeTo('fast', 0.4);
  
  return false;
}

function onContactFormSubmitError(request, status, error)
{
  // Hide other messages
  $('div.buttonfeedback.progress').hide();
  $('div.buttonfeedback.success').hide();
  
  // Show error
  $('div.buttonfeedback.error').fadeIn('fast');
  
  // Enable fields & form
  $('input[name="name"]').removeAttr('disabled');
  $('input[name="email"]').removeAttr('disabled');
  $('textarea[name="message"]').removeAttr('disabled');
  $('button[type="submit"]').removeAttr('disabled');
  $('button[type="submit"]').removeAttr('style');
  $('label').removeAttr('style');
}

function onContactFormSubmitSuccess(data, status)
{
  // Hide other messages
  $('div.buttonfeedback.progress').hide();
  $('div.buttonfeedback.error').hide();
  
  // Show success
  $('div.buttonfeedback.success').fadeIn('fast');
}

function initContactForm()
{
  $('form').submit(onContactFormSubmit);
}

/* Shadowbox *********************************************************************/
    
function initShadowbox()
{
  Shadowbox.init({
    adapter: 'jquery',
    language: 'en',
    players:  ['img', 'html', 'iframe', 'qt', 'swf'],
    displayNav: false
  });
}

/* Debug *********************************************************************/

function debug(obj)
{
  var output = '';
  for(var i in obj){
    output += i + ", ";
  }
  alert(output);
}

function debugValues(obj)
{
  var output = '';
  for(var i in obj){
    output += i + "=" + obj[i] + ", ";
  }
  alert(output);
}

/* Init **********************************************************************/

function init()
{
  initContactForm();
}

initShadowbox();
$(document).ready(init);
