
var filesCounter = 1
var filesMax = 5

var redirectIfAuth = top.location

function changeIndicator(self)
{
	$('li.selected', $(self).parent().parent()).removeClass('selected')
	$(self).parent().addClass('selected')
}

var SUBMIT_SETTINGS =
	{
		/** @type String класс индикатора неудачной валидации */
		FAIL_CLASS: 'fail',
		/** @type String класс индикатора успешной валидации */
		PASS_CLASS: 'pass',

		/** @type String класс элемента ввода, который провалил валидацию */
		FAIL_INPUT_CLASS: 'fail',

		SUBMITTER_IMAGE:
			{
				SENDING: '/img/buttons/loadingDisabled.gif',
				NORMAL: '/img/buttons/send/normal.gif',
				DISABLED: '/img/buttons/send/disabled.gif',
				HOVER: '/img/buttons/send/hover.gif'
			}
	}

/** @type Array ассоциативный массив флагов, какое поле прошло валидацию, а какое нет */
var validationStatus = new Array()

/** @type jQuery */
var formSubmitter

/** @type jQuery */
var vectorialLayoutInput

/** @type jQuery */
var previewInput

/** @type jQuery */
var nameInput

$(document).ready(
	function()
	{
		$('#mc-createNotLoggedInauth-link').click(
			function ()
			{
				modalLoginContent.select( 'mc-loginForm' )

				return false
			}
		)


		// показываем окошко логина, если пользователь не авторизован
		if ( typeof loggedIn != 'undefined' && !loggedIn )
		{
//			tb_show(null, '/create/notLoggedIn.html?KeepThis=true&amp;TB_iframe=true&amp;height=300&amp;width=600', null)
			tb_show(null, '/?TB_inline&height=300&width=600&inlineId=modal-loginForm&modal=true&showHandler=modalLoginContent.reset()', null)
		}

		if ( typeof showAddedDialog != 'undefined' )
		{
//			tb_show(null, '/create/added.html?KeepThis=true&amp;TB_iframe=true&amp;height=300&amp;width=600', null)
			tb_show(null, '/?TB_inline&height=300&width=600&inlineId=modal-designAdded&modal=true', null)
		}

		// переключалка "текст-файлы" для поля формы "прочее"
		$('#otherSubmitText').click(
			function ()
			{
				changeIndicator(this)
				$('#otherSubmitFilesContent').css('display', 'none')
				$('#otherSubmitTextContent').css('display', 'block')

				return false
			}
		)

		$('#otherSubmitFiles').click(
			function ()
			{
				changeIndicator(this)
				$('#otherSubmitTextContent').css('display', 'none')
				$('#otherSubmitFilesContent').css('display', 'block')

				return false
			}
		)

		// добавлялка контрола выбора файла для загрузки
		$('#addAnotherFile').css('outline', 'none')
		$('#addAnotherFile').click(
			function()
			{
				if ( filesCounter < filesMax )
				{
					$('<span style="display:block;width:100%;padding:3px 0"><input type="file" name="file" class="fileInput"/></span>').appendTo('#photoContainer')
					filesCounter++

					if ( filesCounter == filesMax )
					{
						$(this).css('display', 'none')

//						$(this).css('color', '#CCCCCC')
//						$(this).text('Можно добавить не более пяти файлов.')
					}
				}
				return false
			}
		)

		// подгружаём изображения для сабмиттера
		var imageLoader1 = new Image()
		imageLoader1.src = SUBMIT_SETTINGS.SUBMITTER_IMAGE.SENDING

		var imageLoader2 = new Image()
		imageLoader2.src = SUBMIT_SETTINGS.SUBMITTER_IMAGE.NORMAL

		var imageLoader3 = new Image()
		imageLoader3.src = SUBMIT_SETTINGS.SUBMITTER_IMAGE.HOVER

		formSubmitter = $('#formSubmitter')
		
		formSubmitter.hover(
			function()
			{
				$(this).attr('src', SUBMIT_SETTINGS.SUBMITTER_IMAGE.HOVER);
			},
			function()
			{
				$(this).attr('src', SUBMIT_SETTINGS.SUBMITTER_IMAGE.NORMAL);
			}
		)


		vectorialLayoutInput = $('#f_vectorialLayout')
		vectorialLayoutInput.change(function(){validateVectorialLayout()})
		vectorialLayoutInput.blur(function(){validateVectorialLayout()})
		vectorialLayoutInput.blur()

		previewInput = $('#f_preview')
		previewInput.change(function(){validatePreviewInput()})
		previewInput.blur(function(){validatePreviewInput()})
		previewInput.blur()

		nameInput = $('#f_name')
		nameInput.keyup(function(){validateNameInput()})
		nameInput.focus(function(){validateNameInput()})
		nameInput.blur(function(){validateNameInput()})
		nameInput.keyup()
		
		$('#submitForm').submit(function(){
			tb_show(null, '/?TB_inline&height=300&width=600&inlineId=modal-submitProgress&modal=true', null)
		});
	}
)


function validateNameInput()
{
	var name = nameInput.val()

	if ( typeof name == 'undefined' || name.length == 0 )
	{
		showRequiredIndicator('f_name', 'name')
	}
	else
	{
		showValidationIndicator('f_name', true, 'name')
	}
}


function validateVectorialLayout()
{
	var filename = vectorialLayoutInput.val()

	if ( typeof filename == 'undefined' || filename.length == 0 )
	{
		showRequiredIndicator('f_vectorialLayout', 'vectorialLayout')
	}
	else
	{
		showValidationIndicator('f_vectorialLayout', true, 'vectorialLayout')
	}
}

function validatePreviewInput()
{
	var filename = previewInput.val()

	if ( typeof filename == 'undefined' || filename.length == 0 )
	{
		showRequiredIndicator('f_preview', 'preview')
	}
	else
	{
		showValidationIndicator('f_preview',true,'preview')
	}
}

function setSubmitterEnabled( enabled )
{
	var srcValue
	if ( enabled )
	{
		srcValue = SUBMIT_SETTINGS.SUBMITTER_IMAGE.NORMAL
		formSubmitter.removeAttr('disabled')
	}
	else
	{
		srcValue = SUBMIT_SETTINGS.SUBMITTER_IMAGE.DISABLED
		formSubmitter.attr('disabled', 'disabled')
	}

	formSubmitter.attr('src', srcValue)
}

function showValidationIndicator(id, valid, validationStatusField)
{
	if ( valid )
	{
		showPassIndicator(id, validationStatusField)
	}
	else
	{
		showFailIndicator(id, validationStatusField)
	}
}

/**
 * показывает индикатор обязательного поля
 * для элемента с идентификатором id
 * @param {String} id идентификатор элемента, для которого показывается индикатор
 * @param {String} validationStatusField поля статуса валидации (используется для отключения кнопки отправки формы)
 */
function showRequiredIndicator(id, validationStatusField)
{
	updateValidationStatus(validationStatusField, false)

	/** @type HTMLElement */
	var indicatorElement = $('#v' + id)

	indicatorElement.removeClass(SUBMIT_SETTINGS.PASS_CLASS)
	indicatorElement.removeClass(SUBMIT_SETTINGS.FAIL_CLASS)
}

/**
 * показывает индикатор неудачной валидации
 * для элемента с идентификатором id
 * @param {String} id идентификатор элемента, для которого показывается индикатор
 * @param {String} validationStatusField поля статуса валидации (используется для отключения кнопки отправки формы)
 */
function showFailIndicator(id, validationStatusField)
{
	updateValidationStatus(validationStatusField, false)

	$('#' + id).addClass(SUBMIT_SETTINGS.FAIL_INPUT_CLASS)

	/** @type HTMLElement */
	var indicatorElement = $('#v' + id)

	indicatorElement.removeClass(SUBMIT_SETTINGS.PASS_CLASS)
	indicatorElement.addClass(SUBMIT_SETTINGS.FAIL_CLASS)
}

/**
 * показывает индикатор удачной валидации
 * для элемента с идентификатором id
 * @param {String} id идентификатор элемента, для которого показывается индикатор
 * @param {String} validationStatusField поля статуса валидации (используется для отключения кнопки отправки формы)
 */
function showPassIndicator(id, validationStatusField)
{
	updateValidationStatus(validationStatusField, true)

	$('#' + id).removeClass(SUBMIT_SETTINGS.FAIL_INPUT_CLASS)

	/** @type HTMLElement */
	var indicatorElement = $('#v' + id)

	indicatorElement.removeClass(SUBMIT_SETTINGS.FAIL_CLASS)
	indicatorElement.addClass(SUBMIT_SETTINGS.PASS_CLASS)
}

/**
 * изменяет состояние поля статуса валидации
 * @param {String} validationStatusField имя поле
 * @param {Bool} status true, если валидация пройдена, false иначе
 */
function updateValidationStatus(validationStatusField, status)
{
	validationStatus[validationStatusField] = status
	refreshSubmitDisabled()
}

/**
 * обновляет статус кнопок отправки формы регистрации - можно их нажимать, или нет
 */
function refreshSubmitDisabled()
{
	var enabled = (validationStatus['vectorialLayout'] && validationStatus['preview'] && validationStatus['name'])

	setSubmitterEnabled(enabled)
}
