var SLIDETIMER = 3; var SLIDESPEED = 3; var SCROLLTIMER = 3; var SCROLLSPEED = 3; var STARTINGOPACITY = 40; var SliderBox = new Class({ Implements: [Options], numNav: new Array(), timer: null, isSliding: 0, direction: 1, slideNavActive: false, itemsAmount: 0, caption: null, captionHeight: 0, options: { slideTimer: 8000, slideFirst: true, orientation: 'horizontal', fade: false, isPaused: false, pauseOnHover: true, transitionTime: 1100, transitionType: 'cubic:out', container: null, items: null, itemNum: 0, captions: false, captionsAnimate: false, captionsLink: false, captionsLinkText: 'Read More', slideNav: null, slideNavType: 'numbers', playBtn: null, prevBtn: null, nextBtn: null }, initialize: function (options) {
    var self = this; this.setOptions(options); self.itemsAmount = self.options.items.length; if (self.options.captions == true) { var captionDIV = new Element('div', { id: 'caption' }).inject(self.options.container); var captionHeight = captionDIV.getSize().y; captionDIV.setStyle('height', 0); self.caption = captionDIV; self.captionHeight = captionHeight; }
    self.options.container.setStyle('overflow', "hidden"); if (self.itemsAmount > 1) {
        if (self.options.isPaused == false && self.options.pauseOnHover == true) { self.options.container.addEvents({ 'mouseenter': function () { self.pauseIt(); }, 'mouseleave': function () { self.pauseIt(); } }); if (self.options.captions == true) { self.caption.addEvents({ 'mousehover': function () { self.pauseIt(); } }); } }
        if (self.options.playBtn != null) { self.options.playBtn.addEvents({ 'click': function () { self.pauseIt('playBtn'); } }); }
        if (self.options.prevBtn && self.options.nextBtn) {
            self.options.prevBtn.addEvents({ 'click': function () {
                if (self.isSliding == 0) {
                    if (self.options.isPaused == false) { $clear(self.timer); self.timer = self.slideIt.periodical(self.options.slideTimer, self, null); }
                    self.direction = 0; self.slideIt();
                } 
            } 
            }); this.options.nextBtn.addEvents({ 'click': function () {
                if (self.isSliding == 0) {
                    if (self.options.isPaused == false) { $clear(self.timer); self.timer = self.slideIt.periodical(self.options.slideTimer, self, null); }
                    self.direction = 1; self.slideIt();
                } 
            } 
            });
        }
        if (self.options.slideNav != null) self.slideNavActive = true; self.options.items.each(function (el, i) {
            el.setStyle('position', "absolute"); var itemH = el.getSize().y; var itemW = el.getSize().x; if (self.options.orientation == 'vertical') { el.setStyle('top', (-1 * itemH)); el.setStyle('left', 0); } else if (self.options.orientation == 'none') { el.setStyle('left', 0); el.setStyle('top', 0); el.set('opacity', 0); } else { el.setStyle('left', (-1 * itemW)); }
            if (self.slideNavActive == true) { var firstElement = self.options.slideNav.getFirst('li'); if (firstElement && firstElement.getProperty('id') == null) firstElement.dispose(); var navHeading; if (self.options.slideNavType == 'titles' && ($(el).getElement('h3') != null || $(el).getElement('h4') != null)) { if ($(el).getElement('h3') != null) { navHeading = $(el).getElement('h3').get('html'); } else { navHeading = $(el).getElement('h4').get('html'); } } else if (self.options.slideNavType == 'thumbs' && $(el).getElement('img.thumb') != null) { navHeading = '<img src="' + $(el).getElement('img.thumb').get('src') + '" />'; } else { navHeading = (i + 1); }; var numItem = new Element('li', { id: 'num' + i }); var numLink = new Element('a', { 'html': navHeading }); numItem.adopt(numLink); self.options.slideNav.adopt(numItem); self.numNav.push(numLink); numLink.addEvents({ 'click': function () { self.numPress(i); } }); if (i == self.options.itemNum) { var initNum = self.numNav[i]; initNum.addClass('active'); } } 
        });
    } else { if (self.options.playBtn != null) self.options.playBtn.setStyle('display', "none"); if (self.options.prevBtn != null) self.options.prevBtn.setStyle('display', "none"); if (self.options.nextBtn != null) self.options.nextBtn.setStyle('display', "none"); if (self.options.slideNav != null) self.options.slideNav.setStyle('display', "none"); } 
}, start: function () {
    var self = this; if (self.itemsAmount > 0) {
        self.slideIt(self.options.itemNum, 0); if (self.itemsAmount > 1 && self.options.isPaused == false) { self.timer = self.slideIt.periodical(self.options.slideTimer, self, null); if (self.options.playBtn) { if (self.options.playBtn.get('text') != '') self.options.playBtn.set('text', 'Pause'); self.options.playBtn.addClass('active'); } }
        else { if (self.options.playBtn && self.options.playBtn.get('text') != '') self.options.playBtn.set('text', 'Play'); } 
    } 
}, slideIt: function (passedID, firstslide) {
    var self = this; var curItem = self.options.items[self.options.itemNum]; if (self.slideNavActive == true) { var curNumItem = self.numNav[self.options.itemNum]; }
    if (passedID != null) {
        if (self.options.itemNum != passedID) {
            if (self.options.itemNum > passedID) { self.direction = 0; } else { self.direction = 1; }
            self.options.itemNum = passedID;
        } 
    }
    else { self.changeIndex(); }
    var newItem = self.options.items[self.options.itemNum]; if (self.direction == 0) { var curX = self.options.container.getSize().x; var newX = (-1 * newItem.getSize().x); var curY = self.options.container.getSize().y; var newY = (-1 * newItem.getSize().y); }
    else { var curX = (-1 * self.options.container.getSize().x); var newX = newItem.getSize().x; var curY = (-1 * self.options.container.getSize().y); var newY = newItem.getSize().y; }
    if (self.slideNavActive == true) { var newNumItem = self.numNav[self.options.itemNum]; newNumItem.addClass('active'); }
    var caption_title = ''; var caption_text = ''; var caption_link = ''; var caption_link_button = ''; var caption = ''; var item_in = new Fx.Morph(newItem, { duration: self.options.transitionTime, transition: self.options.transitionType, link: 'ignore', onStart: function () {
        self.isSliding = 1; if (self.options.captions == true && self.options.items[self.options.itemNum].getElement('img').get('alt')) {
            caption_title = self.options.items[self.options.itemNum].getElement('img').get('alt'); caption_text = self.options.items[self.options.itemNum].getElement('img').get('longdesc'); if (self.options.items[self.options.itemNum].getElement('a')) { caption_link = self.options.items[self.options.itemNum].getElement('a').get('href'); caption_title = '<a href="' + caption_link + '">' + caption_title + '</a>'; caption_link_button = (self.options.captionsLink ? '<a href="' + caption_link + '" class="button_view">' + self.options.captionsLinkText + '</a>' : '') }
            caption = '<h3>' + caption_title + '</h3><p>' + (caption_text ? caption_text + '<br />' : '') + caption_link_button + '</p>'; if (self.options.captionsAnimate == true) { self.caption.set('tween', { onComplete: function () { self.caption.set('tween', { onComplete: $empty }).tween('height', self.captionHeight); self.caption.set('html', caption); } }).tween('height', 0); } else { self.caption.set('tween', { duration: 0, onComplete: function () { var instantshow = new Fx.Tween(self.caption).set('height', self.captionHeight); self.caption.set('html', caption); } }).tween('height', 0); } 
        } else { if (self.options.captions == true) self.caption.set('tween', { onComplete: $empty }).tween('height', 0); } 
    }, onComplete: function () { self.isSliding = 0; } 
    }); if (self.itemsAmount > 1) {
        if (self.options.itemNum == 0 & firstslide == 0 & self.options.slideFirst == false) { item_in.start({ 'opacity': [1, 1], 'left': [0, 0], 'top': [0, 0] }); }
        if (self.options.orientation == 'vertical') {
            if (self.options.fade == true) { item_in.start({ 'opacity': [0, 1], 'top': [newY, 0] }); }
            else { item_in.start({ 'top': [newY, 0] }); } 
        } else if (self.options.orientation == 'none') { item_in.start({ 'opacity': [0, 1] }); } else {
            if (self.options.fade == true) { item_in.start({ 'opacity': [0, 1], 'left': [newX, 0] }); }
            else { item_in.start({ 'left': [newX, 0] }); } 
        }
        if (curItem != newItem) {
            var item_out = new Fx.Morph(curItem, { duration: self.options.transitionTime, transition: self.options.transitionType, link: 'ignore' }); if (self.slideNavActive == true) { curNumItem.removeClass('active'); }
            if (self.options.orientation == 'vertical') {
                if (self.options.fade == true) { item_out.start({ 'opacity': [0], 'top': [(curY)] }); }
                else { item_out.start({ 'top': [(curY)] }); } 
            } else if (self.options.orientation == 'none') { item_out.start({ 'opacity': [1, 0] }); } else {
                if (self.options.fade == true) { item_out.start({ 'opacity': [0], 'left': [(curX)] }); }
                else { item_out.start({ 'left': [(curX)] }); } 
            } 
        } 
    };
}, pauseIt: function (pauseCaller) {
    var self = this; if (self.isSliding == 0 && self.itemsAmount > 1) {
        if (self.options.isPaused == false) { self.options.isPaused = true; $clear(self.timer); if (self.options.playBtn != null) { if (self.options.playBtn.get('text') != '') self.options.playBtn.set('text', 'Play'); self.options.playBtn.removeClass('active'); } }
        else { self.options.isPaused = false; self.slideIt.delay(600, this); self.timer = self.slideIt.periodical(self.options.slideTimer, this, null); if (self.options.playBtn != null) { if (self.options.playBtn.get('text') != '') self.options.playBtn.set('text', 'Pause'); self.options.playBtn.addClass('active'); } } 
    }
    if (pauseCaller == 'playBtn' && self.options.isPaused == true) { self.options.container.removeEvents('mouseenter'); self.options.container.removeEvents('mouseleave'); } else if (pauseCaller == 'playBtn' && self.options.isPaused == false) { self.options.container.removeEvents('mouseenter'); self.options.container.removeEvents('mouseleave'); self.options.container.addEvents({ 'mouseenter': function () { self.pauseIt(); }, 'mouseleave': function () { self.pauseIt(); } }); } else { };
}, changeIndex: function () {
    var self = this; var numItems = self.itemsAmount; if (self.direction == 1) {
        if (self.options.itemNum < (numItems - 1)) { self.options.itemNum++; }
        else { self.options.itemNum = 0; } 
    }
    else if (self.direction == 0) {
        if (self.options.itemNum > 0) { self.options.itemNum--; }
        else { self.options.itemNum = (numItems - 1); } 
    } 
}, numPress: function (theIndex) {
    var self = this; if ((self.isSliding == 0) && (self.options.itemNum != theIndex)) {
        if (self.options.isPaused == false) { $clear(self.timer); self.timer = self.slideIt.periodical(self.options.slideTimer, this, null); }
        self.slideIt(theIndex);
    } 
} 
}); function slideContent(id, prefix, timer) { var div = document.getElementById(id); var slider1 = div.parentNode; clearInterval(slider1.timer); slider1.section = parseInt(id.replace(/\D/g, '')); slider1.target = div.offsetTop; slider1.style.top = slider1.style.top || '0px'; slider1.current = slider1.style.top.replace('px', ''); slider1.direction = (Math.abs(slider1.current) > slider1.target) ? 1 : -1; slider1.style.opacity = STARTINGOPACITY * .01; slider1.style.filter = 'alpha(opacity=' + STARTINGOPACITY + ')'; slider1.timer = setInterval(function () { slideAnimate(slider1, prefix, timer) }, SLIDETIMER); }
function slideAnimate(slider1, prefix, timer) { var curr = Math.abs(slider1.current); var tar = Math.abs(slider1.target); var dir = slider1.direction; if ((tar - curr <= SLIDESPEED && dir == -1) || (curr - tar <= SLIDESPEED && dir == 1)) { slider1.style.top = (slider1.target * -1) + 'px'; slider1.style.opacity = 1; slider1.style.filter = 'alpha(opacity=100)'; clearInterval(slider1.timer); if (slider1.autoscroll) { setTimeout(function () { autoScroll(slider1.id, prefix, timer) }, timer * 1000); } } else { var pos = (dir == 1) ? parseInt(slider1.current) + SLIDESPEED : slider1.current - SLIDESPEED; slider1.current = pos; slider1.style.top = pos + 'px'; } }
function autoScroll(id, prefix, timer, restart) { var div = document.getElementById(id); div.autoscroll = (!div.autoscroll && !restart) ? false : true; if (div.autoscroll) { var sections = div.getElementsByTagName('div'); var length = sections.length; div.section = (div.section && div.section < length) ? div.section + 1 : 1; slideContent(prefix + '-' + div.section, prefix, timer); } }
function cancelAutoScroll(id) { var div = document.getElementById(id); div.autoscroll = false; }
