var feedbackData;
function gup( name, url ) {
if (!url) url = location.href;
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^]*)";
var regex = new RegExp( regexS );
var results = regex.exec( url );
return results == null ? null : results[1];
}
function getSpotifyInfo(title, cb, artist) {
var q = "";
q = title;
if (artist !== undefined) {
q += " artist:" + artist;
}
$.ajax({
type: "GET",
url: 'https://api.spotify.com/v1/search?q=' + encodeURIComponent(q) + '&type=track',
applicationType: "application/json",
contentType: "json",
success: function (data) {
cb(data);
}
});
}
function executeCommand(command, params){
if (command === "help" || command === "commands") {
$('#helpModal').modal('show');
return true;
} else if (command === "volume") {
if (params.length === 1) {
var volume = Number(params[0]);
if (volume >= 0 || volume <= 100) {
if (volume === 0) {
$("#volume-icon").removeClass("fa-volume-down").addClass("fa-volume-off")
} else {
$("#volume-icon").removeClass("fa-volume-off").addClass("fa-volume-down")
}
$("#volume-slider").slider("setValue", volume);
if (YTPlayer !== undefined) {
YTPlayer.setVolume(volume);
localStorage.setItem("volume", volume);
}
return true;
}
}
} else if(command === "mute"){
$("#volume-slider").slider("setValue", 0);
$("#volume-icon").removeClass("fa-volume-down").addClass("fa-volume-off");
if (YTPlayer !== undefined) {
YTPlayer.setVolume(0);
localStorage.setItem("volume", 0);
}
} else if(command === "ban"){
var user = params[0];
var time = params[1];
var reason = params[2];
Meteor.call("banUser", user, time, reason, function(err, res){
if(err){
console.log(err);
}
});
} else if(command === "silence"){
var user = params[0];
var time = params[1];
Meteor.call("muteUser", user, time, function(err, res){
if(err){
console.log(err);
}
});
} else if(command === "unban"){
var user = params[0];
Meteor.call("unbanUser", user, function(err, res){
if(err){
console.log(err);
}
});
} else if(command === "unsilence"){
var user = params[0];
Meteor.call("unsilenceUser", user, function(err, res){
if(err){
console.log(err);
}
});
} else if(command === "pause"){
Meteor.call("pauseRoom", Session.get("type"), function(err, res){
if(err){
console.log(err);
}
});
} else if(command === "resume"){
Meteor.call("resumeRoom", Session.get("type"), function(err, res){
if(err){
console.log(err);
}
});
} else if(command === "shuffle"){
Meteor.call("shufflePlaylist", Session.get("type"), function(err, res){
if(err){
console.log(err);
}
});
} else if(command === "skip"){
Meteor.call("skipSong", Session.get("type"), function(err, res){
if(err){
console.log(err);
}
});
}
}
function sendMessage() {
var message = $("#chat-input").val();
if (!$("#chat-input").hasClass("disabled")) {
if (message.length > 0 && message[0] !== " ") {
if (message[0] === "/") {
message = message.split("");
message.shift();
message = message.join("");
var params = message.split(" ");
params = params.map(function(param) {
return param.replace(/\r?\n|\r/g, "");
});
var command = params.shift();
command = command.replace(/\r?\n|\r/g, "");
if (executeCommand(command, params)) {
$("#chat-input").val("");
} else {
$("#chat-input").val("");
}
} else {
$("#chat-input").addClass("disabled");
$("#chat-input").attr("disabled", "");
Meteor.call("sendMessage", Session.get("type"), message, function (err, res) {
if(err){
$("#chat-input").val("");
$("#chat-input").removeAttr("disabled");
$("#chat-input").removeClass("disabled");
}
if (res) {
$("#chat-input").val("");
$("#chat-input").removeAttr("disabled");
$("#chat-input").removeClass("disabled");
}
});
}
}
}
}
function sendMessageGlobal() {
var message = $("#global-chat-input").val();
if (!$("#global-chat-input").hasClass("disabled")) {
if (message.length > 0 && message[0] !== " ") {
if (message[0] === "/") {
message = message.split("");
message.shift();
message = message.join("");
var params = message.split(" ");
var command = params.shift();
command = command.replace(/\r?\n|\r/g, "");
if (executeCommand(command, params)) {
$("#global-chat-input").val("");
} else {
$("#global-chat-input").val("");
}
} else {
$("#global-chat-input").addClass("disabled");
$("#global-chat-input").attr("disabled", "");
Meteor.call("sendMessage", "global", message, function (err, res) {
if (res) {
$("#global-chat-input").val("");
}
$("#global-chat-input").removeClass("disabled");
$("#global-chat-input").removeAttr("disabled");
});
}
}
}
}
Template.admin.events({
"click a": function(e){
var id = e.currentTarget.id;
console.log(id.toLowerCase());
Session.set("playlistToEdit", id);
},
"click #croom_create": function() {
Meteor.call("createRoom", $("#croom_display").val(), $("#croom_tag").val(), $("#croom_private").prop("checked"), $("#croom_desc").val(), function (err, res) {
if (err) {
alert("Error " + err.error + ": " + err.reason);
} else {
window.location = "/" + $("#croom_tag").val();
}
});
},
"click #rreset_confirm": function(){
$('#confirmModal').modal('hide');
Meteor.call("resetRating");
},
"click #edit_desc": function(){
console.log($(this));
console.log($(this)[0].type);
Session.set("roomDesc", $(this)[0].type);
$("#desc_text").val(Rooms.findOne({type: Session.get("roomDesc")}).roomDesc);
},
"click #submit_desc": function(){
var description = $("#desc_text").val();
Meteor.call("editRoomDesc", Session.get("roomDesc"), description);
$("#desc-modal").closeModal();
}
});
Template.alertsDashboard.events({
"click #calart-create": function() {
Meteor.call("addAlert", $("#calert-description").val(), $("#calert-priority").val().toLowerCase(), function (err, res) {
if (err) {
alert("Error " + err.error + ": " + err.reason);
} else {
$("#calert-description").val("");
}
});
},
"click #ralert-button": function() {
Meteor.call("removeAlerts");
}
});
Template.feedback.events({
"click #feedback_submit": function(){
if($("#feedback_message").val().length !== 0 && $("#feedback_message").hasClass("invalid") === false){
Meteor.call("sendFeedback", $("#feedback_message").val());
$("#feedback_message").val("");
$("#modal1").closeModal()
} else{
var $toastContent = $('Feedback not sent. Possible reasons include:- - Empty Feedback Message
- - Feedback is more than 500 words
');
Materialize.toast($toastContent, 8000);
}
},
"click .upvote": function(){
var message = $(this).parent("card").prevObject[0].message;
Meteor.call("upvoteFeedback", message);
},
"click #delete": function(){
var message = $(this).parent("card").prevObject[0].message;
Meteor.call("deleteFeedback", message);
},
"click #edit": function(){
$("#editModal").click()
var data = Feedback.findOne({"message": $(this).parent("card").prevObject[0].message});
feedbackData = data.message;
$("#edit_feedback_message").val(data.message);
},
"click #edit_feedback_submit": function(){
var oldMessage = feedbackData;
var newMessage = $("#edit_feedback_message").val()
$("#edit_feedback_message").val("")
Meteor.call("updateFeedback", oldMessage, newMessage);
$("#editFeedback").closeModal();
}
});
Template.header.events({
"click .logout": function(e){
e.preventDefault();
Meteor.logout();
if (hpSound !== undefined) {
hpSound.stop();
}
},
"click #profile": function(){
window.location = "/u/" + Meteor.user().profile.username;
}
});
Template.login.events({
"submit form": function(e){
e.preventDefault();
Session.set("github", false);
var username = $("#username").val()
var password = $("#password").val();
Meteor.loginWithPassword(username, password, function(err) {
if (err) {
var errAlert = $('
Oh Snap! ' + err.reason + '
');
$(".landing").before(errAlert);
Meteor.setTimeout(function() {
errAlert.fadeOut(5000, function() {
errAlert.remove();
});
}, 5000);
} else {
window.location.href = "/";
}
});
},
"click #github-login": function(){
Meteor.loginWithGithub({loginStyle: "redirect"}, function(err, res) {
console.log(err, res);
});
}
});
Template.playlist.events({
"keyup #search-playlist": function(){
if($("#search-playlist").val().length === 0){
$(".pl-item").show();
} else {
$(".pl-item").hide();
var input = $("#search-playlist").val().toLowerCase();
$(".pl-item strong").each(function(i, el){
if($(el).text().toLowerCase().indexOf(input) !== -1){
$(el).parent(".pl-item").show();
}
})
$(".pl-item #pl-artist").each(function(i, el){
if($(el).text().toLowerCase().indexOf(input) !== -1){
$(el).parent(".pl-item").show();
}
})
}
},
"click #pl-item": function(){
console.log($(this).text());
}
});
Template.profile.events({
//Edit real name
"click #edit-name": function(){
$("#name").hide();
$("#name-div").show();
$("#edit-name").hide();
$("#cancel-edit").show();
},
"click #submit-name": function(){
var user = Meteor.user();
$("#name").show();
$("#name-div").hide();
$("#edit-name").show();
$("#cancel-edit").hide();
var realname = $("#input-name").val();
var username = user.profile.username;
$("#name").text("Name: " + realname);
$("#input-name").val("")
Meteor.call("updateRealName", realname);
},
"click #cancel-edit": function(){
$("#name").show();
$("#name-div").hide();
$("#edit-name").show();
$("#cancel-edit").hide();
$("#input-name").val("");
},
//Edit username
"click #edit-username": function(){
$("#username").hide();
$("#username-div").show();
$("#edit-username").hide();
$("#cancel-username").show();
},
"click #submit-username": function(){
var user = Meteor.user()
$("#username").show();
$("#username-div").hide();
$("#edit-username").show();
$("#cancel-username").hide();
var username = user.username;
var newUserName = $("#input-username").val();
$("#profile-name").text(newUserName)
$("#username").text("Username: " + newUserName);
$("#input-username").val("")
Meteor.call("updateUserName", newUserName);
window.location = "/u/" + newUserName;
},
"click #cancel-username": function(){
$("#username").show();
$("#username-div").hide();
$("#edit-username").show();
$("#cancel-username").hide();
$("#input-username").val("");
},
// Admins only Edit Rank
"click #edit-rank": function() {
$("#rank").hide();
$("#rank-div").show();
$("#edit-rank").hide();
$("#cancel-rank").show();
},
"click #submit-rank": function() {
$("#rank").show();
$("#rank-div").hide();
$("#edit-rank").show();
$("#cancel-rank").hide();
var newRank = $("#select-rank option:selected").val();
var username = Session.get("username");
console.log(username, newRank);
},
"click #cancel-rank": function() {
$("#rank").show();
$("#rank-div").hide();
$("#edit-rank").show();
$("#cancel-rank").hide();
}
});
var seekerBarInterval = undefined;
Template.queues.events({
/* TODO Add undo delete button */
"input #id": function() {
console.log("Change!");
$("#previewPlayerContainer").addClass("hide-preview");
},
"input #img": function() {
var url = $("#img").val();
console.log(url);
Session.set("image_url", url);
},
"click .preview-button": function(e){
Session.set("song", this);
$("#previewModal").openModal();
},
"click #previewImageButton": function() {
$("#preview-image").attr("src", Session.get("song").img);
},
"click .edit-queue-button": function(e){
Session.set("song", this);
Session.set("genre", $(e.target).data("genre"));
Session.set("type", "queue");
$("#mid").val(this.mid).change();
$("#artist").val(this.artist).change();
$("#title").val(this.title).change();
$("#img").val(this.img).change();
$("#id").val(this.id).change();
$("#likes").val(this.likes).change();
$("#dislikes").val(this.dislikes).change();
$("#duration").val(this.duration).change();
$("#skip-duration").val(this.skipDuration).change();
$("#genres").val(this.genres).change();
$("#genres").material_select();
$("#previewPlayerContainer").addClass("hide-preview");
Session.set("image_url", this.img);
Session.set("editing", true);
$("#editModal").openModal({
complete : function() {
Session.set("editing", false);
if (YTPlayer !== undefined && YTPlayer.stopVideo !== undefined) {
YTPlayer.stopVideo();
}
}
});
},
"click .add-song-button": function(e){
var genre = $(e.target).data("genre") || $(e.target).parent().data("genre");
Meteor.call("addSongToPlaylist", this, function(err) {
console.log(err);
if (err) {
var $toastContent = $('Song not added. ' + err.reason + '');
Materialize.toast($toastContent, 8000);
}
});
},
"click .deny-song-button": function(e){
var genre = $(e.target).data("genre") || $(e.target).parent().data("genre");
Meteor.call("removeSongFromQueue", this.mid);
},
"click #play": function() {
var duration = Session.get("song").duration;
var d = moment.duration(parseInt(duration), 'seconds');
$("#time-total").text(d.minutes() + ":" + ("0" + d.seconds()).slice(-2));
$("#previewPlayerContainer").removeClass("hide-preview");
var song = Session.get("song");
var id = song.id;
var volume = localStorage.getItem("volume") || 20;
if (song.duration !== 0) {
$("#play").attr("disabled", true);
$("#stop").attr("disabled", false);
$("#pause").attr("disabled", false);
$("#forward").attr("disabled", false);
if (YTPlayer === undefined) {
YTPlayer = new YT.Player("previewPlayer", {
height: 540,
width: 568,
videoId: id,
playerVars: {autoplay: 1, controls: 0, iv_load_policy: 3, showinfo: 0, fs: 0},
events: {
'onReady': function(event) {
event.target.seekTo(Number(song.skipDuration));
event.target.playVideo();
event.target.setVolume(volume);
},
'onStateChange': function(event){
if (event.data == YT.PlayerState.PAUSED) {
if (seekerBarInterval !== undefined) {
Meteor.clearInterval(seekerBarInterval);
seekerBarInterval = undefined;
}
}
if (event.data == YT.PlayerState.UNSTARTED) {
if (seekerBarInterval !== undefined) {
Meteor.clearInterval(seekerBarInterval);
seekerBarInterval = undefined;
}
$(".seeker-bar").css({width: "0"});
$("#time-elapsed").text("0:00");
$("#previewPlayerContainer").addClass("hide-preview");
}
if (event.data == YT.PlayerState.PLAYING) {
seekerBarInterval = Meteor.setInterval(function() {
var duration = Session.get("song").duration;
var timeElapsed = YTPlayer.getCurrentTime();
var skipDuration = Session.get("song").skipDuration;
if (duration <= (timeElapsed - skipDuration)) {
YTPlayer.stopVideo();
$("#play").attr("disabled", false);
$("#stop").attr("disabled", true);
$("#pause").attr("disabled", true);
$("#forward").attr("disabled", true);
$("#previewPlayerContainer").addClass("hide-preview");
$(".seeker-bar").css({width: "0"});
$("#time-elapsed").text("0:00");
Meteor.clearInterval(seekerBarInterval);
} else {
var percentComplete = (timeElapsed - skipDuration) / duration * 100;
$(".seeker-bar").css({width: percentComplete + "%"});
var d = moment.duration(timeElapsed - skipDuration, 'seconds');
$("#time-elapsed").text(d.minutes() + ":" + ("0" + d.seconds()).slice(-2));
}
}, 100);
$("#play").attr("disabled", true);
$("#stop").attr("disabled", false);
$("#pause").attr("disabled", false);
$("#forward").attr("disabled", false);
} else {
$("#play").attr("disabled", false);
$("#stop").attr("disabled", true);
$("#pause").attr("disabled", true);
$("#forward").attr("disabled", true);
}
}
}
});
} else {
if (YTPlayer.getPlayerState() === 2) {
YTPlayer.playVideo();
} else {
console.log(id, song.skipDuration, song.duration);
YTPlayer.loadVideoById(id);
YTPlayer.seekTo(Number(song.skipDuration));
}
}
$("#previewPlayerContainer").removeClass("hide-preview");
}
},
"click #stop": function() {
$("#play").attr("disabled", false);
$("#stop").attr("disabled", true);
$("#pause").attr("disabled", true);
$("#forward").attr("disabled", true);
if (previewEndSongTimeout !== undefined) {
Meteor.clearTimeout(previewEndSongTimeout);
}
if (YTPlayer !== undefined && YTPlayer.stopVideo !== undefined) {
YTPlayer.stopVideo();
}
},
"click #pause": function() {
$("#play").attr("disabled", false);
$("#stop").attr("disabled", false);
$("#pause").attr("disabled", true);
$("#forward").attr("disabled", true);
if (previewEndSongTimeout !== undefined) {
Meteor.clearTimeout(previewEndSongTimeout);
}
if (YTPlayer !== undefined && YTPlayer.pauseVideo !== undefined) {
YTPlayer.pauseVideo();
}
},
"click #forward": function() {
var error = false;
if (YTPlayer !== undefined) {
var duration = Number(Session.get("song").duration) | 0;
var skipDuration = Number(Session.get("song").skipDuration) | 0;
if (YTPlayer.getDuration() < duration + skipDuration) {
var $toastContent = $('Error. The song duration is longer than the length of the video.');
Materialize.toast($toastContent, 8000);
error = true;
} else {
YTPlayer.seekTo(skipDuration + duration - 10);
}
}
if (!error) {
if (previewEndSongTimeout !== undefined) {
Meteor.clearTimeout(previewEndSongTimeout);
}
previewEndSongTimeout = Meteor.setTimeout(function() {
if (YTPlayer !== undefined) {
YTPlayer.stopVideo();
}
$("#play").attr("disabled", false);
$("#stop").attr("disabled", true);
$("#pause").attr("disabled", true);
$("#forward").attr("disabled", true);
$("#previewPlayerContainer").addClass("hide-preview");
}, 10000);
}
},
"click #get-spotify-info": function() {
var search = $("#title").val();
var artistName = $("#artist").val();
getSpotifyInfo(search, function(data) {
for(var i in data){
for(var j in data[i].items){
if(search.indexOf(data[i].items[j].name) !== -1 && artistName.indexOf(data[i].items[j].artists[0].name) !== -1){
$("#img").val(data[i].items[j].album.images[2].url).change();
$("#duration").val(data[i].items[j].duration_ms / 1000).change();
return;
}
}
}
}, artistName);
},
"click #save-song-button": function() {
var newSong = {};
newSong.mid = $("#mid").val();
newSong.id = $("#id").val();
newSong.likes = Number($("#likes").val());
newSong.dislikes = Number($("#dislikes").val());
newSong.title = $("#title").val();
newSong.artist = $("#artist").val();
newSong.img = $("#img").val();
newSong.duration = Number($("#duration").val());
newSong.skipDuration = $("#skip-duration").val();
newSong.requestedBy = Session.get("song").requestedBy;
newSong.genres = $("#genres").val();
if(newSong.skipDuration === undefined){
newSong.skipDuration = 0;
}
Meteor.call("updateQueueSong", newSong.mid, newSong, function(err, res) {
if (err) {
var $toastContent = $('Song not saved. ' + err.reason + '');
Materialize.toast($toastContent, 8000);
} else {
var $toastContent = $('Song saved! No errors were found.');
Materialize.toast($toastContent, 4000);
Session.set("song", newSong);
}
});
}
});
Template.manageStation.events({
/* TODO Add undo delete button */
"input #id": function() {
$("#previewPlayerContainer").addClass("hide-preview");
},
"input #img": function() {
var url = $("#img").val();
Session.set("image_url", url);
},
"click .preview-button": function(e){
Session.set("song", this);
$("#previewModal").openModal();
},
"click #previewImageButton": function() {
$("#preview-image").attr("src", Session.get("song").img);
},
"click .edit-song-button": function(e){
Session.set("song", this);
Session.set("genre", $(e.target).data("genre"));
$("#mid").val(this.mid).change();
$("#artist").val(this.artist).change();
$("#title").val(this.title).change();
$("#img").val(this.img).change();
$("#id").val(this.id).change();
$("#likes").val(this.likes).change();
$("#dislikes").val(this.dislikes).change();
$("#duration").val(this.duration).change();
$("#skip-duration").val(this.skipDuration).change();
$("#previewPlayerContainer").addClass("hide-preview");
Session.set("image_url", this.img);
Session.set("editing", true);
$("#editModal").openModal({
complete : function() {
Session.set("editing", false);
if (YTPlayer !== undefined && YTPlayer.stopVideo !== undefined) {
YTPlayer.stopVideo();
}
}
});
},
"click .remove-song-button": function(e){
var genre = $(e.target).data("genre") || $(e.target).parent().data("genre");
Meteor.call("removeSongFromPlaylist", genre, this.mid);
},
"click #play": function() {
var duration = Session.get("song").duration;
var d = moment.duration(parseInt(duration), 'seconds');
$("#time-total").text(d.minutes() + ":" + ("0" + d.seconds()).slice(-2));
$("#previewPlayerContainer").removeClass("hide-preview");
var song = Session.get("song");
var id = song.id;
var volume = localStorage.getItem("volume") || 20;
if (song.duration !== 0) {
$("#play").attr("disabled", true);
$("#stop").attr("disabled", false);
$("#pause").attr("disabled", false);
$("#forward").attr("disabled", false);
if (YTPlayer === undefined) {
YTPlayer = new YT.Player("previewPlayer", {
height: 540,
width: 568,
videoId: id,
playerVars: {autoplay: 1, controls: 0, iv_load_policy: 3, showinfo: 0, fs: 0},
events: {
'onReady': function(event) {
event.target.seekTo(Number(song.skipDuration));
event.target.playVideo();
event.target.setVolume(volume);
},
'onStateChange': function(event){
if (event.data == YT.PlayerState.PAUSED) {
if (seekerBarInterval !== undefined) {
Meteor.clearInterval(seekerBarInterval);
seekerBarInterval = undefined;
}
}
if (event.data == YT.PlayerState.UNSTARTED) {
if (seekerBarInterval !== undefined) {
Meteor.clearInterval(seekerBarInterval);
seekerBarInterval = undefined;
}
$(".seeker-bar").css({width: "0"});
$("#time-elapsed").text("0:00");
$("#previewPlayerContainer").addClass("hide-preview");
}
if (event.data == YT.PlayerState.PLAYING) {
seekerBarInterval = Meteor.setInterval(function() {
var duration = Session.get("song").duration;
var timeElapsed = YTPlayer.getCurrentTime();
var skipDuration = Session.get("song").skipDuration;
if (duration <= (timeElapsed - skipDuration)) {
YTPlayer.stopVideo();
$("#play").attr("disabled", false);
$("#stop").attr("disabled", true);
$("#pause").attr("disabled", true);
$("#forward").attr("disabled", true);
$("#previewPlayerContainer").addClass("hide-preview");
$(".seeker-bar").css({width: "0"});
$("#time-elapsed").text("0:00");
Meteor.clearInterval(seekerBarInterval);
} else {
var percentComplete = (timeElapsed - skipDuration) / duration * 100;
$(".seeker-bar").css({width: percentComplete + "%"});
var d = moment.duration(timeElapsed - skipDuration, 'seconds');
$("#time-elapsed").text(d.minutes() + ":" + ("0" + d.seconds()).slice(-2));
}
}, 100);
$("#play").attr("disabled", true);
$("#stop").attr("disabled", false);
$("#pause").attr("disabled", false);
$("#forward").attr("disabled", false);
} else {
$("#play").attr("disabled", false);
$("#stop").attr("disabled", true);
$("#pause").attr("disabled", true);
$("#forward").attr("disabled", true);
}
}
}
});
} else {
if (YTPlayer.getPlayerState() === 2) {
YTPlayer.playVideo();
} else {
console.log(id, song.skipDuration, song.duration);
YTPlayer.loadVideoById(id);
YTPlayer.seekTo(Number(song.skipDuration));
}
}
$("#previewPlayerContainer").removeClass("hide-preview");
}
},
"click #stop": function() {
$("#play").attr("disabled", false);
$("#stop").attr("disabled", true);
$("#pause").attr("disabled", true);
$("#forward").attr("disabled", true);
if (previewEndSongTimeout !== undefined) {
Meteor.clearTimeout(previewEndSongTimeout);
}
if (YTPlayer !== undefined && YTPlayer.stopVideo !== undefined) {
YTPlayer.stopVideo();
}
},
"click #pause": function() {
$("#play").attr("disabled", false);
$("#stop").attr("disabled", false);
$("#pause").attr("disabled", true);
$("#forward").attr("disabled", true);
if (previewEndSongTimeout !== undefined) {
Meteor.clearTimeout(previewEndSongTimeout);
}
if (YTPlayer !== undefined && YTPlayer.pauseVideo !== undefined) {
YTPlayer.pauseVideo();
}
},
"click #forward": function() {
var error = false;
if (YTPlayer !== undefined) {
var duration = Number(Session.get("song").duration) | 0;
var skipDuration = Number(Session.get("song").skipDuration) | 0;
if (YTPlayer.getDuration() < duration + skipDuration) {
var $toastContent = $('Error. The song duration is longer than the length of the video.');
Materialize.toast($toastContent, 8000);
error = true;
} else {
YTPlayer.seekTo(skipDuration + duration - 10);
}
}
if (!error) {
if (previewEndSongTimeout !== undefined) {
Meteor.clearTimeout(previewEndSongTimeout);
}
previewEndSongTimeout = Meteor.setTimeout(function() {
if (YTPlayer !== undefined) {
YTPlayer.stopVideo();
}
$("#play").attr("disabled", false);
$("#stop").attr("disabled", true);
$("#pause").attr("disabled", true);
$("#forward").attr("disabled", true);
$("#previewPlayerContainer").addClass("hide-preview");
}, 10000);
}
},
"click #get-spotify-info": function() {
var search = $("#title").val();
var artistName = $("#artist").val();
getSpotifyInfo(search, function(data) {
for(var i in data){
for(var j in data[i].items){
if(search.indexOf(data[i].items[j].name) !== -1 && artistName.indexOf(data[i].items[j].artists[0].name) !== -1){
$("#img").val(data[i].items[j].album.images[2].url).change();
$("#duration").val(data[i].items[j].duration_ms / 1000).change();
return;
}
}
}
}, artistName);
},
"click #save-song-button": function() {
var newSong = {};
newSong.mid = $("#mid").val();
newSong.id = $("#id").val();
newSong.likes = Number($("#likes").val());
newSong.dislikes = Number($("#dislikes").val());
newSong.title = $("#title").val();
newSong.artist = $("#artist").val();
newSong.img = $("#img").val();
newSong.duration = Number($("#duration").val());
newSong.skipDuration = $("#skip-duration").val();
newSong.requestedBy = Session.get("song").requestedBy;
newSong.genres = $("#genres").val();
Meteor.call("updatePlaylistSong", newSong.mid, newSong, function(err, res) {
console.log(err, res);
if (err) {
var $toastContent = $('Song not saved. ' + err.reason + '');
Materialize.toast($toastContent, 8000);
} else {
var $toastContent = $('Song saved! No errors were found.');
Materialize.toast($toastContent, 4000);
Session.set("song", newSong);
}
});
}
});
Template.manageSongs.events({
/* TODO Add undo delete button */
"change #show_genres_cb": function() {
var selected = $("#show_genres_cb").is(":checked");
Session.set("showGenres", selected);
},
"change #show_no_genres_cb": function() {
var selected = $("#show_no_genres_cb").is(":checked");
Session.set("showNoGenres", selected);
},
"input #id": function() {
$("#previewPlayerContainer").addClass("hide-preview");
},
"input #img": function() {
var url = $("#img").val();
Session.set("image_url", url);
},
"click .preview-button": function(e){
Session.set("song", this);
$("#previewModal").openModal();
},
"click #previewImageButton": function() {
$("#preview-image").attr("src", Session.get("song").img);
},
"click .edit-song-button": function(e){
Session.set("song", this);
Session.set("genre", $(e.target).data("genre"));
$("#mid").val(this.mid).change();
$("#artist").val(this.artist).change();
$("#title").val(this.title).change();
$("#img").val(this.img).change();
$("#id").val(this.id).change();
$("#likes").val(this.likes).change();
$("#dislikes").val(this.dislikes).change();
$("#duration").val(this.duration).change();
$("#skip-duration").val(this.skipDuration).change();
$("#genres").val(this.genres).change();
$("#genres").material_select();
$("#previewPlayerContainer").addClass("hide-preview");
Session.set("image_url", this.img);
Session.set("editing", true);
$("#editModal").openModal({
complete : function() {
Session.set("editing", false);
if (YTPlayer !== undefined && YTPlayer.stopVideo !== undefined) {
YTPlayer.stopVideo();
}
}
});
},
"click .remove-song-button": function(){
console.log(this.mid);
console.log("TEST!");
Meteor.call("deleteSong", this.mid);
},
"click #play": function() {
var duration = Session.get("song").duration;
var d = moment.duration(parseInt(duration), 'seconds');
$("#time-total").text(d.minutes() + ":" + ("0" + d.seconds()).slice(-2));
$("#previewPlayerContainer").removeClass("hide-preview");
var song = Session.get("song");
var id = song.id;
var volume = localStorage.getItem("volume") || 20;
if (song.duration !== 0) {
$("#play").attr("disabled", true);
$("#stop").attr("disabled", false);
$("#pause").attr("disabled", false);
$("#forward").attr("disabled", false);
if (YTPlayer === undefined) {
YTPlayer = new YT.Player("previewPlayer", {
height: 540,
width: 568,
videoId: id,
playerVars: {autoplay: 1, controls: 0, iv_load_policy: 3, showinfo: 0, fs: 0},
events: {
'onReady': function(event) {
event.target.seekTo(Number(song.skipDuration));
event.target.playVideo();
event.target.setVolume(volume);
},
'onStateChange': function(event){
if (event.data == YT.PlayerState.PAUSED) {
if (seekerBarInterval !== undefined) {
Meteor.clearInterval(seekerBarInterval);
seekerBarInterval = undefined;
}
}
if (event.data == YT.PlayerState.UNSTARTED) {
if (seekerBarInterval !== undefined) {
Meteor.clearInterval(seekerBarInterval);
seekerBarInterval = undefined;
}
$(".seeker-bar").css({width: "0"});
$("#time-elapsed").text("0:00");
$("#previewPlayerContainer").addClass("hide-preview");
}
if (event.data == YT.PlayerState.PLAYING) {
seekerBarInterval = Meteor.setInterval(function() {
var duration = Session.get("song").duration;
var timeElapsed = YTPlayer.getCurrentTime();
var skipDuration = Session.get("song").skipDuration;
if (duration <= (timeElapsed - skipDuration)) {
YTPlayer.stopVideo();
$("#play").attr("disabled", false);
$("#stop").attr("disabled", true);
$("#pause").attr("disabled", true);
$("#forward").attr("disabled", true);
$("#previewPlayerContainer").addClass("hide-preview");
$(".seeker-bar").css({width: "0"});
$("#time-elapsed").text("0:00");
Meteor.clearInterval(seekerBarInterval);
} else {
var percentComplete = (timeElapsed - skipDuration) / duration * 100;
$(".seeker-bar").css({width: percentComplete + "%"});
var d = moment.duration(timeElapsed - skipDuration, 'seconds');
$("#time-elapsed").text(d.minutes() + ":" + ("0" + d.seconds()).slice(-2));
}
}, 100);
$("#play").attr("disabled", true);
$("#stop").attr("disabled", false);
$("#pause").attr("disabled", false);
$("#forward").attr("disabled", false);
} else {
$("#play").attr("disabled", false);
$("#stop").attr("disabled", true);
$("#pause").attr("disabled", true);
$("#forward").attr("disabled", true);
}
}
}
});
} else {
if (YTPlayer.getPlayerState() === 2) {
YTPlayer.playVideo();
} else {
console.log(id, song.skipDuration, song.duration);
YTPlayer.loadVideoById(id);
YTPlayer.seekTo(Number(song.skipDuration));
}
}
$("#previewPlayerContainer").removeClass("hide-preview");
}
},
"click #stop": function() {
$("#play").attr("disabled", false);
$("#stop").attr("disabled", true);
$("#pause").attr("disabled", true);
$("#forward").attr("disabled", true);
if (previewEndSongTimeout !== undefined) {
Meteor.clearTimeout(previewEndSongTimeout);
}
if (YTPlayer !== undefined && YTPlayer.stopVideo !== undefined) {
YTPlayer.stopVideo();
}
},
"click #pause": function() {
$("#play").attr("disabled", false);
$("#stop").attr("disabled", false);
$("#pause").attr("disabled", true);
$("#forward").attr("disabled", true);
if (previewEndSongTimeout !== undefined) {
Meteor.clearTimeout(previewEndSongTimeout);
}
if (YTPlayer !== undefined && YTPlayer.pauseVideo !== undefined) {
YTPlayer.pauseVideo();
}
},
"click #forward": function() {
var error = false;
if (YTPlayer !== undefined) {
var duration = Number(Session.get("song").duration) | 0;
var skipDuration = Number(Session.get("song").skipDuration) | 0;
if (YTPlayer.getDuration() < duration + skipDuration) {
var $toastContent = $('Error. The song duration is longer than the length of the video.');
Materialize.toast($toastContent, 8000);
error = true;
} else {
YTPlayer.seekTo(skipDuration + duration - 10);
}
}
if (!error) {
if (previewEndSongTimeout !== undefined) {
Meteor.clearTimeout(previewEndSongTimeout);
}
previewEndSongTimeout = Meteor.setTimeout(function() {
if (YTPlayer !== undefined) {
YTPlayer.stopVideo();
}
$("#play").attr("disabled", false);
$("#stop").attr("disabled", true);
$("#pause").attr("disabled", true);
$("#forward").attr("disabled", true);
$("#previewPlayerContainer").addClass("hide-preview");
}, 10000);
}
},
"click #get-spotify-info": function() {
var search = $("#title").val();
var artistName = $("#artist").val();
getSpotifyInfo(search, function(data) {
for(var i in data){
for(var j in data[i].items){
if(search.indexOf(data[i].items[j].name) !== -1 && artistName.indexOf(data[i].items[j].artists[0].name) !== -1){
$("#img").val(data[i].items[j].album.images[2].url).change();
$("#duration").val(data[i].items[j].duration_ms / 1000).change();
return;
}
}
}
}, artistName);
},
"click #save-song-button": function() {
var newSong = {};
newSong.mid = $("#mid").val();
newSong.id = $("#id").val();
newSong.likes = Number($("#likes").val());
newSong.dislikes = Number($("#dislikes").val());
newSong.title = $("#title").val();
newSong.artist = $("#artist").val();
newSong.img = $("#img").val();
newSong.duration = Number($("#duration").val());
newSong.skipDuration = $("#skip-duration").val();
newSong.requestedBy = Session.get("song").requestedBy;
newSong.genres = $("#genres").val() || [];
Meteor.call("updatePlaylistSong", newSong.mid, newSong, function(err, res) {
console.log(err, res);
if (err) {
var $toastContent = $('Song not saved. ' + err.reason + '');
Materialize.toast($toastContent, 8000);
} else {
var $toastContent = $('Song saved! No errors were found.');
Materialize.toast($toastContent, 4000);
Session.set("song", newSong);
}
});
}
});
Template.register.events({
"submit form": function(e){
e.preventDefault();
var username = $("#username").val()
var email = $("#email").val()
var password = $("#password").val();
var captchaData = grecaptcha.getResponse();
console.log(captchaData)
Meteor.call("createUserMethod", {username: username, email: email, password: password}, captchaData, function(err, res) {
grecaptcha.reset();
if (err) {
console.log(err);
var errAlert = $('Oh Snap! ' + err.reason + '
');
$(".landing").before(errAlert);
Meteor.setTimeout(function() {
errAlert.fadeOut(5000, function() {
errAlert.remove();
});
}, 5000);
} else {
Meteor.loginWithPassword(username, password);
Accounts.onLogin(function(){
window.location.href = "/";
})
}
});
},
"click #github-login": function(){
Meteor.loginWithGithub({loginStyle: "redirect"}, function(err, res) {
console.log(err, res);
});
}
});
Template.news.events({
"click #createArticleButton": function() {
var title = $("#title").val();
var content = $("#content").val();
var anonymous = $("#anonymous").is(":checked");
Meteor.call("createArticle", {title: title, content: content, anonymous: anonymous}, function(err, res) {
if (err) {
var $toastContent = $('Article not created. ' + err.reason + '');
Materialize.toast($toastContent, 8000);
} else {
$('#createArticle').closeModal()
$("#title").val("").change();
$("#content").val("").change();
$("#anonymous").prop("checked", false).change();
}
});
}
});
Template.room.events({
"input #volume_slider": function() {
console.log("Test3");
var volume = Number($("#volume_slider").val());
localStorage.setItem("volume", volume);
if (YTPlayer !== undefined) {
YTPlayer.setVolume(volume);
}
},
"click #add-song-modal-button": function() {
Session.set("songResults", []);
},
"click #return-button": function() {
Session.set("editingSong", false);
},
"click #removeSong": function(e) {
var id = $(e.target).data("result");
var songs = Session.get("songResults");
var currentSong;
songs = songs.filter(function(song) {
return id !== song.id;
});
Session.set("songResults", []);
Session.set("songResults", songs);
},
"click #addSong": function(e) {
var id = $(e.target).data("result");
var songs = Session.get("songResults");
var currentSong;
songs.forEach(function(song) {
if (song.id === id) {
currentSong = song;
}
});
Session.set("editingSong", true);
var title = currentSong.title;
var artist = currentSong.artist;
var img = currentSong.img;
getSpotifyInfo(title.replace(/\[.*\]/g, ""), function (data) {
if (data.tracks.items.length > 0) {
title = data.tracks.items[0].name;
var artists = [];
img = data.tracks.items[0].album.images[2].url;
data.tracks.items[0].artists.forEach(function (artist) {
artists.push(artist.name);
});
artist = artists.join(", ");
$("#title").val(title).change();
$("#artist").val(artist).change();
$("#img").val(img).change();
$("#id").val(id).change();
$("#genres").val(null).change();
} else {
$("#title").val(title).change();
$("#artist").val(artist).change();
$("#img").val(img).change();
$("#id").val(id).change();
$("#genres").val(null).change();
// I give up for now... Will fix this later. -Kris
}
});
},
"click #import-playlist-button": function () {
if (!Session.get("importingPlaylist")) {
Session.set("songResults", []);
var playlist_link = $("#playlist-url").val();
var playlist_id = gup("list", playlist_link);
var ytImportQueue = [];
var totalVideos = 0;
var videosInvalid = 0;
var videosInQueue = 0;
var videosInPlaylist = 0;
var ranOnce = false;
Session.set("importingPlaylist", true);
$("#import-playlist-button").attr("disabled", "");
$("#import-playlist-button").addClass("disabled");
$("#playlist-url").attr("disabled", "");
$("#playlist-url").addClass("disabled");
$("#import-progress").css({width: "0%"});
function makeAPICall(playlist_id, nextPageToken) {
if (nextPageToken !== undefined) {
nextPageToken = "&pageToken=" + nextPageToken;
} else {
nextPageToken = "";
}
$.ajax({
type: "GET",
url: "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=50&playlistId=" + playlist_id + nextPageToken + "&key=AIzaSyAgBdacEWrHCHVPPM4k-AFM7uXg-Q__YXY",
applicationType: "application/json",
contentType: "json",
success: function (data) {
if (!ranOnce) {
ranOnce = true;
totalVideos = data.pageInfo.totalResults;
}
var nextToken = data.nextPageToken;
for (var i in data.items) {
var item = data.items[i];
if (item.snippet.thumbnails !== undefined) {
var genre = Session.get("type");
if (Playlists.find({
type: genre,
"songs.id": item.snippet.resourceId.videoId
}, {songs: {$elemMatch: {id: item.snippet.resourceId.videoId}}}).count() !== 0) {
videosInPlaylist++;
} else if (Queues.find({
type: genre,
"songs.id": item.snippet.resourceId.videoId
}, {songs: {$elemMatch: {id: item.snippet.resourceId.videoId}}}).count() !== 0) {
videosInQueue++;
} else {
var percentage = ytImportQueue.length / (totalVideos - videosInvalid) * 100;
$("#import-progress").css({width: percentage + "%"});
ytImportQueue.push({title: item.snippet.title, artist: item.snippet.channelTitle, id: item.snippet.resourceId.videoId, image: item.snippet.thumbnails.medium.url});
}
} else {
videosInvalid++;
}
}
if (nextToken !== undefined) {
makeAPICall(playlist_id, nextToken);
} else {
/*$("#playlist-import-queue > div > i").click(function () {
var title = $(this).parent().find("div > .song-result-title").text();
for (var i in ytImportQueue) {
if (ytImportQueue[i].title === title) {
ytImportQueue.splice(i, 1);
}
}
$(this).parent().remove();
Session.set("YTImportQueue", ytImportQueue);
});*/
Session.set("importingPlaylist", false);
$("#import-progress").css({width: "100%"});
$("#import-playlist-button").removeAttr("disabled");
$("#import-playlist-button").removeClass("disabled");
$("#playlist-url").removeAttr("disabled");
$("#playlist-url").removeClass("disabled");
Session.set("YTImportQueue", ytImportQueue);
Session.set("songResults", ytImportQueue);
}
},
error: function() {
Session.set("importingPlaylist", false);
$("#import-progress").css({width: "0%"});
$("#import-playlist-button").removeAttr("disabled");
$("#import-playlist-button").removeClass("disabled");
$("#playlist-url").removeAttr("disabled");
$("#playlist-url").removeClass("disabled");
}
})
}
makeAPICall(playlist_id);
}
},
"click #confirm-import": function () {
var YTImportQueue = Session.get("YTImportQueue");
$("#import-playlist-button").attr("disabled", "");
$("#import-playlist-button").addClass("disabled");
$("#playlist-url").attr("disabled", "");
$("#playlist-url").addClass("disabled");
$("#import-progress").css({width: "0%"});
var failed = 0;
var success = 0;
var processed = 0;
var total = YTImportQueue.length;
YTImportQueue.forEach(function (song) {
var songData = {type: "YouTube", id: song.id, title: song.title, artist: "", img: "", genres: [Session.get("type")]};
Meteor.call("addSongToQueue", songData, function (err, res) {
if (err) {
console.log(err);
failed++;
} else {
success++;
}
processed++;
var percentage = processed / total * 100;
$("#import-progress").css({width: percentage + "%"});
});
});
$("#import-playlist-button").removeAttr("disabled");
$("#import-playlist-button").removeClass("disabled");
$("#playlist-url").removeAttr("disabled", "");
$("#playlist-url").removeClass("disabled");
Session.set("songResults", []);
Session.set("YTImportQueue", [])
},
"click #chat-tab": function () {
$("#chat-tab").removeClass("unread-messages");
},
"click #global-chat-tab": function () {
$("#global-chat-tab").removeClass("unread-messages");
},
"click #sync": function () {
if (Session.get("currentSong") !== undefined) {
var room = Rooms.findOne({type: Session.get("type")});
if (room !== undefined) {
var timeIn = Date.now() - Session.get("currentSong").started - room.timePaused;
var skipDuration = Number(Session.get("currentSong").skipDuration) | 0;
if (YTPlayer !== undefined) {
YTPlayer.seekTo(skipDuration + timeIn / 1000);
}
}
}
},
"click #lock": function () {
Meteor.call("lockRoom", Session.get("type"));
},
"click #unlock": function () {
Meteor.call("unlockRoom", Session.get("type"));
},
"click #chat-tab": function (e) {
Meteor.setTimeout(function () {
$("#chat-ul").scrollTop(100000);
}, 1);
},
"click #global-chat-tab": function (e) {
Meteor.setTimeout(function () {
$("#global-chat-ul").scrollTop(100000);
}, 1);
},
"click #submit": function () {
sendMessage();
Meteor.setTimeout(function () {
$("#chat-ul").scrollTop(100000);
}, 1000)
},
"click #global-submit": function () {
sendMessageGlobal();
Meteor.setTimeout(function () {
$("#global-chat-ul").scrollTop(100000);
}, 1000)
},
"keyup #chat-input": function (e) {
if (e.type === "keyup" && e.which === 13) {
e.preventDefault();
if (!$('#chat-input').data('dropdownshown')) {
sendMessage();
Meteor.setTimeout(function () {
$("#chat-ul").scrollTop(100000);
}, 1000)
}
}
},
"keyup #global-chat-input": function (e) {
if (e.type === "keyup" && e.which === 13) {
e.preventDefault();
if (!$('#global-chat-input').data('dropdownshown')) {
sendMessageGlobal();
Meteor.setTimeout(function () {
$("#global-chat-ul").scrollTop(100000);
}, 1000)
}
}
},
"click #like": function (e) {
$("#like").blur();
Meteor.call("likeSong", Session.get("currentSong").mid);
},
"click #dislike": function (e) {
$("#dislike").blur();
Meteor.call("dislikeSong", Session.get("currentSong").mid);
},
"click #vote-skip": function () {
Meteor.call("voteSkip", type, function (err, res) {
$("#vote-skip").attr("disabled", true);
});
},
"click #report-prev": function (e) {
if (Session.get("previousSong") !== undefined) {
Session.set("reportPrevious", true);
$("#report-prev").prop("disabled", true);
$("#report-curr").prop("disabled", false);
}
},
"click #report-curr": function (e) {
Session.set("reportPrevious", false);
$("#report-prev").prop("disabled", false);
$("#report-curr").prop("disabled", true);
},
"click #report-modal": function () {
Session.set("currentSongR", Session.get("currentSong"));
Session.set("previousSongR", Session.get("previousSong"));
},
"click #add-song-button": function (e) {
e.preventDefault();
parts = location.href.split('/');
var roomType = parts.pop();
var genre = roomType.toLowerCase();
var type = $("#type").val();
id = $("#id").val();
var title = $("#title").val();
var artist = $("#artist").val();
var img = $("#img").val();
var genres = $("#genres").val() || [];
var songData = {type: type, id: id, title: title, artist: artist, img: img, genres: genres};
if (Songs.find({"id": songData.id}).count() > 0) {
var $toastContent = $('Song not added. This song has already been added.');
Materialize.toast($toastContent, 8000);
} else if (Queues.find({"id": songData.id}).count() > 0) {
var $toastContent = $('Song not added. This song has already been requested.');
Materialize.toast($toastContent, 8000);
} else {
Meteor.call("addSongToQueue", songData, function (err, res) {
console.log(err, res);
if (err) {
var $toastContent = $('Song not added. ' + err.reason + '');
Materialize.toast($toastContent, 8000);
} else {
var $toastContent = $('Song added. Your song has succesfully been added to the queue.');
Materialize.toast($toastContent, 8000);
$('#add_song_modal').closeModal();
Session.set("editingSong", false);
}
});
}
},
"click #toggle-video": function (e) {
e.preventDefault();
if (Session.get("mediaHidden")) {
$("#media-container").removeClass("hidden");
$("#toggle-video").text("Hide video");
Session.set("mediaHidden", false);
} else {
$("#media-container").addClass("hidden");
$("#toggle-video").text("Show video");
Session.set("mediaHidden", true);
}
},
"click #return": function (e) {
$("#add-info").hide();
$("#search-info").show();
},
"click #search-song": function () {
var songs = [];
Session.set("songResults", songs);
$.ajax({
type: "GET",
url: "https://www.googleapis.com/youtube/v3/search?part=snippet&q=" + $("#song-input").val() + "&key=AIzaSyAgBdacEWrHCHVPPM4k-AFM7uXg-Q__YXY&type=video&maxResults=25",
applicationType: "application/json",
contentType: "json",
success: function (data) {
for (var i in data.items) {
var item = data.items[i];
console.log(item);
songs.push({title: item.snippet.title, artist: item.snippet.channelTitle, id: item.id.videoId, image: item.snippet.thumbnails.medium.url});
}
Session.set("songResults", songs);
/*$("#song-results > div").click(function () {
$("#search-info").hide();
$("#add-info").show();
var title = $(this).find("div > .song-result-title").text();
for (var i in songs) {
if (songs[i].title === title) {
var songObj = {
id: songs[i].id,
title: songs[i].title,
type: "youtube"
};
$("#title").val(songObj.title);
$("#artist").val("");
$("#id").val(songObj.id);
getSpotifyInfo(songObj.title.replace(/\[.*\]/g, ""), function (data) {
if (data.tracks.items.length > 0) {
$("#title").val(data.tracks.items[0].name);
var artists = [];
$("#img").val(data.tracks.items[0].album.images[2].url);
data.tracks.items[0].artists.forEach(function (artist) {
artists.push(artist.name);
});
$("#artist").val(artists.join(", "));
}
});
}
}
})*/
}
})
},
"click #volume-icon": function () {
var volume = 0;
var slider = $("#volume-slider").slider();
$("#volume-icon").removeClass("fa-volume-down").addClass("fa-volume-off")
if (YTPlayer !== undefined) {
YTPlayer.setVolume(volume);
localStorage.setItem("volume", volume);
$("#volume-slider").slider("setValue", volume);
}
},
"click #play": function () {
Meteor.call("resumeRoom", type);
},
"click #pause": function () {
Meteor.call("pauseRoom", type);
},
"click #skip": function () {
Meteor.call("skipSong", type);
},
"click #shuffle": function () {
Meteor.call("shufflePlaylist", type);
},
"change input": function (e) {
/*if (e.target && e.target.id) {
var partsOfId = e.target.id.split("-");
partsOfId[1] = partsOfId[1].charAt(0).toUpperCase() + partsOfId[1].slice(1);
var camelCase = partsOfId.join("");
Session.set(camelCase, e.target.checked);
}*/
},
"click #report-song-button": function () {
var room = Session.get("type");
var reportData = {};
reportData.song = Session.get("currentSong").mid;
reportData.type = [];
reportData.reason = [];
$(".report-layer-1 > .checkbox input:checked").each(function () {
reportData.type.push(this.id);
if (this.id == "report-other") {
var otherText = $(".other-textarea").val();
}
});
$(".report-layer-2 input:checked").each(function () {
reportData.reason.push(this.id);
});
console.log(reportData);
Meteor.call("submitReport", room, reportData, Session.get("id"), function () {
$("#close-modal-r").click();
});
},
"change #si_or_pl": function () {
Session.set("songResults", []);
Session.set("si_or_pl", $("#si_or_pl").val());
},
"click #close-modal-a": function () {
$("#select_single").attr("selected", true);
$("#search-info").show();
$("#playlist-import").hide();
}
});
// Settings Template
Template.settings.events({
"click #save-settings": function() {
Meteor.call("updateSettings", $("#showRating").is(":checked"));
},
"click #delete-account": function(){
$("#delete-account").text("Click to confirm");
$("#delete-account").click(function(){
var bool = confirm("Are you sure you want to delete your account?");
if(bool) {
Meteor.call("deleteAccount");
} else{
$("#delete-account").text("Delete");
}
})
},
"click #change-password": function(){
var oldPassword = $("#old-password").val();
var newPassword= $("#new-password").val();
var confirmPassword = $("#confirm-password").val();
if(newPassword === confirmPassword){
Accounts.changePassword(oldPassword, newPassword, function(err){
if(err){
$("#old-password").val("");
$("#new-password").val("");
$("#confirm-password").val("");
$("Oh Snap! " + err.reason + "
").prependTo($("#head")).delay(7000).fadeOut(1000, function() { $(this).remove(); });
} else {
$("#old-password").val("");
$("#new-password").val("");
$("#confirm-password").val("");
$("Hooray! You changed your password successfully.
").prependTo($("#head")).delay(7000).fadeOut(1000, function() { $(this).remove(); });
}
});
}
}
});
var previewEndSongTimeout = undefined;