var previewWidth = 482, previewHeight = 110, USABILITY_HINT_PADDING = 40; $(document).ready(function() { /* Removed as this is now (hopefully) unnecessary */ //$("#Panel").stickyPanel({ // topPadding: 1, // afterDetachCSSClass: "floated-panel", // savePanelSpace: true //}); //this statement tells the browser to fade out any success message after 5 seconds setTimeout(function(){$(".success").fadeOut("slow", function(){$(this).empty()});}, 5000); if ($('.usability_hint').is(':visible')) { $(".wrapper").css("padding-top", USABILITY_HINT_PADDING); // Account for usability hint } }); /* * i18n_months and i18n_days_short are used in jquery datepickers * which we use in multiple places */ var i18n_months = [ $.i18n._("January"), $.i18n._("February"), $.i18n._("March"), $.i18n._("April"), $.i18n._("May"), $.i18n._("June"), $.i18n._("July"), $.i18n._("August"), $.i18n._("September"), $.i18n._("October"), $.i18n._("November"), $.i18n._("December") ]; var i18n_months_short = [ $.i18n._("Jan"), $.i18n._("Feb"), $.i18n._("Mar"), $.i18n._("Apr"), $.i18n._("May"), $.i18n._("Jun"), $.i18n._("Jul"), $.i18n._("Aug"), $.i18n._("Sep"), $.i18n._("Oct"), $.i18n._("Nov"), $.i18n._("Dec") ]; var i18n_days_short = [ $.i18n._("Su"), $.i18n._("Mo"), $.i18n._("Tu"), $.i18n._("We"), $.i18n._("Th"), $.i18n._("Fr"), $.i18n._("Sa") ]; function getDatatablesStrings(overrideDict) { var dict = { "sEmptyTable": $.i18n._("No data available in table"), "sInfo": $.i18n._("Showing _START_ to _END_ of _TOTAL_ entries"), "sInfoEmpty": $.i18n._("Showing 0 to 0 of 0 entries"), "sInfoFiltered": $.i18n._("(filtered from _MAX_ total entries)"), "sInfoPostFix": $.i18n._(""), "sInfoThousands": $.i18n._("),"), "sLengthMenu": $.i18n._("Show _MENU_"), "sLoadingRecords": $.i18n._("Loading..."), "sProcessing": $.i18n._("Processing..."), "sSearch": $.i18n._(""), "sZeroRecords": $.i18n._("No matching records found"), "oPaginate": { "sFirst": $.i18n._("First"), "sLast": $.i18n._("Last"), "sNext": $.i18n._("Next"), "sPrevious": $.i18n._("Previous") }, "oAria": { "sSortAscending": $.i18n._(": activate to sort column ascending"), "sSortDescending": $.i18n._(": activate to sort column descending") } }; return $.extend({}, dict, overrideDict); } function adjustDateToServerDate(date, serverTimezoneOffset){ //date object stores time in the browser's localtime. We need to artificially shift //it to var timezoneOffset = date.getTimezoneOffset()*60*1000; date.setTime(date.getTime() + timezoneOffset + serverTimezoneOffset*1000); /* date object has been shifted to artificial UTC time. Now let's * shift it to the server's timezone */ return date; } /** *handle to the jplayer window */ var _preview_window = null; /** *Gets the info from the view when menu action play choosen and opens the jplayer window. */ function openAudioPreview(p_event) { p_event.stopPropagation(); var audioFileID = $(this).attr('audioFile'); var objId = $('.obj_id:first').attr('value'); var objType = $('.obj_type:first').attr('value'); var playIndex = $(this).parent().parent().attr('id'); playIndex = playIndex.substring(4); //remove the spl_ if (objType == "playlist") { open_playlist_preview(objId, playIndex); } else if (objType == "block") { open_block_preview(objId, playIndex); } } function open_audio_preview(type, id) { // The reason that we need to encode artist and title string is that // sometime they contain '/' or '\' and apache reject %2f or %5f // so the work around is to encode it twice. openPreviewWindow(baseUrl+'audiopreview/audio-preview/audioFileID/'+id+'/type/'+type, previewWidth, previewHeight); _preview_window.focus(); } /** *Opens a jPlayer window for the specified info, for either an audio file or playlist. *If audioFile, audioFileTitle, audioFileArtist is supplied the jplayer opens for one file *Otherwise the playlistID and playlistIndex was supplied and a playlist is played starting with the *given index. */ function open_playlist_preview(p_playlistID, p_playlistIndex) { if (p_playlistIndex == undefined) //Use a resonable default. p_playlistIndex = 0; if (_preview_window != null && !_preview_window.closed) _preview_window.playAllPlaylist(p_playlistID, p_playlistIndex); else openPreviewWindow(baseUrl+'audiopreview/playlist-preview/playlistIndex/'+p_playlistIndex+'/playlistID/'+p_playlistID, previewWidth, previewHeight); _preview_window.focus(); } function open_block_preview(p_blockId, p_blockIndex) { if (p_blockIndex == undefined) //Use a resonable default. p_blockIndex = 0; if (_preview_window != null && !_preview_window.closed) _preview_window.playBlock(p_blockId, p_blockIndex); else openPreviewWindow(baseUrl+'audiopreview/block-preview/blockIndex/'+p_blockIndex+'/blockId/'+p_blockId, previewWidth, previewHeight); _preview_window.focus(); } /** *Opens a jPlayer window for the specified info, for either an audio file or playlist. *If audioFile, audioFileTitle, audioFileArtist is supplied the jplayer opens for one file *Otherwise the playlistID and playlistIndex was supplied and a playlist is played starting with the *given index. */ function open_show_preview(p_showID, p_showIndex) { if (_preview_window != null && !_preview_window.closed) _preview_window.playAllShow(p_showID, p_showIndex); else openPreviewWindow(baseUrl+'audiopreview/show-preview/showID/'+p_showID+'/showIndex/'+p_showIndex, previewWidth, previewHeight); _preview_window.focus(); } function openPreviewWindow(url, w, h) { var dim = (w && h) ? 'width=' + w + ',height=' + h + ',' : ''; // Hardcoding this here is kinda gross, but the alternatives aren't much better... _preview_window = window.open(url, $.i18n._('Audio Player'), dim + 'scrollbars=yes'); return false; } function pad(number, length) { return sprintf("%'0"+length+"d", number); } function removeSuccessMsg() { var $status = $('.success'); $status.fadeOut("slow", function(){$status.empty()}); } function hideHint(h) { h.hide("slow").addClass("hidden"); $(".wrapper").css("padding-top", 10); } function showHint(h) { console.log("test"); h.show("slow").removeClass("hidden"); $(".wrapper").css("padding-top", USABILITY_HINT_PADDING); // Account for usability hint } function getUsabilityHint() { var pathname = window.location.pathname; $.getJSON("/api/get-usability-hint", {"format": "json", "userPath": pathname}, function(json) { var $hint_div = $('.usability_hint'); var current_hint = $hint_div.html(); if (json === "") { // there are no more hints to display to the user hideHint($hint_div); } else if (current_hint !== json) { // we only change the message if it is new if ($hint_div.is(":visible")) { hideHint($hint_div); } $hint_div.html(json); showHint($hint_div); } else { // hint is the same before we hid it so we just need to show it if ($hint_div.is(":hidden")) { showHint($hint_div); } } }); } $(document).mouseup(function (e) { var mb = $("#menu-btn"), w = $(window).width(); if (!mb.is(e.target) && mb.has(e.target).length === 0 && w <= 970) { $('#nav').find('.responsive-menu').slideUp(); } });