var iBox = function()
{ var _pub = { close_label: 'close', load_label: 'laen', padding: 100, inherit_frames: false, fade_in_speed: 0, attribute_name: 'rel', tags_to_hide: ['select', 'embed', 'object'], default_width: 450, is_opera: navigator.userAgent.indexOf('Opera/9') != -1, is_ie: navigator.userAgent.indexOf("MSIE ") != -1, is_ie6: false , is_firefox: navigator.appName == "Netscape" && navigator.userAgent.indexOf("Gecko") != -1 && navigator.userAgent.indexOf("Netscape") == -1, is_mac: navigator.userAgent.indexOf('Macintosh') != -1, base_url: '', setPath: function(path)
{ _pub.base_url = path;}, bind: function(fn)
{ var args = []; for (var n=1; n<arguments.length; n++) args.push(arguments[n]); return function(e) { return fn.apply(this, [e].concat(args));};}, html: function(content, params)
{ if (content === undefined) return els.content; if (cancelled) return; _pub.clear(); els.wrapper.style.display = "block"; els.wrapper.style.visibility = "hidden"; els.content.style.height = 'auto'; if (typeof(content) == 'string') els.content.innerHTML = content; else els.content.appendChild(content); var elemSize = _pub.getElementSize(els.content); var pageSize = _pub.getPageSize(); if (params.can_resize === undefined) params.can_resize = true; if (params.fade_in === undefined) params.use_fade = true; if (params.width) var width = parseInt(params.width); else var width = _pub.default_width; if (params.height) var height = parseInt(params.height); else var height = elemSize.height; els.wrapper.style.width = width + 'px'; els.wrapper.style.height = height + 'px'; if (!params.height)
{ var elemSize = _pub.getElementSize(els.content); var height = elemSize.height;}
if (params.can_resize) _pub.resizeObjectToScreen(els.content, width, height, params.constrain); else
{ els.content.style.width = width + 'px'; els.content.style.height = height + 'px';}
var elemSize = _pub.getElementSize(els.content); els.wrapper.style.width = elemSize.width + 'px'; els.wrapper.style.height = elemSize.height + 'px'; _pub.reposition(); els.wrapper.style.visibility = "visible"; _pub.fadeIn(els.wrapper, 10, params.fade_in ? _pub.fade_in_speed : 0);}, clear: function()
{ els.loading.style.display = "none"; while (els.content.firstChild) els.content.removeChild(els.content.firstChild);}, show: function(text, title, params)
{ _pub.hide(); showInit(title, params, function(){ _pub.html(text, params);});}, showURL: function(url, title, params)
{ showInit(title, params, function(){ cancelled = false; for (var i=0; i<_pub.plugins.list.length; i++)
{ var plugin = _pub.plugins.list[i]; if (plugin.match(url))
{ active_plugin = plugin; plugin.render(url, params); break;}
}
});}, hide: function()
{ if (active_plugin)
{ if (active_plugin.unload) active_plugin.unload(); active_plugin = null;}
window.onscroll = null; _pub.clear(); for (var i=0; i<_pub.tags_to_hide.length; i++) showTags(_pub.tags_to_hide[i]); els.loading.style.display = 'none'; els.overlay.style.display = 'none'; els.wrapper.style.display = 'none'; _pub.fireEvent('hide');}, resizeObjectToScreen: function(obj, width, height, constrain)
{ var pagesize = _pub.getPageSize(); var x = pagesize.width - _pub.padding; var y = pagesize.height - _pub.padding; if (!height) var height = obj.height; if (!width) var width = obj.width; if (width > x)
{ if (constrain) height = height * (x/width); width = x;}
if (height > y)
{ if (constrain) width = width * (y/height); height = y;}
obj.style.width = width + 'px'; obj.style.height = height + 'px';}, reposition: function(e)
{ _pub.center(els.loading); _pub.center(els.wrapper); var pageSize = _pub.getPageSize(); var scrollPos = _pub.getScrollPos(); if (_pub.is_ie6) els.overlay.style.width = document.documentElement.clientWidth + 'px'; var height = pageSize.height + scrollPos.scrollY; els.overlay.style.height = height + 'px';}, center: function(obj)
{ var pageSize = _pub.getPageSize(); var scrollPos = _pub.getScrollPos(); var emSize = _pub.getElementSize(obj); var x = Math.round((pageSize.width - emSize.width) / 2 + scrollPos.scrollX); var y = Math.round((pageSize.height - emSize.height) / 2 + scrollPos.scrollY); obj.style.left = x + 'px'; obj.style.top = y + 'px';}, getStyle: function(obj, styleProp)
{ if (obj.currentStyle)
return obj.currentStyle[styleProp]; else if (window.getComputedStyle)
return document.defaultView.getComputedStyle(obj,null).getPropertyValue(styleProp);}, getScrollPos: function()
{ var docElem = document.documentElement; return { scrollX: document.body.scrollLeft || window.pageXOffset || (docElem && docElem.scrollLeft), scrollY: document.body.scrollTop || window.pageYOffset || (docElem && docElem.scrollTop)
};}, getPageSize: function()
{ return { width: window.innerWidth || (document.documentElement && document.documentElement.clientWidth) || document.body.clientWidth, height: window.innerHeight || (document.documentElement && document.documentElement.clientHeight) || document.body.clientHeight
};}, getElementSize: function(obj)
{ return { width: obj.offsetWidth || obj.style.pixelWidth, height: obj.offsetHeight || obj.style.pixelHeight
};}, fadeIn: function(obj, level, speed, callback)
{ if (level === undefined) var level = 100; if (speed === undefined) var speed = 70; if (!speed)
{ _pub.setOpacity(null, obj, level*10); if (callback) callback(); return;}
_pub.setOpacity(null, obj, 0); for (var i=0; i<=level; i++)
{ setTimeout(_pub.bind(_pub.setOpacity, obj, i*10), speed*i);}
if (callback) setTimeout(callback, speed*(i+1));}, setOpacity: function(e, obj, value)
{ obj.style.opacity = value/100; obj.style.filter = 'alpha(opacity=' + value + ')';}, createXMLHttpRequest: function()
{ var http; if (window.XMLHttpRequest)
{ http = new XMLHttpRequest(); if (http.overrideMimeType)
{ http.overrideMimeType('text/html');}
}
else if (window.ActiveXObject)
{ try { http = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) { try { http = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {}
}
}
if (!http)
{ alert('Cannot create XMLHTTP instance'); return false;}
return http;}, addEvent: function(obj, evType, fn)
{ if (obj.addEventListener)
{ obj.addEventListener(evType, fn, false); return true;}
else if (obj.attachEvent)
{ var r = obj.attachEvent("on"+evType, fn); return r;}
else
{ return false;}
}, addEventListener: function(name, callback)
{ if (!events[name]) events[name] = new Array(); events[name].push(callback);}, fireEvent: function(name)
{ if (events[name] && events[name].length)
{ for (var i=0; i<events[name].length; i++)
{ var args = []; for (var n=1; n<arguments.length; n++) args.push(arguments[n]); if (events[name][i](args) === false) break;}
}
}, parseQuery: function(query)
{ var params = new Object(); if (!query) return params; var pairs = query.split(/&amp;/); var end_token; for (var i=0; i<pairs.length; i++)
{ var keyval = pairs[i].split('=\''); if (!keyval || keyval.length != 2) continue; var key = unescape(keyval[0]); var val = unescape(keyval[1]); val = val.replace(/\+/g, ' '); val = val.replace(/\'$/g, ''); if (val[0] == '"') var token = '"'; else if (val[0] == "'") var token = "'"; else var token = null; if (token)
{ if (val[val.length-1] != token)
{ do
{ i += 1; val += '&'+pairs[i];}
while ((end_token = pairs[i][pairs[i].length-1]) != token)
}
val = val.substr(1, val.length-2);}
params[key] = val;}
return params;}, handleTag: function(e)
{ var t = this.getAttribute('rel'); var params = _pub.parseQuery(t.substr(5,999)); if (params.target) var url = params.target
else if (this.target && !params.ignore_target) var url = this.target; else var url = this.href; var title = this.title; if (_pub.inherit_frames && window.parent) window.parent.iBox.showURL(url, title, params); else _pub.showURL(url, title, params); return false;}, plugins: { list: new Array(), register: function(func, last)
{ if (!last)
{ _pub.plugins.list = _pub.plugins.list.concat([func],_pub.plugins.list);}
else
{ _pub.plugins.list.push(func);}
}
}
}; var cancelled = false; var active_plugin = null; var events = {}; var els = { wrapper: null, footer: null, content: null, overlay: null, loading: null
}; var create = function(elem)
{ var container = document.createElement('div'); container.id = 'ibox'; container.style.display = 'block'; els.overlay = document.createElement('div'); els.overlay.style.display = 'none'; els.overlay.id = 'ibox_overlay'; els.overlay.onclick = _pub.hide; container.appendChild(els.overlay); els.loading = document.createElement('div'); els.loading.id = 'ibox_loading'; els.loading.innerHTML = _pub.load_label; els.loading.style.display = 'none'; els.loading.onclick = function() { _pub.hide(); cancelled = true;}
container.appendChild(els.loading); els.wrapper = document.createElement('div')
els.wrapper.id = 'ibox_wrapper'; els.wrapper.style.display = 'none'; els.content = document.createElement('div'); els.content.id = 'ibox_content'; els.wrapper.appendChild(els.content); var child = document.createElement('div'); child.id = 'ibox_footer_wrapper'; var child2 = document.createElement('a'); child2.innerHTML = _pub.close_label; child2.href = 'javascript:void(0)'; child2.onclick = _pub.hide; child.appendChild(child2); els.footer = document.createElement('div'); els.footer.id = 'ibox_footer'; els.footer.innerHTML = '&nbsp;'; child.appendChild(els.footer); els.wrapper.appendChild(child); container.appendChild(els.wrapper); elem.appendChild(container); return container;}; var hideTags = function(tag)
{ var list = document.getElementsByTagName(tag); for (var i=0; i<list.length; i++)
{ if (_pub.getStyle(list[i], 'visibility') != 'hidden' && list[i].style.display != 'none')
{ list[i].style.visibility = 'hidden'; list[i].wasHidden = true;}
}
}; var showTags = function(tag)
{ var list = document.getElementsByTagName(tag); for (var i=0; i<list.length; i++)
{ if (list[i].wasHidden)
{ list[i].style.visibility = 'visible'; list[i].wasHidden = null;}
}
}; var showInit = function(title, params, callback)
{ els.loading.style.display = "block"; _pub.center(els.loading); _pub.reposition(); if (!_pub.is_firefox) var amount = 8; else var amount = 10; for (var i=0; i<_pub.tags_to_hide.length; i++) hideTags(_pub.tags_to_hide[i]); window.onscroll = _pub.reposition; els.footer.innerHTML = title || "&nbsp;"; els.overlay.style.display = "block"; els.overlay.style.backgroundImage = "url('" + _pub.base_url + "images/bg.png')"; _pub.fadeIn(els.overlay, amount, _pub.fade_in_speed, callback); _pub.fireEvent('show');}; var drawCSS = function()
{ }
var initialize = function()
{ drawCSS(); var els = document.getElementsByTagName("a"); for (var i=0; i<els.length; i++)
{ if (els[i].getAttribute(_pub.attribute_name))
{ var t = els[i].getAttribute(_pub.attribute_name); if ((t.indexOf("ibox") != -1) || t.toLowerCase() == "ibox")
{ els[i].onclick = _pub.handleTag;}
}
}
create(document.body); _pub.http = _pub.createXMLHttpRequest();}; _pub.addEvent(window, 'keypress', function(e){ if (e.keyCode == (window.event ? 27 : e.DOM_VK_ESCAPE)) { iBox.hide();}}); _pub.addEvent(window, 'resize', _pub.reposition); _pub.addEvent(window, 'load', initialize); var iBoxPlugin_Container = function()
{ var was_error = false; var original_wrapper = null; return { match: function(url)
{ return url.indexOf('#') != -1;}, unload: function()
{ if (was_error) return; var elemSrc = _pub.html().firstChild; elemSrc.style.display = 'none'; original_wrapper.appendChild(elemSrc);}, render: function(url, params)
{ was_error = false; var elemSrcId = url.substr(url.indexOf("#") + 1); var elemSrc = document.getElementById(elemSrcId); if (!elemSrc)
{ was_error = true; _pub.html(document.createTextNode('There was an error loading the document.'), params);}
else
{ original_wrapper = elemSrc.parentNode; elemSrc.style.display = 'block'; _pub.html(elemSrc, params);}
}
}
}(); _pub.plugins.register(iBoxPlugin_Container, true); var iBoxPlugin_Image = function()
{ var image_types = /\.jpg|\.jpeg|\.png|\.gif/gi; return { match: function(url)
{ return url.match(image_types);}, render: function(url, params)
{ var img = document.createElement('img'); img.onclick = _pub.hide; img.className = 'ibox_image'
img.style.cursor = 'pointer'; img.onload = function()
{ _pub.html(img, {height: img.height, width: img.width, constrain: true})
}
img.onerror = function()
{ _pub.html(document.createTextNode('There was an error loading the document.'), params);}
img.src = url;}
}
}(); _pub.plugins.register(iBoxPlugin_Image); var iBoxPlugin_YouTube = function()
{ var youtube_url = /(?:http:\/\/)?(?:www\d*\.)?(youtube\.(?:[a-z]+))\/(?:v\/|(?:watch(?:\.php)?)?\?(?:.+&)?v=)([^&]+).*/; return { match: function(url)
{ return url.match(youtube_url);}, render: function(url, params)
{ var _match = url.match(youtube_url); var domain = _match[1]; var id = _match[2]; params.width = 425; params.height = 355; params.can_resize = false; var html = '<div><object width="425" height="355"><param name="movie" value="http://www.' + domain + '/v/' + id + '"/><param name="wmode" value="transparent"/><embed src="http://www.' + domain + '/v/' + id + '" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></div>'; _pub.html(html, params);}
}
}(); _pub.plugins.register(iBoxPlugin_YouTube); var iBoxPlugin_Document = function()
{ return { match: function(url)
{ return true;}, render: function(url, params)
{ ggg_random=Math.floor(Math.random()*1001);url=url+'&amp;ids='+ggg_random; _pub.http.open('get', url, true); _pub.http.onreadystatechange = function()
{ if (_pub.http.readyState == 4)
{ if (_pub.http.status == 200 || _pub.http.status == 0)
{ _pub.html(_pub.http.responseText, params);}
else
{ _pub.html(document.createTextNode('There was an error loading the document.'), params);}
}
}
_pub.http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); _pub.http.send(null);}
};}(); _pub.plugins.register(iBoxPlugin_Document); return _pub;}(); 
