jQuery.fn.newsLine = function(options)
{
var defaults = {
itemsSelector: '.item',
arrowLeftSelector: '.arr-left',
arrowRightSelector: '.arr-right'
};
var settings = $.extend(false, defaults, options);
return this.each(
function()
{
var elem = $(this), api = elem.data('newsLine');
if (api) {
} else {
api = new NewsLine(this, settings);
elem.data('newsLine', api);
}
}
);
}
function NewsLine(wrapper, settings) {
this.init(wrapper, settings);
};
NewsLine.prototype = {
targetObject: false,
banners: false,
settings: false,
navPrev: false,
navNext: false,
count: 0,
current: 0,
tmout: 4000,
timer: false,
init: function(wrapper, settings) {
var context = this;
this.targetObject = $(wrapper);
this.settings = settings;
this.banners = $(this.settings.itemsSelector, this.targetObject);
this.navPrev = $(this.settings.arrowLeftSelector, this.targetObject);
this.navNext = $(this.settings.arrowRightSelector, this.targetObject);
this.current = 1;
this.count = this.banners.length;
var first = $(this.settings.itemsSelector+':first', this.targetObject);
first.show();
this.initActions();
// this.checkLimits();
/*if (this.banners.length > 1)
{
this.startRotation();
}*/
},
/*startRotation: function() {
var context = this;
this.timer = setTimeout(function(){
context.slideNext();
context.startRotation();
}, this.tmout);
},
stopRotation: function () {
if (this.timer)
clearTimeout(this.timer);
},
restartRotation: function() {
this.stopRotation();
this.startRotation();
},*/
initActions: function() {
var context = this;
this.navPrev.click(function(){
context.slidePrev();
// context.restartRotation();
return false;
});
this.navNext.click(function(){
context.slideNext();
// context.restartRotation();
return false;
});
},
slideNext: function() {
var cur = this.getCurrent();
/*if (!cur.length)
this.stopRotation();*/
var next = this.getNext();
if (cur.length && next.length)
{
cur.hide('slide', {direction: 'left', easing:'easeOutCubic'}, 1000);
next.show('slide', {direction: 'right', easing:'easeOutCubic'}, 1000);
}
},
slidePrev: function() {
var cur = this.getCurrent();
var prev = this.getPrev();
if (cur.length && prev.length)
{
cur.hide('slide', {direction: 'right', easing:'easeOutCubic'}, 1000);
prev.show('slide', {direction: 'left', easing:'easeOutCubic'}, 1000);
}
},
getCurrent: function() {
var cur = $(this.settings.itemsSelector+':visible', this.targetObject);
return cur;
},
getPrev: function() {
var cur = this.getCurrent();
var prev = cur.prev(this.settings.itemsSelector);
if (!prev.length)
prev = $(this.settings.itemsSelector+':last', this.targetObject);
return prev;
},
getNext: function() {
var cur = this.getCurrent();
var next = cur.next(this.settings.itemsSelector);
if (!next.length)
next = $(this.settings.itemsSelector+':first', this.targetObject);
return next;
},
checkLimits: function() {
if (this.current == 1)
this.navPrev.hide();
else
this.navPrev.show();
if (this.current == this.count)
this.navNext.hide();
else
this.navNext.show();
},
fireCallback: function(fn) {
if($.isFunction(fn)) {
fn.call(this);
};
//this.fireCallback(this.settings.onstart);
}
}