// JavaScript Document
//реализация кнопок редактирования комментария
$(document).ready(function(){
	
	function insertTag(obj, start, end){//_obj_name - имя textarea, _tag_start - что вставлять перед выделенным текстом,	 _tag_end - что вставлять после выделенного текста
		
		element = document.getElementById(obj);
		if (document.selection) {
			element.focus();
			sel = document.selection.createRange();
			sel.text = start + sel.text + end;
		} else if (element.selectionStart || element.selectionStart == '0') {
			element.focus();
			var startPos = element.selectionStart;
			var endPos = element.selectionEnd;
			element.value = element.value.substring(0, startPos) + start + element.value.substring(startPos, endPos) + end + element.value.substring(endPos, element.value.length);
		} else {
			element.value += start + end;
		}
	}// end function
	
	function insert_text_cursor(_obj_name, _text){//_obj_name - имя textarea, _text - текст, который требуется вставить в том место, где сейчас находится курсор
	
		var area=document.getElementsByName(_obj_name).item(0);
		
		if (document.all) {
			if (area.value.length == 0) area.value= _text+' '; else area.value = area.value+' '+ _text+' '; area.focus();
		} else if (area.selectionStart || area.selectionStart=='0'){ // определяем, где начало выделения, если оно существует
		
			var p_start = area.selectionStart;
			// определяем, где заканчивается выдедение, если оно существует
			var p_end=area.selectionEnd;		
			// вставляем соответствующий текст в указанное место
			area.value = area.value.substring(0,p_start) + _text + area.value.substring(p_end,area.value.length);
		}/*if (document.selection) {// если объект может иметь выделения передаем фокус ввода на нужный нам объект
			
			area.focus();
			// узнаем выделение, если оно существует 
			sel = document.selection.createRange();
			// вставляет текст в указанное место
			sel.text = _text;
		}*/
		
	}// end function
	
	function cursor_position(_obj_name) {// возвращает позицию курсора (cursor) в textarea
				
		var area = document.getElementsByName(_obj_name).item(0);
		area.focus();
		
		// для всех нормальных браузеров
		if(area.selectionStart) { 
			return area.selectionStart;// возвращаем позицию курсора в texarea
		} else if (document.selection) {// для ИЕ
			// если честно нижний код даже комментировать не хочется, это такой гемор, что прям вообще
			var sel=document.selection.createRange();
			var clone=sel.duplicate();
			sel.collapse(true);
			clone.moveToElementText(obj);
			clone.setEndPoint('EndToEnd',sel);
			return clone.text.length;// возвращаем, где стоит курсор
		}
		return 0;// по умолчанию курсор будет стоять в начале
	}// /function cursor_position
	
	function cursor_start(_obj_name) {// перемещение курсора (cursor) в начало texarea
		
		// Для всех Нормальных браузеров
		var area=document.getElementsByName(_obj_name).item(0);
		if (area.selectionStart) { 
			area.focus();
			area.setSelectionRange(0,0);
		} else if (area.createTextRange) { // для ИЕ
			var r=area.createTextRange();		
		  	// Свойство collapsed вернет true, если граничные точки имеют
		  	// одинаковые контейнеры и смещение (false в противном случае)
			r.collapse(true);
			r.select();
		}
	}// /function cursor_start
	
	
	function cursor_end(_obj_name) {// Выполняет: перемещение курсора (cursor) textarea в конец		
		
		var area=document.getElementsByName(_obj_name).item(0);
		
		// Для всех Нормальных браузеров
		if (area.selectionStart){ // узнаем длину содержимого textarea
			var len=area.value.length;
		  
			area.focus();// aктивируем фокус ввода на объекте
			area.setSelectionRange(len,len);// перемещаемся в конец текста в объекте
			area.focus();// aктивируем фокус ввода на объекте
		} else if (area.createTextRange) {	// отдельная корявка под Internet Explorer
			var r=area.createTextRange();		
			// Свойство collapsed вернет true, если граничные точки имеют
		  	// одинаковые контейнеры и смещение (false в противном случае)
		  	r.collapse(false);
		  	r.select();
		}
	}// /function cursor_end
	
	//перемещает курсор в заданную позицию
	function setSelectionRange(_obj_name, offset) {
		
		input = document.getElementById(_obj_name)
		selectionStart = offset;
		selectionEnd = offset;
		
		if (input.setSelectionRange) {
			input.focus();
			input.setSelectionRange(selectionStart, selectionEnd);
		}
		else if (input.createTextRange) {
			var range = input.createTextRange();
			range.collapse(true);
			range.moveEnd('character', selectionEnd);
			range.moveStart('character', selectionStart);
			range.select();
		}
	}
	
	//удаление лишних пробелов
	function trim( str, charlist ) {
		charlist = !charlist ? ' \\s\xA0' : charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
		var re = new RegExp('^[' + charlist + ']+|[' + charlist + ']+$', 'g');
		return str.replace(re, '');
	}
	/*
	function addurl(){
		addlink = prompt('Введите URL:',"http://");
		if(addlink != null && addlink != "" && addlink != "http://")
		insertTag("comment_text", "[URL="+addlink+"]", "[/URL]");
		cursor_end("comment_text");
	}
	*/
	$("#com_but_b").click(function(){
		insertTag("comment_text", "[b]", "[/b]");
		cursor_end("comment_text");
		return false;
	});
	
	$("#com_but_i").click(function(){
		insertTag("comment_text", "[i]", "[/i]");
		cursor_end("comment_text");
		return false;
	});
	
	$("#com_but_u").click(function(){
		insertTag("comment_text", "[u]", "[/u]");
		cursor_end("comment_text");
		return false;
	});
	$("#com_but_s").click(function(){
		insertTag("comment_text", "[s]", "[/s]");
		cursor_end("comment_text");
		return false;
	});
	
	$("#com_but_c").click(function(){
		insertTag("comment_text", "[quote]", "[/quote]");
		cursor_end("comment_text");
		position = cursor_position("comment_text");
		if(position == 0) offset = position+7;
		else offset = position-8;
		setSelectionRange("comment_text", offset);	
		return false;		
	});
	
	$("#com_but_l").click(function(){
		addlink = prompt('Введите URL:',"http://");
		if(addlink != null && addlink != "" && addlink != "http://")
		insertTag("comment_text", "[URL="+addlink+"]", "[/URL]");
		cursor_end("comment_text");
		return false;
	});	
	
	$("#com_but_jl").click(function(){
		insertTag("comment_text", "[just=left]", "[/just]");
		cursor_end("comment_text");
		return false;
	});
	
	$("#com_but_jc").click(function(){
		insertTag("comment_text", "[just=center]", "[/just]");
		cursor_end("comment_text");
		return false;
	});
	
	$("#com_but_jr").click(function(){
		insertTag("comment_text", "[just=right]", "[/just]");
		cursor_end("comment_text");
		return false;
	});
	
	$("#com_but_f").click(function(){
		addframe = prompt('Введите URL:',"http://");
		re = /http[s]?:\/\/[^\"\']*/i
		var url = addframe.match(re)
		if(url != null && url != "" && url != "http://")
		insert_text_cursor("comment_text", "[FRAME="+url+"]");
		cursor_end("comment_text");
		return false;
	});
	
	$("#com_but_p").click(function(){
		addpic = prompt('Введите URL изображения:',"http://");
		if(addpic != null && addpic != "" && addpic != "http//:")
		insert_text_cursor("comment_text", "[IMG="+addpic+"]");
		cursor_end("comment_text");
		return false;
	});	
	
	$("#com_but_y").click(function(){
		addlink = prompt("Укажите URL страницы с видеороликом: ", "http://")
		if(addlink != null && addlink != "" && addlink != "http://")
		insert_text_cursor("comment_text", "[YOUTUBE="+addlink+"]");
		cursor_end("comment_text");
		return false;
	});
	
	$("#com_but_r").click(function(){
		addlink = prompt("Укажите URL страницы с видеороликом: ", "http://")
		if(addlink != null && addlink != "" && addlink != "http://")
		insert_text_cursor("comment_text", "[RUTUBE="+addlink+"]");
		cursor_end("comment_text");
		return false;
	});
	
	/* сортировки комментариев */
	
	$("#com_but_last").click(function(){
		$.ajax({
			url:"/disscussion/addsession",
			type:"GET",
			dataType:"html",
			data:"data=0&name=com_sort",
			success: function(html){
				redrawDiscuss();
				$("#com_but_last").css({"background-position" : "0px -24px"});	
				$("#com_but_first").css({"background-position" : "0px 0px"});	
				$("#com_but_favor").css({"background-position" : "0px 0px"});
			}
		});
	});
	
	$("#com_but_first").click(function(){
		$.ajax({
			url:"/disscussion/addsession",
			type:"GET",
			dataType:"html",
			data:"data=1&name=com_sort",
			success: function(html){
				redrawDiscuss();
				$("#com_but_last").css({"background-position" : "0px 0px"});	
				$("#com_but_first").css({"background-position" : "0px -24px"});	
				$("#com_but_favor").css({"background-position" : "0px 0px"});
			}
		});
	});
	
	$("#com_but_favor").click(function(){
		$.ajax({
			url:"/disscussion/addsession",
			type:"GET",
			dataType:"html",
			data:"data=2&name=com_sort",
			success: function(html){
				redrawDiscuss();
				$("#com_but_last").css({"background-position" : "0px 0px"});	
				$("#com_but_first").css({"background-position" : "0px 0px"});	
				$("#com_but_favor").css({"background-position" : "0px -24px"});
			}
		});
	});
	
	/*ЭМОЦИИ*/
	$("#com_but_sm").click(function(){//открыть панель смайликов
		$("#slmileslist").slideToggle();
	});
	$("#sm_1").click(function(){
		insert_text_cursor("comment_text", ' :) ');
		cursor_end("comment_text");
	});
	$("#sm_2").click(function(){
		insert_text_cursor("comment_text", ' =) ');
		cursor_end("comment_text");
	});
	$("#sm_3").click(function(){
		insert_text_cursor("comment_text", ' :D ');
		cursor_end("comment_text");
	});
	$("#sm_4").click(function(){
		insert_text_cursor("comment_text", ' ;) ');
		cursor_end("comment_text");
	});
	$("#sm_5").click(function(){
		insert_text_cursor("comment_text", ' :cry: ');
		cursor_end("comment_text");
	});
	$("#sm_6").click(function(){
		insert_text_cursor("comment_text",  ' :ireful: ');
		cursor_end("comment_text");
	});
	$("#sm_7").click(function(){
		insert_text_cursor("comment_text", ' :pardon: ');
		cursor_end("comment_text");
	});
	$("#sm_8").click(function(){
		insert_text_cursor("comment_text", ' :air_kiss: ');
		cursor_end("comment_text");
	});
	$("#sm_9").click(function(){
		insert_text_cursor("comment_text", ' :nea: ');
		cursor_end("comment_text");
	});
	$("#sm_10").click(function(){
		insert_text_cursor("comment_text", ' :shok: ');
		cursor_end("comment_text");
	});
	
	/*Ответ на сообщение*/
	$(".answer").live("click", function(){
		var fullid = $(this).attr("id");
		var id = fullid.substr(7);
		var html = $("#answer_"+id).html();
		$("#answerbody").empty();
		$("#answerbody").append(html);
		$("#answer").animate({opacity: "show"}, "fast");
		$("#id_parent").val(id);
		var offset = $("#offset_"+id).val()-0+1;
		$("#offset").val(offset);
		document.getElementById("comment_text").value="";
		var coordinates = $("#answer").offset();
		var scrollT = document.documentElement.scrollTop || document.body && document.body.scrollTop || 0;
		var top = coordinates.top-22;
		if(scrollT >  top)	$('body,html').animate({scrollTop:  top}, "slow");
	});
	$(".canswer").live("click", function(){
		var fullid = $(this).attr("id");
		var id = fullid.substr(8);
		var html = $("#answer_"+id).html();
		$("#answerbody").empty();
		$("#answerbody").append(html);
		$("#answer").animate({opacity: "show"}, "fast");
		$("#id_parent").val(id);
		var offset = $("#offset_"+id).val()-0+1; 
		$("#offset").val(offset);
		cursor_start("comment_text");
		var comtext = $("#comtext_"+id).text();	
		document.getElementById("comment_text").value="";
		insertTag("comment_text", "[quote]"+trim(comtext), "[/quote]");
		var coordinates = $("#answer").offset();
		var scrollT = document.documentElement.scrollTop || document.body && document.body.scrollTop || 0;
		var top = coordinates.top-22;
		if(scrollT > top)	$('body,html').animate({scrollTop: top}, "slow");
	});
	$("#delanswer").click(function(){
		$("#id_parent").val(0);
		$("#offset").val(0);
		$("#answerbody").empty();
		document.getElementById("comment_text").value="";
		$("#answer").animate({opacity: "hide"}, "fast");
	});
	
	
	
	/*голосование за комментарий*/
	
	$(".com_like_up").live("click", function(){
		var fullid = $(this).attr("id");
		var id = fullid.substr(12);
		$.ajax({
			url:"/disscussion/votecomment",
			type:"GET",
			dataType:"html",
			data:"com_id="+id+"&votetype=1",
			success: function(html){
				if(html == "Вы уже отдали положительный голос за этот комментарий." || html == "Вы уже отдали отрицательный голос за этот комментарий.") alert(html);
				else {
					$("#com_like_middle_"+id).empty();
					$("#com_like_middle_"+id).append(html);
				}
			}
		});
	});
	
	$(".com_like_down").live("click", function(){
		var fullid = $(this).attr("id");
		var id = fullid.substr(14);
		$.ajax({
			url:"/disscussion/votecomment",
			type:"GET",
			dataType:"html",
			data:"com_id="+id+"&votetype=0",
			success: function(html){
				if(html == "Вы уже отдали положительный голос за этот комментарий." || html == "Вы уже отдали отрицательный голос за этот комментарий.") alert(html);
				else {
					$("#com_like_middle_"+id).empty();
					$("#com_like_middle_"+id).append(html);
				}
			}
		});
	});
	
	/**********************/
	
	function redrawDiscuss() {
		$.ajax({
			url: '/disscussion/getDisscusList?uid='+$("#com_unikey").val()+'&id='+$("#com_id").val(),// указываем URL и
			dataType : "json",                     // тип загружаемых данных
			success: function (data, textStatus) { // вешаем свой обработчик на функцию success
				$('#disscuslist').html(data.content);
                $('#buildViewer').empty();
                $('#buildViewer').html(data.viewer);
			}
		});
	}
	
	$(".com_del").live("click",function() {
		var fullid = $(this).attr("id");
		var id = fullid.substr(8);
		//alert(id);
		$.ajax({
			url: '/disscussion/delDisscusComment?id='+id,
			dataType : "json",                     // тип загружаемых данных
			success: function (data, textStatus) { // вешаем свой обработчик на функцию success
				redrawDiscuss();
			}
		});
	});
	
	$(".com_edit").live("click", function(){
		var fullid = $(this).attr("id");
		var id = fullid.substr(9);
		var comment = $("#comtext_"+id).html();
		$.ajax({
			url : "/disscussion/convComment",
			type: "POST",
			data: "text=" + comment,
			dataType: "html",
			success: function(html){
				$("#edit_id").val(id);
				var text = html.replace(/<br \/>/g, "");
				document.getElementById("comment_text").value = trim(text);				
				var coordinates = $("#comment_text").offset();
				var scrollT = document.documentElement.scrollTop || document.body && document.body.scrollTop || 0;
				var top = coordinates.top-300;
				if(scrollT <  top)	$('body,html').animate({scrollTop:  top}, "slow");
			}
		});		
	});
	
	$('#discussform').ajaxForm(function(res) {	
		//alert(res);	
		$("#discussform").resetForm();
		$("#id_parent").val(0);
		$("#offset").val(0);
		$("#edit_id").val(0);
		$("#answerbody").empty();
		document.getElementById("comment_text").value="";
		$("#answer").animate({opacity: "hide"}, "fast");
		redrawDiscuss();
	});
	
	$("#comment_text").keyup(function(){		
		 var obj = document.getElementsByName('comment_text')[0];
		 if (obj.value.length > 2000) obj.value = obj.value.substr(0, 2000);
		 document.getElementById('charnum').innerHTML='Осталось символов: ' + (2000 - obj.value.length);
	});
	
});


function CloseLoadPic(){
	var div = document.getElementById("loadpic");
	var divinput = document.getElementById("divinput");
	var fileinput = document.getElementById("file_com");
	var status = document.getElementById('statuspic'); 
	status.style.display = 'none';  
	divinput.removeChild(fileinput);
	div.style.display = 'none';                  
}
function YesLoadPic(){
	var div = document.getElementById('loadpic');
	var status = document.getElementById('statuspic');
	var fileinput = document.getElementById("file_com");
	div.style.display = 'none';
	if(fileinput.value != '') status.style.display = 'block';                  
}
function OpenLoadPic(){
	var div = document.getElementById('loadpic');
	var divinput = document.getElementById('divinput');
	var fileinput = document.getElementById("file_com");
	if(typeof(fileinput) == "undefined" || fileinput == null){
		fileinput = document.createElement("input");
		fileinput.setAttribute("type", "file");
		fileinput.setAttribute("id", "file_com");
		fileinput.setAttribute("name", "file_com");
		divinput.appendChild(fileinput);
	}
	div.style.display = 'block';              
}
function explode( delimiter, string ) {				 
	var emptyArray = { 0: '' };
 
	if ( arguments.length != 2
		|| typeof arguments[0] == 'undefined'
		|| typeof arguments[1] == 'undefined' )
	{
		return null;
	}
 
	if ( delimiter === ''
		|| delimiter === false
		|| delimiter === null )
	{
		return false;
	}
 
	if ( typeof delimiter == 'function'
		|| typeof delimiter == 'object'
		|| typeof string == 'function'
		|| typeof string == 'object' )
	{
		return emptyArray;
	}
 
	if ( delimiter === true ) {
		delimiter = '1';
	}
 
	return string.toString().split ( delimiter.toString() );
}

function checkType(){
	var fileinput = document.getElementById("file_com");
	var tp = explode(".", fileinput.value);
	var type = tp[(tp.length-1)];
	var ltype = type.toLowerCase();
	if(ltype != "jpeg" && ltype != "jpg" && ltype != "png" && ltype != "gif"){
		var divinput = document.getElementById("divinput");					
		divinput.removeChild(fileinput);
		finput = document.createElement("input");
		finput.setAttribute("type", "file");
		finput.setAttribute("id", "file_com");
		finput.setAttribute("name", "file_com");
		divinput.appendChild(finput);
		alert("Можно загрузить только файлы форматов: png, jpg и gif.");
	}
}