//$Id: mod_box1.js,v 1.2 2005/09/13 14:38:11 bjoern_heuser Exp $
//$Header: /cvsroot/mapbender/mapbender/http/javascripts/mod_box1.js,v 1.2 2005/09/13 14:38:11 bjoern_heuser Exp $
/* 
<!-- 
Licensing: See the GNU General Public License for more details.
http://www.gnu.org/copyleft/gpl.html
or:
mapbender/licence/ 
-->
*/

var mb_isActive = false;
var mb_isBF = false;
var mb_zF = false;


function  mod_box_start(e){
//alert(mb_isBF);
   mb_isActive = true;
   mb_getMousePos(e,mb_isBF);
   mb_start_x = clickX;
   mb_start_y = clickY
   mb_end_x = mb_start_x+1;
   mb_end_y = mb_start_y+1;
   mb_offset_left = mb_start_x;
   mb_offset_top = mb_start_y;
   mb_offset_bottom = mb_start_y;
   mb_offset_right = mb_start_x
   mb_drawBox(mb_start_x,mb_start_y,mb_end_x,mb_end_y);
   return false;
}
function mod_box_run(e){
   if(mb_isActive){
      mb_getMousePos(e,mb_isBF);
      for(var i=0; i<mb_mapObj.length; i++){
         if(mb_mapObj[i].frameName == mb_isBF){
            var width = mb_mapObj[i].width;
            var height = mb_mapObj[i].height;
         }
      }
      if (((clickX>width) || (clickY>height) || (clickX<=0) ||(clickY<=0))) {isActive = false;  mod_box_stop(e); }
      else {
         mb_end_x=clickX;
         mb_end_y=clickY;
         evalExtent();
      }
     return false;
  }
}
function mod_box_stop(e){
     mb_hideElement("l_top");
     mb_hideElement("l_left");
     mb_hideElement("l_right");
     mb_hideElement("l_bottom");
     if(mb_isActive){
     	mb_isActive = false;
        return mb_setMapExtent(mb_start_x,mb_start_y,mb_end_x,mb_end_y);
     }
     mb_isActive = false;
}
function mb_drawBox(left,top,right,bottom){
   mb_arrangeBox("l_top",left,top,right,top+2);
   mb_arrangeBox("l_left",left,top,left+2,bottom);
   mb_arrangeBox("l_right",right-2,top,right,bottom);
   mb_arrangeBox("l_bottom",left,bottom-2,right,bottom);
   mb_displayElement("l_top");
   mb_displayElement("l_left");
   mb_displayElement("l_right");
   mb_displayElement("l_bottom");
}
function mb_arrangeBox(name, left, top, right, bottom){
   var el = window.frames[mb_isBF].document.getElementById(name).style;
   el.height = Math.abs(bottom - top);
   el.width = Math.abs(right - left);
   el.top = top + "px";
   el.left = left + "px";
}
function mb_displayElement(name){
   window.frames[mb_isBF].document.getElementById(name).style.visibility = "visible";
}
function mb_hideElement(name) {
   window.frames[mb_isBF].document.getElementById(name).style.visibility = "hidden";
}
function evalExtent() {
   if (mb_start_x>mb_end_x) {
      mb_offset_right=mb_start_x;
      mb_offset_left=mb_end_x;
   }
   else {
      mb_offset_left=mb_start_x;
      mb_offset_right=mb_end_x;
   }
   if (mb_start_y>mb_end_y) {
      mb_offset_bottom=mb_start_y;
      mb_offset_top=mb_end_y;
   } else {
      mb_offset_top=mb_start_y;
      mb_offset_bottom=mb_end_y;
   }
   if ((mb_start_x != mb_end_x) && (mb_start_y != mb_end_y)) {
      mb_drawBox(mb_offset_left,mb_offset_top,mb_offset_right,mb_offset_bottom);
   }
}
function mb_setMapExtent(x1,y1,x2,y2){
   if(x1 < x2){
      var minx = x1;
      var maxx = x2;
   }
   else{
      var minx = x2;
      var maxx = x1;
   }
   if(y1 < y2){
      var miny = y2;
      var maxy = y1;
   }
   else{
      var miny = y1;
      var maxy = y2;
   }
   // area or clickpoint ?
	var ret = new Array();
   if((maxx - minx) > 3 && (miny - maxy) > 3){
      var posMin = makeClickPos2RealWorldPos(mb_isBF,minx,miny);
      var posMax = makeClickPos2RealWorldPos(mb_isBF,maxx,maxy);
      ret[0] = posMin[0];
      ret[1] = posMin[1];
      ret[2] = posMax[0];
      ret[3] = posMax[1];
      return ret;
//      mb_setValidClipping(posMin[0],posMin[1],posMax[0], posMax[1]);
   }
   else{
   	var posMin = makeClickPos2RealWorldPos(mb_isBF,minx,miny);
      ret[0] = posMin[0];
      ret[1] = posMin[1];
    	return ret;      
      //zoom(mb_zF,true,1.0,pos[0], pos[1]);
   }
}