(function($) {
var ver = '2.22';
var ie6 = $.browser.msie && /MSIE 6.0/.test(navigator.userAgent);

function log() {
    if (window.console && window.console.log)
        window.console.log('[xtdslider] ' + Array.prototype.join.call(arguments,''));
};

$.fn.xtdslider = function(options) {
    return this.each(function() {
        options = options || {};
        var opts = $.extend({}, $.fn.xtdslider.defaults, options || {}, $.metadata ? $cont.metadata() : $.meta ? $cont.data() : {});
        
        var t = $(this);
        var container = t.find('.scrollContainer');
        var panels = container.find(' > div.panel').css('display', 'block');

        if (opts.loading != '') {
            t.find('.' + opts.loading).remove();  
        }
        
        if (opts.horizontal) {
            panels.css({
                'float' : 'left',
                'position' : 'relative'
            });
            container.css('width', panels.get(0).offsetWidth * panels.length);
        }

        var scroll = t.find('.scroll').css('overflow', 'hidden');
                
        if (opts.createTabs) {
            var tabWrapper = '<div id="'+ opts.navClass + '-wrapper"><ul class="' + opts.navClass + '"></ul></div>';
            var tabList = '';
            
            $.each(panels, function(i, val) {
                var id = $(this).attr('id');
                tabList = tabList + '<li class="' + id + '"><a href="#' + id + '">' + $(this).attr(opts.tabName) + '</a>';
            });
            
            if(opts.tabPosition == 'top') {
                $(scroll).before(tabWrapper);
                $('ul.' + opts.navClass).append(tabList)
            } else {
                $(scroll).after(tabWrapper);
                $('ul.' + opts.navClass).prepend(tabList)
            }
        }
        
        $('.' + opts.navClass).find('a')
            .css('text-transform', opts.textTransform)
            .click(selectNav);
        
        if (window.location.hash) {
            trigger(window.location.hash.substr(1), '.' + opts.navClass);
        } else {
            $('.' + opts.navClass).find('a:first').click();
        }
                
        var offset = parseInt((opts.horizontal ? container.css('paddingTop') : container.css('paddingLeft')) || 0) * opts.offset;
        
        var scrollOptions = {
            target:         scroll,
            items:          panels,
            navigation:     opts.navClass,
            prev:           opts.prevClass,
            next:           opts.nextClass,
            axis:           opts.axis,
            duration:       opts.easeTime,
            easing:         opts.easeFunc,
            onAfter:        trigger,
            offset:         offset,
            hash:           opts.hash
        };
        
        $(t).serialScroll(scrollOptions);
        $.localScroll(scrollOptions);
        scrollOptions.duration = 1;
        $.localScroll.hash(scrollOptions);

    });
};

function selectNav() {
    $(this)
        .parents('ul:first')
            .find('a')
                .removeClass('selected')
            .end()
        .end()
        .addClass('selected');
};

function trigger(data, link) {
    var el = $(link).find('a[href$="' + data + '"]').get(0);
    selectNav.call(el);
};

// override these globally if you like (they are all optional)
$.fn.xtdslider.defaults = {
    easeFunc:       'swing',
    easeTime:       750,
    toolTip:        false,
    createTabs:     false,
    tabPosition:   'top',
    tabName:        'id',
    createArrows:   true,
    horizontal:     true,
    navClass:       'slider-nav',
    offset:         0,
    prevClass:      'img.scroll-left',
    nextClass:      'img.scroll-right',
    axis:           'xy',
    hash:           true,
    lazy:           true,
    textTransform: 'none',
    loading:        null
};

})(jQuery);

