Annotation of ECHO_content/js/hl_lib.js, revision 1.1.1.1
1.1 casties 1: /* Copyright (C) 2004 itgroup MPIWG
2:
3: This program is free software; you can redistribute it and/or
4: modify it under the terms of the GNU General Public License
5: as published by the Free Software Foundation; either version 2
6: of the License, or (at your option) any later version.
7:
8: This program is distributed in the hope that it will be useful,
9: but WITHOUT ANY WARRANTY; without even the implied warranty of
10: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11: GNU General Public License for more details.
12:
13: You should have received a copy of the GNU General Public License
14: along with this program; if not, write to the Free Software
15: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
16:
17: Authors: ROC 6.5.2004
18: */
19:
20: var hlAreas = new Object();
21: var hlTrafos = new Object();
22:
23: // Area class
24: function Area(id, target_id, a_x, a_y, a_w, a_h, type) {
25: this.id = id;
26: this.target_id = target_id;
27: this.rect = new Rectangle(a_x, a_y, a_w, a_h);
28: this.type = type;
29: this.pxarea = 0;
30: return this;
31: }
32:
33: function addArea(id, target_id, a_x, a_y, a_w, a_h, type) {
34: hlAreas[id] = new Area(id, target_id, a_x, a_y, a_w, a_h, type);
35: }
36:
37: function parseTrafo(target_id) {
38: // returns Transform for given target picsize
39: var picsize = getElementSize(target_id);
40: var trafo = new Transform();
41: // subtract area offset and size
42: //trafo.concat(getTranslation(new Position(-dlArea.x, -dlArea.y)));
43: //trafo.concat(getScale(new Size(1/dlArea.width, 1/dlArea.height)));
44: // scale to screen size
45: trafo.concat(getScale(picsize));
46: trafo.concat(getTranslation(picsize));
47: return trafo;
48: }
49:
50: function placeAreas() {
51: // positions all area-images
52: var maxsize = 0;
53: for (var a in hlAreas) {
54: var area = hlAreas[a];
55: var trafo = hlTrafos[area.target_id];
56: if (trafo) {
57: var rect = trafo.transform(area.rect);
58: area.pxarea = rect.getArea();
59: maxsize = Math.max(maxsize, area.pxarea);
60: if (area.type == "area") {
61: moveElement("i."+area.id, rect);
62: } else {
63: moveElement("i."+area.id, rect.getPosition());
64: }
65: }
66: }
67: // add z-index (largest value for smallest area)
68: for (a in hlAreas) {
69: area = hlAreas[a];
70: var elem = getElement("i."+area.id);
71: if (elem.style) {
72: elem.style.zIndex = Math.round(maxsize - area.pxarea);
73: }
74: }
75: }
76:
77: function highlightPair(id, highlight) {
78: // hightlights or unhighlights the link and image of id
79: var area = hlAreas[id];
80: var img = getElement("i."+id);
81: var link = getElement("a."+id);
82: if (highlight) {
83: link.style.backgroundColor = "#f08080";
84: if (area.type == "arrow") {
85: img.style.borderStyle = "solid";
86: } else if (area.type == "area") {
87: img.style.background = "url(area_img)";
88: }
89: } else {
90: link.style.backgroundColor = "";
91: if (area.type == "arrow") {
92: img.style.borderStyle = "none";
93: } else if (area.type == "area") {
94: img.style.background = "none";
95: }
96: }
97: }
98:
99: function init() {
100: hlTrafos["overview"] = parseTrafo("overview");
101: placeAreas();
102: return null;
103: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>