--- ECHO_content/js/hl_lib.js 2004/05/18 22:30:09 1.2 +++ ECHO_content/js/hl_lib.js 2005/06/13 10:35:04 1.8 @@ -14,29 +14,31 @@ You should have received a copy of the G along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA -Authors: ROC 6.5.2004 +Authors: ROC 10.6.2005 */ +var hllibVersion = "1.0.2"; var hlAreas = new Object(); var hlTrafos = new Object(); // Area class -function Area(id, target_id, a_x, a_y, a_w, a_h, type) { +function Area(id, target_id, a_x, a_y, a_w, a_h, type, perm) { this.id = id; this.target_id = target_id; this.rect = new Rectangle(a_x, a_y, a_w, a_h); this.type = type; + this.permanent = (perm.toLowerCase() == 'true'); this.pxarea = 0; return this; } -function addArea(id, target_id, a_x, a_y, a_w, a_h, type) { - hlAreas[id] = new Area(id, target_id, a_x, a_y, a_w, a_h, type); +function addArea(id, target_id, a_x, a_y, a_w, a_h, type, perm) { + hlAreas[id] = new Area(id, target_id, a_x, a_y, a_w, a_h, type, perm); } -function parseTrafo(target_id) { +function parseTrafo(target) { // returns Transform for given target picsize - var picsize = getElementRect(getElement(target_id)); + var picsize = getElementRect(target); var trafo = new Transform(); // subtract area offset and size //trafo.concat(getTranslation(new Position(-dlArea.x, -dlArea.y))); @@ -65,21 +67,29 @@ function placeAreas() { pos.y += rect.height * 0.5 - isize.height * 0.5; moveElement(img, pos); if (img.layers) { - // N4 grow layer for border + // N4: grow layer for border img.resizeBy(2,2); } - } else { + } else if (area.type == "text") { + var txt = getElement("t."+area.id); if (img.layers) { - // N4 size transparent image for area + // for N4 we size a transparent image as the area var li = img.document.images[0]; li.width = rect.width; li.height = rect.height; } moveElement(img, rect); - if (browserType.isIEWin) { - highlightPair(area.id, false); + moveElement(txt, rect); + } else { + if (img.layers) { + // for N4 we size a transparent image as the area + var li = img.document.images[0]; + li.width = rect.width; + li.height = rect.height; } + moveElement(img, rect); } + highlightMark(area.id, area.permanent); } } // add z-index (largest value for smallest area) @@ -94,24 +104,48 @@ function placeAreas() { } } -function highlightPair(id, highlight) { - // hightlights or unhighlights the link and image of id - //alert("highlightpair: "+id+" "+highlight); - var area = hlAreas[id]; - var img = getElement("i."+id); +function highlightLink(id, highlight) { + // hightlights or unhighlights the link of id var link = getElement("a."+id); if (highlight) { + // highlight if (link.style) { link.style.backgroundColor = "#f08080"; } else if (link.layers) { link.bgColor = "#f08080"; } + } else { + // unhighlight + if (link.style) { + link.style.backgroundColor = ""; + } else if (link.layers) { + link.bgColor = null; + } + } +} + +function highlightMark(id, highlight) { + // hightlights or unhighlights the area/img of id + var area = hlAreas[id]; + var img = getElement("i."+id); + if (highlight) { + // highlight if (area.type == "arrow") { if (img.style) { img.style.borderStyle = "solid"; } else if (img.layers) { img.bgColor = "#0000ff"; } + } else if (area.type == "text") { + if (img.style) { + img.style.background = "url(area_img)"; + } else if (img.layers) { + img.background.src = "area_img"; + } + var txt = getElement("t."+id); + if (txt.style) { + txt.style.visibility = "visible"; + } } else if (area.type == "area") { if (img.style) { img.style.background = "url(area_img)"; @@ -120,17 +154,23 @@ function highlightPair(id, highlight) { } } } else { - if (link.style) { - link.style.backgroundColor = ""; - } else if (link.layers) { - link.bgColor = null; - } + // unhighlight if (area.type == "arrow") { if (img.style) { img.style.borderStyle = "none"; } else if (img.layers) { img.bgColor = null; } + } else if (area.type == "text") { + var txt = getElement("t."+id); + if (img.style) { + img.style.background = "url(trans_img)"; + } else if (img.layers) { + img.background.src = null; + } + if (txt.style) { + txt.style.visibility = "hidden"; + } } else if (area.type == "area") { if (img.style) { img.style.background = "url(trans_img)"; @@ -141,8 +181,30 @@ function highlightPair(id, highlight) { } } +function highlightPair(id, highlight) { + // hightlights or unhighlights the link and image of id + //alert("highlightpair: "+id+" "+highlight); + var area = hlAreas[id]; + highlightLink(id, highlight); + if (!area.permanent) { + highlightMark(id, highlight); + } +} + function init() { - hlTrafos["overview"] = parseTrafo("overview"); + map_init(); +} + +var elemScaler; +var dlTrafo; + +function map_init() { + // initialise baselib + base_init(); + //alert("huhu4!"); + elemScaler = getElement("overview"); + dlTrafo = parseTrafo(elemScaler); + hlTrafos["overview"] = dlTrafo; placeAreas(); return null; }