/****************************************************************************** * author: Yellow Pencil (Christopher Sheldon) * notes: Copyright (c) Yellow Pencil. All Rights Reserved. * The code contained within this file is not liscensed for public * usage. Do not reproduce or alter this file complete or in part * without the express written permission of the author. * ******************************************************************************/ /****************************************************************************** * class: classCommon * notes: JS object that is loaded on every page. This object should contain * global methods and properties to be used by modules plugged into the * site templates. * ********/ function classCommon() { this.version = '20100416'; this.noFlash = location.href.toLowerCase().indexOf('noflash=true') > -1 || location.href.toLowerCase().indexOf('noflash=1') > -1; this.debug = location.href.toLowerCase().indexOf('debug=true') > -1 || location.href.toLowerCase().indexOf('debug=1') > -1; this.flashVersion = 0; if(navigator.plugins && navigator.plugins.length) { for(var intCounter = 0; intCounter < navigator.plugins.length; intCounter++) { if(navigator.plugins[intCounter].name.indexOf('Shockwave Flash') != -1) { var strFlashPlugin = navigator.plugins[intCounter].description.split('Shockwave Flash ')[1]; this.flashVersion = strFlashPlugin; }; }; } else if(window.ActiveXObject) { for(var intCounter = 2; intCounter < 20; intCounter++) { try { objFlash = eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash." + intCounter + "');"); if(objFlash) { var arrFlashPlugin = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.' + intCounter).GetVariable("$version").split(','); this.flashVersion = arrFlashPlugin[0].slice(arrFlashPlugin[0].indexOf(' ')) + '.' + arrFlashPlugin[1] + 'r' + arrFlashPlugin[2]; }; } catch(objError) {}; }; }; var obj = this; /****************************************************************************** * method: getStyle * notes: returns the computed css style for an element. * ***/ this.getStyle = function(el, strRule){ var strValue = ''; if(el) { if(el.currentStyle) { if(el.currentStyle[strRule]) { strValue = el.currentStyle[strRule]; } else { switch(strRule) { case 'backgroundPosition': strValue = el.currentStyle['backgroundPositionX'] + ' ' + el.currentStyle['backgroundPositionY']; break; }; }; } else if(document.defaultView && document.defaultView.getComputedStyle) { if(document.defaultView.getComputedStyle(el, null)[strRule]) { strValue = document.defaultView.getComputedStyle(el, null)[strRule]; } else { switch(strRule) { case 'backgroundPosition': strValue = document.defaultView.getComputedStyle(el, null)['background-position']; break; }; }; } else { strValue = el.style[strRule]; }; }; return strValue; }; /****************************************************************************** * method: classCommon * notes: * ***/ this.getMediaPlayerStyles = function(objSettings) { var elDefault = document.getElementById('mediaPlayerDefault' + objSettings.id); var arrElement = ''; var elPlayer = document.createElement('div'); elPlayer.id = 'mediaPlayerControl' + objSettings.id; elPlayer.className = 'mediaPlayerControl'; elDefault.style.visibility = 'hidden'; elPlayer.style.visibility = 'hidden'; elDefault.parentNode.insertBefore(elPlayer, elDefault); for(var intCount = 0; intCount < objSettings.elements.length; intCount++) { arrElement = objSettings.elements[intCount].split('|'); var elDiv = document.createElement('div'); elDiv.id = arrElement[0] + objSettings.id; elDiv.className = arrElement[0]; var elOver = document.createElement('div'); elOver.id = arrElement[0] + objSettings.id + '-over'; elOver.className = arrElement[0] + '-over over'; elPlayer.appendChild(elDiv); elPlayer.appendChild(elOver); }; // need a few secs for mozilla setTimeout(function() { var strOut = '', strOver = ''; var strQuery = 'sprite=' + objSettings.sprite + '&autoplay=' + objSettings.autoplay + '&randomize=' + objSettings.randomize; if(obj.debug) { strQuery += '&debug=true'; }; var el = document.getElementById('mediaPlayerControl' + objSettings.id); objSettings.width = obj.getStyle(el, 'width').replace(/(px|em|pt|\%)/ig, ''); objSettings.height = obj.getStyle(el, 'height').replace(/(px|em|pt|\%)/ig, ''); strQuery += '&skin='; for(var intCount = 0; intCount < objSettings.elements.length; intCount++) { if(intCount > 0) { strQuery += '||'; }; arrElement = objSettings.elements[intCount].split('|'); // element strQuery += arrElement[0]; // position if(arrElement.length > 1) { strQuery += '|' + arrElement[1]; }; // set extended if(arrElement.length > 2) { strQuery += '|'+ arrElement[2]; }; el = document.getElementById(arrElement[0] + objSettings.id); strQuery += ( '|d:' + obj.getStyle(el, 'width') + ',' + obj.getStyle(el, 'height') + '|p:' + obj.getStyle(el, 'top') + ',' + obj.getStyle(el, 'left') ).replace(/(px|em|pt|\%)/ig, ''); strOut = obj.getStyle(el, 'backgroundPosition').replace(/(px|em|pt|\%)/ig, ''); strQuery += ( '|s:' + strOut.split(' ')[1] + ',' + strOut.split(' ')[0] ); el = document.getElementById(arrElement[0] + objSettings.id + '-over'); strOver = obj.getStyle(el, 'backgroundPosition').replace(/(px|em|pt|\%)/ig, ''); if(strOver != '0 0') { strQuery += ( '|o:' + strOver.split(' ')[1] + ',' + strOver.split(' ')[0] ); }; }; strQuery += '&playlist='; var elItems = document.getElementById('mediaPlayer' + objSettings.id).getElementsByTagName('li'); for(intCount = 0; intCount < elItems.length; intCount++) { if(intCount > 0) { strQuery += '||'; }; strQuery += 'm:' + elItems[intCount].className; strQuery += '|f:' + elItems[intCount].getElementsByTagName('a')[0].href.toString().replace(/\&/ig, '&').replace(/\&/ig, '*'); if(elItems[intCount].getElementsByTagName('a').length > 1) { strQuery += '|a:' + elItems[intCount].getElementsByTagName('a')[1].href.toString().replace(/\&/ig, '&').replace(/\&/ig, '*'); }; strQuery += '|d:' + elItems[intCount].getElementsByTagName('a')[0].childNodes[0].nodeValue; }; // build out playlist data // if not successful at skin do not build player elDefault.parentNode.removeChild(elDefault); obj.createMediaPlayer(objSettings, strQuery); elDefault.style.visibility = 'visible'; elPlayer.style.visibility = 'visible'; }, 250); }; /****************************************************************************** * method: classCommon * notes: * ***/ this.addMediaPlayer = function(objSettings) { if(!obj.noFlash) { var elPlayer = document.getElementById('mediaPlayerDefault' + objSettings.id); if(parseInt(obj.flashVersion) > 9 && elPlayer) { obj.getMediaPlayerStyles(objSettings); }; }; }; /****************************************************************************** * method: classCommon * notes: * ***/ this.createMediaPlayer = function(objSettings, strQuery) { var elPlayer = document.getElementById('mediaPlayerControl' + objSettings.id); var strHtml = ''; strHtml += ' '; strHtml += ' '; strHtml += ' '; strHtml += ' '; strHtml += ' '; strHtml += ' '; strHtml += ' '; strHtml += ' '; strHtml += ' \n\n'; strHtml += ' \n\n'; strHtml += ' '; } else { elPlayer.innerHTML = strHtml; }; }; }; var objCommon = new classCommon();