$(document).ready(function() {

	// Skip birthday fields if capacity is reached
	$('input[name="GebTag"]').keyup(function() {
		if($(this).val().length >= 2) {
			$(this).next('input').focus();
		}
	});

	$('input[name="GebMonat"]').keyup(function() {
		if($(this).val().length >= 2) {
			$(this).next('input').focus();
		}
	});

	$('input[name="GebJahr"]').keyup(function() {
		if($(this).val().length >= 4) {
			$(this).nextAll('input')[0].focus();
		}
	});

	/**
	 * Functions Class for address validation
	 *
	 */
	address_complete = {

		/**
		 * init autocomplete
		 *
		 * @param  string type (Rechnung, Lieferung)
		 * @return	void
		 */
		init:function(type) {

			address_complete.disable(type);

			var optionsOrt     = { minChars: 0, autoFill:true, mustMatch:true, max:5};
			var optionsStrasse = { minChars: 0, autoFill:false, mustMatch:true, max:5};
			var data           = {};
			$('input#inputFieldOrt'+type).autocomplete(data, optionsOrt);
			$('input#inputFieldStrasse'+type).autocomplete(data, optionsStrasse);

			$('select#inputFieldLand'+type).change(function() {
				address_complete.disable(type);
				if ('DE' == $('select#inputFieldLand'+type).val()) {
					$('input#inputFieldPLZ'+type).attr('maxlength', '5');
				} else {
					$('input#inputFieldPLZ'+type).attr('maxlength', '4');
				}

			});

			$('input#inputFieldPLZ'+type).blur(function() {

				if ('' != $('input#inputFieldPLZ'+type).val()) {
					address_complete.loadCityByZip(type);
				}

			});

			$('input#inputFieldOrt'+type).blur(function() {
				if ('' != $('input#inputFieldOrt'+type).val()) {
					address_complete.loadStreetByZipAndCity(type);
				}
			});

			$('input#inputFieldStrasse'+type).blur(function() {
				if ('' != $('input#inputFieldStrasse'+type).val()) {
					$('input#inputFieldHausnummer'+type).removeAttr('disabled');
					$('input#inputFieldHausnummer'+type).focus();
				}
			});

		},

		disable:function(type) {

			$('input#inputFieldOrt'+type).attr('disabled', 'disabled');
			$('input#inputFieldStrasse'+type).attr('disabled', 'disabled');
			$('input#inputFieldHausnummer'+type).attr('disabled', 'disabled');
		},

		// load city by plz
		loadCityByZip:function(type) {

			$('input#inputFieldOrt'+type).val('');
			$('input#inputFieldOrt'+type).attr('disabled', 'disabled');

			$('input#inputFieldStrasse'+type).val('');
			$('input#inputFieldStrasse'+type).attr('disabled', 'disabled');

			$('input#inputFieldHausnummer'+type).val('');
			$('input#inputFieldWohnung'+type).val('');
			$('input#inputFieldHausnummer'+type).attr('disabled', 'disabled');

			$('.inputFieldAutocompletionError'+type).hide();

			$.get(
				'/address/autocomplete-city',
				{
					country: $('select#inputFieldLand'+type).val(),
					zip: $('input#inputFieldPLZ'+type).val()
				},
				function(data){
					if (0 == data.length) {
						$('input#inputFieldOrt'+type).attr('alt', 'Kein Ort zu dieser PLZ gefunden.');
						$('input#inputFieldPLZ'+type).attr('alt', 'Kein Ort zu dieser PLZ gefunden.');
						initInputAlt();

						$('.inputFieldAutocompletionError'+type).show();
						$('input#inputFieldPLZ'+type).focus();
					} else {
						$('input#inputFieldOrt'+type).removeAttr('alt');
						$('input#inputFieldPLZ'+type).removeAttr('alt');
						$('input#inputFieldOrt'+type).removeAttr('disabled');

						var data = data.split("|");
						if (1 == data.length) {
							$('input#inputFieldOrt'+type).setOptions({data: data});
							$('input#inputFieldOrt'+type).val(data[0]);
							address_complete.loadStreetByZipAndCity(type);
						} else {
							$('input#inputFieldOrt'+type).setOptions({data: data});
							$('input#inputFieldOrt'+type).focus();
						}
					}
				}
			);
		},

		loadStreetByZipAndCity:function(type) {

			$('input#inputFieldStrasse'+type).val('');
			$('input#inputFieldStrasse'+type).attr('disabled', 'disabled');

			$('input#inputFieldHausnummer'+type).val('');
			$('input#inputFieldWohnung'+type).val('');
			$('input#inputFieldHausnummer'+type).attr('disabled', 'disabled');

			$.get(
				'/address/autocomplete-street',
				{
					country: $('select#inputFieldLand'+type).val(),
					zip: $('input#inputFieldPLZ'+type).val(),
					city: $('input#inputFieldOrt'+type).val()
				},
				function(data){

					if (0 == data.length) {
						$('input#inputFieldStrasse'+type).val('');
						$('input#inputFieldStrasse'+type).attr('alt', 'Kein Straße zu dieser PLZ-Ort-Kombination gefunden.');
						$('input#inputFieldOrt'+type).attr('alt', 'Kein Straße zu dieser PLZ-Ort-Kombination gefunden.');
						$('input#inputFieldPLZ'+type).attr('alt', 'Kein Straße zu dieser PLZ-Ort-Kombination gefunden.');
						initInputAlt();
						$('input#inputFieldOrt'+type).focus();
					} else {
						$('input#inputFieldStrasse'+type).removeAttr('alt');
						$('input#inputFieldOrt'+type).removeAttr('alt');
						$('input#inputFieldPLZ'+type).removeAttr('alt');
						$('input#inputFieldStrasse'+type).removeAttr('disabled');
						$('input#inputFieldHausnummer'+type).removeAttr('disabled');

						var data = data.split("|");
						if (1 == data.length) {
							$('input#inputFieldStrasse'+type).setOptions({data: data});
							$('input#inputFieldStrasse'+type).val(data[0]);
							$('input#inputFieldHausnummer'+type).removeAttr('disabled');
						} else {
							$('input#inputFieldStrasse'+type).setOptions({data: data});
							$('input#inputFieldStrasse'+type).focus();
						}
					}
				}
			);
		}
	};
});
