/**
* HostCMS
*
* @author Hostmake LLC, http://www.hostcms.ru/
* @version 5
*/

// Проверка ячейки field
// field - проверяемый элемент
function FieldCheck(WindowId, field)
{
	WindowId = getWindowId(WindowId);

	if (typeof fieldType == 'undefined')
	{
		return false;
	}

	var value = $(field).val();
	var FiledId = $(field).attr('id');
	
	if (typeof fieldType[field.id] != 'undefined')
	{
		var message = '';

		// Проверка на минимальную длину
		if (fieldType[FiledId]['minlen']&& value.length < fieldType[FiledId]['minlen'])
		{
			var decl = declension(fieldType[FiledId]['minlen'], i18n['one_letter'], i18n['some_letter2'], i18n['some_letter1']);
			
			// Есть пользовательское сообщение
			if (fieldMessage[FiledId] && fieldMessage[FiledId]['minlen'])
			{
				message += fieldMessage[FiledId]['minlen'];
			}
			else // Стандартное сообщение
			{
				message += i18n['Minimum'] + ' ' + fieldType[FiledId]['minlen'] + ' ' + decl + '. ' + i18n['current_length'] + ' ' + value.length + '. ';
			}
		}

		// Проверка на максимальную длину
		if (fieldType[FiledId]['maxlen'] && value.length > fieldType[FiledId]['maxlen'])
		{
			var decl = declension(fieldType[FiledId]['maxlen'], i18n['one_letter'], i18n['some_letter2'], i18n['some_letter1']);
			
			// Есть пользовательское сообщение
			if (fieldMessage[FiledId] && fieldMessage[FiledId]['maxlen'])
			{
				message += fieldMessage[FiledId]['maxlen'];
			}
			else // Стандартное сообщение
			{
				message += i18n['Maximum'] + ' ' + fieldType[FiledId]['maxlen'] + ' ' + decl + '. ' + i18n['current_length'] + ' ' + value.length + '. ';
			}
		}

		// Проверка на регулярное выражение
		if (value.length > 0 && fieldType[FiledId]['reg'] && !value.match(fieldType[FiledId]['reg']))
		{
			// Есть пользовательское сообщение
			if (fieldMessage[FiledId] && fieldMessage[FiledId]['reg'])
			{
				message += fieldMessage[FiledId]['reg'];
			}
			else // Стандартное сообщение
			{
				message += i18n['wrong_value_format'] + ' ';
			}
		}

		// Проверка на соответствие значений 2-х полей
		if (fieldType[FiledId]['fieldEquality'])
		{
			// Пытаемся получить значение поля, которому должны соответствовать
			var jFiled2 = $("#"+WindowId+" #"+fieldType[FiledId]['fieldEquality']);
		
			if (jFiled2.length > 0
			// Сравниваем значение полей
			&& value != jFiled2.val())
			{
				// Есть пользовательское сообщение
				if (fieldMessage[FiledId] && fieldMessage[FiledId]['fieldEquality'])
				{
					message += fieldMessage[FiledId]['fieldEquality'];
				}
				else // Стандартное сообщение
				{
					message += i18n['different_fields_value'] + ' ';
				}
			}
		}

		FieldCheckShowError(WindowId, FiledId, message);
	}
}

function FieldCheckShowError(WindowId, FiledId, message)
{
	WindowId = getWindowId(WindowId);
	
	// Insert message into the message div
	$("#" + WindowId + " #"+FiledId + '_error').html(message);

	// Плучаем элемент формы, над которым ведется работа
	var ElementField = 	$("#" + WindowId + " #"+FiledId);

	if (ElementField.length > 0)
	{
		// Устанавливаем флаг несоответствия
		fieldsStatus[FiledId] = (message.length > 0);
		
		if (fieldsStatus[FiledId])
		{
			ElementField
				.css('border-style', 'solid')
				.css('border-width', '1px')
				.css('border-color', '#DB1905')
				.css('background-image', "url('/admin/images/bullet_red.gif')")
				.css('background-position', 'center right')
				.css('background-repeat', 'no-repeat');
		}
		else
		{
			ElementField
			.css('border-style', '')
			.css('border-width', '')
			.css('border-color', '')
			.css('background-image', "url('/admin/images/bullet_green.gif')")
			.css('background-position', 'center right')
			.css('background-repeat', 'no-repeat');
		}
	}

	// Отображать контрольные элементы
	var ControlElementsStatus = true;

	for (ItemIndex in fieldsStatus)
	{
		// если есть хоть одно несоответствие - выключаем управляющие элементы
		if (fieldsStatus[ItemIndex])
		{
			ControlElementsStatus = false;
			break;
		}
	}

	// Активируем-выключаем контрольные элементы формы
	SetControlElementsStatus(WindowId, ControlElementsStatus);
}

function CheckAllField(windowId, formId)
{
	windowId = getWindowId(windowId);

	$("#"+windowId+" #"+formId+" :input").each(function(){
		FieldCheck(windowId, this);
	});
}

/**
* Склонение после числительных
* int number числительное
* int nominative Именительный падеж
* int genitive_singular Родительный падеж, единственное число
* int genitive_plural Родительный падеж, множественное число
*/
function declension(number, nominative, genitive_singular, genitive_plural)
{
	var last_digit = number % 10;
	var last_two_digits = number % 100;
	
	if (last_digit == 1 && last_two_digits != 11)
	{
		var result = nominative;
	}
	else
	{
		if ((last_digit == 2 && last_two_digits != 12) || (last_digit == 3 && last_two_digits != 13) || (last_digit == 4 && last_two_digits != 14))
		{
			var result = genitive_singular;
		}
		else
		{
			var result = genitive_plural;
		}
	}
	
	return result;
}

/**
* Изменение видимости объекта
* str field_id Идентификатор объекта
*/
function SlideField(field_id)
{
	var oField = document.getElementById(field_id);
	
	if (oField != 'undefined')
	{
		if (oField.style.display == "none")
		{
			oField.style.display = "block";
		}
		else
		{
			oField.style.display = "none";
		}
	}
}