function countLength(length){
 	var len;
 	mins = Math.floor(length/60000);
	secs = (length/1000)%60;
	if(secs>=10)
		len = mins + ':' + secs;
	else
		len = mins + ':0' + secs;	
	return len;
}

function charts_page(data)
{
	$('#dynamicRightContent').css('margin-top', "121px");
	var h = "";
	h += "<div class='charts-page'>";
	h += "<div class='subMenu'>";
	h += "<a class='menuItem " + ((data.subType=='common')?("active"):("")) + "' href='/#charts'>общая</a>";
	//h += "<a class='menuItem " + ((data.subType=='radio')?("active"):("")) + "' href='/#charts/radio'>радийные чарты</a>";
	//h += "<a class='menuItem " + ((data.subType=='performers')?("active"):("")) + "' href='/#charts/performers'>лучшие исполнители</a>";
	//h += "<a class='menuItem " + ((data.subType=='albums')?("active"):("")) + "' href='/#charts/albums'>альбомы</a>";
	//h += "<a class='menuItem " + ((data.subType=='genres')?("active"):("")) + "' href='/#charts/genres'>по жанрам</a>";
	//h += "<a class='menuItem " + ((data.subType=='sms')?("active"):("")) + "' href='/#charts/sms'>SMS-чарт</a>";
	//h += "<a class='menuItem " + ((data.subType=='tracks')?("active"):("")) + "' href='/#charts/tracks'>треки</a>";
	h += "</div>";
	
	h += eval("chartsPage." + data.subType + "(data);");
	h += "</div>";
	$('#leftContent').html(h);

	h = eval("if(typeof(chartsPage." + data.subType + "_right)==='function')chartsPage." + data.subType + "_right(data);");
	$('#dynamicRightContent').html(h);
	
	eval("if(typeof(chartsPage." + data.subType + "_bindings)==='function')chartsPage." + data.subType + "_bindings(data);");

}

chartsPage = {
	common:	function(data){
				var h = "";
				h += "<div class='smsTop'></div>";
				h += "<div id='fullWidth'></div>";
				h += '<div id="actualBlock" style="float:left;">';
				h += "<div class='randomCharts block'></div><br clear='All'/>";
				h += '<div class="interestingAlbums block" style="margin-top:28px;"></div><br clear="All"/>';
				h += '<div class="performersChart block"></div>';
				h += "</div>";
				return h;
			},
	common_right: function(data){
				var h = "";
				h += ban240x400(topArtists.init(data.topPerformers).get(0, 5));
				h += "<div class='tagCharts'></div><br clear='All'/><br clear='All'/><br clear='All'/>";
				/*
	 			* Закоменчено всвязи требованием RLE
				*/
				h += ban240x400(topArtists.init(data.topPerformers).get(6, 11));
				h += "<div class='topTen trackBlock block' style='margin-top:15px;height:252px;'>";							
    			h += "</div>";
				return h;
			},
	common_bindings: function(data){
						var fullWidthBlock = new fullWidthBlockF(data.orders);
						fullWidthBlock.show('#fullWidth');
						var smsTop = new smsChartTopFuncs(data.smsTop);
						smsTop.show('.smsTop');
						var randCharts = new randomChartsFuncs(data.randomCharts);
						randCharts.show(".randomCharts");
						var interestingAlbums = new interestingAlbumsFuncs(data.topAlbums);
						interestingAlbums.show('#actualBlock .interestingAlbums');
						var performersChart = new performersChartFuncs(data.performersChart);
						performersChart.show('#actualBlock .performersChart');
						topArtists.addEvents("#dynamicRightContent .banner240x400 .topPerformers");
						var tagCharts = new tagChartsFuncs(data.tagCharts);
						tagCharts.show('#dynamicRightContent .tagCharts');
						var topTen = new topTenFuncs(data.topTen);
						topTen.show('#dynamicRightContent .topTen');
						if (data.isLogin != 0) {
							$('.inFav').bind('click', function(){
								var t = this;
								if ($(this).hasClass('favDone')) {
									$.post('/performers/unfav/' + t.id.substr(1), function(){
										$(t).html('Добавить в избранное');
										$(t).removeClass('favDone');
									});
								}
								else {
									$.post('/performers/fav/' + t.id.substr(1), function(){
										$(t).html('Убрать из избранного');
										$(t).addClass('favDone');
									});
								}
							});
						}
					},
	radio:	function(data){
				var h = "";
				h += "<div class='subTitle'>РАДИЙНЫЕ ЧАРТЫ</div>";
				h += info({title:"Чарты по наиболее популярным радиостанциям", style:'top:-10px; right:7px;'});
				data.charts = data.charts.charts;
				var j = 0;
				h += "<div style='float:left;padding-left:1px;' class='block'>"; 
				for (i = 0; i < data.charts.length; i++) {
					h += '<a href="/#charts/radio/' + data.charts[i].id + '" class="radioStationLink" style="background-position: -' + j * 68 + 'px 0px;';
					if(j==8){
						h += "margin-right:0;"
					}
					h += '">';
					h += '</a>';
					j++;
				}
				h += "</div>";
				return h;
			},
	radio_chart: function(data){
					var h = "";
					h += "<div class='subTitle'>чарт " + data.chart.name.toUpperCase() + "</div>";
					h += "<div class='pInfo'>";
					h += "Последнее&nbsp;обновление:&nbsp;" + data.chart.lastRefresh + ". ";
					h += "<a target='_blank' style='text-decoration:underline;font-weight:bold;' href='http://" + data.chart.descr + "'>" + data.chart.descr + "</a>";
					h += "</div>";
					h += "<div class='chart block'  style='margin-top:0px;'>";
					h += "<div class='infoBlock'>";
					h += "<span class='chart-logo' style='background-position: -" + data.chart.num*128 + "px 0px;'></span>"
					h += "</div>";
					h += "<div class='trackBlock' style='margin-top:24px;'>";
		    		for (l = 0; l < data.chart.tracks.length; l++) {
							min = Math.floor(data.chart.tracks[l].trackLength/60000);
							sec = (data.chart.tracks[l].trackLength/1000)%60;
							var len = min + ":" + sec;
							if(sec<10)
								len = min + ":0" + sec; 
							h += generateTrackLine({
								element : 'div',
								addClass : '',
								id : '',
								trackId : data.chart.tracks[l].tid,
								performerId : data.chart.tracks[l].performer_id,
								trackLength : len,
								performer : data.chart.tracks[l].performer,
								title : data.chart.tracks[l].name,
								ownerNick : 1,
								color : 'cyan',
								tooltipLen : 20								
							});
			    		}
						h += "</div>";
						h += "<div class='places'>";
						for (l = 0; l < 10; l++) {
							h += "<span class='place'>" + (l + 1) + ".</span>";
						}
						h += "</div>";								
						h += "</div>";
					return h;
				}
}

function smsChartTopFuncs(data){
	this.obj = 0;
	this.jSData = 0;
	if(data)
		this.jSData = data;
}

smsChartTopFuncs.prototype = {

	refresh:		function(){
						var t = this;
						$.post('/charts/smsTop/10', function(data){
							t.jSData = data;
							t.show();								
						});
					},
	
	show:			function(obj){
						var t=this;
						if (!t.obj) {
							this.obj = obj;
						}
						if (!t.jSData) {
							t.refresh();
							return;
						}
						var data = t.jSData;
						var h = '';
						h += "<div class='places'>";
						for (i = 0; i < 10; i++) {
							h += "<span class='place'>" + (i + 1) + ".</span>";
						}
						h += "</div>";
						h += "<div class='trackBlock'>";
						h += "<span class='title'>RB-Чарт</span>";
						h += "<a class='smsLink' href='javascript:;'>загрузить чарт в плеер</a>";
						var sumVotes = 0;
					    for (i = 0; i < data.length; i++) {
							min = Math.floor(data[i].length/60000);
							sec = (data[i].length/1000)%60;
							var len = min + ":" + sec;
							if(sec<10)
								len = min + ":0" + sec; 
							h += generateTrackLine({
								element : 'div',
								addClass : '',
								id : '',
								trackId : data[i].id,
								performerId : data[i].performer_id,
								trackLength : len,
								performer : data[i].performer,
								title : data[i].name,
								ownerNick : 1,
								color : 'cyan',
								tooltipLen : 30								
							});
							if(data[i].votes > sumVotes)
								sumVotes = data[i].votes*1;
					    }
						//h += "<span class='bottomText'>Чарт, который составлется из смс-голосов. <a href='javascript:;'>Как проголосовать?</a></span>";
						h += "<span class='bottomText'>Чарт составлется из ваших голосов. <a href='/#faq'>Как проголосовать?</a></span>";
						h += "</div>";
						h += "<div class='places'>";
						for (i = 0; i < 10; i++) {
							h += "<span class='place";
							if(data[i].up_down == 1)
								h += " up";
							if(data[i].up_down == -1)
								h += " down";
							h += "'></span>";
						}
						h += "</div>";
						h += "<div class='voices'>";
						h += "<a class='smsLink' href='javascript:;' style='float:left;'>Проголосуйте за любимую композицию</a><br clear='All'/>";
						for (i = 0; i < 10; i++) {
							h += "<span class='voice' style='width:" + (data[i].votes*100)/sumVotes + "%;";
							if(i==0)
								h += "margin-top:9px;";
							h += "'>" + data[i].votes + "</span><br clear='All'/>";
						}
						h += "</div>";

						$(t.obj).html(h);

					    $(t.obj + ' a.playButton').bind("click", function(){
							sendTrackToPlayer(this, '#37c9ee');							
					    });
					    $(t.obj + ' a.plusButton').bind("click", function(){
							pPopup.openWnd(this);
					    });
						
						$('.smsLink').click(function(){
							load_track_in_player("/charts/smsChartXml/");
						});

					}
}

function randomChartsFuncs(data){
	this.obj = 0;
	this.jSData = 0;
	if(data)
		this.jSData = data;
}

randomChartsFuncs.prototype = {

	refresh:		function(){
						var t = this;
						$.post('/charts/getRandom', function(data){
							t.jSData = data;
							t.show();								
						});
					},
	
	show:			function(obj){
						var t=this;
						if (!t.obj) {
							this.obj = obj;
						}
						if (!t.jSData) {
							t.refresh();
							return;
						}
						var data = t.jSData;
						var h = '';
						
						var i = 0;
						var j = 0;
						while(j<3){
							if(data[i].id!="rbchart"){
								h += "<div class='chart block'";
								if(j==0)
									h += " style='margin-top:0px;'";
								h += ">";
								h += "<span class='blockTitle chart-color'>";
								h += "чарт ";
								h += "<a href='javascript:;'>" + data[i].name + "</a>";
								h += "</span>";
								h += "<br clear='All'/>";
								h += "<div class='infoBlock'>";
								h += "<span class='chart-logo' style='background-position: -" + data[i].num*128 + "px 0px;'></span>"
								h += "Последнее&nbsp;обновление:&nbsp;" + data[i].lastRefresh + "<br/>";
								h += "<a target='_blank' href='http://" + data[i].descr + "'>" + data[i].descr + "</a>";
								h += "</div>";
				
								h += "<div class='trackBlock'>";
								h += "<a href='javascript:;' onclick='load_track_in_player(\"/charts/getxml/" + data[i].id + "\");' style='float:right;margin-bottom:10px;'>загрузить чарт в плеер</a><br clear='All'/>";
					    		for (l = 0; l < data[i].tracks.length; l++) {
									min = Math.floor(data[i].tracks[l].trackLength/60000);
									sec = (data[i].tracks[l].trackLength/1000)%60;
									var len = min + ":" + sec;
									if(sec<10)
										len = min + ":0" + sec; 
									h += generateTrackLine({
										element : 'div',
										addClass : '',
										id : '',
										trackId : data[i].tracks[l].tid,
										performerId : data[i].tracks[l].performer_id,
										trackLength : len,
										performer : data[i].tracks[l].performer,
										title : data[i].tracks[l].name,
										ownerNick : 1,
										color : 'cyan',
										tooltipLen : 20								
									});
					    		}
								h += "</div>";
								h += "<div class='places'>";
								for (l = 0; l < 10; l++) {
									h += "<span class='place'>" + (l + 1) + ".</span>";
								}
								h += "</div>";								
								h += "</div><br clear='All'/>";
								j++;
							}
							i++;
						}
						$(t.obj).html(h);
						
						$(t.obj + " .infoBlock a").bind('mouseover', function(){
							bp = $(this).parent().find('.chart-logo').css("backgroundPosition");
							bp = bp.split(' ');
							$(this).parent().find('.chart-logo').css("backgroundPosition", bp[0] + " -128px");
						});
						
						$(t.obj + " .infoBlock a").bind('mouseout', function(){
							bp = $(this).parent().find('.chart-logo').css("backgroundPosition");
							bp = bp.split(' ');
							$(this).parent().find('.chart-logo').css("backgroundPosition", bp[0] + " 0px");
						});
						
					    $(t.obj + ' a.playButton').bind("click", function(){
							sendTrackToPlayer(this, '#37c9ee');							
					    });
					    $(t.obj + ' a.plusButton').bind("click", function(){
							pPopup.openWnd(this);
					    });
					}
}

function tagChartsFuncs(data){
	this.obj = 0;
	this.jSData = 0;
	if(data)
		this.jSData = data;
}

tagChartsFuncs.prototype = {

	refresh:		function(){
						var t = this;
						$.post('/tags/randCharts/2', function(data){
							t.jSData = data;
							t.show();								
						});
					},
	
	show:			function(obj){
						var t=this;
						if (!t.obj) {
							this.obj = obj;
						}
						if (!t.jSData) {
							t.refresh();
							return;
						}
						var data = t.jSData;
						var h = '';
						for(i=0;i<data.length;i++){
							h += "<div class='trackBlock block'>";
							h += "<span class='blockTitle chart-color' style='position:relative;float:left;'>";
							h += "чарт ";
							h += "<a href='/#events'>по жанрам</a>";
							h += "</span>"
							h += "<a href='javascript:;' style='float:right;color:#888888;margin-top:2px;' onclick='load_track_in_player(\"/tags/get_tag_chart_xml/" + data[i].tag + "\");'>загрузить чарт в плеер</a>";
							h += "<br clear='All'/>";
							h += "<span class='tagTitle'>" + data[i].tag + "</span>";
							for(j=0;j<data[i].tracks.length;j++){
								min = Math.floor(data[i].tracks[j].length/60000);
								sec = (data[i].tracks[j].length/1000)%60;
								var len = min + ":" + sec;
								if(sec<10)
									len = min + ":0" + sec; 
								h += generateTrackLine({
									element : 'div',
									addClass : '',
									id : '',
									trackId : data[i].tracks[j].id,
									performerId : data[i].tracks[j].performer_id,
									trackLength : len,
									performer : data[i].tracks[j].performer,
									title : data[i].tracks[j].name,
									ownerNick : 1,
									color : 'cyan',
									tooltipLen : 20								
								});
							}
							h += "</div>";
						}

						$(t.obj).html(h);
						
					    $(t.obj + ' a.playButton').bind("click", function(){
							sendTrackToPlayer(this, '#37c9ee');							
					    });
					    $(t.obj + ' a.plusButton').bind("click", function(){
							pPopup.openWnd(this);
					    });	

					}
}

function performersChartFuncs (data){
	this.obj = 0;
	this.jSData = 0;
	if (data) 
		this.jSData = {
			"performers": data
		};
	this.l1 = -1;
	this.l2 = 0;
}

performersChartFuncs.prototype = {

	refresh:		function(){
						var t = this;
						$.post('/performers/topPerformers/n_listen/10', function(data){
							t.jSData = data;
							t.show();								
						});

					},
	show:			function(obj, l1, l2){
						var t=this;
						if (!t.obj) {
							this.obj = obj;
						}
						if (t.l1 == -1) {
							this.l1 = l1;
						}
						if (!t.l2) {
							this.l2 = l2;
						}
						
						if (!t.jSData) {
							t.refresh();
							return;
						}
						var data = t.jSData;
						
						var h = '';

						h += "<span class='blockTitle chart-color'>";
						h += "чарт ";
						h += "<a href='javascript:;'>ИСПОЛНИТЕЛЕЙ</a>";
						h += "</span>";
						
						h += "<div class='chartLayout'>";
						for(i=0;i<data.performers.length;i++){
							h += "<div class='performerBlock'>";
							h += "<a href='/#performers/" + data.performers[i].id + "'><img src = '" + data.performers[i].image + "'/></a>";
							h += "<span class='name'>";
							h += "<a href='/#performers/" + data.performers[i].id + "'>" + data.performers[i].name + "</a>";
							h += "</span>";
							h += "<span class='nListen'>";
							h += "<span class='percentage' style='width:" + (27 + data.performers[i].n_listen*73/data.performers[0].n_listen) + "%'></span>";
							h += "<span class='text'>Прослушиваний за неделю: " + data.performers[i].n_listen + "</span>";
							h += "</span>";
							h += "<span class='buttons'>";
							h += "<a href='javascript:;' id='f" + data.performers[i].id + "' class='inFav " + ((data.performers[i].isFav)?('favDone'):('')) + "'>" + ((data.performers[i].isFav)?('Убрать из избранного'):('Добавить в избранное')) + "</a>";
							h += "<a href='javascript:;' class='toPlayer' onclick='load_track_in_player(\"/performers/getxml/" + data.performers[i].id + "\");'>Добавить в плеер</a>";
							h += "</span>";
							h += "</div>";
						}
						h += "</div>";
						
						$(t.obj).html(h);
						
					}
}