//Объявляем константы
var _comment_all_votes = "";
var _comment_up_votes = "";
var _comment_down_votes = "";
var _comment_vote_form = "";

var _story_all_votes = "";
var _story_up_votes = "";
var _story_down_votes = "";
var _story_up_vote_form = "";
var _story_down_vote_form = "";
var _story_vote_form = "";
var _story_vote_form_disabled = "";
var _story_vote_type = "";
var __story_all_votes = "";

function makeRequest(url,id,type)
{
	var http_request = false;
	
	if (window.XMLHttpRequest) 
	{ // Mozilla, Safari, ...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) 
		{
			http_request.overrideMimeType('text/xml');
		}
	} 
	else if (window.ActiveXObject) 
	{ // IE
		try
		{
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) 
		{
			try 
			{
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) 
			{
			}
		}
	}

	if (!http_request) 
	{
		alert('Ошибка! Невозможно создать экземпляр класса XMLHTTP ');
		return false;
	}
	
	http_request.onreadystatechange = function() { alertContents(http_request,id,type); };
	http_request.open('GET', url, true);
	http_request.send(null);
}

function alertContents(http_request,id,type) 
{
	if (http_request.readyState == 4) 
	{
		if (http_request.status == 200) 
		{
			//alert(id+':'+http_request.responseText);
			//document.write('<textarea>'+http_request.responseText+'</textarea>');
			if(type=='comment')
			{
				comment_responses(http_request.responseText,id);
			}
			else if(type=='story')
			{
				vote_responses(http_request.responseText,id);
			}
			else if(type=='add_friend')
			{
				add_friend_response(http_request.responseText);
			}
			else if(type=='remove_friend')
			{
				remove_friend_response(http_request.responseText);
			}
			else if(type=='bookmark_group' || type=='unbookmark_group')
			{
				bookmark_group_response(http_request.responseText);
			}
			else if(type=='act_member')
			{
				act_member_response(id,http_request.responseText)
			}
			else if(type=='act_story')
			{
				act_story_response(id,http_request.responseText)
			}
		} 
		else 
		{
			alert('С запросом возникла проблема.');
		}
	}
}

function vote(vote_type,id)
{
	_story_all_votes = document.getElementById('story_all_votes_'+id).innerHTML;
	__story_all_votes = document.getElementById('story_all_votes_'+id).innerHTML;
	
	if(document.getElementById('story_up_votes_'+id))
	{
		_story_up_votes = document.getElementById('story_up_votes_'+id).innerHTML;
		_story_down_votes = document.getElementById('story_down_votes_'+id).innerHTML;
	}
	
		_story_up_vote_form = document.getElementById('story_vote_up_'+id).innerHTML;
		_story_down_vote_form = document.getElementById('story_vote_down_'+id).innerHTML;
	
	_story_vote_type = vote_type;
	
	new Ajax.Request(
				'/scripts/vote.php',
				{
					method:'get',
					
					parameters:
					{
						story_id:id,
						type:vote_type
					},
					
					onSuccess: function(transport)
					{
						alertContents(transport,id,'story');
					},
					
					onFailure: function()
					{
						vote_responses('error',id);
					}
  				}
				);
}

function vote_responses(response,id)
{
	//alert(response);
	var vote_regexp = /(\d+)\|(\d+)\|(\d+)/;
	
	//Проверяем, что вернул сервер - ошибку или все обновилось
	tmp2 = vote_regexp.test(response);
	
	//alert(response);
	
	if(tmp2==true)
	{
		//Если все хорошо, то обновляем голоса
		var vote_responses = vote_regexp.exec(response);
		
		//alert(_story_vote_type);
		
		if(_story_vote_type=='0')
		{
			document.getElementById('story_vote_down_'+id).innerHTML = "<span class=\"StoryVoteDownCheck\"><span class=\"StoryVoteDownOk\">Отклонено!</span></span>";
			document.getElementById('story_vote_up_'+id).innerHTML = "<span class=\"StoryVoteUpDisabled\">Одобрить</span>";
		}
		else
		{
			document.getElementById('story_vote_up_'+id).innerHTML = "<span class=\"StoryVoteUpCheck\"><span class=\"StoryVoteUpOk\">Одобрено!</span></span>";
			document.getElementById('story_vote_down_'+id).innerHTML = "<span class=\"StoryVoteDownDisabled\">Отклонить</span>";
		}
		
		document.getElementById('story_all_votes_'+id).innerHTML = vote_responses[2];
		
		if(document.getElementById('_story_all_votes_'+id))
		{
			document.getElementById('_story_all_votes_'+id).innerHTML = vote_responses[1];
			document.getElementById('story_up_votes_'+id).innerHTML = vote_responses[2];
			document.getElementById('story_down_votes_'+id).innerHTML = vote_responses[3];
		}
	}
	else
	{
		//Если плохо, то возвращаем все назад и пытаемся обработать ошибки и вывести соответствующие сообщения
		document.getElementById('story_vote_down_'+id).innerHTML= _story_down_vote_form ;
		document.getElementById('story_vote_up_'+id).innerHTML = _story_up_vote_form;
		document.getElementById('story_all_votes_'+id).innerHTML = _story_all_votes;
		
		//alert(response);
		
		show_error(response);
	}
}



function comment_vote(vote_type,id)
{
	var uri='/scripts/comment_vote.php?comment_id='+id+'&type='+vote_type;
	
	//Запоминаем прежние переменные, чтобы в случае ошибки вернуть их обратно
	_comment_vote_form = document.getElementById(id).innerHTML;
	_comment_all_votes = document.getElementById('all_votes_'+id).innerHTML;
	
	//Делаем "красивую" загрузку
	document.getElementById(id).innerHTML = 'Загрузка...';
	document.getElementById('all_votes_'+id).innerHTML = " ";
	makeRequest(uri,id,'comment');
}


function comment_responses(response,id)
{
	if(response!=='nocomment' && response!=='notype' && response!=='nologged' && response!=='voteexist')
	{
		//Если все хорошо, то обновляем голоса
		document.getElementById('all_votes_'+id).innerHTML = response;
		document.getElementById(id).innerHTML = '<img src="/img/comment_vote_up_vote_found.gif" title="Хороший комментарий" alt="Хороший комментарий" border="0" /> <img src="/img/comment_vote_down_vote_found.gif" title="Плохой комментарий" alt="Плохой комментарий" border="0" />';
	}
	else
	{
		//Если плохо, то возвращаем все назад и пытаемся обработать ошибки и вывести соответствующие сообщения
		document.getElementById(id).innerHTML = _comment_vote_form;
		document.getElementById('all_votes_'+id).innerHTML = _comment_all_votes;
		
		show_error(response);
	}
} 



function show_error(err_mess)
{
	if(err_mess=='nocomment')
	{
		alert('Ошибка! Такой новости не существует. Возможно, произошел сбой в БД.');
	}
	else if(err_mess=='nologged')
	{
		var user_response=confirm("Для того чтобы голосовать за новости и комментарии, Вам необходимо зарегистрироваться.\r\nПерейти к регистрации?");
		if(user_response)
		{
			window.location = '/user/register/';
		}
	}
	else if(err_mess=='voteexist')
	{
		alert('Ошибка: Вы уже голосовали за эту новость!');
	}
	else if(err_mess=='not_friend_login')
	{
		alert('Ошибка: пользователя, которого Вы хотите добавить в друзья, не существует.');
	}
}