window.videoBar220ro = function(initOpt) {
    // simple videobar by alexb@activesoft
    var self = this;
    this.init = function(initOpt) {
        var mapCycle = {'short' : 7, 'medium': 15, 'long': 30};
        this.initOpt = initOpt;
        this.id = initOpt.id;
        this.SITE_BASE = initOpt.SITE_BASE || 'http://www.220.ro/';
        this.cycle = (initOpt.cycle && mapCycle[initOpt.cycle]) ? mapCycle[initOpt.cycle] : 15;//seconds
        this.offset = -1;
        if (initOpt.elementsCount && initOpt.elementsCount > 1 && initOpt.elementsCount <= 20) {
            this.step = initOpt.elementsCount;
        } else {
            this.step = (this.initOpt.orientation == 'h') ? 4 : 8;
        }

        this.pscript = document.getElementById(this.id);
        this.container = document.getElementById(this.id + '_cont');
        if (!this.pscript) return;
        if (!this.initOpt) return;
        var opts_str = '';

        for (var i in this.initOpt) {
            if (typeof this.initOpt[i] == 'string' || typeof this.initOpt[i] == 'number') {
                opts_str += '&' + i + '=' + this.initOpt[i];
            }
            if (typeof this.initOpt[i] == 'object') {
                for (var j in this.initOpt[i]) {
                    if (typeof this.initOpt[i][j] == 'string' || typeof this.initOpt[i][j] == 'number')
                    opts_str += '&' + i + '[]=' + this.initOpt[i][j];
                }
            }
        }
        var newScr = document.createElement('script');
        newScr.setAttribute('id', this.id + '_fetcher');
        newScr.setAttribute('src', this.SITE_BASE + 'index.php?module=videobar_ws' + opts_str);
        this.pscript.parentNode.insertBefore(newScr, this.pscript);

        if (!window.reg220ro) {
            window.reg220ro = [];
        }

        window.reg220ro[this.id] = this;
        if (document.getElementById('vbar_220ro_style')) return;
        var newSt = document.createElement('link');
        newSt.setAttribute('id', 'vbar_220ro_style');
        newSt.setAttribute('type', 'text/css');
        newSt.setAttribute('rel', 'stylesheet');
        newSt.setAttribute('href', this.SITE_BASE + '_templates/_default/css/videobar.css');
        this.pscript.parentNode.insertBefore(newSt, this.pscript);
    };
    this.reset = function() {
        clearInterval(this.interval);
        this.interval = 0;
        this.items = [];
        this.itemsCount = 0;
        this.offset = -1;
        this.container.parentNode.removeChild(this.container);
        delete window.reg220ro[this.id];
        self = null;
    };
    this.load = function(items) {
        if (!this.pscript) return;
        if (items) {
            this.itemsCount = items.length;
            this.items = items;

        } else {
            items = this.items;
        }
        var index = 0;

        var contvbar = '';

        if (!this.container) {
            var newEl = document.createElement('div');
            newEl.setAttribute('id', this.id + '_cont');
            newEl.setAttribute('class', 'vBar220ro_cont');
            if (this.initOpt.orientation == 'v') {
                //newEl.setAttribute('style', 'height:' + ((this.step * 89) + 15) + 'px');
            } else {
                //newEl.setAttribute('style', 'width:' + (this.step * 112) + 'px');
            }
            newEl.innerHTML = 'Retrieving data ..';
            //document.body.appendChild(newEl);
            this.pscript.parentNode.insertBefore(newEl, this.pscript);
            //self.container = document.getElementById(self.id + '_cont');
            this.container = newEl;
        }

        if (items.length > 0) {
            for (var i = 0; i < items.length; i++) {
                if (i <= this.offset) continue;
                index++;
                contvbar += '<a class="tb" href="javascript:void(0)" onclick="window.reg220ro[\'' + this.id + '\'].showEmbed(\'' + items[i].id + '\', event)" title="' + items[i].title + '"><img src="' + items[i].tb + '" alt="' + items[i].title + '"></a> ';
                if (index >= this.step || i == (this.itemsCount - 1)) {
                    this.offset = i;
                    if (this.offset >= (this.itemsCount - 1)) this.offset = -1;
                    break;
                }
            }
        } else {
            contvbar = 'Pentru configurare va rugam sa selectati sursa!';
        }
        contvbar += '<div style="clear: both;"></div><a id="copyright_vBar220ro" href="' + this.SITE_BASE +'" target="_blank">Oferit de</a>';

        this.container.innerHTML = contvbar;
        this.container.className = 'vBar220ro_cont ' + this.initOpt.orientation + '_vb220ro';
        if(!this.interval) {
            this.interval = setInterval(function() {self.load()}, self.cycle * 1000);
        }
    };
    this.makeEmbed = function(id) {
        var s = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="450" height="366" id="vBar220roPlayer">' +
        '<param name="wmode" value="opaque" />' +
        '<param name="movie" value="' + this.SITE_BASE + 'emb/' + id + '&aplay=true" />' +
        '<!--[if !IE]>--><object type="application/x-shockwave-flash" data="' + this.SITE_BASE + 'emb/' + id + '&aplay=true" width="450" height="366" wmode="opaque"></object><!--<![endif]-->' +
        '</object>';
        return s;
    };
    this.showEmbed = function(id, ev) {
        if (!this.pscript) return;
        var x = this.getScrolls().left;
        var y = this.getScrolls().top;
        x += ev.clientX;
        y += ev.clientY;

        try {ev.cancelBubble = true;} catch(e){};
        var cont = document.getElementById('vbar220ro_previewer_emb');
        var cont_parent = document.getElementById('vbar220ro_previewer');

        if (!cont) {
            var dv = document.createElement('div');
            dv.setAttribute('id', 'vbar220ro_previewer');
            dv.innerHTML = '<a class="close_vbar220" onclick="document.getElementById(\'vbar220ro_previewer\').style.display = \'none\';" href="javascript:void(0)">Inchide</a><br><div id="vbar220ro_previewer_emb">Loading ..</div>';
            this.pscript.parentNode.insertBefore(dv, this.pscript)
            cont = document.getElementById('vbar220ro_previewer_emb');
            cont_parent = document.getElementById('vbar220ro_previewer');
        }

        var boxDim = {x: 450, y: 500}
        var pos =  {x: Math.round(this.getScrolls().left + ((document.documentElement.clientWidth || document.body.clientWidth || document.clientWidth) * 0.5) - (boxDim.x/2)),
        y: Math.round(this.getScrolls().top + ((document.documentElement.clientHeight || document.body.clientHeight || document.clientHeight) * 0.5) - (boxDim.y/2))};

        cont.innerHTML = this.makeEmbed(id);

        cont_parent.style.left = pos.x + 'px';
        cont_parent.style.top = pos.y + 'px';
        cont_parent.style.display = '';

    };
    this.getPosOffset = function(el) {
        var top = 0, left = 0;
        do {
            top += el.offsetTop  || 0;
            left += el.offsetLeft || 0;
            el = el.offsetParent;
        } while (el);
        return {top: top, left: left};
    };
    this.getScrolls = function() {
        var top = window.pageYOffset || document.documentElement.scrollTop  || document.body.scrollTop;
        var left = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft;
        return {top: top, left: left};
    };
    this.init(initOpt);
}
