// ------------ 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