jQuery.fn.movableLabel = function () {
	return this.each( function (index) {
		if ( this.htmlFor ) {
			label = jQuery ( this );
			input = jQuery ( '#' + this.htmlFor);
			
			if ( !input ) {
				return false;	
			}

			label.hide ();

			inputPosition = input.position();
			
			positionX = inputPosition.left;
			positionY = inputPosition.top;

			plusX = 0;
			plusY = 0;

			label.css({
				'position': 'absolute',
				'left':     positionX + plusX + 'px',
				'top':      positionY + plusY + 'px',
				'cursor':  'text'
			});
			input.focus(function(){
				label.hide();
			});
			
			input.blur(function(){
				if ( this.value == '')
					label.show();
			});
			
			label.click(function() {
				label.hide();
			});
			
			if ( input.val() == '')
				label.show();

		}
	} );
}

$(document).ready(
	function () {
		if ($("input.text-date").length > 0) {
			$("input.text-date").datepicker({showOn: 'button', buttonImage: '/img/new/common/calendar.gif', buttonImageOnly: true});
			$('#ui-datepicker-div').css({display: 'none'});
		}
		$('label.movable').movableLabel();
	}
	
);

function validateLicenses()
{
	var licenses = [];
	$("#license_errors").html('');
	
	//формируем массив данных по введённым лицениям
	for (var i = 0; i < document.main_fond_form.elements.length; i++)
	{
		if (document.main_fond_form.elements[i].name.substring(0, 11) == 'uk_license[')
		{
			var elm = document.main_fond_form.elements[i];
			var nameArr = elm.name.split('[');
			if (nameArr[1] == '{new}]')
			{
				continue;
			}
			else
			{
				var lic_id = nameArr[1].substring(0, nameArr[1].length - 1);
				if (!licenses[lic_id])
				{
					licenses[lic_id] = [];
					licenses[lic_id]['pauses'] = []
					licenses[lic_id]['id'] = lic_id;
				}
				if (nameArr.length == 3)
				{
					var lic_param = nameArr[2].substring(0, nameArr[2].length - 1);
					if (lic_param == 'unlimited' || lic_param == 'delete_license')
						licenses[lic_id][lic_param] = elm.checked;
					else
						licenses[lic_id][lic_param] = elm.value;
				}
				else if (nameArr[2] == 'pauses]' && nameArr[3] != '{newPause}]')
				{
					var pause_id = nameArr[3].substring(0, nameArr[3].length - 1);
					if (!licenses[lic_id]['pauses'][pause_id])
						licenses[lic_id]['pauses'][pause_id] = [];
					var pause_param = nameArr[4].substring(0, nameArr[4].length - 1);
					licenses[lic_id]['pauses'][pause_id][pause_param] = elm.value;
				}
			}
		}
	}
	
	//Сотрируем лицензии по дате выдачи
	var _licenses = []; 
	var _lic_keys = [];
	for (var license in licenses)
	{
		var date_start = parseInt(licenses[license]['date_start'].substring(6) + licenses[license]['date_start'].substring(3, 5) + licenses[license]['date_start'].substring(0, 2));
		_licenses[date_start] = licenses[license];
		_lic_keys.push(date_start);
	}
	var licenses = [];
	_lic_keys.sort( function (a, b) { return a - b } );
	
	for (var key in _lic_keys)
		licenses.push(_licenses[_lic_keys[key]]);
	
	// Валидация введённых данных
	var errorsString = '';

	for (var licn in licenses)
	{
		var license = licenses[licn];
		
		if (license['delete_license'] == true)
			continue;

		if ((license['status'] == 'active' || license['status'] == 'pause') && licn < (licenses.length - 1))
			errorsString += 'Статусы лицензий указаны некорректно (лицензия № ' + license['number'] + ').<br/>';

		if ((license['status'] == 'ended' || license['status'] == 'annul') && license['date_annul'] == '')
			errorsString += 'Дата аннулирования/истечения не указана (лицензия № ' + license['number'] + ').<br/>';

		var lic_start = dateToSortInt(license['date_start']);
		if (!license['unlimited'] && license['date_end'] != '' && license['date_end'] !='0000-00-00')
			var lic_end   = dateToSortInt(license['date_end']);
		else
			var lic_end   = 0;
		if (lic_end && lic_end < lic_start)
			errorsString += 'Срок действия меньше даты выдачи (лицензия № ' + license['number'] + '). Необходимо исправить ошибку<br/>';
		if (license['date_annul'] != '' && license['date_annul'] !='0000-00-00')
			var lic_annul = dateToSortInt(license['date_annul']);
		else
			var lic_annul = 0;

		if (lic_end && lic_annul && lic_annul < lic_end)
			lic_end = lic_annul;

		if (lic_annul && lic_annul < lic_start)
			errorsString += 'Дата аннулирования/истечения меньше даты выдачи (лицензия № ' + license['number'] + '). Необходимо исправить ошибку<br/>';

		var lic_pause_count = 0;
		for (var p in license['pauses'])
		{
			if (license['pauses'][p]['pause'] != '' && license['pauses'][p]['pause'] !='0000-00-00')
				var pause_start  = dateToSortInt(license['pauses'][p]['pause']);
			else
				var pause_start  = 0;
			if (license['pauses'][p]['reopen'] != '' && license['pauses'][p]['reopen'] !='0000-00-00')
				var pause_reopen = dateToSortInt(license['pauses'][p]['reopen']);
			else
				var pause_reopen = 0;
			if (pause_start && pause_reopen && pause_start > pause_reopen)
				errorsString += 'Дата приостановления больше даты возобновления (лицензия № ' + license['number'] + '). Необходимо исправить ошибку.<br/>';
			if ((pause_start && lic_end && pause_start > lic_end) || 
				(lic_end && pause_reopen &&pause_reopen > lic_end))
				errorsString += 'Дата приостановления и/или дата возобновления введены некорректно (лицензия № ' + license['number'] + '). Необходимо исправить ошибку.<br/>';
			if ((pause_start && lic_start && pause_start < lic_start) || 
				(pause_reopen && lic_start && pause_reopen < lic_start))
				errorsString += 'Дата приостановления и/или дата возобновления введены некорректно (лицензия № ' + license['number'] + '). Необходимо исправить ошибку.<br/>'

			if (pause_start) lic_pause_count++;
		}
		if (license['status'] == 'pause' && lic_pause_count == 0)
			errorsString += 'Добавьте приостановление лицензии (лицензия № ' + license['number'] + ').<br/>';
	}
	$("#license_errors").html(errorsString);
	return (errorsString.length > 0 ? false : true);
}

function dateToSortInt(dateString)
{
	if (dateString.length == 10)
		return parseInt(dateString.substring(6) + dateString.substring(3, 5) + dateString.substring(0, 2));
	else
		return false;
}

