var group;
var nycsubway;
var lMessage;
var stations;
var pathstations;
var AllStationMarkers = new Array();
var lineimage = ''; 
var pathlineimage = ''; 
var loadingID;
var numLoaded=0,numToLoad=0;


    // Create transparent marker icon that overlays the stations
    var icon = new GIcon();
    icon.image = "images/dot6.gif";
    //icon.image = "images/iconClear_15x15.png";
    //icon.shadow = "images/iconClear_15x15.png";
    //icon.transparent="images/iconClear_15x15.png";
    //icon.imageMap=[0,8,8,0,15,8,8,15]    
    icon.iconSize = new GSize(7, 7);
    //icon.shadowSize = new GSize(15, 15);
    icon.iconAnchor = new GPoint(4, 4);
    icon.infoWindowAnchor = new GPoint(4, 1);
			   	
	function createMarkerOneOff(latLon,html,toolTip){
		var marker=new GMarker(latLon,icon,0);
		var openWin=function(){marker.openInfoWindowHtml(html);};			
		var overMarker=function(){showToolTip(marker,toolTip)}
		var outMarker=function(){hideToolTip();writetxt(0);}
		GEvent.addListener(marker,"mouseover",overMarker);
		GEvent.addListener(marker,"mouseout",outMarker);		
		//GEvent.addListener(marker, "click",openWin);						
		return marker;
	}
	function mapSubwayNew(){
		var latLon,address,stationName,lines,lineImage;		
		var startTime=new Date().getTime();
		var station;
		for (i=0;i<sbwy.length;i++){
			var sbLines = new stringBuilder();
			var sbHTML = new stringBuilder();
			station=sbwy[i];			
			var lines=station.lines;
            for (k=0;k<lines.length; k++){
            	sbLines.append("<img src='images/subwaySymbols/");
            	sbLines.append(lines[k].id+'.gif');
            	sbLines.append("' width='23' height='23'>");
            }			                     			
			sbHTML.append("<span class='stationName'><b>");
			sbHTML.append(station.address);
			sbHTML.append("</b></span><br/>");
			sbHTML.append(sbLines.toString());
			sbHTML.append("<br/>");			
			var oLatLon=new GLatLng(parseFloat(station.lat),parseFloat(station.lon));			
			var marker=createMarkerOneOff(oLatLon,sbHTML.toString(),sbHTML.toString());			
			map.addOverlay(marker);			
		}
		var endTime=new Date().getTime();		
		//alert((endTime-startTime)/1000);	    
	}
    function mapSubway(){
		var latLon,address,stationName,lines,lineImage;		
		var startTime=new Date().getTime();
		var station;
		for (i=0;i<stations.length;i++){
			var sbLines = new stringBuilder();
			var sbHTML = new stringBuilder();
			station=stations[i];
            latLon = station.getElementsByTagName('point');                        
            lines = station.getElementsByTagName('Sub');
            for (k=0;k<lines.length; k++){
            	sbLines.append("<img src='images/subwaySymbols/");
            	sbLines.append(lines[k].getAttribute("Photo"));
            	sbLines.append("' width='23' height='23'>");
            }			                     
			stationName=station.getElementsByTagName("address")[0].firstChild.nodeValue;
			sbHTML.append("<span class='stationName'><b>");
			sbHTML.append(stationName);
			sbHTML.append("</b></span><br/>");
			sbHTML.append(sbLines.toString());
			sbHTML.append("<br/>");
			var oLatLon=new GLatLng(parseFloat(latLon[0].getAttribute("lat")),parseFloat(latLon[0].getAttribute("lon")));
			var marker=createMarkerOneOff(oLatLon,sbHTML.toString(),stationName);			
			map.addOverlay(marker);
		}
		var endTime=new Date().getTime();		
		//alert((endTime-startTime)/1000);		
	}						
	function loadStationsAll(callWhenDone){		
	    mapSubwayNew();
	    callWhenDone();
    }
	function loadStations(fileName,callWhenDone){		
		var request = GXmlHttp.create();		
		request.open("GET","xml/subways/"+fileName, true);		
		request.onreadystatechange = function() {
        if (request.readyState == 4) {
			if (request.status == 200){				
				var xmlDoc = request.responseXML;
      			// get all the XML nodes named 'station' and put them in the js array 'stations'
				stations = xmlDoc.documentElement.getElementsByTagName('station');				
				mapSubway();
				callWhenDone();				
			}
			else{alert(request.status);}
        }	
      }
      request.send(null);
    }  
    					