##
Naming Elements

Until now we have used "setVar()" and "getVar()" to get at the contents of windows and serverFrames. These are however just shortcuts to the full addressing offered by the
. Every HTML element in a Web page is scriptable; you just have to know the naming hierarchy. The uppermost element, from which all others are derived, is the window. This is not a MapClient window (these are called "win"), but the all-compassing container for everything that is in the page.
has quite a few properties and methods, the most important of which is
. Every element in the document can be accessed by three methods:

- document.getElementById(), for individually named elements
- document.getElementByName(), for collectively named elements
- document.getElementByTagName(), for elements of a certain HTML class, like <a> or <img>

In Mapclient, this concept is extended to serverFrames and win objects. These are just decorated iframes, and an iframe has the same structure as a regular HTML page. The starting point for a serverFrame or win is "contentWindow". So, given a declaration of:

    w = new win(10,10,100,100,"my window","test.html")

the first image in that window can be reached by

    w.contentWindow.document.getElementsByTagName("img")[0].

I adapted the last example to overlay two maps in a separate window:
The window is created with a sixth parameter: an HTML file that is put in the window at creation. This file just defines two overlaid images plus the JavaScript variables to access them: img1var and img2var. From outside the window, these variables are accessed as "w.contentWindow.img1var" and "w.contentWindow.img2var". They are set as targets for the two serverFrames, and nothing else has to be changed. The "onResize()" method also submits both serverFrames. The same idea has been applied in
for setting image transparency in the browser.