$.fn.extend({'LengthWatch': LengthWatch});

function LengthWatch( watchers, limit, display )
{
	var self = this;
	var m_limit = (limit !== undefined) ? limit : 0;
	
	display = (display == 'desc') ? 'desc' : 'asc';
	
	var setLimit;

	init();
	
	function init()
	{
		self.setLimit = setLimit;
		assignOnChange();
	}
	
	function assignOnChange()
	{
		switch(self.attr('tagName'))
		{
		case 'INPUT':
		case 'TEXTAREA':
			{
				watchChange();			
			}
			break;
		}
	}
	
	function watchChange(event)
	{
		var value = self.val();
		if(m_limit)
		{
			if(value.length > m_limit)
			{
				value = value.substring(0, m_limit);
				self.val(value);
				showAlert('Ограничение по длине', getMessageOnLimit());
			}
		}
		var displayValue = (display == 'desc' && m_limit) ? m_limit - value.length : value.length; 
		watchers.text('(' + displayValue + ')');
		setTimeout(watchChange, 500);
	}
	
	function getMessageOnLimit()
	{
		return 'Достигнут предел длины содержимого в ' + m_limit + ' символов.';
	}
	
	function setLimit(limit)
	{
		m_limit = limit;
	}
	
	return self;
}

