function InterfaceNew() {

	// массив выделенных элементов среди жанров, стран
	this.aSelectEl = new Array();

	// массив id всех окон-шагов в интерфейсе
	this.aPanels = new Array();
	this.aPanels[this.aPanels.length] = 'panelLookup';
	this.aPanels[this.aPanels.length] = 'panelInfo';
	this.aPanels[this.aPanels.length] = 'panelConfirm';

	this.aFieldVal = new Array();
	this.aFieldVal['role'] = '';

	this.action = false;

	this.objectId = false;
	this.objectIdAdd = false;

	this.lookupTmst = 0;
	this.lookupTimeOut = 800; // при значениях больше 999, пересмотреть корректировку msec в методе GetCurrentMilliseconds();

	// миимум символов, при котором начинаем контекстный подбор
	this.inputLengthLookupStart = 2;

}

// сбрасываем переменные
InterfaceNew.prototype.ResetVars = function() {

	that = false;

	this.linkInterface = false;
	this.addDataType = false;
	this.oForUpdate = false;
	this.oInterface = false;
	this.ampluaId = false;

	// обнуляем массив выделенных элементов жанров, стран и снимаем подсветку
	this.aSelectEl = new Array();

	// обнуляем массив сохраненных значений полей
	this.aFieldVal['role'] = '';
}

// сбрасываем внешний вид
InterfaceNew.prototype.ResetVisuality = function() {

	// снимаем подсветку
	$('li', this.oInterface).each(function(i) {
		this.className = '';
	});

	// убираем думалку
	$('#inputLookup').removeClass('wait').addClass('pass').val('');

	this.ButtonsUnlock();

	$('#oFoundTotal').html('');
	$('#oLookupNext').hide('fast');
	$('#oResults').html('').hide('fast');

}

InterfaceNew.prototype.OpenAdd = function(oLink, interfaceId, forUpdateId, oParam) {

	this.action = 'add';
	return this.Open(oLink, interfaceId, forUpdateId, oParam);

}

InterfaceNew.prototype.OpenEdit = function(oLink, interfaceId, forUpdateId, oParam) {

	this.action = 'edit';
	return this.Open(oLink, interfaceId, forUpdateId, oParam);

}

// открываем интерфейс
InterfaceNew.prototype.Open = function(oLink, interfaceId, forUpdateId, oParam) {

	this.ResetVars();

	that = this;

	if(!oParam)
		var oParam  = {};

	this.linkInterface = oLink;
	this.addDataType = interfaceId;
	this.oForUpdate = $('#' + forUpdateId).get(0);		// контейнер, который должен обновится после this.Post()
	this.oInterface = $('#' + interfaceId).get(0);		// контейнер с интерфейсом

	this.ResetVisuality();

	// закрываем все открытые интерфейсы, кроме текущего
	$('.interface').not(this.oInterface).fadeOut("slow");

	// Позиционирование
	if(this.linkInterface) {
		var x = FindPosX(this.linkInterface) - 10;
		var y = FindPosY(this.linkInterface) - 5;
		this.oInterface.style.left = x + 'px';
		this.oInterface.style.top = y + 'px';
	}

	// для интерфейса авторизации (учитываем правостороннесть и меняем текст внутри интерфейса)
	if(this.addDataType == 'authInterface') {

		if(oParam.authAction == 'add_review')
			$('#authInterfaceText').html('<P>Для того, чтобы написать отзыв к фильму, вам нужно <A href=\"http://ilovecinema.ru/registration/\">зарегистрироваться</A>.&nbsp;Если вы уже зарегистрированы, пожалуйста, введите ваш логин и пароль.</P>');
		else if(oParam.authAction == 'add_message')
			$('#authInterfaceText').html('<P>Для того, чтобы написать сообщение в блог, вам нужно <A href=\"http://ilovecinema.ru/registration/\">зарегистрироваться</A>.&nbsp;Если вы уже зарегистрированы, пожалуйста, введите ваш логин и пароль.</P>');
		else if(oParam.authAction == 'add_object_info')
			$('#authInterfaceText').html('<P>Для того, чтобы добавить на сайт новую информацию, вам нужно <A href=\"http://ilovecinema.ru/registration/\">зарегистрироваться</A>.&nbsp;Если вы уже зарегистрированы, пожалуйста, введите ваш логин и пароль.</P>');
		else if(oParam.authAction == 'add_comment')
			$('#authInterfaceText').html('<P>Для того, чтобы написать коментарий, вам нужно <A href=\"http://ilovecinema.ru/registration/\">зарегистрироваться</A>.&nbsp;Если вы уже зарегистрированы, пожалуйста, введите ваш логин и пароль.</P>');
		else if(oParam.authAction == 'change_attitude')
			$('#authInterfaceText').html('<P>Для того, чтобы выразить свое отношение, вам нужно <A href=\"http://ilovecinema.ru/registration/\">зарегистрироваться</A>. Если вы уже зарегистрированы, пожалуйста, введите ваш логин и пароль.</P>');
		else
			$('#authInterfaceText').html('<P>Если вы уже зарегистрированы, пожалуйста, введите ваш логин и пароль. Если нет — <A href=\"/registration/\">зарегистрируйтесь</A>.</P>');

	}

	if(oParam.direction == 'right') {
		if($(this.linkInterface).is("img"))
			this.oInterface.style.left = x - (332 - this.linkInterface.width) + 'px';
		else
			this.oInterface.style.left = x - 290 + 'px';
	}

	this.Attach();
	this.ButtonsUnlock();
	this.WriteNotices();

	$(this.oInterface).show(0);

	// не для поиска фильмов в отзыве
	if(this.addDataType != 'film2review') {
		this.AddClickOutListeners();
		this.ToggleBanner('hide');
	}

	// задаем амплуа по умолчанию
	if(oParam.ampluaId)
		this.ampluaId = oParam.ampluaId;

	// задаем айдишники объектов
	if(this.addDataType.match(/2film$/)) {
		this.objectId = oParam.filmId ? oParam.filmId : false;
	} else if(this.addDataType.match(/2person$/)) {
		this.objectId = oParam.personId ? oParam.personId : false;
	}

	if(this.addDataType.match(/^film2/)) {
		this.objectIdAdd = oParam.filmId ? oParam.filmId : false;
	} else if(this.addDataType.match(/^person2/)) {
		this.objectIdAdd = oParam.personId ? oParam.personId : false;
	}

	if(oParam.xml)
		var xml = this.ParseXMLFromStr(oParam.xml);

	// открываем первую панель многопанельного интерфейса для поиска
	if(this.addDataType == 'person2film' || this.addDataType == 'film2person' || this.addDataType == 'object2post' || this.addDataType == 'film2review') {

		this.objectIdAdd ? this.OpenFormInfo(xml) : this.OpenPanel('panelLookup');

	} else {

		if($('input:text', this.oInterface).length)
			$('input:text', this.oInterface).focus();

		if($('textarea', this.oInterface).length)
			$('textarea', this.oInterface).focus();

		// если передан xml, то заполняем поля интерфейса
		if(xml)
			this.FillInfoFields(xml);
	}

	return false;
}

// пишем в интерфейсе нужные надписи
InterfaceNew.prototype.WriteNotices = function() {

	var intefaceTitle = '';

	if(this.action == 'edit') {

		if(this.addDataType == 'person2film') {
			intefaceTitle = 'редактирование связи фильма и персоны';
		} else if(this.addDataType == 'film2person') {
			intefaceTitle = 'редактирование связи персоны и фильма';
		} else if(this.addDataType == 'text2film') {
			intefaceTitle = 'редактирование информации о фильме';
		} else if(this.addDataType == 'text2person') {
			intefaceTitle = 'редактирование информации о персоне';
		}

		// меняем кнопки управления вторым экраном
		var erwe = $('#backButton', this.oInterface);
		$('#backButton', this.oInterface).hide(0);
		$('#submitButton', this.oInterface).addClass('left').val('Сохранить');
		$('#panelInfo span.links', this.oInterface).show(0);

	} else if(this.action == 'add') {

		// определяем надписи в интерфейсе
		if(this.addDataType == 'person2film') {
			intefaceTitle = 'добавление персоны';
			$('#panelLookup > p.text_form').html('Введите имя и фамилию персоны:');
			$('#panelConfirm > a.link').text('Нет, я добавляю другую персону');
		} else if(this.addDataType == 'film2person') {
			intefaceTitle = 'добавление фильма';
			$('#panelLookup > p.text_form').html('Введите название фильма:');
			$('#panelConfirm > a.link').text('Нет, я добавляю другой фильм');
		} else if(this.addDataType == 'text2film') {
			intefaceTitle = 'информация о фильме';
		} else if(this.addDataType == 'text2person') {
			intefaceTitle = 'информация о персоне';
		} else if(this.addDataType == 'object2post') {
			intefaceTitle = 'добавление привязки';
		} else if(this.addDataType == 'film2review') {
			intefaceTitle = 'добавление фильма';
		}

		// меняем кнопки управления вторым экраном
		$('#backButton', this.oInterface).show(0);
		$('#submitButton', this.oInterface).removeClass('left').val('Добавить');
		$('#panelInfo span.links', this.oInterface).hide(0);

	}

	if(this.oInterface.id == 'authInterface')
		intefaceTitle = 'авторизация';

	if(intefaceTitle)
		$('h3', this.oInterface).html(intefaceTitle.toUpperCase());

	return false;
}

// парсим переданную строчку с xml в xml-объект
InterfaceNew.prototype.ParseXMLFromStr = function(str) {

	str = str.replace('&','');

	if($.browser.msie) {
		// создаем понятный для IE xml и потом удаляем его после того, как взяли всё, что нужно
		$(this.oInterface).after('<xml id="tempXML">' + str + '</xml>');
		var xml = tempXML.XMLDocument.documentElement;
	} else {
		var parser = new DOMParser();
		var xml = parser.parseFromString(str, "text/xml");
		xml = $(this.GetXmlItemName(), xml);
	}

	return xml;
}

// закрываем интерфейсное окно this.obj
InterfaceNew.prototype.Hide = function(obj) {

	if(!obj && this.oInterface)
		var obj = this.oInterface;

	if(!obj)
		return false;

	$(obj).hide('fast');

	this.RemoveClickOutListeners();

	this.ToggleBanner('show');

	return false;

}

// скрываем или показываем баннер
InterfaceNew.prototype.ToggleBanner = function(action) {

	if(this.addDataType.match(/^(person2film|authInterface)$/))
		$('#ad2').css('visibility', action == 'hide' ? 'hidden' : 'visible');

}

// добавляем обработчики кликов
InterfaceNew.prototype.AddClickOutListeners = function() {

	if(document.addEventListener)
		document.addEventListener('click', this.ClickOuter, false);
	else if (document.attachEvent)
		document.attachEvent('onclick', this.ClickOuter);

}

// убираем обработчик кликов
InterfaceNew.prototype.RemoveClickOutListeners = function() {

	if(document.removeEventListener)
		document.removeEventListener('click', this.ClickOuter, false);
	else if (document.detachEvent)
		document.detachEvent('onclick', this.ClickOuter);

}

// обработчик клика, когда интерфейс открыт
InterfaceNew.prototype.ClickOuter = function(e) {

	var el = e.target ? e.target : event.srcElement;

	// если ссылка внутри интерфейса - всегда false
	if($(el).is('a') && $(el, oInterface.oInterface).length)
		return false;

	if($.browser.safari)
		return;

	// кликнули внутри интерфейса или на ссылку открывающую его?
	while(el) {
		// кликнули внутри интерфейса? возвращаем true, чтобы в IE элемент в интерфейсе сработал
		if(el == oInterface.oInterface)
			return true;
		// кликнули внутри на ссылку открывающую его? возвращаем false, чтобы в IE href на сработал
		if(el == oInterface.linkInterface)
			return false;
		el = el.parentNode;
	}

	oInterface.Hide(oInterface.oInterface);

	return false;

}

// открываем нужную панель многопанельного интерфейса
InterfaceNew.prototype.OpenPanel = function(panelId) {

	$.each(this.aPanels, function(i, id) {
		$('#' + id).css("display", id == panelId ? 'block' : 'none');
	});

	if(panelId == 'panelLookup')
		$('#inputLookup').focus();

	return true;
}

// назначаем обработчики событий элементам
InterfaceNew.prototype.Attach = function() {

	var m = false;

	if(this.addDataType == 'person2film' || this.addDataType == 'film2person' || this.addDataType == 'film2review' || this.addDataType == 'object2post' || this.addDataType == 'film2review') {

		$('#oResults').click(this.ClickLookupResult);
		$('#oConfirmResults').click(this.ClickLookupResult);

		$('#inputLookup').keyup(this.Lookup);
		$('#inputLookup').keydown(this.Navigate);

	} else if(m = /^(takings_russian|takings_full|budget|long)2film$/.exec(this.addDataType)) {

		$('#' + m[1]).keyup(CheckDigitalField);

	}

	// вешаем отправку на enter
	if(this.addDataType.match(/^(authInterface|(takings_russian|takings_full|budget|long)2film)$/)) {
		$('input, textarea', this.oInterface).keydown(this.Navigate);
	}
}

InterfaceNew.prototype.ShowEditRoleIco = function(oTd) {

	var oSecond = $(oTd).attr('class').match(/name/) ? $(oTd).prev() : $(oTd).next();
	$(oTd).add(oSecond).addClass('edit');

	$('div', oTd).slice(0,1).show();
	return false;
}

InterfaceNew.prototype.HideEditRoleIco = function(oTd) {

	var oSecond = $(oTd).attr('class').match(/name/) ? $(oTd).prev() : $(oTd).next();
	$(oTd).add(oSecond).removeClass('edit');

	$('div', oTd).slice(0,1).hide();
	return false;
}

// обработчик нажатий кнопок внутри интерфейсов
InterfaceNew.prototype.Navigate = function(e) {

	e = e ? e : event;

	var keyCode = e.keyCode;

	// вверх или вниз
	if(keyCode == 38 || keyCode == 40) {
		oInterface.SelectLookupItem(keyCode == 38 ? 1 : -1);

	// enter
	} else if(keyCode == 13) {

		if(oInterface.addDataType == 'film2review') {
			$('a.select', $('#oResults')).click(oInterface.ClickLookupResult).click();
			return false;
		} else if(oInterface.addDataType == 'object2post') {
			$('a.select', $('#oResults')).click(oInterface.ClickLookupResult).click();
			return false;
		} else if(oInterface.addDataType == 'film2person' || oInterface.addDataType == 'person2film' || oInterface.addDataType == 'object2blog') {
			$('a.select', $('#oResults')).click(oInterface.ClickLookupResult).click();
			return false;
		} else {
			// нажимаем submit кнопку
			$('#submitButton', oInterface.oInterface).click();
		}

	}

	return true;
}

// выделение строчки в результатах поиска
InterfaceNew.prototype.SelectLookupItem = function(direction) {

	var oResults = $('#oResults')[0];

	var resultsLength = $('a', oResults).length;
	var resultSelect = $('a', oResults).index($('a.select', oResults)[0]);

	// верх
	if(direction == 1) {
		(resultSelect - 1 >= 0) ? --resultSelect : resultSelect = resultsLength - 1;
	// вниз
	} else if(direction == -1) {
		(resultSelect + 1) <= (resultsLength - 1) ? ++resultSelect : resultSelect = 0;
	}

	// выставляем выделенность строки
	$('a.select', oResults).removeClass('select');

	var oResultSelect = $('a', oResults).get(resultSelect);
	oResultSelect.className = 'select';

	// опускаем или поднимаем скролл в результатах
	$(oResults)[0].scrollTop = oResultSelect.offsetTop > 75 ? oResultSelect.offsetTop - 75 : 0;

//	console.log($(oResults)[0].scrollTop);
//	console.log(oResultSelect.offsetTop);

	return false;

}

// генерит строку из MMSSMsMs для сравнения, indent - отступ от текущего времени в ms
InterfaceNew.prototype.GetCurrentMilliseconds = function(indent) {

	var time = new Date();

	var sec = time.getSeconds().toString();
	var msec = time.getMilliseconds().toString();

	if(indent) {
		msec = msec - indent;
		if(msec < 0) {
			msec = 999 + msec;
			sec--;
		}
	}

	sec = sec.length < 2 ? '0' + sec : sec;
	msec = msec.length < 2 ? '0' + msec : msec;
	msec = msec.length < 3 ? '0' + msec : msec;

	var tmst = time.getMinutes() + sec + msec;

	return tmst;
}

// выполняем контекстный подбор
InterfaceNew.prototype.Lookup = function() {

	// сохраняем время запроса поиска
	oInterface.lookupTmstSave = oInterface.GetCurrentMilliseconds();

	var iLookup = $('#inputLookup').get(0);

	if(iLookup.value == iLookup.getAttribute('oldvalue'))
		return false;

	iLookup.setAttribute('oldvalue', iLookup.value);

	if(iLookup.value.length <= oInterface.inputLengthLookupStart) {
		$('#oLookupNext').hide('fast');
		$('#oResults').hide('fast');
		return false;;
	}

	if(oInterface.addDataType == 'person2film') {
		var script = '/php/person.php';
		var params = {action: 'lookup'};
	} else if(oInterface.addDataType.match(/^film/)) {

		var script = '/php/film.php';
		var params = {action: 'lookup'};
	} else if(oInterface.addDataType == 'object2post') {
		var script = '/php/tagcontrol.phtml';
		var params = {_action: 'LookupTags', with_objects : 'true', new_interface : 'true'};
	}

	params = jQuery.extend(params, {q: iLookup.value.toLowerCase()});

	oInterface.LookupAjaxSettings = {
		type: 'POST',
		url: script,
		dataType: 'xml',
		data: params,
		success: oInterface.ShowLookupResults
	};

	setTimeout(function() {

		// сверяем, что кол-во символов в поисковой строке всё еще такое же
		if(this.oInterface.LookupAjaxSettings.data.q && this.oInterface.LookupAjaxSettings.data.q.length == $('#inputLookup').val().length) {

			// сравниваем сохраненное время запроса с рассчитанным
			this.oInterface.lookupTmst = this.oInterface.GetCurrentMilliseconds(-this.oInterface.lookupTimeOut);

			if(this.oInterface.lookupTmst >= this.oInterface.lookupTmstSave) {

				// включаем думалку
				$('#inputLookup').removeClass('pass').addClass('wait');

				// отправляем запрос
				$.ajax(this.oInterface.LookupAjaxSettings);
			}
		}

	}, oInterface.lookupTimeOut);

	return false;

}

// отображаем результаты контекстного поиска
InterfaceNew.prototype.ShowLookupResults = function(xml) {

	oInterface.lookupXML = xml;

	// сверяем кол-во символов запроса в строке с запросом, ответ на который пришёл
	if($('query', xml).text().length != jQuery.trim($('#inputLookup').val()).length)
		return false;

	// убираем думалку
	$('#inputLookup').removeClass('wait').addClass('pass');

	var xmlLength = $('count', xml).text().toString();

	$('#oFoundTotal', oInterface.oInterface).html(xmlLength);
	$('#oLookupNext', oInterface.oInterface).show('fast');

	if(xmlLength == 0) {
		$('#oResults').text('').hide('fast');
		return false;
	} else {
		$('#oResults').show('fast');
	}


	$('#oResults').html(oInterface.GetStrLookupResults(xml));


   	return false;
}

// возвращаем имя тага-итема в xml-ответе
InterfaceNew.prototype.GetXmlItemName = function() {

	if(this.addDataType.match(/^person/))
		return 'person';
	else if(this.addDataType.match(/^film/))
		return 'film';
	else if(this.addDataType.match(/2film$/))
		return 'film';
	else if(this.addDataType=='object2post')
		return 'film,person';
	else
		return 'item';
}

// преобразуем полученный xml в строчку
InterfaceNew.prototype.GetStrLookupResults = function() {

	var xml = oInterface.lookupXML;
	var str = '';

	$(oInterface.GetXmlItemName(), xml).each(function(i) {

		var id = $('_id', this).text();

		if(oInterface.addDataType.match(/^person/)) {

			var rusname = $('rus_name', this).text();
			var ruslastname = $('rus_lastname', this).text();
			var rus = rusname + (rusname && ruslastname ? ' ' : '') + ruslastname;

			var engname = $('eng_name', this).text();
			var englastname = $('eng_lastname', this).text();
			var eng = engname + (engname && englastname ? ' ' : '') + englastname;

		} else if(oInterface.addDataType.match(/^film/)) {

			var rus = $('rus_name', this).text();
			var eng = $('eng_name', this).text();

		} else if(oInterface.addDataType == 'object2post') {

			var rusname = $('rus_name', this).text();
			var ruslastname = $('rus_lastname', this).text();
			var rus = rusname + (rusname && ruslastname ? ' ' : '') + ruslastname;

			var engname = $('eng_name', this).text();
			var englastname = $('eng_lastname', this).text();
			var eng = engname + (engname && englastname ? ' ' : '') + englastname;
		}

		var year = $('year', this).text();
		year = year ? ' (' + year + ')' : '';

		if(eng)
			eng = ' - ' + eng;

		str += '<a href="#" onclick="return false;" id="item' + id + '">' + rus + eng + year + '</a>';

	});

	var more = $('more', xml).text();
	if(more)
		str += '<span>' + more + '</span>';

	return str;

}

InterfaceNew.prototype.RemoveObject = function(id,el) {
	$("#object"+id).remove();
	oInterface.ChangeEditById(id, el, 'remove');
}


// выделяем жанр, страну, язык в интерфейсе
InterfaceNew.prototype.ChangeEditById = function(id, inputId, action) {
	var ids = $("#"+inputId).val();

	if (ids!='') {
		var idarray = ids.split(",");
	} else {
		var idarray = new Array();
	}

	var idarray2 = new Array();

	if (action == "add") {

		for(var i=0; i < idarray.length; ++i) {
			if(idarray[i] == id) { return false; }
		}

		idarray.push(id);
		$("#"+inputId).val(idarray.join(','));
	}

	if (action == "remove") {

		for(var i=0; i < idarray.length; ++i) {
			if(idarray[i] != id) { idarray2.push(idarray[i]); }
		}


		$("#"+inputId).val(idarray2.join(','));

	}

}

// выбираем результат поиска
InterfaceNew.prototype.ClickLookupResult = function(e) {

	var srcEl = e ? e.target : event.srcElement;

	var items = $(oInterface.GetXmlItemName(), oInterface.lookupXML);
	var xmlItem = false;

	// ищем нужный xmlItem среди oInterface.lookupXML
	for(var i=0; i < items.length; ++i) {
		if(srcEl.id == 'item' + $('_id', items[i]).text()) {
			xmlItem = items[i];
			break;
		}
	}

	if(!xmlItem)
		return false;

	if(oInterface.addDataType == 'object2post') {
		var id = $('_id', xmlItem).text();
		var name = $('rus_name', xmlItem).text() +" "+ $('rus_lastname', xmlItem).text();
		$("#add_object2post").append("<li class=\""+xmlItem.tagName+"\" id=\"object"+id+"\"><a href='#' onClick=\"return oInterface.RemoveObject("+id+",'objects');\">"+name+"</a></li>");
		oInterface.ChangeEditById(id,'objects','add');
		oInterface.Hide();
	}

	if(oInterface.addDataType == 'person2film' || oInterface.addDataType == 'film2person') {
		oInterface.OpenFormInfo(xmlItem);

	} else if(oInterface.addDataType == 'film2review') {
		oItemsReview.ReviewSelectFilm(xmlItem);
	}

	return false;
}


// показываем второй экран
InterfaceNew.prototype.OpenFormInfo = function(xmlItem) {

	// если мы переходим с панели подтверждения, то не надо обнулять
	if($('#panelConfirm').css('display') != 'block')
		this.ResetInfoPanel();

	this.OpenPanel('panelInfo');

	this.FillInfoFields(xmlItem);

	return false;

}

// обнуляем второй экран
InterfaceNew.prototype.ResetInfoPanel = function() {

	var aFields = new Array();

	// обнуляем таблицу
	$('#objectInfo > tbody', this.oInterface).html('');

	if(this.addDataType == 'person2film') {

		aFields[aFields.length] = {id: 'eng_name',		type: 'text', name: 'Имя на английском'};
		aFields[aFields.length] = {id: 'eng_lastname',	type: 'text', name: 'Фамилия на английском'};
		aFields[aFields.length] = {id: 'rus_name',		type: 'text', name: 'Имя на русском'};
		aFields[aFields.length] = {id: 'rus_lastname',	type: 'text', name: 'Фамилия на русском'};
		aFields[aFields.length] = {id: 'year',			type: 'select', name: 'Год рождения'};

		$('#person_id', this.oInterface).val('');

	} else if(this.addDataType == 'film2person') {

		aFields[aFields.length] = {id: 'eng_name',		type: 'text', name: 'Название на английском'};
		aFields[aFields.length] = {id: 'rus_name',		type: 'text', name: 'Название на русском'};
		aFields[aFields.length] = {id: 'year',			type: 'select', name: 'Год выпуска'};

		$('#film_id', this.oInterface).val('');

	}

	this.BuildInfoTable(aFields);
	this.BuildSelectYear();

	this.AddAmplua();

}

// создаем еще одну строчку с амплуа
InterfaceNew.prototype.AddAmplua = function() {

	var ampluaCount = 1;

	// получаем порядковый номер последнего амплуа
	while($('#amplua_id' + ampluaCount).length)
		++ampluaCount;

	var aFields = new Array();
	aFields[0] = {id: 'amplua' + ampluaCount, type: 'select', name: 'Амплуа ' + (ampluaCount != 1 ? ampluaCount : '')};

	this.BuildInfoTable(aFields);

	// наполняем новый tr select'ом
	$('#cell_amplua' + ampluaCount).html('<input type="hidden" id="amplua_id' + ampluaCount + '" value=""><select id="amplua' + ampluaCount + '" class="text" onchange="oInterface.OnChangeAmplua(this);"></select>');

	this.BuildSelectAmplua($('#amplua' + ampluaCount).get(0));

	$('#amplua' + ampluaCount).val((this.ampluaId && ampluaCount == 1) ? this.ampluaId : '');

	this.OnChangeAmplua($('#amplua' + ampluaCount).get(0));

	return false;
}

// убираем или создаем строку роли для изменившегося амплуа
InterfaceNew.prototype.OnChangeAmplua = function(oSelect) {

	if(!oSelect)
		return false;

	var position = oSelect.id.replace('amplua','');
	var aFields = new Array();

	// выбрали актера и строчки роли пока нет? делаем её
	if(oSelect.value == 63 && $('#role').length == 0) {
		aFields[aFields.length] = {id: 'role', type: 'text', name: 'В этом фильме'};
		oInterface.BuildInfoTable(aFields, 'line_amplua' + position);
		$('#role').val(oInterface.aFieldVal['role']).change(function() {
			oInterface.aFieldVal['role'] = this.value;
		});
	}

	oInterface.RecalcAccessibleAmplua();

	return false;
}

// строим option для selecta года
InterfaceNew.prototype.BuildSelectYear = function() {

	$('#cell_year', this.oInterface).html('<select id="year" class="text"></select>');

	if(this.addDataType == 'person2film') {
		$('#year', this.oInterface).html('<option value="-">Неизвестно</option><option value="2015">2015</option><option value="2014">2014</option><option value="2013">2013</option><option value="2012">2012</option><option value="2011">2011</option><option value="2010">2010</option><option value="2009">2009</option><option value="2008">2008</option><option value="2007">2007</option><option value="2006">2006</option><option value="2005">2005</option><option value="2004">2004</option><option value="2003">2003</option><option value="2002">2002</option><option value="2001">2001</option><option value="2000">2000</option><option value="1999">1999</option><option value="1998">1998</option><option value="1997">1997</option><option value="1996">1996</option><option value="1995">1995</option><option value="1994">1994</option><option value="1993">1993</option><option value="1992">1992</option><option value="1991">1991</option><option value="1990">1990</option><option value="1989">1989</option><option value="1988">1988</option><option value="1987">1987</option><option value="1986">1986</option><option value="1985">1985</option><option value="1984">1984</option><option value="1983">1983</option><option value="1982">1982</option><option value="1981">1981</option><option value="1980">1980</option><option value="1979">1979</option><option value="1978">1978</option><option value="1977">1977</option><option value="1976">1976</option><option value="1975">1975</option><option value="1974">1974</option><option value="1973">1973</option><option value="1972">1972</option><option value="1971">1971</option><option value="1970">1970</option><option value="1969">1969</option><option value="1968">1968</option><option value="1967">1967</option><option value="1966">1966</option><option value="1965">1965</option><option value="1964">1964</option><option value="1963">1963</option><option value="1962">1962</option><option value="1961">1961</option><option value="1960">1960</option><option value="1959">1959</option><option value="1958">1958</option><option value="1957">1957</option><option value="1956">1956</option><option value="1955">1955</option><option value="1954">1954</option><option value="1953">1953</option><option value="1952">1952</option><option value="1951">1951</option><option value="1950">1950</option><option value="1949">1949</option><option value="1948">1948</option><option value="1947">1947</option><option value="1946">1946</option><option value="1945">1945</option><option value="1944">1944</option><option value="1943">1943</option><option value="1942">1942</option><option value="1941">1941</option><option value="1940">1940</option><option value="1939">1939</option><option value="1938">1938</option><option value="1937">1937</option><option value="1936">1936</option><option value="1935">1935</option><option value="1934">1934</option><option value="1933">1933</option><option value="1932">1932</option><option value="1931">1931</option><option value="1930">1930</option><option value="1929">1929</option><option value="1928">1928</option><option value="1927">1927</option><option value="1926">1926</option><option value="1925">1925</option><option value="1924">1924</option><option value="1923">1923</option><option value="1922">1922</option><option value="1921">1921</option><option value="1920">1920</option><option value="1919">1919</option><option value="1918">1918</option><option value="1917">1917</option><option value="1916">1916</option><option value="1915">1915</option><option value="1914">1914</option><option value="1913">1913</option><option value="1912">1912</option><option value="1911">1911</option><option value="1910">1910</option><option value="1909">1909</option><option value="1908">1908</option><option value="1907">1907</option><option value="1906">1906</option><option value="1905">1905</option><option value="1904">1904</option><option value="1903">1903</option><option value="1902">1902</option><option value="1901">1901</option><option value="1900">1900</option><option value="1899">1899</option><option value="1898">1898</option><option value="1897">1897</option><option value="1896">1896</option><option value="1895">1895</option><option value="1894">1894</option><option value="1893">1893</option><option value="1892">1892</option><option value="1891">1891</option><option value="1890">1890</option><option value="1889">1889</option><option value="1888">1888</option><option value="1887">1887</option><option value="1886">1886</option><option value="1885">1885</option><option value="1884">1884</option><option value="1883">1883</option><option value="1882">1882</option><option value="1881">1881</option><option value="1880">1880</option><option value="1879">1879</option><option value="1878">1878</option><option value="1877">1877</option><option value="1876">1876</option><option value="1875">1875</option><option value="1874">1874</option><option value="1873">1873</option><option value="1872">1872</option><option value="1871">1871</option><option value="1870">1870</option><option value="1869">1869</option><option value="1868">1868</option><option value="1867">1867</option><option value="1866">1866</option><option value="1865">1865</option><option value="1864">1864</option><option value="1863">1863</option><option value="1862">1862</option><option value="1861">1861</option><option value="1860">1860</option><option value="1859">1859</option><option value="1858">1858</option><option value="1857">1857</option><option value="1856">1856</option><option value="1855">1855</option><option value="1854">1854</option><option value="1853">1853</option><option value="1852">1852</option><option value="1851">1851</option><option value="1850">1850</option><option value="1849">1849</option><option value="1848">1848</option><option value="1847">1847</option>');
		$('#year', this.oInterface).val('-');
	} else if(this.addDataType == 'film2person') {
		$('#year', this.oInterface).html('<option value="">Укажите</option><option value="2015">2015</option><option value="2014">2014</option><option value="2013">2013</option><option value="2012">2012</option><option value="2011">2011</option><option value="2010">2010</option><option value="2009">2009</option><option value="2008">2008</option><option value="2007">2007</option><option value="2006">2006</option><option value="2005">2005</option><option value="2004">2004</option><option value="2003">2003</option><option value="2002">2002</option><option value="2001">2001</option><option value="2000">2000</option><option value="1999">1999</option><option value="1998">1998</option><option value="1997">1997</option><option value="1996">1996</option><option value="1995">1995</option><option value="1994">1994</option><option value="1993">1993</option><option value="1992">1992</option><option value="1991">1991</option><option value="1990">1990</option><option value="1989">1989</option><option value="1988">1988</option><option value="1987">1987</option><option value="1986">1986</option><option value="1985">1985</option><option value="1984">1984</option><option value="1983">1983</option><option value="1982">1982</option><option value="1981">1981</option><option value="1980">1980</option><option value="1979">1979</option><option value="1978">1978</option><option value="1977">1977</option><option value="1976">1976</option><option value="1975">1975</option><option value="1974">1974</option><option value="1973">1973</option><option value="1972">1972</option><option value="1971">1971</option><option value="1970">1970</option><option value="1969">1969</option><option value="1968">1968</option><option value="1967">1967</option><option value="1966">1966</option><option value="1965">1965</option><option value="1964">1964</option><option value="1963">1963</option><option value="1962">1962</option><option value="1961">1961</option><option value="1960">1960</option><option value="1959">1959</option><option value="1958">1958</option><option value="1957">1957</option><option value="1956">1956</option><option value="1955">1955</option><option value="1954">1954</option><option value="1953">1953</option><option value="1952">1952</option><option value="1951">1951</option><option value="1950">1950</option><option value="1949">1949</option><option value="1948">1948</option><option value="1947">1947</option><option value="1946">1946</option><option value="1945">1945</option><option value="1944">1944</option><option value="1943">1943</option><option value="1942">1942</option><option value="1941">1941</option><option value="1940">1940</option><option value="1939">1939</option><option value="1938">1938</option><option value="1937">1937</option><option value="1936">1936</option><option value="1935">1935</option><option value="1934">1934</option><option value="1933">1933</option><option value="1932">1932</option><option value="1931">1931</option><option value="1930">1930</option><option value="1929">1929</option><option value="1928">1928</option><option value="1927">1927</option><option value="1926">1926</option><option value="1925">1925</option><option value="1924">1924</option><option value="1923">1923</option><option value="1922">1922</option><option value="1921">1921</option><option value="1920">1920</option><option value="1919">1919</option><option value="1918">1918</option><option value="1917">1917</option><option value="1916">1916</option><option value="1915">1915</option><option value="1914">1914</option><option value="1913">1913</option><option value="1912">1912</option><option value="1911">1911</option><option value="1910">1910</option><option value="1909">1909</option><option value="1908">1908</option><option value="1907">1907</option><option value="1906">1906</option><option value="1905">1905</option><option value="1904">1904</option><option value="1903">1903</option><option value="1902">1902</option><option value="1901">1901</option><option value="1900">1900</option><option value="1899">1899</option><option value="1898">1898</option><option value="1897">1897</option><option value="1896">1896</option><option value="1895">1895</option><option value="1894">1894</option><option value="1893">1893</option><option value="1892">1892</option><option value="1891">1891</option><option value="1890">1890</option><option value="1889">1889</option><option value="1888">1888</option><option value="1887">1887</option><option value="1886">1886</option><option value="1885">1885</option><option value="1884">1884</option><option value="1883">1883</option><option value="1882">1882</option><option value="1881">1881</option><option value="1880">1880</option><option value="1879">1879</option><option value="1878">1878</option><option value="1877">1877</option><option value="1876">1876</option><option value="1875">1875</option><option value="1874">1874</option><option value="1873">1873</option><option value="1872">1872</option><option value="1871">1871</option><option value="1870">1870</option><option value="1869">1869</option><option value="1868">1868</option><option value="1867">1867</option><option value="1866">1866</option><option value="1865">1865</option><option value="1864">1864</option><option value="1863">1863</option><option value="1862">1862</option><option value="1861">1861</option><option value="1860">1860</option><option value="1859">1859</option><option value="1858">1858</option><option value="1857">1857</option><option value="1856">1856</option><option value="1855">1855</option><option value="1854">1854</option><option value="1853">1853</option><option value="1852">1852</option><option value="1851">1851</option><option value="1850">1850</option><option value="1849">1849</option><option value="1848">1848</option><option value="1847">1847</option>');
		$('#year', this.oInterface).val('');
	}

	return false;
}

// строим строки в таблице с инфой о массиву aFields и вставляем в конец или после tr#idPlace
InterfaceNew.prototype.BuildSelectAmplua = function(oSelect) {

	if(!oSelect)
		return false;

	var oAmpluaOptions = {
		0: "нет",

63: "Актер/Актриса",
7844: "Аниматор",
280: "Гример",
117: "Звукорежиссер",
279: "Каскадер",
35278: "Кастинг",
229: "Композитор",
63697: "Консультант",
270373: "Мастер спецэффектов",
40535: "Музыка в фильме",
226: "Оператор",
54856: "Переводчик",
34468: "Писатель",
227: "Продюсер",
282: "Редактор",
64: "Режиссер",
231: "Режиссер монтажа",
228: "Сценарист",
281: "Художник по костюмам",
230: "Художник-постановщик"
	};

	// запоминаем выделенный option
	var selectedValue = $(oSelect).val();
	var strOptions = '';

//	alert($('*', oSelect).length + '-' + oSelect.id);

	// строим заново все option
	$.each(oAmpluaOptions, function(i, n) {
		strOptions += '<option value="' + i + '">' + n + '</option>';
	});

	// удаляем все option
	$(oSelect).html(strOptions);

	// вспоминаем выделенный option
	$(oSelect).val(selectedValue == '' ? 0 : selectedValue);

	return false;
}


// строим строки в таблице с инфой о массиву aFields и вставляем в конец или после tr#idPlace
InterfaceNew.prototype.BuildInfoTable = function(aFields, idPlace) {

	var str = '';

	for(var i=0; i < aFields.length; i++) {
		str += '<tr id="line_' + aFields[i].id + '">';
		str += '<td>' + aFields[i].name + '</td>';
		str += '<td class="td_border" id="cell_' + aFields[i].id + '" nowrap="">' + ((aFields[i].type == 'text') ? '<input type="text" id="' + aFields[i].id + '" value="">' : '') + '</td>';
		str += '</tr>';
	}

	if(idPlace)
		$('#objectInfo > tbody > tr#' + idPlace).after(str);
	else
		$('#objectInfo').append(str);

	// расставляем правильно закрашенность строчек
	$('#objectInfo > tbody > tr').each(function(i) {
		$(this).removeClass('td_bg').addClass(i%2==0 ? 'td_bg' : '');
	});

}

// пересчитываем доступные амплуа для всех селектов
InterfaceNew.prototype.RecalcAccessibleAmplua = function() {

	var isNullAmpluaExists = false;
	var isActorSelectExists = false;

	// добавляем все пропущенные option в каждый ampluaX
	var ampluaCount = 1;
	while($('#amplua' + ampluaCount).length) {
//		oInterface.BuildSelectAmplua($('#amplua' + ampluaCount).get(0));
		++ampluaCount;
	}

	ampluaCount = 1;
	while($('#amplua' + ampluaCount).length) {

		oInterface.ampluaIdTemp = $('#amplua' + ampluaCount).val();
		++ampluaCount;

		if(oInterface.ampluaIdTemp == '63' && !isActorSelectExists) {
			isActorSelectExists = true;
		} else if(oInterface.ampluaIdTemp == '0') {
			isNullAmpluaExists = true;
			continue;
		}

		$('option', oInterface.oInterface).not($('option', $('#year', oInterface.oInterface))).each(function(i) {
			if(this.value == oInterface.ampluaIdTemp && $(this.parentNode).val() != oInterface.ampluaIdTemp)
				$(this).remove();
		});

	}

	if(!isActorSelectExists)
		$('tr#line_role').remove();

	if(isNullAmpluaExists)
		$('#addAmplua').hide(0);
	else
		$('#addAmplua').show(0);

	return false;
}

// заполняем значениями, если передали xmlItem
InterfaceNew.prototype.FillInfoFields = function(xmlItem) {

	if(xmlItem) {

		if(this.addDataType == 'person2film')
			$('#oInfoTitle').html('Персона на сайте:');
		else if(this.addDataType == 'film2person')
			$('#oInfoTitle').html('Фильм на сайте:');

		// разбираем xml и заполняем поля значениями
		$(xmlItem).children().each(function(i) {

			var m = false;

			// второй экран для связей
			if(oInterface.addDataType.match(/^(person2film|film2person)$/)) {

				// текстовые поля и год
				if(this.tagName.match(/(rus|eng|year)/))
					$('#cell_' + this.tagName.replace('birth_year','year')).text($(this.tagName, xmlItem).text());

				// амплуа
				else if(m = /amplua(\d+)/.exec(this.tagName)) {
					// добавляем новое поле, если это не первое амплуа
					if(m[1] != 1)
						oInterface.AddAmplua();
					$('#amplua' + m[1]).val($('amplua' + m[1], xmlItem).text());
					oInterface.OnChangeAmplua($('#amplua' + m[1]).get(0));

				// айдишник амплуа
				} else if(m = /amplua_id(\d+)/.exec(this.tagName))
					$('#amplua_id' + m[1]).val($('amplua_id' + m[1], xmlItem).text());

				// роль
				else if(this.tagName.match(/role/))
					$('#role').val($('role', xmlItem).text()).change();

				// айдишник
				else if(this.tagName.match(/id/))
					oInterface.objectIdAdd = $(this.tagName, xmlItem).text();

				// строим input, select для незаполненных значений для их дополнения
				if($(this.tagName, xmlItem).text() == '') {

					if(this.tagName.match(/year/))
						oInterface.BuildSelectYear();

					if(this.tagName.match(/(rus|eng)/))
						$('#cell_' + this.tagName).html('<input type="text" id="' + this.tagName + '" value="">');

				}

			// первый экран, информация к объекту
			} else {

				var el = $('#' + this.tagName, oInterface.oInterface);
				var val = $(this.tagName, xmlItem).text();

				// нашли такой элемент на странице?
				if(el.length) {
					el = el.get(0);
					if($(el).is('textarea'))
						$(el).text(val);
					else
						$(el).val(val);

					// выделяем выбранные пункты
					if(oInterface.addDataType.match(/^(genre|country|language)2film$/)) {
						$.each(val.split(','), function(i, n) {
							oInterface.SelectElInfo(n);
						});
					}
				}

			}

		});

	} else {

		if(this.addDataType == 'person2film')
			$('#oInfoTitle', this.oInterface).html('Новая персона:');
		else if(this.addDataType == 'film2person')
			$('#oInfoTitle', this.oInterface).html('Новый фильм:');

		this.objectIdAdd = false;

		var name = '';
		var lastname = '';
		var prefix = '';

		var lookupStr = $('#inputLookup').val().replace(/^\s+/, '').replace(/\s+$/, '').replace(/\s+/, ' ');

		if(lookupStr.match(/\s/) && this.addDataType == 'person2film') {
			name = lookupStr.replace(/^([^ ]+)\s+(.+)$/, '$1');
			lastname = lookupStr.replace(/^([^ ]+)\s+(.+)$/, '$2');
		} else
			name = lookupStr;

		prefix = lookupStr.match(/[a-z]/i) ? 'eng' : 'rus';

		$('#' + prefix + '_name').val(name);
		$('#' + prefix + '_lastname').val(lastname);

	}

	// уничтожаем временный XML для IE
	if($.browser.msie)
		$('#tempXML').get(0).removeNode(true);

	return false;
}

// проверяем необходимые поля и посылаем контрольный запрос на соответствие уже заведенным
InterfaceNew.prototype.CheckObject = function() {

	this.ButtonsLock();

	// персона не выбрана
	if(this.objectIdAdd == false) {

		if(oInterface.addDataType.match(/^person2film/)) {
			var rusname = $('#rus_name').val() + ' ' + $('#rus_lastname').val();
			var engname = $('#eng_name').val() + ' ' + $('#eng_lastname').val();
			var url = '/php/person.php';
			var neccecaryFields = ['rus_name', 'rus_lastname'];
		} else if(oInterface.addDataType.match(/^film2person/)) {
			var rusname = $('#rus_name').val();
			var engname = $('#eng_name').val();
			var url = '/php/film.php';
			var neccecaryFields = ['rus_name', 'year'];
		}

		var errorFields = new Array();

		// проверяем необходимые поля
		for(var i=0; i<neccecaryFields.length; i++) {
			if($('#' + neccecaryFields[i]).val() == '')
				errorFields[errorFields.length] = $('#line_' + neccecaryFields[i] + ' td').slice(0,1).text();
		}

		if(errorFields.length) {
			alert("Вы не заполнили поля:\n'" + errorFields.join("'\n'") + "'\n");
			this.ButtonsUnlock();
			return false;
		}

		$.ajax({
			url: url,
			data: {
				action: 'lookup',
				q: rusname.toLowerCase(),
				w: engname.toLowerCase()
			},
			type: 'post',
			dataType: 'xml',
			success: this.ShowConfirmResults
		});

	} else
		this.Post();

	return false;

}

// показываем результаты повторного поиска и показываем их или сразу постим новую связь
InterfaceNew.prototype.ShowConfirmResults = function(xml) {

	oInterface.lookupXML = xml;

	var len = $(oInterface.GetXmlItemName(), xml).length;

	if(len > 0) {

		var text = 'Возможно вы имели ввиду ';

		if(oInterface.addDataType.match(/^person/))
			text += (len == 1 ? 'следующую персону?' : 'одну из следующих персон?');

		else if(oInterface.addDataType.match(/^film/))
			text += (len == 1 ? 'следующий фильм?' : 'один из следующих фильмов?');

		$('#panelConfirm p.text_form').html(text);
		$('#panelConfirm div.total').show(0);

		oInterface.OpenPanel('panelConfirm');
		$('#oConfirmResults').html(oInterface.GetStrLookupResults(xml)).css('heigth', (len * 30) + 'px');

	} else
		oInterface.Post();

	return false;

}

// удаляем инфу
InterfaceNew.prototype.Delete = function() {

	if(!confirm('Уверены ли вы?'))
		return false;

	// обнуляем все значения amplua для связей
	if(this.addDataType.match(/^(person2film|film|person)/)) {

		var ampluaCount = 1;

		// амплуа НЕ РАБОТАЕТ, работает обнуление option ниже
		while($('#amplua' + ampluaCount).length) {
			$('#amplua' + ampluaCount).val(0);
			++ampluaCount;
		}

		$('option', this.oInterface).removeAttr('selected');
		$('#role').val('');
	}


	this.Post();

	return false;
}

// постим инфу из интерфейса
InterfaceNew.prototype.Post = function() {

	var ampluaCount = 1;

	this.ButtonsLock();
	this.ShowMessage('error', '');

	// генерим отсылаемые параметры
	var params = {
		_action: this.action + '_' + this.addDataType,
		_id: this.objectId
	};

	var m = false;

	// редактируем или добавляем фильм персоне | персону фильму
	if(this.addDataType.match(/^(person2film|film2person)$/)) {

		if(this.addDataType.match(/^person/)) {

			// объект уже добавлен?
			if(this.objectIdAdd) {
				jQuery.extend(params, {person_id: this.objectIdAdd});
			} else {
				jQuery.extend(params, {
					rus_name: 		$('#rus_name', this.oInterface).val()
				});
			}

			jQuery.extend(params, {
				rus_lastname:	$('#rus_lastname', this.oInterface).val(),
				eng_name:		$('#eng_name', this.oInterface).val(),
				eng_lastname:	$('#eng_lastname', this.oInterface).val(),
				birth_year:		$('#year', this.oInterface).val()
			});

		} else if(this.addDataType.match(/^film/)) {

			// объект уже добавлен?
			if(this.objectIdAdd) {
				jQuery.extend(params, {film_id: this.objectIdAdd});
			} else {
				jQuery.extend(params, {
					rus_name: 		$('#rus_name', this.oInterface).val()
				});
			}

			jQuery.extend(params, {
				year:			$('#year', this.oInterface).val(),
				eng_name:		$('#eng_name').val()
			});

		}

		// амплуа
		while($('#amplua' + ampluaCount).length) {
			params["amplua" + ampluaCount] = $('#amplua' + ampluaCount).val();
			++ampluaCount;
		}

		// id амплуа
		ampluaCount = 1;
		while($('#amplua' + ampluaCount).length && this.action == 'edit') {
			params["amplua_id" + ampluaCount] = $('#amplua_id' + ampluaCount).val();
			++ampluaCount;
		}

		// строчка роли
		if($('#role').length)
			params.role = $('#role').val();

	// редактируем или добавляем информацию фильму
	} else if(m = /^(text|year|takings_full|budget|takings_russian|long|colour|sound|filmtype|filmformat|filmstatus|genre|country|language)2film$/.exec(this.addDataType)) {

		var fieldId = m[1];
		params[fieldId] = $('#' + fieldId).val();

	}

	$.ajax({
		url: '/php/document.phtml',
		type: 'post',
		data: params,
		dataType: 'xml',
		success: function(xml) {

			var error = $('error', xml).text();
			var success = $('success', xml).text();

		 	if(error) {
		 		oInterface.ButtonsUnlock();
				oInterface.ShowMessage('error', error);
				oInterface.OpenPanel('panelInfo');
				return false;
			}

			oInterface.ViewChanges();
		}
	});

	return false;

}

// ищем контайнер и если нашли обновляем его новой инфой или перегружаем всю страницу
InterfaceNew.prototype.ViewChanges = function() {

	if(this.oForUpdate) {

		var regExp = /^(film|person)(info|persons|films)(.*)$/i
		var id = this.oForUpdate.id;
		var url = '';

		// записываем объекту новые свойства
		this.oForUpdate.object = id.replace(regExp, '$1').toLowerCase();
		this.oForUpdate.type = id.replace(regExp, '$2').toLowerCase();
		this.oForUpdate.queryString = id.replace(regExp, '$3').toLowerCase();

		var params = {};
		if(this.oForUpdate.type == 'info')
			url = '/inc/' + this.oForUpdate.object + 's_' + this.oForUpdate.type + '/' + this.objectId + '.shtml?' + this.oForUpdate.queryString;
		else {
			url = '/php/' + this.oForUpdate.object + '.php';
			params['id'] = this.objectId;
			if(this.oForUpdate.object == 'person')
				params['action'] = 'get_block_films_' + (this.oForUpdate.queryString == 'full' ? 'films' : 'main');
			else if(this.oForUpdate.object == 'film')
				params['action'] = 'get_block_persons_' + (this.oForUpdate.queryString == 'full' ? 'details' : 'main');

		}

		$.ajax({
			url: url,
			type: 'get',
			dataType: 'html',
			data: params,
			success: function(html) {

				oInterface.oForUpdate.innerHTML = html;

				if(oInterface.addDataType.match(/^(person2film|film2person)$/))
					oInterface.StartEditIcoHover();


				if(oInterface.oForUpdate.queryString == 'col1' || oInterface.oForUpdate.queryString == 'col3') {

					$.ajax({
						url: '/inc/films_' + oInterface.oForUpdate.type + '/' + oInterface.objectId + '.shtml?short',
						type: 'get',
						dataType: 'html',
						success: function(html) {
							$('#filmInfoSubtitle').html(html);
						}
					});

				}

		 		oInterface.ButtonsUnlock();
				oInterface.Hide();
			}
		});


	} else {

		alert('Успешно!');
		document.location.href = document.location.href;

	}

	return false;

}


// проверяем текст о фильме и отправляем его
InterfaceNew.prototype.CheckObjectInfo = function() {

	var el = false;
	var value = false;

	// проверки для числовых значений
	if($('#budget', this.oInterface).length) {
		el = $('#budget', this.oInterface).get(0);
	} else if($('#takings_russian', this.oInterface).length) {
		el = $('#takings_russian', this.oInterface).get(0);
	} else if($('#takings_full', this.oInterface).length) {
		el = $('#takings_full', this.oInterface).get(0);
	} else if($('#long', this.oInterface).length) {
		el = $('#long', this.oInterface).get(0);
	}

	if(el) {
		// допустимые символы вырезаем и проверяем на остальные
		el.value = el.value.replace(/(\.|,| )/, '');
		if(el.value.match(/[^0-9]/)) {
			this.ShowMessage('error', 'Вы должны указать число');
			return false;
		}
	}

	// проверки для жанра, страны
	el = $('#genre', this.oInterface).length ? $('#genre', this.oInterface).get(0) : false;
	if(el && el.value.length == 0) {
		this.ShowMessage('error', 'Вы должны выбрать хотя бы один жанр');
		return false;
	}
	el = $('#country', this.oInterface).length ? $('#country', this.oInterface).get(0) : false;
	if(el && el.value.length == 0) {
		this.ShowMessage('error', 'Вы должны выбрать хотя бы одну страну');
		return false;
	}

	// проверки для текста
	el = $('#text', this.oInterface).length ? $('#text', this.oInterface).get(0) : false;
	if(el) {
		if(el.value.replace(/\s*/, '').length == 0) {
			this.ShowMessage('error', 'Вы должны написать текст');
			return false;
		}

		if(el.value.replace(/\s*/, '').length > 400) {
			this.ShowMessage('error', 'В тексте допустимо не больше 400 символов');
			return false;
		}
	}

	this.Post();

	return false;
}

// показываем ошибку
InterfaceNew.prototype.ShowMessage = function(className, message) {

	var messageContainer = $('span.' + className + ' span', this.oInterface);

	if(messageContainer.length) {

		$('span.' + className, this.oInterface).hide(0);

		if(message) {
			$('span.' + className, this.oInterface).css('display', 'inline');
			messageContainer.text(message);
			return false;
		}

	} else if(message.length) {

		alert(message);
		return false;
	}
}

// выделяем жанр, страну, язык в интерфейсе
InterfaceNew.prototype.SelectElInfo = function(id, inputId) {

	$('#' + id).toggleClass('select');

	var ar = new Array();

	if(!inputId)
		var inputId = this.addDataType.replace(/^([^2]+)2([^2]+)$/, '$1');

	if(!this.aSelectEl[inputId])
		this.aSelectEl[inputId] = new Array();

	var aSelectEl = this.aSelectEl[inputId];

	for(var i=0; i < aSelectEl.length; ++i) {
		if(aSelectEl[i] != id) {
			ar.push(aSelectEl[i]);
		}
	}

	if(ar.length == aSelectEl.length)
		ar.push(id);

	this.aSelectEl[inputId] = ar;

	$('#' + inputId).val(ar.join(','));

	return false;
}

// выделяем жанр, страну, язык в интерфейсе
InterfaceNew.prototype.StartEditIcoHover = function() {

	$('.edit-ico').hover(function() {
		oInterface.ShowEditRoleIco(this);
	},function() {
		oInterface.HideEditRoleIco(this);
	});

	return false;
}

// авторизуем
InterfaceNew.prototype.Auth = function(referer) {

	this.ShowMessage('error','');
	this.ButtonsLock();

	$.ajax({
		url: '/php/auth.phtml',
		type: 'post',
		dataType: 'xml',
		data: {
			_action: 'login',
			_type: 'ajax',
			_referer: referer,
			login: $('#authLogin').val(),
			password: $('#authPassword').val(),
			remember: $('#authRemember').attr('checked') ? 'on' : ''
		},
		success: function(xml) {

			var error = $('error', xml).text();
			var success = $('success', xml).text();

			if(error) {
				oInterface.ShowMessage('error', error);
				oInterface.ButtonsUnlock();
				return false;
			}

			location.href = location.href.replace(/#.*$/, '');

		}
	});

	return false;

}

// залочиваем кнопки
InterfaceNew.prototype.ButtonsLock = function() {

	$('#submitButton, #backButton', this.oInterface).attr('disabled','disabled');
	$('#panelConfirm div.total').hide(0);

	// думалка
	$('span.wait', this.oInterface).show(0);
	$('#submitButton, #backButton, #panelInfo span.links', this.oInterface).hide(0);

}

// разлочиваем кнопки
InterfaceNew.prototype.ButtonsUnlock = function() {

	$('#submitButton, #backButton', this.oInterface).removeAttr('disabled');
	$('#panelConfirm div.total').show(0);

	// думалка
	$('span.wait', this.oInterface).hide(0);
	$('#submitButton, #backButton, #panelInfo span.links', this.oInterface).show(0);

}