Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
wp-miniaudioplayer
/
inc
:
popup.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php /*___________________________________________________________________________________________________________________________________________________ _ jquery.mb.components _ _ _ _ file: popup.php _ _ last modified: 8/28/19 11:52 PM _ _ _ _ Open Lab s.r.l., Florence - Italy _ _ _ _ email: matbicoc@gmail.com _ _ site: http://pupunzi.com _ _ http://open-lab.com _ _ blog: http://pupunzi.open-lab.com _ _ Q&A: http://jquery.pupunzi.com _ _ _ _ Licences: MIT, GPL _ _ http://www.opensource.org/licenses/mit-license.php _ _ http://www.gnu.org/licenses/gpl.html _ _ _ _ Copyright (c) 2001-2019. Matteo Bicocchi (Pupunzi); _ ___________________________________________________________________________________________________________________________________________________*/ // Only add map icon above posts and pages add_action('admin_head', 'miniaudioplayer_add_button'); function miniaudioplayer_add_button() { if (get_user_option('rich_editing') != 'true') return; add_action('media_buttons', 'miniaudioplayer_add_icon'); add_action('admin_footer', 'miniaudioplayer_add_popup'); } // Add button above editor if not editing map function miniaudioplayer_add_icon() { echo '<style> #add-map .dashicons { color: #888; margin: 0 4px 0 0; vertical-align: text-top; height: 18px; width: 18px; background-image: url(' . plugins_url("maplayerbutton.svg", __FILE__) . '); background-repeat: no-repeat; } #add-map { padding-left: 0.4em; } #add-map.disabled { pointer-events:none; padding-left: 0.4em; } </style> <a id="add-map" class="button disabled" title="' . __("miniAudioPlayer", 'wpmbmap') . '" href="#" onclick="miniaudioplayer_show_editor();"> <div class="dashicons"></div>' . __("miniAudioPlayer", "wpmbmap") . '</a>'; } class miniaudioplayer_check_href { function __construct() { add_filter('mce_external_plugins', array(&$this, 'add_map_tinymce_plugin')); add_filter('tiny_mce_before_init', array(&$this, 'add_map_TinyMCE_css')); } //include the tinymce javascript plugin function add_map_tinymce_plugin($plugin_array) { $plugin_array['wpmbmap'] = plugins_url('map_short_code.js?_=' . MINIAUDIOPLAYER_VERSION, __FILE__); return $plugin_array; } //include the css file to style the graphic that replaces the shortcode function add_map_TinyMCE_css($in) { if (!empty($in['content_css'])) $in['content_css'] .= "," . plugins_url('map_short_code.css?_=' . MINIAUDIOPLAYER_VERSION, __FILE__); return $in; } } //add_action("init", create_function('', 'new miniaudioplayer_check_href();')); add_action("init", function(){ new miniaudioplayer_check_href(); }); $custom_player_id = "map_" . rand(); // Displays the lightbox popup to insert a YTPlayer shortcode to a post/page function miniaudioplayer_add_popup() { $exclude_class = get_option('miniAudioPlayer_excluded'); $showVolumeLevel = get_option('miniAudioPlayer_showVolumeLevel'); $allowMute = get_option('miniAudioPlayer_allowMute'); $showTime = get_option('miniAudioPlayer_showTime'); $showRew = get_option('miniAudioPlayer_showRew'); $width = get_option('miniAudioPlayer_width'); $skin = get_option('miniAudioPlayer_skin'); $miniAudioPlayer_animate = get_option('miniAudioPlayer_animate'); $miniAudioPlayer_add_gradient = get_option('miniAudioPlayer_add_gradient'); $volume = get_option('miniAudioPlayer_volume'); $downloadable = get_option('miniAudioPlayer_download'); $custom_skin_name = get_option('miniAudioPlayer_custom_skin_name'); $downloadable_security = get_option('miniAudioPlayer_download_security'); ?> <div id="map-form" style="display: none;"> <style> #map-form { position: fixed; width: 100%; min-width: 500px; height: 100%; top: 0; bottom: 0; left: 0; right: 0; margin: auto; background: rgba(0, 0, 0, 0.7); z-index: 100101; box-sizing: border-box; overflow: hidden; } #map-form header { position: absolute; background: #0073aa; color: #FFFFFF; height: 50px; box-sizing: border-box; margin: 0; top: 0; width: 100%; padding: 10px; box-shadow: 1px 4px 8px 0px rgba(0, 0, 0, 0.3); z-index: 1000; } #map-form header h2 { color: #ffffff; margin: 0; line-height: 40px; } #map-form #editor { position: absolute; width: 50%; min-width: 700px; height: 90%; top: 0; bottom: 0; left: 0; right: 0; margin: auto; background: #FFFFFF; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); box-sizing: border-box; } #map-form #editor form { position: absolute; width: 100%; top: 50px; left: 0; height: calc(100% - 55px); overflow: auto; padding: 10px; box-sizing: border-box; } #map-form fieldset { font-size: 16px; border: none; font-family: inherit; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; } #map-form fieldset span.label { display: inline-block; width: 45%; font-size: 100%; font-weight: 400; vertical-align: top; } #map-form fieldset div { margin: 0; padding: 9px !important; display: block; font-size: 16px; border-bottom: 1px dotted #cccccc; } #map-form input, textarea, select { font-size: 100%; } #map-form input[type=text], textarea { width: 54%; } #map-form .sub-set { background: #f3f3f3; } #map-form .media-modal-close .media-modal-icon:before { color: #FFFFFF; } #map-form .actions { text-align: right; padding: 10px; background: rgba(158, 158, 158, 0.19); } .help-inline { font-size: 16px; font-weight: 300; display: block; color: #999; padding-left: 0; margin: 5px 0; } .help-inline.inline { display: inline-block; font-weight: 400; padding-left: 10px; } </style> <div id="editor"> <header> <h2><?php _e('mb.miniAudioPlayer editor', 'wpmbmap'); ?></h2> <button onclick="miniaudioplayer_hide_editor()" type="button" class="button-link media-modal-close"><span class="media-modal-icon"><span class="screen-reader-text">Close panel</span></span></button> </header> <form id="map_form" action="#"> <div class="actions"> <input type="submit" value="Insert code" class="button-primary"/> </div> <fieldset> <div> <span class="label"><?php _e('Don’t render', 'wp-miniaudioplayer'); ?>: </span> <input type="checkbox" name="exclude" value="true"/> <span class="help-inline"><?php _e('check to exclude this link', 'wp-miniaudioplayer'); ?> (<?php echo $exclude_class ?>)</span> </div> <div> <span class="label"><?php _e('Audio url', 'wp-miniaudioplayer'); ?> <span style="color:red">*</span> : </span> <input type="text" name="url" class="span5"/> <span class="help-inline"><?php _e('A valid .mp3 url', 'wp-miniaudioplayer'); ?></span> </div> <div> <span class="label"><?php _e('Audio title', 'wp-miniaudioplayer'); ?>: </span> <input type="text" name="audiotitle" class="span5"/> <span class="help-inline"><?php _e('The audio title', 'wp-miniaudioplayer'); ?></span><br> <span class="label"> </span> <button class="button" id="metadata" onclick="getFromMetatags();jQuery(this).hide(); return false" style="color: gray"><?php _e('Get the title from meta-data', 'wp-miniaudioplayer'); ?></button> </div> <div> <span class="label"><?php _e('Skin', 'wp-miniaudioplayer'); ?>:</span> <select name="skin"> <option value="black"><?php _e('black', 'wp-miniaudioplayer'); ?></option> <option value="blue"><?php _e('blue', 'wp-miniaudioplayer'); ?></option> <option value="orange"><?php _e('orange', 'wp-miniaudioplayer'); ?></option> <option value="red"><?php _e('red', 'wp-miniaudioplayer'); ?></option> <option value="gray"><?php _e('gray', 'wp-miniaudioplayer'); ?></option> <option value="green"><?php _e('green', 'wp-miniaudioplayer'); ?></option> <option value="<?php echo $custom_skin_name ?>"><?php echo $custom_skin_name ?></option> </select> <span class="help-inline"><?php _e('Set the skin color for the player', 'wp-miniaudioplayer'); ?></span> </div> <div> <span class="label"><?php _e('Gradient', 'wp-miniaudioplayer'); ?>:</span> <input type="checkbox" name="addGradientOverlay" value="true"/> <span class="help-inline"><?php _e('Check to add a gradient to the player skin', 'wp-miniaudioplayer'); ?></span> </div> <div> <span class="label"><?php _e('Animate', 'wp-miniaudioplayer'); ?>:</span> <input type="checkbox" name="animate" value="true"/> <span class="help-inline"><?php _e('Check to activate the opening / closing animation', 'wp-miniaudioplayer'); ?></span> </div> <div> <span class="label"><?php _e('Width', 'wp-miniaudioplayer'); ?>: </span> <input type="text" name="width" class="span6"/> <span class="help-inline"><?php _e('Set the player width', 'wp-miniaudioplayer'); ?></span> </div> <div> <span class="label"><?php _e('Volume', 'wp-miniaudioplayer'); ?>: </span> <input type="text" name="volume" class="span6"/> <span class="help-inline"><?php _e('(from 1 to 10) Set the player initial volume', 'wp-miniaudioplayer'); ?></span> </div> <div> <span class="label"><?php _e('Autoplay', 'wp-miniaudioplayer'); ?>: </span> <input type="checkbox" name="autoplay" value="true"/> <span class="help-inline"><?php _e('Check to start playing on page load', 'wp-miniaudioplayer'); ?></span> </div> <div> <span class="label"><?php _e('Loop', 'wp-miniaudioplayer'); ?>: </span> <input type="checkbox" name="loop" value="false"/> <span class="help-inline"><?php _e('Check to loop the sound', 'wp-miniaudioplayer'); ?></span> </div> <h2><?php _e('Show/Hide', 'wp-miniaudioplayer'); ?></h2> <div> <span class="label"><?php _e('Volume control', 'wp-miniaudioplayer'); ?>: </span> <input type="checkbox" name="showVolumeLevel" value="true"/> <span class="help-inline"><?php _e('Check to show the volume control', 'wp-miniaudioplayer'); ?></span> </div> <div> <span class="label"><?php _e('Time control', 'wp-miniaudioplayer'); ?>: </span> <input type="checkbox" name="showTime" value="true"/> <span class="help-inline"><?php _e('Check to show the time control', 'wp-miniaudioplayer'); ?></span> </div> <div> <span class="label"><?php _e('Mute control', 'wp-miniaudioplayer'); ?>: </span> <input type="checkbox" name="allowMute" value="true"/> <span class="help-inline"><?php _e('Check to activate the mute button', 'wp-miniaudioplayer'); ?></span> </div> <div> <span class="label"><?php _e('Rewind control', 'wp-miniaudioplayer'); ?>: </span> <input type="checkbox" name="showRew" value="true"/> <span class="help-inline"><?php _e('Check to show the rewind control', 'wp-miniaudioplayer'); ?></span> </div> <div> <span class="label"><?php _e('Downloadable', 'wp-miniaudioplayer'); ?>: </span> <input type="checkbox" name="downloadable" value="false" onclick="manageSecurity(this)"/> <span class="help-inline"><?php _e('Check to show the download button', 'wp-miniaudioplayer'); ?></span><br> </div> <div> <span class="label" style="font-weight: normal; color: gray"><?php _e('Only registered', 'wp-miniaudioplayer'); ?>: </span> <input type="checkbox" name="downloadable_security" value="true"/> <span class="help-inline"><?php _e('Check to limit downloads to registered users', 'wp-miniaudioplayer'); ?></span> </div> <script> function manageSecurity(el) { var security = jQuery('[name=downloadablesecurity]'); if (jQuery(el).is(":checked")) { security.removeAttr('disabled'); } else { security.attr('disabled', 'disabled'); security.removeAttr('checked'); } } </script> </fieldset> <div class="actions"> <input type="submit" value="Insert code" class="button-primary"/> <input class="button" type="reset" value="Reset settings"/> </div> </form> </div> </div> <script> var selection = null; var tmpInfo = {}; jQuery(function () { jQuery(".wp-editor-tabs button").on("click.map", function () { setTimeout(function () { if (!tinyMCE.activeEditor || tinyMCE.activeEditor.isHidden()) { jQuery("#add-map").css("opacity", .5); } else { jQuery("#add-map").css("opacity", 1); } }, 400) }) }); function getFromMetatags() { if (typeof ID3 == "object") { ID3.loadTags(document.audioURL, function () { var info = {}; info.title = ID3.getTag(document.audioURL, "title"); info.artist = ID3.getTag(document.audioURL, "artist"); info.album = ID3.getTag(document.audioURL, "album"); info.track = ID3.getTag(document.audioURL, "track"); info.size = ID3.getTag(document.audioURL, "size"); if (info.title && info.title != undefined) { jQuery("[name='audiotitle']").val(info.title + " - " + info.artist); tmpInfo = info; } else { jquery("button#metadata").after("no meta-data available for this file"); } }) } } function miniaudioplayer_show_editor() { if (tinyMCE.activeEditor == null || tinyMCE.activeEditor.isHidden() != false) { alert("You should switch to the visual editor"); return; } var map_editor = tinyMCE.activeEditor; var map_form = jQuery('#map-form form').get(0); var selection = map_editor.selection.getNode(); map_editor.isValidURL = false; map_editor.isHref = false; if (jQuery(selection).is("a[href *= '.mp3']") || jQuery(selection).find("a[href *= '.mp3']").lenght > 0 || jQuery(selection).prev().is("a[href *= '.mp3']")) { map_editor.isHref = true; map_editor.isValidURL = true; } else if (jQuery(selection).is("a") || jQuery(selection).find("a").lenght > 0 || jQuery(selection).prev().is("a")) { map_editor.isHref = true; } if (!map_editor.isHref) { alert("Select a link to an mp3 file to customize the player."); return; } if (!map_editor.isValidURL) { var d = confirm("the selected Link doesn't seams a valid MP3 path; do you want to continue anyway?"); if (!d) return; } map_form.reset(); jQuery("body").css({overflow: "hidden"}); jQuery("#map-form").slideDown(300); selection = map_editor.selection.getNode(); map_editor.selection.select(selection, true); var $selection = jQuery(selection); var map_element = $selection.find("a[href *= '.mp3']"); if (map_element.length) { selection = map_editor.selection.select(map_element.get(0), true); } else if ($selection.prev().is("a[href *= '.mp3']")) { selection = map_editor.selection.select($selection.prev().get(0), true); } $selection = jQuery(selection); var url = document.audioURL = $selection.attr("href"); var title = $selection.html(); var isExcluded = $selection.hasClass("<?php echo $exclude_class ?>"); var metadata = $selection.metadata(); if (metadata.volume) metadata.volume = parseFloat(metadata.volume) * 10; if (jQuery.isEmptyObject(metadata)) { var defaultmeta = { showVolumeLevel:<?php echo empty($showVolumeLevel) ? false : $showVolumeLevel ?>, allowMute:<?php echo $allowMute ? "true" : "false"?>, showTime:<?php echo $showTime ? "true" : "false"?>, showRew:<?php echo $showRew ? "true" : "false"?>, width: "<?php echo $width ?>", skin: "<?php echo $skin ?>", animate:<?php echo $miniAudioPlayer_animate ? "true" : "false" ?>, loop: false, addGradientOverlay: <?php echo $miniAudioPlayer_add_gradient ? "true" : "false" ?>, downloadable:<?php echo $downloadable ? "true" : "false" ?>, downloadable_security:<?php echo $downloadable_security ? "true" : "false" ?>, volume: parseFloat(<?php echo $volume ?>) * 10 }; jQuery.extend(metadata, defaultmeta); } jQuery.extend(metadata, {exclude: isExcluded}); jQuery("[name='url']", map_form).val(url); jQuery("[name='audiotitle']", map_form).val(title); for (var i in metadata) { if (typeof metadata[i] == "boolean") { if (eval(metadata[i]) == true) jQuery("[name=" + i + "]").attr("checked", "checked"); else jQuery("[name=" + i + "]").removeAttr("checked"); } else jQuery("[name=" + i + "]").val(metadata[i]); } var map_form = jQuery('#map-form form').get(0); map_form.onsubmit = miniaudioplayer_insertCode; } function miniaudioplayer_insertCode(e) { var map_editor = tinyMCE.activeEditor; var map_form = jQuery('#map-form form').get(0); var map_params = "{"; if (jQuery("[name='skin']", map_form).val().length > 0) map_params += "skin:'" + jQuery("[name='skin']").val() + "', "; map_params += "animate:" + (jQuery("[name='animate']").is(":checked") ? "true" : "false") + ", "; if (jQuery("[name='width']", map_form).val().length > 0) map_params += "width:'" + jQuery("[name='width']", map_form).val() + "', "; if (jQuery("[name='volume']", map_form).val().length > 0) map_params += "volume:" + jQuery("[name='volume']", map_form).val() / 10 + ", "; map_params += "autoplay:" + (jQuery("[name='autoplay']", map_form).is(":checked") ? "true" : "false") + ", "; map_params += "loop:" + (jQuery("[name='loop']", map_form).is(":checked") ? "true" : "false") + ", "; map_params += "showVolumeLevel:" + (jQuery("[name='showVolumeLevel']", map_form).is(":checked") ? "true" : "false") + ", "; map_params += "showTime:" + (jQuery("[name='showTime']", map_form).is(":checked") ? "true" : "false") + ", "; map_params += "allowMute:" + (jQuery("[name='allowMute']", map_form).is(":checked") ? "true" : "false") + ", "; map_params += "showRew:" + (jQuery("[name='showRew']", map_form).is(":checked") ? "true" : "false") + ", "; map_params += "addGradientOverlay:" + (jQuery("[name='addGradientOverlay']", map_form).is(":checked") ? "true" : "false") + ", "; map_params += "downloadable:" + (jQuery("[name='downloadable']", map_form).is(":checked") ? "true" : "false") + ", "; map_params += "downloadablesecurity:" + (jQuery("[name='downloadablesecurity']", map_form).is(":checked") ? "true" : "false") + ", "; map_params += "id3: false"; map_params += "}"; map_params = map_params.replace(", }", "}"); var isExcluded = jQuery("[name='exclude']", map_form).is(":checked") ? "<?php echo $exclude_class ?> " : ""; var map_a = "<a id='mbmaplayer_" + new Date().getTime() + "' class="; map_a += "\"mb_map " + isExcluded + map_params + "\" "; for (var x in tmpInfo) { map_a += "meta-" + x + "=\"" + tmpInfo[x] + "\" "; } map_a += "href=\"" + jQuery("[name='url']", map_form).val() + "\">"; map_a += jQuery("[name='audiotitle']", map_form).val(); map_a += "</a>"; map_editor.execCommand('mceInsertContent', 0, map_a); miniaudioplayer_hide_editor(); return false; } function miniaudioplayer_hide_editor() { jQuery("#map-form").slideUp(300); jQuery("body").css({overflow: "auto"}); } jQuery("body").on("click", "#map-form", function (e) { var target = e.originalEvent.target; if (jQuery(target).parents().is("#map-form")) return; miniaudioplayer_hide_editor(); }); /* * ****************************************************************************** * file: metadata.js */ jQuery.extend({ metadata: { defaults: {type: "class", name: "metadata", cre: /({.*})/, single: "metadata"}, setType: function (b, e) { this.defaults.type = b; this.defaults.name = e }, get: function (b, e) { var c = jQuery.extend({}, this.defaults, e); c.single.length || (c.single = "metadata"); var a = jQuery.data(b, c.single); if (a) return a; a = "{}"; if ("class" == c.type) { var d = c.cre.exec(b.className); d && (a = d[1]) } else if ("elem" == c.type) { if (!b.getElementsByTagName) return; d = b.getElementsByTagName(c.name); d.length && (a = jQuery.trim(d[0].innerHTML)) } else void 0 != b.getAttribute && (d = b.getAttribute(c.name)) && (a = d); 0 > a.indexOf("{") && (a = "{" + a + "}"); a = eval("(" + a + ")"); jQuery.data(b, c.single, a); return a } } }); jQuery.fn.metadata = function (b) { return jQuery.metadata.get(this[0], b) }; /* * ****************************************************************************** * jquery.mb.components * file: id3.min.js * * Copyright (c) 2001-2013. Matteo Bicocchi (Pupunzi); * Open lab srl, Firenze - Italy * email: matbicoc@gmail.com * site: http://pupunzi.com * blog: http://pupunzi.open-lab.com * http://open-lab.com * * Licences: MIT, GPL * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html * * last modified: 31/01/13 23.44 * ***************************************************************************** */ var q=null;function y(g,i,d){function f(b,h,e,a,d,f){var j=c();if(j){typeof f==="undefined"&&(f=!0);if(h)typeof j.onload!="undefined"?j.onload=function(){j.status=="200"||j.status=="206"?(j.fileSize=d||j.getResponseHeader("Content-Length"),h(j)):e&&e();j=q}:j.onreadystatechange=function(){if(j.readyState==4)j.status=="200"||j.status=="206"?(j.fileSize=d||j.getResponseHeader("Content-Length"),h(j)):e&&e(),j=q};j.open("GET",b,f);j.overrideMimeType&&j.overrideMimeType("text/plain; charset=x-user-defined");a&&j.setRequestHeader("Range", "bytes="+a[0]+"-"+a[1]);j.setRequestHeader("If-Modified-Since","Sat, 1 Jan 1970 00:00:00 GMT");j.send(q)}else e&&e()}function c(){var b=q;window.XMLHttpRequest?b=new XMLHttpRequest:window.F&&(b=new ActiveXObject("Microsoft.XMLHTTP"));return b}function a(b,h){var e=c();if(e){if(h)typeof e.onload!="undefined"?e.onload=function(){e.status=="200"&&h(this);e=q}:e.onreadystatechange=function(){e.readyState==4&&(e.status=="200"&&h(this),e=q)};e.open("HEAD",b,!0);e.send(q)}}function b(b,h){var e,a;function c(b){var p= ~~(b[0]/e)-a,b=~~(b[1]/e)+1+a;p<0&&(p=0);b>=blockTotal&&(b=blockTotal-1);return[p,b]}function g(a,c){for(;n[a[0]];)if(a[0]++,a[0]>a[1]){c&&c();return}for(;n[a[1]];)if(a[1]--,a[0]>a[1]){c&&c();return}var k=[a[0]*e,(a[1]+1)*e-1];f(b,function(b){parseInt(b.getResponseHeader("Content-Length"),10)==h&&(a[0]=0,a[1]=blockTotal-1,k[0]=0,k[1]=h-1);for(var b={data:b.W||b.responseText,s:k[0]},p=a[0];p<=a[1];p++)n[p]=b;i+=k[1]-k[0]+1;c&&c()},d,k,j,!!c)}var j,i=0,l=new z("",0,h),n=[];e=e||2048;a=typeof a==="undefined"? 0:a;blockTotal=~~((h-1)/e)+1;for(var m in l)l.hasOwnProperty(m)&&typeof l[m]==="function"&&(this[m]=l[m]);this.a=function(b){var a;g(c([b,b]));a=n[~~(b/e)];if(typeof a.data=="string")return a.data.charCodeAt(b-a.s)&255;else if(typeof a.data=="unknown")return IEBinary_getByteAt(a.data,b-a.s)};this.N=function(){return i};this.f=function(b,a){g(c(b),a)}}(function(){a(g,function(a){a=parseInt(a.getResponseHeader("Content-Length"),10)||-1;i(new b(g,a))})})()} function z(g,i,d){var f=g,c=i||0,a=0;this.P=function(){return f};if(typeof g=="string")a=d||f.length,this.a=function(b){return f.charCodeAt(b+c)&255};else if(typeof g=="unknown")a=d||IEBinary_getLength(f),this.a=function(b){return IEBinary_getByteAt(f,b+c)};this.n=function(b,a){for(var h=Array(a),e=0;e<a;e++)h[e]=this.a(b+e);return h};this.j=function(){return a};this.d=function(b,a){return(this.a(b)&1<<a)!=0};this.Q=function(b){b=this.a(b);return b>127?b-256:b};this.r=function(b,a){var h=a?(this.a(b)<< 8)+this.a(b+1):(this.a(b+1)<<8)+this.a(b);h<0&&(h+=65536);return h};this.S=function(b,a){var h=this.r(b,a);return h>32767?h-65536:h};this.h=function(b,a){var h=this.a(b),e=this.a(b+1),c=this.a(b+2),d=this.a(b+3),h=a?(((h<<8)+e<<8)+c<<8)+d:(((d<<8)+c<<8)+e<<8)+h;h<0&&(h+=4294967296);return h};this.R=function(b,a){var c=this.h(b,a);return c>2147483647?c-4294967296:c};this.q=function(b){var a=this.a(b),c=this.a(b+1),b=this.a(b+2),a=((a<<8)+c<<8)+b;a<0&&(a+=16777216);return a};this.c=function(b,a){for(var c= [],e=b,d=0;e<b+a;e++,d++)c[d]=String.fromCharCode(this.a(e));return c.join("")};this.e=function(b,a,c){b=this.n(b,a);switch(c.toLowerCase()){case "utf-16":case "utf-16le":case "utf-16be":var a=c,e,d=0,f=1,c=0;e=Math.min(e||b.length,b.length);b[0]==254&&b[1]==255?(a=!0,d=2):b[0]==255&&b[1]==254&&(a=!1,d=2);a&&(f=0,c=1);for(var a=[],g=0;d<e;g++){var j=b[d+f],i=(j<<8)+b[d+c];d+=2;if(i==0)break;else j<216||j>=224?a[g]=String.fromCharCode(i):(j=(b[d+f]<<8)+b[d+c],d+=2,a[g]=String.fromCharCode(i,j))}b= String(a.join(""));b.g=d;break;case "utf-8":e=0;d=Math.min(d||b.length,b.length);b[0]==239&&b[1]==187&&b[2]==191&&(e=3);f=[];for(c=0;e<d;c++)if(a=b[e++],a==0)break;else a<128?f[c]=String.fromCharCode(a):a>=194&&a<224?(g=b[e++],f[c]=String.fromCharCode(((a&31)<<6)+(g&63))):a>=224&&a<240?(g=b[e++],i=b[e++],f[c]=String.fromCharCode(((a&255)<<12)+((g&63)<<6)+(i&63))):a>=240&&a<245&&(g=b[e++],i=b[e++],j=b[e++],a=((a&7)<<18)+((g&63)<<12)+((i&63)<<6)+(j&63)-65536,f[c]=String.fromCharCode((a>>10)+55296, (a&1023)+56320));b=String(f.join(""));b.g=e;break;default:d=[];f=f||b.length;for(e=0;e<f;){c=b[e++];if(c==0)break;d[e-1]=String.fromCharCode(c)}b=String(d.join(""));b.g=e}return b};this.M=function(a){return String.fromCharCode(this.a(a))};this.Z=function(){return window.btoa(f)};this.L=function(a){f=window.atob(a)};this.f=function(a,c){c()}}document.write("<script type='text/vbscript'>\r\nFunction IEBinary_getByteAt(strBinary, iOffset)\r\n\tIEBinary_getByteAt = AscB(MidB(strBinary,iOffset+1,1))\r\nEnd Function\r\nFunction IEBinary_getLength(strBinary)\r\n\tIEBinary_getLength = LenB(strBinary)\r\nEnd Function\r\n<\/script>\r\n");(function(g){g.FileAPIReader=function(g){return function(d,f){var c=new FileReader;c.onload=function(a){f(new z(a.target.result))};c.readAsBinaryString(g)}}})(this);(function(g){g.k={i:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",z:function(g){for(var d="",f,c,a,b,p,h,e=0;e<g.length;)f=g[e++],c=g[e++],a=g[e++],b=f>>2,f=(f&3)<<4|c>>4,p=(c&15)<<2|a>>6,h=a&63,isNaN(c)?p=h=64:isNaN(a)&&(h=64),d=d+Base64.i.charAt(b)+Base64.i.charAt(f)+Base64.i.charAt(p)+Base64.i.charAt(h);return d}};g.Base64=g.k;g.k.encodeBytes=g.k.z})(this);(function(g){var i=g.t={},d={},f=[0,7];i.C=function(c,a,b){b=b||{};(b.dataReader||y)(c,function(g){g.f(f,function(){var f=g.c(4,7)=="ftypM4A"?ID4:g.c(0,3)=="ID3"?ID3v2:ID3v1;f.o(g,function(){var e=b.tags,i=f.p(g,e),e=d[c]||{},k;for(k in i)i.hasOwnProperty(k)&&(e[k]=i[k]);d[c]=e;a&&a()})})})};i.A=function(c){if(!d[c])return q;var a={},b;for(b in d[c])d[c].hasOwnProperty(b)&&(a[b]=d[c][b]);return a};i.B=function(c,a){if(!d[c])return q;return d[c][a]};g.ID3=g.t;i.loadTags=i.C;i.getAllTags=i.A;i.getTag= i.B})(this);(function(g){var i=g.u={},d=["Blues","Classic Rock","Country","Dance","Disco","Funk","Grunge","Hip-Hop","Jazz","Metal","New Age","Oldies","Other","Pop","R&B","Rap","Reggae","Rock","Techno","Industrial","Alternative","Ska","Death Metal","Pranks","Soundtrack","Euro-Techno","Ambient","Trip-Hop","Vocal","Jazz+Funk","Fusion","Trance","Classical","Instrumental","Acid","House","Game","Sound Clip","Gospel","Noise","AlternRock","Bass","Soul","Punk","Space","Meditative","Instrumental Pop","Instrumental Rock", "Ethnic","Gothic","Darkwave","Techno-Industrial","Electronic","Pop-Folk","Eurodance","Dream","Southern Rock","Comedy","Cult","Gangsta","Top 40","Christian Rap","Pop/Funk","Jungle","Native American","Cabaret","New Wave","Psychadelic","Rave","Showtunes","Trailer","Lo-Fi","Tribal","Acid Punk","Acid Jazz","Polka","Retro","Musical","Rock & Roll","Hard Rock","Folk","Folk-Rock","National Folk","Swing","Fast Fusion","Bebob","Latin","Revival","Celtic","Bluegrass","Avantgarde","Gothic Rock","Progressive Rock", "Psychedelic Rock","Symphonic Rock","Slow Rock","Big Band","Chorus","Easy Listening","Acoustic","Humour","Speech","Chanson","Opera","Chamber Music","Sonata","Symphony","Booty Bass","Primus","Porn Groove","Satire","Slow Jam","Club","Tango","Samba","Folklore","Ballad","Power Ballad","Rhythmic Soul","Freestyle","Duet","Punk Rock","Drum Solo","Acapella","Euro-House","Dance Hall"];i.o=function(d,c){var a=d.j();d.f([a-128-1,a],c)};i.p=function(f){var c=f.j()-128;if(f.c(c,3)=="TAG"){var a=f.c(c+3,30).replace(/\0/g, ""),b=f.c(c+33,30).replace(/\0/g,""),g=f.c(c+63,30).replace(/\0/g,""),h=f.c(c+93,4).replace(/\0/g,"");if(f.a(c+97+28)==0)var e=f.c(c+97,28).replace(/\0/g,""),i=f.a(c+97+29);else e="",i=0;f=f.a(c+97+30);return{version:"1.1",title:a,artist:b,album:g,year:h,comment:e,track:i,genre:f<255?d[f]:""}}else return{}};g.ID3v1=g.u})(this);(function(g){function i(a,b){var c=b.a(a),d=b.a(a+1),e=b.a(a+2);return b.a(a+3)&127|(e&127)<<7|(d&127)<<14|(c&127)<<21}var d=g.G={};d.b={};d.frames={BUF:"Recommended buffer size",CNT:"Play counter",COM:"Comments",CRA:"Audio encryption",CRM:"Encrypted meta frame",ETC:"Event timing codes",EQU:"Equalization",GEO:"General encapsulated object",IPL:"Involved people list",LNK:"Linked information",MCI:"Music CD Identifier",MLL:"MPEG location lookup table",PIC:"Attached picture",POP:"Popularimeter",REV:"Reverb", RVA:"Relative volume adjustment",SLT:"Synchronized lyric/text",STC:"Synced tempo codes",TAL:"Album/Movie/Show title",TBP:"BPM (Beats Per Minute)",TCM:"Composer",TCO:"Content type",TCR:"Copyright message",TDA:"Date",TDY:"Playlist delay",TEN:"Encoded by",TFT:"File type",TIM:"Time",TKE:"Initial key",TLA:"Language(s)",TLE:"Length",TMT:"Media type",TOA:"Original artist(s)/performer(s)",TOF:"Original filename",TOL:"Original Lyricist(s)/text writer(s)",TOR:"Original release year",TOT:"Original album/Movie/Show title", TP1:"Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group",TP2:"Band/Orchestra/Accompaniment",TP3:"Conductor/Performer refinement",TP4:"Interpreted, remixed, or otherwise modified by",TPA:"Part of a set",TPB:"Publisher",TRC:"ISRC (International Standard Recording Code)",TRD:"Recording dates",TRK:"Track number/Position in set",TSI:"Size",TSS:"Software/hardware and settings used for encoding",TT1:"Content group description",TT2:"Title/Songname/Content description",TT3:"Subtitle/Description refinement", TXT:"Lyricist/text writer",TXX:"User defined text information frame",TYE:"Year",UFI:"Unique file identifier",ULT:"Unsychronized lyric/text transcription",WAF:"Official audio file webpage",WAR:"Official artist/performer webpage",WAS:"Official audio source webpage",WCM:"Commercial information",WCP:"Copyright/Legal information",WPB:"Publishers official webpage",WXX:"User defined URL link frame",AENC:"Audio encryption",APIC:"Attached picture",COMM:"Comments",COMR:"Commercial frame",ENCR:"Encryption method registration", EQUA:"Equalization",ETCO:"Event timing codes",GEOB:"General encapsulated object",GRID:"Group identification registration",IPLS:"Involved people list",LINK:"Linked information",MCDI:"Music CD identifier",MLLT:"MPEG location lookup table",OWNE:"Ownership frame",PRIV:"Private frame",PCNT:"Play counter",POPM:"Popularimeter",POSS:"Position synchronisation frame",RBUF:"Recommended buffer size",RVAD:"Relative volume adjustment",RVRB:"Reverb",SYLT:"Synchronized lyric/text",SYTC:"Synchronized tempo codes", TALB:"Album/Movie/Show title",TBPM:"BPM (beats per minute)",TCOM:"Composer",TCON:"Content type",TCOP:"Copyright message",TDAT:"Date",TDLY:"Playlist delay",TENC:"Encoded by",TEXT:"Lyricist/Text writer",TFLT:"File type",TIME:"Time",TIT1:"Content group description",TIT2:"Title/songname/content description",TIT3:"Subtitle/Description refinement",TKEY:"Initial key",TLAN:"Language(s)",TLEN:"Length",TMED:"Media type",TOAL:"Original album/movie/show title",TOFN:"Original filename",TOLY:"Original lyricist(s)/text writer(s)", TOPE:"Original artist(s)/performer(s)",TORY:"Original release year",TOWN:"File owner/licensee",TPE1:"Lead performer(s)/Soloist(s)",TPE2:"Band/orchestra/accompaniment",TPE3:"Conductor/performer refinement",TPE4:"Interpreted, remixed, or otherwise modified by",TPOS:"Part of a set",TPUB:"Publisher",TRCK:"Track number/Position in set",TRDA:"Recording dates",TRSN:"Internet radio station name",TRSO:"Internet radio station owner",TSIZ:"Size",TSRC:"ISRC (international standard recording code)",TSSE:"Software/Hardware and settings used for encoding", TYER:"Year",TXXX:"User defined text information frame",UFID:"Unique file identifier",USER:"Terms of use",USLT:"Unsychronized lyric/text transcription",WCOM:"Commercial information",WCOP:"Copyright/Legal information",WOAF:"Official audio file webpage",WOAR:"Official artist/performer webpage",WOAS:"Official audio source webpage",WORS:"Official internet radio station homepage",WPAY:"Payment",WPUB:"Publishers official webpage",WXXX:"User defined URL link frame"};var f={title:["TIT2","TT2"],artist:["TPE1", "TP1"],album:["TALB","TAL"],year:["TYER","TYE"],comment:["COMM","COM"],track:["TRCK","TRK"],genre:["TCON","TCO"],picture:["APIC","PIC"],lyrics:["USLT","ULT"]},c=["title","artist","album","track"];d.o=function(a,b){a.f([0,i(6,a)],b)};d.p=function(a,b){var g=0,h=a.a(g+3);if(h>4)return{version:">2.4"};var e=a.a(g+4),v=a.d(g+5,7),k=a.d(g+5,6),s=a.d(g+5,5),j=i(g+6,a);g+=10;if(k){var o=a.h(g,!0);g+=o+4}var h={version:"2."+h+"."+e,major:h,revision:e,flags:{unsynchronisation:v,extended_header:k,experimental_indicator:s}, size:j},l;if(v)l={};else{j-=10;for(var v=a,e=b,k={},s=h.major,o=[],n=0,m;m=(e||c)[n];n++)o=o.concat(f[m]||[m]);for(e=o;g<j;){o=q;n=v;m=g;var u=q;switch(s){case 2:l=n.c(m,3);var r=n.q(m+3),t=6;break;case 3:l=n.c(m,4);r=n.h(m+4,!0);t=10;break;case 4:l=n.c(m,4),r=i(m+4,n),t=10}if(l=="")break;g+=t+r;if(!(e.indexOf(l)<0)&&(s>2&&(u={message:{Y:n.d(m+8,6),K:n.d(m+8,5),V:n.d(m+8,4)},m:{T:n.d(m+8+1,7),H:n.d(m+8+1,3),J:n.d(m+8+1,2),D:n.d(m+8+1,1),w:n.d(m+8+1,0)}}),m+=t,u&&u.m.w&&(i(m,n),m+=4,r-=4),!u||!u.m.D))l in d.b?o=d.b[l]:l[0]=="T"&&(o=d.b["T*"]),o=o?o(m,r,n,u):void 0,o={id:l,size:r,description:l in d.frames?d.frames[l]:"Unknown",data:o},l in k?(k[l].id&&(k[l]=[k[l]]),k[l].push(o)):k[l]=o}l=k}for(var w in f)if(f.hasOwnProperty(w)){a:{r=f[w];typeof r=="string"&&(r=[r]);t=0;for(g=void 0;g=r[t];t++)if(g in l){a=l[g].data;break a}a=void 0}a&&(h[w]=a)}for(var x in l)l.hasOwnProperty(x)&&(h[x]=l[x]);return h};g.ID3v2=d})(this);(function(){function g(d){var f;switch(d){case 0:f="iso-8859-1";break;case 1:f="utf-16";break;case 2:f="utf-16be";break;case 3:f="utf-8"}return f}var i=["32x32 pixels 'file icon' (PNG only)","Other file icon","Cover (front)","Cover (back)","Leaflet page","Media (e.g. lable side of CD)","Lead artist/lead performer/soloist","Artist/performer","Conductor","Band/Orchestra","Composer","Lyricist/text writer","Recording Location","During recording","During performance","Movie/video screen capture","A bright coloured fish", "Illustration","Band/artist logotype","Publisher/Studio logotype"];ID3v2.b.APIC=function(d,f,c,a,b){var b=b||"3",a=d,p=g(c.a(d));switch(b){case "2":var h=c.c(d+1,3);d+=4;break;case "3":case "4":h=c.e(d+1,f-(d-a),p),d+=1+h.g}b=c.a(d,1);b=i[b];p=c.e(d+1,f-(d-a),p);d+=1+p.g;return{format:h.toString(),type:b,description:p.toString(),data:c.n(d,a+f-d)}};ID3v2.b.COMM=function(d,f,c){var a=d,b=g(c.a(d)),i=c.c(d+1,3),h=c.e(d+4,f-4,b);d+=4+h.g;d=c.e(d,a+f-d,b);return{language:i,X:h.toString(),text:d.toString()}}; ID3v2.b.COM=ID3v2.b.COMM;ID3v2.b.PIC=function(d,f,c,a){return ID3v2.b.APIC(d,f,c,a,"2")};ID3v2.b.PCNT=function(d,f,c){return c.O(d)};ID3v2.b.CNT=ID3v2.b.PCNT;ID3v2.b["T*"]=function(d,f,c){var a=g(c.a(d));return c.e(d+1,f-1,a).toString()};ID3v2.b.TCON=function(){return ID3v2.b["T*"].apply(this,arguments).replace(/^\(\d+\)/,"")};ID3v2.b.TCO=ID3v2.b.TCON;ID3v2.b.USLT=function(d,f,c){var a=d,b=g(c.a(d)),i=c.c(d+1,3),h=c.e(d+4,f-4,b);d+=4+h.g;d=c.e(d,a+f-d,b);return{language:i,I:h.toString(),U:d.toString()}}; ID3v2.b.ULT=ID3v2.b.USLT})();(function(g){function i(c,a,b,d){var g=c.h(a,!0);if(g==0)d();else{var e=c.c(a+4,4);["moov","udta","meta","ilst"].indexOf(e)>-1?(e=="meta"&&(a+=4),c.f([a+8,a+8+8],function(){i(c,a+8,g-8,d)})):c.f([a+(e in f.l?0:g),a+g+8],function(){i(c,a+g,b,d)})}}function d(c,a,b,g,h){for(var h=h===void 0?"":h+" ",e=b;e<b+g;){var i=a.h(e,!0);if(i==0)break;var k=a.c(e+4,4);if(["moov","udta","meta","ilst"].indexOf(k)>-1){k=="meta"&&(e+=4);d(c,a,e+8,i-8,h);break}if(f.l[k]){var s=a.q(e+16+1),j=f.l[k],s=f.types[s];if(k== "trkn")c[j[0]]=a.a(e+16+11),c.count=a.a(e+16+13);else{var k=e+16+4+4,o=i-16-4-4;switch(s){case "text":c[j[0]]=a.e(k,o,"UTF-8");break;case "uint8":c[j[0]]=a.r(k);break;case "jpeg":case "png":c[j[0]]={m:"image/"+s,data:a.n(k,o)}}}}e+=i}}var f=g.v={};f.types={0:"uint8",1:"text",13:"jpeg",14:"png",21:"uint8"};f.l={"\u00a9alb":["album"],"\u00a9art":["artist"],"\u00a9ART":["artist"],aART:["artist"],"\u00a9day":["year"],"\u00a9nam":["title"],"\u00a9gen":["genre"],trkn:["track"],"\u00a9wrt":["composer"], "\u00a9too":["encoder"],cprt:["copyright"],covr:["picture"],"\u00a9grp":["grouping"],keyw:["keyword"],"\u00a9lyr":["lyrics"],"\u00a9gen":["genre"]};f.o=function(c,a){c.f([0,7],function(){i(c,0,c.j(),a)})};f.p=function(c){var a={};d(a,c,0,c.j());return a};g.ID4=g.v})(this); </script> <?php }