/**
 * User: bbrik
 * Date: 18/08/11
 */

Element.implement({
    dobraBox: function(options) {
        // Pega options
        var color;
        try {
            color = options['color'];
        } catch (e) {
            color = "white";
        }
        var imgfile;
        try {
            imgfile = options['img'];
        } catch (e) {
            imgfile = "/media/img/dobra.png";
        }
        // Cria elementos
        var content = this.get("html");
        var padding = this.getStyle("padding");
        var size = this.getSize();
        this.set("html", "");
        var fundoTopLeft = new Element("div", {
            id: "fundoTopLeft",
            styles: {
                background: color,
                position: "absolute",
                "z-index": "-1"
            }
        });
        var fundoBottom = new Element("div", {
            id: "fundoBottom",
            styles: {
                background: color,
                position: "absolute",
                "z-index": "-1"
            }
        });
        this.setStyle('position', 'relative');
        this.setStyle('padding', '0');
        this.setStyle('background-color', 'transparent');
        this.setStyle('width', size.x);
        this.setStyle('height', size.y);
        var img = Asset.image(imgfile, {
            onload: function() {
                var box = this.parentNode.parentNode;
                box.refreshDobraFundo();
            }
        });
        var dobra = new Element("div", {
            id: "dobra",
            styles: {
                "float": "right",
                margin: "0 0 10px 10px"
            }
        });
        dobra.adopt(new Elements([img]));
        var dobracontent = new Element("div", {
            id: "dobraContent",
            html: content,
            styles: {
                padding: padding
            }
        });
        this.adopt(new Elements([fundoTopLeft, fundoBottom, dobra, dobracontent]));
    },
    refreshDobraFundo: function() {
        var img = this.getElement('img');
        var dobraContent = this.getElement('#dobraContent');
        var contentSize = dobraContent.getSize();
        var thisSize = this.getSize();
        var dobraSize = img.getSize();
        var fundoTopLeft = this.getElement('#fundoTopLeft');
        var fundoBottom = this.getElement('#fundoBottom');
        fundoTopLeft.setStyles({
            left: "0",
            top: "0",
            width: (contentSize.x - dobraSize.x) + "px",
            height: dobraSize.y + "px"
        });
        fundoBottom.setStyles({
            left: "0",
            top: dobraSize.y,
            width: contentSize.x + 'px',
            height: (Math.max(contentSize.y, thisSize.y) - dobraSize.y) + 'px'
        });
        this.setStyle('height', (contentSize.y));
    },
    setLinksSelected: function(selector, q) {
        // Define links do objeto como classe selected ou não
        // q é um dicionário de parametros do link
        var links = this.getElements(selector);
        links.each(function(el) {
            var querystring = new URI(el.href).get('query');
            var query = querystring.parseQueryString();
            var f = true; // Assume
            for (var key in q) {
                if (query[key] != q[key]) {
                    f = false;
                }
            }
            if (f) {
                el.parentNode.addClass('selected');
            } else {
                el.parentNode.removeClass('selected');
            }
        });
    }
});
