var Shadowbox = {};
Shadowbox.lib = function(){
var styleCache = {};
var camelRe = /(-[a-z])/gi;
var camelFn = function(m, a){
return a.charAt(1).toUpperCase();
};
var toCamel = function(style){
var camel;
if(!(camel = styleCache[style])){
camel = styleCache[style] = style.replace(camelRe, camelFn);
}
return camel;
};
var view = document.defaultView;
var alphaRe = /alpha\([^\)]*\)/gi;
var setOpacity = function(el, opacity){
var s = el.style;
if(window.ActiveXObject){ // IE
s.zoom = 1; // give "layout"
s.filter = (s.filter || '').replace(alphaRe, '') +
(opacity == 1 ? '' : ' alpha(opacity=' + (opacity * 100) + ')');
}else{
s.opacity = opacity;
}
};
return {
adapter: 'standalone',
getStyle: function(){
return view && view.getComputedStyle
? function(el, style){
var v, cs, camel;
if(style == 'float') style = 'cssFloat';
if(v = el.style[style]) return v;
if(cs = view.getComputedStyle(el, '')){
return cs[toCamel(style)];
}
return null;
}
: function(el, style){
var v, cs, camel;
if(style == 'opacity'){
if(typeof el.style.filter == 'string'){
var m = el.style.filter.match(/alpha\(opacity=(.+)\)/i);
if(m){
var fv = parseFloat(m[1]);
if(!isNaN(fv)) return (fv ? fv / 100 : 0);
}
}
return 1;
}else if(style == 'float'){
style = 'styleFloat';
}
var camel = toCamel(style);
if(v = el.style[camel]) return v;
if(cs = el.currentStyle) return cs[camel];
return null;
};
}(),
setStyle: function(el, style, value){
if(typeof style == 'string'){
var camel = toCamel(style);
if(camel == 'opacity'){
setOpacity(el, value);
}else{
el.style[camel] = value;
}
}else{
for(var s in style){
this.setStyle(el, s, style[s]);
}
}
},
get: function(el){
return typeof el == 'string' ? document.getElementById(el) : el;
},
remove: function(el){
el.parentNode.removeChild(el);
},
getTarget: function(e){
var t = e.target ? e.target : e.srcElement;
return t.nodeType == 3 ? t.parentNode : t;
},
getPageXY: function(e){
var x = e.pageX || (e.clientX +
(document.documentElement.scrollLeft || document.body.scrollLeft));
var y = e.pageY || (e.clientY +
(document.documentElement.scrollTop || document.body.scrollTop));
return [x, y];
},
preventDefault: function(e){
if(e.preventDefault){
e.preventDefault();
}else{
e.returnValue = false;
}
},
keyCode: function(e){
return e.which ? e.which : e.keyCode;
},
addEvent: function(el, name, handler){
if(el.addEventListener){
el.addEventListener(name, handler, false);
}else if(el.attachEvent){
el.attachEvent('on' + name, handler);
}
},
removeEvent: function(el, name, handler){
if(el.removeEventListener){
el.removeEventListener(name, handler, false);
}else if(el.detachEvent){
el.detachEvent('on' + 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;
}
}
};
}();