var loginCheckTO = null;
function checkLogin(){
	clearTimeout(loginCheckTO);
	var l = xGetElementById('loginInputField');
	var lcr = xGetElementById('loginCheckResult');
	if(lcr) lcr.parentNode.removeChild(lcr);
	var lcr = new_DIV();
	l.parentNode.appendChild(lcr);
	lcr.id = 'loginCheckResult';
	xajax__respondent('loginCheck', l.value);
}
function loginCheckResults(cnt){
	xInnerHtml('loginCheckResult', ((cnt>0)?'<span style=\'color:red\'>логин занят</span>':'<span style=\'color:green\'>логин свободен</span>'));
}

var registrationForm = null;
function showRegistrationForm(){
	xajax__respondent('phGenerateRegistrationForm');
}

/*
var reOrderMode = true;
function possiblyReOrder(){
	if(reOrderMode){
		return false;
	}
	return true;
}

var pseudo_ph, fake_ph;
var pseudo_ph_pos;
var mouseOnPhoto = 0;
var src_ondragstart = src_ondrag = src_ondragend = null;
var albumChangeOrderMode = false;
function phOnDragStart(ele, mx, my){
	if(!albumChangeOrderMode) return;
	
	var documentBody = document.getElementsByTagName('BODY')[0];
	var ele_div = ele.parentNode;

	// создаем копию блока фотки, но уже плавающую...
	pseudo_ph = ele_div.cloneNode(true);
	pseudo_ph.className = 'picBlockFloating';
	documentBody.appendChild(pseudo_ph);

	// создаем "заглушку" блока фотки для имитации "дырки"...
	fake_ph = document.createElement('div');
	fake_ph.className = 'picBlockFake';
	documentBody.appendChild(fake_ph);

	// определяем координаты блока фотки
	var xL = xPageX(ele_div);
	var xT = xPageY(ele_div);

	// ставим копию строго поверх оригинала
	xLeft(pseudo_ph, xL);
	xTop(pseudo_ph, xT);

	// ставим "заглушку" строго поверх оригинала
	xLeft(fake_ph, xL);
	xTop(fake_ph, xT);
	xWidth(fake_ph, xWidth(ele_div));

	// бежим по всем видимым на листе фоткам и определяем их координаты на странице
	for(i in photo)
		if(i.match(/\d+/)){
			photo[i].left = xPageX('picBlock_'+i);
			photo[i].top = xPageY('picBlock_'+i);
		}

	// создаем слой-индикатор исходной позиции...
	pseudo_ph_pos = document.createElement('div');
	pseudo_ph_pos.className = 'picBlockFloatingPos';
	documentBody.appendChild(pseudo_ph_pos);
}
function phOnDrag(ele, mdx, mdy){
	if(!albumChangeOrderMode) return;
	var xDx, xDy, phPosX, phPosY, resPosX, resPosY;

	// перемещаем копию
	xMoveTo(pseudo_ph, xLeft(pseudo_ph) + mdx, xTop(pseudo_ph) + mdy);
	
	// определяем текущие координаты копии
	var xL = xPageX(pseudo_ph);
	var xT = xPageY(pseudo_ph);

	mouseOnPhoto = 0;
	// бежим по всем видимым на листе фоткам и определяем над какой находимся
	for(i in photo)
		if(i.match(/\d+/)){
			phPosX = photo[i].left;
			phPosY = photo[i].top;
			xDx = xL-phPosX;
			xDy = xT-phPosY;
			if((xDx<photoBlock_width && xDx>0) && (xDy<photoBlock_height && xDy>0)){
				mouseOnPhoto = i;
				resPosX = phPosX - 5;
				resPosY = phPosY;
			}
		}

	// ставим указатель исходной позиции слева от фотки над которой находимся
	if(mouseOnPhoto!=0) xMoveTo(pseudo_ph_pos, resPosX, resPosY);
}

function phOnDragEnd(ele, mx, my){
	if(!albumChangeOrderMode) return;
	var documentBody = document.getElementsByTagName('BODY')[0];
	var ele_div = ele.parentNode;

	// убиваем копию
	documentBody.removeChild(pseudo_ph);

	// убиваем "заглушку"
	documentBody.removeChild(fake_ph);

	// убиваем слой-индикатор позиции
	documentBody.removeChild(pseudo_ph_pos);

	// перемещаем блок фотки внутри DOM
	var ele_div_new = placePhotoBefore(ele_div.id.replace(/^picBlock_/, ''), mouseOnPhoto);

}

function placePhotoBefore(id1, id2){
	if(id1==id2) return null;
	
	// находим в массиве viewed_photosID эти элементы и меняем местами...
	var str1 = ','+id1+',';
	var str2 = ','+id2+',';
	var strtmp = ',@@@,';
	var patt1 = new RegExp(str1, '');
	var patt2 = new RegExp(str2, '');
	var patttmp = new RegExp(strtmp, '');
	var new_arr = (','+viewed_photosIDs.join(',')+',').replace(patt1, ',').replace(patt2, ','+id1+','+id2+',').replace(/(^,|,$)/g, '').split(',');
	viewed_photosIDs = new_arr;

	// перемещаем объект внутри DOM
	var ph_new = moveNodeBefore(xGetElementById('picBlock_'+id1), xGetElementById('picBlock_'+id2))

	// определяем новому объекту драг-обработчики
	// xEnableDrag(xGetElementById('picBlockTbl_'+id1), phOnDragStart, phOnDrag, phOnDragEnd);

	return ph_new;
}

function moveNodeBefore(obj1, obj2){
	if(!obj1 || !obj2 || (obj1==obj2)) return null;
	var obj_new = obj1.parentNode.insertBefore(obj1.cloneNode(true), obj2);
	var obj3 = obj1.parentNode.removeChild(obj1);
	return obj3;
}
*/

var hint_timeout = new Array();
function showHint(id){
	var ph_div = xGetElementById('picBlock_'+id);
	if(!ph_div) return;

	if(ph_div.className=='picBlockFloating') return false;
	
	var hint_div = xGetElementById('picBlockHint_'+id);
	if(!hint_div){
		var documentBody = document.getElementsByTagName('BODY')[0];
		var hint_div = document.createElement('div');
		documentBody.appendChild(hint_div);
	}
	hint_div.id = 'picBlockHint_'+id;
	hint_div.className = 'picBlockHint';
	hint_div.style.zIndex = 10;
	hint_div.innerHTML = '&copy;'+photo[id].authors.replace(/<[^>]+>/g, '')+'<br />'+photo[id].date;
	xHeight(hint_div, parseInt(xHeight('picBlockBot_'+id))-2);
	xLeft(hint_div, xPageX('picBlock_'+id)+1);
	xTop(hint_div, xPageY('picBlock_'+id)+parseInt(xHeight('picBlock_'+id))-parseInt(xHeight(hint_div))-1);
	xDisplay(xGetElementById('picBlockHint_'+id), 'block');
	clearTimeout(hint_timeout[id]);
}

function hideHint(id){
	var ph_div = xGetElementById('picBlock_'+id);
	if(!ph_div) return;

	if(ph_div.className=='picBlockFloating') return false;
	hint_timeout[id] = setTimeout('destroyHint('+id+')', 100);
}

var progressBar, progressIndicator = null;
var progressBar = new Object();
function showProgress(value){
	if((!progressBar.div) || (!progressBar.indicator)){
		var documentBody = document.getElementsByTagName('BODY')[0];
		progressBar.div = document.createElement('div');
		progressBar.div.className = 'progressBar';
		progressBar.div.id = 'progressBar';
		documentBody.appendChild(progressBar.div);
		progressBar.indicator = document.createElement('div');
		progressBar.indicator.className = 'progressIndicator';
		progressBar.indicator.id = 'progressIndicator';
		progressBar.div.appendChild(progressBar.indicator);
	}
	if(progressBar.div){
		var clW = parseInt(xClientWidth());
		var clH = parseInt(xClientHeight());
		var layW = parseInt(xWidth(progressBar.div));
		var layH = parseInt(xHeight(progressBar.div));
		var l = (layW<=clW) ? parseInt(xScrollLeft() + (clW - layW)/2) : 0;
		var t = (layH<=clH) ? parseInt(xScrollTop() + (clH - layH)/2) : 0;
		if(layW<=clW)
			xLeft(progressBar.div, l);
		if(layH<=clH)
			xTop(progressBar.div, t);
	}
	if(value==0) xWidth(progressBar.indicator, 1);
	xDisplay(progressBar.div, 'block');
	xInnerHtml(progressBar.indicator, '<div>'+value+'%</div>');
	var oldW = parseInt(xWidth(progressBar.indicator));
	if((value*2)>oldW)
		xWidth(progressBar.indicator, (value*2));
}
function hideProgress(){
	// if(progressBar.div && progressBar.div.parentNode)
		// progressBar.div.parentNode.removeChild(progressBar.div);
	xDisplay(progressBar.div, 'none');
	// progressBar.div = null;
	// progressBar.indicator = null;
}

function destroyHint(id){
	if(isDefined(id) && xGetElementById('picBlockHint_'+id)){
		var documentBody = document.getElementsByTagName('BODY')[0];
		documentBody.removeChild(xGetElementById('picBlockHint_'+id));
	}
}

function icon(type, form){
	var ic = new Array();
	ic['in_menu'] = {alt:unlanguage('Убрать из меню###Hide in menu'), src:''};
	ic['not_in_menu'] = {alt:unlanguage('Показать в меню###Show in menu'), src:''};
	ic['show'] = {alt:unlanguage('Спрятать###Hide'), src:''};
	ic['hide'] = {alt:unlanguage('Показать###Show'), src:''};
	ic['eye_opened'] = {alt:unlanguage('Спрятать###Hide'), src:''};
	ic['eye_closed'] = {alt:unlanguage('Показать###Show'), src:''};
	ic['up'] = {alt:unlanguage('Переместить выше###Move up'), src:''};
	ic['edit'] = {alt:unlanguage('Редактировать###Edit'), src:''};
	ic['recycle'] = {alt:unlanguage('Удалить###Delete'), src:''};
	ic['trash'] = {alt:unlanguage('Удалить###Delete'), src:''};
	ic['zoom'] = {alt:'', src:''};
	ic['create'] = {alt:unlanguage('Создать подраздел###Create sub-section'), src:''};
	ic['save_template'] = {alt:unlanguage('Создать файл###Create file'), src:''};
	ic['node-leaf'] = {alt:'', src:''};
	ic['node-expand'] = {alt:unlanguage('Свернуть###Collapse'), src:''};
	ic['node-collapse'] = {alt:unlanguage('Раскрыть###Expand'), src:''};
	
	ic['ico-zoom'] = {alt:unlanguage('Увеличить###Zoom'), src:''};
	ic['ico-edit'] = {alt:unlanguage('Редактировать###Edit'), src:''};
	ic['ico-left'] = {alt:unlanguage('Поменять местами с предыдущей###Switch with previous'), src:''};
	ic['ico-right'] = {alt:unlanguage('Поменять местами со следующей###Switch with next'), src:''};
	ic['ico-delete'] = {alt:unlanguage('Удалить###Delete'), src:''};
	ic['ico-synch'] = {alt:unlanguage('Синхронизировать описания###Synchronize properties'), src:''};
	ic['ico-to-album'] = {alt:unlanguage('Поместить в текущий альбом###Add to current album'), src:''};
	ic['ico-to-cart'] = {alt:unlanguage('Добавить в корзину###Add to cart'), src:''};
	ic['ico-from-album'] = {alt:unlanguage('Изъять из текущего альбома###Remove from current album'), src:''};
	ic['ico-from-cart'] = {alt:unlanguage('Удалить из корзины###Remove from cart'), src:''};

	var big = (form && form=='big');
	var size = ((type.match(/^node-/))?11:16);
	
	return '<img src="'+htmlrootpath+'/images/icons/'+(big?('big/'+type+'.png'):(type+'.gif'))+'" border=0 title="'+ic[type].alt+'" title="'+ic[type].alt+'" '+(big?'hspace=0 style=\'margin:0px\'':('width='+size+' height='+size+(type.match(/^node-/)?'':' hspace=2')))+' />';
}

function icons(pid, in_album, in_cart, w_edit, w_delete, w_synch, w_orderctrl, from_cart){
	// photo[pid].icons = {'in_album':in_album, 'in_cart':in_cart, 'w_edit':w_edit, 'w_delete':w_delete, 'w_synch':w_synch, 'w_orderctrl':w_orderctrl, 'from_cart':from_cart};
	return '<center><table cellpadding=0 cellspacing=0 border=0 class=picIconsTbl><tr>' + 
		(0 && isDefined(w_orderctrl)?'<td id=picIcon_'+pid+'_synch class=picIcon>'+icon_w_link(pid, 'switch_left')+'<'+'/td>':'')+
		'<td id=picIcon_'+pid+'_zoom class=picIcon>'+icon_w_link(pid, 'zoom')+'<'+'/td>' +
		((from_cart==1)?'':'<td id=picIcon_'+pid+'_album class=picIcon>'+icon_w_link(pid, (in_album?'from':'to')+'_album')+'<'+'/td>') +
		'<td id=picIcon_'+pid+'_cart class=picIcon>'+icon_w_link(pid, (in_cart?'from':'to')+'_cart')+'<'+'/td>' +
		(w_edit?'<td id=picIcon_'+pid+'_edit class=picIcon>'+icon_w_link(pid, 'edit')+'<'+'/td>':'') +
		(w_delete?'<td id=picIcon_'+pid+'_delete class=picIcon>'+icon_w_link(pid, 'delete')+'<'+'/td>':'') +
		(w_synch?'<td id=picIcon_'+pid+'_synch class=picIcon>'+icon_w_link(pid, 'synch')+'<'+'/td>':'') +
		(0 && isDefined(w_orderctrl)?'<td id=picIcon_'+pid+'_synch class=picIcon>'+icon_w_link(pid, 'switch_right')+'<'+'/td>':'')+
		'<'+'/tr><'+'/table><'+'/center>';
}

function iconAction(type, id, num, mode){
	// stopBubble(event);
	switch(type){
		case('zoom'):{
			maximize(htmlrootpath + '/index.htm?id='+id+'&maxsize=1');
			break;
		}
		case('synch'):{
			document.location = htmlrootpath + '/admin/synch/index.htm?id=' + id;
			break;
		}
		case('edit'):{
			document.location = htmlrootpath + '/system/edit_something.htm?tblname=photos&id=' + id + '&referer=' + encoded_uri;
			break;
		}
		case('delete'):{
			document.location = htmlrootpath + '/pagegen.php3?action=something&edit_action=Delete&tblname=photos&id=' + id + '&referer=' + encoded_uri;
			break;
		}
		case('switch_left'):{
			var ph = xGetElementById('picBlock_'+id);
			if(ph!=ph.parentNode.firstChild){
				ph = moveNodeBefore(ph, ph.previousSibling);
			} else {
				ph.parentNode.appendChild(ph.cloneNode(true));
				ph.parentNode.removeChild(ph);
			}
			break;
		}
		case('switch_right'):{
			var ph = xGetElementById('picBlock_'+id);
			if(ph!=ph.parentNode.lastChild){
				var ph_next = ph.nextSibling;
				if(isDefined(ph_next.nextSibling))
					ph = moveNodeBefore(ph, ph_next.nextSibling);
				else {
					ph.parentNode.appendChild(ph.cloneNode(true));
					ph.parentNode.removeChild(ph);
				}
			} else
				ph = moveNodeBefore(ph, ph.parentNode.firstChild);
			break;
		}
		case('info'):{
			var keys_str = keywords_block(id);
			var str = '' +
				'<table border=0 cellspacing=0 cellpadding=0>' +
				'<tr valign=top>' +
					'<td><img src='+htmlrootpath+photo[id].r_filename+' width='+photo[id].width+' height='+photo[id].height+' title=\"'+photo[id].name+'\" onClick=\"hideAlert()\"></td>' +
				'</tr>' +
				'</table>';
			showAlert(str, 'butClose');
			break;
		}
		case('check'):{
			var match = ','+id+',';
			if ((mode!=0) && ((','+document.forms['photos'].photosID_list.value+',').indexOf(match)==-1)) {
				if(reset_all) break;
				document.forms['photos'].photosID_list.value = (document.forms['photos'].photosID_list.value+','+id).replace(/^,/,'');
				xGetElementById('picBlockTbl_'+id).className='picSelected';
				xGetElementById('picCheck_'+id).checked=true;
			}
			else {
				if(set_all) break;
				eval('document.forms[\'photos\'].photosID_list.value = (\',\'+document.forms[\'photos\'].photosID_list.value+\',\').replace(/'+match+'/, \',\').replace(/^,/, \'\').replace(/,$/, \'\');');
				xGetElementById('picBlockTbl_'+id).className='picNonSelected';
				xGetElementById('picCheck_'+id).checked=false;
			}
			// if(document.total) reCalcTotalPrice();
			break;
		}
		case('to_album'):{
			var str = '' + id;
			str = (str.replace(/[^,]/g, '').length+1);
			var act = 'fillContainerBy(\''+htmlrootpath+'/profile/albums/index.htm?body=no&posted=!&action=add_photos&from='+document.photos.from.value+'&photosID_list='+id+'&viewed_photosIDs='+document.photos.viewed_photosIDs.value+'&curr_albumsID='+document.albums_form.curr_albumsID.value+'\');confirmWindow2.die();';
			
			var myreg = /\/authors\/index.htm\?id=(\d+)&mode=photos/i;
			var match = myreg.exec(document.location.href);
			var albumsID;
			if(match && match.length>0)
				albumsID = parseInt(match[1]);
			
			if(num=='woRequest'){
				eval(act);
			} else {
				var links = '<ul>' +
					'<li><a href=' + document.location.href.replace(/&/g, '&amp;') + ' onClick=\'showAlert(\"'+unlanguage('Выберите из списка:###Select from list:')+'<br /><br />\"+albs_carts_list(\"albums\", ' + id + '),\"butClose\");return false\'><b>'+unlanguage('Выбрать другой альбом###Select another album')+'&hellip;<'+'/b><'+'/a><'+'/li>' +
					'<li><a href=' + document.location.href.replace(/&/g, '&amp;') + ' onClick=\'showPrompt(\"'+unlanguage('Введите имя альбома:###Type new name:')+'\", \"add_album(xGetElementById(\\\"win_prompt_text\\\").value, ' + ((albumsID>0)?albumsID:'\\\"\\\"') + ')\", \"\"); return false\'><b>'+unlanguage('Создать новый альбом###Create new album')+'<'+'/b><'+'/a><'+'/li>' +
					'<'+'/ul>';
	
				confirmWindow2 = new fadedWindow();
				confirmWindow2.width = 300;
				confirmWindow2.height = 200;
				confirmWindow2.butType = 'butNone';
				confirmWindow2.text = 
					unlanguage('Вы добавляете фотографии ('+str+') в альбом ###You add photos ('+str+') into album ')+
					document.getElementById('curr_album').innerHTML+'<br /><br />' + links;
				confirmWindow2.zIndex = 600;
				confirmWindow2.buttons = Array({title:'OK', action:act},{title:unlanguage('Отмена###Cancel'), action:'confirmWindow2.die();'});
				confirmWindow2.create();
				xResizeTo(confirmWindow2.titlebar, 20, 20);
				xMoveTo(confirmWindow2.titlebar, 180, 0);
				// xEnableDrag(confirmWindow2.titlebar, myOnDragStart, myOnDrag, myOnDragEnd); 
				confirmWindow2.show();

			}
			break;
		}
		case('to_cart'):{
			fillContainerBy(htmlrootpath+'/profile/carts/index.htm?body=no&posted=!&action=add_photos&from='+document.photos.from.value+'&photosID_list='+id+'&viewed_photosIDs='+document.photos.viewed_photosIDs.value+'&curr_cartsID=' + curr_cartsID);
			break;
		}
		case('to_cart_w_calc'):{
			fillContainerBy(htmlrootpath+'/profile/carts/index.htm?body=no&posted=!&action=add_and_save_prices&from='+document.photos.from.value+'&photosID_list='+id+'&viewed_photosIDs='+document.photos.viewed_photosIDs.value+'&price='+usage_price+'&usage_pricesID='+usage_pricesID+'&curr_cartsID=' + curr_cartsID);
			break;
		}
		case('from_album'):{
			fillContainerBy(htmlrootpath+'/profile/albums/index.htm?body=no&posted=!&hide_photos=' + (document.location.href.match(/albums\/index.htm\?id=/)?1:0) + '&action=remove_photos&from='+document.photos.from.value+'&photosID_list='+id+'&viewed_photosIDs='+document.photos.viewed_photosIDs.value+'&curr_albumsID='+document.albums_form.curr_albumsID.value);
			break;
		}
		case('from_cart'):{
			fillContainerBy(htmlrootpath+'/profile/carts/index.htm?body=no&posted=!&from_cart=' + (document.location.href.match(/cart\/index.htm/)?1:0) + '&action=remove_photos&from='+document.photos.from.value+'&photosID_list='+id+'&viewed_photosIDs='+document.photos.viewed_photosIDs.value+'&curr_cartsID=' + curr_cartsID);
			break;
		}
		case('syns_delete_synonim'):{
			if(document.syns.synsIDs.value=='')
				showAlert('Не выбраны синонимы.');
			else {
				var act = 'document.syns.syns_action.value=\"'+type+'\";document.syns.submit();';
				showConfirm2('Вы действительно хотите удалить выбранные синонимы из базы данных?', act, '');
			}
			break;
		}
		case('syns_delete_syn_link'):{
			if(document.syns.synsIDs.value=='')
				showAlert('Не выбраны синонимы.');
			else {
				var act = 'document.syns.syns_action.value=\"'+type+'\";document.syns.submit();';
				showConfirm2('Вы действительно хотите удалить выбранные синонимы ключевого слова, оставив их в базе данных?', act, '');
			}
			break;
		}
		case('syns_delete_meaning'):{
			if(document.syns.meaningsID.value=='')
				showAlert('Не выбрано толкование.');
			else {
				var act = 'document.syns.syns_action.value=\"'+type+'\";document.syns.submit();';
				showConfirm2('Вы действительно хотите удалить выбранное толкование данного ключевого слова из базы данных?', act, '');
			}
			break;
		}
		case('syns_associate_keyword'):{
			if(document.syns.meaningsID.value=='')
				showAlert('Не выбрано толкование.');
			else
				if(document.syns.synsIDs.value=='')
					showAlert('Не выбраны синонимы.');
				else {
					var act = 'document.syns.syns_action.value=\"'+type+'\";document.syns.submit();';
					showConfirm2('Вы действительно хотите ассоциировать выбранные снинонимы с выбранным толкованием ключевого слова?', act, '');
				}
			break;
		}
		case('syns_set_baseform'):{
			if(document.syns.baseform.value=='')
				showAlert('Не выбрана основная форма.');
			else {
				var act = 'document.syns.syns_action.value=\"'+type+'\";document.syns.submit();';
				showConfirm2('Вы действительно хотите установить выделенную основную форму для текущего ключевого слова?', act, '');
			}
			break;
		}
		case('syns_save_empty'):{
			var act = 'document.syns.syns_action.value=\"'+type+'\";document.syns.submit();';
			showConfirm2('Вы действительно закончили обработку текущего ключевого слова?', act, '');
			break;
		}
	}
	return false;
}

function change_curr_album(id, add_photos_id){
	document.getElementById('curr_album').innerHTML='<b>...</b>';
	fillContainerBy(htmlrootpath + '/profile/albums/index.htm?body=no&action=make_curr&from_form=1&curr_albumsID='+id+'&viewed_photosIDs='+((document.photos!=null)?document.photos.viewed_photosIDs.value:'')+(add_photos_id?'&add_photos_id='+add_photos_id:''));
	return false;
}

function change_curr_cart(id){
	document.getElementById('curr_cart').innerHTML='<b>...</b>';
	fillContainerBy(htmlrootpath + '/profile/carts/index.htm?body=no&action=make_curr&from_form=1&curr_cartsID='+id+'&viewed_photosIDs='+((document.photos!=null)?document.photos.viewed_photosIDs.value:''));
	return false;
}

function albs_carts_list(what, add_photos_id){
	eval('var arr = '+what+'_arr');
	var str = '<ul>';
	for(var i=0;i<arr.length;i++){
		str += '<li><a href=./ onClick="change_curr_'+what.replace(/.$/, '')+'('+arr[i].id+(add_photos_id?', '+add_photos_id:'')+');return false">'+arr[i].name+' ('+arr[i].cnt+')</a></li>';
	}
	str += '</ul>';
	return str;
}

function add_album(name, add_photos_id, authorsID, wDynamicRefresh){
	if(name!=""){
		stayAlertWin = 1;
		fillContainerBy(htmlrootpath + '/profile/albums/index.htm?body=no&posted=!&action=add&from_form=1'+(isDefined(add_photos_id)?'&add_photos_id='+add_photos_id:'')+(isDefined(authorsID)?'&authorsID='+authorsID:'')+(isDefined(wDynamicRefresh)?'&wDynamicRefresh='+wDynamicRefresh:'')+'&alb_name=' + name, '', unlanguage('Подождите, осуществляется создание альбома###Album is creating. Please wait...'));
	}
}

function add_order(name, onlycreate){
	if(name!=""){
		stayAlertWin = 1;
		fillContainerBy(htmlrootpath + '/profile/orders/index.htm?body=no&posted=!&action=add&from_form=1&onlycreate='+((onlycreate=="onlycreate")?1:0)+'&ord_name=' + name, '', unlanguage('Подождите, осуществляется создание заказа###Order is creating. Please wait...'));
	}
}

function albumCreateForm(authorsID, wDynamicRefresh){
	showPrompt(unlanguage('Введите имя альбома###Input album title'), 'add_album(xGetElementById("win_prompt_text").value'+(isDefined(authorsID)?', null, '+authorsID+(isDefined(wDynamicRefresh)?', '+wDynamicRefresh:''):'')+')', '');
}


photo = new Array();
keywords = new Array();

function keywords_block(id, allchecked, columns){
	var k_arr = photo[id].keywords;
	if(k_arr && k_arr.length>0){
		var keys_str = '';
		var real_keys = 0;
		for(var i=1;i<=k_arr.length;i++)
			if(isDefined(keywords[k_arr[i-1]]))
				real_keys++;
		$j = 1;
		for(var i=1;i<=k_arr.length;i++)
			if(isDefined(keywords[k_arr[i-1]])) {
				keys_str += "<tr><td style='padding:0px 5px 1px 0px'><input type=checkbox "+(allchecked?"checked":"")+" id=key_"+id+"_"+k_arr[i-1]+" class=commonCheck onClick=\"collect_IDs(this.form.keys_ids, '"+keywords[k_arr[i-1]]+"', this.checked)\" /></td><td width=100%><label for=key_"+id+"_"+k_arr[i-1]+">"+keywords[k_arr[i-1]]+"</label></td></tr>";
				if($j%Math.ceil(real_keys/(columns?columns:1))==0) keys_str += "</td></tr></table></td><td><table cellpadding=0 cellspacing=0 border=0><tr valign=top><td>";
				$j++;
			}
		keys_str = "<form name=keys action=./ onsubmit=\"if(document.search.in_results) document.search.in_results.checked=false; document.search.what.value=this.keys_ids.value.replace(/,/g, ' '); document.search.submit(); return false;\"><table cellpadding=0 cellspacing=0 border=0 width=100%><tr valign=top><td><table cellpadding=0 cellspacing=0 border=0>" + keys_str + "</table></td></tr></table><input type=hidden name=keys_ids value=''><br /><input type=submit value='"+unlanguage('найти###search')+"'></form>";
	}
	return keys_str;
}

function goDictionary(){
	fillContainerBy(htmlrootpath + '/system/get_' + (document.getElementById('synonims').checked?'synonims':(document.getElementById('wordmeanings').checked?'wordmeanings':'wordforms')) + '.php3?body=no&keyword='+document.getElementById('dictionarytext').value+'&where='+(document.getElementById('wordmeanings').checked?'wordmeanings':'wordforms'));
}

function showDictionary(){
	alertWindow.text = '<table style="width:100%; border:0; padding:0px; margin-bottom:20px">'+
		'<tr>'+
			'<td width="100%">'+
				'<input type="text" name="keyword" id="dictionarytext" onKeyUp="if(event.keyCode==13) goDictionary()" class=inputs style="width:100%">'+
			'</td>'+
			'<td style="padding-left:10px">'+
				'<input type="button" onClick="goDictionary()" value=" ok ">'+
			'</td>'+
		'</tr>'+
		'<tr>'+
			'<td class="small_white" colspan=2>'+
				'<small>'+
					'<input type="radio" class="commonCheck" id="wordmeanings" name="wheregroup" checked value="wordmeanings" /><label for="wordmeanings">толкования</label>  '+
					(0?'<input type="radio" class="commonCheck" id="wordforms" name="wheregroup" value="wordforms" /><label for="wordforms">&nbsp;словоформы</label>':'')+
					'<input type="radio" class="commonCheck" id="synonims" name="wheregroup" value="synonims" /><label for="synonims">&nbsp;синонимы</label>'+
				'</small>'+
			'</td>'+
		'</tr>'+
		'</table>';
	alertWindow.butType = 'butClose';
	alertWindow.show();
	return false;
}

function showReportForm(referer, who){
	alertWindow.setText(
		'<form style="width:100%;height:100%" method=post target=container name=quickreport action='+htmlrootpath+'/system/container_actions.php3>'+
			'<input type=hidden name=body value="no" />'+
			'<input type=hidden name=referer value="'+referer+'" />'+
			'<input type=hidden name=action value="errorReport" />'+
			'<table cellpadding=0 cellspacing=0 style="width:100%;height:100px;border:0;padding:0;margin:0">'+
			'<tr>'+
				'<td style="height:12px">'+unlanguage('текст###text')+'</td>'+
			'</tr>'+
			'<tr>'+
				'<td style="width:100%">'+
					'<textarea name=reporttxt id=reporttext class=inputs style="width:100%;height:'+((!isDefined(who) || who=='')?56:88)+'px"></textarea>'+
				'</td>'+
			'</tr>'+
			((!isDefined(who) || who=='')?
				'<tr>'+
					'<td style="height:12px">e-mail</td>'+
				'</tr>'+
				'<tr>'+
					'<td style="width:100%;height:20px">'+
						'<input type=text name=email class=inputs style="width:100%" />'+
					'</td>'+
				'</tr>'
			:
				''
			)+
			'</table>'+
		'</form>'
	);
	alertWindow.butType = 'butNone';
	var old_buts = alertWindow.buttons;
	alertWindow.buttons = Array({title:unlanguage('Отправить###Send'), action:'if(document.quickreport.reporttxt.value==""){alert("'+unlanguage('текст не введен###text is blank')+'.");return false}'+((!isDefined(who) || who=='')?'if(document.quickreport.email.value==""){alert("'+unlanguage('Вы не указали ваш e-mail который, возможно, понадобится для уточнения дополнительных деталей или объяснения ситуации###e-mail is blank')+'.");return false}':'')+'document.quickreport.submit();this.obj.hide();this.obj.refresh();', def:true},{title:unlanguage('Закрыть###Close'), action:'this.obj.hide();this.obj.refresh();', def:false}); 
	alertWindow.refresh();
	alertWindow.show();
	alertWindow.buttons = old_buts;
	return false;
}

var advSearchPanelCont = '';

var storeBlock = new Array();

function store_value(key_, value_){
	if(!isDefined(storeBlock[key_])) storeBlock[key_] = new Array();
	storeBlock[key_].push(value_);
}

function restore_value(key_){
	if(isDefined(storeBlock[key_])) 
		var kv = storeBlock[key_].pop();
	return kv;
}

function showAdvSearchPanel(){
	xDisplay('adv_search_div', 'block');
	document.search.mode.value='advanced';
	if(!advSearchPanelSaved){
		store_value('frm_where', document.search.where.value);
		store_value('frm_colorizes', document.search.colorizes.value);
		store_value('frm_typesizes', document.search.typesizes.value);
		store_value('frm_seasons', document.search.seasons.value);
		store_value('frm_daytimes', document.search.daytimes.value);
		store_value('frm_search_date_typesID', document.search.search_date_typesID.value);
		store_value('frm_search_date_ystart', document.search.search_date_ystart.value);
		store_value('frm_search_date_yend', document.search.search_date_yend.value);
		advSearchPanelSaved = true;
	} else {
		document.search.where.value = restore_value('frm_where');
		document.search.colorizes.value = restore_value('frm_colorizes');
		document.search.typesizes.value = restore_value('frm_typesizes');
		document.search.seasons.value = restore_value('frm_seasons');
		document.search.daytimes.value = restore_value('frm_daytimes');
		document.search.search_date_typesID.value = restore_value('frm_search_date_typesID');
		document.search.search_date_ystart.value = restore_value('frm_search_date_ystart');
		document.search.search_date_yend.value = restore_value('frm_search_date_yend');
	}
}

var advSearchPanelSaved = false;
function hideAdvSearchPanel(){
	xDisplay('adv_search_div', 'none');
	document.search.mode.value='simple';
}

function switchAdvSearchPanel(){
	if(document.search.mode.value=='advanced')
		hideAdvSearchPanel();
	else
		showAdvSearchPanel();
}

function resetAdvSearch(direct){
	// document.search.reset();
	var inputs = xGetElementsByTagName('INPUT');
	var arr,arr2 =  new Array();
	for(var i=0;i<inputs.length;i++){
		ele = inputs[i].name;
		if(ele.match(/srch_chk_/) && !ele.match(/srch_chk_where/)){
			arr = ele.split('_');
			if(!arr2[arr[arr.length-2]]) 
				arr2[arr[arr.length-2]] = '';
			arr2[arr[arr.length-2]] += arr[arr.length-1]+','; // создали массив значений чекбоксов
			xGetElementById(ele).checked = ((direct=='inverse')?false:true); // вообще-то по Name, но там name и id специально делались...
		}
		if(ele.match(/srch_rad_/)){
			arr = ele.split('_');
			xGetElementById(ele+"_0").onclick();
			xGetElementById(ele+"_0").checked = true;
		}
	}
	for(ele in arr2){
		eval("document.search."+ele+".value = '"+((direct=='inverse')?'':arr2[ele].replace(/,$/, ''))+"'; ");
	}
}

function days_in_month(month, year){
	if(month!=''){
		var months = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 30, 31);
		var d = months[month-1];
		if((month==2) && ((year%4)==0)) {d++;}
		return d;
	}
}

function generateCalendar(div_id, year, month, day, event){
	var d = new Date(year, month-1, day);
	var d1 = new Date(year, month-1, 1);
	var days = '';
	var months = new Array('январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', ' август', ' сентябрь', ' октябрь', ' ноябрь', ' декабрь');
	var wd = d1.getDay(); if(wd==0) {wd=7;}
	var letter='';
	for(var i=1; i<=7; i++){switch(i){case(1):letter='п';break;case(2):letter='в';break;case(3):letter='с';break;case(4):letter='ч';break;case(5):letter='п';break;case(6):letter='с';break;case(7):letter='в';break;}days += '<td class=calendarF'+((((i%7)==6) || ((i%7)==0))?'67':'')+'>'+letter+'</td>';}
	days += '</tr><tr>';
	for(var i=1; i<wd; i++){days += '<td class=calendarTD'+((((i%7)==6) || ((i%7)==0))?'67':'')+'>&nbsp;</td>';}
	for(var i=1; i<=days_in_month(month, year); i++){
		if(((wd+i-1)%7)==1) {days += '</tr><tr>';}
		days += '<td class=calendarTD'+(((((wd+i-1)%7)==6) || (((wd+i-1)%7)==0))?'67':'')+' onMouseOver=`this.className=&#039;calendarTD'+(((((wd+i-1)%7)==6) || (((wd+i-1)%7)==0))?'67':'')+'_hov&#039;` onMouseOut=`this.className=&#039;calendarTD'+(((((wd+i-1)%7)==6) || (((wd+i-1)%7)==0))?'67':'')+'&#039;` onClick=`'+event.replace(/@@year@@/g,year).replace(/@@month@@/g,month).replace(/@@day@@/g,i)+'`>'+i+'</a></td>';
	}
	d1 = new Date(year, month-1, days_in_month(month, year));
	var wd = d1.getDay(); if(wd==0) {wd=7;}
	for(var i=(wd+1); i<=7; i++){days += '<td class=calendarTD'+((((i%7)==6) || ((i%7)==0))?'67':'')+'>&nbsp;</td>';}
	var switch_type = 2;
	days = '<table cellpadding=0 cellspacing=0 class=calendarTable>' +
				'<tr><td colspan=7>' +
					'<table cellpadding=0 cellspacing=0 width=100% class=calendarTable>' +
					((switch_type==1)?('' +
					'<tr>' +
						'<td class=calendarArrow>'+((year==0)?'&lt;&lt;':'<a href="./" onClick=`generateCalendar(&#039;'+div_id+'&#039;, '+(year-1)+', '+month+', '+day+', &#039;'+event+'&#039;);return false`>&lt;&lt;</a>')+'</td>' +
						'<td width=100% class=calendarHeader>'+year+'</td>' +
						'<td class=calendarArrow>'+((year==9999)?'&gt;&gt;':'<a href="./" onClick=`generateCalendar(&#039;'+div_id+'&#039;, '+(year+1)+', '+month+', '+day+', &#039;'+event+'&#039;);return false`>&gt;&gt;</a>')+'</td>' +
					'</tr>' +
					'<tr>' +
						'<td class=calendarArrow>'+((month==1)?'&lt;&lt;':'<a href="./" onClick=`generateCalendar(&#039;'+div_id+'&#039;, '+year+', '+(month-1)+', '+day+', &#039;'+event+'&#039;);return false`>&lt;&lt;</a>')+'</td>' +
						'<td width=100% class=calendarHeader>'+months[month-1]+'</td>' +
						'<td class=calendarArrow>'+((month==12)?'&gt;&gt;':'<a href="./" onClick=`generateCalendar(&#039;'+div_id+'&#039;, '+year+', '+(month+1)+', '+day+', &#039;'+event+'&#039;);return false`>&gt;&gt;</a>')+'</td>' +
					'</tr>' +
					''):('' +
					'<tr>' +
						'<td class=calendarArrow><a href="./" onClick=`generateCalendar(&#039;'+div_id+'&#039;, '+((month==1)?(year-1):year)+', '+((month==1)?12:(month-1))+', '+day+', &#039;'+event+'&#039;);return false`>&lt;&lt;</a></td>' +
						'<td width=100% class=calendarHeader>'+months[month-1]+'&nbsp;'+year+'</td>' +
						'<td class=calendarArrow><a href="./" onClick=`generateCalendar(&#039;'+div_id+'&#039;, '+((month==12)?(year+1):year)+', '+((month==12)?1:(month+1))+', '+day+', &#039;'+event+'&#039;);return false`>&gt;&gt;</a></td>' +
					'</tr>' +
					'')) +
					'</table>' +
				'</td></tr>' +
				'<tr>' +
				days +
				'</tr></table>' +
				'';
	document.getElementById(div_id).innerHTML = days;
}

function fix_days(frm, vname, name){
	if((name.indexOf('mm_')!=-1) || (name.indexOf('yy_')!=-1)) {
		eval('var m_val = frm.mm_'+vname+'.value');
		eval('var y_val = frm.yy_'+vname+'.value');
		eval('var d = frm.dd_'+vname);
		var d_val = d.value;
		d.length = 0;
		for (var i=1;i<=days_in_month(m_val, y_val);i++) {
			d.options[i-1] = new Option(((i<10)?'0':'')+i,((i<10)?'0':'')+i);
		}
		d.options[d_val-1].selected = true;
	}
}

function fix_date(frm, vname, name){
	fix_days(frm, vname, name);
	eval('frm.'+vname+'.value = frm.yy_'+vname+'.value+"-"+frm.mm_'+vname+'.value+"-"+frm.dd_'+vname+'.value');
}

function fix_datetime(frm, vname, name){
	fix_days(frm, vname, name);
	eval('frm.'+vname+'.value = frm.yy_'+vname+'.value+"-"+frm.mm_'+vname+'.value+"-"+frm.dd_'+vname+'.value+" "+frm.h_'+vname+'.value+":"+frm.m_'+vname+'.value+":"+frm.s_'+vname+'.value');
}

function set_curr_datetime(frm, vname){
	var d = new Date();
	eval('var y_frm = frm.yy_'+vname);
	for(var i=0; i<y_frm.length; i++)
		y_frm.options[i].selected = (y_frm.options[i].value==d.getFullYear());
	eval('frm.mm_'+vname+'.options['+d.getMonth()+'].selected = true');
	eval('frm.dd_'+vname+'.options['+(d.getDate()-1)+'].selected = true');
	eval('frm.h_'+vname+'.options['+d.getHours()+'].selected = true');
	eval('frm.m_'+vname+'.options['+d.getMinutes()+'].selected = true');
	eval('frm.s_'+vname+'.options['+d.getSeconds()+'].selected = true');
	eval('frm.'+vname+'.value = frm.yy_'+vname+'.value+"-"+frm.mm_'+vname+'.value+"-"+frm.dd_'+vname+'.value+" "+frm.h_'+vname+'.value+":"+frm.m_'+vname+'.value+":"+frm.s_'+vname+'.value');
}

function checkProdsListRow(frm, prefix, id, from, val){
	eval('var chk = frm.'+prefix+'_chk_'+id+';');
	eval('var chk_all = frm.'+prefix+'_chk_all;');
	eval('var tr = document.getElementById("'+prefix+'_tr_'+id+'");');
	if(isMSIE && window.event) stopBubble(event);
	var direct = ((from=='tr')?(val?val:!chk.checked):chk.checked);
	collect_IDs(frm.ids_list, id, direct);
	if(from=='tr')
		chk.checked = direct;
	tr.style.backgroundColor = (chk.checked?'#E8F5FF':'transparent');
	frm.sbmt.disabled = (frm.ids_list.value=='');
	if(!chk.checked) chk_all.checked = false;
}

function chooseDate(type, f_typesID, f_start, f_end){
	if((!f_typesID) || (f_typesID=='')) f_typesID = 'date_typesID';
	if((!f_start) || (f_start=='')) f_start = 'date_ystart';
	if((!f_end) || (f_end=='')) f_end = 'date_yend';
	switch(type){
		case(1):{
			showAlert(
				'<table align=center border=0 cellspacing=5 cellpadding=0>'+
				'<tr valign=middle>'+
					'<td nowrap=\'nowrap\'>'+
						'<input type=text tabindex=\'1\' name=dd_ph_'+f_typesID+' id=dd_ph_'+f_typesID+' value=\''+unlanguage('ДД###DD')+'\' onFocus=\'if(this.value==unlanguage("ДД###DD")) this.value="";\' onBlur=\'if(this.value=="") this.value=unlanguage("ДД###DD");\' maxLength=2 style=\'width:30px\' onKeyDown=\'if(event.keyCode==13) execute_date(1); else  return (isControl(event.keyCode) || isDigit(event.keyCode))\' />.'+
						'<input type=text tabindex=\'2\' name=mm_ph_'+f_typesID+' id=mm_ph_'+f_typesID+' value=\''+unlanguage('ММ###MM')+'\' onFocus=\'if(this.value==unlanguage("ММ###MM")) this.value="";\' onBlur=\'if(this.value=="") this.value=unlanguage("ММ###MM");\' maxLength=2 style=\'width:30px\' onKeyDown=\'return (isControl(event.keyCode) || isDigit(event.keyCode))\' />.'+
						'<input type=text tabindex=\'3\' name=yy_ph_'+f_typesID+' id=yy_ph_'+f_typesID+' value=\''+unlanguage('ГГГГ###YYYY')+'\' onFocus=\'if(this.value==unlanguage("ГГГГ###YYYY")) this.value="";\' onBlur=\'if(this.value=="") this.value=unlanguage("ГГГГ###YYYY");\' maxLength=4 style=\'width:70px\' onKeyDown=\'return (isControl(event.keyCode) || isDigit(event.keyCode))\' />'+
					'</td>'+
					'<td style=\'padding-left:5px\'>'+
						'<input type=button value=\' ok \' onClick=\'execute_date(1, "'+f_typesID+'", "'+f_start+'", "'+f_end+'")\' />'+
					'</td>'+
				'</tr>'+
				'</table>'
			,
				'butNone'
			);
			break;
		}
		case(2):{
			showAlert(
				'<table align=center border=0 cellspacing=5 cellpadding=0>'+
				'<tr valign=middle>'+
					'<td nowrap=\'nowrap\'>'+
						'<input type=text tabindex=\'1\' name=yy_ph_'+f_typesID+' id=yy_ph_'+f_typesID+' value=\''+unlanguage("ГГГГ###YYYY")+'\' onFocus=\'if(this.value==unlanguage("ГГГГ###YYYY")) this.value="";\' onBlur=\'if(this.value=="") this.value=unlanguage("ГГГГ###YYYY");\' maxLength=4 style=\'width:70px\' onKeyDown=\'return (isControl(event.keyCode) || isDigit(event.keyCode))\' />'+
					'</td>'+
					'<td style=\'padding-left:5px\'>'+
						'<input type=button value=\' ok \' onClick=\'execute_date(2, "'+f_typesID+'", "'+f_start+'", "'+f_end+'")\'>'+
					'</td>'+
				'</tr>'+
				'</table>'
			,
				'butNone'
			);
			break;
		}
		case(3):{
			showAlert(
				'<table align=center border=0 cellspacing=5 cellpadding=0>'+
				'<tr valign=middle>'+
					'<td nowrap=\'nowrap\'>'+
						'<input type=text tabindex=\'1\' name=yy_ph_'+f_typesID+'1 id=yy_ph_'+f_typesID+'1 value=\''+unlanguage('ГГГГ###YYYY')+'\' onFocus=\'if(this.value==unlanguage("ГГГГ###YYYY")) this.value="";\' onBlur=\'if(this.value=="") this.value=unlanguage("ГГГГ###YYYY");\' maxLength=4 style=\'width:70px\' onKeyDown=\'return (isControl(event.keyCode) || isDigit(event.keyCode))\' />'+
						'&nbsp;&mdash;&nbsp;'+
						'<input type=text tabindex=\'2\' name=yy_ph_'+f_typesID+'2 id=yy_ph_'+f_typesID+'2 value=\''+unlanguage('ГГГГ###YYYY')+'\' onFocus=\'if(this.value==unlanguage("ГГГГ###YYYY")) this.value="";\' onBlur=\'if(this.value=="") this.value=unlanguage("ГГГГ###YYYY");\' maxLength=4 style=\'width:70px\' onKeyDown=\'return (isControl(event.keyCode) || isDigit(event.keyCode))\' />'+
					'</td>'+
					'<td style=\'padding-left:5px\'>'+
						'<input type=button value=\' ok \' onClick=\'execute_date(3, "'+f_typesID+'", "'+f_start+'", "'+f_end+'")\' />'+
					'</td>'+
				'</tr>'+
				'</table>'
			,
				'butNone'
			);
			break;
		}
		case(4):{
			showAlert(
				'<table align=center border=0 cellspacing=5 cellpadding=0>'+
				'<tr valign=middle>'+
					'<td nowrap=\'nowrap\'>'+
						'<input type=text tabindex=\'1\' name=yy_ph_'+f_typesID+' id=yy_ph_'+f_typesID+' value=\'\' maxLength=2 style=\'width:30px\' onKeyDown=\'return (isControl(event.keyCode) || isDigit(event.keyCode))\' />'+
						'&nbsp;-е&nbsp;г.г.&nbsp;&nbsp;'+
						'<input type=text tabindex=\'2\' name=cent_ph_'+f_typesID+' id=cent_ph_'+f_typesID+' value=\'\' maxLength=2 style=\'width:30px\' onKeyDown=\'return (isControl(event.keyCode) || isDigit(event.keyCode))\' />'+
						'&nbsp;в.'+
						'<br /><i>'+unlanguage('пример###ex.')+'</i>: <b>90-е&nbsp;г.г.&nbsp;&nbsp;20&nbsp;в.</b>'+
					'</td>'+
					'<td style=\'padding-left:5px\'>'+
						'<input type=button value=\' ok \' onClick=\'execute_date(4, "'+f_typesID+'", "'+f_start+'", "'+f_end+'")\' />'+
					'</td>'+
				'</tr>'+
				'</table>'
			,
				'butNone'
			);
			break;
		}
	}
}

function execute_date(type, f_typesID, f_start, f_end, start_year, end_year){
	if((!f_typesID) || (f_typesID=='')) f_typesID = 'date_typesID';
	if((!f_start) || (f_start=='')) f_start = 'date_ystart';
	if((!f_end) || (f_end=='')) f_end = 'date_yend';
	if((!start_year) || (start_year=='')) start_year = 1900;
	if((!end_year) || (end_year=='')) end_year = 2010;
	switch(type){
	case(1):{
		var tmp_dd = xGetElementById('dd_ph_'+f_typesID).value.replace(/^0/, '');
		var tmp_mm = xGetElementById('mm_ph_'+f_typesID).value.replace(/^0/, '');
		var tmp_yy = xGetElementById('yy_ph_'+f_typesID).value.replace(/^0/, '');
		if(tmp_dd=='' || tmp_mm=='' || tmp_yy==''){
			showAlert(unlanguage('Введены неполные данные###Non-complete data'));
			return;
		}
		if(tmp_dd<1 || tmp_dd>31){
			showAlert(unlanguage('Некорректное значение дня###Incorrect day value'));
			return;
		}
		if(tmp_mm<1 || tmp_mm>12){
			showAlert(unlanguage('Некорректное значение месяца###Incorrect month value'));
			return;
		}
		if(tmp_yy<start_year || tmp_yy>end_year){
			showAlert(unlanguage('Некорректное значение года###Incorrect year value'));
			return;
		}
		xGetElementById(f_start).value = tmp_yy + '-' + (tmp_mm<10?'0':'') + tmp_mm + '-' + (tmp_dd<10?'0':'') + tmp_dd + ' 00:00:00';
		xGetElementById(f_end).value = tmp_yy + '-' + (tmp_mm<10?'0':'') + tmp_mm + '-' + (tmp_dd<10?'0':'') + tmp_dd + ' 23:59:59';
		var str = tmp_dd + '.' + (tmp_mm<10?'0':'') + tmp_mm + '.' + tmp_yy;
		xGetElementById('date_'+f_typesID+'_result').innerHTML = str;
		break;
	}
	case(2):{
		var tmp_yy = xGetElementById('yy_ph_'+f_typesID).value.replace(/^0/, '');
		if(tmp_yy==''){
			showAlert(unlanguage('Введены неполные данные###Non-complete data'));
			return;
		}
		if(tmp_yy<start_year || tmp_yy>end_year){
			showAlert(unlanguage('Некорректное значение года###Incorrect year value'));
			return;
		}
		xGetElementById(f_start).value = tmp_yy + '-01-01 00:00:00';
		xGetElementById(f_end).value = tmp_yy + '-12-31 23:59:59';
		var str = tmp_yy + 'г.';
		xGetElementById('date_'+f_typesID+'_result').innerHTML = str;
		break;
	}
	case(3):{
		var tmp_yy1 = xGetElementById('yy_ph_'+f_typesID+'1').value.replace(/^0/, '');
		var tmp_yy2 = xGetElementById('yy_ph_'+f_typesID+'2').value.replace(/^0/, '');
		if(tmp_yy1=='' || tmp_yy2==''){
			showAlert(unlanguage('Введены неполные данные###Non-complete data'));
			return;
		}
		if(tmp_yy1<start_year || tmp_yy1>end_year || tmp_yy2<start_year || tmp_yy2>end_year){
			showAlert(unlanguage('Некорректное значение года###Incorrect year value'));
			return;
		}
		if(tmp_yy1>=tmp_yy2){
			showAlert(unlanguage('Некорректное задание диапазона###Incorrect range declaration'));
			return;
		}
		xGetElementById(f_start).value = tmp_yy1 + '-01-01 00:00:00';
		xGetElementById(f_end).value = tmp_yy2 + '-12-31 23:59:59';
		var str = tmp_yy1 + '&nbsp;&mdash;&nbsp;' + tmp_yy2 + 'гг.';
		xGetElementById('date_'+f_typesID+'_result').innerHTML = str;
		break;
	}
	case(4):{
		var tmp_yy = xGetElementById('yy_ph_'+f_typesID).value.replace(/^0/, '');
		var tmp_cent = xGetElementById('cent_ph_'+f_typesID).value.replace(/^0/, '');
		if(tmp_yy=='' || tmp_cent==''){
			showAlert(unlanguage('Введены неполные данные###Non-complete data'));
			return;
		}
		if(tmp_cent<18 || tmp_yy2>22){
			showAlert(unlanguage('Некорректное значение века###Incorrect century value'));
			return;
		}
		xGetElementById(f_start).value = (tmp_cent-1)+tmp_yy.replace(/.$/, '')+'0-01-01 00:00:00';
		xGetElementById(f_end).value = (tmp_cent-1)+tmp_yy.replace(/.$/, '')+'9-12-31 23:59:59';
		var str = tmp_yy.replace(/.$/, '')+'0-е гг. ' + tmp_cent + 'в.';
		xGetElementById('date_'+f_typesID+'_result').innerHTML = str;
		break;
		break;
	}
	}
	hideAlert();
}

function clearAdvDateForm(f_typesID, f_start, f_end){
	xGetElementById(f_typesID).value = '';
	xGetElementById(f_start).value = '';
	xGetElementById(f_end).value = '';
	for(var i=1; i<=4; i++)
		xGetElementById('date_'+f_typesID+i).checked = false;
	xGetElementById('date_'+f_typesID+'_result').innerHTML = '&mdash;';
}

function il_switchToEditMode(id, type, hash){
	var obj = xGetElementById(id);
	if(!obj) return;
	var p = obj.parentNode;
	var clear_id = id.replace(/_div$/, '');
	var t_id = clear_id+'_tbl';
	var w = parseInt(xWidth(id));
	var h = parseInt(xHeight(id));
	var tb = new_TBODY();
	var tr = new_TR(tb);
	var t = new_TABLE(tr);
	xWidth(t, w);
	xHeight(t, h);
	var td1 = new_TDwWIDTH(tr, (w-42));
	var td2 = new_TDwWIDTH(tr, 21);
	td2.style.verticalAlign='top';
	var td3 = new_TDwWIDTH(tr, 21);
	td3.style.verticalAlign='top';
	xInnerHtml(td2, '<a href=./ id='+clear_id+'_saver onClick=\"il_switchToViewMode(this.id.replace(/_saver$/, \'\'), \''+hash+'\', 1);return false\"><img title=\''+unlanguage('Сохранить###Save')+'\' src='+htmlrootpath+'/images/icons/save.gif style=\"margin-left:5px\" border=0 /></a>');
	xInnerHtml(td3, '<a href=./ id='+clear_id+'_saver onClick=\"il_switchToViewMode(this.id.replace(/_saver$/, \'\'), \''+hash+'\', 0);return false\"><img title=\''+unlanguage('Отмена###Cancel')+'\' src='+htmlrootpath+'/images/icons/up.gif style=\"margin-left:5px\" border=0 /></a>');
	obj.oldDisplay = xDisplay(id);
	xDisplay(id, 'none');
	
	if(type=='text' || type=='int' || type=='float' || type=='password')
		var inp = new_INPUT(td1, clear_id);
	else if(type=='textarea' || type=='WYSIWYG')
		var inp = new_TEXTAREA(td1, clear_id);

	obj.saveImg = document.createElement('IMG');
	obj.saveImg.src = htmlrootpath+'/images/icons/save.gif';
	obj.saveImg.className = 'editableTextImg';
	obj.saveImg.id = id+'_img';
	obj.saveImg.onclick = new Function('clearTimeout(xGetElementById(\''+id+'\').delayedTimeout);il_switchToViewMode(\''+id+'\', \''+hash+'\', 1);return false');
	inp.onkeydown = new Function("event", 'if(event.keyCode==13){clearTimeout(xGetElementById(\''+id+'\').delayedTimeout);il_switchToViewMode(\''+id+'\', \''+hash+'\', 1);}');

	// inp.onblur = new Function('if(this.menuopened==false){xGetElementById(\''+id+'\').delayedTimeout = setTimeout("il_switchToViewMode(\''+id+'\', \''+hash+'\', 0);", 1000);}this.menuopened=false;contextMenuObj.hideHandler=new Function("contextMenuObj.createFromArray();contextMenuObj.hideHandler=null;il_switchToViewMode(\''+id+'\', \''+hash+'\', 0);");return false');
	inp.onblur = new Function('xGetElementById(\''+id+'\').delayedTimeout = setTimeout("il_switchToViewMode(\''+id+'\', \''+hash+'\', 0);", 500);}return false');
	inp.id = clear_id+'_input';
	inp.className = obj.className;
	inp.className = 'editableText';
	inp.value = xInnerHtml(id);
	inp.menuopened = false;

	// xAddEventListener(inp, 'contextmenu', new Function("event", "this.menuopened=true;clearTimeout(xGetElementById('"+id+"').delayedTimeout);xStopPropagation(event);oldContItems=contextMenuObj.items;contextMenuObj.items=[{title:unlanguage('Отменить###Cancel'), clickhandler:''},{title:unlanguage('Сохранить###Save'), clickhandler:''}];contextMenuObj.createFromArray();contextMenuObj.show(event, '"+hash+"');contextMenuObj.items=oldContItems;return false"), true);

	// xWidth(inp, (w-30));
	xWidth(inp, w);
	xHeight(inp, h);
	// p.insertBefore(t, xGetElementById(id));

	p.insertBefore(inp, xGetElementById(id));
	p.insertBefore(obj.saveImg, xGetElementById(id));

	t.id = t_id;
	inp.focus();

	if(type=='WYSIWYG'){
		xHeight(inp, (100+h));
		var inp_w = new HTMLArea(clear_id+'_input');
		inp_w.registerPlugin(ContextMenu);
		inp_w.registerPlugin(TableOperations);
		inp_w.config.pageStyle = 'body { background-color: white; color: black; font-family: verdana, sans-serif; font-size:80%; width:'+w+'px; height:'+(100+h)+'px; } ';
		inp_w.config.registerButton('my-quotes', 'Quote text', htmlrootpath+'/js/htmlarea/images/my_quot.gif', false, function(editor, id) { editor.surroundHTML('&laquo;', '&raquo;');});
		inp_w.config.registerButton('my-mdash', 'Длинное тире', htmlrootpath+'/js/htmlarea/images/ed_hr.gif', false, function(editor, id) { editor.insertHTML('&mdash;');});
		inp_w.config.toolbar[0].push([ 'my-quotes' ]);
		inp_w.config.toolbar[0].push([ 'my-mdash' ]);
		inp_w.generate();
	}

}

function il_switchToViewMode(id, hash, wsave){
	var clear_id = id.replace(/_div$/, '');
	// var t_id = clear_id+'_tbl';
	var inp_id = clear_id+'_input';
	var img_id = clear_id+'_img';
	var html = xGetElementById(inp_id).value;
	var p = xGetElementById(inp_id).parentNode;
	p.removeChild(xGetElementById(inp_id));
	p.removeChild(xGetElementById(img_id));
	if(wsave){
		xInnerHtml(id, html);
		xajax__respondent('update_db_info', hash, escape(html));
	}
	xDisplay(id, xGetElementById(id).oldDisplay);
}

function il_submit(output){
	if(output=='' || output=='ok') return;
	else showAlert(output);
}

function delayedExec(obj, cmd, timeout){
	if(!obj.id) obj.id = 'obj'+Math.round(Math.random()*100000);
	obj.tmp_dl_int = setTimeout(new Function("_clearTimeout(xGetElementById('"+obj.id+"').tmp_dl_int);"+cmd), timeout);
}

function showFileInfoUpdateForm(new_arr, old_arr){
	var old_wid = alertWindow.width;
	var old_hei = alertWindow.height;
	var old_buttons = alertWindow.buttons;
	function _showFileInfoUpdateForm(id, title, old_arr, new_txt, acts, clickhandler){
		var old_fields = old_arr[id+'_fields'].split(',');
		var old_postfixes = old_arr[id+'_postfixes'].split(',');
		var old_sep = old_arr[id+'_sep'];
		var old_sl = (old_postfixes.length<2);
		var old_parts = new Array();
		var acts_arr = {overwrite:unlanguage('перезаписать###overwrite'), append:unlanguage('дописать###append'), skip:unlanguage('игнорировать###ignore')};
		for(var i=0;i<old_fields.length;i++){
			if(old_sl)
				old_parts[old_parts.length] = document.common_form[old_fields[i]].value;
			else {
				var s = '';
				for(var k=0;k<old_postfixes.length;k++){
					s += document.common_form[old_fields[i]+'_'+old_postfixes[k]].value+old_sep;
				}
				var re = new RegExp(old_sep+'$');
				old_parts[old_parts.length] = s.replace(re, '');
			}
		}
		var inps = '<input type=text name='+id+'_action id='+id+'_action value="skip" /><input type=hidden name='+id+'_txt id='+id+'_txt value="'+new_txt.replace(/\"/g, '&quot;')+'" />';
		for(var i=0;i<acts.length;i++)
			inps += '<div style=\'white-space:nowrap'+(acts[i].match(/^no/)?';display:none':'')+'\' ><input type=radio '+(acts[i].match(/^no/)?'disabled ':'')+(acts[i].match(/(skip)/)?'checked ':'')+'class=commonCheck id='+id+'_radio_'+(i+1)+' value="'+acts[i].replace(/^no/, '')+'" name='+id+'_grp onClick="this.form.'+id+'_action.value=this.value;'+(clickhandler?clickhandler:'')+'" /><label for='+id+'_radio_'+(i+1)+'>'+acts_arr[acts[i].replace(/^no/, '')]+'</label></div>';
		return '<tr valign=top><td class=btd colspan=3 style="background:#F0F0F0;font-weight:bold">'+title+'</td></tr><tr valign=top><td class=btd>'+inps+'</td><td class=btd>'+old_parts.join(old_sep)+'</td><td class=btd id='+id+'_text>'+new_txt+'</td></tr>';
	}
	var f=['authors', 'captions', 'keywords'];
	acts_parts = Array();
	for(var i=0;i<f.length;i++)
		acts_parts[acts_parts.length] = f[i]+":{fields:'"+old_arr[f[i]+'_fields']+"', postfixes:'"+old_arr[f[i]+'_postfixes']+"', sep:'"+old_arr[f[i]+'_sep']+"', sl:"+((old_arr[f[i]+'_postfixes']!='')?0:1)+", txt:frm."+f[i]+"_txt.value, action:frm."+f[i]+"_action.value}";
	alertWindow.buttons = Array({title:'Далее >>', action:"var frm=xGetElementById('jpeg_updater'); var new_arr={"+acts_parts.join(', ')+"}; updateFileInfoUpdateForm(new_arr); this.obj.width = "+old_wid+"; this.obj.height = "+old_hei+"; this.obj.refresh(); alertWindow.hide();alertWindow.refresh_buttons();", def:false});
	delete acts_parts;
	alertWindow.refresh_buttons();
	var s = 
		'<form name=jpeg_updater id=jpeg_updater><table cellpadding=0 cellspacing=0 border=0>'+
		'<tr><td class=btd_head>&nbsp;</td><td class=btd_head>прежнее</td><td class=btd_head>file-info</td></tr>'+
		_showFileInfoUpdateForm('authors', 'Автор', old_arr, /*new_arr.author.replace(/###.*$/g, '')*/new_arr.author, ['overwrite', 'noappend', 'skip'], "if(this.form.jpeg_fields_all_chk.checked){var f=['captions', 'keywords'];for(var i=0;i<f.length;i++)for(var j=1;j<=3;j++)if(xGetElementById(\'authors_radio_\'+j).checked){xGetElementById(f[i]+'_radio_'+j).disabled=false;xGetElementById(f[i]+'_radio_'+j).onclick();xGetElementById(f[i]+'_radio_'+j).checked=true;}else{xGetElementById(f[i]+'_radio_'+j).checked=false;xGetElementById(f[i]+'_radio_'+j).disabled=true;}};")+
		_showFileInfoUpdateForm('captions', 'Описание', old_arr, new_arr.caption, ['overwrite', 'append', 'skip'])+
		_showFileInfoUpdateForm('keywords', 'Ключевые слова', old_arr, new_arr.keywords, ['overwrite', 'append', 'skip'])+
		'</table>'+
		'<br /><input type=checkbox class=commonCheck id=jpeg_fields_all_chk onClick="var f=[\'captions\', \'keywords\'];for(var i=0;i<f.length;i++)for(var j=1;j<=3;j++){if(xGetElementById(\'authors_radio_\'+j).checked)xGetElementById(\'authors_radio_\'+j).onclick();xGetElementById(f[i]+\'_radio_\'+j).disabled = !xGetElementById(\'authors_radio_\'+j).checked && this.checked;}" /><label for=jpeg_fields_all_chk>'+unlanguage('одинаковое действие для всех полей###same action for all fields')+'</label>'+
		'</form>';
	alertWindow.setText(s);
	alertWindow.resizeTo(600, 500);
	alertWindow.show();
	alertWindow.buttons = old_buttons;
}
function updateFileInfoUpdateForm(new_arr){
	var f=['authors', 'captions', 'keywords'];
	// var handlers={authors:xGetElementById('authorsID_list_check_but').onclick, keywords:xGetElementById('keywordsID_list_check_but').onclick};
	var handlers={authors:function(){if(document.common_form.onsubmit != nonCompleteAuthor && document.common_form.onsubmit != nonCompleteKeywords) frmOnSubmit = document.common_form.onsubmit; document.common_form.onsubmit = nonCompleteAuthor;}, keywords:function(){if(document.common_form.onsubmit != nonCompleteAuthor && document.common_form.onsubmit != nonCompleteKeywords) frmOnSubmit = document.common_form.onsubmit; document.common_form.onsubmit = nonCompleteKeywords;}};
	for(var i=0;i<f.length;i++)
		if(new_arr[f[i]].action!='skip'){
			var postfixes = new_arr[f[i]].postfixes.split(',');
			new_arr[f[i]].sl = (postfixes.length<2);
			var flds = new_arr[f[i]].fields.split(',');
			for(var j=0;j<flds.length;j++)
				if(new_arr[f[i]].sl)
					if(new_arr[f[i]].action=='overwrite')
						document.common_form[flds[j]].value = new_arr[f[i]].txt;
					else if(new_arr[f[i]].action=='append')
						document.common_form[flds[j]].value += new_arr[f[i]].txt;
					else {}
				else {
					var txt_parts = new_arr[f[i]].txt.split(new_arr[f[i]].sep);
					for(var k=0;k<postfixes.length;k++)
						if(new_arr[f[i]].action=='overwrite')
							document.common_form[flds[j]+'_'+postfixes[k]].value = (txt_parts[k]?txt_parts[k]:'');
						else if(new_arr[f[i]].action=='append')
							document.common_form[flds[j]+'_'+postfixes[k]].value += (txt_parts[k]?txt_parts[k]:'');
						else {}
				}
			if(handlers[f[i]]) handlers[f[i]]();
		}
}

function _clearTimeout(obj){
	if(!obj) return;
	clearTimeout(obj);
	obj=null;
}

// from http://www.tigir.com/javascript_select.htm
function addOptionToSelectBox(oListbox, text, value, isDefaultSelected, isSelected){
  var oOption = document.createElement("option");
  oOption.appendChild(document.createTextNode(text));
  oOption.setAttribute("value", value);

  if (isDefaultSelected) oOption.defaultSelected = true;
  else if (isSelected) oOption.selected = true;

  oListbox.appendChild(oOption);
}

xajax.arrayToXML = function(arr){
	for(var i=0; i<arr.length; i++){
		if(typeof(arr[i])=='object')
			arr[i] = xajax.objectToXML(arr[i]);
	}
	return xajax.objectToXML(arr);
}


/* =============================
    ДОПОЛНИТЕЛЬНЫЕ СТИЛИ
============================= */

document.write("<style type=\"text/css\">"+
	".main_menu_stripe {background-image: url("+htmlrootpath+"/images/main_menu_bg.gif);}"+
	".sub_menu, .sub_menu_act, .sub_menu_curr, "+
	".admin_menu, .admin_menu_act "+
	"	{background-image:url("+htmlrootpath+"/images/list-bullet-close.gif);background-repeat:no-repeat;background-position:+4px +4px;} "+
	".sub_menu_act, .sub_menu_curr, .tree_node_act, .tree_node_curr {background-color:#F8F8F8;}"+
	cross_PNG_background('.white_rounds', '/images/white_rounds.png', '', 'crop')+
	cross_PNG_background('.recycleBin, .recycleBinAct', '/images/trash.png', '', 'crop')+
	cross_PNG_background('.albumFolder, .albumFolder', '/images/blue_picsfolder_128.png', '', 'crop')+

	cross_PNG_background('.phAlbumBlock, .phPortfolioAlbumBlock, .phFeatureAlbumBlock', '/images/archive/album_frame.png', '', 'crop')+
	
	".white_rounds {width:25px;height:"+(isMozilla?20:21)+"px;padding-top:"+(isMozilla?5:4)+"px;}"+
	"</style>");

var scripts_is_loaded = true;

// dhtmlLoadStyle(htmlrootpath+'/css/archive/modal_dialog.css');
// if(isMSIE)
	// document.write("<style type='text/css'>\n"+
	// ".xModalDialogGreyElement { filter: alpha(opacity=30); }\n"+
	// "</style>");
	