function setLanguageDatePicker(language)
{
	if (language=='en')
	{
		language = 'en-GB';
	}else
	if (language=='dk')
	{
		language = 'da';
	}
	JQ.datepicker.setDefaults(JQ.datepicker.regional[language]);
}

function initDatePicker(prep_id, my_option)
{	
	var option = JQ.extend({
		isMultiple:true,
		isDraggable: false,
		multipleAppend: ['start','end'],
		multipleDefaultDate: null,
		defaultDate: '',
		minDate: '',
		maxDate: '',
		firstDay: '6',
		dateFormat: 'dd M yy',
		showOn: 'both',
		yearRange: 'c-10:c+10',
		buttonImage: '/default_library/templates/img/datepicker/calendar.png',
		buttonImageOnly: true,
		changeYear: false,
		gotoCurrent: true,
		changeMonth: false,
		altField: '#' + prep_id + '_input',
		altFormat: "yy-mm-dd",
		onBeforeClose: function(selectedDate, instance) {},
		beforeShow: function(input, instance)	{
			if (input.value!='')
			{	
				instance.settings.defaultDate =JQ.datepicker.formatDate(instance.settings.dateFormat, new Date(instance.selectedYear, instance.selectedMonth, instance.selectedDay));
				clearDatePicker(input);
			}
		},
		onClose: function(selectedDate, instance) { 
			if (selectedDate=='')
			{
				JQ('[id^='+prep_id+']').not( this ).datepicker('option', {
					minDate: my_option.minDate,
					maxDate:''
				});
				instance.settings.defaultDate = '';
			}else{
				JQ('#'+this.id + '_placeholder').hide();
			}
			option.onBeforeClose(selectedDate,instance);
		}
		
	}, my_option );
	
	if (option.isMultiple == true)
	{
		multipleDatePicker(prep_id, option);
	}else
	{
		singleDatePicker(prep_id, option);
	}
}

function singleDatePicker(id, option)
{
	JQ('#'+ id).datepicker(option).datepicker('setDate', option.defaultDate);
	if (option.defaultDate=='')
	{
		JQ('#'+id + '_placeholder').show();
	}
	if (option.isDraggable == true)
	{
		draggableDatePicker({
			handle: '.ui-datepicker-header'
		});
	}
}

function multipleDatePicker (prep_id, my_option)
{
	
	var presetBound = [];
	for (var count=0;count<my_option.multipleAppend.length; count++)
	{
		if (my_option.multipleDefaultDate!=null && my_option.multipleDefaultDate[count]!=null && my_option.multipleDefaultDate[count]!='')
		{
			var date_array = my_option.multipleDefaultDate[count].split('-');
			var bound_date = new Date(date_array[0],parseInt(date_array[1],10)-1,date_array[2]);
			if (count == 0)
			{
				bound_date.setDate(bound_date.getDate()+1);
			}else
			{
				bound_date.setDate(bound_date.getDate()-1);
			}
			presetBound[count] =  JQ.datepicker.formatDate( my_option.dateFormat, bound_date );
		}else
		{
			if (count == 0)
			{
				presetBound[count] = my_option.minDate;
			}
		}
	}
	
	for (var count=0;count<my_option.multipleAppend.length; count++)
	{
		var presetDate = '';
		if (my_option.multipleDefaultDate!=null && my_option.multipleDefaultDate[count]!=null  && my_option.multipleDefaultDate[count]!='')
		{
			presetDate = JQ.datepicker.formatDate( my_option.dateFormat, JQ.datepicker.parseDate(my_option.altFormat, my_option.multipleDefaultDate[count]));
		}
		var multi_option = JQ.extend(my_option, {
			altField: "#" + prep_id + '_' + my_option.multipleAppend[count] + '_input',
			fieldAppend:  my_option.multipleAppend[count],
			defaultDate: presetDate,
			minDate: my_option.multipleAppend[count] == my_option.multipleAppend[1] ? presetBound[0] : my_option.minDate,
			maxDate: my_option.multipleAppend[count] == my_option.multipleAppend[0] ? presetBound[1] : '',
			onSelect: function( selectedDate, instance) {
					var newSelectedDate = JQ.datepicker.formatDate(instance.settings.dateFormat, new Date(instance.selectedYear, instance.selectedMonth, instance.settings.fieldAppend == my_option.multipleAppend[0] ? parseInt(instance.selectedDay,10)+1 : parseInt(instance.selectedDay,10)-1));
					var opt = instance.settings.fieldAppend == my_option.multipleAppend[0] ? "minDate" : "maxDate";
					date = JQ.datepicker.parseDate(
						instance.settings.dateFormat || JQ.datepicker._defaults.dateFormat,
						newSelectedDate, instance.settings );
					JQ('[id^='+prep_id+']').not( this ).datepicker( "option", opt, date );
			}
		});
		singleDatePicker(prep_id +  '_' + my_option.multipleAppend[count], multi_option);
	}
}

function destroyDatePicker(myOptions)
{
	var options = JQ.extend({
		prep_id: null,
		isMultiple: false
	},myOptions);
	
	
	if (options.prep_id ==null)
	{
		return false;
	}
	if (options.isMultiple==true)
	{
		JQ('[id^='+options.prep_id+']').datepicker('destroy');
	}else
	{
		JQ('#'+ options.prep_id).datepicker('destroy');
	}
}

function clearDatePicker(input, options)
{
	JQ(input).datepicker('setDate',null);
	JQ('#'+input.id + '_placeholder').show();
	if (options != null)
	{
		JQ(input).datepicker('option',options);
	}
}

function draggableDatePicker(option)
{
	JQ('#ui-datepicker-div').draggable(option);
}
