﻿// This JS file manipulate OpenLayers functions
        // On mouse hover handler
    var drawControls, selectControl,landmarkPicSelectControl,projectPicSelectControl,landmarkSelectControl, selectedFeature, transProjSelectControl;
    var IsCleanApp=false;
    
    function onPopupClose(evt) {
//            selectControl.unselect(selectedFeature);
            RemoveAllPopups();
            

        }
        
    function RemoveAllPopups()
        {
            var ind = 0;
            for(ind = 0 ; ind < map.popups.length ; ind++)
                map.removePopup(map.popups[ind]);
        }


    function onFeatureSelect(feature) 
        {
            RemoveAllPopups();
            
            selectedFeature = feature;
            popup = new OpenLayers.Popup.FramedCloud("chicken", 
                                     feature.geometry.getBounds().getCenterLonLat(),
                                     null,
                                     "<div align='right'><p class='Balloon_Text'>"
                                     + feature.data.toString().split('@')[0] + "</p></div>",
                                     null, true, onPopupClose);
                                     
            feature.popup = popup;
            map.addPopup(popup);
        }
    function onFeatureSelectLandMark(feature) 
        {
            RemoveAllPopups();    
            selectedFeature = feature;
            if(!flag_SignedIn)
            {
                 popup = new OpenLayers.Popup.FramedCloud("chicken", 
                                         feature.geometry.getBounds().getCenterLonLat(),
                                         null,
                                         "<div align='right'><p class='Balloon_Text'>"
                                         + feature.data.toString().split(',')[0] + "</p>"
                                         //+ "<p><a class='link' target='_blank' href='http://www.jeddah.gov.sa/directories/categories.php?objectid="+ feature.data.toString().split(',')[1] +"&subtype=" + feature.data.toString().split(',')[3] + "' >المزيد</a></p>"
                                         + "</div>",
                                         null, true, onPopupClose);

//                  popup = new OpenLayers.Popup.FramedCloud("chicken", 
//                                         feature.geometry.getBounds().getCenterLonLat(),
//                                         null,
//                                         "<div align='right'>"
//                                         + feature.data.toString().split(',')[0] + "</div>",
//                                         null, true, onPopupClose);
            }
            else
            {
                popup = new OpenLayers.Popup.FramedCloud("chicken", 
                                        feature.geometry.getBounds().getCenterLonLat(),
                                        null,
                                        "<div align='right'><table id='tbl1' border='0'>"
                                        +"<tr><td><p class='Balloon_Text'>"+feature.data.toString().split(',')[0]+"</p></td></tr>"
                                        //+"<tr><td><a class='link' target='_blank' href='http://www.jeddah.gov.sa/directories/categories.php?objectid="+ feature.data.toString().split(',')[1] +"&subtype=" + feature.data.toString().split(',')[3] + "' >المزيد</a></td></tr>"
                                        +"<tr><td><a class='link' onclick='PrepareForEdit();' href='javascript:void(0);' id='Edit' >تعديل البيانات</a></td></tr>"
                                        +"<tr><td></table> </div>",
                                        null, true, onPopupClose);
            }                         
            feature.popup = popup;
            map.addPopup(popup);
        }
        
        
        function onFeatureSelectLandMarkPic(feature) 
        {
            RemoveAllPopups();    
            selectedFeature = feature;
            popup = new OpenLayers.Popup.FramedCloud("chicken", 
                                    feature.geometry.getBounds().getCenterLonLat(),
                                    null,                                    
                                    "<div dir='rtl'>" + 
                                        "<table>" + 
                                            "<tr><td rowspan='7'></td><td></td><td rowspan='7'></td></tr>" + 
                                            "<tr><td class=lbl style='text-align:center'><h3>" + feature.data.toString().split(',')[0] + "</h3></td></tr>" + 
                                            "<tr><td style='text-align:right'>" + 
                                            "<img src='http://maps.jeddah.gov.sa/images/Sculpture_Images/Originals/" + feature.data.toString().split(',')[4] + "' alt='' style='border: solid 1px #000' width='236' height='236' /></td></tr>" +
                                            "<tr><td style='height:5px'></td></tr>" + 
                                            "<tr><td><table class=lbl_small width='100%'><tr><td width='50%' style='text-align:right'><b>الفنان:</b> " + feature.data.toString().split(',')[2] + "</td><td width='50%' style='text-align:left'><b>الحالة:</b> " + feature.data.toString().split(',')[3] + "</td></tr></table></td></tr>" + 
                                            "<tr><td style='height:5px'></td></tr>" + 
                                        "</table>" + 
                                        "</div>",
                                    null, true, onPopupClose);
                    
            popup.minSize = new OpenLayers.Size(1,1);
            feature.popup = popup;
            
            map.addPopup(popup);
        }

    function onFeatureSelectslaughterhouse(feature)
    {
                //id, contractor, project_phase, type, project_start_date, project_end_date, contractor_name_arb, project_phase_arb, project_type_arb, picture;
            RemoveAllPopups();    
            selectedFeature = feature;
            popup = new OpenLayers.Popup.FramedCloud("slaughterhousePopup", 
                                    feature.geometry.getBounds().getCenterLonLat(),
                                    null,
                                    "<div dir='rtl'>" + 
                                        "<table >" + 
//                                            "<tr><td rowspan='7'></td><td></td><td rowspan='7'></td></tr>" + 
//                                            //"<tr><td class=lbl style='text-align:center'><h3>Major Projects 2009</h3></td></tr>" + 
//                                            "<tr><td style='text-align:right'>" + 
//                                            "<img src='http://maps.jeddah.gov.sa/images/Major Projects 2009/Originals/" + feature.data.toString().split(',')[9] + "' alt='' style='border: solid 1px #000' width='384' /></td></tr>" +
//                                            "<tr><td style='height:5px'></td></tr>" + 
                                            "<tr><td><table class=lbl_small width='100%'>" +
                                            "<tr><td width='50%' style='text-align:right'><b>الأسم:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[0] + "</td></tr>" +
                                            "<tr><td width='50%' style='text-align:right'><b>النوع:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[1] + "</td></tr>" +
                                            "<tr><td width='50%' style='text-align:right'><b>المؤسسة_المشغلة:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[2] + "</td></tr>" +
                                            "<tr><td width='50%' style='text-align:right'><b>الطاقة_الاستيعابية:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[3] + "</td></tr>" +
                                            "<tr><td width='50%' style='text-align:right'><b>مواعيد_العمل:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[4] + "</td></tr>" +
                                            
//                                            "<tr><td width='50%' style='text-align:right'><b>Contractor:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[1] + "</td></tr>" +
//                                            "<tr><td width='50%' style='text-align:right'><b>Project Phase:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[2] + "</td></tr>" +
//                                            "<tr><td width='50%' style='text-align:right'><b>Project Type:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[3] + "</td></tr>" +
                                            
                                            "</table></td></tr>" + 
                                            "<tr><td style='height:5px'></td></tr>" + 
                                        "</table>" + 
                                        "</div>",
                                    null, true, onPopupClose);
                    
            feature.popup = popup;
            map.addPopup(popup);
    }
    
        function onFeatureSelectProjectPic(feature) 
        {
            //id, contractor, project_phase, type, project_start_date, project_end_date, contractor_name_arb, project_phase_arb, project_type_arb, picture;
            RemoveAllPopups();    
            selectedFeature = feature;
            popup = new OpenLayers.Popup.FramedCloud("chicken", 
                                    feature.geometry.getBounds().getCenterLonLat(),
                                    null,
                                    "<div dir='rtl'>" + 
                                        "<table >" + 
                                            "<tr><td rowspan='7'></td><td></td><td rowspan='7'></td></tr>" + 
                                            //"<tr><td class=lbl style='text-align:center'><h3>Major Projects 2009</h3></td></tr>" + 
                                            "<tr><td style='text-align:right'>" + 
                                            "<img src='http://maps.jeddah.gov.sa/images/Major Projects 2009/Originals/" + feature.data.toString().split(',')[9] + "' alt='' style='border: solid 1px #000' width='384' /></td></tr>" +
                                            "<tr><td style='height:5px'></td></tr>" + 
                                            "<tr><td><table class=lbl_small width='100%'>" +
                                            "<tr><td width='50%' style='text-align:right'><b>اسم المقاول:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[6] + "</td></tr>" +
                                            "<tr><td width='50%' style='text-align:right'><b>حالة المشروع:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[7] + "</td></tr>" +
                                            "<tr><td width='50%' style='text-align:right'><b>نوع المشروع:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[8] + "</td></tr>" +
                                            "<tr><td width='50%' style='text-align:right'><b>تاريخ بداية المشروع:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[4] + "</td></tr>" +
                                            "<tr><td width='50%' style='text-align:right'><b>تاريخ نهاية المشروع:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[5] + "</td></tr>" +
                                            
//                                            "<tr><td width='50%' style='text-align:right'><b>Contractor:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[1] + "</td></tr>" +
//                                            "<tr><td width='50%' style='text-align:right'><b>Project Phase:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[2] + "</td></tr>" +
//                                            "<tr><td width='50%' style='text-align:right'><b>Project Type:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[3] + "</td></tr>" +
                                            
                                            "</table></td></tr>" + 
                                            "<tr><td style='height:5px'></td></tr>" + 
                                        "</table>" + 
                                        "</div>",
                                    null, true, onPopupClose);
                    
            feature.popup = popup;
            map.addPopup(popup);
        }
        
    function onFeatureSelectTransProj(feature)
    {
        var PopupHtml = "<div dir='rtl'>" + 
                    "<table width='300'>" + 
                        "<tr><td rowspan='7'></td><td></td><td rowspan='7'></td></tr>" + 
                        "<tr><td class=lbl style='text-align:center'><h3>نقاط تقاطع المحاور</h3></td></tr>" + 
                        "<tr><td style='height:5px'></td></tr>" + 
                        "<tr><td><table class=lbl_small width='100%'>" +
//                        "<tr><td width='50%' style='text-align:right'><b>OBJECTID:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[0] + "</td></tr>" +
                        "<tr><td width='50%' style='text-align:right'><b>اسم المشروع:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[1] + "</td></tr>" +
                        "<tr><td width='50%' style='text-align:right'><b>وصف المشروع:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[2] + "</td></tr>" +
                        "<tr><td width='50%' style='text-align:right'><b>مسار IBI المقترح:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[3] + "</td></tr>" +
                        "<tr><td width='50%' style='text-align:right'><b>نوع المشروع:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[4] + "</td></tr>" +
                        "<tr><td width='50%' style='text-align:right'><b>المقاول:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[5] + "</td></tr>" +
                        "<tr><td width='50%' style='text-align:right'><b>التكلفة بالريال:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[6] + "</td></tr>" +
                        "<tr><td width='50%' style='text-align:right'><b>الاستشاري:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[7] + "</td></tr>" +
                        "<tr><td width='50%' style='text-align:right'><b>اسم الطريق الأول:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[8] + "</td></tr>" +
                        "<tr><td width='50%' style='text-align:right'><b>اتجاه الطريق الأول:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[9] + "</td></tr>" +
                        "<tr><td width='50%' style='text-align:right'><b>اسم الطريق الثاني:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[10] + "</td></tr>" +
                        "<tr><td width='50%' style='text-align:right'><b>اتجاه الطريق الثاني:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[11] + "</td></tr>" +
                        "<tr><td width='50%' style='text-align:right'><b>الحالة:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[12] + "</td></tr>" +
                        "<tr><td width='50%' style='text-align:right'><b>تاريخ بداية المشروع:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[13] + "</td></tr>" +
                        "<tr><td width='50%' style='text-align:right'><b>تاريخ نهاية المشروع:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[14] + "</td></tr>" +
                        "<tr><td width='50%' style='text-align:right'><b>ملاحظات:</b></td><td width='50%' style='text-align:right'>" + feature.data.toString().split(',')[15] + "</td></tr>" +
                        "<tr><td width='50%' style='text-align:right; vertical-align:top;'><b>روابط لمشاهدة المشروع:</b></td><td width='50%' style='text-align:right'>";
                        if (feature.data.toString().split(',')[18] != "")
                        {
                            var Media = feature.data.toString().split(',')[18].split(';');
                            for(i=0;i<Media.length; i++)
                            {
                                PopupHtml += "<a href='http://maps.jeddah.gov.sa/images/Transportation_Project/"+Media[i]+"' target='_blank'>"+Media[i]+"</a><br/>";
                            }
                        }
                        else
                        {
                            PopupHtml += "No Links";
                        }
                        PopupHtml += "</td></tr>" +
                        "</table></td></tr>" + 
                        "<tr><td style='height:5px'></td></tr>" + 
                    "</table>" + 
                    "</div>";
        RemoveAllPopups();    
        selectedFeature = feature;
        popup = new OpenLayers.Popup.FramedCloud("chicken", feature.geometry.getBounds().getCenterLonLat(), null, PopupHtml, null, true, onPopupClose);
        feature.popup = popup;
        map.addPopup(popup);
    }

        
    function onGeo940ReviewFeatureSelect(feature)
        {
            RemoveAllPopups();
            selectedFeature = feature;
            
            var ComplaintPeriodString;
            var ComplaintPeriod=feature.data.toString().split(',')[4];
            if(ComplaintPeriod=="0")
            {
                 ComplaintPeriodString="لا يوجد وقت متوقع لهذا البلاغ"
            }
            else
            {
                if(ComplaintPeriod<24)
                {
                    ComplaintPeriodString= ComplaintPeriod + " ساعة  ";
                }
                else
                {
                    ComplaintPeriod=ComplaintPeriod/24;
                    ComplaintPeriodString= ComplaintPeriod + " يوم  ";
                }
            }
            if(flagHaveImage)
            {
            popup = new OpenLayers.Popup.FramedCloud("Geo940Review", 
                                     feature.geometry.getBounds().getCenterLonLat(),
                                     null,
                                     "<div align='right'><table id='tbl1' border='0'>"
                                     +"<tr ><td dir='rtl'>"+ feature.data.toString().split(',')[0] +"  </td><td><strong>:</strong></td><td><strong> رقم البلاغ</strong></td></tr>"
                                     +"<tr><td>"+ feature.data.toString().split(',')[1] +"  </td><td><strong>:</strong></td><td><strong> نوع البلاغ</strong></td></tr>"
                                     +"<tr><td dir='rtl'>"+ feature.data.toString().split(',')[2]+" "+feature.data.toString().split(',')[3]+ " </td><td><strong>:</strong></td><td><strong> وقت البلاغ</strong> </td></tr>"
                                     +"<tr><td dir='rtl'>"+ ComplaintPeriodString +"  </td><td><strong>:</strong></td><td><strong> الوقت المتوقع للإنجاز</strong>  </td></tr>"
                                     +"<tr><td>"+ feature.data.toString().split(',')[5] +"  </td><td><strong>:</strong></td><td><strong> الجهة المختصة</strong> </td></tr>"
                                     +"<tr ><td >"+ feature.data.toString().split(',')[6]+" - "+feature.data.toString().split(',')[7]+" </td><td><strong>:</strong></td><td><strong>اّخر إجراء</strong>  </td></tr>"
                                     +"<tr><td dir='rtl'>"+ feature.data.toString().split(',')[8]+"  </td><td><strong>:</strong></td><td><strong> وقت الإجراء</strong>  </td></tr>"
                                     +"<tr><td>"+ "<img id='strImage' alt='' src='"+feature.data.toString().split(',')[9]+"'height='150' />" +"  </td><td><strong>:</strong></td><td><strong>الصورة المرفقة</strong> </td></tr>" 
                                     +"<tr><td></table> </div>",
                                     null, true, onPopupClose);
           }
          else
          {
             popup = new OpenLayers.Popup.FramedCloud("Geo940Review", 
                                     feature.geometry.getBounds().getCenterLonLat(),
                                     null,
                                     "<div align='right'><table id='tbl1'  border='0'>"
                                     +"<tr ><td dir='rtl'>"+ feature.data.toString().split(',')[0] +"  </td><td><strong>:</strong></td><td><strong> رقم البلاغ</strong></td></tr>"
                                     +"<tr><td>"+ feature.data.toString().split(',')[1] +"  </td><td><strong>:</strong></td><td><strong> نوع البلاغ</strong></td></tr>"
                                     +"<tr><td dir='rtl'>"+ feature.data.toString().split(',')[2]+" "+feature.data.toString().split(',')[3]+ " </td><td><strong>:</strong></td><td><strong> وقت البلاغ</strong> </td></tr>"
                                     +"<tr><td dir='rtl'>"+ ComplaintPeriodString +"  </td><td><strong>:</strong></td><td><strong> الوقت المتوقع للإنجاز</strong>  </td></tr>"
                                     +"<tr><td>"+ feature.data.toString().split(',')[5] +"  </td><td><strong>:</strong></td><td><strong> الجهة المختصة</strong> </td></tr>"
                                     +"<tr ><td >"+ feature.data.toString().split(',')[6]+" - "+feature.data.toString().split(',')[7]+" </td><td><strong>:</strong></td><td><strong>اّخر إجراء</strong>  </td></tr>"
                                     +"<tr><td dir='rtl'>"+ feature.data.toString().split(',')[8]+"  </td><td><strong>:</strong></td><td><strong> وقت الإجراء</strong>  </td></tr>"
                                     +"<tr><td></table> </div>",
                                     null, true, onPopupClose);
          }
                                     
            feature.popup = popup;
            map.addPopup(popup);
        }
        
    function onFeatureUnselect(feature) 
        {
            map.removePopup(feature.popup);
            feature.popup.destroy();
            feature.popup = null;
        }

        var map, layer;
        var GPSvector,vector, queryPointLayer,searchResultLayer, landmarkLayer, landmarkPicLayer, projectPicLayer,slaughterhouseLayer, Geo940ReviewLayer, wms_edig, wms_BldgNo, transProjLayer;
        
        var gmap,gsat ,ghyb,tms_vector,tms_raster10,tms_raster06,tms_subdivision,tms_masterPlan ,tms_hybrid,tms_regulations, tms_publicfacilities,tms_GeoEyeDec2009,tms_GeoEyeJul2009;
        var viewRegulation = true,gml_layer;
        
        var esri_wms_image_type = "png";
        if(BrowserDetect.version == 6)
        {
            esri_wms_image_type = "gif";
        }
        
        var vector_labels_WMS, raster_labels_WMS,en_vector_labels_WMS, en_raster_labels_WMS;
        var Cleaning_WMS;
        
        var _panel;
        var version = "1.0.1";
        var lblversion = "1.0.4";
       // var currview = "vector;png;1.0.4,labels;png;1.0.4";
        // Map Initiation
        
    function setlang(lang)
        {
            
        }
    function initMap()
        {
        
            // get the tiles version
            if(queryString("ver") != "0")
                version = queryString("ver");
                
            var X = 0;
            var Y = 0;
            var ZL = 0;
            var MapView = 'Vector';
            var Lang ='AR';
            if(window.location.hash != "" && window.location.hash != '#')
            {
                X = GetHashValue('X');
                Y = GetHashValue('Y');
                ZL = GetHashValue('ZL');
                if(GetHashValue('MV') != 0)
                    MapView = GetHashValue('MV');
                if(GetHashValue('LANG') != 0)
                {
                    Lang = GetHashValue('LANG');
                    setlang(Lang);
                }
            }

            // To solve cross domain access violation exception
            //OpenLayers.ProxyHost = "CGI/proxy.cgi?url=";
            
            var options = {controls: [],
            maxExtent: new OpenLayers.Bounds(-20037508, -20037508,
                                                     20037508, 20037508.34),
            projection: new OpenLayers.Projection("EPSG:0"),
            numZoomLevels: 10,
            //resolutions: new Array(19.10925708,9.554628538,4.777314269,2.388657134, 1.194328567 ,0.597164284,0.298582142,0.149291071), 
           
            displayProjection: new OpenLayers.Projection("EPSG:4326"),
            units: "m",
            
            maxResolution: 152.8740566
            };           
            

            map = new OpenLayers.Map('Map_Panel',options);
            
// create a vector layer for drawing
            vector = new OpenLayers.Layer.Vector("Editable Vectors1");
            GPSvector = new OpenLayers.Layer.Vector("Editable Vectors2");

            queryPointLayer = new OpenLayers.Layer.Vector(
                "Query Point",
                {
                    styleMap: new OpenLayers.StyleMap({
                        // Set the external graphic and background graphic images.
                        externalGraphic: "img/query.png",
			            graphicXOffset: -13,
                        graphicYOffset: -25,                        
                        pointRadius: 15
                    }),
                    isBaseLayer: false,
                    rendererOptions: {yOrdering: true}
                }
            );
            
                             SPCookieValues_ToWrite="";
            ShortestPathToLayer = new OpenLayers.Layer.Vector(
            "ShortestPath",
            {
                isBaseLayer: false,
                rendererOptions: {yOrdering: true}
            }
        );
            
            searchResultLayer = new OpenLayers.Layer.Vector("search Result Layer");
            landmarkLayer = new OpenLayers.Layer.Vector("Landmarks Result Layer");
            //Geo940QueryInfoLayer= new OpenLayers.Layer.Vector("Geo940QueryInfoLayer");
            landmarkPicLayer = new OpenLayers.Layer.Vector("Landmarks Thumbnail Layer");
            projectPicLayer = new OpenLayers.Layer.Vector("Project Thumbnail Layer");
            slaughterhouseLayer=new OpenLayers.Layer.Vector("slaughterhouse Thumbnail Layer");
            transProjLayer = new OpenLayers.Layer.Vector("Transportation Project Layer");
            Geo940ReviewLayer= new OpenLayers.Layer.Vector("Geo940 Review Layer");
            
            selectControl = new OpenLayers.Control.SelectFeature(searchResultLayer,
                {hover: true, onSelect: onFeatureSelect/*, onUnselect:onFeatureUnselect*/});
            
            landmarkSelectControl = new OpenLayers.Control.SelectFeature(landmarkLayer,
                {hover: true, onSelect: onFeatureSelectLandMark/*, onUnselect:onFeatureUnselect*/});
                
//              Geo940QueryInfoSelectControl = new OpenLayers.Control.SelectFeature(Geo940QueryInfoLayer,
//               {hover: true, onSelect: onFeatureSelectGeo940QueryInfoPic/*, onUnselect:onFeatureUnselect*/});
                
            landmarkPicSelectControl = new OpenLayers.Control.SelectFeature(landmarkPicLayer,
                {click: true, onSelect: onFeatureSelectLandMarkPic/*, onUnselect:onFeatureUnselect*/});
            
            projectPicSelectControl = new OpenLayers.Control.SelectFeature(projectPicLayer,
                {click: true, onSelect: onFeatureSelectProjectPic/*, onUnselect:onFeatureUnselect*/});  
                
                 slaughterhouseLayerSelectControl = new OpenLayers.Control.SelectFeature(slaughterhouseLayer,
                {click: true, onSelect: onFeatureSelectslaughterhouse, onUnselect:onFeatureUnselect});    
                
            
                
            transProjSelectControl = new OpenLayers.Control.SelectFeature(transProjLayer,
                {click: true, onSelect:onFeatureSelectTransProj});
                
            map.addControl(new OpenLayers.Control.PanZoomBar());
            map.addControl(new OpenLayers.Control.Navigation());
//            map.addControl(new OpenLayers.Control.Permalink());
//            map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':false}));
            map.addControl(new OpenLayers.Control.ScaleLine());


            map.addControl(new OpenLayers.Control.MousePosition({prefix: '(WGS84) Lon:', separator: ' Lat: ', displayProjection: new OpenLayers.Projection("EPSG:4326") })); 
            //map.addControl(new OpenLayers.Control.MousePosition());
//            map.addControl(new OpenLayers.Control.EditingToolbar(vector));
//            map.addControl(new OpenLayers.Control.OverviewMap());
//            map.addControl(new OpenLayers.Control.KeyboardDefaults());
            
            /*
                http://212.62.125.243/arcgis/services/JE_Vector_Lables/MapServer/WMSServer
            */
            vector_labels_WMS = new OpenLayers.Layer.WMS("Vector Labels WMS",
                "http://jedexwms01.jeddah.gov.sa/arcgis/services/JE_Vector_Labels/MapServer/WMSServer",           
                {layers: '0,1,2,3,4,5,6' ,transparent:true,format:'image/' + esri_wms_image_type},
                        {
                        'isBaseLayer': false, 'singleTile': true,
                        'buffer': 1 ,
                        transitionEffect : 'resize','visibility' : true
                        }
                  );
                  
             raster_labels_WMS = new OpenLayers.Layer.WMS("Raster Labels WMS",
                "http://jedexwms01.jeddah.gov.sa/arcgis/services/JE_Raster_Labels/MapServer/WMSServer?",           
                {layers: '0,1,2,3,4,5,6' ,transparent:true,format:'image/' + esri_wms_image_type},
                        {
                        'isBaseLayer': false, 'singleTile': true,
                        'buffer': 1 ,
                        transitionEffect : 'resize',
                        'visibility' : false
                        }
                  );
                  
                en_vector_labels_WMS = new OpenLayers.Layer.WMS("Vector Labels WMS",
                "http://jedexwms01.jeddah.gov.sa/arcgis/services/EN_JE_Vector_Labels/MapServer/WMSServer",           
                {layers: '0,1,2,3,4,5,6' ,transparent:true,format:'image/' + esri_wms_image_type},
                        {
                        'isBaseLayer': false, 'singleTile': true,
                        'buffer': 1 ,
                        transitionEffect : 'resize',
                        'visibility' : false
                        }
                  );
                  
             en_raster_labels_WMS = new OpenLayers.Layer.WMS("Raster Labels WMS",
                "http://jedexwms01.jeddah.gov.sa/arcgis/services/EN_JE_Raster_Labels/MapServer/WMSServer?",           
                {layers: '0,1,2,3,4,5,6' ,transparent:true,format:'image/' + esri_wms_image_type},
                        {
                        'isBaseLayer': false, 'singleTile': true,
                        'buffer': 1 ,
                        transitionEffect : 'resize',
                        'visibility' : false
                        }
                  );
                  
            Cleaning_WMS = new OpenLayers.Layer.WMS("Vector Labels WMS",
                "http://jedexwms01.jeddah.gov.sa/arcgis/services/Cleaning/MapServer/WMSServer?",           
                {layers: '0,1,2,3' ,transparent:true,format:'image/' + esri_wms_image_type},
                        {
                        'isBaseLayer': false, 'singleTile': true,
                        'buffer': 1 ,
                        transitionEffect : 'resize','visibility' : false
                        }
                  );
                    
            tms_vector = new OpenLayers.Layer.TMS(
                    "Vector",
                    //"/TMS/" + version + "/vector/",
                    //["/TMS/1.0.6/vector/","http://gisapp01d/tms2/1.1.0/vector/"],
                    "/TMS/1.0.6/vector/",
                    {
                    type: 'png', getURL: getTMS_URL,
                    displayOutsideMaxExtent: false,
                    attribution: '<a href="http://www.openstreetmap.org/">OpenStreetMap</a>',
                    'buffer':1,
                    transitionEffect : 'resize'
                    }
                    );
            
//            tms_hybrid = new OpenLayers.Layer.TMS(
//                        "Hybrid",
//                        "/TMS/" + lblversion + "/hybrid/",
//                        {
//                            type: 'png', getURL: getTMS_URL,
//                            displayOutsideMaxExtent: false,
//                            attribution: '<a href="http://www.openstreetmap.org/">OpenStreetMap</a>',
//                            'buffer':1,
//                            transitionEffect : 'resize'
//                        }
//                    );

            tms_raster10 = new OpenLayers.Layer.TMS(
                        "IKONOS",
                        "/TMS/1.0.8/ikonos/",
                        {
                            type: 'jpg', getURL: getTMS_URL,
                            displayOutsideMaxExtent: false,
                            attribution: '<a href="http://www.openstreetmap.org/">OpenStreetMap</a>',
                            'buffer':1,
                            transitionEffect : 'resize'
                        }
                    );
                    
            tms_raster06 = new OpenLayers.Layer.TMS(
                        "QuickBird",
                        "/TMS/" + version + "/quickbird/",
                        {
                            type: 'jpg', getURL: getTMS_URL,
                            displayOutsideMaxExtent: false,
                            attribution: '<a href="http://www.openstreetmap.org/">OpenStreetMap</a>',
                            'buffer':1,
                            transitionEffect : 'resize'
                        }
                    );
                    
            tms_subdivision = new OpenLayers.Layer.TMS(
                        "SubDivision",
                        "/TMS/" + version + "/subdivision/",
                        {
                            type: 'jpg', getURL: getTMS_URL,
                            displayOutsideMaxExtent: false,
                            attribution: '<a href="http://www.openstreetmap.org/">OpenStreetMap</a>',
                            'buffer':1,
                            transitionEffect : 'resize', 'isBaseLayer': false ,'visibility': false
                        }
                    );
                    
             tms_masterPlan = new OpenLayers.Layer.TMS(
                        "MasterPlan",
                        //"/TMS/" + version + "/masterplan/",
                        //"/TMS/1.0.1/masterplan/",
                        "/TMS/1.1.0/geoeyedec2009/",
                        {
                            type: 'jpg',
                            getURL: getTMS_URL,
                            displayOutsideMaxExtent: false,
                            attribution: '<a href="http://www.openstreetmap.org/">OpenStreetMap</a>',
                            'buffer':1,
                            transitionEffect : 'resize', 'isBaseLayer': false ,'visibility': false
                        }
                    );
                    
            tms_regulations = new OpenLayers.Layer.TMS(
                        "Regulation Lines",
                        "/TMS/" + version + "/reglines1000/",
                        {
                            type: 'jpg', getURL: getTMS_URL,
                            displayOutsideMaxExtent: false,
                            attribution: '<a href="http://www.openstreetmap.org/">OpenStreetMap</a>',
                            'buffer':1,
                            transitionEffect : 'resize' , 'isBaseLayer': false ,'visibility': false
//                            ,'isBaseLayer': false,
//                             transparent: "true", format: "image/png",
//                             opacity: 0.2
                        }
                    );
                    
                    
            tms_publicfacilities = new OpenLayers.Layer.WMS("PublicFacilitiesLayers",
                    "http://maps.jeddah.gov.sa/WMS_PublicFacilities/Request.aspx",
                    {   
                        layers:"GIS.PUBLICFACILITIESSTYLES,GIS.PUBLICFACILITIESSTYLES1,GIS.PUBLICFACILITIESSTYLES2"
                        ,transparent:true
                        ,format:'image/png'
                    },
                    {
                        'isBaseLayer': false 
                        ,'singleTile': true 
                        ,'visibility': false
                        ,'buffer':1
                        ,transitionEffect : 'resize'
                    }
                );
                    
            wms_edig = new OpenLayers.Layer.WMS("940Layer",
                    "http://maps.jeddah.gov.sa/WMS_eDig/Request.aspx",           
                    {
                        layers:"DVW_DIGGING_PERMITS_GEO,DL,ELH,ELP,GIL,SL,SLL,SWL,TL,WL"
                        ,transparent:false
                        ,format:'image/gif'
                    },
                    {
                        'isBaseLayer': false 
                        ,'singleTile': true
                        ,'visibility': false
                        ,'buffer':1
                        ,transitionEffect :'resize'
                    }
                );
                
            wms_BldgNo= new OpenLayers.Layer.WMS("940Layer",
                    "http://maps.jeddah.gov.sa/WMS_BldgNo/Request.aspx",           
                    {
                        layers:"P_Number"
                        ,transparent:false
                        ,format:'image/gif'
                    },
                    {
                        'isBaseLayer': false 
                        ,'singleTile': true
                        ,'visibility': false
                        ,'buffer':1
                        ,transitionEffect :'resize'
                    }
                );
                
                tms_GeoEyeDec2009 = new OpenLayers.Layer.TMS(
                        "GeoEyeDec2009",
                        "/TMS/1.1.0/GeoEyeDec2009/",
                        {
                            type: 'jpg', getURL: getTMS_URL,
                            displayOutsideMaxExtent: false,
                            attribution: '<a href="http://www.openstreetmap.org/">OpenStreetMap</a>',
                            'buffer':1,
                            transitionEffect : 'resize'
                        }
                    );
                    
               tms_GeoEyeJul2009 = new OpenLayers.Layer.TMS(
                        "GeoEyeJul2009",
                        "/TMS/1.1.0/GeoEyeJul2009/",
                        {
                            type: 'jpg', getURL: getTMS_URL,
                            displayOutsideMaxExtent: false,
                            attribution: '<a href="http://www.openstreetmap.org/">OpenStreetMap</a>',
                            'buffer':1,
                            transitionEffect : 'resize'
                        }
                    );
            
            // ShowLoading for layers
            tms_vector.events.register('loadstart', map, LayerLoadStart);
            tms_vector.events.register('loadend', map, LayerLoadEnd);
            
//            tms_hybrid.events.register('loadstart', map, LayerLoadStart);
//            tms_hybrid.events.register('loadend', map, LayerLoadEnd);
            
            tms_raster10.events.register('loadstart', map, LayerLoadStart);
            tms_raster10.events.register('loadend', map, LayerLoadEnd);
            
            tms_raster06.events.register('loadstart', map, LayerLoadStart);
            tms_raster06.events.register('loadend', map, LayerLoadEnd);
            
            tms_regulations.events.register('loadstart', map, LayerLoadStart);
            tms_regulations.events.register('loadend', map, LayerLoadEnd);
            
            tms_subdivision.events.register('loadstart', map, LayerLoadStart);
            tms_subdivision.events.register('loadend', map, LayerLoadEnd);

            tms_publicfacilities.events.register('loadstart', map, LayerLoadStart);
            tms_publicfacilities.events.register('loadend', map, LayerLoadEnd);
            
            wms_edig.events.register('loadstart', map, LayerLoadStart);
            wms_edig.events.register('loadend', map, LayerLoadEnd);
            
            wms_BldgNo.events.register('loadstart', map, LayerLoadStart);
            wms_BldgNo.events.register('loadend', map, LayerLoadEnd);
            
            vector_labels_WMS.events.register('loadstart', map, LayerLoadStart);
            vector_labels_WMS.events.register('loadend', map, LayerLoadEnd);
            raster_labels_WMS.events.register('loadstart', map, LayerLoadStart);
            raster_labels_WMS.events.register('loadend', map, LayerLoadEnd);
            en_vector_labels_WMS.events.register('loadstart', map, LayerLoadStart);
            en_vector_labels_WMS.events.register('loadend', map, LayerLoadEnd);
            en_raster_labels_WMS.events.register('loadstart', map, LayerLoadStart);
            en_raster_labels_WMS.events.register('loadend', map, LayerLoadEnd);
            
            tms_GeoEyeDec2009.events.register('loadstart', map, LayerLoadStart);
            tms_GeoEyeDec2009.events.register('loadend', map, LayerLoadEnd);
            
            tms_GeoEyeJul2009.events.register('loadstart', map, LayerLoadStart);
            tms_GeoEyeJul2009.events.register('loadend', map, LayerLoadEnd);
            
            Cleaning_WMS.events.register('loadstart', map, LayerLoadStart);
            Cleaning_WMS.events.register('loadend', map, LayerLoadEnd);
            /////////
                    
            map.addControl(selectControl);
            //map.addControl(Geo940QueryInfoSelectControl);
            map.addControl(landmarkSelectControl); 
            map.addControl(landmarkPicSelectControl);
            map.addControl(projectPicSelectControl);
            map.addControl(slaughterhouseLayerSelectControl);
            map.addControl(transProjSelectControl);
                
            selectControl.activate();
            //Geo940QueryInfoSelectControl.activate();
            landmarkSelectControl.activate();
            landmarkPicSelectControl.activate();
            projectPicSelectControl.activate();
            slaughterhouseLayerSelectControl.activate();
            transProjSelectControl.activate();
            
  
            OpenLayers.Util.onImageLoadErrorColor = "transparent";
           
            map.addLayers([tms_vector,tms_raster10,tms_raster06,tms_subdivision,tms_masterPlan,tms_regulations,tms_GeoEyeDec2009,tms_GeoEyeJul2009,tms_publicfacilities,Cleaning_WMS,vector_labels_WMS,raster_labels_WMS,en_vector_labels_WMS,en_raster_labels_WMS,wms_edig,wms_BldgNo,queryPointLayer,vector,GPSvector,searchResultLayer,landmarkLayer,landmarkPicLayer,projectPicLayer/*,slaughterhouseLayer*/,transProjLayer]);
            map.events.register('moveend', map, MapMoveEnd);
            
          
            
           /***********************************************************/
            
            if (X != 0 && Y != 0)
            {
              ZoomToPoint(X, Y, ZL, MapView);
            }
            else
                map.zoomToExtent(new OpenLayers.Bounds(4353362.165933,2456988.755503,4361017.404717,2465302.101828));
                
                
                  DrawSlaughterhouseData();
        
        }
        
        /* Map Event Handlers */
        var landmarksScale = 6;
        var landmarksPicScale = 5;
        var projectPicScale = 5;
        var transProjScale = 5
        var landmarksExtentChange = 2;
        var prevExtent;
        var currentZoomLevel = 0;
        var firstZoomLevel = 10;
        var curMV = "Vector";
        
    function MapMoveEnd(evt)
        {
            if(map.getZoom() != null)
                currentZoomLevel = map.getZoom();
            
            if(currentZoomLevel + firstZoomLevel < 15)
            {
                document.getElementById('publicfacilities').checked = false;
                showPublicFacilities(false);
                
                document.getElementById('eDig').checked = false;
                showEDig(false);
                
                document.getElementById('landmarkPicLayer').checked = false;
                showLandmarkPicLayer(false);
                
                document.getElementById('projectPicLayer').checked = false;
                showProjectPicLayer(false);
                
                document.getElementById('transProjLayer').checked = false;
                showTransProjLayer(false);
            }
            
            if(currentZoomLevel + firstZoomLevel < 18)
            {
                document.getElementById('BldgNo').checked = false;
                showBldgNo(false);
            }
                
            if(tms_publicfacilities.visibility == true)
            {                    
                DrawIntersectedLandmarksData(false);
            }
            
            checkShowLandmarkPicLayer(false);
            checkShowProjectPicLayer(false);
            checkShowTransProjLayer(false);
		  
            // Save X,Y values in the beside the URL
            var centX = map.getCenter().lon;
            var centY = map.getCenter().lat;
            var ZL = map.zoom;
            window.location.hash = "X=" + centX + "&Y=" + centY + "&ZL=" + ZL + "&MV=" + curMV;
        }
        //
    function DrawIntersectedLandmarksData(fromChkBox)
        {
            var mapExtent = map.getExtent();
                
            var extent_900913 = mapExtent.toBBOX();
            
            var extent = TransformExtent(extent_900913, GOOGLE_PRJ, WGS84_Z37_PRJ);
            
            if(currentZoomLevel >= landmarksScale)
            {
                if(IsExtentChanged(extent) || fromChkBox)
                    CallServer(extent ,"GetIntersectedLandmarks");
            }
            else
                if(IsExtentChanged(extent))
                    ClearGraphicLayer(landmarkLayer);
                    
            if(extent.indexOf('-') == -1)
                    prevExtent = extent;
        }
                //
    function DrawIntersectedLandmarksPicData(fromChkBox)
        {
            var mapExtent = map.getExtent();
                
            var extent_900913 = mapExtent.toBBOX();
            
            var extent = TransformExtent(extent_900913, GOOGLE_PRJ, WGS84_Z37_PRJ);
            
            if(currentZoomLevel >= landmarksPicScale)
            {
                if(IsExtentChanged(extent) || fromChkBox)
                    CallServer(extent ,"GetIntersectedLandmarksPic");
            }
            else
                if(IsExtentChanged(extent))
                    ClearGraphicLayer(landmarkPicLayer);
                    
            if(extent.indexOf('-') == -1)
                    prevExtent = extent;
        }
    function DrawIntersectedProjectPicData(fromChkBox)
        {
            var mapExtent = map.getExtent();
                
            var extent_900913 = mapExtent.toBBOX();
            
            var extent = TransformExtent(extent_900913, GOOGLE_PRJ, WGS84_Z37_PRJ);
            
            if(currentZoomLevel >= projectPicScale)
            {
                if(IsExtentChanged(extent) || fromChkBox)
                    CallServer(extent ,"GetIntersectedProjectPic");
            }
            else
                if(IsExtentChanged(extent))
                    ClearGraphicLayer(projectPicLayer);
                    
            if(extent.indexOf('-') == -1)
                    prevExtent = extent;
        }
        
        function DrawSlaughterhouseData()
        {
            var mapExtent = map.getExtent();
                
            var extent_900913 = mapExtent.toBBOX();
            
            var extent = TransformExtent(extent_900913, GOOGLE_PRJ, WGS84_Z37_PRJ);
            
            CallServer(extent ,"GetSlaughterhouseData");
        }
        //
        
    function DrawIntersectedTransProjData(fromChkBox)
        {
            var mapExtent = map.getExtent();
                
            var extent_900913 = mapExtent.toBBOX();
            
            var extent = TransformExtent(extent_900913, GOOGLE_PRJ, WGS84_Z37_PRJ);
            
            if(currentZoomLevel >= transProjScale)
            {
                if(IsExtentChanged(extent) || fromChkBox)
                    CallServer(extent ,"GetIntersectedTransProj");
            }
            else
                if(IsExtentChanged(extent))
                    ClearGraphicLayer(transProjLayer);
                    
            if(extent.indexOf('-') == -1)
                    prevExtent = extent;
        }
        //
    function LayerLoadStart(evt)
        {
            ShowHideLoading(true);
        }   
        
    function LayerLoadEnd(evt)
        {            
            ShowHideLoading(false);
            
            ShowFirstLoad();
        }
        
        //
    function IsExtentChanged(newExtent)
        { 
            if(newExtent.indexOf('-') != -1)
                return false;
                
            var oldXMIN = 0;
            if(prevExtent != null)
                oldXMIN = parseFloat(prevExtent.split(',')[0]);
                
            var newXMIN = parseFloat(newExtent.split(',')[0]);
            if(Math.abs(oldXMIN - newXMIN) >= landmarksExtentChange)
                return true;

            return false;
        }
        //
        //var version = "1.0.0";
        
    function getTMS_URL (bounds) {
            bounds = this.adjustBounds(bounds);
            var res = this.map.getResolution();
            var x = Math.round((bounds.left - this.tileOrigin.lon) / (res * this.tileSize.w));
            var y = Math.round((bounds.bottom - this.tileOrigin.lat) / (res * this.tileSize.h));
            var z = this.map.getZoom();
            var path = (z + firstZoomLevel) + "/" + x + "/" + y + "." + this.type; 
            var url = this.url;
            if (url instanceof Array) {
                url = this.selectUrl(path, url);
            }
            
//            var urlArr = url.split('/');
//            var newURL = '/' + urlArr[1] + version + '/' + urlArr[2] + '/';
            
//            var lblchkbox = null;
//            if(document.getElementById("labels") != null)
//                lblchkbox = document.getElementById("labels");
                
            var retURL = url + path;
            
//            if(lblchkbox != null && lblchkbox.checked)
//            {
//                retURL = "http://maps.jeddah.gov.sa/TMS/1.0.4/hybrid/" + path + "?layers=" + currview ;
//            }
            
            return retURL;
        }
        //
    function ZoomToMBR(extent)
        {
            // remove all features
            vector.removeFeatures(vector.features);
            
            //var newExtent_wgs84 = extent.split(',');
            var newExtent = TransformExtent(extent, WGS84_Z37_PRJ, GOOGLE_PRJ).split(',');   
            
            var ext = new OpenLayers.Bounds(newExtent[0] , newExtent[1] ,
                                                 newExtent[2], newExtent[3])

            if(newExtent[0] == newExtent[2])
                ext = new OpenLayers.Bounds(parseFloat(newExtent[0]) - 250 , parseFloat(newExtent[1])  ,
                                                 parseFloat(newExtent[2]) + 250 , parseFloat(newExtent[3]) )
            map.zoomToExtent(ext);
        }
        //
        //var extentExtend = 300;
    function ZoomToPoint(X, Y, ZL, MV)
            {
                var ext = new OpenLayers.Bounds(X, Y, X, Y)
                SetBaseMap(MV);
                map.zoomToExtent(ext);
                map.zoomTo(parseInt(ZL));
                
//                var feature = [];
//                ClearGraphicLayer(vector);
//                
//                feature.push(
//                new OpenLayers.Feature.Vector(
//                    new OpenLayers.Geometry.Point(X , Y)
//                    ));
//                        
//                vector.addFeatures(feature);
            }
        //
    function DrawMultiPoint(vertices)
        {
            var verticesPoints_wgs84 = vertices.split('#');
            
            var verticesPoints = TransformPoints(verticesPoints_wgs84, WGS84_Z37_PRJ, GOOGLE_PRJ);
            
            if(verticesPoints[0] == verticesPoints[verticesPoints.length])
                DrawPolygon(verticesPoints);
            else
                DrawLine(verticesPoints);
        }
        //
    function DrawLine(verticesPoints)
        {
            var feature = [];
            var points = [];
            
            var pointX,pointY;
            for(var i = 0 ; i < verticesPoints.length ; i++)
            {
                pointX = parseFloat(verticesPoints[i].split(',')[0]);
                pointY = parseFloat(verticesPoints[i].split(',')[1]);
                points.push(new OpenLayers.Geometry.Point(pointX , pointY));
            }

            var lp = new OpenLayers.Geometry.LineString(points);

            var style_mark = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
            style_mark.fillOpacity = 0;
            style_mark.strokeColor = "#00ff00";
            style_mark.strokeWidth = 5;
            style_mark.strokeOpacity = 0.5;
            
            feature.push(
            new OpenLayers.Feature.Vector(lp,null,style_mark)
                        );
            vector.addFeatures(feature);
        }
        //
    function DrawPolygon(verticesPoints)
        {
//            var verticesPoints = vertices.split('#');
            
            var feature = [];

            var lp = new OpenLayers.Geometry.LinearRing();
            var pointX,pointY;
            for(var i = 0 ; i < verticesPoints.length ; i++)
            {
                pointX = parseFloat(verticesPoints[i].split(',')[0]);
                pointY = parseFloat(verticesPoints[i].split(',')[1]);
                lp.addComponent(new OpenLayers.Geometry.Point(pointX , pointY),i);
            }

            var style_mark = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
            style_mark.fillOpacity = 0;
            style_mark.strokeColor = "#00ff00";
            style_mark.strokeWidth = 5;
            style_mark.strokeOpacity = 0.5;
            
            feature.push(
            new OpenLayers.Feature.Vector(
                new OpenLayers.Geometry.Polygon(lp),null,style_mark
                ));
                    
            vector.addFeatures(feature);
        }
        
    function ClearGraphicLayer(vectorLayer)
        {
            if(selectedFeature != null && selectedFeature.popup != null)
                onPopupClose();
            
            selectedFeature = null;
            
            vectorLayer.removeFeatures(vectorLayer.features);
        }
        
    function DrawSearchResultPoints(SearchPoints)
        {
            ClearGraphicLayer(searchResultLayer);
            ClearGraphicLayer(vector);
//            ActivateControl('Search');
            
            if(SearchPoints == "")
                return ;
            
            var pointData = SearchPoints.split(';');
            
            var points_wgs84 ;
            var names;
            
            points_wgs84 = pointData[0].split('#');
            names = pointData[1].split('#');
            
             
            var points = TransformPoints(points_wgs84, WGS84_Z37_PRJ, GOOGLE_PRJ);

            var lp = 0;
            for(lp = 0 ; lp < points.length ; lp++)
            {
                var pos=names[lp].indexOf("عنوان",0)
                if(points.length==1&&pos>=0)
                {
                        ZoomToMBR(points_wgs84[lp]+ "," +points_wgs84[lp]);
                        DrawPoint(points_wgs84[lp]);
                }
                DrawSearchPoint(lp+1,points[lp],names[lp]);
             }
            
                
            if(pointData[2] != null) // Draw NS buffer
            {
                var pars = pointData[2].split(',');
                
                DrawCircle(pars[0],pars[1],pars[2])
            }
        }
        
    function RenderLandmarksPoints(SearchPoints)
        {
        
            ClearGraphicLayer(landmarkLayer);
//            ActivateControl('Landmark');
            
            if(SearchPoints == "")
                return ;
            
            var points = SearchPoints.split('#');
            
            var lp = 0;
            for(lp = 0 ; lp < points.length ; lp++)
                DrawLandmarksPoints(points[lp]);
        }
        
    function DrawLandmarksPoints(point)  
        {

            var feature = [];
            var pointX,pointY,landmarkName,ID,Type,Sub_Type;
            landmarkName = point.split(',')[0];
            ID           = point.split(',')[1];
            CatID         = point.split(',')[2];
            TypeID         = point.split(',')[5];
          //  Sub_Type     = point.split(',')[3];
            
            pointX = parseFloat(point.split(',')[3]);
            pointY = parseFloat(point.split(',')[4]);
            var point = new OpenLayers.Geometry.Point(pointX,pointY);
            var point_900913 = Transform_To_900913(point);
            
            var style_mark = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
            style_mark.graphicWidth = 20;
            style_mark.graphicHeight = 20;
            style_mark.graphicXOffset = -(style_mark.graphicWidth/2);  // this is the default value
            style_mark.graphicYOffset = -style_mark.graphicHeight ;
            style_mark.externalGraphic = "img/flag.gif";
            style_mark.graphicOpacity = 0.001;
            style_mark.cursor = "hand";

            feature.push(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(point_900913.x , point_900913.y),null,style_mark));

            feature[0].data = landmarkName+","+ID+","+CatID+","+TypeID;
           
//            
            landmarkLayer.addFeatures(feature);
            
        }
        /**************************************************************/
         function RenderSlaughterhouseDataPoints(SearchPoints)
        {
            ClearGraphicLayer(slaughterhouseLayer);
            
            if(SearchPoints == "")
                return ;
            
            var points = SearchPoints.split('#');
            
            var lp = 0;
            for(lp = 0 ; lp < points.length ; lp++)
                DrawSlaughterhouseDataPoints(points[lp]);
        }
        
    function DrawSlaughterhouseDataPoints(point)  
        {
            var feature = [];
            var pointX,pointY,Name,type,Company,Capacity,WorkingHours;
            Name                = point.split(',')[0];
            type                = point.split(',')[1];
            Company             = point.split(',')[2];
            Capacity            = point.split(',')[3];
            WorkingHours        = point.split(',')[4];
            pointX = parseFloat(point.split(',')[5]);
            pointY = parseFloat(point.split(',')[6]);
            var point = new OpenLayers.Geometry.Point(pointX,pointY);
            var point_900913 = Transform_To_900913(point);
            
            var style_mark = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
            
 
            style_mark.graphicWidth = 50;
            style_mark.graphicHeight = 50; 
            style_mark.externalGraphic = "http://maps.jeddah.gov.sa/images/maasalekh/cheep.jpg";
            
            style_mark.graphicTitle = Name;
            style_mark.graphicZIndex = 1;
            style_mark.graphicOpacity = 1;
            style_mark.cursor = "pointer";
            
            style_mark.graphicXOffset = -(style_mark.graphicWidth/2);  // this is the default value
            style_mark.graphicYOffset = -(style_mark.graphicHeight/2);
            
            feature.push(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(point_900913.x , point_900913.y),null,style_mark));
            feature[0].data = Name+","+type+","+Company+","+Capacity+","+WorkingHours;
          
            slaughterhouseLayer.addFeatures(feature);
        }
        /***************************************************************/
        //
    function RenderProjectPicPoints(SearchPoints)
        {
            ClearGraphicLayer(projectPicLayer);
            
            if(SearchPoints == "")
                return ;
            
            var points = SearchPoints.split('#');
            
            var lp = 0;
            for(lp = 0 ; lp < points.length ; lp++)
                DrawProjectPicPoints(points[lp]);
        }
        
    function DrawProjectPicPoints(point)  
        {
            var feature = [];
            var pointX,pointY,id,contractor,project_phase,type,project_start_date,project_end_date,contractor_name_arb,project_phase_arb,project_type_arb,picture;
            id                  = point.split(',')[0];
            contractor          = point.split(',')[1];
            project_phase       = point.split(',')[2];
            type                = point.split(',')[3];
            project_start_date  = point.split(',')[4];
            project_end_date    = point.split(',')[5];
            contractor_name_arb = point.split(',')[6];
            project_phase_arb   = point.split(',')[7];
            project_type_arb    = point.split(',')[8];
            picture             = point.split(',')[9];
            pointX = parseFloat(point.split(',')[10]);
            pointY = parseFloat(point.split(',')[11]);
            var point = new OpenLayers.Geometry.Point(pointX,pointY);
            var point_900913 = Transform_To_900913(point);
            
            var style_mark = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
            
            if(currentZoomLevel + firstZoomLevel < 18)
            {
                style_mark.graphicWidth = 44;
                style_mark.graphicHeight = 32; 
                style_mark.externalGraphic = "http://maps.jeddah.gov.sa/images/Major Projects 2009/thumbs32/" + picture;
            }
            else
            {
                style_mark.graphicWidth = 85;
                style_mark.graphicHeight = 64; 
                style_mark.externalGraphic = "http://maps.jeddah.gov.sa/images/Major Projects 2009/thumbs64/" + picture;
            }
            style_mark.graphicTitle = id;
            style_mark.graphicZIndex = 1;
            style_mark.graphicOpacity = 1;
            style_mark.cursor = "pointer";
            
            style_mark.graphicXOffset = -(style_mark.graphicWidth/2);  // this is the default value
            style_mark.graphicYOffset = -(style_mark.graphicHeight/2);
            
            feature.push(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(point_900913.x , point_900913.y),null,style_mark));
            feature[0].data = id+","+contractor+","+project_phase+","+type+","+project_start_date+","+project_end_date+","+contractor_name_arb+","+project_phase_arb+","+project_type_arb+","+picture;
          
            projectPicLayer.addFeatures(feature);
        }
        
    function RenderTransProjPoints(SearchPoints)
        {
            ClearGraphicLayer(transProjLayer);
            
            if(SearchPoints == "")
                return ;
            
            var points = SearchPoints.split('#');
            
            var lp = 0;
            
            points[points.length] = points[0];
            
            var sURLList = "";
            for(lp=0; lp<points.length-1; lp++)
                {
                    var currID = points[lp].split(",")[0];
                    var nextID = points[lp+1].split(",")[0];
                    
                    if(currID == nextID) 
                        {
                            sURLList += points[lp].split(",")[18]+";";
                        } 
                    else 
                        {
                            // add sUrlsLIst to Point[lp];
                            if(sURLList != "")
                                {
                                    var tempStr = "";
                                    sURLList += points[lp].split(",")[18];
                                    for (j=0; j< points[lp].split(",").length-1; j++)
                                    {
                                        tempStr += points[lp].split(",")[j]+",";
                                    }
                                    tempStr += sURLList;
                                    points[lp] = tempStr;
                                    tempStr = "";
                                }
                            DrawTransProjPoints(points[lp]);
                            sURLList = "";
                        } 
                    //DrawTransProjPoints(points[lp]);
                }
        }
        
    function DrawTransProjPoints(point)  
        {
            var feature = [];
            var STATUS,pointX,pointY;
            STATUS              = point.split(',')[12];
            pointX              = parseFloat(point.split(',')[16]);
            pointY              = parseFloat(point.split(',')[17]);
            var OGpoint = new OpenLayers.Geometry.Point(pointX,pointY);
            var point_900913 = Transform_To_900913(OGpoint);
            
            var style_mark = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
            
//            if(currentZoomLevel + firstZoomLevel < 18)
//            {
//                style_mark.graphicWidth = 44;
//                style_mark.graphicHeight = 32; 
//                style_mark.externalGraphic = "http://maps.jeddah.gov.sa/images/Major Projects 2009/thumbs32/" + picture;
//            }
//            else
//            {
//                style_mark.graphicWidth = 85;
//                style_mark.graphicHeight = 64; 
//                style_mark.externalGraphic = "http://maps.jeddah.gov.sa/images/Major Projects 2009/thumbs64/" + picture;
//            }
//            style_mark.graphicTitle = id;
//            style_mark.graphicZIndex = 1;
//            style_mark.graphicOpacity = 1;
            style_mark.cursor = "pointer";
            
//            style_mark.graphicXOffset = -(style_mark.graphicWidth/2);  // this is the default value
//            style_mark.graphicYOffset = -(style_mark.graphicHeight/2);
            
            feature.push(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(point_900913.x , point_900913.y),null,style_mark));
            feature[0].data = point.toString();
            transProjLayer.addFeatures(feature);
        }
        
    function RenderLandmarksPicPoints(SearchPoints)
        {
        
            ClearGraphicLayer(landmarkPicLayer);
//            ActivateControl('Landmark');
            
            if(SearchPoints == "")
                return ;
            
            var points = SearchPoints.split('#');
            
            var lp = 0;
            for(lp = 0 ; lp < points.length ; lp++)
                DrawLandmarksPicPoints(points[lp]);
        }
        
    function DrawLandmarksPicPoints(point)  
        {
            var feature = [];
            var pointX,pointY,objectID,arName,artist,landmarkStatus,picture;
            objectID        = point.split(',')[0];
            arName          = point.split(',')[1];
            artist          = point.split(',')[2];
            landmarkStatus  = point.split(',')[3];
            picture         = point.split(',')[4];
            
            pointX = parseFloat(point.split(',')[5]);
            pointY = parseFloat(point.split(',')[6]);
            var point = new OpenLayers.Geometry.Point(pointX,pointY);
            var point_900913 = Transform_To_900913(point);
            
            var style_mark = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
            if(currentZoomLevel + firstZoomLevel < 18)
            {
                style_mark.graphicWidth = 36;
                style_mark.graphicHeight = 36; 
                style_mark.externalGraphic = "http://maps.jeddah.gov.sa/images/Sculpture_Images/thumbs32/" + picture;      
            }
            else
            {
                style_mark.graphicWidth = 70;
                style_mark.graphicHeight = 70; 
                style_mark.externalGraphic = "http://maps.jeddah.gov.sa/images/Sculpture_Images/thumbs64/" + picture;
            }
            style_mark.graphicTitle = arName;
            style_mark.graphicZIndex = 1;
            style_mark.graphicOpacity = 1;
            style_mark.cursor = "pointer";
            
            style_mark.graphicXOffset = -(style_mark.graphicWidth/2);  // this is the default value
            style_mark.graphicYOffset = -(style_mark.graphicHeight/2);
            
            feature.push(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(point_900913.x , point_900913.y),null,style_mark));

            feature[0].data = objectID+","+arName+","+artist+","+landmarkStatus+","+picture;
          
            landmarkPicLayer.addFeatures(feature);
        }
        //
    function DrawCircle(X, Y, radius)
         {
//            var falseX = 103.16;
//            var falseY = 107.32;
            var falseX = 500000;
            var falseY = 0;
            //
            var feature = [];
            //
            var circOrigin_wgs84 = new OpenLayers.Geometry.Point(X + falseX, Y + falseY);
            var circOrigin_900913 = Transform_To_900913(circOrigin_wgs84, WGS84_Z37_PRJ, GOOGLE_PRJ);
            
            var circStyle = OpenLayers.Util.extend( {}, OpenLayers.Feature.Vector.style["default"] );
            var circleFeature = new OpenLayers.Feature.Vector(
             OpenLayers.Geometry.Polygon.createRegularPolygon( circOrigin_900913, parseInt(radius) + 50, 100, 0 ),
             null,
             circStyle );
             
             feature.push(circleFeature);
             
             map.zoomToExtent(circleFeature.geometry.getBounds());
             
             vector.addFeatures(feature);
             
             var chkShowPF = document.getElementById('publicfacilities');
             if(!chkShowPF.checked)
             {  
                 chkShowPF.checked = true;
                 checkShowPublicFacilities();    
             }
        }
        //
        
    function DrawSearchPoint(index,vertices,name)
        {
            if(index > 26)
                index = 0;
                
            var feature = [];
            var pointX,pointY;
            pointX = parseFloat(vertices.split(',')[0]);
            pointY = parseFloat(vertices.split(',')[1]);
            
            var style_mark = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
            style_mark.graphicWidth = 30;
            style_mark.graphicHeight = 30;
            style_mark.graphicXOffset = -(style_mark.graphicWidth/2);  // this is the default value
            style_mark.graphicYOffset = -style_mark.graphicHeight ;
            style_mark.externalGraphic = "img/Numbers/" + index +".png";
            style_mark.graphicOpacity = 1;
            style_mark.cursor = "hand";

            feature.push(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(pointX , pointY),null,style_mark));
                
            feature[0].data = name;
          //  map.setLayerIndex(searchResultLayer, map.layers.length);
            searchResultLayer.addFeatures(feature);
           
        }
        
    function DrawPoint(vertices)
        {
            var feature = [];
            var pointX,pointY;
            
            pointX = parseFloat(vertices.split(',')[0]);
            pointY = parseFloat(vertices.split(',')[1]);
            var point = new OpenLayers.Geometry.Point(pointX,pointY);
            var point_900913 = Transform_To_900913(point);

            feature.push(
            new OpenLayers.Feature.Vector(
                new OpenLayers.Geometry.Point(point_900913.x , point_900913.y)
                ));
                    
            map.setLayerIndex(searchResultLayer, map.layers.length);
            vector.addFeatures(feature);
        }
        //
        //var queryPoint = false;
    function EnableDisableQueryPoint(arg)
        {
            if (arg=='QP')
            {
                map.events.register('click', map, handleMapClick);
            }
            else
            {
                map.events.register('click', map, wmsMapClick);
            }
        }
           
                     
    function handleMapClick(evt)
        {            
            ShowHideLoading(true);
            queryPointLayer.removeFeatures(queryPointLayer.features);
            
            var Coordinates = map.getLonLatFromViewPortPx(new OpenLayers.Pixel(evt.xy.x , evt.xy.y) );
            var Lon=Coordinates.lon;
            var Lat=Coordinates.lat;
           
            var point_900913 = new OpenLayers.Geometry.Point(Lon,Lat);
            var point_wgs84 = Transform_From_900913(point_900913);
            
            var Point=point_wgs84.x+"*"+point_wgs84.y;
            CallServer(Point,"Identify");
            
            var feature = [];
            feature.push(
                    new OpenLayers.Feature.Vector(
                        new OpenLayers.Geometry.Point(Lon, Lat)
                    )
                );
                
            queryPointLayer.addFeatures(feature);

            
            // Close the map handler for Identify
            map.events.unregister('click', map, handleMapClick);
        }
        //
    function wmsMapClick(e)
        {
            ShowHideLoading(true);            
            document.getElementById('edigFI').style.display = 'none';
            document.getElementById('nodeList').innerHTML = "جاري استرجاع البيانات...";
            
            var Coordinates = map.getLonLatFromViewPortPx(new OpenLayers.Pixel(e.xy.x , e.xy.y) );
            var Lon=Coordinates.lon;
            var Lat=Coordinates.lat;
            var point_900913 = new OpenLayers.Geometry.Point(Lon,Lat);
            var point_wgs84 = Transform_From_900913(point_900913);
            
            var distance = 20;
            var tolerance = 2;
            var feature="DVW_DIGGING_PERMITS_GEO";
            
            var request=feature+"*"+point_wgs84.x+"*"+point_wgs84.y+"*"+distance+"*"+tolerance;
            
            CallServer(request,"IdentifyEDig");
            
            map.events.unregister('click', map, wmsMapClick);
            ShowHideLoading(false);
        }
        
        //****************************************Modules Public Methodes***********************************//
        flag940Added=false;
        flagPFAdded=false;
    function LoadModules(type)
        {
            ShowHideLoading(true);
            switch(type)
            {
                case "DC":
                    if(document.getElementById('publicfacilities').checked==false)
                    {
                           
                           document.getElementById('publicfacilities').checked =true;
                           checkShowPublicFacilities(); 
                    } 
                    break;
                
                case "Geo940":
                    if(flag940Added!=true)
                        addGeo940Layer();
                    break;
                
                case "Discussions":
                    addDiscussionsLayer();
                    break;
            }
            ShowHideLoading(false);
        }
                
        /////////////////////////////////////End of Data Collection WMS layer/////////////////////////////////
        
        /******************************************************/
        //////End of Different Module Functions///////////////
        /******************************************************/
        
        var loadGoogleMaps_JS = false;
    function SetBaseMap(type)
        {
            ShowHideLoading(true);
            
            // labelsType: variable for WMS labels type
            labelsType = 0;
            // curMV: variable for set current map view in URL hash
            curMV = type;
            
            switch(type)
            {
                case "GoogleStreet":

                     map.setBaseLayer(gmap);
                     
                    break;
                    
                case "GoogleSat":

                    map.setBaseLayer(gsat);
                    
                    break;
                   
               case "Vector":

                    map.setBaseLayer(tms_vector);
                   
                   break;
                   
              case "Raster10":

                    map.setBaseLayer(tms_raster10);
                    
                    labelsType = 1;
                   
                   break;
                   
              case "Raster06":

                    map.setBaseLayer(tms_raster06);
                    
                    labelsType = 1;
                   
                   break;
                   
             case "Hybrid":

                    map.setBaseLayer(tms_hybrid);
                   
                   break;
                   
              case "Regulations":

                    tms_regulations.setVisibility(true);
                    //map.setBaseLayer(tms_regulations);
                    
                    labelsType = 1;
                   
                   break;
                   
              case "SubDivisions":

                    tms_subdivision.setVisibility(true);
                   // map.setBaseLayer(tms_subdivision);
                    
                    labelsType = 1;
                   
                   break;
                   
             case "MasterPlan":
                    
                    tms_masterPlan.setVisibility(true);
                    //map.setBaseLayer(tms_masterPlan);                    
                   
                   break;
                   
             case "GeoEyeDec2009":

                    map.setBaseLayer(tms_GeoEyeDec2009);
                    
                    labelsType = 1;
                   
                   break;
                   
             case "GeoEyeJul2009":

                    map.setBaseLayer(tms_GeoEyeJul2009);
                    
                    labelsType = 1;
                   
                   break;
           }
           
           ShowHideLoading(false);
           
           ShowHideLabels();
        }
        // Load Google Maps on Demand
        var googleMapType;
    function loadGoogleMapsJSfile(gType)
        {
            ShowHideLoading(true);
            
            googleMapType = gType;
            
            if(!loadGoogleMaps_JS)
            {
                var fileref=document.createElement('script')
                fileref.setAttribute("type","text/javascript")
                fileref.setAttribute("src", 'http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAjpkAC9ePGem0lIq5XcMiuhR_wWLPFku8Ix9i2SXYRVK3e45q1BQUd_beF8dtzKET_EteAjPdGDwqpQ&async=2&callback=LoadGoogleMapsLayers')
               
                document.body.appendChild(fileref);
                
                loadGoogleMaps_JS = true;
             }
             else
                SetBaseMap(googleMapType);
             
        }
        
    function LoadGoogleMapsLayers()
        {
            gmap = new OpenLayers.Layer.Google(
                    "Google Streets",
                    {'sphericalMercator': true}
                );
            gsat = new OpenLayers.Layer.Google(
                "Google Satellite",
                {type: G_SATELLITE_MAP, 'sphericalMercator': true}
            );
                
            map.addLayers([gmap,gsat]);
            
            SetBaseMap(googleMapType);
        }
        
    function showVector()
		{
		    //currview = "vector;png;1.0.4,labels;png;1.0.4";
		    
		    SetBaseMap('Vector',false);
		}
		
	function checkShowPublicFacilities()
		{
		    var chkShowPF = document.getElementById('publicfacilities');
		    if(chkShowPF.checked)
		    {
		        if((currentZoomLevel + firstZoomLevel) < 15)
                {
                    someVar = confirm('لإظهار الخدمات العامة يجب تكبير الخريطة. هلى تريد اظهار الخدمات و تكبير الخريطة؟');
                    if (someVar == true)
                    {
                       map.zoomTo(5);
                       showPublicFacilities(true);
                       chkShowPF.checked = true;
                    }
                    else
                    {
                        showPublicFacilities(false);
                        chkShowPF.checked = false;
                    }
                }
                else
                {
                    showPublicFacilities(true);
                    DrawIntersectedLandmarksData(true);
                }
                    
            }
            else
            {
                ClearGraphicLayer(landmarkLayer);
                showPublicFacilities(false);
            }

		}
		
	function showPublicFacilities(flagShow)
		{
		    if(flagShow != null)
		    {
		        tms_publicfacilities.setVisibility(flagShow);
                tms_publicfacilities.redraw(true);
                ShowHideDiv('divPFLegend',flagShow);
            }
		}
		
	function showRaster10()// IKONOS
		{
		    //currview = "ikonos;png;1.0.1,labels;png;1.0.4";
		    
		    SetBaseMap('Raster10',false);
		}
	function showRaster06() // Quick Bird
		{
		    //currview = "quickbird;jpg;1.0.1,labels;png;1.0.4";
		    
		    SetBaseMap('Raster06',false);
		}
	function showHybrid()
		{
            //curLayer.redraw(true);
		}
		
	function showRegulations()
		{
		    ChangeOverlayLayer(tms_regulations);
		    //SetBaseMap('Regulations',false);
		}
	function showSubDivisions()
		{
		    ChangeOverlayLayer(tms_subdivision);
		    //SetBaseMap('SubDivisions',false);
		}
	function showMasterPlan()
		{
		    ChangeOverlayLayer(tms_masterPlan);
		    //SetBaseMap('MasterPlan',false);
		}
		
		function ChangeOverlayLayer(layer)
		{ 
		    tms_regulations.setVisibility(false);
		    tms_subdivision.setVisibility(false);
		    tms_masterPlan.setVisibility(false);
		    
		    ShowHideLoading(true);            
		   
            layer.setVisibility(true);
            layer.redraw(true);
            CurrentOpacity=OpenLayers.Util.getElement('opacity').value ;
		    layer.setOpacity(CurrentOpacity);
            labelsType = 1;
           
            ShowHideLoading(false);
           
            ShowHideLabels();
		}
		
    var maxOpacity = 1;
    var minOpacity = 0.0;
	function changeOpacity(byOpacity)
     {
        var newOpacity = (parseFloat(OpenLayers.Util.getElement('opacity').value) + byOpacity).toFixed(1);
        newOpacity = Math.min(maxOpacity, Math.max(minOpacity, newOpacity));
        OpenLayers.Util.getElement('opacity').value = newOpacity;
        
        
        for(i=0;i<map.layers.length;i++)
        {
            if(map.layers[i].getVisibility()==true&&map.layers[i].isBaseLayer==false&&(map.layers[i]==tms_regulations||map.layers[i]==tms_subdivision||map.layers[i]==tms_masterPlan))
            {map.layers[i].setOpacity(newOpacity);}
        }
        //tms_vector.setOpacity(newOpacity);
    }  
		
	function showGeoEyeDec2009()// GeoEyeDec2009
		{
		    //currview = "ikonos;png;1.0.1,labels;png;1.0.4";
		    
		    SetBaseMap('GeoEyeDec2009',false);
		}
	function showGeoEyeJul2009()// GeoEyeJul2009
		{
		    //currview = "ikonos;png;1.0.1,labels;png;1.0.4";
		    
		    SetBaseMap('GeoEyeJul2009',false);
		}
		
		var labelsVisibility = true; // labels visibailty
		var labelsType = 0; //0 : vector, 1 : Raster
		var labelsLang = 0; // 0: arabic, 1: english
	    function ShowHideLabels(lang) // changeStatus: for changeing layers when on
		{
		    var arlblchkbox = document.getElementById("ar_Labels");
		    var enlblchkbox = document.getElementById("en_Labels");
		    if(arlblchkbox.checked || enlblchkbox.checked)
		        labelsVisibility = true;
		    else
		        labelsVisibility = false;
		        
		    if(!labelsVisibility) // hide all
		    {
		        vector_labels_WMS.setVisibility(false);
                raster_labels_WMS.setVisibility(false);
                
		        en_vector_labels_WMS.setVisibility(false);
                en_raster_labels_WMS.setVisibility(false);
		    }
		    else
		    {		        
		        if(lang != null)
		            labelsLang = lang;
		            
		        if(labelsLang == 0) // is arabic
		        {
		            enlblchkbox.checked = false;
		            en_vector_labels_WMS.setVisibility(false);
                    en_raster_labels_WMS.setVisibility(false);
                            
                    if(labelsType == 0)
                    {
                        vector_labels_WMS.setVisibility(true);
                        
                        raster_labels_WMS.setVisibility(false);
                    }
                    else
                    {
                        vector_labels_WMS.setVisibility(false);
                        
                        raster_labels_WMS.setVisibility(true);
                    }
                    
                    vector_labels_WMS.redraw(true);
                    raster_labels_WMS.redraw(true);
                }
                else // english
                {
                    arlblchkbox.checked = false;
                    vector_labels_WMS.setVisibility(false);
                    raster_labels_WMS.setVisibility(false);

                    if(labelsType == 0)
                    {
                        en_vector_labels_WMS.setVisibility(true);
                        
                        en_raster_labels_WMS.setVisibility(false);
                    }
                    else
                    {
                        en_vector_labels_WMS.setVisibility(false);
                        
                        en_raster_labels_WMS.setVisibility(true);
                    }
                    
                    en_vector_labels_WMS.redraw(true);
                    en_raster_labels_WMS.redraw(true);
                }
		    }
		}
		
		function showCleaningWMS()
		{
	        Cleaning_WMS.setVisibility(!Cleaning_WMS.visibility);
            Cleaning_WMS.redraw(true);
        }
		
		
	function checkShowEDig()
		{
		    var chkShowEDig = document.getElementById('eDig');
		    if(chkShowEDig.checked)
		    {
		        if((currentZoomLevel + firstZoomLevel) < 15)
                {
                    someVar = confirm('لإظهار الحفريات يجب تكبير الخريطة. هلى تريد اظهار الحفريات و تكبير الخريطة؟');
                    if (someVar == true)
                    {
                       map.zoomTo(5);
                       showEDig(true);
                       chkShowEDig.checked = true;
                    }
                    else
                    {
                        showEDig(false);
                        chkShowEDig.checked = false;
                    }
                }
                else
                {
                    showEDig(true);
                    
                }
            }
            else
            {
                showEDig(false);
            }
		}
		
	function showEDig(flagShow)
		{
	        if(flagShow != null)
		    {
		        wms_edig.setVisibility(flagShow);
                wms_edig.redraw(true);
                ShowHideDiv('divEDigLegend',flagShow);
            }
        }
        //
    function checkShowBldgNo()
		{
		    var chkShowBldgNo = document.getElementById('BldgNo');
		    if(chkShowBldgNo.checked)
		    {
		        if((currentZoomLevel + firstZoomLevel) < 18)
                {
                    someVar = confirm('لإظهار أرقام المبانى يجب تكبير الخريطة. هلى تريد اظهار أرقام المبانى و تكبير الخريطة؟');
                    if (someVar == true)
                    {
                       map.zoomTo(8);
                       showBldgNo(true);
                       chkShowBldgNo.checked = true;
                    }
                    else
                    {
                        showBldgNo(false);
                        chkShowBldgNo.checked = false;
                    }
                }
                else
                {
                    showBldgNo(true);
                    
                }
            }
            else
            {
                showBldgNo(false);
            }
		}
		
	function showBldgNo(flagShow)
		{
	        if(flagShow != null)
		    {
		        wms_BldgNo.setVisibility(flagShow);
                wms_BldgNo.redraw(true);
                //ShowHideDiv('divEDigLegend',flagShow);
            }
        }
        //
    function checkShowProjectPicLayer(fromChk)
		{
		    var chkProjectPicLayer = document.getElementById('projectPicLayer');
		    if(chkProjectPicLayer.checked)
		    {
		        if((currentZoomLevel + firstZoomLevel) < 15)
                {
                    someVar = confirm('لإظهار المجسمات يجب تكبير الخريطة. هلى تريد اظهار المجسمات و تكبير الخريطة؟');
                    if (someVar == true)
                    {
                       map.zoomTo(5);
                       showProjectPicLayer(true);
                       chkProjectPicLayer.checked = true;
                    }
                    else
                    {
                        showProjectPicLayer(false);
                        chkProjectPicLayer.checked = false;
                    }
                }
                else
                {
                    showProjectPicLayer(true);
                }
            }
            else
            {
                showProjectPicLayer(false);
            }
            
            if(projectPicLayer.visibility == true)
            { 
		        DrawIntersectedProjectPicData(fromChk);
		    }
		}
		//
	function showProjectPicLayer(flagShow)
		{
	        if(flagShow != null)
		    {
		        projectPicLayer.setVisibility(flagShow);
                projectPicLayer.redraw(true);
            }
        }
        //
        
                //
    function checkShowTransProjLayer(fromChk)
		{
		    var chkTransProjLayer = document.getElementById('transProjLayer');
		    if(chkTransProjLayer.checked)
		    {
		        if((currentZoomLevel + firstZoomLevel) < 15)
                {
                    someVar = confirm('لإظهار نقاط تقاطع المحاور يجب تكبير الخريطة. هلى تريد اظهار المجسمات و تكبير الخريطة؟');
                    if (someVar == true)
                    {
                       map.zoomTo(5);
                       showTransProjLayer(true);
                       chkTransProjLayer.checked = true;
                    }
                    else
                    {
                        showTransProjLayer(false);
                        chkTransProjLayer.checked = false;
                    }
                }
                else
                {
                    showTransProjLayer(true);
                }
            }
            else
            {
                showTransProjLayer(false);
            }
            
            if(transProjLayer.visibility == true)
            { 
		        DrawIntersectedTransProjData(fromChk);
		    }
		}
		
	function showTransProjLayer(flagShow)
		{
	        if(flagShow != null)
		    {
		        transProjLayer.setVisibility(flagShow);
                transProjLayer.redraw(true);
            }
        }
        //
    function checkShowLandmarkPicLayer(fromChk)
		{
		    var chkLandmarkPicLayer = document.getElementById('landmarkPicLayer');
		    if(chkLandmarkPicLayer.checked)
		    {
		        if((currentZoomLevel + firstZoomLevel) < 15)
                {
                    someVar = confirm('لإظهار المجسمات يجب تكبير الخريطة. هلى تريد اظهار المجسمات و تكبير الخريطة؟');
                    if (someVar == true)
                    {
                       map.zoomTo(5);
                       showLandmarkPicLayer(true);
                       chkLandmarkPicLayer.checked = true;
                    }
                    else
                    {
                        showLandmarkPicLayer(false);
                        chkLandmarkPicLayer.checked = false;
                    }
                }
                else
                {
                    showLandmarkPicLayer(true);
                }
            }
            else
            {
                showLandmarkPicLayer(false);
            }
            
            if(landmarkPicLayer.visibility == true)
            { 
		        DrawIntersectedLandmarksPicData(fromChk);
		    }
		}
		
	function showLandmarkPicLayer(flagShow)
		{
	        if(flagShow != null)
		    {
		        landmarkPicLayer.setVisibility(flagShow);
                landmarkPicLayer.redraw(true);
            }
        }
		//
		var viewGML = false;
        function AddGML_Layer(kmlFileName)
		{
		    var rand_no = Math.random();
            var filePath = "GML/" + kmlFileName + "?id=" + rand_no;
//            gml_layer = new OpenLayers.Layer.GML("GML", filePath);

            gml_layer = new OpenLayers.Layer.GML("KML", filePath, 
               {
                    format: OpenLayers.Format.KML,
                    formatOptions: {
                    extractStyles: true, 
                    extractAttributes: true,
                  
                    internalProjection : GOOGLE_PRJ,
                    externalProjection : WGS84
                }
               });
//               gml_layer.events.register('loadend', map, GMLLayerLoadEnd);
               
             gml_layer.requestFailure = KML_LoadFail;
            
            if(viewGML)
                map.removeLayer(map.layers[map.layers.length-1]);
                
            viewGML = true;
            
          
            map.addLayers([gml_layer]);
            
            }
            
//            function GMLLayerLoadEnd()
//            {
//                var ret = gml_layer.redraw();
//                alert(ret);
//                map.zoomToExtent(gml_layer.getExtent());
//            }

            function KML_LoadFail()
            {
                alert('يجب أن يكون الملف من نوع KML');
                PluginDestructor();
            }
                
       function PrepareForEdit()
      {        
        EditMode=true;
        if(typeof(DCLoaded) == 'undefined'||DCLoaded==false)
        {
            ShowPlugin(4);
            TogglePanelDock(true);
            setTimeout('fillControls();',2000);
        }
        else
        {
            fillControls();
        }
}