if(typeof MooTools == 'undefined'){
    // Note: requires MooTools 1.2 Core
    throw 'Unable to load Shadowbox, MooTools library not found';
}

// create the Shadowbox object first
var Shadowbox = {};

var alphaRe;

Shadowbox.lib = function(){

    alphaRe = /alpha\([^\)]*\)/gi;

		var setOpacity = function(el, opacity){
        var s = el.style;
        if(window.ActiveXObject){ // IE
            s.zoom = 1;
            s.filter = (s.filter || '').replace(alphaRe, '') +
                       (opacity == 1 ? '' : ' alpha(opacity=' + opacity * 100 + ')');
        }else{
            s.opacity = opacity;
        }
    };

    return {

        adapter: 'mootools',

        getStyle: function(el, style){
            return $(el).getStyle(style);
        },

        setStyle: function(el, style, value){
            el = $(el);
            if(typeof style != 'object'){
                var o = {};
                o[style] = value;
                style = o;
            }
            for(var s in style){
                if(s == 'opacity'){
                    setOpacity(el, style[s]);
                }else{
                    el.setStyle(s, style[s]);
                }
            }
        },

        get: function(el){
            return $(el);
        },

        remove: function(el){
            el.parentNode.removeChild(el);
        },

        getTarget: function(e){
            return e.target;
        },

        getPageXY: function(e){
            return [e.page.x, e.page.y];
        },

        preventDefault: function(e){
            e.preventDefault();
        },

        keyCode: function(e){
            return e.code;
        },

        addEvent: function(el, name, handler){
            $(el).addEvent(name, handler);
        },

        removeEvent: function(el, name, handler){
            $(el).removeEvent(name, handler);
        },

        append: function(el, html){
            if(el.insertAdjacentHTML){
                el.insertAdjacentHTML('BeforeEnd', html);
            }else if(el.lastChild){
                var range = el.ownerDocument.createRange();
                range.setStartAfter(el.lastChild);
                var frag = range.createContextualFragment(html);
                el.appendChild(frag);
            }else{
                el.innerHTML = html;
            }
        }

    };

}();
