var uploaderState = 0;  // Состояние аплодера. 0 - бездействие, 1 - загрузка, ожидание подтверждения.
var tracksLimit = 100;  // Ограничение количества треков для загрузки
var begun_auto_pad = 146368574;
var begun_block_id = 156490629;


/*
 * Ядро джаваскрипта
 * Обработка переходов по страницам, хранение истории.
  */

function Core(){
		var t = this;
	    if (location.hash == '') {
            t.hash = location.hash = 'main';
        }else{
			t.hash = location.hash.replace(/^.*#/, '');
		}
        if ($.browser.msie) {
			t.toIEHistory();
        }
        $.getJSON('/' + encodeURI(t.hash) + '/', function(data){
            t.parse_data(data);
			if(data.isLogin)
				t.check_mail = setInterval("check_mail()", 25*1000);
        });
        setInterval(function(){t.checkLocation()}, (($.browser.msie))?(500):(100));
}

Core.prototype = {
	
	
	//функция проверяет изменение урл хеша и в случае изменений осуществляет запрос данных
    checkLocation: function()
	{
		var t = this, hash = location.hash.replace(/^.*#/, '');
		if(t.hash != hash){
	        if (hash == '') {
	            t.hash = location.hash = 'main';
	        }else {
				 t.hash = hash;
			}
	        if ($.browser.msie) {
	           t.toIEHistory(); //сохраняется история для ИЕ
	        }
			t.clrscr();			
            $.getJSON('/' + encodeURI(hash) + '/', function(data){
                t.parse_data(data);
            });
	     }
    },
	
		
	//сохранение истории для ИЕ. Сохраняется за счет открытия айфрейма.
	toIEHistory: function ()
	{
		var t = this;
		if(!t.iframe){
			$("body").prepend('<iframe id="nav_history" style="display: none;"></iframe>');
			t.iframe= $("#nav_history")[0].contentWindow.document;
		}
		t.iframe.location.hash = t.hash;
		t.iframe.open();
        t.iframe.close()
	},
	
	
	//Запрос к счетчику посещений
	liru: function ()
	{
		var t = this;
		if(!t.ref) {
			t.ref = document.referrer; 
		}
		myurl ='http://rockbaby.ru/'+location.hash.replace('#', '')+"/"; 
		new Image().src = "http://counter.yadro.ru/hit?r" + escape(t.ref) +
	  			 ((typeof(screen)=="undefined")?"" : ";s"+screen.width+"*"+screen.height+"*" + (screen.colorDepth?screen.colorDepth:screen.pixelDepth))
					+ ";u"+escape(myurl)
					+ ';h'+escape(location.hash.replace('#', ''))+';'+Math.random();
		t.ref = myurl;
	}, 

	//Очистка контентной области экрана
	clrscr: function ()
	{
		$('#leftContent').empty();
		$('#dynamicRightContent').empty();
		$('#loader').show();
	},


	//обработка данных запроса, вызов функции строющей страницу
   parse_data: function (data)
	{	
	
	    function colorized_menu(){
			$("#header .garage").removeClass("garageActive");
			$("#header .performers").removeClass("performersActive");
			$("#header .charts").removeClass("chartsActive");
			$("#header .events").removeClass("eventsActive");
			$("#header .streams").removeClass("streamsActive");
			var activeItem = "";
			var r1 = /^.*main.*/;
			var r2 = /^.*performer.*/;
			var r3 = /^.*charts.*/;
			var r4 = /^.*events.*/;
			var r5 = /^.*stream.*|.*posts.*/;
			var hash = location.hash;
			if (r1.test(hash))
				activeItem = "garage";
			else if (r2.test(hash))
				activeItem = "performers";
			else if (r3.test(hash))
				activeItem = "charts";
			else if (r4.test(hash))
				activeItem = "events";
			else if (r5.test(hash))
				activeItem = "streams";
			else 
				return;
			$("#header ." + activeItem)
				.addClass(activeItem + "Active");
		}
		var t = this;
		adv();
		$('#loader').hide();
		colorized_menu();
		t.liru();
		if(!t.check_mail && data.isLogin)
			t.check_mail = setInterval("check_mail()", 25*1000);
			
		if(!t.check_mail && (!data.isLogin))
			clearInterval(t.check_mail);
				
		if (data.error) return alert(data.error)
		if (data.isLogin) {
			loginFuncs.isLogin = data.isLogin;
			if (!playlists.jSData) {
				playlists.refresh();
			}
		} else{
			loginFuncs.isLogin = 0;
		}
	    evstr = data.pageType + '_page(data)';
		user_informs(data);
	   	eval(evstr);
	},  
	refresh:function()
	{
		var t = this;
		t.clrscr();
		$.getJSON('/' + encodeURI(t.hash) + '/', function(data){
                t.parse_data(data);
        }); 
	}
}


function goToUrl(url)
{
   location.hash = url;
}

/*
 * Объект пользователя
 */

user = {
	login: false,
	karma:0,
	votes:0,
	messages:0,
	wall:0,
	set:function(data){
		this.login = data.isLogin;
		this.karma = data.karma;
		this.votes = data.votes;
		this.messages = data.messages;
		this.wall = data.wall;
	}	
}


money = {
	num:0,
	refresh:function(){
		
	},
	minus:function(n) {
		this.num-=n;
	}



}




function user_informs(data)
{
	
	money.num = data.votes;
	if (data.isLogin != 0) {
	 	/*****если юзверь залогинен, выводим его ник и кнопку выход в блок залогинивания****/
		if (!$("#loginLayout .smallAvatar")[0]) {
			var h = "";
			h += "<span class='smallAvatar'><a href='/#profile' style='height:34px;padding:0;margin:0;'>";
			h += "<img src='" + data.avatar.replace(".jpg", "_55x55.jpg") + "' style='width:34px;height:34px;'/>";
			h += "</a></span>";
			h += "<a href='/#profile' class='userNick'>";
			h += data.userNick;
			h += "</a>";
			h += "<a href='javascript:;' id='userMenu' style='top:2px;' class='downButton'></a>";
			
			h += "<div class='userMenu'>";
			h += "<a class='item first' href='/#messages'>Почта</a>";
			if(data.newmesg>0){
				h += "<span class='mailAlert alert'>" + data.newmesg + "</span>";
			} else {
				h += "<span class='mailAlert alert' style='display:none;'></span>";
			}
			h += "<a class='item' href='/#profile/wall'>Стена</a>";
			if(data.newwallmesg>0){
				h += "<span class='wallAlert alert'>" + data.newwallmesg + "</span>";
			} else {
				h += "<span class='wallAlert alert' style='display:none;'>2</span>";
			}
			h += "<a class='item' onclick='$(\"#addButtonMain\").trigger(\"click\")'  href='javascript:;'>Добавить</a>";
			h += "<a href='javascript:;' id='addButtonMain' class='downButton wa'></a>";
			//h += "<a class='item' href='/#updates'>Обновления</a>";
			h += "<a class='item' onclick='$(\"#money\").trigger(\"click\")'  href='javascript:;'>Кошелек</a>";
			h += "<a href='javascript:;' id='money' class='downButton wa'></a>";
			h += "<a class='item' href='/#user/playlists'>Плейлисты</a>";
			h += "<a href='javascript:;' id='userPlaylists' class='downButton wa'></a>";
			h += "<a class='item logoutLink' href='javascript:;'>Выход</a>";
			h += "</div>";
			h += "<div class='downArrow hclickalways'></div>";
			$('#loginLayout').html(h);
			$("#loginLayout .logoutLink").bind("click", function(){
				loginFuncs.logout();
			});
			
			$('#loginLayout .downButton').click(function(){
				var h = "";
				if(this.id=="userMenu"){
					h += "<a href='/#main' class='selectItem chosen'>Гараж</a>";
					h += "<a href='/#user/friends' class='selectItem'>Друзья</a>";
				//	h += "<a href='/#user/favourites' class='selectItem'>Избранное</a>";
					$('#loginLayout .downArrow').html(h);
					$('#loginLayout .downArrow').css('width', 139 + "px");
					$('#loginLayout .downArrow').addClass("toRight");
					$('#loginLayout .downArrow').css('top', this.offsetTop - 3 + "px");
					$('#loginLayout .downArrow').css('left', this.offsetLeft - 1 + "px");
				} else
				if(this.id=="userPlaylists"){
					h += "<img src='/media/images/main_illustrations/dropdown_arrow.gif' style='position:absolute;right:3px;top:7px;'/>"
					h += "<input type='text' class='search stopProp'/><br clear='All'/>";
					for(i=0;i<playlists.jSData.playlists.length;i++){
						h += "<a href='javascript:;' onclick='load_playlist_in_player(\"/playlist/getxml/" + playlists.jSData.playlists[i].id + "\");' class='selectItem'>";
						h += playlists.jSData.playlists[i].name;
						h += "<span class='grad'></span>";
						h += "</a>";
					}
					$('#loginLayout .downArrow').html(h);
					$('#loginLayout .downArrow').css('width', 196 + "px");
					$('#loginLayout .downArrow').removeClass("toRight");
					$('#loginLayout .downArrow').css('top', this.parentNode.offsetTop + "px");
					$('#loginLayout .downArrow').css('left', this.parentNode.offsetLeft + this.offsetLeft + 12 - 196 + "px");
					$('#loginLayout .downArrow input').bind("keyup", function(){
						var fstr = $(this).val().toLowerCase();
						$(this).parent().find('.selectItem').each(function(){
							if($(this).html().toLowerCase().indexOf(fstr)==-1)
								$(this).css("display", "none");
							else
								$(this).css("display", "block");
						});
					});
				} else 
				if(this.id=="addButtonMain"){
					h += "<a href='javascript:;' class='selectItem chosen'>Треки</a>";
					h += "<a href='/#posts/add' class='selectItem'>Пост</a>";
				//	h += "<a href='/#event/add' class='selectItem'>Событие</a>";
					$('#loginLayout .downArrow').html(h);
					$('#loginLayout .downArrow').css('width', 139 + "px");
					$('#loginLayout .downArrow').addClass("toRight");
					$('#loginLayout .downArrow').css('top', this.parentNode.offsetTop + this.offsetTop - 5 + "px");
					$('#loginLayout .downArrow').css('left', this.parentNode.offsetLeft + this.offsetLeft - 1 + "px");
				} else	
				if(this.id=="money"){
					h +="<a class='selectItem chosen stopProp'>На счету " + data.votes + " голосов.</a>"
					h += "<a href='javascript:;' onclick='pay_window()' class='selectItem '>Пополнить баланс?</a>";
					//h += "<a href='/#posts/add' class='selectItem'>Пост</a>";
				//	h += "<a href='/#event/add' class='selectItem'>Событие</a>";
					$('#loginLayout .downArrow').html(h);
					$('#loginLayout .downArrow').css('width', 139 + "px");
					$('#loginLayout .downArrow').addClass("toRight");
					$('#loginLayout .downArrow').css('top', this.parentNode.offsetTop + this.offsetTop - 5 + "px");
					$('#loginLayout .downArrow').css('left', this.parentNode.offsetLeft + this.offsetLeft - 1 + "px");
				} else return;
				

				$('#loginLayout .downArrow').slideDown("fast");
			});
			
		}
			
	}
	else {
		/***если не залогинен, добавляем надписи вход, регистрация***/
		loginFuncs.loginForm();
		
	}		
}

var loginFuncs = {
	isLogin : 0,
	loginForm : function(){
					var t = this;
					var h = "";
					h += '<form method="post" onsubmit="return false;" class="loginForm">';
					h += '<input value="Email или Ник" name="Email" onblur="if(this.value==\'\') this.value=\'Email или Ник\';" onfocus="if(this.value==\'Email или Ник\') this.value=\'\';"/>';
					h += '<input value="Пароль" onblur="if(this.value==\'\') {this.value=\'Пароль\'; this.type=\'text\';}" onfocus="if(this.value==\'Пароль\'){ this.value=\'\';this.type=\'password\';}" type="text" name="Passwd" />';
					h += '<a href="javascript:;" class="login"></a>';
					h += '<a href="javascript:;" class="register"></a>';
					h += '</form>';
	
					$('#loginLayout').html(h);
					$("#loginLayout .login").bind("click", function(){
						t.login();
						return true;
					});
					
					$("#loginLayout .register").bind("click", function(){
						t.registerForm();
					});
					
					if ($.browser.msie) {
    					$($('#loginLayout input')[0]).keydown(function (event) {if (event.keyCode == 13) {$(this).next().focus(); return false;}});
  					} else {
    					$($('#loginLayout input')[0]).keyup(function (event) {if (event.keyCode == 13) {$(this).next().focus(); return false;}});
  					}
					$($('#loginLayout input')[1]).bind('keydown', function(ev){
						if (ev.keyCode == 13) {
							t.login();
							return false;
						}
					});
					playlists.setjSData(0);
				},
	login:		function(){
					var t = this;
					inputs = $('#loginLayout input');
					email = inputs[0].value;
					pass = inputs[1].value;
					$.post('/login/', {
						Email: email,
						Passwd: pass
					}, function(data){
						//data = eval("(" + data + ")");
						if (data.success == 1) {
							t.isLogin = 1;
							//window.historyStock = 'reload';
							user.login = true;
							core.refresh();
						}
						else {
							user.login = false;
							t.isLogin = 0;
							$("#dialog form").remove();
							var h = '';
							h += '<span class="smthWrong">';
							h += 'Несуществующуя комбинация Логин / Пароль. ';
							h += '<a href="javascript:;" class="retryLink">Повторить попытку</a>?&nbsp;';
							h += '<a href="javascript:;" class="remindPassLink">Напомнить пароль</a>?&nbsp;';
							h += '<a href="javascript:;" class="registerLink">Зарегистрироваться</a>?&nbsp;';
							h += '</span>';
							$('#loginLayout').html(h);
							$('#loginLayout .retryLink').bind("click", function(){
								t.loginForm();
							});
							
							$('#loginLayout .remindPassLink').bind("click", function(){
								t.remainPassForm();
							});
							
							$('#loginLayout .registerLink').bind("click", function(){
								t.registerForm();
							});
						}
					});
					return 0;
				},
	remainPassForm: function(){
						var t = this;
						var h = '';
						h += '<form  action="javascript:;">';
						h += '<input value="Email или Ник" name="Email" onblur="if(this.value==\'\') this.value=\'Email или Ник\';" onfocus="if(this.value==\'Email или Ник\') this.value=\'\';"/>';
						h += '&nbsp;<a href="javascript:;" class="sndPass">Выслать пароль</a>';
						h += '<span class="vLine">|</span>';
						h += '<a class="arr bk" href="javascript:;">Назад</a>';	
    					h += '</form>';	
						$('#loginLayout').html(h);
						
						$('#loginLayout form').submit(function(){
							t.sendPassword();
						});
						
						$('#loginLayout .sndPass').bind("click", function(){
							t.sendPassword();
						});
						
						$('#loginLayout .bk').bind("click", function(){
							t.loginForm();
						});
					},
	sendPassword   : function(){
						var t = this;
						inputs = $('#loginLayout input');
						email = inputs[0].value;
						$("#loginLayout").html('<img style="margin-top:16px;margin-left:2px;" src="/media/images/loading-trans.gif"/>');	
    					$.post('/login/remainpass', {
	        					Email: email
	    					}, function(data){	
								data = eval("(" + data + ")");	
	        					if (data.success == 1) {
									var h = '<span class="smthWrong">Пароль выслан вам на почту</span>';
									$('#loginLayout').html(h);	
									setTimeout(function(){
									t.loginForm();
								}, 1000);			
    	   					}
	       					else {
								var h = '<span class="smthWrong">Что-то не так! ';
								h += '<a href="javascript:;" id="retryLink">Повторить попытку</a>?</span>';
								$('#loginLayout').html(h);
								$('#loginLayout .retryLink').bind("click", function(){
									t.remainPassForm();
								});
	        				}
					    });		
					},
	logout:			function(){
						var t = this;
						$.get('/login/logout/', {}, function(data){
						//	data = eval("(" + data + ")");
							if (data.success == 1) {
								location.hash = '';
								core.refresh();
								t.isLogin = 0;
							}
						});
					},
	registerForm : function(){
					var t = this;
					var h = "";
					h += '<form>';
					h += '<input value="Эл. почта" name="Email" onblur="if(this.value==\'\') this.value=\'Эл. почта\';" onfocus="if(this.value==\'Эл. почта\') this.value=\'\';"/>';
					h += '<input value="Логин" onblur="if(this.value==\'\') {this.value=\'Логин\';}" onfocus="if(this.value==\'Логин\'){ this.value=\'\';}" type="text" name="login" />';
					h += '&nbsp;<a href="javascript:;" class="chkName">Проверить, свободно ли имя</a>';
					h += '<span class="vLine">|</span>';
					h += '<a href="javascript:;" class="arr fw">Далее</a>';
					h += '</form>';
	
					$('#loginLayout').html(h);
					$("#loginLayout .login").bind("click", function(){
						t.login();
					});
					if ($.browser.msie) {
    					$($('#loginLayout input')[0]).keydown(function (event) {if (event.keyCode == 13) {$(this).next().focus(); return false;}});
  					} else {
    					$($('#loginLayout input')[0]).keyup(function (event) {if (event.keyCode == 13) {$(this).next().focus(); return false;}});
  					}
					$($('#loginLayout input')[1]).bind('keydown', function(ev){
						if (ev.keyCode == 13)
							$('#loginLayout .fw').trigger('click');
					});
					
					$('#loginLayout .chkName').click(function(){
						var th = this;
						if($('#loginLayout input')[1].value=="Логин" || $('#loginLayout input')[1].value==''){
							return;
						}
						$.post('/user/checkName', {
							name : $('#loginLayout input')[1].value
						}, function(data){
							if(data==1){
								$(th).after("<a class='mes' style='color:#a2000f;'>Такое имя уже зарегистрировано</a>");
							} else {
								$(th).after("<a class='mes' style='color:#256a00;'>Имя свободно для регистрации</a>");
							}
							$(th).hide();
							setTimeout(function(){
								$(th).show();
								$(th).next().remove();
							}, 2000);
						});
					});
					
					$('#loginLayout .fw').click(function(){
						var th = $('#loginLayout .chkName');
						var login = $('#loginLayout input')[1].value;
						var email = $('#loginLayout input')[0].value;
						if(login=="Логин" || email=="Эл. почта" || login == '' || email == ''){
							return;
						}
						$.post('/user/checkName', {
							name : $('#loginLayout input')[1].value
						}, function(data){
							if(data==1){
								$(th).after("<span class='mes' style='color:#a2000f;'>Такое имя уже зарегистрировано</span>");
								$(th).hide();
								setTimeout(function(){
									$(th).show();
									$(th).next().remove();
								}, 2000);
							} else {
								var h = "";
								h += '<form>';
								h += '<input value="Пароль" onblur="if(this.value==\'\') {this.value=\'Пароль\'; this.type=\'text\';}" onfocus="if(this.value==\'Пароль\'){ this.value=\'\';this.type=\'password\';}" type="text" name="Passwd" />';
								h += '<input value="Повторите пароль" onblur="if(this.value==\'\') {this.value=\'Повторите пароль\'; this.type=\'text\';}" onfocus="if(this.value==\'Повторите пароль\'){ this.value=\'\';this.type=\'password\';}" type="text" name="Passwd" />';
								h += '<input style="margin-left:5px;" id="agreement_agree" type="checkbox" class="ui-helper-hidden-accessible"/><label style="position:relative;top:2px;" for="agreement_agree">Согласен с </label>';
								h += '<a href="javascript:;" onclick="agreement_page();">пользовательским соглашением</a>';
								h += '<span class="vLine">|</span>';
								h += '<a href="javascript:;" class="reg">Регистрация</a>';
								h += '</form>';

								$('#loginLayout').html(h);
								
								if ($.browser.msie) {
    								$($('#loginLayout input')[0]).keydown(function (event) {if (event.keyCode == 13) {$(this).next().focus(); return false;}});
  								} else {
    								$($('#loginLayout input')[0]).keyup(function (event) {if (event.keyCode == 13) {$(this).next().focus(); return false;}});
  								}
								
								$($('#loginLayout input')[1]).bind('keydown', function(ev){
									if (ev.keyCode == 13)
										$('#loginLayout .reg').trigger('click');
								});
								
								$('#agreement_agree').checkBox();
								$('#loginLayout .reg').click(function(){
									var pass = $('#loginLayout input')[1].value;
									var pass2 = $('#loginLayout input')[0].value;
									if(pass == 'Пароль' || pass2=='Повторите пароль' || pass == '' || pass2 == '' || !$('#agreement_agree')[0].checked)
										return;
									if(pass!=pass2){
										$("#agreement_agree").after("<a class='mes' style='color:#a2000f;margin-left:5px;'>Введенные пароли не совпадают!</a>").remove();
										$("#loginLayout label").next().remove();
										$("#loginLayout label").remove();
									} else {
										$.post('/register', {
											Email : email,
											Passwd : pass,
											Nick : login
										}, function(data){
											if(data.success == 1){
												core.refresh();
											} else {
												$("#agreement_agree").after("<a class='mes' style='color:#a2000f;margin-left:5px;'>Такой e-mail уже зарегистрирован.</a>&nbsp;<a href='javascript:;' class='remindPassLink'>Напомнить пароль</a>?").remove();
												$("#loginLayout .reg").remove();
												$("#loginLayout label").next().next().remove();
												$("#loginLayout label").next().remove();
												$("#loginLayout label").remove();
												$("#loginLayout .remindPassLink").click(function(){
													t.remainPassForm();
												});
											}
										});
									}
								});
							}
						});
					});
					
					playlists.setjSData(0);
				}
}






function adv() {
 	url = "http://autocontext.begun.ru/context.jsp?";
    var params = {
        pad_id: 146368574,
        block_id: '1,156490629',
        lmt: 1267908299, //"lmt": Date.parse(document.lastModified) / 1000
        sense_mode: 'custom',
        ut_screen_width: '1280',
        ut_screen_height: '1024',
        json: 1,
        jscall: 'loadFeedDone',
        version: 31805,
        rq: 0,
        page_id: Math.floor(10000000000000 * Math.random() + (new Date()).valueOf()), //(8273734944842)
        real_refer: "http://rockbaby.ru/"+location.hash.replace(/#/, "")
    }
 
 	link =  url;
 	for (var i in params){
 		link += "&"+i+"="+params[i];
 	}
	 var c1 = new Image();
	 c1.src = "http://autocontext.begun.ru/blockcounter?data=none&log_visibility=1"+"&"+Math.random();
	 $.getScript(link);
}
 
 
function loadFeedDone(){
	ads = begunAds.banners.autocontext; 
	var h ="";
	banners_id = new Array();
	for (var i = 0; i <ads.length;  i++){
		if (i != ads.length - 1) {
			h += "<div class='adv-block'>";
		}else {
			h += "<div class='adv-block last'>";
		}
		h+="<div class='adv-title'>"
			+ "<a target='_blank' href='"+ads[i].url+"'>" + ads[i].title +"</a>"
		+"</div>"
		+"<div class='adv-text'>"
			+ "<a target='_blank' href='"+ads[i].url+"'>" +ads[i].descr+"</a>"
		+"</div>"
		+"<div class='adv-domain'>"
			+ "<a target='_blank' href='"+ads[i].url+"'>" +ads[i].domain+"</a>"
		+"</div>"
		+"</div>";
		banners_id.push(ads[i].banner_id)
	}
	$("#begun_ad").html(h);
	 var c1 = new Image();
	link = 'http://autocontext.begun.ru/blockcounter?data={"pad_id":146368574,"visible":[{"id":156490629,"banners_id":"'+banners_id.join(",")+'"}]}&log_visibility=1'+"&"+Math.random();
	c1.src = link;
}



