сделала!
Создаем три слоя - нижний картинка, средний - выделяемая прямоугольная область, верхний - отлов событий мыши.
Вот код:
<DIV id="map_image" style="Z-INDEX: 0; POSITION: absolute; BACKGROUND-COLOR: #d0f0c0; WIDTH: 720px; HEIGHT: 360px; TOP: 1px; CURSOR: crosshair; layer-background-color: #7bc41e" ><IMG src="myimg.jpg"/></DIV>
<DIV id="selected_area" style="Z-INDEX: 1; POSITION: absolute; WIDTH: 0px; HEIGHT: 0px; TOP: 1px; LEFT: 0px; BACKGROUND-COLOR: transparent; CURSOR: crosshair; layer-background-color: transparent; border: 2px solid #ffccff;" ></DIV>
<DIV id='mouse_events' name="mapimage" onmouseup="processMouseUp(event)" onmousedown="clickCheck( event)" onmousemove="processMouseMove(event)" style="Z-INDEX: 2; POSITION: absolute; BACKGROUND-COLOR: transparent; WIDTH: 720px; HEIGHT: 360px; TOP: 1px; CURSOR: crosshair; layer-background-color: transparent" ></DIV>
function processMouseMove (evt) {
if(flag_select_area==1){//если пользователь нажал но еще не отпустил кнопку мыши
var pixelX=ret_X(evt);
var pixelY=ret_Y(evt);
var div = document.getElementById("selected_area");
if(pixelY >= startY_rect){
div.style.height = pixelY - startY_rect +"px";
div.style.top = startY_rect+"px";
} else {
div.style.top = pixelY +"px";
div.style.height = startY_rect - pixelY +"px";
}
if(pixelX >= startX_rect){
div.style.width = pixelX - startX_rect +"px";
div.style.left = startX_rect+"px";
} else {
div.style.left = pixelX +"px";
div.style.width = startX_rect - pixelX +"px";
}
}
return;
}
//кнопка мыши нажата===========================================
function clickCheck (evt) {
startX_rect=ret_X(evt);
startY_rect=ret_Y(evt);
if(evt.button == 3 || evt.button == 2 ) // right click
{return false ;}
flag_select_area=1;
return true;
}
//кнопка мыши отпущена=============================================
function processMouseUp (evt) {
flag_select_area=0;
if(evt.button == 3 || evt.button == 2 ) // right click
{return false ;}
return true;
}
function ret_X(evt){ //координаты курсора
var pixelX;
if (document.all){ //IE
pixelX = evt.offsetX-sdvig_left;
}
else if (document.getElementById) { //for FF and Opera
pixelX = evt.pageX-sdvig_left;
}
return pixelX;
}
function ret_Y(evt){
var pixelY;
if (document.all){ //IE
pixelY = evt.offsetY;
}
else if (document.getElementById) { //for FF and Opera
pixelY = evt.pageY;
}
return pixelY;
}