/******************************************************************************
* 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 = '';
if(obj.debug) {
elPlayer.innerHTML = '';
} else {
elPlayer.innerHTML = strHtml;
};
};
};
var objCommon = new classCommon();