$( document ).ready( function() {

  /* 
   * Custom Validations
	 * -------------------------------------------------------------------------- */
  $.validator.addMethod( "time", function(value, element, params) {
    var time = value.split( ':' );

    return time[0] >= 0 && time[0] < 24 && time[1] >= 0 && time[1] < 60;
  }, "Please enter a time in the format HH:MM" );

  $.validator.addMethod( "germanDateInAdvance", function(value, element, params) {
    // params are the days in advance, e.g. 14
    params -= 1;
    if ( params < 0 ) params = 0;

    var match = value.match( /(\d{2})\.(\d{2}).(\d{2,4})/ );
    if( !match ) return false;

    var dateInAdvance = new Date();
    dateInAdvance.setDate( dateInAdvance.getDate() + params );

    var date = new Date( match[3], match[2]-1, match[1] );

    return dateInAdvance <= date;
  }, "Please enter a date in the format dd/mm/yyyy" );


  /* 
   * Geocoder
	 * -------------------------------------------------------------------------- */
  $( 'input.geocodable' ).focusout( function() {
    var _this = $(this);

    RT.Geocoder.first( $(this).val(), function( text ) {
     if( text ) _this.val( text );
    });
  }).autocomplete({
    delay: 500,
    source: function( search, add ) {
      RT.Geocoder.all( search.term, add );
    }
  });



  /* 
   * Datepicker
	 * -------------------------------------------------------------------------- */
  $( ".datepicker" ).datepicker({
    dateFormat: 'DD, dd.mm.yy',
    defaultDate: 14,
    minDate: 14
  });
  

  /* 
   * Map
	 * -------------------------------------------------------------------------- */
  // === Map Form
  var form = new RT.Form( '#requestForm', '#requestResult', {
    map: {
      zoom: 8,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
  });
  $( 'form#requestForm input:submit' ).enable();



  /* 
   * Signup Form
   * -------------------------------------------------------------------------- */
  var requestSignupForm = $( 'form#requestSignupForm' );
  var requestSignupFormOptions = {
    beforeSubmit: function( data, form, options ) {
      if( requestSignupForm.valid() ) {
        RT.UI.Button.disable( requestSignupForm );

        return true;
      } else {
        return false;
      }
    },
    
    success: function( response, status ) {
      // requestSignupForm.slideUp();
      alert( 'Ihre Anfrage wurde erfolgreich bearbeitet. Sie erhalten in Kürze eine Email von uns.' );
    },
    
    error: function( response, status ) {
      alert( 'Ihre Anfrage konnte leider nicht bearbeitet werden. Bitte versuchen Sie es erneut.' );
    }, 
    
    complete: function() {
      RT.UI.Button.enable( requestSignupForm );
    }
  };

  requestSignupForm.ajaxForm( requestSignupFormOptions );

});

