/**************************************************************
Script	: Sortable Table
Version	: 1.4
Authors	: Samuel Birch
Desc	: Sorts and filters table elements
Licence	: Open Source MIT Licence
**************************************************************/
var sortableTable = new Class({
getOptions: function(){
return {
overCls: false,
onClick: false,
sortOn: 0,
sortBy: 'ASC',
filterHide: true,
filterHideCls: 'hide',
filterSelectedCls: 'selected'
};
},
initialize: function(table, options){
this.setOptions(this.getOptions(), options);
this.table = $(table);
this.tHead = this.table.getElement('thead');
this.tBody = this.table.getElement('tbody');
this.tFoot = this.table.getElement('tfoot');
this.elements = this.tBody.getElements('tr');
this.filtered = false;
/*for(i=0;i<10;i++){
this.elements.clone().injectInside(this.tBody);
}
this.elements = this.tBody.getElements('tr');*/
this.elements.each(function(el,i){
if(this.options.overCls){
el.addEvent('mouseover', function(){
el.addClass(options.overCls);
}, this);
el.addEvent('mouseout', function(){
el.removeClass(options.overCls);
});
}
if(this.options.onClick){
el.addEvent('click', options.onClick);
}
}, this);
//setup header
this.tHead.getElements('th').each(function(el,i){
if(el.axis){
el.addEvent('click', this.sort.bind(this,i));
el.addEvent('mouseover', function(){
el.addClass('tableHeaderOver');
});
el.addEvent('mouseout', function(){
el.removeClass('tableHeaderOver');
});
el.getdate = function(str){
// inner util function to convert 2-digit years to 4
function fixYear(yr) {
yr = +yr;
if (yr<50) { yr += 2000; }
else if (yr<100) { yr += 1900; }
return yr;
};
var ret;
//
if (str.length>12){
strtime = str.substring(str.lastIndexOf(' ')+1);
strtime = strtime.substring(0,2)+strtime.substr(-2)
}else{
strtime = '0000';
}
//
// YYYY-MM-DD
if (ret=str.match(/(\d{2,4})-(\d{1,2})-(\d{1,2})/)) {
return (fixYear(ret[1])*10000) + (ret[2]*100) + (+ret[3]) + strtime;
}
// DD/MM/YY[YY] or DD-MM-YY[YY]
if (ret=str.match(/(\d{1,2})[\/-](\d{1,2})[\/-](\d{2,4})/)) {
return (fixYear(ret[3])*10000) + (ret[2]*100) + (+ret[1]) + strtime;
}
return 999999990000; // So non-parsed dates will be last, not first
};
//
el.findData = function(elem){
var child = elem.getFirst();
if(child){
return el.findData(child);
}else{
return elem.innerHTML.trim();
}
};
//
el.compare = function(a,b){
var1 = el.findData(a.getChildren()[i]);
var2 = el.findData(b.getChildren()[i]);
//var1 = a.getChildren()[i].firstChild.data;
//var2 = b.getChildren()[i].firstChild.data;
if(el.axis == 'number'){
var1 = parseFloat(var1);
var2 = parseFloat(var2);
if(el.sortBy == 'ASC'){
return var1-var2;
}else{
return var2-var1;
}
}else if(el.axis == 'string'){
var1 = var1.toUpperCase();
var2 = var2.toUpperCase();
if(var1==var2){return 0};
if(el.sortBy == 'ASC'){
if(var1<var2){return -1};
}else{
if(var1>var2){return -1};
}
return 1;
}else if(el.axis == 'date'){
var1 = parseFloat(el.getdate(var1));
var2 = parseFloat(el.getdate(var2));
if(el.sortBy == 'ASC'){
return var1-var2;
}else{
return var2-var1;
}
}else if(el.axis == 'currency'){
var1 = parseFloat(var1.substr(1).replace(',',''));
var2 = parseFloat(var2.substr(1).replace(',',''));
if(el.sortBy == 'ASC'){
return var1-var2;
}else{
return var2-var1;
}
}
}
if(i == this.options.sortOn){
el.fireEvent('click');
}
}
}, this);
},
sort: function(index){
if(this.options.onStart){
this.fireEvent('onStart');
}
//
this.options.sortOn = index;
var header = this.tHead.getElements('th');
var el = header[index];
header.each(function(e,i){
if(i != index){
e.removeClass('sortedASC');
e.removeClass('sortedDESC');
}
});
if(el.hasClass('sortedASC')){
el.removeClass('sortedASC');
el.addClass('sortedDESC');
el.sortBy = 'DESC';
}else if(el.hasClass('sortedDESC')){
el.removeClass('sortedDESC');
el.addClass('sortedASC');
el.sortBy = 'ASC';
}else{
if(this.options.sortBy == 'ASC'){
el.addClass('sortedASC');
el.sortBy = 'ASC';
}else if(this.options.sortBy == 'DESC'){
el.addClass('sortedDESC');
el.sortBy = 'DESC';
}
}
//
this.elements.sort(el.compare);
this.elements.injectInside(this.tBody);
//
if(this.filtered){
this.filteredAltRow();
}else{
this.altRow();
}
//
if(this.options.onComplete){
this.fireEvent('onComplete');
}
},
altRow: function(){
this.elements.each(function(el,i){
if(i % 2){
el.removeClass('altRow');
}else{
el.addClass('altRow');
}
});
},
filteredAltRow: function(){
this.table.getElements('.'+this.options.filterSelectedCls).each(function(el,i){
if(i % 2){
el.removeClass('altRow');
}else{
el.addClass('altRow');
}
});
},
filter: function(form){
var form = $(form);
var col = 0;
var key = '';
form.getChildren().each(function(el,i){
if(el.id == 'column'){
col = Number(el.value);
}
if(el.id == 'keyword'){
key = el.value.toLowerCase();
}
if(el.type == 'reset'){
el.addEvent('click',this.clearFilter.bind(this));
}
}, this);
if(key){
this.elements.each(function(el,i){
if(this.options.filterHide){
el.removeClass('altRow');
}
if(el.getChildren()[col].firstChild.data.toLowerCase().indexOf(key) > -1){
el.addClass(this.options.filterSelectedCls);
if(this.options.filterHide){
el.removeClass(this.options.filterHideCls);
}
}else{
el.removeClass(this.options.filterSelectedCls);
if(this.options.filterHide){
el.addClass(this.options.filterHideCls);
}
}
}, this);
if(this.options.filterHide){
this.filteredAltRow();
this.filtered = true;
}
}
},
clearFilter: function(){
this.elements.each(function(el,i){
el.removeClass(this.options.filterSelectedCls);
if(this.options.filterHide){
el.removeClass(this.options.filterHideCls);
}
}, this);
if(this.options.filterHide){
this.altRow();
this.filtered = false;
}
}
});
sortableTable.implement(new Events);
sortableTable.implement(new Options);
/*************************************************************/
var Site = {
start: function(){
if($('vertical')) Site.vertical();
},
vertical: function(){
var list = $$('#vertical li div.collapse');
var headings = $$('#vertical li h6');
var collapsibles = new Array();
headings.each( function(heading, i) {
var collapsible = new Fx.Slide(list[i], { 
duration: 250, 
transition: Fx.Transitions.linear
});
collapsibles[i] = collapsible;
heading.onclick = function(){
var span = $E('span', heading);
if(span){
var newHTML = span.innerHTML == 'View' ? 'Hide' : 'View';
span.setHTML(newHTML);
}
collapsible.toggle();
return false;
}
collapsible.hide();
});
$('collapse-all').onclick = function(){
headings.each( function(heading, i) {
collapsibles[i].hide();
var span = $E('span', heading);
if(span) span.setHTML('View All');
});
return false;
}
$('expand-all').onclick = function(){
headings.each( function(heading, i) {
collapsibles[i].show();
var span = $E('span', heading);
if(span) span.setHTML('Hide All');
});
return false;
}
}
};
window.addEvent('domready', Site.start);
$A = function(iterable, start, length){
if (Browser.Engine.trident && $type(iterable) == 'collection'){
start = start || 0;
if (start < 0) start = iterable.length + start;
length = length || (iterable.length - start);
var array = [];
for (var i = 0; i < length; i++) array[i] = iterable[start++];
return array;
}
start = (start || 0) + ((start < 0) ? iterable.length : 0);
var end = ((!$chk(length)) ? iterable.length : length) + start;
return Array.prototype.slice.call(iterable, start, end);
};
(function(){
var natives = [Array, Function, String, RegExp, Number];
for (var i = 0, l = natives.length; i < l; i++) natives[i].extend = natives[i].implement;
})();
window.extend = document.extend = function(properties){
for (var property in properties) this[property] = properties[property];
};
window[Browser.Engine.name] = window[Browser.Engine.name + Browser.Engine.version] = true;
window.ie = window.trident;
window.ie6 = window.trident4;
window.ie7 = window.trident5;
Class.empty = $empty;
//SLIDER TOGGLE
window.addEvent('domready', function() {
$$('.moreInfoWrapper').each(function(item){
var thisSlider = new Fx.Slide( item.getElement( '.moreInfo' ), { duration: 500 } );
thisSlider.hide();
item.getElement( '.divToggle' ).addEvent( 'click', function(){ thisSlider.toggle(); } );
} );
} );
/**************************************************************
Script	: Overlay
Version	: 1.2
Authors	: Samuel birch
Desc	: Covers the window with a semi-transparent layer.
Licence	: Open Source MIT Licence
**************************************************************/
var Overlay = new Class({
getOptions: function(){
return {
colour: '#000',
opacity: 0.7,
zIndex: 9000,
container: document.body,
onClick: Class.empty
};
},
initialize: function(options){
this.setOptions(this.getOptions(), options);
this.options.container = $(this.options.container);
this.container = new Element('div').setProperty('id', 'OverlayContainer').setStyles({
position: 'absolute',
left: '0px',
top: '0px',
width: '100%',
zIndex: this.options.zIndex
}).injectInside(this.options.container);
this.iframe = new Element('iframe').setProperties({
'id': 'OverlayIframe',
'name': 'OverlayIframe',
'src': 'javascript:void(0);',
'frameborder': 1,
'scrolling': 'no'
}).setStyles({
'position': 'absolute',
'top': 0,
'left': 0,
'width': '100%',
'height': '100%',
'filter': 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)',
'opacity': 0,
'zIndex': 9000
}).injectInside(this.container);
this.overlay = new Element('div').setProperty('id', 'Overlay').setStyles({
position: 'absolute',
left: '0px',
top: '0px',
width: '100%',
height: '100%',
zIndex: 2,
backgroundColor: this.options.colour
}).injectInside(this.container);
this.container.addEvent('click', function(){
this.options.onClick();
}.bind(this));
this.fade = new Fx.Style(this.container, 'opacity').set(0);
this.position();
window.addEvent('resize', this.position.bind(this));
},
position: function(){ 
if(this.options.container == document.body){ 
var h = window.getScrollHeight()+'px'; 
this.container.setStyles({top: '0px', height: h}); 
}else{ 
var myCoords = this.options.container.getCoordinates(); 
this.container.setStyles({
top: myCoords.top+'px', 
height: myCoords.height+'px', 
left: myCoords.left+'px', 
width: myCoords.width+'px'
}); 
} 
},
show: function(){
this.fade.start(0,this.options.opacity);
},
hide: function(){
this.fade.start(this.options.opacity,0);
}
});
Overlay.implement(new Options);
/**************************************************************
Script	: MultiBox
Version	: 1.3.1
Authors	: Samuel Birch
Desc	: Supports jpg, gif, png, flash, flv, mov, wmv, mp3, html, iframe
Licence	: Open Source MIT Licence
**************************************************************/
var MultiBox = new Class({
getOptions: function(){
return {
initialWidth: 250,
initialHeight: 250,
container: document.body,
useOverlay: true,
contentColor: '#FFF',
showNumbers: true,
showControls: true,
//showThumbnails: false,
//autoPlay: false,
waitDuration: 2000,
descClassName: true,
descMinWidth: 400,
descMaxWidth: 600,
movieWidth: 400,
movieHeight: 300,
offset: {x:0, y:0},
fixedTop: false,
path: 'files/',
onOpen: new Class(),
onClose: new Class(),
openFromLink: true,
relativeToWindow: true
};
},
initialize: function(className, options){
this.setOptions(this.getOptions(), options);
this.openClosePos = {};
this.timer = 0;
this.contentToLoad = {};
this.index = 0;
this.opened = false;
this.contentObj = {};
this.containerDefaults = {};
if(this.options.useOverlay){
this.overlay = new Overlay({container: this.options.container, onClick:this.close.bind(this)});
}
this.content = $$('.'+className);
if(this.options.descClassName){
this.descriptions = $$('.'+this.options.descClassName);
this.descriptions.each(function(el){
el.setStyle('display', 'none');
});
}
this.container = new Element('div').addClass('MultiBoxContainer').injectInside(this.options.container);
this.iframe = new Element('iframe').setProperties({
'id': 'multiBoxIframe',
'name': 'mulitBoxIframe',
'src': 'javascript:void(0);',
'frameborder': 1,
'scrolling': 'no'
}).setStyles({
'position': 'absolute',
'top': -20,
'left': -20,
'width': '115%',
'height': '115%',
'filter': 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)',
'opacity': 0
}).injectInside(this.container);
this.box = new Element('div').addClass('MultiBoxContent').injectInside(this.container);
this.closeButton = new Element('div').addClass('MultiBoxClose').injectInside(this.container).addEvent('click', this.close.bind(this));
this.controlsContainer = new Element('div').addClass('MultiBoxControlsContainer').injectInside(this.container);
this.controls = new Element('div').addClass('MultiBoxControls').injectInside(this.controlsContainer);
this.previousButton = new Element('div').addClass('MultiBoxPrevious').injectInside(this.controls).addEvent('click', this.previous.bind(this));
this.nextButton = new Element('div').addClass('MultiBoxNext').injectInside(this.controls).addEvent('click', this.next.bind(this));
this.title = new Element('div').addClass('MultiBoxTitle').injectInside(this.controls);
this.number = new Element('div').addClass('MultiBoxNumber').injectInside(this.controls);
this.description = new Element('div').addClass('MultiBoxDescription').injectInside(this.controls);
if(this.content.length == 1){
this.title.setStyles({
'margin-left': 0
});
this.description.setStyles({
'margin-left': 0
});
this.previousButton.setStyle('display', 'none');
this.nextButton.setStyle('display', 'none');
this.number.setStyle('display', 'none');
}
new Element('div').setStyle('clear', 'both').injectInside(this.controls);
this.content.each(function(el,i){
el.index = i;
el.addEvent('click', function(e){
new Event(e).stop();
this.open(el);
}.bind(this));
if(el.href.indexOf('#') > -1){
el.content = $(el.href.substr(el.href.indexOf('#')+1));
if(el.content){el.content.setStyle('display','none');}
}
}, this);
this.containerEffects = new Fx.Morph(this.container, {duration: 400, transition: Fx.Transitions.Sine.easeInOut});
this.controlEffects = new Fx.Morph(this.controlsContainer, {duration: 300, transition: Fx.Transitions.Sine.easeInOut});
this.reset();
},
setContentType: function(link){
var str = link.href.substr(link.href.lastIndexOf('.')+1).toLowerCase();
var contentOptions = {};
if($chk(link.rel)){
var optArr = link.rel.split(',');
optArr.each(function(el){
var ta = el.split(':');
contentOptions[ta[0]] = ta[1];
});
}
if(contentOptions.type != undefined){
str = contentOptions.type;
}
this.contentObj = {};
this.contentObj.url = link.href;
this.contentObj.xH = 0;
if(contentOptions.width){
this.contentObj.width = contentOptions.width;
}else{
this.contentObj.width = this.options.movieWidth;
}
if(contentOptions.height){
this.contentObj.height = contentOptions.height;	
}else{
this.contentObj.height = this.options.movieHeight;
}
if(contentOptions.panel){
this.panelPosition = contentOptions.panel;
}else{
this.panelPosition = this.options.panel;
}
switch(str){
case 'jpg':
case 'gif':
case 'png':
this.type = 'image';
break;
case 'swf':
this.type = 'flash';
break;
case 'flv':
this.type = 'flashVideo';
this.contentObj.xH = 70;
break;
case 'mov':
this.type = 'quicktime';
break;
case 'wmv':
this.type = 'windowsMedia';
break;
case 'rv':
case 'rm':
case 'rmvb':
this.type = 'real';
break;
case 'mp3':
this.type = 'flashMp3';
this.contentObj.width = 320;
this.contentObj.height = 70;
break;
case 'element':
this.type = 'htmlelement';
this.elementContent = link.content;
this.elementContent.setStyles({
display: 'block',
opacity: 0
})
if(this.elementContent.getStyle('width') != 'auto'){
this.contentObj.width = this.elementContent.getStyle('width');
}
this.contentObj.height = this.elementContent.getSize().size.y;
this.elementContent.setStyles({
display: 'none',
opacity: 1
})
break;
default:
this.type = 'iframe';
if(contentOptions.ajax){
this.type = 'ajax';
}
break;
}
},
reset: function(){
this.container.setStyles({
'opacity': 0,
'display': 'none'
});
this.controlsContainer.setStyles({
'height': 0
});
this.removeContent();
this.previousButton.removeClass('MultiBoxButtonDisabled');
this.nextButton.removeClass('MultiBoxButtonDisabled');
this.opened = false;
},
getOpenClosePos: function(el){
if (this.options.openFromLink) {
if (el.getFirst()) {
var w = el.getFirst().getCoordinates().width - (this.container.getStyle('border').toInt() * 2);
if (w < 0) {
w = 0
}
var h = el.getFirst().getCoordinates().height - (this.container.getStyle('border').toInt() * 2);
if (h < 0) {
h = 0
}
this.openClosePos = {
width: w,
height: h,
top: el.getFirst().getCoordinates().top,
left: el.getFirst().getCoordinates().left
};
}
else {
var w = el.getCoordinates().width - (this.container.getStyle('border').toInt() * 2);
if (w < 0) {
w = 0
}
var h = el.getCoordinates().height - (this.container.getStyle('border').toInt() * 2);
if (h < 0) {
h = 0
}
this.openClosePos = {
width: w,
height: h,
top: el.getCoordinates().top,
left: el.getCoordinates().left
};
}
}else{
if(this.options.fixedTop){
var top = this.options.fixedTop;
}else{
var top = ((window.getHeight()/2)-(this.options.initialHeight/2)-this.container.getStyle('border').toInt())+this.options.offset.y;
}
this.openClosePos = {
width: this.options.initialWidth,
height: this.options.initialHeight,
top: top,
left: ((window.getWidth()/2)-(this.options.initialWidth/2)-this.container.getStyle('border').toInt())+this.options.offset.x
};
}
return this.openClosePos;
},
open: function(el){
this.options.onOpen();
this.index = this.content.indexOf(el);
this.openId = el.getProperty('id');
if(!this.opened){
this.opened = true;
if(this.options.useOverlay){
this.overlay.show();
}
this.container.setStyles(this.getOpenClosePos(el));
this.container.setStyles({
opacity: 0,
display: 'block'
});
if(this.options.fixedTop){
var top = this.options.fixedTop;
}else{
var top = ((window.getHeight()/2)-(this.options.initialHeight/2)-this.container.getStyle('border').toInt())+this.options.offset.y;
}
this.containerEffects.start({
width: this.options.initialWidth,
height: this.options.initialHeight,
top: top,
left: ((window.getWidth()/2)-(this.options.initialWidth/2)-this.container.getStyle('border').toInt())+this.options.offset.x,
opacity: [0, 1]
});
this.load(this.index);
}else{
if (this.options.showControls) {
this.hideControls();
}
this.getOpenClosePos(this.content[this.index]);
this.timer = this.hideContent.bind(this).delay(500);
this.timer = this.load.pass(this.index, this).delay(1100);
}
},
getContent: function(index){
this.setContentType(this.content[index]);
var desc = {};
if(this.options.descClassName){
this.descriptions.each(function(el,i){
if(el.hasClass(this.openId)){
desc = el.clone();
}
},this);
}
//var title = this.content[index].title;
this.contentToLoad = {
title: this.content[index].title || '&nbsp;',
//desc: $(this.options.descClassName+this.content[index].id).clone(),
desc: desc,
number: index+1
};
},
close: function(){
if(this.options.useOverlay){
this.overlay.hide();
}
if (this.options.showControls) {
this.hideControls();
}
this.hideContent();
this.containerEffects.cancel();
this.zoomOut.bind(this).delay(500);
this.options.onClose();
},
zoomOut: function(){
this.containerEffects.start({
width: this.openClosePos.width,
height: this.openClosePos.height,
top: this.openClosePos.top,
left: this.openClosePos.left,
opacity: 0
});
this.reset.bind(this).delay(500);
},
load: function(index){
this.box.addClass('MultiBoxLoading');
this.getContent(index);
if(this.type == 'image'){
var xH = this.contentObj.xH;
this.contentObj = new Asset.image(this.content[index].href, {onload: this.resize.bind(this)});
this.contentObj.xH = xH;
/*this.contentObj = new Image();
this.contentObj.onload = this.resize.bind(this);
this.contentObj.src = this.content[index].href;*/
}else{
this.resize();
}
},
resize: function(){
if (this.options.fixedTop) {
var top = this.options.fixedTop;
}
else {
var top = ((window.getHeight() / 2) - ((Number(this.contentObj.height) + this.contentObj.xH) / 2) - this.container.getStyle('border').toInt() + window.getScrollTop()) + this.options.offset.y;
}
var left = ((window.getWidth() / 2) - (this.contentObj.width / 2) - this.container.getStyle('border').toInt()) + this.options.offset.x;
if (top < 0) {
top = 0
}
if (left < 0) {
left = 0
}
this.containerEffects.cancel();
this.containerEffects.start({
width: this.contentObj.width,
height: Number(this.contentObj.height) + this.contentObj.xH,
top: top,
left: left,
opacity: 1
});
this.timer = this.showContent.bind(this).delay(500);
},
showContent: function(){
this.box.removeClass('MultiBoxLoading');
this.removeContent();
this.contentContainer = new Element('div').setProperties({id: 'MultiBoxContentContainer'}).setStyles({opacity: 0, width: this.contentObj.width+'px', height: (Number(this.contentObj.height)+this.contentObj.xH)+'px'}).injectInside(this.box);
if(this.type == 'image'){
this.contentObj.injectInside(this.contentContainer);
}else if(this.type == 'iframe'){
new Element('iframe').setProperties({
id: 'iFrame'+new Date().getTime(), 
width: this.contentObj.width,
height: this.contentObj.height,
src: this.contentObj.url,
frameborder: 0,
scrolling: 'auto'
}).injectInside(this.contentContainer);
}else if(this.type == 'htmlelement'){
this.elementContent.clone().setStyle('display','block').injectInside(this.contentContainer);
}else if(this.type == 'ajax'){
new Ajax(this.contentObj.url, {
method: 'get',
update: 'MultiBoxContentContainer',
evalScripts: true,
autoCancel: true
}).request();
}else{
var obj = this.createEmbedObject().injectInside(this.contentContainer);
if(this.str != ''){
$('MultiBoxMediaObject').innerHTML = this.str;
}
}
this.contentEffects = new Fx.Morph(this.contentContainer, {duration: 500, transition: Fx.Transitions.linear});
this.contentEffects.start({
opacity: 1
});
this.title.setHTML(this.contentToLoad.title);
this.number.setHTML(this.contentToLoad.number+' of '+this.content.length);
if (this.options.descClassName) {
if (this.description.getFirst()) {
this.description.getFirst().remove();
}
this.contentToLoad.desc.injectInside(this.description).setStyles({
display: 'block'
});
}
//this.removeContent.bind(this).delay(500);
if (this.options.showControls) {
this.timer = this.showControls.bind(this).delay(800);
}
},
hideContent: function(){
this.box.addClass('MultiBoxLoading');
this.contentEffects.start({
opacity: 0
});
this.removeContent.bind(this).delay(500);
},
removeContent: function(){
if($('MultiBoxMediaObject')){
$('MultiBoxMediaObject').empty();
$('MultiBoxMediaObject').remove();
}
if($('MultiBoxContentContainer')){
//$('MultiBoxContentContainer').empty();
$('MultiBoxContentContainer').remove();	
}
},
showControls: function(){
this.clicked = false;
if(this.container.getStyle('height') != 'auto'){
this.containerDefaults.height = this.container.getStyle('height')
this.containerDefaults.backgroundColor = this.options.contentColor;
}
this.container.setStyles({
//'backgroundColor': this.controls.getStyle('backgroundColor'),
'height': 'auto'
});
if(this.contentToLoad.number == 1){
this.previousButton.addClass('MultiBoxPreviousDisabled');
}else{
this.previousButton.removeClass('MultiBoxPreviousDisabled');
}
if(this.contentToLoad.number == this.content.length){
this.nextButton.addClass('MultiBoxNextDisabled');
}else{
this.nextButton.removeClass('MultiBoxNextDisabled');
}
this.controlEffects.start({'height': this.controls.getStyle('height')});
},
hideControls: function(num){
this.controlEffects.start({'height': 0}).chain(function(){
this.container.setStyles(this.containerDefaults);
}.bind(this));
},
showThumbnails: function(){
},
next: function(){
if(this.index < this.content.length-1){
this.index++;
this.openId = this.content[this.index].getProperty('id');
if (this.options.showControls) {
this.hideControls();
}
this.getOpenClosePos(this.content[this.index]);
//this.getContent(this.index);
this.timer = this.hideContent.bind(this).delay(500);
this.timer = this.load.pass(this.index, this).delay(1100);
}
},
previous: function(){
if(this.index > 0){
this.index--;
this.openId = this.content[this.index].getProperty('id');
if (this.options.showControls) {
this.hideControls();
}
this.getOpenClosePos(this.content[this.index]);
//this.getContent(this.index);
this.timer = this.hideContent.bind(this).delay(500);
this.timer = this.load.pass(this.index, this).delay(1000);
}
},
createEmbedObject: function(){
if(this.type == 'flash'){
var url = this.contentObj.url;
var obj = new Element('div').setProperties({id: 'MultiBoxMediaObject'});
this.str = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" '
this.str += 'width="'+this.contentObj.width+'" ';
this.str += 'height="'+this.contentObj.height+'" ';
this.str += 'title="MultiBoxMedia">';
this.str += '<param name="movie" value="'+url+'" />'
this.str += '<param name="quality" value="high" />';
this.str += '<embed src="'+url+'" ';
this.str += 'quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" ';
this.str += 'width="'+this.contentObj.width+'" ';
this.str += 'height="'+this.contentObj.height+'"></embed>';
this.str += '</object>';
}
if(this.type == 'flashVideo'){
//var url = this.contentObj.url.substring(0, this.contentObj.url.lastIndexOf('.'));
var url = this.contentObj.url;
var obj = new Element('div').setProperties({id: 'MultiBoxMediaObject'});
this.str = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" '
this.str += 'width="'+this.contentObj.width+'" ';
this.str += 'height="'+(Number(this.contentObj.height)+this.contentObj.xH)+'" ';
this.str += 'title="MultiBoxMedia">';
this.str += '<param name="movie" value="'+this.options.path+'flvplayer.swf" />'
this.str += '<param name="quality" value="high" />';
this.str += '<param name="salign" value="TL" />';
this.str += '<param name="scale" value="noScale" />';
this.str += '<param name="FlashVars" value="path='+url+'" />';
this.str += '<embed src="'+this.options.path+'flvplayer.swf" ';
this.str += 'quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" ';
this.str += 'width="'+this.contentObj.width+'" ';
this.str += 'height="'+(Number(this.contentObj.height)+this.contentObj.xH)+'"';
this.str += 'salign="TL" ';
this.str += 'scale="noScale" ';
this.str += 'FlashVars="path='+url+'"';
this.str += '></embed>';
this.str += '</object>';
}
if(this.type == 'flashMp3'){
var url = this.contentObj.url;
var obj = new Element('div').setProperties({id: 'MultiBoxMediaObject'});
this.str = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" '
this.str += 'width="'+this.contentObj.width+'" ';
this.str += 'height="'+this.contentObj.height+'" ';
this.str += 'title="MultiBoxMedia">';
this.str += '<param name="movie" value="'+this.options.path+'mp3player.swf" />'
this.str += '<param name="quality" value="high" />';
this.str += '<param name="salign" value="TL" />';
this.str += '<param name="scale" value="noScale" />';
this.str += '<param name="FlashVars" value="path='+url+'" />';
this.str += '<embed src="'+this.options.path+'mp3player.swf" ';
this.str += 'quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" ';
this.str += 'width="'+this.contentObj.width+'" ';
this.str += 'height="'+this.contentObj.height+'"';
this.str += 'salign="TL" ';
this.str += 'scale="noScale" ';
this.str += 'FlashVars="path='+url+'"';
this.str += '></embed>';
this.str += '</object>';
}
if(this.type == 'quicktime'){
var obj = new Element('div').setProperties({id: 'MultiBoxMediaObject'});
this.str = '<object type="video/quicktime" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab"';
this.str += ' width="'+this.contentObj.width+'" height="'+this.contentObj.height+'">';
this.str += '<param name="src" value="'+this.contentObj.url+'" />';
this.str += '<param name="autoplay" value="true" />';
this.str += '<param name="controller" value="true" />';
this.str += '<param name="enablejavascript" value="true" />';
this.str += '<embed src="'+this.contentObj.url+'" autoplay="true" pluginspage="http://www.apple.com/quicktime/download/" width="'+this.contentObj.width+'" height="'+this.contentObj.height+'"></embed>';
this.str += '<object/>';
}
if(this.type == 'windowsMedia'){
var obj = new Element('div').setProperties({id: 'MultiBoxMediaObject'});
this.str = '<object type="application/x-oleobject" classid="CLSID:22D6f312-B0F6-11D0-94AB-0080C74C7E95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,7,1112"';
this.str += ' width="'+this.contentObj.width+'" height="'+this.contentObj.height+'">';
this.str += '<param name="filename" value="'+this.contentObj.url+'" />';
this.str += '<param name="Showcontrols" value="true" />';
this.str += '<param name="autoStart" value="true" />';
this.str += '<embed type="application/x-mplayer2" src="'+this.contentObj.url+'" Showcontrols="true" autoStart="true" width="'+this.contentObj.width+'" height="'+this.contentObj.height+'"></embed>';
this.str += '<object/>';
}
if(this.type == 'real'){
var obj = new Element('div').setProperties({id: 'MultiBoxMediaObject'});
this.str = '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"';
this.str += ' width="'+this.contentObj.width+'" height="'+this.contentObj.height+'">';
this.str += '<param name="src" value="'+this.contentObj.url+'" />';
this.str += '<param name="controls" value="ImageWindow" />';
this.str += '<param name="autostart" value="true" />';
this.str += '<embed src="'+this.contentObj.url+'" controls="ImageWindow" autostart="true" width="'+this.contentObj.width+'" height="'+this.contentObj.height+'"></embed>';
this.str += '<object/>';
}
return obj;
}
});
MultiBox.implement(new Options);
MultiBox.implement(new Events);
/*************************************************************/
//legacy .extend support
Class.prototype.extend = function(properties){
properties.Extends = this;
return new Class(properties);
};
Array.implement({
copy: function(start, length){
return $A(this, start, length);
}
});
Array.alias({erase: 'remove', combine: 'merge'});
Function.extend({
bindAsEventListener: function(bind, args){
return this.create({'bind': bind, 'event': true, 'arguments': args});
}
});
Function.empty = $empty;
Hash.alias({getKeys: 'keys', getValues: 'values', has: 'hasKey', combine: 'merge'});
var Abstract = Hash;
Element.extend = Element.implement;
Elements.extend = Elements.implement;
Element.implement({
getFormElements: function(){
return this.getElements('input, textarea, select');
},
replaceWith: function(el){
el = $(el);
this.parentNode.replaceChild(el, this);
return el;
},
removeElements: function(){
return this.dispose();
}
});
Element.alias({'dispose': 'remove', 'getLast': 'getLastChild'});
Element.implement({
getText: function(){
return this.get('text');
},
setText: function(text){
return this.set('text', text);
},
setHTML: function(){
return this.set('html', arguments);
},
getHTML: function(){
return this.get('html');
},
getTag: function(){
return this.get('tag');
}
});
Event.keys = Event.Keys;
Element.implement({
setOpacity: function(op){
return this.set('opacity', op);
}
});
Object.toQueryString = Hash.toQueryString;
var XHR = new Class({
Extends: Request,
options: {
update: false
},
initialize: function(url, options){
this.parent(options);
this.url = url;
},
request: function(data){
return this.send(this.url, data || this.options.data);
},
send: function(url, data){
if (!this.check(arguments.callee, url, data)) return this;
return this.parent({url: url, data: data});
},
success: function(text, xml){
text = this.processScripts(text);
if (this.options.update) $(this.options.update).empty().set('html', text);
this.onSuccess(text, xml);
},
failure: function(){
this.fireEvent('failure', this.xhr);
}
});
var Ajax = XHR;
JSON.Remote = new Class({
options: {
key: 'json'
},
Extends: Request.JSON,
initialize: function(url, options){
this.parent(options);
this.onComplete = $empty;
this.url = url;
},
send: function(data){
if (!this.check(arguments.callee, data)) return this;
return this.parent({url: this.url, data: {json: Json.encode(data)}});
},
failure: function(){
this.fireEvent('failure', this.xhr);
}
});
Fx.implement({
custom: function(from, to){
return this.start(from, to);
},
clearTimer: function(){
return this.cancel();
},
stop: function(){
return this.cancel();
}
});
Fx.Base = Fx;
Fx.Style = function(element, property, options){
return new Fx.Tween(element, $extend({property: property}, options));
};
Element.implement({
effect: function(property, options){
return new Fx.Tween(this, $extend({property: property}, options));
}
});
Fx.Styles = Fx.Morph;
Element.implement({
effects: function(options){
return new Fx.Morph(this, options);
}
});
Native.implement([Element, Document], {
getElementsByClassName: function(className){
return this.getElements('.' + className);
},
getElementsBySelector: function(selector){
return this.getElements(selector);
}
});
Elements.implement({
filterByTag: function(tag){
return this.filter(tag);
},
filterByClass: function(className){
return this.filter('.' + className);
},
filterById: function(id){
return this.filter('#' + id);
},
filterByAttribute: function(name, operator, value){
return this.filter('[' + name + (operator || '') + (value || '') + ']');
}
});
var $E = function(selector, filter){
return ($(filter) || document).getElement(selector);
};
var $ES = function(selector, filter){
return ($(filter) || document).getElements(selector);
};
var Json = JSON;
JSON.toString = JSON.encode;
JSON.evaluate = JSON.decode;
Cookie.set = function(key, value, options){
return new Cookie(key, options).write(value);
};
Cookie.get = function(key){
return new Cookie(key).read();
};
Cookie.remove = function(key, options){
return new Cookie(key, options).dispose();
};
Fx.Scroll.implement({
scrollTo: function(y, x){
return this.start(y, x);
}
});
