var nwBoundaries;
var secs ="";
var prevStyle;
var count = 0;

function addKML()
	{
	
		var ffKML = "kml/networkBoundariesFinal.kml?"
		var IEKML = "kml/networkBoundariesCorse.kml?"
		var gxpKML = "kml/gxp.KML?"
		var officeKML = "kml/offices.KML?"
				
		var time = new Date();
		secs = time.getSeconds();
		nwBoundaries = new OpenLayers.Layer.GML("Network Boundaries", IEKML + secs, 
			{
				format: OpenLayers.Format.KML, 
				projection:new OpenLayers.Projection("EPSG:4326"),
				isBaseLayer:false,
				displayInLayerSwitcher:false,
				 styleMap: build_style(),
			formatOptions: {
					extractStyles: false, 
					extractAttributes: true
				}
			}
		);
		
		var gxp = new OpenLayers.Layer.GML("Grid Exit Points", gxpKML + secs, 
			{
				format: OpenLayers.Format.KML, 
				projection:new OpenLayers.Projection("EPSG:4326"),
				styleMap: buildPointStyle(),
				formatOptions: {
					extractStyles: false, 
					extractAttributes: true
				}
			}
		);
		
			var offices = new OpenLayers.Layer.GML("Head Offices", officeKML + secs, 
			{
				format: OpenLayers.Format.KML, 
				projection:new OpenLayers.Projection("EPSG:4326"),
				styleMap: buildPointStyleSmallImage(),
				formatOptions: {
					extractStyles: false, 
					extractAttributes: true
				}
			}
		);
				
		map.addLayer(nwBoundaries);
		
		map.addLayer(gxp);
		map.addLayer(offices);
		
		
		
	
		selectControl = new OpenLayers.Control.SelectFeature([nwBoundaries,gxp, offices],
                {
		displayClass: "olControlSelect",
		  title: 'Select Features: Click on a region or a point to view the details',
		onSelect: onFeatureSelect, 
		onUnselect: onFeatureUnselect,
		buffer:100
		 });
		 
		 hoverControl = new OpenLayers.Control.SelectFeature([gxp, nwBoundaries],
                {
		onSelect: onFeatureSelect, 
		onUnselect: onFeatureUnselect,
		 hover:true
		 
		 }
		
		 );
		 
		 
	
		
		 //map.addControl(hoverControl); 
		//hoverControl.activate(); 
		
			 //map.addControl(selectControl); 
		//selectControl.activate(); 
		
		  oZoomBoxOutCtrl = new OpenLayers.Control.ZoomBox({
            out: true, displayClass: "olControlZoomBoxOut",
            title: 'Zoom out: click in the map or use the left '
                  +'mouse button and drag to create a rectangle'
        });

      oZoomBoxInCtrl = new OpenLayers.Control.ZoomBox({
            title: 'Zoom in: click in the map or use the left '
                +'mouse button and drag to create a rectangle'
        });

     oDragPanCtrl = new OpenLayers.Control.DragPan({
            title: 'Pan map: keep the left mouse button pressed to drag the map'
        });


		
		 var panel = new OpenLayers.Control.Panel({defaultControl: selectControl});

		navControl =  new OpenLayers.Control.NavToolbar();

		panel.addControls([selectControl, oDragPanCtrl, oZoomBoxInCtrl, oZoomBoxOutCtrl]);
		map.addControl(panel)
		//panel.activate(); 


map.events.register("zoomend", gxp, function()
		{
			
			var currentZoomLevel = map.getZoom();
			
			   if((currentZoomLevel >= 2) && (currentZoomLevel < 5))
			   {
				gxp.styleMap = buildPointStyleMedium();
				offices.styleMap = buildPointStyleLargeImage();
				if(gxp.getVisibility()== true)
				{
					gxp.setVisibility(false);
					gxp.setVisibility(true);
					offices.setVisibility(false);
					offices.setVisibility(true);
				}
			   }	
			   
			   else 	   if((currentZoomLevel >= 5))
			   {
				gxp.styleMap = buildPointStyleLarge();
				offices.styleMap = buildPointStyleLargeImage();
					if(gxp.getVisibility()== true)
					{
						gxp.setVisibility(false);
						gxp.setVisibility(true);
						offices.setVisibility(false);
						offices.setVisibility(true);
					}
			   }	
			   
			else{
			
				gxp.styleMap =buildPointStyle();
				offices.styleMap = buildPointStyleSmallImage();
				
					if(gxp.getVisibility()== true)
					{
					gxp.setVisibility(false);
					gxp.setVisibility(true);
					offices.setVisibility(false);
					offices.setVisibility(true);
					}
			}
			
			})
			

	}
       
       
       function checkLoad()
       {
	       count++;
	       if(count >= 4)
		{
			document.getElementById("loadingTag").innerHTML = "";
		}


       }
       
       function buildPointStyle()
       {
         
		var theme = new OpenLayers.Style({
		'pointRadius': 3,
		'strokeColor': '#000000', 
		'fillColor': '#000000',
		'strokeWidth': 2,
		"fillOpacity": 0.5
		});
 
		var stylemap = new OpenLayers.StyleMap({'default': theme,'select': {'strokeColor': '#0000ff', 'fillColor': '#0000ff', 'strokeWidth': 2}});
		return stylemap;
	}
	
	
	 function buildPointStyleMedium()
       {
         
		var theme = new OpenLayers.Style({
		'pointRadius': 5,
		'strokeColor': '#000000', 
		'fillColor': '#000000',
		'strokeWidth': 2,
		"fillOpacity": 0.5
		});
 
		var stylemap = new OpenLayers.StyleMap({'default': theme,'select': {'strokeColor': '#0000ff', 'fillColor': '#0000ff', 'strokeWidth': 2}});
		return stylemap;
	}
	
	
	
	
	       function buildPointStyleLarge()
       {
         
		var theme = new OpenLayers.Style({
		'pointRadius': 8,
		'strokeColor': '#000000', 
		'fillColor': '#000000',
		'strokeWidth': 2,
		"fillOpacity": 0.5
		});
 
		var stylemap = new OpenLayers.StyleMap({'default': theme,'select': {'strokeColor': '#0000ff', 'fillColor': '#0000ff', 'strokeWidth': 2}});
		return stylemap;
	}
	
	
	function buildPointStyleSmallImage()
       {
 
		var theme = new OpenLayers.Style({
		'pointRadius': 3,
		'strokeColor': '#ff0000', 
		'fillColor': '#ff0000',
		'strokeWidth': 2,
		"fillOpacity": 0.5
		});
 
		var stylemap = new OpenLayers.StyleMap({'default': theme,'select': {'strokeColor': '#0000ff', 'fillColor': '#0000ff', 'strokeWidth': 2}});
		return stylemap;
       }
       
       
       
       
       	       function buildPointStyleLargeImage()
       {
 
		var symbolizer = OpenLayers.Util.applyDefaults(
		{externalGraphic: "kml/enaOffices.png", pointRadius: 8});
	
		var styleMap = new OpenLayers.StyleMap({"default": symbolizer, "select": {pointRadius: 8}});
		
		return styleMap;
       }
       
       
       
        function build_style() 
	{
	
		var theme = new OpenLayers.Style();
		var topEnergy = new OpenLayers.Rule({filter: new OpenLayers.Filter.Comparison({
			type: OpenLayers.Filter.Comparison.EQUAL_TO,
			property: "name",
			value:"Top Energy"
			}),
			symbolizer: {"Polygon": {'fillColor': 'FFFAAD', 'strokeColor': '#FFFAAD', 'strokeWidth': 2}}
		});
	    
	    	    
	    	var pinkThematic = new OpenLayers.Rule({filter: new OpenLayers.Filter.Logical({
		type: OpenLayers.Filter.Logical.OR,
		filters:[
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Northpower"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Powerco"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Network Tasman"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Orion"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"OtagoNet Joint Venture"
                })
		]
		}),
                symbolizer: {"Polygon": {'fillColor': '#ff0000', 'strokeColor': '#ff0000', 'strokeWidth': 2}}
		});
	    
	    
	    	var yellowThematic = new OpenLayers.Rule({filter: new OpenLayers.Filter.Logical({
		type: OpenLayers.Filter.Logical.OR,
		filters:[
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"DELTA"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Electricity Ashburton"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"MainPower"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Unison"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Centralines"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Waipa Networks"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"VECTOR"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Wellington Electricity Lines"
                }),	
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Nelson Electricity"
                })		
		]
		}),
                symbolizer: {"Polygon": {'fillColor': '#F0E68C', 'strokeColor': '#F0E68C', 'strokeWidth': 2}}
		});
	    
	    
	    
	    	var purpleThematic = new OpenLayers.Rule({filter: new OpenLayers.Filter.Logical({
		type: OpenLayers.Filter.Logical.OR,
		filters:[
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"PowerNet Ltd."
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Alpine Energy"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Buller Network"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Electra"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"The Lines Company"
                }),
				new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Powernet Ltd."
                })
		]
		}),
                symbolizer: {"Polygon": {'fillColor': '#8000FF', 'strokeColor': '#8000FF', 'strokeWidth': 2}}
		});
	    
	    
	    
	    var greenThematic = new OpenLayers.Rule({filter: new OpenLayers.Filter.Logical({
		type: OpenLayers.Filter.Logical.OR,
		filters:[
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Westpower/ElectroNet"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Horizon Energy"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Counties Power"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Scanpower"
                })
		]
		}),
                symbolizer: {"Polygon": {'fillColor': '#008000', 'strokeColor': '#008000', 'strokeWidth': 2}}
		});
	    
	    
		var orangeThematic = new OpenLayers.Rule({filter: new OpenLayers.Filter.Logical({
		type: OpenLayers.Filter.Logical.OR,
		filters:[
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Top Energy"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"WEL Networks"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Eastland Network"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Marlborough Lines"
                }),
		new OpenLayers.Filter.Comparison({
		type: OpenLayers.Filter.Comparison.EQUAL_TO,
                property: "name",
                value:"Network Waitaki"
                })
		
		]
		}),
                symbolizer: {"Polygon": {'fillColor': '#FF8000', 'strokeColor': '#FF8000', 'strokeWidth': 2}}
		});
	    
	    	
	    
	    
	    
            theme.addRules([pinkThematic, purpleThematic, yellowThematic, greenThematic, orangeThematic]);
		
		
		
                   var stylemap = new OpenLayers.StyleMap({'default':theme,'select': {'strokeColor': '#0000ff', 'fillColor': '#0000ff', 'strokeWidth': 2}});
		return stylemap;
        } 
       
       
       
        
        
          function onPopupClose(evt) {
            selectControl.unselect(selectedFeature);
        }
	
        function onFeatureSelect(feature) {
	//feature.style= new OpenLayers.Style(OpenLayers.Feature.Vector.style["select"]);
	            selectedFeature = feature;
	
		   // prevStyle = feature.style;
		    //alert(prevStyle.fillColor);
			
			
		    if(feature.attributes.description == null)
		    {
		    feature.attributes.description = " ";
		    }
		    
		
            popup = new OpenLayers.Popup.FramedCloud("chicken", 
                                     feature.geometry.getBounds().getCenterLonLat(),
                                     null,
                                     "<h2>"+feature.attributes.name + "</h2>" + "<font size=\"1.5px\">" + feature.attributes.description + "</font>",
                                     null, true, onPopupClose);
		
    var width = feature.attributes.description.length;
		    
		popup.minSize = new OpenLayers.Size(width,100);		     
            feature.popup = popup;
            map.addPopup(popup);
        }
	
        function onFeatureUnselect(feature) {
	//var myStyle= new OpenLayers.Style(OpenLayers.Feature.Vector.style["select"]);
	//myStyle.fillColor = prevStyle.fillColor;
	  //feature.style = myStyle;
	  //alert(prevStyle.fillColor);
            map.removePopup(feature.popup);
            feature.popup.destroy();
            feature.popup = null;
        }
	
	

       
