// (c) Areaway all rights reserved

var DHTML = false, DOM = false, MSIE4 = false, NS4 = false, OP = false;

if (document.getElementById) {
  DHTML = true;
  DOM = true;
} else {
  if (document.all) {
    DHTML = true;
    MSIE4 = true;
  } else {
    if (document.layers) {
      DHTML = true;
      NS4 = true;
    }
  }
}
if (window.opera) {
  OP = true;
}

//alert("DHTML"+DHTML+" DOM"+DOM+" MSIE4"+MSIE4+" NS4"+NS4+" OP"+OP);

function sliderZoomOut() {
    var tmpCmd = cmd;
    cmd ="out";
    evaluateMouse(400,200);
    cmd = tmpCmd;
}

function sliderZoomIn(){
    var tmpCmd = cmd;
    cmd ="in";
    evaluateMouse(400,200);
    cmd = tmpCmd;
}

function mclick(e) {

  var Ereignis = e;
  if (!Ereignis)
    Ereignis = window.event;

/*    
  if (document.getElementById) {
    alert("ById"+ Ereignis.clientX + "px  "+ Ereignis.clientY + "px");
  } else if (document.all) {
    alert("all"+ Ereignis.clientX + "px  "+ Ereignis.clientY + "px");
  }
*/

   var ev = (window.Event) ? e : window.event;

   var ziel = (window.Event) ? ev.target : ev.srcElement; 
   var mx=  (window.Event) ? ev.layerX:event.offsetX  ; 
   var my=  (window.Event) ? ev.layerY:event.offsetY  ; 

   if (OP){
    mx = window.event.offsetX;
    my = window.event.offsetY;
   }



   
   if (ziel.name == "mapglaspane" && cmd == "selePoly") {
        //alert("selePoly");
        jg_doc.clear(); 
        polygoneList.xlist.push(mx);
        polygoneList.ylist.push(my);
        jg_doc.drawPolyline(polygoneList.xlist, polygoneList.ylist);
        lastx=mx;
        lasty=my;

        jg_doc.paint();
       return;
   }

   if (ziel.name == "mapglaspane"){
       evaluateMouse(mx,my);
       return;
   }
}


function mup(e) {
   var ev = (window.Event) ? e : window.event;

   var ziel = (window.Event) ? ev.target : ev.srcElement; 
   var mx=  (window.Event) ? ev.layerX:event.offsetX  ; 
   var my=  (window.Event) ? ev.layerY:event.offsetY  ; 

   if (OP){
    mx = window.event.offsetX;
    my = window.event.offsetY;
   }

   var gx= mx;
   var gy= my;

   //var gx=  (window.Event) ? ev.layerX:event.offsetX  ; 
   //var gy=  (window.Event) ? ev.layerY:event.offsetY  ; 

   if (sliderInAction){
   }
   if (panInAction){
   }
   sliderInAction = false;
   panInAction = false;
}

function mdown(e) {
   var ev = (window.Event) ? e : window.event;

   var ziel = (window.Event) ? ev.target : ev.srcElement; 
   var mx=  (window.Event) ? ev.layerX:event.offsetX  ; 
   var my=  (window.Event) ? ev.layerY:event.offsetY  ; 

   var gx= mx;
   var gy= my;

   if (OP){
    mx = window.event.offsetX;
    my = window.event.offsetY;
   }
   
   if (ziel.name =="sliderregler") {
    mouseStartPosX = gx;
    mouseStartPosY = gy;
    sliderInAction = true;
   }
   
   if (ziel.name == "mapglaspane") {
    panInAction = true;
   }
}

function moveMap(x1, y1, x2, y2) {
}

function mmove(e) {
  var ev = (window.Event) ? e : window.event;

   var ziel = (window.Event) ? ev.target : ev.srcElement; 
   var mx=  (window.Event) ? ev.layerX:event.offsetX  ; 
   var my=  (window.Event) ? ev.layerY:event.offsetY  ;

   if (OP){
    mx = window.event.offsetX;
    my = window.event.offsetY;
   }
   
   var gx= mx;
   var gy= my;
   
//   var gx=  (window.Event) ? ev.layerX:event.offsetX  ; 
//   var gy=  (window.Event) ? ev.layerY:event.offsetY  ; 

   mouseCurPosX = gx;
   mouseCurPosY = gy;
   
   if (ziel.name =="mapglaspane") {
       document.getElementById("xcoord").innerHTML = "x="+mx;
       document.getElementById("ycoord").innerHTML = "y="+my;
   } 
   if (ziel.name == "mapglaspane" && cmd == "selePoly" && polygoneList.xlist.length > 0) {
     //alert("selepoly"+polygoneList.xlist.length+"  "+polygoneList.ylist.length);
     var xlist = new Array();
     var ylist = new Array();
     xlist.push(lastx);
     ylist.push(lasty);
     xlist.push(mx);
     ylist.push(my);
     jg_move_doc.clear();
//     jg_move_doc.setStroke(2); 
//     jg_move_doc.setColor("#ff0000");

     jg_move_doc.drawPolyline(xlist, ylist);
     jg_move_doc.paint();
   }
   
   if (sliderInAction) {
    moveSliderRegler(mouseStartPosX, mouseStartPosY, mouseCurPosX, mouseCurPosY);
    return;
   }
   if (panInAction) {
    moveMap(mouseStartPosX, mouseStartPosY, mouseCurPosX, mouseCurPosY);
    return;
   }
}

function undo(){
    if (undolist.length == 0){
    }
    redolist.push(mapEnv);
    mapEnv = undolist.pop();
    
    changeMapImages(mapEnv);    
}

function redo(){
    if (redolist.length == 0){
        return;
    }
    undolist.push(mapEnv);    
    mapEnv = redolist.pop();

    changeMapImages(mapEnv);
}



function evaluateMouse(mx,my) {

    var mapEnvelope = new Object();
    mapEnvelope.level = mapEnv.level;
    mapEnvelope.curx  = mapEnv.curx;
    mapEnvelope.cury  = mapEnv.cury;
    mapEnvelope.xd    = mapEnv.xd
    mapEnvelope.yd    = mapEnv.yd;
    
    undolist.push(mapEnvelope);
    redolist=new Array();
    
    var faktor;
    if (cmd=="in") {
        faktor=0.5;
        mapEnv.level--;
    } else if (cmd=="out"){
        faktor=2;
        mapEnv.level++;
     } else {
        faktor=1;
    }
    
    var tmpX=(mapEnv.curx*width+mx+mapEnv.xd)/faktor;
    var tmpY=(mapEnv.cury*width+my+mapEnv.yd)/faktor;
    
    
    var sox=Math.floor(tmpX/width)-2;
    var soy=Math.floor(tmpY/width)-1;
    
    mapEnv.xd= tmpX%width;
    mapEnv.yd= tmpY%width;

    mapEnv.curx = sox;
    mapEnv.cury = soy;
    changeMapImages(mapEnv);    
}

function changeLevel(level) {
}

function changeMapImages(curEnvelope) {
    
      //window.status =  "[" +x+"]"+y+" "+l+" "+xdd+" "+ydd+"]";
    
    for(var i=0;i<5;i++) {
        for(var j=0;j<3;j++) {
            var img = document.getElementById("img"+j+i);
            img.src = getMapImageName( (i+curEnvelope.curx), (j+curEnvelope.cury), curEnvelope.level) ;
        }
    }

    for(var i=0;i<5;i++) {
        for(var j=0;j<3;j++) {
            var img = document.getElementById("limg"+j+i);
            img.src = getLabelMapImageName( (i+curEnvelope.curx), (j+curEnvelope.cury), curEnvelope.level) ;
        }
    }

    var myareamap = document.getElementById("areamap");
    if (document.all) {
        myareamap.style.posLeft=-curEnvelope.xd;
        myareamap.style.posTop=-curEnvelope.yd; 
    } else {
        myareamap.style.left=-curEnvelope.xd;
        myareamap.style.top=-curEnvelope.yd;
    }
    var mysliderregler = document.getElementById("sliderregler");
    if (document.all) {
        mysliderregler.style.posTop=19+(7-curEnvelope.level)*8; 
    } else {
        mysliderregler.style.top=19+(7-curEnvelope.level)*8;
    }
}

function moveSliderRegler(x1, y1, x2, y2) {
    spliderDeltaY = y2-y1;
    var mysliderregler = document.getElementById("sliderregler");
    if (document.all) {
        mysliderregler.style.posTop=19+(7-l)*8; 
    } else {
        mysliderregler.style.top=19+(7-l)*8;
    }
}

function formatNumber(n){
    var tmpstr = new String(n);
    var len=tmpstr.length;
    var c=4-len;
    for(var k=0;k<c;k++)
        tmpstr="0"+tmpstr;
    return tmpstr;    
}

function getlevelstr(l){
    return String.fromCharCode(97+l);
}

function getMapImageName(x,y,l) {
    var mapimage="transparent_pixel.gif";
    
    if (x<0||y<0)
       return "transparent_pixel.gif";
    var xlist = [128-20,64-10  ,32-5  ,16-2,8-1,  4];
    var ylist = [ 64-10,32-5  ,16-2  ,8-1 ,  4,  2];
    
   // var maxx = xlist[l];
    //var maxy = ylist[l];
    //alert("x "+x+"  y "+y+"  maxx"+maxy+"  maxy"+maxy);
    //window.status += "x "+x+"  y "+y+"  maxx"+maxy+"  maxy"+maxy;
//    if (x>=maxx||y>=maxy)
 //      return "transparent_pixel.gif";

//document.getElementById("debugtext").innerHTML=    "worldmosaic/worldbathi_"+l+getlevelstr(l)+"/"+getlevelstr(l)+formatNumber(x)+formatNumber(y)+".jpg"+ "   level="+l;
//window.status = "worldmosaic/worldbathi_"+getlevelstr(l)+"/"+getlevelstr(l)+formatNumber(x)+formatNumber(y)+".jpg" + "   level="+l;
    return "worldmosaic/worldbathi_"+getlevelstr(l)+"/"+getlevelstr(l)+formatNumber(x)+formatNumber(y)+".jpg";
}

function getLabelMapImageName(x,y,l) {
    var mapimage="transparent_pixel.gif";
    
    if (x<0||y<0)
       return "transparent_pixel.gif";
//       if (l == 1){
        return "worldmosaic/label_"+getlevelstr(l)+"/"+getlevelstr(l)+formatNumber(x)+formatNumber(y)+".gif";
//       }
    return mapimage;
}

function clearToolStatus() {
    var tool;
    tool=document.getElementById("worldtool");
    tool.className= "normalTool";
    tool=document.getElementById("hometool");
    tool.className= "normalTool"; 
    tool=document.getElementById("zoomintool");
    tool.className= "normalTool";
    tool=document.getElementById("zoomouttool");
    tool.className= "normalTool";
    tool=document.getElementById("pantool");
    tool.className= "normalTool";
    
    tool=document.getElementById("selectAtPointTool");
    tool.className= "normalTool";
    tool=document.getElementById("selectAtRectTool");
    tool.className= "normalTool";
    tool=document.getElementById("selectAtCircleTool");
    tool.className= "normalTool";
    tool=document.getElementById("selectAtPolygoneTool");
    tool.className= "normalTool";

}

function world() {
    clearToolStatus();
    var tool=document.getElementById("worldtool");
    tool.className= "inversTool";
 
//    level=6;

//    curx=1;
//    cury=0;

//    xd=0;
//    yd=0;
    var mapEnvelope = new Object();
    mapEnvelope.level = mapEnv.level;
    mapEnvelope.curx  = mapEnv.curx;
    mapEnvelope.cury  = mapEnv.cury;
    mapEnvelope.xd    = mapEnv.xd
    mapEnvelope.yd    = mapEnv.yd;
    
    undolist.push(mapEnvelope);
    
mapEnv.level=6;

 mapEnv.curx=-1;
 mapEnv.cury=-1;

 mapEnv.xd=150;
 mapEnv.yd=170;
    

    changeMapImages(mapEnv);    

}
 
function home() {
    clearToolStatus();
    var tool=document.getElementById("hometool");
    tool.className= "inversTool";

    var mapEnvelope = new Object();
    mapEnvelope.level = mapEnv.level;
    mapEnvelope.curx  = mapEnv.curx;
    mapEnvelope.cury  = mapEnv.cury;
    mapEnvelope.xd    = mapEnv.xd
    mapEnvelope.yd    = mapEnv.yd;
    
    undolist.push(mapEnvelope);

    mapEnv.level=3;

    mapEnv.curx=12;
    mapEnv.cury=2;

    mapEnv.xd=40;
    mapEnv.yd=13;
    changeMapImages(mapEnv);    

}

function zoomin() {
    clearToolStatus();
    var tool=document.getElementById("zoomintool");
    tool.className= "inversTool";
    cmd="in";
}

function zoomout() {
    clearToolStatus();
    var tool=document.getElementById("zoomouttool");
    tool.className= "inversTool";
    cmd="out";
}

function mappan() {
    clearToolStatus();
    var tool=document.getElementById("pantool");
    tool.className= "inversTool";
    cmd="pan";
}


function selectAtPoint(){
    clearToolStatus();
    var tool=document.getElementById("selectAtPointTool");
    tool.className= "inversTool";
    cmd="selePoint";
    if (jg_move_doc == null) 
    jg_move_doc  = new jsGraphics("mapmovegraphics");
    jg_move_doc.clear();
    jg_move_doc.setStroke(2); 
    jg_move_doc.setColor("#ff0000");
    jg_move_doc.paint(); // zeichnet in diesem Fall direkt in's document
}

function selectAtRect(){
    clearToolStatus();
    var tool=document.getElementById("selectAtRectTool");
    tool.className= "inversTool";
    cmd="seleRect";
    if (jg_move_doc == null) 
    jg_move_doc  = new jsGraphics("mapmovegraphics");
    jg_move_doc.clear();
    jg_move_doc.setStroke(2); 
    jg_move_doc.setColor("#ff0000");
    jg_move_doc.paint(); // zeichnet in diesem Fall direkt in's document
}

function selectAtCircle(){
    clearToolStatus();
    var tool=document.getElementById("selectAtCircleTool");
    tool.className= "inversTool";
    cmd="seleCirc";
    if (jg_move_doc == null) 
    jg_move_doc  = new jsGraphics("mapmovegraphics");
    jg_move_doc.clear();
    jg_move_doc.setStroke(2); 
    jg_move_doc.setColor("#ff0000");
    jg_move_doc.paint(); // zeichnet in diesem Fall direkt in's document
}

function selectAtPolygone(){
    clearToolStatus();
    var tool=document.getElementById("selectAtPolygoneTool");
    tool.className= "inversTool";
    cmd="selePoly";
/*
    jg_doc.setColor("#ffff00"); // grün
    jg_doc.fillEllipse(100, 200, 100, 100); // Koordinaten auf document bezogen
    jg_doc.setColor("#ff0000"); // grün
    jg_doc.fillEllipse(100+50-5, 200+50-5, 10, 10); // Koordinaten auf document bezogen
*//*
    jg_doc.setStroke(5); 
    jg_doc.setColor("#aaaaaa");
    jg_doc.drawPolyline(new Array(250, 210, 120), new Array(210, 250, 270));
  */
    if (jg_move_doc == null) 
    jg_move_doc  = new jsGraphics("mapmovegraphics");
    jg_move_doc.clear();
    jg_move_doc.setStroke(2); 
    jg_move_doc.setColor("#ff0000");
    jg_move_doc.paint(); // zeichnet in diesem Fall direkt in's document

//    jg_doc.drawPolyline(new Array(250, 210, 120), new Array(210, 250, 270));

    polygoneList.xlist = new Array();
    polygoneList.ylist = new Array();
    if (jg_doc == null) 
    jg_doc = new jsGraphics("mapgraphics");
    jg_doc.clear();
    jg_doc.setStroke(2); 
    jg_doc.setColor("#ff0000");
    jg_doc.paint(); // zeichnet in diesem Fall direkt in's document
   
    
}

