var post_addfavorites_object;
var post_addfavorites_image;
var post_addfavorites_width;
var post_addfavorites_height;
var post_addfavorites_sizes;
var post_addfavorites_counter;
var post_addfavorites_timer;

function post_favorites_periodic()
{
	if(typeof(post_addfavorites_image)=='undefined') return;
	var w=Math.floor(post_addfavorites_width*post_addfavorites_sizes[post_addfavorites_counter]);
	var h=Math.floor(post_addfavorites_height*post_addfavorites_sizes[post_addfavorites_counter++]);
	if(h==0 && w==0 ) {
		if(post_addfavorites_object) { post_addfavorites_object.parentNode.removeChild(post_addfavorites_object); }
		return;
	}
	post_addfavorites_image.style.width=w+'px';
	post_addfavorites_image.style.height=h+'px';
	var leftpad = Math.floor((post_addfavorites_width-w)/2);
	var toppad = Math.floor((post_addfavorites_height-h)/2);
	post_addfavorites_image.style.paddingLeft=leftpad+'px';
	post_addfavorites_image.style.paddingTop=toppad+'px';
	var rightpad = post_addfavorites_width-w-leftpad;
	post_addfavorites_image.style.paddingRight=rightpad+'px';
	var bottompad = post_addfavorites_height-h-toppad;
	post_addfavorites_image.style.paddingBottom=bottompad+'px';
	if(post_addfavorites_counter>=post_addfavorites_sizes.length) { post_addfavorites_counter=0; }
	post_addfavorites_timer=setTimeout(post_favorites_periodic,200);
}

function post_favorites_stopimage(doit)
{
	post_addfavorites_image.style.width=post_addfavorites_width+'px';
	post_addfavorites_image.style.height=post_addfavorites_height+'px';
	post_addfavorites_image.style.paddingLeft=0;
	post_addfavorites_image.style.paddingTop=0;
	post_addfavorites_image.style.paddingRight=0;
	post_addfavorites_image.style.paddingBottom=0;
	post_addfavorites_counter=0;
	if(post_addfavorites_timer) {
		clearTimeout(post_addfavorites_timer);
		post_addfavorites_timer=undefined;
	}
	if(doit) {
		post_addfavorites_sizes=new Array(0.7,0.4,0.2,0);
		post_favorites_periodic();
	}
	else {
		post_addfavorites_image=undefined;
	}
}

function post_favorites_startimage(obj)
{
	post_addfavorites_image=obj.childNodes[0];
	post_addfavorites_width=post_addfavorites_image.width;
	post_addfavorites_height=post_addfavorites_image.height;
	post_addfavorites_counter=0;
	post_addfavorites_sizes=new Array(0.82,1,0.82,1,1,1);
	post_favorites_periodic();
}

function create_favortags_form()
{
	var add = !PerlVar_FavoritesRequest;
	var div = document.createElement('div');
	div.setAttribute('id','favortagsdiv');
	div.setAttribute('class','favoradd');
	div.className = 'favoradd';
	div.style.display='none';
	var html = '<form method="POST" id="favorform" onsubmit="return set_favortags(this)" action="#"> ';
	html+='<div><span><b>'+(add?'Добавить в &quot;избранное&quot;':'Редактировать метки')+'</b><br /> ';
	html+='Метки: <a onclick="return show_help(event,\'Записи могут содержать «Метки» — ключевые слова, которые пользователи указывают при публикации записей.<br /><br />В блоке «Метки пользователя» выведены ключевые слова, которые пользователь часто указывает в своих записей.<br /><br />При клике на ключевое слово в своем блоге вы увидите все свои записи с этой Меткой.<br /><br />Чем больше шрифт Метки, тем больше ей отмечено записей в вашем блоге.\')" href="#"><img src="http://img.mail.ru/r/foto2/context_help.gif" border=0 width="11" height="11" alt="" class="ico_context_help" /></a><!-- /IFNOT FavoritesRequest --></span> ';
	html+='<input type=hidden name="postid" id="favorpostid" value="">';
	html+='<textarea id="favortagarea" name="tagList"></textarea>';
	html+='<span style="display:block;padding-bottom:4px;" id="journallasttags">';
	if(typeof(PerlVar_LastTags)!='undefined' && PerlVar_LastTags!='') {
		html+='Последние: ';
		var inparr = PerlVar_LastTags.split(',');
		while(a=inparr.shift()) {
			a=a.replace(/(^\s+)|(\s+$)/g, "");
			html+='<a href="#" class="lasttags" onclick="return post_favorites_addtag(\''+a.replace(/\\/g,'\\\\')+'\')">'+a+'</a>';
			if(inparr.length) html+=', ';
		}
	}
	html+='</span>';
	html+='<input type=submit value=" '+(add?'Добавить':'Сохранить')+'" class="add">';
	html+='<input type=button value=" Отменить " onclick="close_favortags()" class="close">';
	html+='<a onclick="return close_favortags();" href="#"><img src="http://img.mail.ru/r/foto2/ico_close.gif" width="7" height="7" alt="Закрыть" border=0 class="ico_close" /></a>';
	html+='</div></form>';
	div.innerHTML = html;
	document.body.insertBefore(div,document.body.firstChild);
	return div;
}

function post_favorites_addtag(tag)
{
	var tinput = document.getElementById('favortagarea'); 
	var inparr = tinput.value.split(',');
	while(a=inparr.shift()) {
		if(a.substr(0,1) == ' ') a=a.substr(1);
		if(a == tag) return false;
	}
	if(tinput.value != '') {
		tag = ', '+tag;
	}
	tinput.value += tag;
	return false;
}

function post_favortags_callback_add(res)
{
	if(res) {
		post_favorites_stopimage(true);
	}
	else {
		post_favorites_stopimage(false);
		alert('Пост ранее уже был добавлен в "Избранное!"');
	}
}

function post_favortags_callback_set(res)
{
	if(typeof(res) == 'undefined') {
		alert('Ошибка изменения меток!');
		return;
	}
	var parpar = post_addfavorites_object.parentNode;
	var str='Метки: ';
	var tags='';
	while(a=res.shift()) {
		str+='<a href="' + PerlVar_JournalDir + 'favorites/'+win2url(a)+'">'+a+'</a>';
		tags+=a;
		if(res.length) { str+=', '; tags+=','; }
	}
	var inner=parpar.innerHTML;
	var reg=new RegExp('(<img .*src=.*)','i');
	var pos=reg.exec(inner);
	var postid = document.getElementById('favorpostid').value;
	parpar.innerHTML=str+' <a href="#" onclick="return show_favortags(this,\''+postid+'\',\''+tags.replace(/\\/g,'\\\\')+'\')">'+pos[1];
}

function close_favortags()
{
    var divs = document.getElementById('favortagsdiv');
	divs.style.display = 'none';
	if(!PerlVar_FavoritesRequest) post_favorites_stopimage(false);
	return false;
}

function set_favortags()
{
    var divs = document.getElementById('favortagsdiv');
	divs.style.display = 'none';
	var forma = document.getElementById('favorform');
	var postid = document.getElementById('favorpostid').value;
	var tags = document.getElementById('favortagarea').value;
	if(PerlVar_FavoritesRequest)
		perl_set_favorites_tags(postid,tags,post_favortags_callback_set);
	else
		perl_add_favorites(postid,tags,post_favortags_callback_add);
	return false;
}

function show_favortags(obj,postid,tags)
{
	post_addfavorites_object = obj;
    var divs = document.getElementById('favortagsdiv');
	if(!divs) divs = create_favortags_form();
	var postinp = document.getElementById('favorpostid');
	if(divs.style.display == 'block' && postid == postinp.value) {
		divs.style.display = 'none';
	if(!PerlVar_FavoritesRequest) post_favorites_stopimage(false);
		return false;
	}
	if(!PerlVar_FavoritesRequest) {
		if(divs.style.display == 'block') post_favorites_stopimage(false);
		post_favorites_startimage(obj);
	}

	postinp.value = postid;
    var coord = getCoord(obj);
    divs.style.top  = coord.y + 10;
    divs.style.left = coord.x + 10;
	divs.style.display = 'block';
    var edit = document.getElementById('favortagarea');
	edit.value = tags;
    edit.focus();
	return false;
}
