var timer = -1, validUser = false;
function clickLink(event) {
  var parts = this.href.split('/'),
      query = parts[parts.length-1];
  loadLink(query);
  event.preventDefault();
}
function loadTb() {
 	tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
	imgLoader = new Image();// preload image
	imgLoader.src = tb_pathToImage;
}
function showRecaptcha() {
  if (Recaptcha) {
    Recaptcha.create("6LdZvL8SAAAAAJyEs6Aqy0Qu1uu0Iu3NO7T3uqKJ", 'captchael', {
      theme: "clean",
      callback: Recaptcha.focus_response_field
    });
  } else {
    timer = setInterval(function() {
      if (Recaptcha) {
        clearInterval(timer);
        Recaptcha.create("6LdZvL8SAAAAAJyEs6Aqy0Qu1uu0Iu3NO7T3uqKJ", 'captchael', {
          theme: "clean",
          callback: Recaptcha.focus_response_field
        });
      }
    }, 500);
  }
}
function preventDefaultAction(event) {
  if (!event) {
    event = window.event;
  }
  if (event && event.preventDefault) {
    event.preventDefault();
  } else if (event) {
    event.returnValue = false;
  }
  //alert(event);
}
function submitContactForm(event) {
  preventDefaultAction(event);
  var $form = $('#contactform');
  $.ajax({
    url: 'recaptchaajax.php',
    type: 'POST',
    dataType: 'json',
    cache: false,
    data: {
      recaptcha_challenge_field: $form.find('#recaptcha_challenge_field').attr('value'),
      recaptcha_response_field: $form.find('#recaptcha_response_field').attr('value'),
      name: $form.find('#name').val(),
      email: $form.find('#email').val(),
      subject: $form.find('#subject').val(),
      message: $form.find('#message').val()
    },
    success: function(json) {
      var $fb = $('#feedback');
      if (json.success) {
        $fb.css({color:'#33AC23'});
        $fb.html('Message successfully sent!');
      } else {
        var messages = '';
        for (var i = -1, leni = json.messages.length; ++i < leni;) {
          messages += '<li>'+ json.messages[i] +'</li>';
        }
        $fb.css({color:'#C92339'});
        $fb.html('<ul>'+ messages +'</ul>');
      }
      showRecaptcha();
    }
  });
}
function submitFree(event) {
  preventDefaultAction(event);
  var validForm = validateForm();
  if (validForm) {
    var $submitFree = $('#submitFree'),
        $form = $('#free-form');
    $submitFree.val('Sending...')
    $.ajax({
      url: 'recaptchaajax.php',
      type: 'POST',
      cache: false,
      dataType: 'json',
      data: {
        type: 'free-hosting',
        recaptcha_challenge_field: $form.find('#recaptcha_challenge_field').attr('value'),
        recaptcha_response_field: $form.find('#recaptcha_response_field').attr('value'),
        name: $form.find('#fullname').val(),
        email: $form.find('#email').val(),
        username: $form.find('#username').val()
      },
      success: function(json) {
        var $fb = $('#feedback');
        if (json.success) {
          $fb.css({color:'#33AC23'});
          $fb.html('Application successfully sent!');
          $submitFree
            .val('Sent')
            .attr('disabled', true);
          setTimeout(function() {
            $submitFree.attr('disabled', false)
              .val('Accept and Submit');
          }, 2000)
        } else {
          var messages = '';
          for (var i = -1, leni = json.messages.length; ++i < leni;) {
            messages += '<li>'+ json.messages[i] +'</li>';
          }
          $fb.css({color:'#C92339'});
          $fb.html('<ul>'+ messages +'</ul>');
        }
        showRecaptcha();
      }
    });
  }
  //console.log($('#free-form').serialize());
}
function validateForm() {
  var validEmail = validateEmail.apply($('#email')),
      //validUser = validateUser.apply($('#username')),
      validFullname = validateFullname.apply($('#fullname'));
  return validEmail && validUser && validFullname;
}
function validateUser() {
  var $this = $(this),
      val = $this.val(),
      $usernameFeedback = $('#usernameFeedback');
  val = val.toLowerCase();
  $this.val(val);
  if (val.match(/^[a-z]+[a-z0-9_]*$/)) {
    $usernameFeedback.html('');
    $.ajax({
      url: 'isuser.php?user='+ val,
      cache: false,
      dataType: 'json',
      success: function(json) {
        var isuser = json.isuser;
        if (isuser) {
          $usernameFeedback.html('username already taken, please change.');
        } else {
          $usernameFeedback.html('');
          validUser = true;
        }
      }
    });
  } else {
    $usernameFeedback.html('Invalid username, please use lower case letters a to z, 0 to 9 or underscore (_).');
  }
  validUser = false;
}
function validateFullname() {
  var val = $(this).val();
  if (val.match(/^([A-z]| |-)+$/)) {
    $('#fullnameFeedback').html('');
    return true;
  } else {
    $('#fullnameFeedback').html('<br />Please provide a valid name. This can contain any English letters, spaces and a "-".')
  }
  return false;
}
function validateEmail() {
  var val = $(this).val();
  if (val.match(/^[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}$/)) {
    $('#emailFeedback').html('');
    return true;
  } else {
    $('#emailFeedback').html('Please provide a valid email address.');
  }
  return false;
}
function loadLink(query) {
  var parts = query.split('?'),
      rfile = parts[0] +'_s.php',
      parts2 = parts[1] ? parts[1].split('=') : null;
      contact = parts2 && parts2[1] ? unescape(parts2[1]) : '',
      $content = $('#content');
  $.get(rfile, function(html) {
    $content.html(html);
    if (query.indexOf('portfolio') != -1) {
      loadTb();
    }
    $content.find('a.a').each(function() {
      $(this).click(clickLink);
    });
    if (contact.length > 0) {
      $('#subject').attr({value:contact});
    }
    document.location.hash = '#'+ query;
    if (query == 'free-hosting') {
      $('#username').keyup(validateUser);
      $('#fullname').keyup(validateFullname);
      $('#email').keyup(validateEmail);
      $('#submitFree').click(submitFree);
      var $terms = $('#terms'),
          $termsLink = $('#terms-link');
      $terms.hide();
      $termsLink.click(function() {
        if ($terms.is(':visible')) {
          $terms.hide(300);
        } else {
          $terms.show(300);
        }
      });
      showRecaptcha();
    } else if (query.substr(0, 7) == 'contact') {
      var $contact = $('#submit');
      $contact.click(submitContactForm);
      $contact.submit(function(event) {
        preventDefaultAction(event);
      });     
      showRecaptcha();
    }
  });
}
$(document).ready(function() {
  var $links = $('a.a');
  $links.click(clickLink);
  var hash = document.location.hash;
  if (hash != '') {
    loadLink(hash.substring(1));
  }
});

