window.addEvent('load', function(){
$$('.gkTab').each(function(el,i){
var module_id = el.getProperty('id');
var $G = $Gavick['gktab-'+module_id];
var tabs = el.getElements('.gkTabItem');
var items = el.getElements('.gkTabs li');
var animation = ($G['animation'] == 0) ? true : false;
var currentTab = $G['active_tab'] - 1;
var eventActivator = $G['activator'];
var amount = tabs.length;
var timer = false;
var blank = false;
var falsy_click = false;
var animation_type = $G['animation_type'];
var opacityFx = [];
// prepare scroll effect
var scrollFx = null;
if(animation_type == 'slider') {
scrollFx = new Fx.Scroll(el.getElement(".gkTabContainer1"), {duration: $G['animation_speed'], wait: 'ignore', wheelStops:false, transition: $G['animation_function']});
var sum = 0;
el.getElement('.gkTabContainer0').setStyle('width', el.getElement('.gkTabContainer2 .active').getSize().x + 'px');
tabs.each(function(tab, i){
var size = el.getElement('.gkTabContainer2 .active').getSize().x;
sum += size;
tab.setStyles({
'position' : 'absolute',
'left' : i * size + 'px',
'width' : size + 'px'
});
});
el.getElement('.gkTabContainer2').setStyle('width', sum + 'px');
}
// initial settings for opacity animation
if(animation_type == 'opacity') {
tabs.each(function(tab, i){
tab.setStyles({
'left' : 0,
'opacity' : tab.hasClass('active') ? 1 : 0
});
opacityFx[i] = new Fx.Tween(tab, {property: 'opacity', duration: $G['animation_speed'], wait: 'ignore'});
});
// hide unnecessary tabs (with delay for the NSP module
(function() {
tabs.setStyle('display', 'none');
tabs[0].setStyle('display', 'block');
}).delay(el.getElement('.gkTabContainer2').getElement('.nspMain') ? 2000 : 0);
}
// add events to tabs
items.each(function(item, i){
item.addEvent(eventActivator, function(){
if(i != currentTab) {
// specific operations for selected type of the animation
if(animation_type == 'slider') {
scrollFx.toElement(tabs[i]);
} else {
opacityFx[currentTab].start(0);
opacityFx[i].start(1);
// anim
tabs[i].setStyle('display', 'block');
//
(function(){
tabs.setStyle('display', 'none');
tabs[i].setStyle('display', 'block');
}).delay($G['animation_speed']);
}
// external trigger
if(typeof gkTabEventTrigger !== 'undefined') {
gkTabEventTrigger(i, currentTab, module_id);
}
// common operations for both types of animation
currentTab = i;
if(!falsy_click) blank = true;
else falsy_click = false;
items.removeClass('active');
item.addClass('active');
if($G['cookie_save'] == 1) Cookie.write('gktab-' + module_id, i + 1, { domain: '/', duration: 256 });
}
});
});
// add events to buttons
if(el.getElement('.gkTabButtonNext')) {
el.getElement('.gkTabButtonNext').addEvent('click', function() {
if(currentTab < amount - 1) items[currentTab + 1].fireEvent(eventActivator);
else items[0].fireEvent(eventActivator);
});
el.getElement('.gkTabButtonPrev').addEvent('click', function() {
if(currentTab > 0) items[currentTab - 1].fireEvent(eventActivator);
else items[amount - 1].fireEvent(eventActivator);
});
}
if($G["animation"] == 1){
timer = (function(){
if(!blank) {
falsy_click = true;
if(currentTab < amount - 1) items[currentTab + 1].fireEvent(eventActivator);
else items[0].fireEvent(eventActivator);
} else {
blank = false;
}
}).periodical($G["animation_interval"]);
}
});
});