X-Git-Url: http://git.bytex64.net/?a=blobdiff_plain;f=www%2Fjssrc%2Flib%2Fblergmedia.js;h=c53ec5cf846fa0abcc80504872671d1ca037c977;hb=refs%2Fheads%2Fperl-lib;hp=0528a9b196f615010ef1aaf0471590b3046e3184;hpb=4377f9e224f34c05e7a5de04f390bb2a0cabf6eb;p=blerg.git diff --git a/www/jssrc/lib/blergmedia.js b/www/jssrc/lib/blergmedia.js index 0528a9b..c53ec5c 100644 --- a/www/jssrc/lib/blergmedia.js +++ b/www/jssrc/lib/blergmedia.js @@ -1,9 +1,10 @@ var BlergMedia = { audioExtensions: [], - videoExtensions: [] + videoExtensions: [], + imageExtensions: ['jpg', 'jpeg', 'gif', 'png'] }; -function media_init() { +BlergMedia.media_init = function() { var e = document.createElement('audio'); if (!!e.canPlayType) { BlergMedia.has_audio = true; @@ -19,6 +20,8 @@ function media_init() { BlergMedia.has_wav = true; BlergMedia.audioExtensions.push('wav'); } + BlergMedia.audioTypeRegex = new RegExp("audio:(" + BlergMedia.audioExtensions.join('|') + ")$"); + BlergMedia.audioExtensionRegex = new RegExp("\\.(" + BlergMedia.audioExtensions.join('|') + ")$"); } var e = document.createElement('video'); @@ -36,23 +39,60 @@ function media_init() { BlergMedia.has_webm = true; BlergMedia.videoExtensions.push('webm'); } + BlergMedia.videoTypeRegex = new RegExp("video:(" + BlergMedia.videoExtensions.join('|') + ")$"); + BlergMedia.videoExtensionRegex = new RegExp("\\.(" + BlergMedia.videoExtensions.join('|') + ")$"); } + + BlergMedia.imageTypeRegex = new RegExp("image:(" + BlergMedia.imageExtensions.join('|') + ")$"); + BlergMedia.imageExtensionRegex = new RegExp("\\.(" + BlergMedia.imageExtensions.join('|') + ")$"); +} + +BlergMedia.play_audio = function(ev) { + var e = ev.target.parentElement; + var url = ev.target.parentElement.href; + var audio_element = document.createElement('audio'); + audio_element.src = url; + audio_element.controls = 1; + audio_element.autoplay = 1; + e.parentElement.replaceChild(audio_element, e); } -function play_audio() { - var e = event.target.parentElement; - var url = event.target.parentElement.href; - var audio_element = new Element('audio', {src: url, controls: 1, autoplay: 1}); - e.replace(audio_element); +BlergMedia.play_video = function(ev) { + var e = ev.target.parentElement; + var url = ev.target.parentElement.href; + var p = document.createElement('p'); + var video_element = document.createElement('video'); + video_element.src = url; + video_element.controls = 1; + video_element.autoplay = 1; + p.appendChild(video_element); + e.parentElement.replaceChild(video_element, e); } -function play_video() { - var e = event.target.parentElement; - var url = event.target.parentElement.href; - var p = new Element('p'); - var video_element = new Element('video', {src: url, controls: 1, autoplay: 1}); - p.insert(video_element); - e.replace(p); +BlergMedia.show_image = function(ev) { + var img = ev.target; + var medialink = img.parentElement; + var url = medialink.href; + var anchor = medialink.previousElementSibling; + var title = anchor.firstChild.data; + img.src = url; + img.title = img.alt = title; + // Get rid of whitespace between anchor and medialink + medialink.parentElement.removeChild(medialink.previousSibling); + anchor.parentElement.removeChild(anchor); } -window.addEventListener('load', media_init, false); +BlergMedia.process = function(data) { + if (BlergMedia.imageExtensionRegex.test(data.url) || + (data.extra && BlergMedia.imageExtensionRegex.test(data.extra))) { + data.widget = ''; + } else if (BlergMedia.audioExtensionRegex.test(data.url) || + (data.extra && BlergMedia.audioTypeRegex.test(data.extra))) { + data.widget = ''; + } else if (BlergMedia.videoExtensionRegex.test(data.url) || + (data.extra && BlergMedia.videoTypeRegex.test(data.extra))) { + data.widget = ''; + } + + return data; +}