$(document).ready(function() {
	$("#send-link").submit(function() {
		$("#send-link .txt").removeClass('error')
		$("#send-link div.error").empty()
		$("#send-link .spinner").show()
		$.post('/send_link', $(this).serializeArray(), function(data) {
			$("#send-link .spinner").hide()
			if (data.complete) {
				$("#send-link .ok").show()
				$("#send-link .btn").hide()
				$("#send-link .txt").attr('disabled', 'disabled')
			} else {
				$("#send-link .txt").addClass('error')
				$("#send-link div.error").html(data.error)
			}

		}, 'json')
		return false
	});

	function update_hint() {
		$.post('/get_hint', {}, function(data) {
			if (data.success) {
				$("div.search-line-wrapper span.hint").text(data.hint)
			}
		}, 'json')
	}
	setInterval(update_hint, 120000)

	/**
	 * Отобразить флешку
	 */
	function show_flash(text, type) {
		if (text) {
			var html = '<div class="warning"><span class="'+type+'-message">'+text+'</span></div>'
			$("#flash").html(html)
		} else {
			var html = $("#flash").html()
		}
		function remove_flash() {
			if ($("#flash").html() == html) {
				$("#flash div").fadeOut('slow')
			}
		}
		setTimeout(remove_flash, 10000)
	}
	// для существующей флешки
	show_flash()

	// все модальные окна
	$(".login-link,#form-restore-password-login-link").click(function () {
		$("#register,#restore-password").hide()
		$(".shadow,#login").show()
		$("#form-login-field-login").focus()
		return false
	})
	$(".reg-link,#form-login-link-register").click(function () {
		$("#login,#restore-password").hide()
		$(".shadow,#register").show()
		$("#form-register-field-login").focus()
		return false
	})
	$("#form-login-link-restore-password").click(function () {
		$("#login,#register").hide()
		$(".shadow,#restore-password").show()
		$("#form-restore-password-field-email").focus()
		return false
	});

	// форма регистрации
	$("#form-register input[name=login]").bind('change', function() {
		var login = $(this).val()
		$.post('/register/test_login', {login: login}, function(data) {
			if (data.login != login) return
			$("#form-register .error-login").html(data.success ? '' : data.error)
		}, 'json')
	})
	$("#form-register input[name=email]").bind('change', function() {
		var email = $(this).val()
		$.post('/register/test_email', {email: email}, function(data) {
			if (data.email != email) return
			$("#form-register .error-email").html(data.success ? '' : data.error)
		}, 'json')
	})
	$("#form-register input[name=password2]").bind('change', function() {
		$("#form-register .error-password2").html('')
		var password = $("#form-register input[name=password]").val()
		if (password && $(this).val() != password) {
			$("#form-register .error-password2").html('Подтверждение не соответствует паролю')
		}
	})
	$("#form-register").submit(function() {
		$("#form-register .spinner").show()
		$.post('/register', $(this).serializeArray(), function(data) {
			$("#form-register .error").html('')
			$("#form-register .spinner").hide()
			if (data.success) {
				$("#register,.shadow").hide()
				$("div.reg-user").hide()
				$("div.reg-user.login").show()
				$("div.reg-user.login b").text(data.login)
				$(".user-link").hide()
				$("#lastfm-link").show()
				show_flash(data.message, 'success')
				var return_url = $("#form-register input[name=return_url]").val()
				if (return_url.length) {
					$('<a href="'+return_url+'" class="inside">link</a>').click()
				}
				$("#form-register input[type!=submit]").val('')
			} else if (data.errors) {
				for (var field in data.errors) {
					$("#form-register .error-"+field).html(data.errors[field])
				}
			}
		}, 'json')
		return false
	})
	$("#form-login").submit(function() {
		$("#form-login .spinner").show()
		$.post('/login', $(this).serializeArray(), function(data) {
			$("#form-login .error").html('')
			$("#form-login .spinner").hide()
			if (data.success) {
				$("#login,.shadow").hide()
				$("div.reg-user").hide()
				$("div.reg-user.login").show()
				var text = (data.premium ? '<img src="/i/premium-account-label.png" width="17" height="17" alt="Premium account" /> ' : '') + '<a href="/account" class="inside">'+data.login+'</a>';
				$("div.reg-user.login b").html(text)
				$("#accordion").html(data.playlists)
				$(".user-link").hide()
				$("#lastfm-link").show()
				show_flash(data.message, 'success')
				set_advanced(data.advanced_play, data.hotkeys);
				var return_url = $("#form-login input[name=return_url]").val()
				if (return_url.length) {
					$('<a href="'+return_url+'" class="inside">link</a>').click()
				}
				$("#form-login input[type!=submit]").val('')
			} else if (data.errors) {
				for (var field in data.errors) {
					$("#form-login .error-"+field).html(data.errors[field])
				}
			}
		}, 'json')
		return false
	})
	$("#form-restore-password").submit(function() {
		$("#form-restore-password .spinner").show()
		$.post('/login/restore_password', $(this).serializeArray(), function(data) {
			$("#form-restore-password .error").html('')
			$("#form-restore-password .spinner").hide()
			if (data.success) {
				$("#restore-password,.shadow").hide()
				show_flash(data.message, 'success')
				$("#form-restore-password input[type!=submit]").val('')
			} else if (data.errors) {
				for (var field in data.errors) {
					$("#form-restore-password .error-"+field).html(data.errors[field])
				}
			}
		}, 'json')
		return false
	})
	$("#logout-link").click(function() {
		$.post('/logout', $(this).serializeArray(), function(data) {
			if (data.success) {
				$("div.reg-user").hide()
				$("div.reg-user.unlogin").show()
				$("div.user-link").show()
				$("#lastfm-link").hide()
				$("#accordion").html(data.playlists)
				show_flash(data.message, 'success')
				set_advanced(false, false);
			}
		}, 'json')
		return false
	})

	//top links
	$('#top-link').bind('click', function() {
		var div = $(this).parent();
		div.toggleClass('top-active');
		$("#hd").toggleClass('zIndex201');
	});

	//mail user link
	$('.user-link-desc').hide();
	$('.user-link input.link').click(function() {
		$(this).select();
	});
	$('.user-link > a').click(function() {
		var li = $(this).parent();
		li.toggleClass('active-link');
		$('.user-link-desc').toggle();
		$('.warning').toggleClass('z-index1');
		if (li.hasClass('active-link')) {
			$('.user-link input.link').select().focus();
		}
		return false;
	});

	//hide top/mail/track-menu on outer mousedown
	$(document).mousedown(function(event){
		if($.browser.opera){
			var ol = $('#accordion .visible ol');
			var olTop = ol.scrollTop();
		};
		var target = $(event.target);
		if(!target.parents('.user-link').length){
			$('.user-link > a').parent().removeClass('active-link');
			$('.user-link-desc').hide();
			$('.warning').removeClass('z-index1');
		};
		if(!target.parents('div.top').length){
			$('a.top-link').parent().removeClass('top-active');
			$("#hd").removeClass('zIndex201');
		}
		if(!target.parents('.track-menu-wrap').length){
			$('.track-menu:visible').hide().parent().css('z-index', 0).parents('ol').css('z-index', 0);
		}
		if($.browser.opera){
			ol.scrollTop(olTop);
		};
	});

	// track menu
	$('.track-menu-wrap > a').live('click', function(){
		$('.track-menu:visible').hide().parent().css('z-index', 0).parents('ol').css('z-index', 0);
		this.blur();
		if(!$(this).next().find('ul').length){
			var li = $(this).parents('li');
			var data = {
				link: li.attr('link'),
				track_id: li.attr('track_id'),
				file_id: li.attr('file_id'),
				rate: li.attr('rate'),
				size: li.attr('size')
			};
			var html = $('#track-menu').html()
			.replace(/%7B/g, '{')
			.replace(/%7D/g, '}')
			.replace(/{(.*?)}/g, function(full, q1){
			    return data[q1];
			});
			$(this).next().html(html);
		}
		var olHeight;
		var ol = $(this).parents('ol');
		if(ol.length) {
			olHeight = $(this).parents('ol').offsetHeight() + $(this).parents('ol')[0].scrollTop;
		}
		var menu = $(this).next();
		if(menu.css('display') == 'block') return;
		menu.css('display', 'block').css('top', $(this).offsetHeight());
		var height = menu.offsetHeight();
		if(menu.parents('#accordion').length && ol.length){
			var parent = menu;
			var top = 0;
			while(!parent.is('ol')){
				top += parent[0].offsetTop;
				parent = $(parent[0].offsetParent);
			};
			if(top + height + 5 > olHeight){
				menu.css('top', -height);
			};
		}
		if(menu.offset().top + height + 5 > $(window).height() + $(window).scrollTop()){
			menu.css('top', Math.max(-(menu.offset().top - $(window).scrollTop() - $(this).offsetHeight()), -height));
		}
		menu.css('display', 'none');
		menu.show();
		$(this).parent().css('z-index', 2);
		$(this).parents('ol').css('z-index', 2);
	});

	$(".menu-embed-code").live('click', function() {
		var track_id = $(this).attr('track_id');
		$("#embed-code input").val('\<object width="411" height="28"\>'
			+ '\<param name="movie" value="http://embed.prostopleer.com/track?id='+track_id+'"\>\</param\>'
			+ '\<embed src="http://embed.prostopleer.com/track?id='+track_id+'" type="application/x-shockwave-flash" '
			+ 'width="411" height="28"\>\</embed\>\</object\>')
			.click(function() {
				$(this).select().focus();
			}).select().focus();
		$("#embed-code,.shadow").show();
		return false;
	});
	$(".list-embed-code").live('click', function() {
		var list_id = $(this).attr('list_id');
		$("#embed-code-list input").val('\<object width="419" height="115"\>'
			+ '\<param name="movie" value="http://embed.prostopleer.com/list?id='+list_id+'"\>\</param\>'
			+ '\<embed src="http://embed.prostopleer.com/list?id='+list_id+'" type="application/x-shockwave-flash" '
			+ 'width="419" height="115"\>\</embed\>\</object\>')
			.click(function() {
				$(this).select().focus();
			}).select().focus();
		$("#embed-code-list,.shadow").show();
		return false;
	});
	$(".menu-track-link").live('click', function() {
		var link = $(this).attr('href');
		$("#track-link input").val('http://prostopleer.com'+link)
			.click(function() {
				$(this).select().focus();
			}).select().focus();
		$("#track-link,.shadow").show();
		return false;
	});

	function set_advanced(play, hotkeys) {
		NanoPlayer.advancedPlay = play;
		NanoPlayer.advancedKeyboard = hotkeys;
	}

	// close all popup divs with Esc key
	$(document).keydown(function(event){
		if (event.keyCode != 27) return;
		$('.track-menu:visible').parent().css('z-index', 0).parents('ol').css('z-index', 0);
		$(".user-link-desc,#login,#register,#restore-password,#embed-code,#embed-code-list,#track-link,.shadow,.track-menu").hide();
		$('.user-link').removeClass('active-link');
		$('a.top-link').parent('div').removeClass('top-active');
		$('.warning').removeClass('z-index1');
		$("#hd").removeClass('zIndex201');
	});
	$('.shadow,#login,#register,#restore-password,#embed-code,#embed-code-list,#track-link').click(function (event) {
		var target = $(event.target);
		if( (target.parents('.modal').length && !target.is('.close')) || target.is('.modal')) return;
		$('#login,#register,#restore-password,#embed-code,#embed-code-list,#track-link,.shadow').hide()
	});
	
	//advanced search
	$(".advanced-search .cancel").click(function () {
		$(this).parents(".search").removeClass("advanced-search-expanded");
		$('#search-btn-advanced').find('input, img').appendTo($('#search-btn'));
		return false;
	});				
	$("#bitrate-options").change(function() {
		var bitrateOption = $("option:selected", this).val();
		$("#bitrate-option-"+bitrateOption).show();
		$("#bitrate-option-"+bitrateOption).nextAll("span[id^='bitrate-option-']").hide();
		$("#bitrate-option-"+bitrateOption).prevAll("span[id^='bitrate-option-']").hide();
	 }).change();

	// тексты
	$(".link-text").live('click', function() {
		var url = $(this).attr('href');
		$.post(url, {}, function(data) {
			if (data.complete) {
				$("#lyrics-block h3").html('<span class="artist">'+data.singer+'</span><br /><span class="title">'+data.song+'</span>');
				$("#lyrics-block div.lyrics-overflow").html(data.text);
				$("#lyrics-block").show();
				$(".results").parent().addClass("with-lyrics");
			}
		}, 'json');
		return false;
	});
	$("#lyrics-block .close").click(function() {
		$("#lyrics-block").hide();
		$(".results").parent().removeClass("with-lyrics");
		return false;
	});

	// настройки
	$("#account-settings").live('submit', function() {
		$.post('/account/settings', $(this).serializeArray(), function(data) {
			set_advanced(data.advanced_play, data.hotkeys);
			show_flash(data.message, 'success');
			$('<a href="/account" class="inside">link</a>').click();
		}, 'json');
		return false;
	});
});
