﻿/*Created 6/10/09 wojan*/
(function($) {
    $.fn.reference = function(options) {
        var rcount = 0;
        //for each references found
        this.each(function() {
            rcount++;
            var references = $(this);
            references.size = { width: options.width || references.width(), height: options.height || references.height() }
            var controls = references.find('.references-controls');
            references.css({
                height: references.size.width - controls.height()
            });
            wrapAndResize(references);
            references.show();

            setTimeout(function() {
                var isEdit = references.attr('isEdit');
                if (isEdit == "False") {
                    references.autoslide(references);
                }
            }, 15000);
        });

        $.fn.autoslide = function(references) {
            setTimeout(function() {
                references.navigate(references);
                references.autoslide(references);

            }, 15000);
        }

        $.fn.navigate = function(references, dir) {
            dir = !dir ? 1 : dir;
            var options = {
                slidecount: parseInt(references.attr('slidecount')),
                currentIndex: parseInt(references.attr('currentIndex')),
                margin: references.size.width
            }

            var direction = '+=';

            if (options.currentIndex == options.slidecount && dir != -1) {
                options.newIndex = 1;
                options.steps = options.slidecount - 1;
            } else if (options.currentIndex == 1 && dir == -1) {
                options.newIndex = options.slidecount;
                options.steps = options.slidecount - 1;
                direction = '-=';
            } else if (dir > 0) {
                options.newIndex = options.currentIndex + 1;
                options.steps = 1;
                direction = '-=';
            } else {
                options.newIndex = options.currentIndex - 1;
                options.steps = 1;
            }

            references.animate({ marginLeft: direction + (options.margin * options.steps) }, 500);

            references.attr('currentIndex', options.newIndex);
        };

        function wrapAndResize(references) {
            var listEls = references.children();
            //wrap in div
            references.container = $('<div id="references' + rcount + '" class="references-container">')
                          .css({ height: references.size.height, width: references.size.width, margin: '0', padding: '0', overflow: 'hidden', position: 'relative' });
            references.wrap(references.container);
            references.container = references.parent();
            references.width(listEls.length * references.size.width);
            //<div class="references-controls">  </div>
            var controls = $('<table class="references-controls">');
            var isEdit = references.attr('isEdit');
            if (isEdit == "True") {
                controls.html('<tr><td class="references-controls-add"></td><td class="references-controls-nav"><img src="/images/left_btn.gif" class="references-prev" /><img src="/images/right_btn.gif" class="references-next" /></td></tr>');
            }
            else {
                controls.html('<tr><td>&nbsp;</td><td class="references-controls-nav"><img src="/images/left_btn.gif" class="references-prev" /><img src="/images/right_btn.gif" class="references-next" /></td></tr>');
            }
            references.container.parent().append(controls);
            references.controls = references.container.parent().find('.references-controls');
            references.controls.find('.references-prev').click(function() {
                references.navigate(references, -1);
            });
            references.controls.find('.references-next').click(function() {
                references.navigate(references);
            });
            var r = references.attr('r');
            var add = references.controls.find('.references-controls-add');
            if (r != 0) {
                add.click(function() {
                    openRef();
                });
            } else add.attr('class', '')
            //equalize the li height and width

            references.attr('slidecount', listEls.length);
            references.attr('currentIndex', 1);
            var i = 0;

            var controls = references.find('.references-controls');
            listEls.each(function() {
                totalWidth = references.size.width;
                var li = $(this);
                li.css({
                    height: references.size.height - 20,
                    width: references.size.width
                });
                li.click(function() {
                    references.navigate(references);
                })
                i++;
            });
        }

    };
})(jQuery);