﻿/* Javascript by Daniel Cohen Gindi (c) danielgindi@gmail.com 054-5655765 */
/* Version: 2011-03-30 */

function divChanger(options) {
    return this.init(options);
}

divChanger.prototype = {
    init: function(options) {
        var self = this;
        var o = self.o = dgTools.extend({}, 'items itemTag itemClass delay centerInParent currentIndex animationDuration animationFps', options, { currentIndex: 0, itemTag: 'img', delay: 3000, centerInParent: false, animationDuration: 500, animationFps: 50 });
        o.itemTag = (o.itemTag || '').toUpperCase();

        var el = dgTools.$(o.items);
        if (!el) return null;

        o.items = [];
        var els = el.getElementsByTagName(o.itemTag);
        for (var i = 0; i < els.length; i++) {
            if (!!o.itemClass && els[i].className != o.itemClass) continue;
            o.items.push(els[i]);
        }
        els = null;

        for (var idx = 0; idx < o.items.length; idx++) {
            if (o.centerInParent) {
                var oo = o.items[idx];
                var p = oo.parentNode;
                var b = dgTools.Elm.build('table', ['style', 'position:absolute;left:0px;top:0px;border-collapse:collapse;border:0;margin:0;padding:0;width:100%;height:100%;overflow:hidden;'],
          		    dgTools.Elm.build('tbody', [],
          			    dgTools.Elm.build('tr', ['style', 'height:100%;vertical-align:middle;'],
          				    dgTools.Elm.build('td', ['style', 'width:100%;height:100%;overflow:hidden;vertical-align:middle;text-align:center;'],
          					    o.items[idx]
          				    )
          			    )
          		    )
          	    );
                b.original = oo;
                p.appendChild(b);
                o.items[idx] = b;
            }
            if (idx != 0) { dgTools.Elm.hide(o.items[idx]); }
        }

        function isImageLoaded(img) {
            if (!img) return false;
            if (typeof img.complete != 'undefined' && !img.complete) {
                return false;
            };
            if (typeof img.naturalWidth != 'undefined' && img.naturalWidth == 0) {
                return false;
            };
            return true;
        };
        function changeImage() {
            var nextElIdx = o.currentIndex + 1;
            if (nextElIdx >= o.items.length) nextElIdx = 0;
            var nextEl = o.items[nextElIdx];
            var curEl = o.items[o.currentIndex];
            dgTools.Elm.show(dgTools.Elm.setOpacity(nextEl, 0));
            curEl.style.zIndex = 1;
            nextEl.style.zIndex = 0;
            dgTools.easyAnimate(curEl, null, { opacity: 0 }, o.animationDuration, o.animationFps, function() {
                dgTools.Elm.hide(curEl);
            })
            dgTools.easyAnimate(nextEl, null, { opacity: 1 }, o.animationDuration, o.animationFps, function() {
                o.currentIndex = nextElIdx;
            })
            setTimeout(changeImage.bind(self), o.delay + o.animationDuration);
        };

        if (o.items.length > 1) {
            setTimeout(changeImage.bind(self), o.delay);
        }
    }
}
