// This file is part of Shutter Reloaded WordPress plugin. For standalone version visit http://www.laptoptips.ca/javascripts/shutter-reloaded/
if (typeof shutterOnload == 'function') {
var shutterLinks = {}, shutterSets = {};
oldonload = window.onload;
if( typeof window.onload != 'function' ) window.onload = shutterOnload;
else window.onload = function(){shutterOnload();if(oldonload){oldonload();}};
}
shutterReloaded = {
I : function (a) {
return document.getElementById(a);
},
L10n : shL10n,
imageCount : shImageCount,
textBtns : shTextBtns,
shImgDir : shImgDir,
Init : function (a) {
var L, T, shtype, i, setid, inset, shfile, shMenuPre, k, img;
for ( i = 0; i < document.links.length; i++ ) {
L = document.links[i];
shtype = L.href.slice(-4).toLowerCase();
if ( shtype != '.jpg' && shtype != '.png' && shtype != '.gif' && shtype != 'jpeg' ) continue;
if ( a == 'sh' && L.className.toLowerCase().indexOf('shutter') == -1 ) continue;
if ( a == 'lb' && L.rel.toLowerCase().indexOf('lightbox') == -1 ) continue;
if ( L.className.toLowerCase().indexOf('shutterset') != -1 )
setid = ( L.className.indexOf(' ') != -1 ) ? L.className.slice(0,L.className.indexOf(' ')) : L.className;
else if ( L.rel.toLowerCase().indexOf('lightbox[') != -1 )
setid = L.rel;
else setid = 0, inset = -1;
if( setid ) {
if ( ! shutterSets[setid] ) shutterSets[setid] = [];
inset = shutterSets[setid].push(i);
}
shfile = L.href.slice(L.href.lastIndexOf('/')+1);
T = ( L.title && L.title != shfile ) ? L.title : '';
shutterLinks[i] = {link:L.href,num:inset,set:setid,title:T}
L.onclick = new Function('shutterReloaded.Make("'+i+'");return false;');
}
if ( ! this.textBtns ) {
shMenuPre = ['close.gif','prev.gif','next.gif','resize1.gif','resize2.gif','loading.gif'];
for ( k = 0; k < shMenuPre.length; k++ ) {
img = new Image();
img.src = this.shImgDir+shMenuPre[k];
}
}
},
Make : function(ln,fs) {
var prev, next, prevlink = '', nextlink = '', previmg, nextimg, prevbtn, nextbtn, D, S, W, NB, fsarg = '', imgNum, closebtn, fsbtn, fsLink;
if ( ! this.Top ) {
if ( typeof window.pageYOffset != 'undefined' ) this.Top = window.pageYOffset;
else this.Top = (document.documentElement.scrollTop > 0) ? document.documentElement.scrollTop : document.body.scrollTop;
}
if ( typeof this.pgHeight == 'undefined' )
this.pgHeight = Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);
if ( fs ) this.FS = true;
else this.FS = null;
if ( this.resizing ) this.resizing = null;
window.onresize = new Function('shutterReloaded.Resize("'+ln+'");');
document.documentElement.style.overflowX = 'hidden';
if ( ! this.VP ) {
this._viewPort();
this.VP = true;
}
if ( ! (S = this.I('shShutter')) ) {
S = document.createElement('div');
S.setAttribute('id','shShutter');
document.getElementsByTagName('body')[0].appendChild(S);
this.hideTags();
}
if ( ! (D = this.I('shDisplay')) ) {
D = document.createElement('div');
D.setAttribute('id','shDisplay');
D.style.top = this.Top + 'px';
document.getElementsByTagName('body')[0].appendChild(D);
}
S.style.height = this.pgHeight + 'px';
var dv = this.textBtns ? ' | ' : '';
if ( shutterLinks[ln].num > 1 ) {
prev = shutterSets[shutterLinks[ln].set][shutterLinks[ln].num - 2];
prevbtn = this.textBtns ? this.L10n[0] : '
';
prevlink = ''+prevbtn+''+dv;
previmg = new Image();
previmg.src = shutterLinks[prev].link;
}
if ( shutterLinks[ln].num != -1 && shutterLinks[ln].num < (shutterSets[shutterLinks[ln].set].length) ) {
next = shutterSets[shutterLinks[ln].set][shutterLinks[ln].num];
nextbtn = this.textBtns ? this.L10n[1] : '
';
nextlink = ''+nextbtn+''+dv;
nextimg = new Image();
nextimg.src = shutterLinks[next].link;
}
closebtn = this.textBtns ? this.L10n[2] : '
';
imgNum = ( (shutterLinks[ln].num > 0) && this.imageCount ) ? ' '+this.L10n[5]+' '+shutterLinks[ln].num+' '+this.L10n[6]+' '+shutterSets[shutterLinks[ln].set].length : '';
if ( this.FS ) {
fsbtn = this.textBtns ? this.L10n[4] : '
';
} else {
fsbtn = this.textBtns ? this.L10n[3] : '
';
fsarg = ',1';
}
fsLink = ''+fsbtn+''+dv+'';
if ( ! (NB = this.I('shNavBar')) ) {
NB = document.createElement('div');
NB.setAttribute('id','shNavBar');
document.getElementsByTagName('body')[0].appendChild(NB);
}
NB.innerHTML = dv+prevlink+''+closebtn+''+dv+nextlink+fsLink+imgNum;
D.innerHTML = '
';
S.appendChild(WB);
},
hideShutter : function() {
var D, S, NB;
if ( D = this.I('shDisplay') ) D.parentNode.removeChild(D);
if ( S = this.I('shShutter') ) S.parentNode.removeChild(S);
if ( NB = this.I('shNavBar') ) NB.parentNode.removeChild(NB);
this.hideTags(true);
window.scrollTo(0,this.Top);
window.onresize = this.FS = this.Top = this.VP = null;
document.documentElement.style.overflowX = '';
},
Resize : function(ln) {
if ( this.resizing ) return;
if ( ! this.I('shShutter') ) return;
var W = this.I('shWrap');
if ( W ) W.style.visibility = 'hidden';
window.setTimeout(function(){shutterReloaded.resizing = null},500);
window.setTimeout(new Function('shutterReloaded.VP = null;shutterReloaded.Make("'+ln+'");'),100);
this.resizing = true;
},
_viewPort : function() {
var wiH = window.innerHeight ? window.innerHeight : 0;
var dbH = document.body.clientHeight ? document.body.clientHeight : 0;
var deH = document.documentElement ? document.documentElement.clientHeight : 0;
if( wiH > 0 ) {
this.wHeight = ( (wiH - dbH) > 1 && (wiH - dbH) < 30 ) ? dbH : wiH;
this.wHeight = ( (this.wHeight - deH) > 1 && (this.wHeight - deH) < 30 ) ? deH : this.wHeight;
} else this.wHeight = ( deH > 0 ) ? deH : dbH;
var deW = document.documentElement ? document.documentElement.clientWidth : 0;
var dbW = window.innerWidth ? window.innerWidth : document.body.clientWidth;
this.wWidth = ( deW > 1 ) ? deW : dbW;
},
ShowImg : function() {
var S, W, WB, D, T, TI, NB, wHeight, wWidth, capH, shHeight, maxHeight, itop, mtop, resized = 0;
S = this.I('shShutter');
if ( ! S ) return;
if ( (W = this.I('shWrap')) && W.style.visibility == 'visible' ) return;
if ( WB = this.I('shWaitBar') ) WB.parentNode.removeChild(WB);
D = this.I('shDisplay');
TI = this.I('shTopImg');
T = this.I('shTitle');
NB = this.I('shNavBar');
S.style.width = D.style.width = '';
T.style.width = (TI.width - 4) + 'px';
capH = NB.offsetHeight ? T.offsetHeight + NB.offsetHeight : 30;
shHeight = this.wHeight - 7 - capH;
if ( this.FS ) {
if ( TI.width > (this.wWidth - 10) )
S.style.width = D.style.width = TI.width + 10 + 'px';
document.documentElement.style.overflowX = '';
} else {
window.scrollTo(0,this.Top);
if ( TI.height > shHeight ) {
TI.width = TI.width * (shHeight / TI.height);
TI.height = shHeight;
resized = 1;
}
if ( TI.width > (this.wWidth - 16) ) {
TI.height = TI.height * ((this.wWidth - 16) / TI.width);
TI.width = this.wWidth - 16;
resized = 1;
}
T.style.width = (TI.width - 4) + 'px';
NB.style.bottom = '0px';
}
maxHeight = this.Top + TI.height + capH + 10;
if ( maxHeight > this.pgHeight ) S.style.height = maxHeight + 'px';
window.scrollTo(0,this.Top);
if ( (this.FS && (TI.height > shHeight || TI.width > this.wWidth)) || resized ) this.I('fullSize').style.visibility = 'visible';
itop = (shHeight - TI.height) * 0.45;
mtop = (itop > 3) ? Math.floor(itop) : 3;
D.style.top = this.Top + mtop + 'px';
NB.style.bottom = '0';
W.style.visibility = 'visible';
},
hideTags : function(arg) {
var sel = document.getElementsByTagName('select');
var obj = document.getElementsByTagName('object');
var emb = document.getElementsByTagName('embed');
var ifr = document.getElementsByTagName('iframe');
var vis = ( arg ) ? 'visible' : 'hidden';
for (i = 0; i < sel.length; i++) sel[i].style.visibility = vis;
for (i = 0; i < obj.length; i++) obj[i].style.visibility = vis;
for (i = 0; i < emb.length; i++) emb[i].style.visibility = vis;
for (i = 0; i < ifr.length; i++) ifr[i].style.visibility = vis;
}
}