var homepath="";
window.addEvent('domready', TB_init);
TB_WIDTH = 0;
TB_HEIGHT = 0;
var TB_doneOnce = 0 ;
function TB_init(){
$$("a.smoothbox").each(function(el){el.onclick=TB_bind});
}
function TB_bind(event) {
var event = new Event(event);
event.preventDefault();
this.blur();
var caption = this.title || this.name || "";
var caption = this.name || "";
var group = this.rel || false;
TB_show(caption, this.href, group);
this.onclick=TB_bind;
return false;
}
function TB_show(caption, url, rel) {
if ( !$("TB_overlay") )
{
new Element('iframe').setProperty('id', 'TB_HideSelect').injectInside(document.body);
$('TB_HideSelect').setOpacity(0);
new Element('div').setProperty('id', 'TB_overlay').injectInside(document.body);
$('TB_overlay').setOpacity(0);
TB_overlaySize();
new Element('div').setProperty('id', 'TB_load').injectInside(document.body);
$('TB_load').innerHTML = "<img src='"+homepath+"/plugins/content/thickbox/images/loadingAnimation.gif' />";
TB_load_position();
new Fx.Style('TB_overlay', 'opacity',{duration: 400, transition: Fx.Transitions.sineInOut}).start(0,0.6);
}
if ( !$("TB_load") )
{
new Element('div').setProperty('id', 'TB_load').injectInside(document.body);
$('TB_load').innerHTML = "<img src='"+homepath+"/plugins/content/thickbox/images/loadingAnimation.gif' />";
TB_load_position();
}
if ( !$("TB_window") )
{
new Element('div').setProperty('id', 'TB_window').injectInside(document.body);
$('TB_window').setOpacity(0);
}
$("TB_overlay").onclick=TB_remove;
window.onscroll=TB_positionEffect;
var baseURL = url.match(/(.+)?/)[1] || url;
var imageURL = /\.(jpe?g|png|gif|bmp)/gi;
if ( baseURL.match(imageURL) ) {
var dummy = { caption: "", url: "", html: "" };
var prev = dummy,
next = dummy,
imageCount = "";
if ( rel ) {
function getInfo(image, id, label) {
return {
caption: image.title,
url: image.href,
html: "<span id='TB_" + id + "'>&nbsp;&nbsp;<a href='#'>" + label + "</a></span>"
}
}
var imageGroup = [] ;
$$("a.smoothbox").each(function(el){
if (el.rel==rel) {imageGroup[imageGroup.length] = el ;}
})
var foundSelf = false;
for (var i = 0; i < imageGroup.length; i++) {
var image = imageGroup[i];
var urlTypeTemp = image.href.match(imageURL);
if ( image.href == url ) {
foundSelf = true;
imageCount = "Image " + (i + 1) + " of "+ (imageGroup.length);
} else {
if ( foundSelf ) {
next = getInfo(image, "next", "Next &gt;");
break;
} else {
prev = getInfo(image, "prev", "&lt; Prev");
}
}
}
}
imgPreloader = new Image();
imgPreloader.onload = function() {
imgPreloader.onload = null;
var x = window.getWidth() - 150;
var y = window.getHeight() - 150;
var imageWidth = imgPreloader.width;
var imageHeight = imgPreloader.height;
if (imageWidth > x) {
imageHeight = imageHeight * (x / imageWidth);
imageWidth = x;
if (imageHeight > y) {
imageWidth = imageWidth * (y / imageHeight);
imageHeight = y;
}
} else if (imageHeight > y) {
imageWidth = imageWidth * (y / imageHeight);
imageHeight = y;
if (imageWidth > x) {
imageHeight = imageHeight * (x / imageWidth);
imageWidth = x;
}
}
TB_WIDTH = imageWidth + 30;
TB_HEIGHT = imageHeight + 60;
$("TB_window").innerHTML += "<a href='' id='TB_ImageOff' title='Close'><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='TB_caption'>"+caption+"<div id='TB_secondLine'>" + imageCount + prev.html + next.html + "</div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a></div>";
$("TB_closeWindowButton").onclick = TB_remove;
function buildClickHandler(image) {
return function() {
$("TB_window").remove();
new Element('div').setProperty('id', 'TB_window').injectInside(document.body);
TB_show(image.caption, image.url, rel);
return false;
};
}
var goPrev = buildClickHandler(prev);
var goNext = buildClickHandler(next);
if ( $('TB_prev') ) {
$("TB_prev").onclick = goPrev;
}
if ( $('TB_next') ) {
$("TB_next").onclick = goNext;
}
document.onkeydown = function(event) {
var event = new Event(event);
switch(event.code) {
case 27:
TB_remove();
break;
case 190:
if( $('TB_next') ) {
document.onkeydown = null;
goNext();
}
break;
case 188:
if( $('TB_prev') ) {
document.onkeydown = null;
goPrev();
}
break;
}
}
$("TB_ImageOff").onclick = TB_remove;
TB_position();
TB_showWindow();
}
imgPreloader.src = url;
} else {
var queryString = url.match(/\?(.+)/)[1];
var params = TB_parseQuery( queryString );
TB_WIDTH = (params['width']*1) + 30;
TB_HEIGHT = (params['height']*1) + 40;
var ajaxContentW = TB_WIDTH - 30,
ajaxContentH = TB_HEIGHT - 45;
var dummy = { caption: "", url: "", html: "" };
var prev = dummy,
next = dummy,
imageCount = "";
if ( rel ) {
function getInfo(image, id, label) {
return {
caption: image.name,
url: image.href,
html: "<span id='TB_" + id + "'>&nbsp;&nbsp;<a href='#'>" + label + "</a></span>"
}
}
var imageGroup = [] ;
$$("a.smoothbox").each(function(el){
if (el.rel==rel) {imageGroup[imageGroup.length] = el ;}
})
var foundSelf = false;
for (var i = 0; i < imageGroup.length; i++) {
var image = imageGroup[i];
var urlTypeTemp = image.href.match(imageURL);
if ( image.href == url ) {
foundSelf = true;
imageCount = "Page " + (i + 1) + " of "+ (imageGroup.length);
} else {
if ( foundSelf ) {
next = getInfo(image, "next", "Next &gt;");
break;
} else {
prev = getInfo(image, "prev", "&lt; Prev");
}
}
}
}
if(url.indexOf('TB_iframe') != -1){
urlNoQuery = url.split('TB_');
$("TB_window").innerHTML += "<div id='TB_title'><div id='TB_ajaxWindowTitle'><img class='weblink' src='" + homepath + "/images/M_images/weblink.png' border='0' alt='' />"+caption+"<div id='TB_secondLine'>" + imageCount + prev.html + next.html + "</div></div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close </a></div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' onload='TB_showWindow()'> </iframe>"; // gallery enabled
}else{
$("TB_window").innerHTML += "<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"<div id='TB_secondLine'>" + imageCount + prev.html + next.html + "</div></div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'>close </a></div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>";
}
$("TB_closeWindowButton").onclick = TB_remove;
function buildClickHandler(image) {
return function() {
$("TB_window").remove();
new Element('div').setProperty('id', 'TB_window').injectInside(document.body);
TB_show(image.caption, image.url, rel);
return false;
};
}
var goPrev = buildClickHandler(prev);
var goNext = buildClickHandler(next);
if ( $('TB_prev') ) {
$("TB_prev").onclick = goPrev;
}
if ( $('TB_next') ) {
$("TB_next").onclick = goNext;
}
if(url.indexOf('TB_inline') != -1){
$("TB_ajaxContent").innerHTML = ($(params['inlineId']).innerHTML);
TB_position();
TB_showWindow();
}else if(url.indexOf('TB_iframe') != -1){
TB_position();
if(frames['TB_iframeContent'] == undefined){//be nice to safari
$(document).keyup( function(e){ var key = e.keyCode; if(key == 27){TB_remove()} });
TB_showWindow();
}
}else{
var handlerFunc = function(){
TB_position();
TB_showWindow();
};
var myRequest = new Ajax(url, {method: 'get',update: $("TB_ajaxContent"),onComplete: handlerFunc}).request();
}
}
window.onresize=function(){ TB_position(); TB_load_position(); TB_overlaySize();}
document.onkeyup = function(event){
var event = new Event(event);
if(event.code == 27){
TB_remove();
}
}
}
function TB_showWindow(){
//$("TB_load").remove();
//$("TB_window").setStyles({display:"block",opacity:'0'});
if (TB_doneOnce==0) {
TB_doneOnce = 1;
var myFX = new Fx.Style('TB_window', 'opacity',{duration: 250, transition: Fx.Transitions.sineInOut, onComplete:function(){if ($('TB_load')) { $('TB_load').remove();}} }).start(0,1);
} else {
$('TB_window').setStyle('opacity',1);
if ($('TB_load')) { $('TB_load').remove();}
}
}
function TB_remove() {
$("TB_overlay").onclick=null;
document.onkeyup=null;
document.onkeydown=null;
if ($('TB_imageOff')) $("TB_imageOff").onclick=null;
if ($('TB_closeWindowButton')) $("TB_closeWindowButton").onclick=null;
if ( $('TB_prev') ) { $("TB_prev").onclick = null; }
if ( $('TB_next') ) { $("TB_next").onclick = null; }
new Fx.Style('TB_window', 'opacity',{duration: 250, transition: Fx.Transitions.sineInOut, onComplete:function(){$('TB_window').remove();} }).start(1,0);
new Fx.Style('TB_overlay', 'opacity',{duration: 400, transition: Fx.Transitions.sineInOut, onComplete:function(){$('TB_overlay').remove();} }).start(0.6,0);
window.onscroll=null;
window.onresize=null;
$('TB_HideSelect').remove();
TB_init();
TB_doneOnce = 0;
return false;
}
function TB_position() {
$("TB_window").setStyles({width: TB_WIDTH+'px',
left: (window.getScrollLeft() + (window.getWidth() - TB_WIDTH)/2)+'px',
top: (window.getScrollTop() + (window.getHeight() - TB_HEIGHT)/2)+'px'});
}
function TB_positionEffect() {
new Fx.Styles('TB_window', {duration: 75, transition: Fx.Transitions.sineInOut}).start({
'left':(window.getScrollLeft() + (window.getWidth() - TB_WIDTH)/2)+'px',
'top':(window.getScrollTop() + (window.getHeight() - TB_HEIGHT)/2)+'px'});
}
function TB_overlaySize(){
$("TB_overlay").setStyles({"height": '0px', "width": '0px'});
$("TB_HideSelect").setStyles({"height": '0px', "width": '0px'});
$("TB_overlay").setStyles({"height": window.getScrollHeight()+'px', "width": window.getScrollWidth()+'px'});
$("TB_HideSelect").setStyles({"height": window.getScrollHeight()+'px',"width": window.getScrollWidth()+'px'});
}
function TB_load_position() {
if ($("TB_load")) { $("TB_load").setStyles({left: (window.getScrollLeft() + (window.getWidth() - 56)/2)+'px', top: (window.getScrollTop() + ((window.getHeight()-20)/2))+'px',display:"block"}); }
}
function TB_parseQuery ( query ) {
if( !query )
return {};
var params = {};
var pairs = query.split(/[;&]/);
for ( var i = 0; i < pairs.length; i++ ) {
var pair = pairs[i].split('=');
if ( !pair || pair.length != 2 )
continue;
params[unescape(pair[0])] = unescape(pair[1]).replace(/\+/g, ' ');
}
return params;
}

