var DateTimePicker = function(sel) {
	var div;
	var trim = jQuery.trim;

	var update = function() {
		var items = jQuery('li', div);
		var arr = new Array();

		for(var i=0;i<items.length;++i) {
			var date = jQuery('span.date', items[i]).text();
			var time = jQuery('span.time', items[i]).text();
			arr.push(date + '_'  + time);
			arr.sort();
		}
		jQuery(sel).val(arr.join(' '));
	};

	var _append = function(date, time) {
		var ul = jQuery('ul', div);
		var li = '<li><span class="date">' + date +
		         '</span> <span class="time">' + time +
		         '</span> (<a href="" class="remove">usuń</a>)</li>';
		ul.append(li);
		jQuery('li:last a.remove', ul).click(function(ev){
			ev.preventDefault();
			jQuery(this).parent('li').remove();
			update();
		});
	};

	var append = function(ev) {
		ev.preventDefault();
		var date = trim(jQuery('input.date', div).val());
		var time = trim(jQuery('input.time', div).val());
		if (!validate(date, time))
			return;
		_append(date, time);
		update();
		jQuery('input.time', div).val('');
		jQuery('input.date', div).val('');
		jQuery('input.date', div).focus();
	};

	var validate = function(date, time) {
		span = jQuery('span.error', div);
		date_re = /^\d{4}-\d{1,2}-\d{1,2}$/; 
		time_re = /^\d{2}:\d{2}$/;

		if (!date.match(date_re)) {
			span.text('Wpisz datę w formacie yyyy-mm-dd');
			span.show();
			return false;
		};

		if (time && !time.match(time_re)) {
			span.text('Podaj godzinę w formacie hh:mm');
			span.show();
			return false;
		};
		
		span.text('');
		span.hide();

		return true;
	};

	var install = function() {
		var html =
		'<div class="datetimepicker new">' +
			'<ul></ul>' +
			'<label>Data:</label> <input class="text date" type="text" ' +
			'<label>Godzina:</label> <input class="text time" type="text" ' +
			'<a class="append" href="#">Dodaj</a>' +
			'<span class="error"></span>' +
		'</div>';
	
		var input = jQuery(sel);
		input.after(html);
		input.hide();
		div = jQuery('div.datetimepicker.new');
		div.removeClass('new');
		jQuery('a.append', div).click(append);
	};

	var load = function() {
		var value = trim(jQuery(sel).val());
		var items = value.split(' ');
		for (var i=0;i<items.length;++i) {
			fields = items[i].split('_');
			var date = fields[0];
			var time = (fields.length > 1) ? fields[1] : '';
			_append(date, time);
		};
	};

	install();
	load();
};

