// ------------ Classes ----------------
Queue = function() {
this.q = Array();
this.begin = 0;
this.end = 0;
}
Queue.prototype.push = function(o) {
this.q[this.end++] = o;
return o;
}
Queue.prototype.pop = function() {
if (this.size() == 0) {
return null;
} else {
return this.q[this.begin++];
}
}
Queue.prototype.size = function() {
return (this.end - this.begin);
}
// ---------- End Classes --------------
function img(id, w, h) {
return openCenteredWindow("image/page.do?id=" + id +
"&width=" + w + "&height=" + h, "img" + id, w, h+70,
"status=yes,toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=yes"
);
}
function openCenteredWindow(url, name, width, height, parms) {
var left = Math.floor( (screen.width - width) / 2);
var top = Math.floor( (screen.height - height) / 2);
var winParms = "top=" + top + ",left=" + left + ",height=" + height + ",width=" + width;
if (parms) { winParms += "," + parms; }
var win = window.open(url, name, winParms);
if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
return win;
}
var imageRoot = 'images';
var paintingServlet = 'paintingImage.do';
var curLink = '';
var curLinkColor;
function cat(id) {
if (curLink != '') {
document.getElementById('link'+curLink).style.color = curLinkColor;
}
curLink = id;
if (id == 'home') {
curLink = '';
loadMenu(0, 0);
} else if (isNaN(id) && (id.charAt(0) == 'i')) {
loadMenu(id, 2);
var ch = id.charAt(1);
if (ch >= 1 && ch <= 9) {
loadInfo(ch);
}
} else if (id == 'contact') {
loadMenu(id, 3);
} else {
loadCategory(id);
}
if (curLink != '') {
var o = document.getElementById('link'+id);
curLinkColor = o.style.color;
o.style.color = '#FFFFFF';
}
}
function changeLayout(layout) {
changeColors(layout);
// reset page
vis('prev', false);
vis('next', false);
curPainting = null;
if (layout == 0) {
disp('imageStuff', true);
disp('iframdiv', false);
setSpacers(45,0);
loadHomeImage();
setTitle('Home');
} else if (layout == 1) {
disp('imageStuff', true);
disp('iframdiv', false);
setSpacers(30,220);
} else if (layout == 2) {
disp('imageStuff', false);
disp('iframdiv', false);
setTitle('Information');
} else if (layout == 3) {
setTitle('Contact');
loadInfo('contact');
}
}
function setTitle(title) {
document.title = 'Thomas Germano - ' + title;
}
function setSpacers(h,w) {
document.getElementById('spacer').height = h;
var txt = document.getElementById('txt');
txt.width = w;
txt.style.display = (w > 0) ? 'block' : 'none';
}
function closeMenus(id) {
var layout = -1;
if (isNaN(id)) {
if (id.charAt(0) == 'i') {
layout = 2;
} else if (id == 'contact') {
layout = 3;
}
} else if (id == 0) {
layout = 0;
} else {
layout = 1;
}
for (var i=1; i<4; ++i) {
if (i != layout && a[c[i].rootmenu].open) {
swapMenu(c[i].rootmenu);
}
}
}
function loadMenu(id, layout) {
var start = (q.size() == 0);
closeMenus(id);
setTitle(a[id].name);
swapMenu(id);
if (layout > -1 && a[id].ch.length == 0) {
q.push(Array('layout', layout));
}
if (start) {
// only kick it off if it was empty
checkQueue();
}
}
var curCategory = 0;
function loadCategory(id) {
curCategory = id;
loadMenu(id, 1);
curImageIndex = -1;
loadNextImage(1);
}
function loadInfo(num) {
disp('imageStuff', false);
disp('iframdiv', true);
document.getElementById('ifram').src = 'info.do?page=' + a['i'+num].page;
}
function swapMenu(id) {
showMenu(a[id], a[id].open ? false : true);
}
function showMenu(menu, open) {
if (menu.open == open) {
return;
}
menu.open = open;
for (var i in menu.ch) {
if (!open) {
// close open children!
showMenu(a[menu.ch[i]], open);
}
dispVert('nav'+menu.ch[i], open);
}
}
function disp(id, show) {
document.getElementById(id).style.display = show ? 'block' : 'none';
}
function vis(id, show) {
document.getElementById(id).style.visibility = show ? 'visible' : 'hidden';
}
function dispVert(id, show) {
q.push(Array(id, show));
}
var q = new Queue();
function checkQueue() {
if (q.size() == 0) {
return;
}
var o = q.pop();
if (o[0] == 'layout') {
changeLayout(o[1]);
} else {
vertLoop(o[0], o[1], 0);
}
}
var vertTimeout;
function vertLoop(id, open, i) {
var o = document.getElementById(id);
if (i == 0) {
if (open) {
o.style.visibility = open ? 'visible' : 'hidden';
o.style.display = open ? 'block' : 'none';
}
}
i = i + 3.5;
if (i <= 14) {
o.style.height = (open ? i : 14-i) + "px";
vertTimeout = setTimeout("vertLoop('"+id+"',"+open+","+i+")", 10);
} else {
if (!open) {
o.style.visibility = open ? 'visible' : 'hidden';
o.style.display = open ? 'block' : 'none';
}
checkQueue();
}
}
var curImageIndex;
var curPainting;
function loadNextImage(dir) {
curPainting = a[curCategory].p[curImageIndex+=dir];
vis('prev', curImageIndex > 0);
vis('next', curImageIndex < a[curCategory].p.length - 1);
if (curPainting) {
loadImage();
}
}
var popcorn = 0;
function zoom() {
if (curPainting) {
var src = paintingServlet + '?paintingId=' + curPainting.id + '&type=r';
var w = Number(curPainting.rw) + 20;
var h = Number(curPainting.rh) + 25;
var left = Math.floor ((screen.width - w) / 2);
var top = Math.floor ((screen.height - h) / 2);
var popwin = window.open(src ,'_newpop'+(++popcorn),
"resizable=no,scrollbars=no,width=" + w + ",height=" + h + "," +
"top=" + top + ",left=" + left);
popwin.focus();
}
}
function loadImage() {
var alt = curPainting.name;
var txt = curPainting.name + '
' + curPainting.medium + '
' + curPainting.date + ' ' + curPainting.size;
var img = document.getElementById('img');
var src = paintingServlet + '?paintingId=' + curPainting.id + '&type=t';
if (img.src.toString().indexOf(src) == -1) {
img.style.visibility = 'hidden';
img.src = src;
img.alt = alt;
img.width = curPainting.tw;
img.height = curPainting.th;
document.getElementById('txt').innerHTML = txt;
}
}
function loadHomeImage() {
var img = document.getElementById('img');
img.src = imageRoot + '/homeimg.jpg';
img.alt = '';
img.width = 204;
img.height = 202;
document.getElementById('txt').innerHTML = '';
}
function debug(o) {
var x = '';
for (var i in o) {
var txt = o[i] + '';
if (txt.substring(0,9) == '\nfunction') {
continue;
}
x += i + '=' + txt + '\n';
}
alert(x);
}
function changeColors(id) {
if (id == 0) {
document.getElementById('pagebg').style.backgroundImage = "url('images/duomo.jpg')";
} else {
document.getElementById('pagebg').style.backgroundImage = '';
bgcolor('pagebg', c[id].pagebg);
}
bgcolor('lineh1', c[id].line);
bgcolor('lineh2', c[id].line);
bgcolor('navbg', c[id].navbg);
bgcolor('line1', c[id].line1);
bgcolor('line2', c[id].line2);
bgcolor('line3', c[id].line3);
var items = document.getElementsByTagName('div');
for (var i=0; i