/* loading */

$(document).ready(function(){
	$.ajaxSetup({  type: "POST" });
	
	$('#popup_message').jqm({overlay: 0});    
	$('#popup_message').jqmAddClose('#msg_close');
	
	$('#popup_video').jqm({overlay: 0});    
	$('#popup_video').jqmAddClose('#video_close');
	$('#popup_video').jqmAddClose('#video_close2');
	
	$('#popup_confirm').jqm({overlay: 0});	
	$('#popup_confirm').jqmAddClose('#confirm_no');
	
	$('#popup_complain').jqm({overlay: 0});	
	$('#popup_complain').jqmAddClose('#complain_close');
	
	$('#popup_send2friend').jqm({overlay: 0});	
	$('#popup_send2friend').jqmAddClose('#send2friend_close');
	
	$('#popup_ajax').jqm({overlay: 0});	
	
	$('textarea.resizable:not(.processed)').TextAreaResizer();

	if(!navigator.cookieEnabled)
	{
		alert2('Внимание!','Внимание!<br>В вашем браузере отключены cookies, необходимые для работы сайта. Вы не сможете войти на сайте с отключенными cookies.<br>Вам следует включить их или обратится к тому, кто знает как это сделать.');
	}
	
	// устанавливаем ширину поля каментов для ИЕ6
	if($('#comments_tree').length>0 && $.browser.msie && $.browser.version == "6.0")
	{
		var nw = screen.width-330;
		$('#comments_tree').css('width','690px');
	}
});




function complain(type, id)
{
  $('#complain_id').val(id);
	$('#complain_type').val(type);
	$('#complain_text').val('')
	$('#complain_title').html('Пожаловаться');
	if(type=='comment')
		$('#complain_description').html('Вы можете сообщить модератору о нарушении правил в данном комментарии.<br><br>Пожалуйста, укажите причину, по которой вы хотите обратить внимание на данный комментарий:');
	else
		$('#complain_description').html('Вы можете сообщить модератору о нарушении правил в данном материале.<br><br>Пожалуйста, укажите причину, по которой вы хотите обратить внимание на данный материал:');
	
	$('#popup_complain').jqmShow();
	return false;
}


function complainSend()
{
  var txt = $('#complain_text').val();
	var id = $('#complain_id').val();
	var type = $('#complain_type').val();
	
	if(txt.length==0)
	{
		alert('Пожалуйста, укажите причину жалобы.');
		return;
	}
	
	$('#popup_complain').jqmHide();
	ajax_show('Отправка сообщения...');
	$.post('/ajax/complain/',{'id':id, 'text':txt, 'type':type},function(data)
	{
		ajax_close();
		alert2('Сообщение отправлено','Ваше сообщение отправлено на рассмотрение модераторам.');
	});
}


function setAsRead(docid)
{
	var shown='';
	$('div.funread').each(function(i){
		shown+='('+this.id.replace('funread_','')+')';
	});
	
	$('#funread_'+docid).slideUp("fast");
	
	$.post('/ajax/setasread/',{'id':docid, 'shown':shown},function(data)
		{
			if(data!='error' && data!='empty')
			{
				$('#funreadlist').append(data);
			}
		});
	
	return false;
}

function slideToggle(id)
{
	$('#'+id+'_1').hide();
	$('#'+id+'_2').slideDown();
	return false;
}

function um_Toggle()
{
	if($('#um_items').get(0).style.display=='none')
		$('#um_items').slideDown();
	else
		$('#um_items').slideUp();
	return false;
}

function moreSmiles(id)
{
	if($('#bbextra'+id).css('display')=='none') 	
	{
		$('#bbmore').addClass('utri').removeClass('dtri');
		$('#bbextra'+id).slideDown();
	}
	else 
	{
		$('#bbmore').addClass('dtri').removeClass('utri');
		$('#bbextra'+id).slideUp();		
	}
	return false;
}


/* quotes */
var comment_selected = 0;
var last_selected = 0;
var current_str = false;
var quote_tm = false;
var quote_id;

function startSelectComment(start_id)
{
	current_str = false;
	var str = getSelectedText();
	if(str=='' || last_selected>0) comment_selected=start_id;
	else comment_selected=0;
}

function selectComment(end_id, e)
{
	if(comment_selected==0 || end_id != comment_selected) 
	{
		comment_selected=0;
		last_selected=0;
		current_str = false;
		return;
	}
	if(e.button==2) return;
	
	// получаем текст в выборке
	var str = getSelectedText();
	
	if(str!='') 
	{
		quote_id = end_id;
		last_selected = end_id;
		current_str = str;
		showQuote(e);
	}
	else
	{
		current_str = false;
		last_selected = 0;
	}
}


function getSelectedText()
{
	var txt = '';
  if (window.getSelection)
  {
     txt = window.getSelection();
  }
  else if (document.getSelection)
  {
     txt = document.getSelection();
  }
  else if (document.selection)
  {
     txt = document.selection.createRange().text;
  }
  return txt;
}


function showQuote(e)
{
	if(quote_tm) {clearTimeout(quote_tm);quote_tm=false;}
	var x;
	var y;
	if(e.x)
	{
		x=e.x;
		y=e.y;
	}
	else
	{
		x=e.pageX;
		y=e.pageY;
	}
	
		
	if( x+20+300 > getWindowWidth() )
	{
		x -= 300;
	}
	else
	{
		x += 20;
	}
	if( y+20+80 > getWindowHeight() )
	{
		y -= 80;
	}
	else
	{	
		y+=20;
	}
	
	document.getElementById('quote_comment').style.top = y+'px';
	document.getElementById('quote_comment').style.left = x+'px';
	$('#quote_comment').fadeIn();
	
	quote_tm = setTimeout(fadeQuote, 10000);
}

function fadeQuote()
{
	current_str = false;
	if(quote_tm) {clearTimeout(quote_tm);quote_tm=false;}
	$('#quote_comment').fadeOut("fast");	
	return false;
}

function outsideQuote()
{	
	if(quote_tm) {clearTimeout(quote_tm);quote_tm=false;}
	$('#quote_comment').fadeOut("fast");	
}

function insertQuote()
{
	var type = 'comment';
	if($('#mail_form').length>0) type='mail';
	
	if(type=='comment')
	{
		showCommentFormNoHide(quote_id);
		var textarea = document.getElementById('comment_tex_'+quote_id);
		var author = $('#quote'+quote_id).html();
		if(!author) author = $('#a_author').html();
		if(author) var text = '[quote="'+author+'"]' + current_str + '[/quote]'+"\n";
		else var text = '[quote]' + current_str + '[/quote]'+"\n";
	}
	else
	{
		var textarea = document.getElementById('text_id');
		var text = '[quote]' + current_str + '[/quote]'+"\n";
	}
		
	if (!isNaN(textarea.selectionStart))
	{
		var sel_start = textarea.selectionStart;
		var sel_end = textarea.selectionEnd;

		mozWrap(textarea, text, '')
		textarea.selectionStart = sel_start + text.length;
		textarea.selectionEnd = sel_end + text.length;
	}		
	else if (textarea.createTextRange && textarea.caretPos)
	{
		if (baseHeight != textarea.caretPos.boundingHeight) 
		{
			textarea.focus();
			storeCaret(textarea);
		}		
		var caret_pos = textarea.caretPos;
		caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) == ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text;
		
	}
	else
	{
		textarea.value = textarea.value + text;
	}
	textarea.focus();
	return false;
}






/* comments smiles window */

var sm_showed_at = null;
var sm_textarea_id = null;

function closeSmilesAt()
{
	if(!sm_showed_at) return;
	$('#smiles-popup').remove();
	sm_showed_at.src = '/i/csm.gif';
	sm_showed_at=null;
	sm_textarea_id=null;	
}

function showSmilesAt(elem, area_id)
{
	if(elem==sm_showed_at) {closeSmilesAt();return;}
	elem.src = '/i/csmclose.gif';
	
	$(elem.parentNode).prepend( $('#smiles-popup2').clone().attr('id','smiles-popup').show() );		
	sm_showed_at = elem;
	sm_textarea_id = area_id;
}

function em2(text) {
	insert_text(' '+text+' ', sm_textarea_id);
	closeSmilesAt();
}

/* status */
this.vtip = function() {    
    this.xOffset = 0;
    this.yOffset = -15; 
    
    $("a.vtip").unbind().hover(    
        function(e) {
						
						if(this.rel)
							$('#texttip').html(this.rel);
						else
							$('#texttip').html(this.title);
						
					
            this.t = this.title;
            this.title = ''; 
            this.top = (e.pageY + yOffset - $('#vtip').height() ); 
						this.left = (e.pageX + xOffset);
						if(this.left + 350 > getWindowWidth()) 
						{
							this.left-=310;
							$('#vtipArrow').addClass('right');
							$('#vtipArrow2').addClass('right');
						}
						else
						{
							$('#vtipArrow').removeClass('right');
							$('#vtipArrow2').removeClass('right');
						}
						
						if(this.top - 30 < getScrollTop()) 
						{
							this.top = this.top + $('#vtip').height() + 50;
							$('#vtipArrow2').show();
							$('#vtipArrow').hide();
						}
						else
						{
							$('#vtipArrow2').hide();
							$('#vtipArrow').show();
						}
						
						if(document.all)
	            $('#vtip').css("top", this.top+"px").css("left", this.left+"px").show();
						else
							$('#vtip').css("top", this.top+"px").css("left", this.left+"px").fadeIn("normal");						
        },
        function() {
            this.title = this.t;
            $("#vtip").hide();
        }
    ).mousemove(
        function(e) {
						this.top = (e.pageY + yOffset - $('#vtip').height() ); 
						this.left = (e.pageX + xOffset);                         
						if(this.left + 350 > getWindowWidth()) 
						{
							this.left-=310;
							$('#vtipArrow').addClass('right');
							$('#vtipArrow2').addClass('right');
						}
						else
						{
							$('#vtipArrow').removeClass('right');
							$('#vtipArrow2').removeClass('right');
						}
						
						if(this.top - 30 < getScrollTop()) 
						{
							this.top = this.top + $('#vtip').height() + 50;
							$('#vtipArrow2').show();
							$('#vtipArrow').hide();
						}
						else
						{
							$('#vtipArrow2').hide();
							$('#vtipArrow').show();
						}
						
            $("#vtip").css("top", this.top+"px").css("left", this.left+"px");
        }
    );            
    
};
jQuery(document).ready(function($){vtip();}) 

function editStatus()
{
	$('#status_str').hide();
	$('#status_edit').show();
	$('#status_field').get(0).focus();
	return false;
}

function cancelStatus()
{
	var str = $('#status_a').html();
	if(str!='не задан') $('#status_field').val(str);
	else $('#status_field').val('');
	$('#status_edit').hide();
	$('#status_str').show();
	return false;
}

var status_sending = false;
function saveStatus(userid)
{
	if(status_sending) return false;
	
	var str = $('#status_field').val();
	if(str=='Ваш статус, максимум 100 символов') 
	{
		$('#status_field').focus();
		return false;
	}
	
	status_sending = true;
	$('#status_buttons').html('идёт сохранение...');
	
	$.post("/ajax/status/save/",{str:str,userid:userid},
		function(data)
		{
			status_sending = false;
			if(data=='error')
			{
				return false;
			}
			
			$('#profilestatus').html(data);
		}	
	);
	
	return false;
}

function showStatusHelp()
{
  alert2('Ваш статус','В поле "Статус" вы можете указать своё настроение, написать чем занимаетесь сейчас, какую музыку слушаете, а также все остальное что придёт вам в голову.<br><br>Единственное ограничение - длина не более 100 символов.');
  return false;
}

	
function delete_status_history(id)
{
	$.post("/ajax/status/delete/",{id:id},
		function(data)
		{
			if(data=='error')
			{
				return false;
			}			
			$('#sh_'+id).slideUp();
		}	
	);	
	return false;
}


/* polls */	
var poll_votes_status = new Array();

function makePollVote(id) 
{
		var poll = document.getElementById('poll_' + id);
		var answers = poll.getElementsByTagName('input');
		var votes = '';
		if(answers != undefined) {
			for(var i=0;i<answers.length;i++) {
				if(answers[i].checked == true) {
					votes += answers[i].value + ",";
				}
			}
			if(votes.length > 0) {	
				$('#poll_button_'+id).attr("disabled","disabled");
				poll_votes_status[id] = 0;
				$.post("/ajax/poll/vote/", { 'pollid':id, 'votes': votes },
				function(data)
					{
						$('#poll_'+id).replaceWith(data);
					}
				);		
			} else {
				alert2('Опрос','Необходимо выбрать вариант(ы) ответа!');
			}
		}
	}
function showPollVotes(id)
{
	$('#poll_results_'+id).hide();
	$('#poll_insert_'+id).hide();
	if(poll_votes_status[id]!=1)
	{
		poll_votes_status[id] = 1;
		
		$('#poll_votes_'+id).html('загрузка ответов...');
		$('#poll_votes_'+id).slideDown();
		
		$.get("/ajax/poll/getvotes/", { 'pollid':id },
				function(data)
					{
						if(data!='error')
						{						
							$('#poll_votes_'+id).html(data);
						}
					}
				);
	}
	else
	{
		$('#poll_votes_'+id).toggle();
	}
	return false;
}
	

var poll_results_status = new Array();	
function showPollResults(id)
{
	$('#poll_votes_'+id).hide();
	if(poll_results_status[id]!=1)
	{
		poll_results_status[id] = 1;
		
		$('#poll_results_'+id).html('загрузка результатов...');
		$('#poll_results_'+id).slideDown();
		
		$.get("/ajax/poll/getresults/", { 'pollid':id },
				function(data)
					{
						if(data!='error')
						{						
							$('#poll_results_'+id).html(data);
						}
					}
				);
	}
	else
	{
		$('#poll_results_'+id).toggle();
	}
	return false;
}
	
	
function endPoll(id)
{
	if(!confirm('Завершить данный опрос досрочно?')) return false;
	
	$.post("/ajax/poll/end/", { 'pollid':id },
				function(data)
					{
						if(data!='error')
						{						
							$('#poll_'+id).replaceWith(data);
						}
					}
	);
	return false;
}


/* tests */
var test_already_status = 0;	
function showTestAlready(id)
{
	if(test_already_status!=1)
	{
		test_already_status = 1;
		
		$('#test_already').html('загрузка списка...');
		$('#test_already').slideDown();
		
		$.get("/ajax/test/already/", { 'testid':id },
				function(data)
					{
						if(data!='error')
						{						
							$('#test_already').html(data);
							document.location.href='#already';
						}
					}
				);
	}
	else
	{
		$('#test_already').toggle();
	}
	return false;
}	
function nextQuestion()
{
	$('#question_message').hide();
	
	var v = $('input[name=question]:checked').val()
	if(!v)
	{
		$('#question_message').html('Выберите вариант ответа.').show();
		return false;
	}
	
	$('#next_button').replaceWith('Отправка...');
	$.post('/ajax/test/step/',
			     { 'v':v  }, 
			     function(data)
					 {
					 		var str = data.replace('Redirect: ','');
					 		if(str!=data)
							{
								document.location.href = str;
							}
							else
							{
					 			$('#stepbox').html(data);
							}
				   });
	return false;
}


/* rating */
function voteForDoc(docid,rate,indoc)
{	
	$.post("/ajax/vote/", { documentid: docid, rate: rate, indoc:indoc },
		  function(data){
		  	if(data && data.length>0)
		  	{
					if(data.substr(0,9)=='<!DOCTYPE') return false;
					if(data.substr(0,6)=='Error:')
					{
						alert2('Внимание',data.substr(6));
						return false;
					}
		    	$("#vote"+docid).html(data);
		  	}
		  });
	return false;
}

function voteForCom(cid,rate)
{	
	$.post("/ajax/cvote/", { commentid: cid, rate: rate },
		  function(data){
				if(data=='points1')
				{
					alert2('Голосование за комментарий','У вас закончился дневной заряд голосов за комментарии.<br><br><a href="/points/">Узнать о том, как увеличить свой заряд</a>');
					return;
				}
				if(data=='points2')
				{
					alert2('Голосование за комментарий','У вас не хватает голосов чтобы поставить минус.<br>Для отрицательной оценки требуется заряд в два голоса.');
					return;
				}
		  	if(data && data.length<300 && data.length>0)
		  	{
		    	$("#cvote"+cid).html(data);
		  	}
		  });
	return false;
}


/* blog inserts */
function showPollInsert(id)
{
	$('#poll_votes_'+id).hide();
  $('#poll_insert_'+id).toggle();
  return false;
}

function showPollPreview(id)
{
  $('#poll_preview_'+id).toggle();
  return false;
}

function showBlogInsert()
{
  $('#add2fav').hide();
  $('#bloginsert1').toggle();
  return false;
}

function previewBlogInsert()
{
  $('#bloginsert2').toggle();
  return false;
}
function showCodes(mod)
{
	if(mod)
	{
		$('#codes_top').hide();
		$('#codes').show();
	}
	else
	{
		$('#codes_top').show();
		$('#codes').hide();	
	}
	return false;
}


/* popups and tabs */
function ajax_show(title)
{
	$('#ajax_title').html(title);
	$('#popup_ajax').jqmShow();
}

function ajax_close()
{
	$('#popup_ajax').jqmHide();
}
function initTabs(id,count)
{
	for(var i=1;i<=count;i++)
	{
		$('#h_'+id+'_'+i).bind("click", {num: i},  function(e) {
				selectTab(id,count,e.data.num);
				e.preventDefault();
		});
	}
}

function selectTab(id,count,num)
{
	for(var i=1;i<=count;i++)
	{
		$('#h_'+id+'_'+i).removeClass('active');
		$('#c_'+id+'_'+i).hide();
	}
	$('#h_'+id+'_'+num).addClass('active');
	$('#c_'+id+'_'+num).show();
}



var tabs_content = new Array();
var tabs_count = new Array();
var tabs_lifetime = new Array();
var tabs_activity = new Array();

function initAjaxTabs(id,count)
{
	tabs_count[id] = count;
	tabs_content[id] = new Array();
	tabs_lifetime[id] = new Array();
	tabs_activity[id] = 0;
	for(var i=1;i<=count;i++)
	{
		$('#h_'+id+'_'+i).bind("click", {num: i},  function(e) {
				var start = this.href.indexOf('#');
				var part = this.href.substring(start);
				if(part=='#') e.preventDefault();
				selectAjaxTab(id,e.data.num);
		});
		if($('#h_'+id+'_'+i).hasClass('active'))
		{
			tabs_content[id][i] = $('#a_'+id).html();
			var date_obj = new Date();
			tabs_lifetime[id][i] = date_obj.getTime();
		}
	}
}



function ajaxSimplePage(id,lnk,page)
{
	$('#ajax_pager_'+id).html('Идёт загрузка...');
	
	$.get(lnk,{page:page}, function(data){
			$('#'+id).html(data);
			vtip();
			$('#'+id+' a[rel*=facebox]').facebox();
			document.location.href='#'+id;
		});
}





function ajaxTabPage(id,num,page)
{
	if(tabs_activity[id]==1) return;
	
	tabs_activity[id]=1;
	$('#ajax_pager_'+id).html('Идёт загрузка...');
	var lnk = $('#h_'+id+'_'+num).attr('rel');
	
	$.get(lnk,{id:id,num:num,page:page}, function(data){
			$('#a_'+id).html(data);
			vtip();
			$('#a_'+id+' a[rel*=facebox]').facebox();
			tabs_activity[id]=0;
			document.location.href='#'+id+'top';
		});
}


function selectAjaxTab(id,num)
{
	if(tabs_activity[id]==1) return;
	count = tabs_count[id];
		
	var previous_active=0;
	for(var i=1;i<=count;i++)
	{
		if($('#h_'+id+'_'+i).hasClass('active')) previous_active = i;
		$('#h_'+id+'_'+i).removeClass('active');
	}
	$('#h_'+id+'_'+num).addClass('active');		
	
	var date_obj = new Date();
	if(previous_active!=num && tabs_content[id][num] && date_obj.getTime()-tabs_lifetime[id][num]<60000 )
	{
	  // берем из кэша
		$('#a_'+id).html(tabs_content[id][num]);
		$('#a_'+id+' a[rel*=facebox]').facebox();
		vtip();
	}
	else
	{
		tabs_activity[id]=1;
		$('#a_'+id).html('Идёт загрузка...');
		var lnk = $('#h_'+id+'_'+num).attr('rel');
		$.get(lnk,{id:id,num:num}, function(data){
			tabs_content[id][num] = data;
			var date_obj = new Date();
			tabs_lifetime[id][num] = date_obj.getTime();
			$('#a_'+id).html(data);
			$('#a_'+id+' a[rel*=facebox]').facebox();
			vtip();
			tabs_activity[id]=0;
		});
	}
}


function selectAjaxTabByUrl(id,num)
{
	var start = document.location.href.indexOf('#');
	if(start!=-1)
	{
		var part = document.location.href.substring(start+1);
		part = part.replace(id,'');
		if(part.search(/^\d+$/)!=-1) num = part;
	}
	if(num) selectAjaxTab(id,num);
}


function alert2(title, text)
{
	$('#popup_title').html(title);
	$('#popup_text').html(text);
	$('#popup_message').jqmShow();
	return false;
}

var confirm2_type;
var confirm2_param;
function confirm2(title, text, type, param)
{
	$('#confirm_title').html(title);
	$('#confirm_text').html(text);
	confirm2_type=type;
	confirm2_param=param;
	$('#popup_confirm').jqmShow();
	return false;
}

function onConfirm2()
{
	$('#popup_confirm').jqmHide();
	if(confirm2_type=='link') document.location.href=confirm2_param.href;
}









/* favourites */
var fav_new=0;
function favDelete()
{
  //считаем
  var cnt=0;
  $('.favcheck').each(function(){if(this.checked) cnt++;});
  
  if(cnt==0) 
  {
    alert('Вы ничего не отметили');
    return false;
  }
  
  if(confirm('Удалить '+cnt+' '+plural_form(cnt,'материал','материала','материалов')+' из вашего избранного?'))
  {
    document.getElementById('favitemz').submit();
  }
  
  return false;
}

function showNewRub()
{
  fav_new=1;
  $('#fav_select_rub').hide();
  $('#fav_new_rub').show();
  return false;
}

function hideNewRub()
{
  fav_new=0;
  $('#fav_new_rub').hide();
  $('#fav_select_rub').show();
  return false;
}


function showAddFav()
{
  $('#bloginsert1').hide();
  $('#add2fav').toggle();
  return false;
}

function onAdd2Fav()
{
	var id = $('#fav_id').val();
	var title = $('#fav_title').val();
  var folder_name = $('#fav_folder').val();
  if(fav_new) folder_name = $('#fav_newfolder').val();
  
  $('#fav_buttons').hide();
  $('#fav_status').html('Идёт добавление...').show();
  $.post("/ajax/add2fav/", 
		{'id':id, 'title':title, 'folder': folder_name},
  		function(data){
        if(data!='error')
        {        
				  $('#fav_status').html('Добавлено в <a href="'+data+'">ваше избранное</a>!');
        }
 		});
	return false;
}


/* subscription */
 function subscribe(documentid)
{
	ajax_show('Отправка запроса...');
	$.post("/ajax/subscribe/", 
		{documentid:documentid},
  		function(data){
				ajax_close();
				if(data=='error')
				{
					alert2('Произошла ошибка','Подписка не может быть выполнена');
				}
				else
				{
					alert2('Вы подписались на комментарии','Теперь вы будете получать уведомления о новых комментариях к этому материалу на ваш e-mail');
					$('#link_sub').hide();
					$('#link_unsub').show();
					$('#cform_ss').hide();
				}
 		});
	return false;
}

function unsubscribe(documentid)
{
	ajax_show('Отправка запроса...');
	$.post("/ajax/unsubscribe/", 
		{documentid:documentid},
  		function(data){
				ajax_close();
				if(data=='error')
				{
					alert2('Произошла ошибка','Подписка не может быть удалена');
				}
				else
				{
					alert2('Вы отписались от комментариев','Вы больше не будете получать уведомления о новых комментариях к этому материалу');
					$('#link_unsub').hide();
					$('#link_sub').show();
				}
 		});
	return false;
}

/* отписка из блока на главной */
function unsubscribe2(documentid)
{
	if(!confirm('Отписаться от комментариев к данной теме?')) return false;
	
	$.post("/ajax/unsubscribe/", 
		{documentid:documentid},
  		function(data){
				ajax_close();
				if(data=='error')
				{
					alert2('Произошла ошибка','Подписка не может быть удалена');
				}
				else
				{
					$('#new_for_me_'+documentid).slideUp();
				}
 		});
	return false;
}


/* comments */
var current_comment_form=0;
function addComment(parentid,guestmode)
{
	text = document.getElementById('comment_tex_'+parentid).value;
	if(text.length==0) return;
	//text = encodeURIComponent(text);
	
	closeSmilesAt();
	
	subscribe=0;
	if( $('#subcomments').length>0 
			&& $('#subcomments').get(0).checked)
	{
		subscribe=1;
	}
	
	$("#comment_button_"+parentid).attr("disabled","disabled");
	$("#comment_tex_"+parentid).attr("disabled","disabled");
	$("#comment_span_"+parentid).html("Идёт добавление комментария...");
	
	var cap=0;
	var guestname = '';
	var gmode = 0;
	if(guestmode)
	{
		cap = $('#cap_'+parentid).val();
		guestname = $('#guestname_'+parentid).val();
		gmode = 1;
	}

	// отправляем коммент, получаем массив - статус (0 если неудача, или id добавленного коммента если удача) и ветку
	$.post("/ajax/newcomment/", 
		{parentid: parentid, tex: text, guestmode: gmode, cap:cap, guestname: guestname, subscribe:subscribe},
  		function(data){
        if(data=='antiflood')
  			{
  				$("#comment_span_"+parentid).html("Вы не можете отправлять комментарии чаще чем раз в 5 секунд.");
  			}
  			else if(data=='closed')
  			{
  				$("#comment_span_"+parentid).html("Обсуждение данной темы закрыто.");
  			}
  			else if(data=='captcha')
  			{
  				$("#comment_span_"+parentid).html("Вы неправильно указали код с картинки.");
  			}
  			else
  			{ 		
					data = eval(data);
					
					if(data.id)
	  			{  			
						$('#link_sub').hide();
						$('#link_unsub').show();
						$('#cform_ss').hide();
					
		  			var cont = $("#comment_node_"+parentid);
		  			if(cont.attr("rel")=='rootnode') {
		  				$("#comment_node_"+parentid).html(data.html);
						}
		  			else {
		  				$("#comment_node_"+parentid).replaceWith(data.html);
						}
						vtip();
		  			
		    		$('#comment_tex_'+parentid).val("");
		    		$("#comment_span_"+parentid).html("");
						document.location.href='#com'+data.id;
	  			}
	  			else  				
	  			{
  					$("#comment_span_"+parentid).html("При добавлении комментария произошла ошибка");
  				}
	  		}  			
			$("#comment_tex_"+parentid).removeAttr("disabled");
			$("#comment_button_"+parentid).removeAttr("disabled");			
 		});
}



function showCommentEdit(id)
{
  $('#cmcontent'+id).hide();
  $('#cmtarea'+id).show();
  $('#cmcontrols'+id).hide();
  $('#cmcontrols'+id+'_2').show();  
}

function acceptCommentEdit(id)
{
  var str = $('#comarea'+id).get(0).value;
  
  $('#cmcontrols'+id+'_2').hide();
  $('#cmcontrols'+id+'_3').html('<small class="clear">Идёт сохранение комментария...</small>').show();
  
  $.post("/ajax/comments/edit15/",
        {"id":id, "text": str}, 
        function(data)
        {
          if(data=='error')
          {
            alert2('Ошибка сохранения','Во время сохранения комментария произошла ошибка.<br>Обновите страницу и попробуйте ещё раз.');
            declineCommentEdit(id);            
          }
          if(data=='expired')
          {
            alert2('Ошибка сохранения','Комментарии можно редактировать только в течение 15 минут после опубликования. <br>Время редактирования данного комментария окончилось.');
            declineCommentEdit(id);
          }

          $('#cmcontrols'+id+'_3').hide();
          $('#cmcontrols'+id).show();
          $('#cmtarea'+id).hide();
          $('#cmcontent'+id).html(data).show();
        });  
}

function declineCommentEdit(id)
{
  $('#cmcontrols'+id+'_3').hide();
  $('#cmcontrols'+id+'_2').hide();
  $('#cmcontrols'+id).show();
  $('#cmtarea'+id).hide();
  $('#cmcontent'+id).show();  
}



function showCommentFormNoHide(parentid)
{
	if(!$("#comments_form_"+parentid).hasClass('comment-form'))
	{
		var str = $('#hidden_reply').html();
		str = str.replace('parentid', parentid);
		str = str.replace('parentid', parentid);
		str = str.replace('parentid', parentid);
		str = str.replace('parentid', parentid);
		str = str.replace('parentid', parentid);		
		$("#comments_form_"+parentid).html(str);
		$("#comments_form_"+parentid).addClass('comment-form');
	}
	$("#comments_form_"+parentid).show();
	current_comment_form=parentid;
}


function showCommentForm(parentid)
{
	if(current_comment_form && current_comment_form!=top_level_parentid) {closeSmilesAt();$("#comments_form_"+current_comment_form).hide();}
	if(current_comment_form == parentid)
	{	
		current_comment_form = 0;
	}
	else
	{
		if(!$("#comments_form_"+parentid).hasClass('comment-form'))
		{
			var str = $('#hidden_reply').html();
			str = str.replace('parentid', parentid);
			str = str.replace('parentid', parentid);
			str = str.replace('parentid', parentid);
			str = str.replace('parentid', parentid);
			str = str.replace('parentid', parentid);
			$("#comments_form_"+parentid).html(str);
			$("#comments_form_"+parentid).addClass('comment-form');
		}
		$("#comments_form_"+parentid).show();
		current_comment_form=parentid;
	}
}


function expandComments(parentid,that)
{
	$("#comments_subtree_"+parentid+" div").html('<br>Идёт загрузка ветки комментариев...');
	$("#comments_subtree_"+parentid).load( "/ajax/commentsubtree?parentid="+parentid );
}


function simpleDeleteComment(id)
{
	$.post("/ajax/deletecomment2", 
		{id: id},
  		function(data){
  			if(data=='error') return;
				$("#del_com_"+id).replaceWith('<small class="red">Комментарий был удалён</small>');
  		});
}

function deleteComment(id,parentid,childcount)
{
	var question = 'Вы уверены в том что хотите удалить этот комментарий?';
	if(childcount%10==1 && childcount%100!=11) question = 'Вместе с этим комментарием удалится и один ответ на него. Все равно удалить?';
	else if(childcount>0) question = 'Вместе с этим комментарием удалятся и '+childcount+' вложенных. Удалить всю ветку?';
	if(!confirm(question)) return;
	
	// отправляем запрос, получаем массив - статус (0 если неудача, или parentid если удалили) и ветку родителя
	$.post("/ajax/deletecomment", 
		{id: id, parentid: parentid},
  		function(data){
  			if(data=='error') return;
  			
			// все нормально - удалился, подгружаем ветку
			var cont = $("#comment_node_"+parentid);
 			if(cont.attr("rel")=='rootnode')
  				$("#comment_node_"+parentid).html(data);
  			else
  				$("#comment_node_"+parentid).replaceWith(data);
  		});
}








function refreshCap()
{
  document.getElementById('capimg').src='/lib/kcaptcha/?rnd='+Math.floor(Math.random()*10000);
  return false;
}


function guestComment()
{
	alert2('Написать комментарий','Оставлять комментарии могут только зарегистрированные пользователи.<br><div style="margin:15px 0px 5px;font-size:16px;color:#FE3322;"><a href="/signup/" style="font-size:18px;color:#FE3322;">Зарегистрироваться</a>,</div>или <a href="/login/">войти</a> если вы уже регистрировались.');
	return false;
}


function getWindowWidth()
{
	var x = 0;
	if (document.body) {
    x = document.body.clientWidth;
	}
	return x;
}

function getScrollTop()
{
	if(document.all)
	{
		var iebody=(document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body;
		return iebody.scrollTop;
	}
	return window.pageYOffset;
}

function getWindowHeight()
{
  var y = 0;
	if(document.scrollHeight)
	{
		y = document.scrollHeight;
	}
	else if (self.innerHeight) {
    y = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) {
    y = document.documentElement.clientHeight;
	} else if (document.body) {
    y = document.body.clientHeight;
	}
	return (document.all ? document.body.scrollTop : window.pageYOffset) + y;
}


function getVHistory(docid)
{
  $('#vote_history_top').toggle();
	$('#vote_history_block').toggle();
  
  $('#vote_history_block').load('/ajax/load/vhistory/'+docid);
  
	return false;
}



function showInvisHelp()
{
  alert2('Режим невидимости','При включенном режиме невидимости вас не будет в списках тех кто сейчас online, а в вашем профиле не будет пометки "Сейчас на сайте".');
  return false;
}

function invis(val)
{
  $('#invisible_on').hide();
  $('#invisible_off').hide();
  $('#invis_status').show();
  $.post("/ajax/invisible/", 
		{'val':val},
  		function(data){
        if(data!='error')
        {
          $('#invis_status').hide();
				  if(val==1) $('#invisible_on').show();
          if(val==0) $('#invisible_off').show();
        }
 		});
	return false;
}

function ban(val,userid)
{
	if(!confirm('Изменить статус пользователя?')) return false;
  $('#ban_on').hide();
  $('#ban_off').hide();
  $('#ban_status').show();
  $.post("/ajax/ban/", 
		{'val'   : val, 
     'userid': userid},
  		function(data){
        if(data!='error')
        {
          $('#ban_status').hide();
				  if(val==1) $('#ban_on').show();
          if(val==0) $('#ban_off').show();
        }
 		});
	return false;
}


function send2friend(documentid)
{
  $('#add2fav').hide();
  $('#bloginsert1').hide();
	$('#sf_documentid').val(documentid);
	$('#sf_email').val('');
	$('#sf_error').html('');
	$('#popup_send2friend').jqmShow();
	return false;
}

function send2friend_submit()
{
	$('#sf_error').val('');
	id = $('#sf_documentid').val();
	email =  $('#sf_email').val();
	name = $('#sf_name').val();
	
	if(email=='') 
	{
		$('#sf_error').html('Введите e-mail');
		return;
	}

	if(!test_email(email))
	{
		$('#sf_error').html('E-mail задан неправильно. Проверьте введенный вами адрес');
		return;		
	}
	
	if(name=='') 
	{
		$('#sf_error').html('Введите своё имя');
		return;
	}

	
	$('#popup_send2friend').jqmHide();
	ajax_show('Идёт отправка...');
	$.post("/ajax/send2friend/", 
		{id:id, email:email, name:name},
  		function(data){
				ajax_close();
				if(data=='error')
					alert2('Произошла ошибка','Сообщение не может быть отправлено');
				else
					alert2('Сообщение отправлено','Ссылка на материал была отправлена по адресу: <b>'+email+'</b>');
 		});
	return false;
}


function showBlock(name)
{
	$('#'+name+'_top').toggle();
	$('#'+name+'_block').toggle();
	return false;
}





(function($) {
	/* private variable "oHover" used to determine if you're still hovering over the same element */
	var textarea, staticOffset;  // added the var declaration for 'staticOffset' thanks to issue logged by dec.
	var iLastMousePos = 0;
	var iMin = 32;
	var grip;
	/* TextAreaResizer plugin */
	$.fn.TextAreaResizer = function() {
		return this.each(function() {
		    textarea = $(this).addClass('processed'), staticOffset = null;

			// 18-01-08 jQuery bind to pass data element rather than direct mousedown - Ryan O'Dell
		    // When wrapping the text area, work around an IE margin bug.  See:
		    // http://jaspan.com/ie-inherited-margin-bug-form-elements-and-haslayout
		    $(this).wrap('<div class="resizable-textarea"><span></span></div>')
		      .parent().append($('<div class="grippie"></div>').bind("mousedown",{el: this} , startDrag));

		    var grippie = $('div.grippie', $(this).parent())[0];
		    grippie.style.marginRight = (grippie.offsetWidth - $(this)[0].offsetWidth) +'px';

		});
	};
	/* private functions */
	function startDrag(e) {
		textarea = $(e.data.el);
		textarea.blur();
		iLastMousePos = mousePosition(e).y;
		staticOffset = textarea.height() - iLastMousePos;
		textarea.css('opacity', 0.25);
		$(document).mousemove(performDrag).mouseup(endDrag);
		return false;
	}

	function performDrag(e) {
		var iThisMousePos = mousePosition(e).y;
		var iMousePos = staticOffset + iThisMousePos;
		if (iLastMousePos >= (iThisMousePos)) {
			iMousePos -= 5;
		}
		iLastMousePos = iThisMousePos;
		iMousePos = Math.max(iMin, iMousePos);
		textarea.height(iMousePos + 'px');
		if (iMousePos < iMin) {
			endDrag(e);
		}
		return false;
	}

	function endDrag(e) {
		$(document).unbind('mousemove', performDrag).unbind('mouseup', endDrag);
		textarea.css('opacity', 1);
		textarea.focus();
		textarea = null;
		staticOffset = null;
		iLastMousePos = 0;
	}

	function mousePosition(e) {
		return { x: e.clientX + document.documentElement.scrollLeft, y: e.clientY + document.documentElement.scrollTop };
	};
})(jQuery);

function slideBlock(name)
{
	if($('#'+name).get(0).style.display=='none') $('#'+name).slideDown();
	else $('#'+name).slideUp();
	return false;
}


function plural_form(n, form1, form2, form5)
{
    n = n % 100;
    n1 = n % 10;
    if (n > 10 && n < 20) return form5;
    if (n1 > 1 && n1 < 5) return form2;
    if (n1 == 1) return form1;
    return form5;
}
  
function test_email(email)
{
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,})$/
	return reg.exec(email);
}



function sendMes()
{
	text = document.getElementById('sm_text').value;
	subject = document.getElementById('sm_subject').value;
	recipient = document.getElementById('sm_recipient').value;
	
	if(text.length=='') {alert('Введите текст сообщения');document.getElementById('sm_text').focus();return false;}
	
	$('#sm_button').hide();
	$('#sm_sending').show();
	
	$.post('/mail/send',
		{ subject:subject, text:text, recipient:recipient }, 
		function(data){
			data = eval(data);
			if(data.status=='ok')
			{
				$('#sm_sending').hide();
				$('#sm_sent').show();
			}
			// other cases
	});

	return false;
}

function onDeleteContacts()
{
	var cnt = $(".cont input:checked").length;
	if(cnt==0) {alert('Вы никого не выбрали');return false;}
	return confirm('Вы уверены что хотите удалить переписку с '+cnt+' '+plural_form(cnt,'пользователем','пользователями','пользователями')+'?');
}

	
function showWhats()
{
	if($('#whats_div').css('display')=='none')
	{
		$('#whats_div').slideDown("fast");
		$('#whats_b').slideUp();
	}
	else
	{
		$('#whats_b').slideDown();
		$('#whats_div').slideUp("fast");
	}
	return false;
}	





