var streams = {
	
	init: function(data){
		var t = this;
		t.data = data;
		t.pages.p = this;
		t.editor = new RBEditor;
		return this;
	},
	
	pages : {
		main : function() {
			var p = this.p; //parent object
			var h = p.topMenu();
			var pg = paging.init({ 
				nElems : p.data.articles[p.data.articles.length - 1],
				curPage : p.data.curPage,
				itemsPerPage : 25,
				color : 'red'
			});
			h += "<div class='subTitle'>";
			h += "<input id='chooseRate' class='comboBox'/><div style='float:left; padding:0 10px;'> &mdash; </div> <input id='chooseTime' class='comboBox'/>";
			h += "</div>";
			h += info ({title: 'Как правильно создать собственный пост?',url: '/media/howto/post.txt', style:'top:-15px;'});
			if (p.data.pageType == "streams_show"){
				h += "<div class='streamHeader'>" 
				+ p.data.streamTitle 
				+ "<span style='float:right;'>Модератор потока — " + p.data.nick + "</span>"
				+ "</div>";
			}
			h += '<div class="streamsPage">';
				h += '<div class="streamsTop">'+p.announces()+'</div>';
				h += '<div class="paging">'+pg.build()+'</div>';	
			h += '</div>';
			$('#leftContent').html(h);
		
			pg.addEvents('.paging');
			p.resize();
			var rate = ["Любой рейтинг", "Рейтинг 10 +", "Рейтинг 20 +"]
			$("#chooseRate").combobox({
				data: rate,
				arrowHTML: function() {
					 return $('<a href="javascript:;" class = "ui-combobox-arrow"></a>');
				}
			});	
			var time = ["Все", "За сегодня", "За последние 2 дня", "За последние 3 дня"];
			$("#chooseTime").combobox({
				data: time,
				arrowHTML: function() {
					 return $('<a href="javascript:;" class = "ui-combobox-arrow"></a>');
				}
			});
			$("#chooseRate").val(rate[(p.data.curRate)/10]);
			$("#chooseRate").addClass('value' + p.data.curRate);
			$("#chooseTime").val(time[p.data.curDays]);
			$("#chooseTime").addClass('value' + p.data.curDays);
			
			$("#chooseRate").bind("comboChanged", function(){
					var url = location.hash.replace(/\/p[0-9]+\/r[0-9]+\/d[0-9]+/, "");
					goToUrl(url + '/p0/r' + getValue(this)*10 + '/d' + getValue($('#chooseTime')[0])*1);		
			});
			$("#chooseTime").bind("comboChanged", function(){
					var url = location.hash.replace(/\p[0-9]+\/r[0-9]+\/d[0-9]+/, "");
				    goToUrl(url+ '/p0/r' + getValue($('#chooseRate')[0]) + '/d' + getValue(this)*1);
			});
			
			/*
            h = ban240x400(topArtists.init(p.data.topPerformers).get(0, 5));
			
			h += streams.streams();

			h += ban240x400(topArtists.get(6,11));
			$('#dynamicRightContent').css('margin-top', "0px");
			$('#dynamicRightContent').html(h);
			topArtists.addEvents("#dynamicRightContent .banner240x400 .topPerformers");
			*/
		},
		
		all: function(){
			var data = this.p.data, p = this.p, h = streams.topMenu();
			h +="<ul class='stream-list'>";
			for (var i in data.streams){
				h += "<li style='background:#333; background-image: url(/media/images/beta-pics/charts_back.png); padding:5px 10px 10px 5px; height:31px; margin: 0 0 10px 0;' >"
				  + "<a href='/#streams/" + data.streams[i].id + "'>" 
					  + "<img height='35px' style='margin-right:10px;' align='left' src='media/images/streams/no_picture_55x55.jpg' />"
				  + "</a>"
				  + "<a href='/#streams/" + data.streams[i].id + "' style='font-size:14px; font-weight:bold; color:#fff; text-transform:uppercase; ' >" 
				  + data.streams[i].title 
				  + "</a> "
				  + "<span style='float:right; text-align:right;'>" 
				  + "В потоке " + data.streams[i].narticles + " постов, последний - " + data.streams[i].last + "." 
				  + "<br/>"
				  + "Адмнистратор потока — <a href='/#users/" + data.streams[i].nick + "'>" + data.streams[i].nick + "</a>"
				  + '</span>'
				  + "<br/>"
				  + data.streams[i].description.replace(/<\/?[^>]+>/gi, '')
				  + "</li>";
			}
			h +="</ul>";
			$('#leftContent').html(h);
		},
		
		posts: function(){
			var data = this.p.data, p = this.p, h = streams.topMenu();						
			h += "<div class='subTitle'>" + data.article.title.toUpperCase() + "</div>";
			h += "<div class='pInfo'>";
			h += ((data.article.auth.sex == 'Ж') ? ("Написала ") : ("Написал ")) + "<a href='/#users/" + data.article.auth + "'><b>" + data.article.auth + "</b></a> " + data.article.date + " в потоке <a href='/#streams/" + data.article.pid + "'><b>" + data.article.streamTitle.toUpperCase() + "</b></a>.";
			h += ((data.isLogin == data.article.uid) ? (" <a href='/#posts/edit/" + data.article.id + "' class='editLink'>Перейти к редактированию</a>.") : (""));
			h += "<div class='activities'>";
			h += "<span class='nViews'>" + data.article.n_views + "</span>";
			h += "<span class='artComments'>" + data.article.n_comments + "</span>";
			h += "<span class='votes'>" + data.article.rate + "</span>";
			h += "</div><br clear='All'/>";
			h += "<div class='articleTopInfo'>";
			h += "<span class='buttons'>";
		//	h += "<a href='javascript:;' class='inFav'>Подписаться на поток</a>";
			h += "</span>";
			h += "<div class='alsoInStream'>";
			h += "Также в потоке: ";
			for(var i in data.also_articles){
				h += "<a id='a" + i + "' href='/#posts/" + data.also_articles[i].id + "'>";
				h += "<img src='" + ((data.also_articles[i].isimage*1 == 1) ? data.also_articles[i].image : "/media/images/streams/no_picture_110x110.jpg") + "' style='" + ((i==data.also_articles.length - 1) ? ("margin-right:0;"):("")) + "'/>";
				h += "</a>";
			}
			h += '<div class="usersTooltip">';
			h += '<span class="cont">';
			h += '<span class="nick"></span>';
			h += '<span class="karma"></span>';
			h += '</span>';
			h += '<span class="tale"></span></div>';
			h += "</span>";
			h += "</div>";
			h += "</div>";
			h += '</div>';
			h += '<br clear="all"/>';
			h += '<div class="articlePage">';
			h += '<div class="articleText">';
			h += data.article.text;
			h += '</div>'; 
			h += '<div class="bottomArticleInfo">';
			h += '<table>';
			h += '<tr>';
			h += '<td>';
			h += '<a href="javascript:;" class="getUrl">Код для блога</a>';
			h += '</td>';
			h += '<td class="ratingWorks">';
				h += '<span style="position:relative;">';
				h += '<a href="javascript:;" class="ratingButtons ' + ((data.isVote == 0 && data.isLogin != data.article.uid && data.isLogin > 0) ? ("rbMinus") : ("rbMinusUnactive")) + '"></a>';
				h += '<span class="cifr">';
				h += data.article.rate;
				h += '</span>';
				h += '<a href="javascript:;" class="ratingButtons ' + ((data.isVote == 0 && data.isLogin != data.article.uid && data.isLogin > 0) ? ("rbPlus") : ("rbPlusUnactive")) + '"></a>';
				h += '</span>';
				h += '</td>';
			h += '<td>';
		//	h += '<span class="buttons">';
		//	h += '<a href="javascript:;" class="inFav">Добавить в избранное</a>';
		//	h += '</span>';
			h += VK.Share.button({
			  url: 'http://rockbaby.ru/posts/'+data.article.id+"/",
			  title: data.article.title,
			  description: data.article.announce + " - http://rockbaby.ru/posts/"+data.article.id+"/",
			  image:  'http://rockbaby.ru/' + data.article.image,
			  noparse: true
			},
			{type: 'round', text: 'Поделиться Вконтакте'}
			);
			h += '</td>';
			h += '</tr>';
			h += '<tr>';
			h += '<td>';
			h += '</td>';
			h += '<td style="text-align:center;">';
			//h += '<a class="claimLink" href="javascript:;">';
			//h += '<span class="txt">Пожаловаться</span>';
			//h += '<span class="downButton"></span>';
			//h += '</a>';
			h += '</td>';
			h += '<td>';
			h += '</td>';
			h += '</tr>';
			h += '<tr>';
			h += '<td>';
			h += '</td>';
			h += '<td style="text-align:center;">';
			h += ((data.article.tags!='') ? ('<span class="tags">ТЕГИ:<br/>' + data.article.tags + '</span>') : (''));
			h += '</td>';
			h += '<td>';
			h += '</td>';
			h += '</tr>';
			h += '<tr>';
			var j = -1;
			for(var i in data.also_articles){
				if(data.article.id > data.also_articles[i].id)
					j = i;
			}
			h += '<td>' + ((j!=-1)?('<a class="navigation backLink" href="/#posts/' + data.also_articles[j].id + '">' + ((data.also_articles[j].title.length<20)?(data.also_articles[j].title.toUpperCase()):(data.also_articles[j].title.toUpperCase().substr(0, 20) + "...")) + '</a>'):('')) + '</td>';
			h += '<td></td>';
			
			j = -1;
			for(var i in data.also_articles){
				if(data.article.id < data.also_articles[i].id)
					j = i;
			}
			h += '<td>' + ((j!=-1)?('<a class="navigation nextLink" href="/#posts/' + data.also_articles[j].id + '">' + ((data.also_articles[j].title.length<20)?(data.also_articles[j].title.toUpperCase()):(data.also_articles[j].title.toUpperCase().substr(0, 20) + "...")) + '</a>'):('')) + '</td>';
			
			h += '</tr>';
			h += '</table>';
			h += '</div>';
			h += '</div>';
			h += '<br clear="All"/>'
			h += '<div class="comments block" style="color:#000"></div>';
			$('#leftContent').html(h);
			h = ban240x400(topArtists.init(p.data.topPerformers).get(0, 5));
			$('#dynamicRightContent').css('margin-top', "0px");
			$('#dynamicRightContent').html(h);
			topArtists.addEvents("#dynamicRightContent .banner240x400 .topPerformers");
			comments = new commentsFuncs(4, data.article['id'], '.comments', 'blue');			
			comments.show(1);
			$('.alsoInStream a').bind("mouseover", function(){
				id = this.id.substr(1, this.id.length);
				$('.alsoInStream .usersTooltip .nick').html(data.also_articles[id].title.toUpperCase() + "<span class='fader'></span>");
				h = "<span class='nViews'>" + data.also_articles[id].n_views + "</span>";
				h += "<span class='artComments'>" + data.also_articles[id].n_comments + "</span>";
				h += "<span class='votes'>" + data.also_articles[id].rate + "</span>";
				$('.alsoInStream .usersTooltip .karma').html(h);
				offs = this.parentNode.offsetLeft - 78 + 33 * (id);
				$('.alsoInStream .usersTooltip').css("left", offs + "px");
				$('.alsoInStream .usersTooltip').show();
			});
			
			$('.alsoInStream a').bind("mouseout", function(){
				$('.alsoInStream .usersTooltip').hide();
			});
		
			$('.ratingWorks .rbMinus').click(function(){
				$(this).removeClass('rbMinus').addClass('rbMinusUnactive');
				$('.ratingWorks .rbPlus').removeClass('rbPlus').addClass('rbPlusUnactive');
				$.post('/user/vote/',{type:'articles', pid:data.article.id, pm : -1},
					function(inf){
						$('.ratingWorks .cifr').html(inf);
				});
			});
			
			$('.ratingWorks .rbPlus').click(function(){
				$(this).removeClass('rbPlus').addClass('rbPlusUnactive');
				$('.ratingWorks .rbMinus').removeClass('rbMinus').addClass('rbMinusUnactive');
				$.post('/user/vote/',{type:'articles', pid:data.article.id, pm : 1},
					function(inf){
						$('.ratingWorks .cifr').html(inf);
				});
			});
			
			$(".getUrl").click(function(){
				m = new MessageBox({title:"Код для блога:", closeButton:true});
				m.content("<textarea style='width:99%'><a href='http://rockbaby.ru/#posts/"+data.article.id+"'>"+data.article.title+" на www.rockbaby.ru</a></textarea>");
				m.show();
			});
		},
		
		addPost: function(){
			var data = this.p.data;
			var d = data;
			d.type = "СОЗДАНИЕ ПОСТА";
			this.p.post(d);
		},
		
		editPost: function(){
			var data = this.p.data;
			var d = data.article;
			d.streams = data.streams;
			d.type = "РЕДАКТИРОВАНИЕ ПОСТА";
			this.p.post(d);
		}
	},
	
	topMenu: function(){
		var url = location.hash
		function active (reg) {
			return ((reg.test(url))?" active":"")
		}
		var h = "<div class='subMenu streams'>";
		h += "<a class='menuItem" + active(/^#streams$/i) + "' href='/#streams'>все посты</a>";
		h += "<a class='menuItem" + active(/^#streams\/all$/i) + "' href='/#streams/all'>все потоки</a>";
	/*	h += "<a class='menuItem' href='/#streams/news'>новости</a>";
		h += "<a class='menuItem' href='/#streams/personal'>персональные</a>";
		h += "<a class='menuItem' href='/#streams/music'>музыка</a>";
		h += "<a class='menuItem' href='/#streams/inquisition'>инквизиция</a>";*/
		h += "</div>";
		return h;
	},
	
	announces:	function(){
	    var h = '', t = this, articles = this.data.articles;
		articles.pop();
		for (var i in articles) {
			h += "<div class='articleBrief' " + (((parseInt(i) + 1) % 5 == 0)?"style='margin-right:0;'":"")+">";
			h += "<a href='/#posts/" + articles[i].id + "'>";
			h += "<img src='" + ((articles[i].isimage == 1)?articles[i].image:"/media/images/streams/no_picture.jpg") + "' />";
			h += "</a>";
			h += "<a href='/#streams/" + articles[i].pid + "' class='streamTitle'>";
			h += articles[i].streamTitle.toUpperCase();
			h += "</a>";
			h += "<a href='/#posts/" + articles[i].id + "' class='articleTitle'>";
			h += articles[i].title;
			h += "</a>";
			h += "<span class='articleText'>";
			h += articles[i].announce;
			h += "</span>"; 
			h += "<span class='votesComments'>";
			h += "<span class='artComments'>";
			h += articles[i].n_comments;
			h += "</span>";
			h += "<span class='votes'>";
			h += articles[i].rate;
			h += "</span>";
			h += "</span>";
			h += "</div>";
		}
		return h;
	},
	
	resize: function(){
		var titles = $(".streamsTop .articleTitle");
		for (i = 0; i < titles.length; i++) {
			if (titles[i].offsetHeight > 72) {
				$(titles[i]).css("height", "72px");
			}
		}
		var texts = $(".streamsTop .articleText");
		for (i = 0; i < texts.length; i++) {
			if (texts[i].offsetHeight > 70) {
				$(texts[i]).css("height", "69px");
			}
		}
	},
	
	streams:function(){
		var t = this, data = t.data;
		var h ="<div class='streamsTopBrief block'>";
		for (var i in data.streams) {
			h += '<div class="streamPreview">';
			if (i == data.streams.length - 1) {
				h += '<a href="/#streams/' + data.streams[i].id + '" class="picLink" style="border-bottom:none;">';
			}
			else 
				h += '<a href="/#streams/' + data.streams[i].id + '" class="picLink">';
			if (data.streams[i].image != "") 
				h += '<img src="' + data.streams[i].image + '"/>'
			else 
				h += '<img src="/media/images/streams/no_picture_55x55.jpg"/>'
			h += '</a>';
			h += '<span class="streamInfo">';
			h += '<a href="/#streams/' + data.streams[i].id + '" class="title">';
			h += data.streams[i].title.toUpperCase();
			h += '</a>';
			h += '<span class="info">';
			h += 'Постов: ' + data.streams[i].narticles;
			h += ', Общий рейтинг: ' + data.streams[i].totalRate;
			h += '</span>';
			h += '</span>';
			h += '</div>';
		}
		h += '</div><br clear="all"/>';
		return h;
	},
	
	post: function(data) {
			var p = this;
			function test(b){
				return ((b)?(b):(""))
			}
		    var h = streams.topMenu();
			h += "<div class='subTitle'>";
			h += data.type;
			h += "</div>";
			h += info ({title: 'О чем стоит писать и о чем лучше не писать?',url: '/media/howto/post.txt', style:'top:-15px;'});
			h += '<form id="addStream" class="edit-layout" action="">';
			h += 'В потоке <strong id="' + test(data.streamId) + '" class="selected-stream">' + test(data.streamTitle) + '</strong> (<a href="javascript:;" id="changeStream">изменить</a>)';
			h += '<div class="separator"></div>';
			h += '<div class="titles">Заголовок</div>';
			h += '<input class="long" id="postName" value="' + test(data.title) + '" type="text"/>';
			h += '<div class="explanation">Придумайте вашему посту интересное название, которое ясно выразит то, о чем вы собираетесь написать.</div>'
			h += '<div class="titles">Краткое описание</div>';
			h += '<textarea id="postBriefly">' + test(data.announce) + '</textarea>';
			h += '<div class="explanation">Постарайтесь максимально кратко сформулировать содержание поста.</div>'
			h += '<div class="titles">Иконка поста</div>';
			h += '<img class="icon" src="' + ((data.isimage)?("/media/images/streams/id_"+data.streamId+"/id_"+data.id+"_article_image_110x110.jpg"):("/media/images/streams/no_picture.jpg")) + '"/>';
			h += '<a href="javascript:;" id="changeIcon">Выбрать изображение</a>'
			h += '<div class="explanation">Файлы размером более 5 MB не загрузятся. В случае возникновения проблем попробуйте загрузить фотографию меньшего размера.</div>'
			h += '<div class="titles">Текст</div>';
			h += '<textarea id="postarea">' + test(data.text) + '</textarea>';
			h += '<div class="titles">Теги</div>'; 
			h += '<input class="long" name="tags"  value="' + test(data.tags) + '" id="postTags" type="text"/>';
			h += '<div class="explanation">Пишите теги через запятую. Например: музыкальные новости, Элвис Пресли, сенсация, жив</div>'
			h += '<div class="separator"></div>';
			h += '<div id="divOk"></div>';
			h += '<a id="addPostButton" class="button">Сохранить</a>'
			h += '</form>';
			$('#leftContent').html(h);
			$('#changeStream').click(function(){
				var b = new MessageBox({
					closeButton:true,
					width:"200px",
					title:'Выберите поток'
				});
				var c = "<ul id='selectStream'>";
				for(var i in data.streams){
					c +="<li>&mdash; <a id='" + data.streams[i].id + "'  href='javascript:;'>"+data.streams[i].title+"</a></li>";
				}
				c +="</ul>";
				b.content(c);
				$("#selectStream a").click(function(){
					el = $('.selected-stream');
					el[0].id = this.id;
					el.html(this.innerHTML);
					b.hide();
				});
				b.show();
			})
			
			new AjaxUpload('changeIcon', {action: '/streams/upload/', name: 'icon',
				 onComplete:function(file, data){
					$('.icon')[0].src = data;
			 }});

			
			$('#addPostButton').click( function(){
				var image = $('.icon').attr('src').replace(document.location.host);
				if (($('#postName').val() != '') 
					&& ($('#postBriefly').val() != '')
					&& (p.editor.val() != '')
					&& ($(".selected-stream")[0].id!=0)
					&& ($('#postTags').val() != '')
					) {
					$.post('/posts/add/', {
						title: $('#postName').val(),
						tags: $('#postTags').val(),
						briefly: $('#postBriefly').val(),
						image: image,
						text:p.editor.val(),
						stream_id: $(".selected-stream")[0].id,
						id: data.id
					}, function(data){
						//data = eval ("("+data+")");
						document.location.href = '/#posts/' + data.post_id;
					});
				}
				else {
					$('#divOk').fadeTo(0, 1)
							   .html('Все поля должны быть заполнены.')
							   .fadeTo(3000, 0);
				}
			});
			p.editor.init('postarea');
	}
}




function streams_page(data){
	streams.init(data).pages.main();
}

function streams_all_page(data){
	streams.init(data).pages.all();
}

function streams_show_page(data){
	streams.init(data).pages.main();
}

function post_page(data){
	streams.init(data).pages.posts();
}


function post_add_page(data){
	streams.init(data).pages.addPost();
}


function post_edit_page(data){
	streams.init(data).pages.editPost();
}





