brade%netscape.com 0339e92841 submitted by Dan Haddix and Brian King
git-svn-id: svn://10.0.0.236/trunk@58607 18797224-902f-48f8-a5cc-f745e15eee43
2000-01-25 15:44:28 +00:00

236 lines
7.1 KiB
JavaScript

/*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1999 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
* Dan Haddix (dan6992@hotmail.com)
*/
var tHide = false;
var highCont = false;
var imageElement;
var mapName;
var imageMap;
var oldMap = false;
function Startup(){
if (!InitEditorShell())
return;
dump("EditorShell found for image map dialog\n");
initDialog();
}
function initDialog(){
//Check to make sure selected element is an image
imageElement = editorShell.GetSelectedElement("img");
if (!imageElement) //If not an image close window
window.close();
//Set iframe pointer
frameDoc = window.frames[0].document;
//Fill button array
buttonArray[0] = document.getElementById("pointer");
buttonArray[1] = document.getElementById("rect");
buttonArray[2] = document.getElementById("cir");
buttonArray[3] = document.getElementById("poly");
//Create marquee
marquee = frameDoc.createElement("div");
marquee.setAttribute("id", "marquee");
frameDoc.body.appendChild(marquee);
//Create background div
bgDiv = frameDoc.createElement("div");
bgDiv.setAttribute("id", "bgDiv");
frameDoc.body.appendChild(bgDiv);
//Place Image
newImg = frameDoc.createElement("img");
newImg.setAttribute("src", imageElement.getAttribute("src"));
newImg.setAttribute("width", imageElement.getAttribute("width"));
newImg.setAttribute("height", imageElement.getAttribute("height"));
newImg.setAttribute("id", "mainImg");
frameDoc.getElementById("bgDiv").appendChild(newImg);
//Recreate Image Map if it exists
if (imageElement.getAttribute("usemap") != "")
recreateMap();
}
function exitImageMap(){
dump("exit called");
window.close();
}
function hideToolbar(){
// Check to see if toolbar is already hidden
if (tHide){
// If it is show it
document.getElementById("toolbar").setAttribute("collapsed", "false");
// Set the menu items text back to "Hide Toolbar"
document.getElementById("view_hidetoolbar").setAttribute("value", "Hide Toolbar");
tHide = false
}
else{
// If not hide it
document.getElementById("toolbar").setAttribute("collapsed", "true");
//Set the menu items text to "Show Toolbar"
document.getElementById("view_hidetoolbar").setAttribute("value", "Show Toolbar");
tHide = true;
}
}
function highContrast(){
imgEl = frameDoc.getElementById("mainImg");
if (highCont){
imgEl.style.opacity = "100%";
highCont = false;
}
else{
imgEl.style.opacity = "10%";
highCont = true;
}
}
function recreateMap(){
map = imageElement.getAttribute("usemap");
map = map.substring(1, map.length);
mapCollection = imageElement.ownerDocument.getElementsByName(map);
areaCollection = mapCollection[0].childNodes;
var len = areaCollection.length;
var i=0;
for(i=0; i<len; i++){
area = areaCollection[i];
shape = area.getAttribute("shape");
shape = shape.toLowerCase();
coords = area.getAttribute("coords");
href = area.getAttribute("href");
//target = area.getAttribute("target");
//title = null; //area.getAttribute("title");
if (shape == "rect")
Rect(coords, href, null, null, true);
else if (shape == "circle")
Circle(coords, href, null, null, true);
else
Poly(coords, href, null, null, true);
}
imageElement.ownerDocument.removeChild(mapCollection[0]);
}
function finishMap(){
spots = frameDoc.getElementsByName("hotspot");
var len = spots.length;
createMap();
if (len >= 1){
var i=0;
for(i=0; i<len; i++){
dump(len+"\n");
curSpot = spots[i];
if (curSpot.getAttribute("class") == "rect")
createRect(curSpot);
else if (curSpot.getAttribute("class") == "cir")
createCir(curSpot);
else
createPoly(curSpot);
}
imageElement.setAttribute("usemap", ("#"+mapName));
editorShell.InsertElement(imageMap, false);
}
exitImageMap();
}
function createMap(){
imageMap = editorShell.CreateElementWithDefaults("map");
mapName = imageElement.getAttribute("src");
mapName = mapName.substring(mapName.lastIndexOf("/"), mapName.length);
mapName = mapName.substring(mapName.lastIndexOf("\\"), mapName.length);
mapName = mapName.substring(1, mapName.indexOf("."));
imageMap.setAttribute("name", mapName);
}
function createRect(which){
newRect = document.createElement("area");
newRect.setAttribute("shape", "rect");
coords = parseInt(which.style.left)+","+parseInt(which.style.top)+","+(parseInt(which.style.left)+parseInt(which.style.width))+","+(parseInt(which.style.top)+parseInt(which.style.height));
newRect.setAttribute("coords", coords);
if (which.getAttribute("href") != "")
newRect.setAttribute("href", which.getAttribute("href"));
else{
newRect.setAttribute("nohref", "");
}
newRect.removeAttribute("id");
imageMap.appendChild(newRect);
dump("rect created\n");
}
function createCir(which){
newCir = document.createElement("area");
newCir.setAttribute("shape", "circle");
radius = Math.floor(parseInt(which.style.width)/2);
coords = (parseInt(which.style.left)+radius)+","+(parseInt(which.style.top)+radius)+","+radius;
newCir.setAttribute("coords", coords);
if (which.getAttribute("href") != "")
newCir.setAttribute("href", which.getAttribute("href"));
else{
newCir.setAttribute("nohref", "");
}
newCir.removeAttribute("id");
imageMap.appendChild(newCir);
dump("circle created\n");
}
function createPoly(which){
newPoly = document.createElement("area");
newPoly.setAttribute("shape", "poly");
var coords = '';
var len = which.childNodes.length;
var i=0
for(i=0; i<len; i++){
coords += (parseInt(which.style.left)+parseInt(which.childNodes[i].style.left))+","+(parseInt(which.style.top)+parseInt(which.childNodes[i].style.top))+",";
}
coords = coords.substring(0, (coords.length-1));
newPoly.setAttribute("coords", coords);
if (which.getAttribute("href") != "")
newPoly.setAttribute("href", which.getAttribute("href"));
else{
newPoly.setAttribute("nohref", "");
}
newPoly.removeAttribute("id");
imageMap.appendChild(newPoly);
dump("poly created\n");
}
function hotSpotProps(which){
currentRect = null;
currentCir = null;
if (which == null)
return;
href = which.getAttribute("href");
hotSpotWin = window.openDialog("chrome://editor/content/EdImageMapHotSpot.xul", "htsptdlg", "modal", which, href);
}
function deleteAreas(){
if (oldMap){
area = imageMap.firstChild;
while (area){
area = imageMap.removeChild(area).nextSibling;
}
}
}