$(document).ready(function(){
	$.datepicker.regional['da'] = {
		closeText: 'Luk',
	    prevText: '&#x3c;',
		nextText: '&#x3e;',
		currentText: 'Idag',
	    monthNames: ['Januar','Februar','Marts','April','Maj','Juni',
	    'Juli','August','September','Oktober','November','December'],
	    monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
	    'Jul','Aug','Sep','Okt','Nov','Dec'],
		dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'],
		dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'],
		dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'],
	    dateFormat: 'dd-mm-yy', firstDay: 0,
		isRTL: false,
		duration: 'fast',
		firstDay: 1,
		changeFirstDay: false
	};
	$.datepicker.setDefaults($.datepicker.regional['da']);

	$('input.dato-felt').not('.ingenkalender').each(function() {
		var $this = $(this);
		if ($this.is('.kal-hoejre')) {
			$this.datepicker({ 
				dateFormat: 'dd-mm-yy' , 
				yearRange: '-110:+50',
		    	beforeShow: function(input, inst) {
		        	inst.dpDiv.css({marginTop: -input.offsetHeight + 'px', marginLeft: input.offsetWidth + 'px'});
		    	}
			})
		} else {
			$this.datepicker({ 
				dateFormat: 'dd-mm-yy' , 
				yearRange: '-110:+50'
			})
		}
	});
	
	
	if (typeof(fieldLimits) != 'undefined') {
		var listClone = new Object();
		function filterList(ruleField) {
			var field, ruleField, rules, list, ruleFieldValue, ruleArray, ruleValues, selectedValue;
			for (var i=0; i<fieldLimits.length; i++) {
				if (fieldLimits[i][1] == ruleField) {
					field = fieldLimits[i][0];
					selectedValue = $('#'+field).val();
					//ruleField = fieldLimits[i][1];
					rules = fieldLimits[i][2];
					list = document.getElementById(field);
					if (list == null) continue;
					ruleFieldValue = document.getElementById(ruleField).value;
					ruleValues = new Array();
					if (!listClone[field]) {
						listClone[field] = new Array();
						for(var j=0; j<list.options.length;j++) {
							listClone[field][j] = list.options[j];
						}
					}
					list.options.length = 0;
					var item, newItem
					for (var j=0; j<rules.length; j++) {
						ruleArray = rules[j].split('|');
						ruleValues[ruleArray[0]] = "," + ruleArray[1] + ",";
					}
					for (var k=0; k<listClone[field].length;k++) {
						item = listClone[field][k];
						if (item.value=='') {
							try {
								newItem = document.createElement('option');
								list.add(newItem,null);
								newItem.text = item.text;
								newItem.value = item.value;
							}
							catch(ex) {
								newItem = document.createElement('option');
								list.add(newItem);
								newItem.text = item.text;
								newItem.value = item.value;
							}
						} else {
							if (typeof(ruleValues[item.value]) == 'string') {
								if (ruleValues[item.value].indexOf(','+ruleFieldValue+',') >= 0) {
									try {
										newItem = document.createElement('option');
										list.add(newItem,null);
										newItem.text = item.text;
										newItem.value = item.value;
										if (newItem.value == selectedValue) {
											newItem.selected = true;
										}
									}
									catch(ex) {
										newItem = document.createElement('option');
										list.add(newItem);
										newItem.text = item.text;
										newItem.value = item.value;
									}
								}
							}
						}
					}
				}	
			}
		}

	$(':input')
		.change(function() {
			filterList($(this).attr('id'));
		})
		.trigger('change');
	}

	/* 
		Opsæt håndtering af felter med reglen
		"Felt skal udfyldes, hvis andet felt er udfyldt"
	*/

	if (requiredRules.length > 0) {
		for (var i=0; i<requiredRules.length; i++) {
			var checkField = $('#'+requiredRules[i][1]),
				isCheckbox = checkField.is(':checkbox, :radio') ? true : false,
				field = $('#'+requiredRules[i][0]),
				isError = field.parents('li').hasClass('fejl') ? true : false,
				errorMsg = field.siblings('.fejl-meddelelse');
			if (typeof(field.data('numChecks')) == 'undefined') {field.data('numChecks', 0);}
			checkField
				.data('reqData',{'isCheckbox':isCheckbox, 'field':field, 'isError':isError, 'errorMsg':errorMsg})
				.change(function(event,eventTrigger) {
					var $this = $(this);
					if (($this.data('reqData').isCheckbox && $this.is(':checked')) || (!$this.data('reqData').isCheckbox && $this.val() != '')) {
						$this.data('reqData').field.data('numChecks', $this.data('reqData').field.data('numChecks') +1);
						if($this.data('reqData').field.data('numChecks') < 2) {
							
							if (! $this.data('reqData').field.hasClass(requiredClass)) {
								$this.data('reqData').field
									.addClass(requiredClass)
									.siblings('label')
										.addClass(requiredClass)
										.after(requiredSymbol);
								if ($this.data('reqData').isError) {
									$this.data('reqData').field
										.addClass('fejl')
										.siblings('label')
											.addClass('fejl')
											.parents('li')
												.addClass('fejl')
												.prepend($this.data('reqData').errorMsg);
								}
							}
						}
					} else if (eventTrigger != 'auto') {
						if ($this.data('reqData').field.data('numChecks') > 0) {
							$this.data('reqData').field.data('numChecks', $this.data('reqData').field.data('numChecks') -1);
						}
						if($this.data('reqData').field.data('numChecks') == 0) {						
							$this.data('reqData').field
								.removeClass(requiredClass + ' fejl')
								.siblings('label')
									.removeClass(requiredClass + ' fejl')
									.siblings('.skal-udfyldes-symbol')
										.remove()
										.end()
									.siblings('.fejl-meddelelse')
										.remove()
										.end()
									.parents('li')
										.removeClass('fejl');
						}
					}
					
				})
				.trigger('change','auto');
		}
	}
});
