(function($) {
  $.tools.validator.fn("[type=time]", "Please supply a valid time, like 12:00 PM", function(input, value) { 
      return /^\s*(\d?\d:\d\d)*\s*(AM|PM)*\s*$/.test(value);
    });
  $.tools.validator.fn("[type=phone]", "Please supply a valid phone number, like 800-555-1212.", function(input, value) { 
      return /^\s*([-0-9.)( ]{0,20})+\s*$/.test(value); //pattern=""
    });
  var process = function(json) {
    var triggers = this.triggers;
    var form = this.form;
    if (json === true)  {
      form.find('div.alert').html("<h3>Your Message has Been Sent.</h3>")
	.fadeIn('fast', function() {form.find('fieldset').hide();})
	.fadeOut(3000, function() {
	    $(this).empty();
	    form.find(':button[type=reset]').click();
	    $(triggers).each(function(i) { 
		if ($(this).overlay && $(this).overlay().isOpened())
		  $(this).overlay().close();
	      });
	  });
    } else {
      if (json['error'])
	form.find('div.alert').html("<h3>Your Message cannot be Sent.</h3>").append(json.error).show();
      loadToken(form);
      form.data("validator").invalidate(json);
    }
  };

  var submitInquiry = function (e) {
    if (!e.isDefaultPrevented()) {
      var form = $(this);
      e.preventDefault();
      $.ajax({
	url: "data/inquire.php",
	    type: 'post',
	    data: form.serialize() + '&action=send&t='+ e.data.type,
	    dataType: 'json',
	    context: e.data,
	    success: process
	    }		
	);
    }
  };

  var loadToken = function(form) {
    $.getJSON("data/inquire.php?action=token", function(json) {
	$(form).find(':hidden[name=token]').val(json.token);
      });
  };

  $(function() {
      //$(':date').dateinput({ value: new Date(2011,10,3), min: -10, max: 30 });
      d = $(":date").dateinput(
			       {
			       value: 1, 
				   min: -1, 
				   max: 30
				   }
			       );
      d.val(d.data("dateinput").getValue('mm/dd/yyyy'));
      var t = new Date();
      var hours = t.getHours();
      var mins = t.getMinutes();
      var zap =  hours > 11 ? ' PM' : ' AM';
      mins = mins < 10 ? '0'+mins : ''+mins;
      hours = hours % 12 > 0 ? hours % 12 : 12;
      $(':input[name=time]').val(hours + ':' + mins + zap);
      //d.data("dateinput").getValue()
      //d.data("dateinput").setValue('2010-10-10');
      
      vf = $($('a.inquire').attr('rel')).find('form');
      var vali = $(vf).validator();//$('#inquire-form').validator();

      var triggers = $('a.inquire').each(function(i) {
	  $(this).overlay({
	    mask: {
	      },
		closeOnClick: false,
		onBeforeLoad: function(e) {
		loadToken(vali);
	      },
		onLoad: function(e) {
		  var srcEl = e.originalTarget || e.srcElement || e.target;
		  $(vali).find(':input[name=cancel]').one('click', {trigger: this.getTrigger()}, function(e) {e.data.trigger.overlay().close();}); 
		  if (srcEl.rev)
		    $(vali).find(':hidden[name=url]').val(srcEl.rev);
		  else
		    $(vali).find(':hidden[name=url]').val(window.location.href);
		  $(vali).bind('submit', {triggers: triggers, form: vali, type:'inquiry'}, submitInquiry);
	      },
		onClose: function() {
		vali.data("validator").reset();
		vali.find('fieldset').show();
	      }
	    });
	});
    });

  $(function() {
      var vali = $('#contact-form').validator();
      var triggers = $('a.contact').overlay({
	mask: {
	      },
	    onBeforeLoad: function() {
	    loadToken(vali);
	    $(vali).find(':input[name=cancel]').bind('click', {trigger: this.getTrigger()}, function(e) {e.data.trigger.overlay().close();}); 
	    $(vali).find(':hidden[name=url]').val(window.location.href);
	    $(vali).bind('submit', {triggers: triggers, form: vali, type:'contact'}, submitInquiry);
	  },
	    closeOnClick: false,
	    onClose: function() {
	    vali.data("validator").reset();
	    vali.find('fieldset').show();
	  }
	});
    });

  $(function() {
      var vali = $("#searchform").validator();
      var trigger = $("a.search").overlay({
	mask: {
	      },
	    onLoad: function() {
	    $(vali).find(':input[name=cancel]').bind('click', {trigger: this.getTrigger()}, function(e) {e.data.trigger.overlay().close();}); 
	  },
	    onClose: function() {
	    vali.data("validator").reset();
	  }
	});
    });
  

 })(jQuery);


//$('a.inquire').inquireOverlayForm({type: 'inquiry',mask:{},url:'data/inquire.php', });

