// JavaScript Document

var lastCommentID = '';
var lastCommentType = '';
var isEdit = false;
var EditingText = '';
/// очистка поля поиска
function clearSearchField()
{
	if($("searchText").value=="Поиск")
	{
		$("searchText").value = "";
		$("searchText").style.color = "#666666";
	}
}
function startSearch()
{
	fObj = document.getElementById('searchbox_016395019465567271642:1vqo4gxkxhy');
	if(fObj)
	{
		fObj.submit();
	}
}
/// функция голосования за комментарий
function VoteComment(commentID, direction)
{
	url = '/ajax/';
	pars = 'action=VoteComment&id=' + commentID + '&direction=' + direction;
	new Ajax.Updater({success:'CommentRating'+commentID}, url, {method:'get', parameters: pars, evalScripts:true});
}
// цензура
function markCensorComment(commentID)
{
	url = '/ajax/';
	pars = 'action=MarkCommentCensor&id=' + commentID;
	new Ajax.Request(url, {
		method: 'get',
		parameters: pars,
		onComplete: getCommentCensorResult
	});
}
function markCommentAsSpam(commentID)
{
	url = '/ajax/';
	pars = 'action=VoteCommentSpam&id=' + commentID;
	new Ajax.Request(url, {
		method: 'get',
		parameters: pars,
		onComplete: function(originalRequest) {
			if(originalRequest.responseText == 'OK') {
				$("sCommentSpam"+commentID).innerHTML = ' &nbsp; / &nbsp; <img class="ImgSpam" src="/img/comment.spam.png" width="16" height="16" title="Данный комментарий СПАМ" />';
			}
			$("commentSpam"+commentID).innerHTML = "";
		}
	});
}
// обработка цензуры
function getCommentCensorResult(originalRequest)
{
//	alert(originalRequest.responseText);
	var commentID = parseInt(originalRequest.responseText);
	if(commentID>0)
	{
		$("commentCensor"+commentID).innerHTML = "";
		$("sCommentCensor"+commentID).innerHTML = ' &nbsp; / &nbsp; <img class="ImgCensor" src="/img/comment.censor.png" width="12" height="14" title="Данный топик недопустимым для просмотра детьми" />';
	}
	else if(commentID<0)
	{
		$("commentCensor"+Math.abs(commentID)).innerHTML = "";
	}
}
// пометить как прочитанное
function MarkAsRead(topicID)
{
	url = '/ajax/';
	pars = 'action=MarkTopic&id=' + topicID ;
	new Ajax.Request(url, {method:'get', parameters: pars, onComplete:hideMarkField });
	//new Ajax.Updater({success:'TopicRead'+topicID}, url, {method:'get', parameters: pars});
}
function hideMarkField(originalRequest)
{
	topicID = originalRequest.responseText;
	//alert(topicID);
	$("TopicRead"+topicID).innerHTML = ' ';
	$("spTopicRead"+topicID).innerHTML = ' ';
	if($("TopicReadIcon"+topicID))
	{
		$("TopicReadIcon"+topicID).innerHTML = ' ';
	}
}
/// функция голосования за топики
function VoteTopic(topicID, direction)
{
	var url = '/ajax/';
	var pars = 'action=VoteTopic&id=' + topicID + '&direction=' + direction;
	//new Ajax.Updater({success:'TopicRating'+topicID}, url, {method:'get', parameters: pars, evalScripts:true});
	new Ajax.Request(url, {method:'get', parameters: pars, onComplete:function(response) {
		if(typeof response.responseJSON != 'undefined') {
			var r = response.responseJSON;
			$('TopicRating' + r.TopicID).innerHTML = r.TopicRating;
			$('UserTopicCredit').innerHTML = r.UserTopicCredit;
			$('panForumUserAvatar_' + r.TopicID).innerHTML = r.TopicUserAvatar;
			$('panForumUserName_' + r.TopicID).innerHTML = r.TopicUserName;
		}
	} });
}
/// показываем скрытый коммент
function openComment(commentID)
{
	$('CommentStub' + commentID).style.display = 'none';
	$('CommentDescription' + commentID).style.display = 'block';
}
/// функция голосования за спам-топики
function VoteTopicSpam(topicID, direction)
{
	url = '/ajax/';
	pars = 'action=VoteTopicSpam&id=' + topicID + '&direction=' + direction;
	new Ajax.Updater({success:'TopicSpam'+topicID}, url, {method:'get', parameters: pars});
}
	
/// показываем список возможных каналов, для переноса топика, производится в канале
function ShowMoveTopicChannelBlock(topicID)
{
	url = '/ajax/';
	pars = 'action=MoveTopicFormChannel&id=' + topicID;
	new Ajax.Updater({success:'MoveTopicBlock'+topicID}, url, {method:'get', parameters: pars});
}
// прячим этот блок
function HideMoveTopicChannelBlock(topicID)
{
	$("MoveTopicBlock"+topicID).innerHTML = "<a href=\"#move\" class=\"green\" onClick=\"ShowMoveTopicChannelBlock(" + topicID + ")\">Перенести</a>";
}


	/// показываем список возможных каналов, для переноса топика
function ShowMoveTopicBlock(topicID)
{
	url = '/ajax/';
	pars = 'action=MoveTopic&id=' + topicID;
	new Ajax.Updater({success:'MoveTopicBlock'}, url, {method:'get', parameters: pars});
}
// прячим этот блок
function HideMoveTopicBlock(topicID)
{
	$("MoveTopicBlock").innerHTML = "<a href=\"#move\" class=\"green\" onClick=\"ShowMoveTopicBlock(" + topicID + ")\">Голосовать за перенос топика</a>";
}
// голосуем за перенос топика
function MoveTopicVote(topicID)
{
	var cid = $F('ddlChannel');
	if(cid>0)
	{
		url = '/ajax/';
		pars = 'action=MoveTopic&id=' + topicID + "&cid=" + cid;
		new Ajax.Updater({success:'MoveTopicBlock'}, url, {method:'get', parameters: pars});
	}
	else
	{
		alert("Вы не выбрали канал");
	}
}
/// подписываемся на рассылку комментов внутри топика
function Subscription(topicID, mode)
{
	url = '/ajax/';
	pars = 'action=SubscribeTopic&id=' + topicID + "&mode=" + mode;
	new Ajax.Updater({success:'SubscribeTopicBlock'}, url, {method:'get', parameters: pars});
}
///  присоединение к каналу или бан его
function JoinToChannel(channelID, direction)
{
	url = '/ajax/';
	pars = 'action=JoinToChannel&id=' + channelID + "&direction=" + direction;
	new Ajax.Updater({success:'channelRow'+channelID}, url, {method:'get', parameters: pars});
}
function JoinToChannel2(channelID, direction)
{
	url = '/ajax/';
	pars = 'action=JoinToChannel2&id=' + channelID + "&direction=" + direction;
	new Ajax.Updater({success:'joinText'}, url, {method:'get', parameters: pars, evalScripts:true});
}

/// полезакрывающее поле добавления комментария
function CloseAddComment(topicID, id, type)
{
	divObj = document.getElementById("div"+id);
	if(divObj && type == 0)
	{
		divObj.innerHTML = "";
		$("tdCommentAdd").innerHTML = "<a href=\"javascript:ShowAddComment(" + topicID + ", '0', 0);\">Оставить комментарий</a>";
	}
	else if(divObj)
	{
		divObj.innerHTML = "(<a href=\"javascript:ShowAddComment(" + topicID + ", '" + id + "', '"+ type +"');\" >Ответить</a>)";
	}
	if(CKEDITOR.instances['tbDescription']) {
		CKEDITOR.remove(CKEDITOR.instances['tbDescription']);
	}
}
// проверяем существует ли такое имя
function CheckUserName()
{
	url = '/ajax/';
	var UserName = $F('tbName');
	/// проверяем здесь все ли символы в норме
	r = /['\"<>?!&\\]/i
	if(r.test(UserName))
	{
		alert("Вы указали недопустимый символ для имени пользователя");
		return;
	}
	else if(UserName.length<3)
	{
		alert("Ваше имя слишком мало, минимум 3 символа");
		return;
	}
	else if(UserName.length>20)
	{
		alert("Ваше имя содержит более 20 символов, попробуйте выбрать имя покороче");
		return;
	}
	else
	{
		UserName = encodeURIComponent(UserName);
		pars = 'action=CheckUserName&name=' + UserName;
		new Ajax.Updater({success:'CheckNameResult'}, url, {method:'get', parameters: pars});
	}
}
/// функция для подгрузки полного описания топика
function loadTopicDescription(topicID)
{
	url = '/ajax/';
	pars = 'action=LoadTopicDescription&id=' + topicID;
	new Ajax.Request(url, {method:'get', parameters: pars, onComplete:showTopicDescription });
}
/// подгрузка и замена картинок
function showTopicDescription(originalRequest)
{
	$("TopicDescription").innerHTML = originalRequest.responseText;
	topicImages = $$("div#TopicDescription img.userimage");
	for(i=0; i<topicImages.length; i++)
		minimizeTopicImage(topicImages[i]);
}

function SaveCommentEditing(commentID)
{
	// получаем доступ к FCKeditor
	var editor = CKEDITOR.instances['tbCommentDescription'+commentID],
		text = editor.getData(),
		codeText = encodeURIComponent(text);
	var url = '/ajax/';
	var pars = "action=SaveCommentHTML&id=" + commentID + "&data="+codeText;
	var MyAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: loadCommentData});
	isEdit = false;
	EditingText = "";
}
function CancelCommentEditing(commentID)
{
	url = '/ajax/';
	pars = "action=CancelCommentHTML&id=" + commentID;
	var MyAjax = new Ajax.Request(url, {method: 'get', parameters: pars, onComplete: loadCommentData});
	isEdit = false;
	EditingText = "";
}

/////

var minimizeCurrentImage = function()
{
	img = this;
	if(img.width == img.naturalWidth)
	{
		img.width = img.maxWidth;
		img.title  = 'Кликнуть, чтоб просмотреть в оригинале';
		img.style.cursor = 'move';
	}
	else
	{
		img.width = img.naturalWidth;
		img.title  = 'Щелчок уменьшит изображение';
		img.style.cursor = 'move';
	}
}

function minimizeImage(img)
{
	// сохраняем нормальные размеры
	if (typeof(img.naturalWidth) == 'undefined') 
	{
		img.naturalHeight = img.height;
		img.naturalWidth  = img.width;
	}
	/// вычисляем глубину
	var parentObj = img.parentElement?img.parentElement:img.parentNode;
	depth = 0;
	while(typeof(parentObj)!='undefined' && parentObj)
	{
		if(parentObj.getAttribute)
		{
			className = parentObj.getAttribute("class");
			if(className == null)
				className = parentObj.getAttribute("className");
			if(className == null)
				className = "";
		}
		else
			className = "";
		if(className == "subcomment")
			depth ++;
		parentObj = parentObj.parentElement?parentObj.parentElement:parentObj.parentNode;
	}
	//$("debugg").value += "\n depth="+depth;
	// вычисляем максимально допустимый размер изображения
	//$("debugg").value += " LW=" +settings.leftWidth+ " w=" +settings.width+ " pl=" +settings.paddingLeft+ "  t=" +settings.tolerance;
	maxWidth = Math.round(settings.leftWidth*settings.width)-depth*settings.paddingLeft-settings.tolerance;
	if(maxWidth<=10)
		maxWidth = 40; // перестраховка
	//debugger;
	//$("debugg").value += " maxWidth:"+maxWidth;
	// добавляем обработчик клика
	// только в том случае если картинка превышает допуск
	if(img.width>maxWidth)
	{
		img.onclick = minimizeCurrentImage;
		/// это включем если будет глючить img.height = Math.round((maxW/img.width)*img.height);
		img.width  = maxWidth;
		img.title  = 'Кликнуть, чтоб просмотреть в оригинале';
		img.style.cursor = 'move';
		img.maxWidth = maxWidth;
	}
}


function minimizeTopicImage(img)
{
	// сохраняем нормальные размеры
	if (typeof(img.naturalWidth) == 'undefined') 
	{
		img.naturalHeight = img.height;
		img.naturalWidth  = img.width;
	}
	/// вычисляем глубину
	maxWidth = Math.round(topicSettings.leftWidth*topicSettings.width)-topicSettings.tolerance;
	if(maxWidth<=10)
		maxWidth = 40; // перестраховка
	//debugger;
	//$("debugg").value += " maxWidth:"+maxWidth;
	// добавляем обработчик клика
	// только в том случае если картинка превышает допуск
	if(img.width>maxWidth)
	{
		img.onclick = minimizeCurrentImage;
		/// это включем если будет глючить img.height = Math.round((maxW/img.width)*img.height);
		img.width  = maxWidth;
		img.title  = 'Кликнуть, чтоб просмотреть в оригинале';
		img.style.cursor = 'move';
		img.maxWidth = maxWidth;
	}
}

//////////////////////////////////////////////////
//////////////////////////////////////////////////

var newComments = {
	init: function() {
		var re = new RegExp('/topic/\\?id=(\\d+)');
		var m = re.exec(window.location);
		if(m != null && $('UserTopicCredit') != null) {
			this.TopicID = m[1];
		}
		else
			return;
		this.drawNavigator(true);
		window.onresize = this.resizeNavigator;
		if(this.IE)		
			window.onscroll = this.scrollNavigator;
	},
	
	TopicID: -1,
	
	ArrayComments: null,
	
	IE: navigator.userAgent.toLowerCase().indexOf( "msie" ) != -1,
	
	getWindowHeight: function() {
		return document.body.clientHeight;
	},
	
	PredComment: null,	
	
	removeNewComment: function(id) {
		if($('td1comment'+id) != null)
			$('td1comment'+id).removeClassName('NewComment');						
		if($('td2comment'+id) != null)
			$('td2comment'+id).removeClassName('NewComment');
		if($('commentCensor'+id) != null)
			$('commentCensor'+id).removeClassName('NewComment');
		if($('CommentRating'+id) != null)
			$('CommentRating'+id).removeClassName('NewComment');
		if($('commentSpam'+id) != null)
			$('commentSpam'+id).removeClassName('NewComment');
		if($('CommentRate2_'+id) != null)
			$('CommentRate2_'+id).removeClassName('NewComment');
		if($('CommentRate1_'+id) != null)
			$('CommentRate1_'+id).removeClassName('NewComment');		
	},
	
	addNewComment: function(id) {
		if($('td1comment'+id) != null)
			$('td1comment'+id).addClassName('NewComment');						
		if($('td2comment'+id) != null)
			$('td2comment'+id).addClassName('NewComment');
		if($('commentCensor'+id) != null)
			$('commentCensor'+id).addClassName('NewComment');
		if($('CommentRating'+id) != null)
			$('CommentRating'+id).addClassName('NewComment');
		if($('commentSpam'+id) != null)
			$('commentSpam'+id).addClassName('NewComment');
		if($('CommentRate2_'+id) != null)
			$('CommentRate2_'+id).addClassName('NewComment');
		if($('CommentRate1_'+id) != null)
			$('CommentRate1_'+id).addClassName('NewComment');
	},
	
	WaitFor: false,
	
	goToComment: function(needScroll) {
		if(newComments.WaitFor == true)
			return;
		$('ComGif').src="/img/ProcCom.gif";
		newComments.WaitFor = true;
		if((newComments.ArrayComments != null) && (newComments.ArrayComments.length > 0)) {
			var id = newComments.ArrayComments.pop();
			$('UnwatchedComments').value = $('UnwatchedComments').value.split(" ").without('').compact().without(id).join(" ")+" ";			
			if(newComments.ArrayComments.length == 0)
				$('CountNewComments').style.display = 'none';
			else
				$('CountNewComments').style.display = '';
			$('CountNewComments').update(newComments.ArrayComments.length);	
			var elemar = document.getElementsByName('comment'+id);
			if(elemar.length == 0)
				document.location = 'http://forum.pridnestrovie.com/topic/?id='+newComments.TopicID+'&comment='+id+'&unreadcomment='+id+'#comment'+id;			
			else {
				if(newComments.PredComment != null)
				{
					newComments.removeNewComment(newComments.PredComment);	
					$('commentMarker'+newComments.PredComment).innerHTML = '<img src="/img/1px.gif" width="19" height="1"/>';
				}				
				elemar = elemar[0];
				newComments.PredComment = id;
				newComments.removeNewComment(id);
				$('commentMarker'+id).innerHTML = '<img src="/img/arrow.gif"/>';
				if(needScroll != false)
					$(elemar).scrollTo();				
			}			
		}
		else {
			$('CountNewComments').update('0');
		}
		$('ComGif').src="/img/CompCom.gif";	
		newComments.WaitFor = false;
	},
	
	setOpacity: function(opacity) {
		if(this.IE) elem.style.filter = 'alpha(opacity='+opacity*100+')';
		else elem.style.opacity = opacity;
	},
	
	Updating: false,
	
	CreateNew: false,
	
	drawNavigator: function(createNew) {
		newComments.CreateNew = createNew;
		if(createNew) {
			elem = document.createElement('div');
			elem.id = 'newCommentsDiv';
			if(newComments.IE) {
				elem.style.position = 'absolute';
				elem.style.filter = 'alpha(opacity=50)';
			}
			else {
				elem.style.position = 'fixed';
				elem.style.opacity = 0.5;
			}
			elem.style.overflow = 'hidden';
			elem.style.right = '0';
			elem.style.top = newComments.getWindowHeight() / 3 + (newComments.IE?(document.body.scrollTop):0);			
			elem.style.textAlign = 'right';
			elem.innerHTML =
			'<table cellpadding="0" cellspacing="0" >'+			
			'<tr><td title="Проверить наличие новых комментариев" style="width:36px;height:33px;text-align:center;padding-top:3px;background:url(\'/img/Comment.Top.gif\') no-repeat center"><span style="cursor:pointer" id="UpdateComment" onclick="newComments.drawNavigator(false);return false;"><img id="ComGif" style="margin:0;border:0;" src="/img/CompCom.gif"/></span>'+
			'</td></tr>'+
			'<tr><td style="width:36px;height:1px;background-color:#6B6B6B"><img src="/img/1px.gif" height="1"/></td></tr>'+
			'<tr><td style="width:36px;height:1px;background-color:#FFFFFF"><img src="/img/1px.gif" height="1"/></td></tr>'+
			'<tr><td title="Перейти к следующему непрочитанному комментарию" id="CountNewComments" style="display:none;width:36px;height:26px;text-align:center;background:url(\'/img/Comment.Bottom.gif\') no-repeat center;font-family: Arial; font-size: 14px; font-weight:bold; color: #FFFFFF; cursor: pointer;" onclick="newComments.goToComment()">0</td></tr>'+
			'</table>';
			
			elem.onmouseover = function() {
				newComments.setOpacity(1.0);
			};
			elem.onmouseout = function() {
				newComments.setOpacity(0.5);
			};
			
			document.body.appendChild(elem);	
		}	

		if(!newComments.Updating) {
			newComments.Updating = true;
			$('ComGif').src="/img/ProcCom.gif";			
			new Ajax.Request(
				'/ajax/',
				{
					method: 'get',
					parameters: 'action=GetAllNewCommentsIDs&TopicID=' + newComments.TopicID,
					onSuccess: function(response) {
						newComments.doUpdate(response.responseText);	
						if(newComments.CreateNew == false)					
							newComments.removeNewComment(newComments.PredComment);
					}
				}
			);
		}
	},
	
	doUpdate: function(response) {
		newComments.ArrayComments = new Array();
		if(response != "") {						
			var m = response.split(" ");
			if(m != null) {							
				for(var i = m.length - 1; i >= 0; i--) {
					if(m[i].length > 0)
						newComments.ArrayComments.push(m[i]);
				}
			}
		}
		
		var myar = $('UnwatchedComments').value.split(" ").without('').compact();			
		newComments.ArrayComments = newComments.ArrayComments.without(myar.join(',')).concat(myar.reverse()).compact();	

		if(/unreadcomment=(\d+)/.test(window.location)) {
			var temp = newComments.PredComment; 
			id = /unreadcomment=(\d+)/.exec(window.location)[1];
			newComments.PredComment = id;
			if(temp == null)
				$('commentMarker'+id).innerHTML = '<img src="/img/arrow.gif"/>';			
			newComments.removeNewComment(id);
			//newComments.addNewComment(id);
			if((newComments.ArrayComments != null) && (newComments.ArrayComments.length > 0)) {
				newComments.ArrayComments = newComments.ArrayComments.without(id).without('').compact();
				$('UnwatchedComments').value = $('UnwatchedComments').value.split(" ").compact().without(id).join(" ")+" ";
			}
		}
		else if(/newcomment/.test(window.location)) {
			newComments.goToComment(false);
		}
		if(newComments.ArrayComments.length == 0)
			$('CountNewComments').style.display = 'none';
		else
			$('CountNewComments').style.display = '';
		
		$('CountNewComments').update(newComments.ArrayComments.length);	
		newComments.Updating = false;
		$('ComGif').src="/img/CompCom.gif";	
	},

	resizeNavigator: function() {
		elem = document.getElementById('newCommentsDiv');
		elem.style.top = newComments.getWindowHeight() / 3 + (newComments.IE?(document.body.scrollTop):0);
	},
	
	scrollNavigator: function() {
		elem.style.top = newComments.getWindowHeight() / 3 + document.body.scrollTop;
	}
}

document.observe("dom:loaded", function() {
	newComments.init();
});
