﻿(function($)
{
	$.fn.mail_row = function(options)
	{
		var	settings = $.extend(
		{
			id_prefix: 'mail-',
			marker_prefix: 'mark-',
			used_markers: [0, 4, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12],
			onClick: undefined,
			markerChanged: function(mail_id, mark_id) {}
		}, options);

		var marker_re = new RegExp(settings.marker_prefix + '([\\d]+)');

		this.each(function(k, v)
		{
			var row = $(v);
			var mail_id = row.attr('id').replace(settings.id_prefix, '')
			row.click(function(e)
			{
				if (settings.onClick) settings.onClick(mail_id);
			});

			$('.marker', row).mousedown(function(e)
			{
				e.stopPropagation();
				var marker = $('i', this);
				var classes = marker.attr('class');
				var mark_id = parseInt(marker_re.exec(classes)[1]);
				var new_id = settings.used_markers[0];
				$.each(settings.used_markers, function(i, m_id)
				{
					if (m_id == mark_id)
					{
						if (i >= settings.used_markers.length-1)
							new_id = settings.used_markers[0];
						else
							new_id = settings.used_markers[i+1];
						return false;
					}
				});
				marker.removeClass(settings.marker_prefix + mark_id);
				marker.addClass(settings.marker_prefix + new_id);
				if (settings.markerChanged)
					settings.markerChanged(mail_id, mark_id);
			}).click(function(e){e.stopPropagation();});

			$('input', row).click(function(e) {e.stopPropagation();});

		});

		return this;
	};

})(jQuery);
