/*
 * типы:
 * 1 - перформер
 * 2 - альбом
 * 3 - трек
 * 4 - пост 
 * 5 - пользователь
 */
mainfocus=0;
subfocus=0;
subid=0;

function commentsFuncs (type, id, obj, pagingColor){
	this.obj = obj;
	this.nNews = 0;
	this.jSData = 0;
	this.performer = 0;
	this.type = type;
	this.id = id;
	this.page = 0;
	this.currentpage=1;
	this.pagecount=0;
	this.pagingColor = pagingColor;
}
 
commentsFuncs.prototype = {

	refresh: function(page){
		var t = this;
		t.page = page;
		$.post('/comments/show/'+t.type+'/' + t.id + '/' + page + '/', function(data){
			t.jSData = data;
			t.pagecount=data.count;
			t.show(t.page);
		});
	},
	
	show: function(page){
		var t = this;
		if (t.jSData == 0){
			t.refresh(page);
			return;
		}
		t.currentpage = page;
		var data = t.jSData.comments;
		user = t.jSData.user;
		$('.activities .artComments').html(t.pagecount);
		
		if(user.isLogin == t.id && t.type == 5){
			$('#loginLayout .wallAlert').hide();
		}
		
		var h = '';
		h += '<span class="blockTitle" style="position:relative;">' + ((t.type==5)?('СТЕНА '):('КОММЕНТАРИИ ')) + '<sup><i>' + t.pagecount + '</i></sup>';
		h += info({title:"Как комментировать?", url:'/media/howto/comment.txt', style:"left:-320px; top:2px;"});
		h += "</span>";
		h += '<div class="layout">';
		if(user.isLogin != "0"){
			h += "<form action = 'javascript:comments.add();'>";
			h += "<div class='user-inf' style='font-weight:bold;margin-top:0;'>";
			h += "<span class='whiteFadeOut'></span>";
			h += "<img width='25px' src='"+user.avatar.replace(".jpg", "_55x55.jpg")+"'/>";
			h += user.nick;
			h += "</div>";
			h += "<div class='comm_textarea'><textarea id='maincomment'></textarea></div>";
			h += "<a href='javascript:;' onclick='this.parentNode.submit(); return true;' class='profileButton'>Отправить</a>";
			h += "</form>";
		}
			for (i = 0; i < data.length; i++) {
				h += '<div class="item">';
				h += "<div class='user-inf'>";
				h += "<span class='whiteFadeOut'></span>";
				h += "<a class='fl' href='/#users/" + data[i].nick + "'>";
				h += "<img width='25px' src='" + data[i].avatar.replace(".jpg", "_55x55.jpg") + "'/>";
				h += "</a>";
				h += "<a href='/#users/"+data[i].nick+"'>";
				h += data[i].nick;
				h += "</a>";
				h += '<div>' + data[i].time + '</div>';
				h += "</div>";
				h += "<div class='subj'><pre>";
				h += data[i].subj;
				h += "</pre></div>";
				if (user.isLogin != "0" && data[i].subj!="Комментарий удалён автором") {
					h += "<div class='doComment'>";
					h+="<span class='ans'>&mdash; Ответить</span>";
					if (user.nick == data[i].nick || (user.isLogin == t.id && t.type == 5)) {
							h += "<span class='delComment' onclick='javascript:comments.del(event,1,"+data[i].id+")'>&mdash; Удалить</span>";
						};
					h += "</div>";
					h += "<div class='subCommentForm'>";
					h += "<form action = 'javascript:comments.subadd(" + data[i].id + ");'>";
					h += "<div class='user-inf' style='font-weight:bold;margin-top:0;'>";
					h += "<span class='whiteFadeOut'></span>";
					h += "<img width='25px' src='" + user.avatar.replace(".jpg", "_55x55.jpg") + "'/>";
					h += user.nick;
					h += "</div>";
					h += "<div class='comm_textarea'><textarea id='" + data[i].id + "' class='subtextareas'></textarea></div>";
					h += "<a href='javascript:;' onclick='this.parentNode.submit(); return true;' class='profileButton'>Отправить</a>";
					h += "<a href='javascript:;' class='cancel' onclick='$(this).parent().parent().slideToggle(\"slow\")'>отменить</a>";
					h += "</form>";
					h += "</div>";
					h += "</div>";
				}
				else
				{
					h += "<div class='empty_div'> </div></div>";
				}
				if (data[i].subcomments) {
					for (k = 0; k < data[i].subcomments.length; k++) {
						h += '<div class="item">';
						h += "<div class='user-inf'>";
						h += "<span class='whiteFadeOut'></span>";
						h += "<a class='fl' href='/#users/" + data[i].subcomments[k].nick + "'>";
						h += "<img width='25px' src='" + data[i].subcomments[k].avatar.replace(".jpg", "_55x55.jpg") + "'/>";
						h += "</a>";
						h += "<a href='/#users/" + data[i].subcomments[k].nick + "'>";
						h += data[i].subcomments[k].nick;
						h += "</a>";
						h += '<div>' + data[i].subcomments[k].time + '</div>';
						h += "</div>";
						h += "<div class='subj_sub'><pre>";
						h += data[i].subcomments[k].subj;
						h += "</pre></div>";
						
						if (user.nick == data[i].subcomments[k].nick) {
							h += "<div class='doComment'>";
							h += "<span class='delComment' style='margin-left:35px;' onclick='javascript:comments.del(event,100,"+data[i].subcomments[k].id+")'>&mdash; Удалить</p>";
							h += "</div></div>";
						}
						else
						{
							h += "<div class='empty_div'> </div></div>";
						}
					}
					}
				if(data.length==0)
				{
					h += "Пока что никто ничего не написал.";
				}
			}
		h += '<br clear="All"/><div class="paging" style="top:30px;height:40px;"></div><br clear="All"/>';
		h += '</div><br clear="All"/>';
		$(" "+t.obj).html(h);
		$(".subCommentForm").hide();
		$(".item").hover(function(){
			$(".doComment").css('visibility', 'hidden');
			$(this).children(".doComment").css('visibility', 'visible');
		},function(){
		});
		$(".doComment .ans").click(function(){
			$(this).parent().next("div.subCommentForm").slideToggle("slow")
		});
		$('.commentpage').click(function(){
			var num=$(this).attr('id');
			if (num == -1) {
				if (t.currentpage < pagecount) {
					t.currentpage++;
					t.refresh(t.currentpage);
				}
			}
			else 
				if (num == -2) {
					if ((t.currentpage != 0) && (t.currentpage > 1)) 
						t.currentpage--;
					t.refresh(t.currentpage);
				}
				else {
					t.currentpage = num;
					t.refresh(num);
				}
		});
		$("#maincomment").focus(function(){
			mainfocus=1;
			subfocus=0;
			subid=0;
		});
		$(".subtextareas").focus(function(){
			mainfocus=0;
			subfocus=1;
			subid=$(this).attr("id");
		});

		var cur_hash = location.hash;
		document.onkeydown=function(event){
		if (window.event) event = window.event;
		if (event.ctrlKey){               
			switch (event.keyCode ? event.keyCode : event.which ? event.which : null){
				case 0x25:
					location.hash = cur_hash;
					if((t.currentpage!=0)&&(t.currentpage>1))
						t.currentpage--;
					t.refresh(t.currentpage);
					break;
				case 0x27:
					location.hash = cur_hash;
					if (t.currentpage < pagecount) {
						t.currentpage++;
						t.refresh(t.currentpage);
					}
					break;
				case 13:
					if(mainfocus==1){
						javascript:comments.add();
					}
					else if(subfocus==1){
						javascript:comments.subadd(subid);
					}
					break;
			}
		}
		}
		t.jSData = 0;
		var paging = new pagingFuncs({
			nElems : t.pagecount,
			curPage : t.currentpage-1,
			itemsPerPage : 25,
			color : t.pagingColor,
			func: function(n){
				t.show(n);
			}
		});
		paging.build('.paging');
		
	},
	
	add : function() {
		var t = this;
		t.currentpage=1;
		var	re = /\S/;
		subj = $(".comments textarea").val();
		if (!re.test(subj)){
			alert('Поле не должно быть пустым!');
			return;
		}
		if (subj.length > 1000){
			alert('Сообщение слишком большое, максимум 1000 символов.');
			return;
		}
		$.post("/comments/add/", {subj:subj, type:t.type, pid:t.id}, function(){
			t.show(t.currentpage);
		});
	},
	
	subadd: function(subid){
		var t = this;
		var re = /\S/;
		subj = $(".comments .subCommentForm textarea#" + subid + "").val();
		if (!re.test(subj)) {
			alert('Поле не должно быть пустым!');
			return;
		}
		if (subj.length > 1000) {
			alert('Сообщение слишком большое, максимум 1000 символов.');
			return;
		}
		$.post("/comments/add/", {
			subj: subj,
			type: '100',
			pid: subid
		}, function(){
			t.show(t.currentpage);
		});
	},
	
	del: function(oEvent,ttype,tpid){
		var t = this;
		if(oEvent && oEvent.stopPropagation)
                oEvent.stopPropagation();       // для DOM-совместимых браузеров
        else
                window.event.cancelBubble = true; //для IE
         aid =0;
		 if (t.type == 4 ) {
		 	aid = t.id
		 }
        $.post("/comments/delComment/", {type:ttype, pid:tpid, aid:aid}, function(){
			t.show(t.currentpage);
		});

	}
}