/* hafas_map_zoombywin.js*/
/* built: 26.05.2005 */

/* PTV functions */
var dom = (document.getElementByPublicID) ? true : false;
var ns5 = ((navigator.userAgent.indexOf("Gecko")>-1) && dom) ? true: false;
var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
var ns4 = (document.layers && !dom) ? true : false;
var AgntUsr=navigator.userAgent.toLowerCase();
var DomYes = (document.getElementById) ? true : false;
var NavYes = (AgntUsr.indexOf('mozilla')!=-1&&AgntUsr.indexOf('compatible')==-1) ? true : false;
var ns6 = (DomYes && NavYes) ? true : false;
var ie4 = (document.all && !dom) ? true : false;
var op6 = (AgntUsr.indexOf('opera')!=-1&&AgntUsr.indexOf('6.')!=-1) ? true : false;
var op7 = (AgntUsr.indexOf('opera')!=-1&&AgntUsr.indexOf('7.')!=-1) ? true : false;
var ie6 = ((navigator.userAgent.indexOf("MSIE")>-1)&&AgntUsr.indexOf('6.')!=-1) ? true : false;
/* mapping */
if(op6){ie4=false;}
if(op7){ie4=false;ie5=false;ns6=true;}
if(ie6){ie5=true;}

//alert("ns5: "+ns5+ "\nie4: "+ie4+ "\nie5: "+ie5+ "\nns6: "+ns6+ "\nop6: "+op6+ "\nop7: "+op7+ "\nie6: "+ie6 );

   var mapleft, maptop, mapright, mapbottom;
   var scrollX, scrollY, click1X, click1Y, click2X, click2Y, geo1X, geo1Y, geo2X, geo2Y;
   var click1valid;
   var URLString;
   var CtrlNumb = 0;
   var optVal = 9;

   function init(){
      document.onmousedown = startIt
      document.onmousemove = dragIt
      document.onmouseup = stopIt
      }
   
   /* Check wether the element mapOption is available otherwise do nothing */
   /* Check also the value of the selected element because this is used as ID */
   function checkOptionValue(){

      // check if the element is available
      if(document.map_results_form.REQMapClickAction){
         
         // Set the number of elements
         var noe = document.map_results_form.REQMapClickAction.length;
         for (var i=0;i<noe;i++){
            if(document.map_results_form.REQMapClickAction[i].checked==true){
               optVal = document.map_results_form.REQMapClickAction[i].value;
               return optVal;
               }
            }
         }
      // element isn't available optVal stays on default!!!
      else return optVal;
      }


   function startIt(evt){
      GetImgPos("map")
      click1X = 0
      click1Y = 0
      click1valid = false
      if (ie4 || ie5)
         {
         click1X = window.event.clientX + scrollX
         click1Y = window.event.clientY + scrollY
         }
      else if (ns6)
         {
         click1X = evt.pageX
         click1Y = evt.pageY
         }
      
      if (click1X >= mapleft && click1X <= mapright && click1Y >= maptop && click1Y <= mapbottom){
         
         if (ie4 || ie5){
            document.all.popUpRect.style.top = click1Y;
            document.all.popUpRect.style.left = click1X;

            /* Show window only in zoom-mode */
            if(checkOptionValue()=="ZOOM_BY_WINDOW")
               {
               document.all.popUpRect.style.width = 1;
               document.all.popUpRect.style.height = 1;
               document.all.popUpRect.style.background = "#999999";
               document.all.popUpRect.style.visibility = "visible";
               }
            else
               {
               document.all.popUpRect.style.width = 0;
               document.all.popUpRect.style.height = 0;
               document.all.popUpRect.style.border = "none";
               document.all.popUpRect.style.visibility = "visible";
               }
            }
         else if (ns6){
            document.getElementById("popUpRect").style.top = click1Y;
            document.getElementById("popUpRect").style.left = click1X;
            if(checkOptionValue()=="ZOOM_BY_WINDOW")
               {
               document.getElementById("popUpRect").style.width = 1;
               document.getElementById("popUpRect").style.height = 1;
               document.getElementById("popUpRect").style.visibility = "visible";
               }
               else
               {
               document.getElementById("popUpRect").style.width = 0;
               document.getElementById("popUpRect").style.height = 0;
               document.getElementById("popUpRect").style.visibility = "hidden";
               }
            }
   
         click1valid = true;
         CtrlNumb = 1;
         return false
         }
      else {
         return true
         }
      }  

   function dragIt(evt){
      /* first click was inside the map */
      if (click1valid == true && CtrlNumb == 1){
         if (ie4 || ie5){
            offsetX = window.event.clientX + scrollX;
            offsetY = window.event.clientY + scrollY;
            }
         else if (ns6){
            offsetX = evt.pageX;
            offsetY = evt.pageY;
            }
         /* horizontal */
         /* mouse is over the map */
         if (offsetX >= mapleft && offsetX <= mapright){
            /* mouse moves	right */
            if (offsetX >= click1X){
               if(ie4 || ie5){document.all.popUpRect.style.left = click1X;document.all.popUpRect.style.width = offsetX - click1X;}
               else if (ns6){document.getElementById("popUpRect").style.left = click1X;document.getElementById("popUpRect").style.width = offsetX - click1X;}
               }
            /* mouse moves left */
            else if (offsetX < click1X){
               if (offsetX < 0){offsetX = 0;}
               if(ie4 || ie5){document.all.popUpRect.style.left = offsetX - 3;document.all.popUpRect.style.width = click1X - offsetX;}
               else if (ns6){document.getElementById("popUpRect").style.left = offsetX;document.getElementById("popUpRect").style.width = click1X - offsetX;}
               }
            }
         /* mouse is not over the map */
         else {
            /* mouse moves right */
            if (offsetX >= click1X){
               if(ie4 || ie5){document.all.popUpRect.style.left = click1X;document.all.popUpRect.style.width = mapright - click1X;}
               else if (ns6){document.getElementById("popUpRect").style.left = click1X;document.getElementById("popUpRect").style.width = mapright - click1X - 3;}
               }
            /* mouse moves left */
            else if (offsetX < click1X){
               if(ie4 || ie5){document.all.popUpRect.style.left = mapleft;document.all.popUpRect.style.width = click1X - mapleft;}
               else if (ns6){document.getElementById("popUpRect").style.left = mapleft;document.getElementById("popUpRect").style.width = click1X - mapleft;}
               }
            }
         /* vertical */
         /* mouse is over the map */
         if (offsetY >= maptop && offsetY <= mapbottom){
            /* mouse moves down */
            if (offsetY >= click1Y){
               if(ie4 || ie5){document.all.popUpRect.style.top = click1Y;document.all.popUpRect.style.height = offsetY - click1Y;}
               else if (ns6){document.getElementById("popUpRect").style.top = click1Y;document.getElementById("popUpRect").style.height = offsetY - click1Y;}
               }
            /* mouse moves up */
            else if (offsetY < click1Y){
               if(ie4 || ie5){document.all.popUpRect.style.top = offsetY - 3;document.all.popUpRect.style.height = click1Y - offsetY;}
               else if (ns6){document.getElementById("popUpRect").style.top = offsetY;document.getElementById("popUpRect").style.height = click1Y - offsetY;}
               }
            }
         /* mouse is not over the map */
         else {
            /* mouse moves down */
            if (offsetY >= click1Y){
               if(ie4 || ie5){document.all.popUpRect.style.top = click1Y;document.all.popUpRect.style.height = mapbottom - click1Y;}
               else if (ns6){document.getElementById("popUpRect").style.top = click1Y;document.getElementById("popUpRect").style.height = mapbottom - click1Y - 3;}
               }
            /* mouse moves up */
            else if (offsetY < click1Y){
               if(ie4 || ie5){document.all.popUpRect.style.top = maptop;document.all.popUpRect.style.height = click1Y - maptop;}
               else if (ns6){document.getElementById("popUpRect").style.top = maptop;document.getElementById("popUpRect").style.height = click1Y - maptop;}
               }
         }
      return false
      }
   /* first click was outside the map */
   else {return true}
   }
   
   function stopIt(evt){
      if (click1valid == true){
         CtrlNumb = 2;
         
         if (ie4 || ie5){
            click2X = window.event.clientX + scrollX;
   		   click2Y = window.event.clientY + scrollY;
            }
         else if (ns6){
		      click2X = evt.pageX;
		      click2Y = evt.pageY;
            }
         
         if (click2X >= mapleft && click2X <= mapright && click2Y >= maptop && click2Y <= mapbottom)
   		   {/* document.all.popUpRect.style.visibility = "hidden"; */}
   		else {
            if (click2X < mapleft){click2X = mapleft} else if (click2X > mapright){click2X = mapright;}
   		   if (click2Y < maptop){click2Y = maptop} else if (click2Y > mapbottom){click2Y = mapbottom;}
   		   /*document.all.popUpRect.style.visibility = "hidden";*/}
       
          geo1X = click1X - mapleft;
   	    geo2X = click2X - mapleft;
   	    geo1Y = click1Y - maptop;
   	    geo2Y = click2Y - maptop;
          
          /* Set the minimum area for zbw */
          if (geo1X > geo2X){if (geo1X - geo2X < 10)
             {geo1X += 5; geo2X -= 5;}}
          else {if (geo2X - geo1X < 10)
             {geo2X += 5; geo1X -= 5;}}
          if (geo1Y > geo2Y){if (geo1Y - geo2Y < 10)
             {geo1Y += 5; geo2Y -= 5;}}
          else {if (geo2Y - geo1Y < 10)
             {geo2Y += 5; geo1Y -= 5;}}
             
          /* Preformat coords for the GIS system (LL to UR) */
          var xll = Math.min(geo1X,geo2X);
          var yll = Math.max(geo1Y,geo2Y);
          var xur = Math.max(geo1X,geo2X);
          var yur = Math.min(geo1Y,geo2Y);
   
          /* Check if zbw is enabled */
          if(checkOptionValue()=="ZOOM_BY_WINDOW"){
             URLString = "&REQMapTask=ZOOM";
             URLString += "&REQMapCornerCoordType=PIX";
             URLString += "&REQMapCornerLowerLeftX=" + xll;
             URLString += "&REQMapCornerLowerLeftY=" + yll;
             URLString += "&REQMapCornerUpperRightX=" + xur;
             URLString += "&REQMapCornerUpperRightY=" + yur;
             }
          /* Check if 'center the map' is enabled */
          else if(checkOptionValue()=="MOVE_TO_CENTER"){
             URLString = "&REQMapTask=MOVE_TO_CENTER";
             URLString += "&REQMapCenterCoordType=PIX";
             URLString += "&REQMapCenterX="+geo1X;
             URLString += "&REQMapCenterY="+geo1Y;
             }
          /* Check if 'Select as Start' is enabled */
          else if(checkOptionValue()=="TAKE_AS_START0"){
             URLString = "&REQMapTask=MAPINPUT";
             URLString += "&REQMapClickPixelPosX="+geo1X;
             URLString += "&REQMapClickPixelPosY="+geo1Y;
             URLString += "&REQMapClickAction=TAKE_AS_START0";
             URLString += "&RemoveGlobalOptionGO_callMapFromPosition";
             }
          /* Check if 'Select as Dest' is enabled */
          else if(checkOptionValue()=="TAKE_AS_DEST0"){
             URLString = "&REQMapTask=MAPINPUT";
             URLString += "&REQMapClickPixelPosX="+geo1X;
             URLString += "&REQMapClickPixelPosY="+geo1Y;
             URLString += "&REQMapClickAction=TAKE_AS_DEST0";
             URLString += "&RemoveGlobalOptionGO_callMapFromPosition";
             }
          /* Check if 'Mark location' is enabled */
          else if(checkOptionValue()=="MARK_LOCATION"){
             URLString = "&REQMapTask=MAPINPUT";
             URLString += "&REQMapClickPixelPosX="+geo1X;
             URLString += "&REQMapClickPixelPosY="+geo1Y;
             URLString += "&REQMapClickAction=MARK_LOCATION";
             URLString += "&RemoveGlobalOptionGO_callMapFromPosition";
             }
          /* Default do nothing ;-)*/
          else {CtrlNumb = 0;}
          URLRedirect();
          }
       }
   
   function URLRedirect(){
      if (CtrlNumb == 2){
         /* there are two clicks and a new map can be shown */
         CtrlNumb = 0;
         var tmpURL = document.map.src;
         var NewURL = tmpURL.substring(0,tmpURL.lastIndexOf("performGis"));
         NewURL += "performGis=1" + URLString;
         window.location.href=NewURL;
         }
      }
   
   function GetImgPos(img){
      mapleft = 0;
      maptop = 0;
      imgRefX = document.images[img];
      imgRefY = document.images[img];
      scrollY = document.body.scrollTop;
      scrollX = document.body.scrollLeft;
      while (imgRefX.offsetParent != null){
        mapleft += imgRefX.offsetLeft;
   	  imgRefX  = imgRefX.offsetParent;
   	  }
      while (imgRefY.offsetParent != null){
        maptop += imgRefY.offsetTop;
   	  imgRefY = imgRefY.offsetParent;
   	  }
      mapleft  += imgRefX.offsetLeft;
      maptop   += imgRefY.offsetTop;
      mapright  = mapwidth + mapleft;
      mapbottom = mapheight + maptop;
      }
