function trimNumber(s) {
  while (s.substr(0,1) == '0' && s.length>1) { s = s.substr(1,9999); }
  return s;
}
(function($){
	var months = {
	"short": ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
    "long": ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]},
	  todayDate = new Date(),
      todayYear = todayDate.getFullYear();
	
	$.fn.gpbirthday = function(options) {
		var settings = {
			"maxAge" : 120,
			"minAge" : 18,
			"birthDay" : null,
			"birthMonth" : null,
			"birthYear" : null,
			"monthFormat" : "short",
			"dayField" : null,
			"monthField" : null,
			"yearField" : null
		};
		
		return this.each (function() {
			var todayDate = new Date();
			var todayYear = todayDate.getFullYear();
			var todayDay = todayDate.getDate();
			var todayMonth = todayDate.getMonth()+1;
			
			
			
			if(options) { $.extend(settings, options); }
 
			for(var i=1; i<=31; i++)
			{
				$("<option></option>").attr("value", i).text(i).appendTo($(settings["dayField"]));
			}
			if(settings["birthDay"] != null) {
				$(settings["dayField"]+" option[value='"+settings["birthDay"]+"']").attr('selected',true);
			}
			
			for(var x in months[settings["monthFormat"]])
			{
				$("<option></option>").attr("value", parseInt(x)+1).text(months[settings["monthFormat"]][x]).appendTo($(settings["monthField"]));
			}
			if(settings["birthMonth"] != null) {
				$(settings["monthField"]+" option[value='"+settings["birthMonth"]+"']").attr('selected',true);
			}
			
			for(var i=todayYear-settings["minAge"]; i>=todayYear-settings["maxAge"]; i--)
			{
				$("<option></option>").attr("value", i).text(i).appendTo($(settings["yearField"]));
			}
			if(settings["birthYear"] != null) {
				$(settings["yearField"]+" option[value='"+settings["birthYear"]+"']").attr('selected',true);
			}
			
			$(settings["yearField"]).change(function(){
				checkDate();
			});
			
			$(settings["monthField"]).change(function(){
				checkDate();
			});
			
			function checkDate() {
				var isLeap = new Date($(settings["yearField"]+" option:selected").val(), 1, 29).getDate() == 29;
				var selDay = $(settings["dayField"] + " option:selected").val();
				var selMonth = $(settings["monthField"] + " option:selected").val();
				
				if($(settings["yearField"]).val() == todayYear - settings["minAge"]) {
					$(settings["dayField"]).find('option').remove().end();
					$(settings["monthField"]).find('option').remove().end();
					for(var x in months[settings["monthFormat"]]) {
						$("<option></option>").attr("value", parseInt(x)+1).text(months[settings["monthFormat"]][x]).appendTo($(settings["monthField"]));
						if(x == todayMonth-1){
							if(selMonth <= todayMonth){
								$(settings["monthField"]+" option").removeAttr('selected');
								$(settings["monthField"]+" option[value='"+selMonth+"']").attr('selected',true);
							}
							break;
						}
					}
					var isLong = $(settings["monthField"]).val() == 3 || $(settings["monthField"]).val() == 5 || $(settings["monthField"]).val() == 10 || $(settings["monthField"]).val() == 12;
					if($(settings["monthField"]).val() == todayMonth) {
						for(var i=1; i<=todayDay; i++) {
							$("<option></option>").attr("value", i).text(i).appendTo($(settings["dayField"]));
						}
						if(selDay <= todayDay) {
							$(settings["dayField"]+" option").removeAttr('selected');
							$(settings["dayField"]+" option[value='"+selDay+"']").attr('selected',true);
						}
					}
					else if($(settings["monthField"]).val() == 2){
						$(settings["dayField"]).find('option').remove().end();
						var x = 28;
						if(isLeap){ x = 29; }
						for(var i=1; i<=x; i++) {
							$("<option></option>").attr("value", i).text(i).appendTo($(settings["dayField"]));
						}
						$(settings["dayField"]+" option").removeAttr('selected');
						$(settings["dayField"]+" option[value='"+selDay+"']").attr('selected',true);
					}
					else if(isLong) {
						$(settings["dayField"]).find('option').remove().end();
						for(var i=1; i<=31; i++) {
							$("<option></option>").attr("value", i).text(i).appendTo($(settings["dayField"]));
						}
						$(settings["dayField"]+" option").removeAttr('selected');
						$(settings["dayField"]+" option[value='"+selDay+"']").attr('selected',true);
					}
					else {
						$(settings["dayField"]).find('option').remove().end();
						for(var i=1; i<=30; i++){
							$("<option></option>").attr("value", i).text(i).appendTo($(settings["dayField"]));
						}
						$(settings["dayField"]+" option").removeAttr('selected');
						$(settings["dayField"]+" option[value='"+selDay+"']").attr('selected',true);
					}
				}
				else if($(settings["yearField"]).val() == todayYear - settings["maxAge"]) {
					$(settings["dayField"]).find('option').remove().end();
					$(settings["monthField"]).find('option').remove().end();
					for(var x in months[settings["monthFormat"]]) {
						if(x < todayMonth-1){
							continue;
						}
						$("<option></option>").attr("value", parseInt(x)+1).text(months[settings["monthFormat"]][x]).appendTo($(settings["monthField"]));
						
					}
					if(selMonth > todayMonth){
						$(settings["monthField"]+" option").removeAttr('selected');
						$(settings["monthField"]+" option[value='"+selMonth+"']").attr('selected',true);
					}
					var isLong = $(settings["monthField"]).val() == 3 || $(settings["monthField"]).val() == 5 || $(settings["monthField"]).val() == 10 || $(settings["monthField"]).val() == 12;
					if($(settings["monthField"]).val() == todayMonth) {
						for(var i=1; i<=todayDay; i++) {
							$("<option></option>").attr("value", i).text(i).appendTo($(settings["dayField"]));
						}
						if(selDay <= todayDay) {
							$(settings["dayField"]+" option").removeAttr('selected');
							$(settings["dayField"]+" option[value='"+selDay+"']").attr('selected',true);
						}
					}
					else if($(settings["monthField"]).val() == 2){
						$(settings["dayField"]).find('option').remove().end();
						var x = 28;
						if(isLeap){ x = 29; }
						for(var i=1; i<=x; i++) {
							$("<option></option>").attr("value", i).text(i).appendTo($(settings["dayField"]));
						}
						$(settings["dayField"]+" option").removeAttr('selected');
						$(settings["dayField"]+" option[value='"+selDay+"']").attr('selected',true);
					}
					else if(isLong) {
						$(settings["dayField"]).find('option').remove().end();
						for(var i=1; i<=31; i++) {
							$("<option></option>").attr("value", i).text(i).appendTo($(settings["dayField"]));
						}
						$(settings["dayField"]+" option").removeAttr('selected');
						$(settings["dayField"]+" option[value='"+selDay+"']").attr('selected',true);
					}
					else {
						$(settings["dayField"]).find('option').remove().end();
						for(var i=1; i<=30; i++){
							$("<option></option>").attr("value", i).text(i).appendTo($(settings["dayField"]));
						}
						$(settings["dayField"]+" option").removeAttr('selected');
						$(settings["dayField"]+" option[value='"+selDay+"']").attr('selected',true);
					}
				}
				else
				{
					$(settings["dayField"]).find('option').remove().end();
					$(settings["monthField"]).find('option').remove().end();
					for(var x in months[settings["monthFormat"]]) {
						$("<option></option>").attr("value", parseInt(x)+1).text(months[settings["monthFormat"]][x]).appendTo($(settings["monthField"]));
					}
					$(settings["monthField"]+" option").removeAttr('selected');
					$(settings["monthField"]+" option[value='"+selMonth+"']").attr('selected',true);
					var isLong = $(settings["monthField"]).val() == 3 || $(settings["monthField"]).val() == 5 || $(settings["monthField"]).val() == 10 || $(settings["monthField"]).val() == 12;
					if($(settings["monthField"]).val() == 2){
						$(settings["dayField"]).find('option').remove().end();
						var x = 28;
						if(isLeap){ x = 29; }
						for(var i=1; i<=x; i++) {
							$("<option></option>").attr("value", i).text(i).appendTo($(settings["dayField"]));
						}
						$(settings["dayField"]+" option").removeAttr('selected');
						$(settings["dayField"]+" option[value='"+selDay+"']").attr('selected',true);
					}
					else if(isLong) {
						$(settings["dayField"]).find('option').remove().end();
						for(var i=1; i<=31; i++) {
							$("<option></option>").attr("value", i).text(i).appendTo($(settings["dayField"]));
						}
						$(settings["dayField"]+" option").removeAttr('selected');
						$(settings["dayField"]+" option[value='"+selDay+"']").attr('selected',true);
					}
					else {
						$(settings["dayField"]).find('option').remove().end();
						for(var i=1; i<=30; i++){
							$("<option></option>").attr("value", i).text(i).appendTo($(settings["dayField"]));
						}
						$(settings["dayField"]+" option").removeAttr('selected');
						$(settings["dayField"]+" option[value='"+selDay+"']").attr('selected',true);
					}
				}
				$(this).val("TEST");
			}
			checkDate();
      });
  };
})( jQuery );

