﻿var MainMapID;
//var ctoMap = new Object();
//var ctoMap_Pre = new Object();



//var MapImage = new Image ;
//MapImage.onload = MapImageIsLoaded;

var CTO_MapBg ="Vector";
CTO_MapBg ="HillShadow";

var TOI_ID;
var TOIover_Info =false
var TOIItem_Info_org= new Array();
var TOIItem_Info = new Array();

function TOIItem_Info_Rec(IDValue,  LayerValue, NameValue, XValue, YValue , XmValue, YmValue, Status){
    this.ID = IDValue;
    this.Layer = LayerValue;
    this.Name = NameValue;
    this.X = XValue;
    this.Y = YValue;
    this.Xm = XmValue;
    this.Ym = YmValue;
    this.Status = Status;
}

//function TI_activeInfo_Rec(InputValue)
//{
//   // this.Type =InputValue[1].substr(0,3);
//    this.Gis_ID =InputValue[0];
//    this.Type =InputValue[1];
//    
//    this.Code =InputValue[2];
//    this.Name =InputValue[3];
//    this.Xp = 0;
//    this.Yp = 0;   
//    this.X =InputValue[4];
//    this.Y =InputValue[5];
//    this.aX1 =InputValue[6];
//    this.aY1 =InputValue[7];
//    this.aX2 =InputValue[8];
//    this.aY2 =InputValue[9];    
//    //this.ZoomOver_S =InputValue[7];
//    this.bX1 =InputValue[10];
//    this.bY1 =InputValue[11];
//    this.bX2 =InputValue[12];
//    this.bY2 =InputValue[13];
//    //this.ZoomNormal_S =InputValue[10];
//    this.cX1 =InputValue[14];
//    this.cY1 =InputValue[15];
//    this.cX2 =InputValue[16];
//    this.cY2 =InputValue[17];
//    //this.ZoomClose_S =InputValue[13];
//    this.QviewScale = InputValue[18];
//  //  this.ObjectTopology = InputValue[19];
//}
var TI_TabActiveType;
//var HandleOnWindow_Resize_IsActive = true;

//-------------------------------------------------------------------------------------
function todel_Initial_CTO_Map_Form(e) {
    //-----------------------------------------
    HandleOnWindow_Resize_IsActive  = false;
    //-----------------------------------------
    MainMapID = Map.NewMap();
    var Mcode = Map.getMcodeFromMapID(MainMapID);
    var Moptions = Map.MapObj[MainMapID];
    //-----------------------------------------
        Moptions.Id = MainMapID;
        Moptions.Title = "Main Map of Cyprus .....";
        Moptions.MapLang = Map_Lang;
        Moptions.MapActivePOI = TImap_ActiveID;
        Moptions.Holder = "M000^Map^MapContainerChell" //"page";

        Moptions.MapBackGround = MapBackGround;
        Moptions.PreBackGround = MapBackGround;
              
        Moptions.ActiveTools = "Arrow";
        

        
    //-----------------------------------------
      //  POIactive.GetPOIactive(MainMapID, Moptions.MapActivePOI);
        TI_activeInfo = tmpTI_activeInfo;
    TI_TabActiveType = TI_activeInfo.Code.substr(0, 3);
    //-----------------------------------------
    Moptions.MapRect = new MapRect(TI_activeInfo.bX1, TI_activeInfo.bY1, TI_activeInfo.bX2, TI_activeInfo.bY2)
    Moptions.PreRect = Moptions.MapRect;
    
    Moptions.MapCenter = new MapPoint(Moptions.MapRect.x(), Moptions.MapRect.y());
    Moptions.PreCenter = Moptions.MapCenter;



    //-----------------------------------------set size
    var bodySize = getBody_Size();
    var winSize = getWindow_Size();
    var NewMapSize = { w: 0, h: 0 };
    NewMapSize.w = winSize.w - (262 + 6 * 4+12)
    NewMapSize.h = winSize.h - 150 - 34 - 34 - 12 - 12 

    var elem = document.getElementById(Moptions.Holder)
    elem.style.width = NewMapSize.w + "px";
    elem.style.height = NewMapSize.h + "px";

    //-----------------------------------------
        Moptions.FrameHolder.Title.status = "none";
        Moptions.FrameHolder.Location.status = "none";
        Moptions.FrameHolder.North.status = "none";
        Moptions.FrameHolder.Scale.status = "none";
        Moptions.FrameHolder.Logo.status = "none";

        Moptions.ToolsHolder.NavUpTools.status = "none"
        Moptions.ToolsHolder.NavDowTools.status = "none"
        Moptions.ToolsHolder.AllTools.status = "none"
        Moptions.ToolsHolder.ScalebarH.status = "none"
        //----------------------------------------- 
    
    
    Map.Initial(MainMapID)
    
//    Moptions.FrameHolderList = "";
//    document.getElementById(Moptions.Holder).innerHTML = Map.getMapContainerInnerHTML(MainMapID);
//    Progress.create(MainMapID);
//    POIactive.create(MainMapID);
//       
    Navigator.create(MainMapID)
//    MapF_Scale.create(MainMapID);
    //---------------------------------------
    var tmpScale = Map.Scale.ScaleFromMapViewRect(Moptions.MapRect, Moptions.ImageRect)
    Moptions.MapScale = tmpScale.f;
    Moptions.PreScale = tmpScale.f;

    var tmp_BarPx = Map.Scale.BarPixelFromScale(MainMapID, Scale.f);
    tmp_BarPx = Tools.ScaleBar.Inticator.Set(MainMapID, tmp_BarPx);
    //-----------------------------------------
    //Tools.BackGround.SetImage(MainMapID, Moptions.PreBackGround, Moptions.MapBackGround)


 
    
    
//    Moptions.ImagePos = getPosition_Object(Mcode + "^Map^" + "MapContainer");
//    Moptions.ImageSize = getObject_Size(Mcode + "^Map^" + "MapContainer");
//   // Moptions.ImageSize = { w: 100, h: 100 };
//    Moptions.ImageCenter.x = parseInt(Moptions.ImageSize.w / 2);
//    Moptions.ImageCenter.y = parseInt(Moptions.ImageSize.h / 2);
//    Moptions.ImageRect = new MapRect(0, 0, Moptions.ImageSize.w, Moptions.ImageSize.h)

    //-----------------------------------------
    HandleOnWindow_Resize_IsActive  = true;
    //----------------------------------------- 
    
    TRI_Tree.initial(TRI_TreeClass, TRI_treeIndex);
    TRI_Tree.create();
    //-----------------------------------------
   // e = e || window.event;
   // CTO_WindowResize(MainMapID, e, false);
    ctoMap = Moptions;

    //-----------------------------------------
  //  ctoMap_Pre = Map.MapObj[MainMapID];
    
    GDI_StaticLabel_Set();
    GDI_Title_Set();
    //-----------------------------------------
        
 //   alert (TImap_ActiveID)
//    ServerReguest_TI_active (TImap_ActiveID)
    
//    ctoMap.MapRect = new MapRect(TI_activeInfo.bX1,TI_activeInfo.bY1,TI_activeInfo.bX2,TI_activeInfo.bY2) 
//    ctoMap.MapCenter = new MapPoint(ctoMap.MapRect.x(),ctoMap.MapRect.y());

    


   // ServerReguest_Map(Scale,ctoMap.ImageCenter,ctoMap.MapCenter,ctoMap.MapRect, true,false,false); 

   //TRI_TreeClass=""
//    var TRI_Tree_tmp = JSON.parse(TRI_TreeClass);
//    TRI_Tree.Index=TRI_treeIndex;
//    //TRI_TreeClass="";
    
  //  alert (TRI_Tree.Index[3001] + "  " + TRI_Tree.Units[1].Groups[1].Label);
    
  //  TI_TabActiveType =TI_activeInfo.Code.substr(0,3)
    
   // NavOption_Handler(e,"initial");
    CTO_TI_TreeTabMenu(e,"initial");
    
    CTO_Menu_Tab(e,"initial");
    VTab_MapGalery_Handler(e,"initial");
    
    VTab_Route_Handler(e,"initial");
    
    VTab_Print_Handler(e,"initial");
    
    if (TI_activeInfo.Type=="TOI" && (TOIUnit_Visible[TI_activeInfo.Code.substr(0,5)]=="1")){
        TOILayer_Visible[TI_activeInfo.Code] = "1";
        TOI_GroupVisibleUpDate (TI_activeInfo.Code.substr(0,6))
    }
    
    if (TI_activeInfo.Type=="TRI"&& response){
        //ServerResponse_TRI_Route(response)
        var jsonR = JSON.parse(response);
        //TI_active_Info_Read(jsonR.RespTRI_ID, jsonR.RespTRI_RouteInfo);
        POIactive.ReadPOIactive(MapID, jsonR.RespTRI_ID, jsonR.RespTRI_RouteInfo);
        var Route_Title= ""; //TRIUnit_Label[TRI_activeInfo.Code.substr(0,5)] + " / " +  TRIGroup_Label[TRI_activeInfo.Code] + " / " +  TRI_activeInfo.Name ;
        
            Travel_Loaded_Gis_ID =jsonR.RespTRI_ID
            
            var UGI =TRI_Tree.Index[Travel_Loaded_Gis_ID].split("|")
            Route_Title =TRI_Tree.Units[parseInt(UGI[0])].Label + " / " + 
                        TRI_Tree.Units[parseInt(UGI[0])].Groups[parseInt(UGI[1])].Label + " / " + 
                        TRI_Tree.Units[parseInt(UGI[0])].Groups[parseInt(UGI[1])].Items[parseInt(UGI[2])].Label 
            //TRI_RoutePlaning_TitleDraw(Route_Title)
        
       // Travel_Loaded_Gis_ID =jsonR.RespTRI_ID
        TravelData = new TravelData_Class()
        TravelData.initial(jsonR.RespTRI_Travel);
        TravelData.Info.Label=Route_Title        
        
        TRI_RoutePlaning_TitleDraw(Route_Title);
        TravelObj.ListSolution.Draw(TravelData,TravelListSolution_container,"Map"); 
        TRI_RoutePlaning_List_Redraw(); 
        
        jsonR=null
        response=null;      
    }
    
//    document.getElementById("MapImage_TRI_TestRoute").style.display = "block";   
//    setFilter_Opacity("MapImage_TRI_TestRoute", 50);
    //setFilter_Opacity("MapImage_POIactive", 75); 
    //ServerReguest_MapBy_MapBound(srvURL,Map_Lang ,ctoMap.ImageSize.w,ctoMap.ImageSize.h, ctoMap.MapRect.x1, ctoMap.MapRect.y1,ctoMap.MapRect.x2, ctoMap.MapRect.y2 )
    Map.getMap.By_MapScale_MapBound(MainMapID, Moptions.MapLang, Moptions.MapBackGround, Moptions.ImageSize.w, Moptions.ImageSize.h, Moptions.MapRect.x1, Moptions.MapRect.y1, Moptions.MapRect.x2, Moptions.MapRect.y2) 

  
    var Element = document.getElementById("M000^Map^MapContainer");
    if (Element.addEventListener){
        Element.addEventListener('DOMMouseScroll', MapWheel, false);
    }else{
        Element.onmousewheel =  MapWheel;
    }
    
    var Element = document.getElementById("MapImage_TOIover");
    if (Element.addEventListener){
        Element.addEventListener('DOMMouseScroll', MapWheel, false);
    }else{
        Element.onmousewheel =  MapWheel;
    }      

}




//-------------------------------------------------------------------------------------
function CTO_WindowResize(MapID,e, ServerReguest) {
    //-----------------------------------------
    if (!HandleOnWindow_Resize_IsActive) { return; }
    //-----------------------------------------
    var Mcode = Map.getMcodeFromMapID(MapID);
    var Moptions = Map.MapObj[MapID];


    var winSize = getWindow_Size();
    var bodySize = getBody_Size();
   // var MapSize = getObject_Size("MapContainer");
    var MapSize = getObject_Size(Mcode + "^MapImage_Sec");
    var NavSize = getObject_Size("M000^Navigator^Holter");
    var NewMapSize = {w:0, h:0};  
 
    var w= NavSize.w +12+12 +12
    var h= winSize.h- bodySize.h
    
    NewMapSize.w= winSize.w - w
    //NewMapSize.h= MapSize.h + h -12
    NewMapSize.h= winSize.h -150 -34 -34 -12-12 


 //defaultStatus = " winSize.w=" + winSize.w + "/" + bodySize.w + " ||winSize.h= " + winSize.h + "/" + bodySize.h  + " || w=" + w + "  h=" + h +  " || MapSize.w=" + MapSize.w + "/" + NewMapSize.w +"   MapSize.h=" + MapSize.h + "/" + NewMapSize.h

     if (NewMapSize.w <= 400) {
        NewMapSize.w=400;
     }
     if (NewMapSize.w >= 800) {
      //  NewMapSize.w=800;
        document.getElementById("MainTable").style.width = NewMapSize.w + w-12+"px"; 
     } else {
        document.getElementById("MainTable").style.width="100%";
     }

     if (NewMapSize.h >= 600) {
      //  NewMapSize.h=600;
     }

     document.getElementById("MainTable").style.width = "100%";

// document.getElementById(Mcode + "^Map^" + "MapContainer").style.width = NewMapSize.w + "px";
// document.getElementById(Mcode + "^Map^" + "MapContainer").style.height = NewMapSize.h + "px";
 var elem = document.getElementById(Moptions.Holder)
 elem.style.width = NewMapSize.w + "px";
 elem.style.height = NewMapSize.h + "px";

 Moptions.ImagePos = getPosition_Object(Mcode + "^Map^" + "MapContainer");
 Moptions.ImageSize = getObject_Size(Mcode + "^Map^" + "MapContainer");
 //Moptions.ImageSize = NewMapSize;
 Moptions.ImageCenter.x = parseInt(Moptions.ImageSize.w / 2);
 Moptions.ImageCenter.y = parseInt(Moptions.ImageSize.h / 2);
 Moptions.ImageRect = new MapRect(0, 0, Moptions.ImageSize.w, Moptions.ImageSize.h)
 
 
    document.getElementById("M000^MapImage_Main").style.width = NewMapSize.w +"px";
    document.getElementById("M000^MapImage_Main").style.height = NewMapSize.h + "px"; 
        
    document.getElementById("M000^MapImage_Sec").style.width = NewMapSize.w +"px"; 
    document.getElementById("M000^MapImage_Sec").style.height = NewMapSize.h +"px";     
        
    
    document.getElementById("TabMenu").style.width = NewMapSize.w +12+"px"; 
    document.getElementById("TabMenu_Header").style.width = NewMapSize.w +"px";
    document.getElementById("TabMenu_TabContainer").style.width = NewMapSize.w +"px"; 

    document.getElementById("MapGalery_FrameTable").style.width = NewMapSize.w -231 +"px";  
    
    document.getElementById("CTO_RouteTable").style.width = NewMapSize.w -10 +"px"; 
    document.getElementById("Route_FrameTable").style.width = parseInt(document.getElementById("CTO_RouteTable").style.width )-110+"px";
    document.getElementById("RoutePlan_InfoWp").style.width = parseInt(document.getElementById("Route_FrameTable").style.width )-15+"px";
    document.getElementById("TravelSolution_DIVcont").style.width = parseInt(document.getElementById("Route_FrameTable").style.width )-15+"px";
    
    
     document.getElementById("CTO_PrintTable").style.width = NewMapSize.w -10 +"px"; 
     
    TI_TreeContainerResize();
    
  //  MapImagePos = getPosition_Object("MapContainer");
   // MapImageSize =NewMapSize; // getObject_Size("MapContainer");
   // MapImageCenter.x = parseInt(MapImageSize.w/2);
   // MapImageCenter.y = parseInt(MapImageSize.h/2);

    //  Tools.ScaleBar.Pos = getPosition_Object("ScaleBar_Bg");




    ctoMap = Moptions;
    
//    var ViewFrametmpPos = getPosition_Object("Qview_ViewFrame");  
//    ViewFrame.Left =ViewFrametmpPos.x;
//    ViewFrame.Top =ViewFrametmpPos.y;    
                               
    //document.getElementById("MapImage_TOI").style.left = ctoMap.ImagePos.x +"px"; 
    //document.getElementById("MapImage_TOI").style.top = ctoMap.ImagePos.y +"px"; 
//    
//    document.getElementById("MapImage_TRI_RoadCar").style.width = ctoMap.ImageSize.w +"px"; 
//    document.getElementById("MapImage_TRI_RoadCar").style.height = ctoMap.ImageSize.h +"px";

    document.getElementById("M000^Map^MapImage_TOI").style.width = Moptions.ImageSize.w + "px";
    document.getElementById("M000^Map^MapImage_TOI").style.height = Moptions.ImageSize.h + "px"; 
    
  //  document.getElementById("MapImage_TRI_WayPoint").style.width = ctoMap.ImageSize.w +"px"; 
  //  document.getElementById("MapImage_TRI_WayPoint").style.height = ctoMap.ImageSize.h +"px";

    document.getElementById(Mcode + "^MapTravelLine").style.width = Moptions.ImageSize.w + "px";
    document.getElementById(Mcode + "^MapTravelLine").style.height = Moptions.ImageSize.h + "px"; 
        
   // document.getElementById("MapImage_TRI_TestRoute").style.width = ctoMap.ImageSize.w +"px"; 
  //  document.getElementById("MapImage_TRI_TestRoute").style.height = ctoMap.ImageSize.h +"px";

  //  document.getElementById("GeoinfoLogo").style.top = Moptions.ImageSize.h - 23 + "px";

    Progress.RefreshPosition(MapID);
    //CTO_MapLoadWait_Resize (ctoMap.ImageCenter.x,   ctoMap.ImageCenter.y);
    
    Tools.SetActiveTools(MapID,"Arrow" );
    if (ServerReguest && Moptions.MapScale != 0) {
        Map.getMap.By_MapScale_MapCenter(MapID, Moptions.MapLang, Moptions.MapBackGround, Moptions.ImageSize.w, Moptions.ImageSize.h, Moptions.MapScale, Moptions.MapCenter.x, Moptions.MapCenter.y)
    }



    for (var i = 0; i < Map.MapObj.length; i++) {
        MapID = i
        var Mcode = Map.getMcodeFromMapID(MapID);

        var Moptions = Map.MapObj[MapID]

        Moptions.ImagePos = Map.getElem.Position(Mcode + "^MapImage_Main");
        if (Tools.JoyStick.visible ) {
            Tools.JoyStick.Pos = Map.getElem.Position(Mcode + "^" + Tools.JoyStick.Ocode + "^" + "JoyStickBg");
        }
        if (Tools.ScaleBar.visible ) {
            Tools.ScaleBar.Pos = Map.getElem.Position(Mcode + "^" + Tools.ScaleBar.Ocode + "^" + "ScaleBar");
        }
        if (NavMap.visible) {
            NavMap.Pos = Map.getElem.Position(Mcode + "^" + "NavMap" + "^" + "NavMap");
        }
    }
    

} 
//--------------------------------------------------------------------------


////==========================  TI_active_Info_Read   ========================|
//function TI_active_Info_Read (inputID,inputData) {  
//    TImap_ActiveID = inputID;
//    var InputValue = inputData.split(";");
//    //var TOI_Point = new MapPoint(InputValue[3], InputValue[4]).transform(ctoMap.MapRect, new MapRect(0,0,ctoMap.ImageSize.w ,ctoMap.ImageSize.h));
//    //var TOI_Point = new MapPoint(InputValue[3], InputValue[4]).transform(ctoMap.MapRect,ctoMap.ImageRect);
//    TI_activeInfo = new TI_activeInfo_Rec(InputValue);
//    if (TI_activeInfo.Type=="TRI"){
//        TRI_activeInfo = TI_activeInfo;
//    }
//}
//--------------------------------------------------------------------------
////==========================  TI_active_Info_Draw   ========================|
//function TI_active_Info_Draw(){
//if (TI_activeInfo.Gis_ID >100 && TI_activeInfo.Type!="TRI") {
//    var TI_active_Point = new MapPoint(TI_activeInfo.X, TI_activeInfo.Y).transform(ctoMap.MapRect,ctoMap.ImageRect);
//    TI_activeInfo.Xp= TI_active_Point.x;
//    TI_activeInfo.Yp= TI_active_Point.y;
//    document.getElementById("M000^Map^POIactive").style.visibility = "visible";
//    //document.getElementById("M000^MapImage_POIactive").style.display="block";
//    document.getElementById("M000^Map^POIactive").style.left = TI_activeInfo.Xp - 30 + "px";
//    document.getElementById("M000^Map^POIactive").style.top = TI_activeInfo.Yp - 30 + "px";
//    document.getElementById("M000^Map^POIactive").style.backgroundImage = "url(Images_MapSymbol/TOIactive.png)";
//}else{
//    //document.getElementById("M000^MapImage_POIactive").style.display="none";
//document.getElementById("M000^Map^POIactive").style.visibility = "hidden";
//}     
//  //  alert(TImap_ActiveID + "   " + TI_activeInfo.Name)
//}



function AddTOIItem_Info(IDValue,  LayerValue, NameValue, XValue, YValue, XmValue, YmValue,Status){
    TOIItem_Info_org[TOIItem_Info_org.length] = new TOIItem_Info_Rec(parseInt(IDValue), LayerValue,NameValue, XValue,YValue, XmValue,YmValue, Status);
}
function TOIItem_Info_LoadedUpdate (RespTOI_LayerString) { 
    var Layers = RespTOI_LayerString.split(",");
    for (var i=0;i<Layers.length;i++){
        var layer="TOI_"+Layers[i];
        TOILayer_Loaded[layer] = true;
    }
}

function sortByY(a, b)
{
   if(a.Y > b.Y)
      return 1
   if(a.Y < b.Y)
      return -1
   return 0
}

function TOIItem_Info_Read (TOI_Response) {  
//TOIItem_Info= new Array();
var c=0;
    for (TOI in TOI_Response) {
        c++;
        if (TOI_Response[TOI]) {
            var vals = TOI_Response[TOI].split(";");
            var TOI_Point = new MapPoint(vals[3], vals[4]).transform(ctoMap.MapRect, ctoMap.ImageRect);
            AddTOIItem_Info(vals[0],"TOI_" + vals[1], vals[2], TOI_Point.x, TOI_Point.y, vals[3], vals[4], vals[5]);
        }
   }
   TOIItem_Info = TOIItem_Info_org.sort(sortByY) ; //  must sort by Y  to draw min Y firdt
   // TOIItem_Info=TOIItem_Info_org ;
}
//--------------------------------------------------------------
//TOIItem_Info_Clear ----------------------------------
function TOIItem_Info_Clear(){
    //if (!TOILayer){return}
    var Layer
//    var backgroundElement
    TOIItem_Info_org= new Array();
    TOIItem_Info= new Array();
    for (var i=0;i<TOILayer.length;i++){
        Layer=TOILayer[i];
        TOILayer_Loaded[Layer] = false;
    }
//    backgroundElement = document.getElementById("MapImage_TOI");
//    backgroundElement.innerHTML = "";
    document.getElementById("M000^Map^MapImage_TOI").innerHTML = ""; 
}

function TOIItem_Info_Hide(Layer){
    for (var i=0;i<TOIItem_Info.length;i++){
        if (Layer==TOIItem_Info[i].Layer){
            document.getElementById("TOI"+ i).style.visibility="hidden";
        }
    }    
}
function TOIItem_Info_Show(Layer){
    for (var i=0;i<TOIItem_Info.length;i++){
        if (Layer==TOIItem_Info[i].Layer){
            document.getElementById("TOI"+ i).style.visibility="visible";
        }
    } 
}

function TOIItem_Info_Draw(MapID) {
   // var MapID = 0;
    var Mcode = Map.getMcodeFromMapID(MapID);
    var Moptions = Map.MapObj[MapID];
    //--------------------------------------------------------------
    var SymbolName ;
    var TOI_Layer ;
    var curTOI_Layer ="";
    //var TOI_ID, , TOI_Name, 
    var TOI_X, TOI_Y ,TOI_W, TOI_H;
    var TOI_visibility="visible";
    //alert (TOIItem_Info.length ) 
    var msg=""
    for (var i=0;i<TOIItem_Info.length;i++){
        TOI_Layer=TOIItem_Info[i].Layer;
      //  if (i==0){curTOI_Layer=TOI_Layer}

        var ScaleVisible = GetTOI_ScaleVisible(Moptions.MapScale, TOI_Layer)
        switch (ScaleVisible){
        case 1: 
            SymbolName=( TOI_Layer.substr(0,6) + "_1MapSymbol.png" );
            TOI_W=10;
            TOI_H=10;
            TOI_X=TOIItem_Info[i].X -5;
            TOI_Y=TOIItem_Info[i].Y-7; 
            break;
        case 2: 
            SymbolName=( TOI_Layer.substr(0,6) + "_2MapSymbol.png" );
            TOI_W=15;
            TOI_H=15;
            TOI_X=TOIItem_Info[i].X -8;
            TOI_Y=TOIItem_Info[i].Y-10; 
            break;         
        case 3: 
            SymbolName=( TOI_Layer + "_MapSymbol.png" );
            TOI_W=40;
            TOI_H=35;
            TOI_X=TOIItem_Info[i].X -11;
            TOI_Y=TOIItem_Info[i].Y-35;     
            break;        
        default:
            SymbolName=( TOI_Layer + "_MapSymbol.png" );
            TOI_W=40;
            TOI_H=35;
            TOI_X=TOIItem_Info[i].X -11;
            TOI_Y=TOIItem_Info[i].Y-35;
        } 
        
        if (TOILayer_Visible[TOI_Layer] == "1"){
            TOI_visibility="visible"
        }else{
            TOI_visibility="hidden"
        }
        if (TOI_Layer.substr(0,6)=="TOI_DB"){
            TOI_W =TOI_W *1.5;
            TOI_H =TOI_H*1.5;
        }
        msg+=  "<div id=\"TOI"+ i +"\" style=\"position: absolute; display: block; visibility:"+ TOI_visibility +"; z-index: 1009; ";
        msg+= "background-image: url(Images_MapSymbol/" + SymbolName + "); background-repeat: no-repeat; " ;
        msg+= "padding: 0px; margin: 0px; border: none; ";
        msg+= "left: " + parseInt(TOI_X) + "px; top: " + parseInt(TOI_Y) + "px; width: " + TOI_W + "px; height: " + TOI_H + "px;\"";
       // msg+= "left: " + parseInt(TOI_X) + "px; top: " + parseInt(TOI_Y) + "px; width:auto; top:auto;\"";

        msg+= " onmouseover=\"TOIItem_Info_Event(event,\'over\')\"/>";     
        msg+= "</div>";
        
     //   msg1=  "<div id=\"TOI"+ i +"\" style=\"position: absolute; display: block; z-index: 1009;  background-image: url(Images_MapSymbol/" + SymbolName + "); background-repeat: no-repeat; padding: 0px; margin: 0px; border: none; left: " + TOI_X + "px; width: " + TOI_W + "px; top: " + TOI_Y + "px; height: " + TOI_H + "px;\" onmouseover=\"TOIItem_Info_Event(event,\'over\')\" ></div> ";     
     //   if(curTOI_Layer==TOI_Layer){
     //       msg+= msg1;
     //   }else{
     //       if(msg!=""){
     //           backgroundElement= document.getElementById("MapImage_"+curTOI_Layer);
     //           backgroundElement.innerHTML = msg;
     //           TOILayer_Loaded[curTOI_Layer] = true;
     //       }
     //       curTOI_Layer=TOI_Layer;
     //       msg=msg1;
     //   }
    }
    if(msg!=""){
        backgroundElement = document.getElementById("M000^Map^MapImage_TOI");
        backgroundElement.innerHTML = msg;
       // TOILayer_Loaded[TOI_Layer] = true;
    }   
}


//==================================== ToolZoomOut   ====================|

function TOIItem_Info_Event(e, MouseEvent) {

var MapID=0;
var Mcode = Map.getMcodeFromMapID(MapID)
var Ocode = "Map";
var Moptions = Map.MapObj[MapID]
var ActiveTools = Moptions.ActiveTools;

    var objBotton= "" ;
    var objBottonID="" ;
    if (MouseEvent!="close"){
        var objBotton= GetEventTrigger (e);
        if(objBotton){objBottonID = objBotton.id};
        //-------------------------------------------------------------
        if (objBottonID == Mcode + "^" + Ocode + "^" + "POIactive") {
            //objBottonID='TOI' + TImap_ActiveID
            for (i=0; i < TOIItem_Info.length; i++) {
                if(TOIItem_Info[i].ID==TImap_ActiveID){
                    objBottonID='TOI' + i
                    objBotton=document.getElementById(objBottonID)
                }
            }
            if (objBottonID == Mcode + "^" + Ocode + "^" + "POIactive") {
                return;
            } 
        }
    }
    //-------------------------------------------------------------
    if (MouseEvent == "over" ) {
        if (ActiveTools=="Arrow" && !TOIover_Info){
        
            TOI_ID= objBottonID.substr(3, 20);
            var ScaleVisible = GetTOI_ScaleVisible(Moptions.MapScale, TOIItem_Info[TOI_ID].Layer)
            var TOI_Unit = TOIItem_Info[TOI_ID].Layer.substr(4, 1);
            if(ScaleVisible!=3 && TOI_Unit!="D"){
                TOI_X= TOIItem_Info[TOI_ID].X -11;
                TOI_Y= TOIItem_Info[TOI_ID].Y-35 ;
                
                SymbolName=( TOIItem_Info[TOI_ID].Layer + "_MapSymbol.png" );
                TOI_W=40;
                TOI_H=35;
                objBotton.style.backgroundImage ="url(Images_MapSymbol/" + SymbolName + ")";
                objBotton.style.width = TOI_W +"px"; 
                objBotton.style.height = TOI_H +"px";
                objBotton.style.left =TOI_X +"px"; 
                objBotton.style.top = TOI_Y +"px";
            }
            TOI_X=ctoMap.ImagePos.x+ TOIItem_Info[TOI_ID].X -11;
            TOI_Y=ctoMap.ImagePos.y+ TOIItem_Info[TOI_ID].Y-35 ;
            if (TOI_Unit=="D"){
                document.getElementById("MapImage_TOIover").style.backgroundImage ="url(Images_MapSymbol/TOIover_AdminNameBG_Open.png)";
            }else{
                document.getElementById("MapImage_TOIover").style.backgroundImage ="url(Images_MapSymbol/TOIover_NameBG_Open.png)";
            }
            document.getElementById("MapImage_TOIover").style.visibility="visible"
            document.getElementById("MapImage_TOIover").style.left = TOI_X+ 2 +"px"; 
            document.getElementById("MapImage_TOIover").style.top = TOI_Y +1 +"px";
            var NameString = TOIItem_Info[TOI_ID].Name
            if (NameString.length>25){
                NameString=NameString.substr(0,25) + "..."
            }    
            document.getElementById("MapImage_TOIover").innerHTML =NameString ;
        } 
    //-------------------------------------------------------------      
    } else if (MouseEvent == "out") {
        if (!TOIover_Info){
            if(TOI_ID){TOIItem_Info_UpDateSymbol(TOI_ID)}
            document.getElementById("MapImage_TOIover").style.visibility="hidden";
            TOI_ID=null
        }
     //-------------------------------------------------------------   
     } else if (MouseEvent == "click") { 
        if (!TOIover_Info&&TOI_ID){ 
            TOIover_Info=true
           // document.getElementById("MapImage_TOIover_Dow").style.display="none";
           // document.getElementById("MapImage_TOIover_Close").style.display="block"
           // document.getElementById("MapImage_TOIover").style.backgroundImage ="url(Images_MapSymbol/TOIover_NameBG_Close.png)";
            var TOI_Unit = TOIItem_Info[TOI_ID].Layer.substr(4, 1);
            if (TOI_Unit=="D"){
                document.getElementById("MapImage_TOIover").style.backgroundImage ="url(Images_MapSymbol/TOIover_AdminNameBG_Close.png)";
            }else{
                document.getElementById("MapImage_TOIover").style.backgroundImage ="url(Images_MapSymbol/TOIover_NameBG_Close.png)";
            }
            document.getElementById("MapImage_TOIover_Info").style.visibility="visible";
            document.getElementById("MapImage_TOIover_Info").style.left = TOI_X +30+"px"; 
            document.getElementById("MapImage_TOIover_Info").style.top = TOI_Y +22+"px";
            document.getElementById("MapImage_TOIover_Layer").innerHTML = "&nbsp;" + TOILayer_Label[TOIItem_Info[TOI_ID].Layer];
           // document.getElementById("MapImage_TOIover_Iframe").src= "QuickView.aspx?ID="+ TOIItem_Info[TOI_ID].ID + "&Lang=" + Map_Lang + "&Dim=Loc"
            if (TOIItem_Info[TOI_ID].Status=="ACT"){
                ServerReguest_TI_PortalURL(TOIItem_Info[TOI_ID].ID) 
            }else{
                MapImage_TOIover_Iframe_Update (TOIItem_Info[TOI_ID].ID, "")
            }
        }else{  
            MouseEvent = "close";
        }
    }    
    //-------------------------------------------------------------    
    if (MouseEvent == "close") {  
            if(TOI_ID){
                TOIItem_Info_UpDateSymbol(TOI_ID)
            }  
            TOIover_Info=false 
            TOI_ID=null    
            document.getElementById("MapImage_TOIover").style.backgroundImage ="url(Images_MapSymbol/TOIover_NameBG_Open.png)";
            document.getElementById("MapImage_TOIover").style.visibility="hidden";
            document.getElementById("MapImage_TOIover_Info").style.visibility="hidden";  
            document.getElementById("MapImage_TOIover_Iframe").style.visibility="hidden";
//        }        
	} 
//	defaultStatus = MouseEvent + "  " + objBottonID    + " > " + TOI_ID  + " > " +  TOIItem_Info[TOI_ID].ID
 }
 
  //-------------------------------------------------------------------------------------
 function SetTOI_Active(e, MouseEvent) {
     var MapID = 0;
    var EventTrigger= GetEventTrigger (e)
    var ObjectID=EventTrigger.id ; 
    if (ObjectID==""){return}
    var objBotton = document.getElementById(ObjectID);
    if (MouseEvent == "over" ) {
        objBotton.src="Images_MapSymbol/SetTOI_Active_over.png";
    } else if (MouseEvent == "out") {
        objBotton.src="Images_MapSymbol/SetTOI_Active.png";
    } else if (MouseEvent == "down") {
        objBotton.src="Images_MapSymbol/SetTOI_Active_Click.png";
       // ServerReguest_TI_active(TOIItem_Info[TOI_ID].ID)
        POIactive.GetPOIactive(MapID, TOIItem_Info[TOI_ID].ID)
    } else if (MouseEvent == "up") {
        objBotton.src="Images_MapSymbol/SetTOI_Active_over.png";
        
//        if(e.stopPropagation){e.stopPropagation();}
//        e.cancelBubble = true;
        
        TOIItem_Info_Event(null,'close');
	}    
}

//------------------------------------------------------------------------------------- 
function  MapImage_TOIover_Iframe_Update (ResponseID, ResponseURL) {
//    try {
//        if (ResponseID!=TOIItem_Info[TOI_ID].ID){return };
//    } catch {
//        return
//    }
    
    try   {
        if (ResponseID!=TOIItem_Info[TOI_ID].ID){return };
    }catch(err){
        return;
    }

    
    if (ResponseURL!="") {
       // document.getElementById("MapImage_TOIover_Iframe").innerHTML = "";  
        //document.getElementById("MapImage_TOIover_GIFloading").style.display= "block";
        document.getElementById("MapImage_TOIover_GIFloading").style.visibility="visible";
        document.getElementById("MapImage_TOIover_Iframe").src= ResponseURL;
            document.getElementById("MapImage_TOIover_Iframe").style.display= "block";
        document.getElementById("MapImage_TOIover_Iframe").style.height="250px";
        document.getElementById("MapImage_TOIover_SetButton").style.top="271px";
        document.getElementById("MapImage_TOIover_Info").style.height="300px"; 
        setFilter_Opacity("MapImage_TOIover_Iframe", 75);  
    }else{
            document.getElementById("MapImage_TOIover_GIFloading").style.display= "none";
        document.getElementById("MapImage_TOIover_GIFloading").style.visibility="hidden";
        document.getElementById("MapImage_TOIover_Iframe").style.visibility= "visible";
        document.getElementById("MapImage_TOIover_Iframe").style.height="0px";
        document.getElementById("MapImage_TOIover_SetButton").style.top="20px";
        document.getElementById("MapImage_TOIover_Info").style.height="50px";
       // document.getElementById("MapImage_TOIover_Iframe").innerHTML = "";  
    }
} 

//-------------------------------------------------------------------------------------
function MapImage_TOIover_Loading_Handler(e,LoadEvent){
    if (LoadEvent == "Show" ) {
//        document.getElementById("MapImage_TOIover_GIFloading").style.display= "block";
    } else if (LoadEvent == "Hide") {
        document.getElementById("MapImage_TOIover_Iframe").style.visibility= "visible";
        //document.getElementById("MapImage_TOIover_GIFloading").style.display= "none";
        document.getElementById("MapImage_TOIover_GIFloading").style.visibility="hidden";
    }
}



function TOIItem_Info_UpDateSymbol(TOI_ID){
    var MapID = 0;
    var Mcode = Map.getMcodeFromMapID(MapID);
    var Moptions = Map.MapObj[MapID];
    //--------------------------------------------------------------
//var TOI_IDmax = TOIItem_Info[0].Length;
//if (TOI_ID>TOI_IDmax){
//    return;
//}
    try   {
        var ScaleVisible=GetTOI_ScaleVisible(Moptions.MapScale,TOIItem_Info[TOI_ID].Layer);
    }catch(err){
        return;
    }
    
   // var ScaleVisible=GetTOI_ScaleVisible(Scale.i,TOIItem_Info[TOI_ID].Layer)
    switch (ScaleVisible){
    case 1: 
        SymbolName=( TOIItem_Info[TOI_ID].Layer.substr(0,6) + "_1MapSymbol.png" );
        TOI_W=10;
        TOI_H=10;
        TOI_X=TOIItem_Info[TOI_ID].X -5;
        TOI_Y=TOIItem_Info[TOI_ID].Y-7; 
        break;
    case 2: 
        SymbolName=( TOIItem_Info[TOI_ID].Layer.substr(0,6) + "_2MapSymbol.png" );
        TOI_W=15;
        TOI_H=15;
        TOI_X=TOIItem_Info[TOI_ID].X -8;
        TOI_Y=TOIItem_Info[TOI_ID].Y-10; 
        break;         
    case 3: 
        SymbolName=( TOIItem_Info[TOI_ID].Layer + "_MapSymbol.png" );
        TOI_W=40;
        TOI_H=35;
        TOI_X=TOIItem_Info[TOI_ID].X -11;
        TOI_Y=TOIItem_Info[TOI_ID].Y-35;       
        break;        
    default:
        SymbolName=( TOIItem_Info[TOI_ID].Layer + "_MapSymbol.png" );
        TOI_W=40;
        TOI_H=35;
        TOI_X=TOIItem_Info[i].X -11;
        TOI_Y=TOIItem_Info[i].Y-35;
    }
    document.getElementById("TOI"+TOI_ID).style.backgroundImage ="url(Images_MapSymbol/" + SymbolName + ")";
    document.getElementById("TOI"+TOI_ID).style.width = TOI_W +"px"; 
    document.getElementById("TOI"+TOI_ID).style.height = TOI_H +"px";
    document.getElementById("TOI"+TOI_ID).style.left =TOI_X +"px"; 
    document.getElementById("TOI"+TOI_ID).style.top = TOI_Y +"px"; 
}



function CTO_MapLoadWait_Show (){
    document.getElementById("M000^Progress^Progress").style.display = "block"
    MapLoadWait_Counter=0
   // CTO_MapLoadWait_Flash()
}



//function CTO_MapLoadWait_Hide (){
////    clearTimeout(MapLoadWait_Timer);
//    document.getElementById("M000^Progress^Progress").style.display = "none"
//}


//function CTO_MapLoadWait_Flash() {
//    var i
//    var aa
//    var opacity
//    MapLoadWait_Counter=MapLoadWait_Counter+1
//    if (MapLoadWait_Counter>10){MapLoadWait_Counter=1}
//    aa=MapLoadWait_Counter 
//    RestoreFilter("MapImage_LoadWait_Red"+ aa)
//    for (i = 1;i <10;i++){
//        aa=MapLoadWait_Counter-i
//        if (aa<=0){aa=10+aa}
//        opacity=(10-i*1.8)*10
//        if (opacity<0){opacity=0}
//        setFilter_Opacity("MapImage_LoadWait_Red"+ aa,opacity)    
//    } 
//    MapLoadWait_Timer = setTimeout("CTO_MapLoadWait_Flash()",  50);
//}



//function CTO_MapLoadWait_Resize(posX, posY) {
//    document.getElementById("M000^Progress^Progress").style.left = posX - 93 + "px";
//    document.getElementById("M000^Progress^Progress").style.top = posY - 15 + "px";
//}



////-------------------------------------------------------------------------------------
//function MapImageIsLoaded(){
//var MapID=0;
//var Mcode=Map.getMapCodeFromID(MapID);

//    document.getElementById("M000^MapImage_Main").style.backgroundImage ="url(" +  MapImage.src  +")";
//   // setFilter_Opacity("M000^MapImage_Main",0);
//    //MapImage_TransitionsEfect("M000^MapImage_Sec","M000^MapImage_Main",50 , 50)
//    Map.getMap.MapImageTransitions(MapID,Mcode +"MapImage_Sec",Mcode +"MapImage_Main",50 , 50)
////alert("MapImageIsLoaded");
//}

//function MapImage_TransitionsEfect(objId1,objId2,StartOpacity, opacity) {
//    if (opacity== StartOpacity) {
//       // setFilter_Opacity(objId1,100-StartOpacity);
//        document.getElementById(objId1).style.visibility="visible";
//        setFilter_Opacity(objId2,StartOpacity);
//        document.getElementById(objId2).style.visibility="visible";
//      //  var D_opacity=100-StartOpacity
//    }
//    if (opacity == 100) {
//        document.getElementById(objId1).style.visibility="hidden";
//        document.getElementById("M000^MapImage_Sec").src =  MapImage.src;
//       // setFilter_Opacity(objId1, 100);
//             //Restore Position & Size 
//           // document.getElementById("M000^MapImage_Sec").style.position = "absolute";
//            document.getElementById("M000^MapImage_Sec").style.left = 0 +"px";  
//            document.getElementById("M000^MapImage_Sec").style.top = 0 +"px";   
//            document.getElementById("M000^MapImage_Sec").style.width = ctoMap.ImageSize.w +"px";  
//            document.getElementById("M000^MapImage_Sec").style.height = ctoMap.ImageSize.h  +"px";   
//        setFilter_Opacity(objId2, 100); 
//    }else{
//        opacity += 10;
//        var tmpOpacity=opacity-StartOpacity
//       //setFilter_Opacity(objId1,StartOpacity-tmpOpacity);
//        setFilter_Opacity(objId2,StartOpacity+tmpOpacity);
//        window.setTimeout("MapImage_TransitionsEfect('"+objId1+"','" + objId2 +"'," +StartOpacity+ "," +opacity+")", 30);

//    }
//}
