var request;

// =====================================
// Add some markers
// =====================================
var markerarray = [];
var vehicles = [];
var vehicleDescription = [];
var markerArray = [];

/////////////////////////////// Object Definitions //////////////////////////////////////
// Defines a vehicle, draws it on the map, and adds the vehicle
// object to the vehicle list for the route.
function VehicleObject(id, name, point, date, speed, direction) {
	this.id=id;
	this.name=name;
	this.point=point;
	this.date=date;
	this.speed=speed;
	this.direction=direction;
	this.ClickListener=null;
	vehicles.push(this);	
}

function markerObject(){
    //var newMarker = 
}

function FormatHourMinute(hourMinute){
    if (hourMinute<10)
        return "0" + hourMinute;
    return hourMinute;
}

function GetXmlDoc(){
    try //Internet Explorer
      {
      return new ActiveXObject("Microsoft.XMLDOM");
      }
    catch(e)
      {
      try //Firefox, Mozilla, Opera, etc.
        {
        return document.implementation.createDocument("","",null);
        }
      catch(e)
        {
        alert(e.message);
        return;
        }
      }
}

function getXmlHttp()
{
    var xmlHttp;
    try
    {  
        // Firefox, Opera 8.0+, Safari 
        xmlHttp=new XMLHttpRequest();  
    }
    catch (e)
    {  
        // Internet Explorer  
        try
        {    
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");         
        }
        catch (e)
        {    
           try
           {      
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");                
            }
            catch (e)
            {      
                alert("Your browser does not support AJAX!");      
                return false;      
             }    
         }  
    } 
    return xmlHttp; 
}      
 

// Creates a marker whose info window displays the gps info
function CreateGMarker(point,id) {
	var html = '<div style="white-space:nowrap;">' + vehicles[id].name +"<br/>"+vehicles[id].date+ '</div>';
	var marker = new GMarker(point,{icon:icon,title:vehicles[id].name});
//	var marker = new GMarker(point,{title:vehicles[id].name});
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(html);
	  });
	return marker;
}

function onParseData(){
	
}

function MonthName(intM){
    var strMonth;
    switch(intM){
        case 0:
            strMonth = "Jan";
            break;
        case 1:
            strMonth = "Feb";
            break;
        case 2:
            strMonth = "Mar";
            break;
        case 3:
            strMonth = "Apr";
            break;
        case 4:
            strMonth = "May";
            break;
        case 5:
            strMonth = "Jun";
            break;
        case 6:
            strMonth = "Jul";
            break;
        case 7:
            strMonth = "Aug";
            break;
        case 8:
            strMonth = "Sep";
            break;
        case 9:
            strMonth = "Oct";
            break;
        case 10:
            strMonth = "Nov";
            break;
        case 11:
            strMonth = "Dec";
            break;
        default:  
            return;          
    }
    
    return strMonth;
}

/*----------------------------------------------------
// IniPosition(), initial the vehicle's position
// Create markers
//---------------------------------------------------*/
function IniPosition(cityID) {
	if (cityID=="") return;
	request = getXmlHttp();
	var lastUpdated;
	//request.open("GET", "/whereismysnowplow/simpleajax.asp", true);
	request.open("GET", "simpleajax.asp?city="+cityID, true);
	
	request.onreadystatechange = function() {

		if (request.readyState == 4) {
              
            var attArray;
            
            //var size = new OpenLayers.Size(39,16);
            //var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
            //var icon = new OpenLayers.Icon('images/redplow.gif',size,offset);
            
            var size = new OpenLayers.Size(markerWidth,markerHeight);
            var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
            //var icon = new OpenLayers.Icon(markerIconUrl,size,offset);
            
            var loc;
            
            //markers = new OpenLayers.Layer.Markers( "Markers" );
            markers = new OpenLayers.Layer.Markers( "Vehicles");
            map.addLayer(markers);
            markers.setZIndex(1000);
            
            //xmlDoc.async=false;
            //xmlDoc.load("simpleajax.xml");
            var mrkers = request.responseXML.getElementsByTagName("m");
            
            //var testDiv = document.getElementById("test")
            //testDiv.innerHTML = "Hello World"
            //testDiv.innerHTML = mrkers[0].getAttribute("d")
            
            for (var i = 0; i < mrkers.length; i++) {
		        var parentElement = mrkers[i];
        			
		        if (parentElement!=null) {	
			        //''2360398,2360398 Spare 1,-73.9585,40.7407,0,175,7/10/2007 7:52:28 PM				
			        attArray = (parentElement.getAttribute("d")).split(",")
			        //alert(parseFloat(attArray[2]) + " " + parseFloat(attArray[3]) );
			        loc = new OpenLayers.LonLat(parseFloat(attArray[2]), parseFloat(attArray[3]));
        			
			        markerIconUrl = attArray[7];
			        var icon = new OpenLayers.Icon(markerIconUrl,size,offset);			        
			        
			        var newMarker = new OpenLayers.Marker(loc, icon.clone()); 
			        markerArray.push(newMarker);
			        
			        
                    markers.addMarker(newMarker);
                    
                    //var name = attArray[1];
                    var description = attArray[1] + "<br />" + attArray[6];   //name and date
                    if ( lastUpdated == null) {
                        lastUpdated = new Date(attArray[6]);                        
                    }
                    else if ( lastUpdated < new Date(attArray[6])){
                        lastUpdated = new Date(attArray[6]); 
                    }                    
                    
                    //VehicleObject(i,name,null,null,0,0);
                    vehicleDescription.push(description);
		        }
            }
            
            /// Register mouse event to the marker
            for (var i = 0; i < mrkers.length; i++) {
            
                    var newMarker = markerArray[i];                    
			        
			        newMarker.events.register('mousemove', newMarker, function(evt) { 
			            var toolTips = document.getElementById("tooltips");
			            //toolTips.innerHTML = attArray[1];
			            //var newVehicle = vehicles[1];
			            for (var j = 0; j < mrkers.length; j++) {
			                if (this == markerArray[j]) {
			                    toolTips.innerHTML = "<table style=\"border:1px solid Black;background:#FFFFCC;height:100%\"><tr><td><span style=\"vertical-align:middle;font-family:Verdana,Arial,Sans-Serif;font-size:12px;font-weight:normal\">" + vehicleDescription[j] + "</span></td></tr>";
			                    //toolTips.innerHTML = vehicles[j].name;
			                }
			            }
			            //toolTips.innerHTML = this.lonlat.lon;
			            toolTips.style.top = evt.clientY+20;
			            toolTips.style.left = evt.clientX;
			            //alert(toolTips);
			            toolTips.style.visibility="visible";
			            
			         });
			         
			        newMarker.events.register('mouseout', newMarker, function(evt) { 
			            var toolTips = document.getElementById("tooltips");
			            //alert(toolTips);
			            toolTips.style.visibility="hidden";
			         });
			  }
			  
			  var legendDiv = document.getElementById("legendDiv");
			  var dateLast = new Date(lastUpdated);
			  var strLegend;
			  
			  //legendDiv.innerHTML = "<table style=\"border:1px solid Black;height:100%\"><tr><td><span style=\"vertical-align:middle;font-family:Verdana,Arial,Sans-Serif;font-size:10px;font-weight:normal\"><img src=\"images/trail_ph.gif\">Updated " + dateLast.getHours() + ":" + dateLast.getMinutes() + "</span></td></tr>";			  
			  if ( mrkers.length>0 ){
			      
			      //legendDiv.innerHTML = "<table style=\"border:1px solid Black;height:100%\"><tr><td><span style=\"vertical-align:middle;font-family:Verdana,Arial,Sans-Serif;font-size:10px;font-weight:normal\">Updated " + dateLast.getHours() + ":" + dateLast.getMinutes() + "</span></td></tr>";			  
			      strLegend = "<table style=\"border:1px solid Black;height:100%\"><tr>";
			      //alert(legendUrl);
			      if (optionValue==1 && legendUrl != ""){
			        strLegend = strLegend + "<td><img src=\"" + legendUrl + "\" /></td>";
			        legendDiv.style.left = parseInt(legendDiv.style.left) - 60;
			        //alert(parseInt(legendDiv.style.left));
			      }
			      
			      strLegend = strLegend + "<td style=\"width:164px\"><span style=\"vertical-align:middle;font-family:Verdana,Arial,Sans-Serif;font-size:10px;font-weight:normal\">Updated: " + MonthName(dateLast.getMonth()) + " " + dateLast.getDate() + " " + dateLast.getFullYear() + " " + FormatHourMinute(dateLast.getHours()) + ":" + FormatHourMinute(dateLast.getMinutes()) + "</span></td></tr>";
			      
			      //strLegend = "Updated: " + MonthName(dateLast.getMonth()) + " " + dateLast.getDate() + " " + dateLast.getFullYear() + " " + FormatHourMinute(dateLast.getHours()) + ":" + FormatHourMinute(dateLast.getMinutes());
			      legendDiv.innerHTML = strLegend;
			      legendDiv.style.visibility = "visible";
			      
			  }
			  
			  //var end = (new Date()).getTime();
              //var total = (end - start)/ 1000;
                
              //alert("loading time:"+total);
              
           if (optionValue==1){
                //layer_data = new OpenLayers.Layer.WMS("Live Data","<%=sourcePath %>", {transparent:'true', layers: 'Layers/PortHope/PortHopePW '}, {'reproject': true, displayInLayerSwitcher:false}, {buffer: 1}, {singleTile: true});            
                //layer_data = new OpenLayers.Layer.WMS("Live Data",sourcePath, {transparent:'true', layers: 'Layers/PortHope/PortHopePW '}, {'reproject': true}, {buffer: 1}, {singleTile: true});            
                var dataLayer;
                //dataLayer = 'PUBLIC/Layers/'+ city + '/' + city + 'PW ';
                if (city=='Truckee'){
                 dataLayer = 'Public/layers/Truckee/truckee,Public/layers/Truckee/truckee1,Public/layers/Truckee/truckee2';
                }
                else
                {
                 dataLayer = 'PUBLIC/Layers/'+ city + '/' + city + 'PW ';
                }
                
                //layer_data = new OpenLayers.Layer.WMS("Live Data",sourcePath, {transparent:'true', layers: 'Layers/PortHope/PortHopePW '}, {'reproject': true, singleTile: true, buffer: 0});            
                layer_data = new OpenLayers.Layer.WMS("Live Data",sourcePath, {transparent:'true', layers: dataLayer}, {'reproject': true, singleTile: true, buffer: 0});            
                map.addLayer(layer_data);
                //layer_data.setZIndex(1000);
            }
            
        }
    }
    request.send(null);
    
    setTimeout(function(){UpdatePosition(cityID)}, 300000);  //5 minutes
    
    

    
}

function UpdatePosition(cityID) 
{
 
	//xmlDoc.load("simpleajax.xml");
	
	request = getXmlHttp();
	var lastUpdated;
	//v=null;
	//xmlDoc = GetXmlDoc();
	//alert("start");
	request.open("GET", "simpleajax.asp?city="+cityID, true);	
	request.onreadystatechange = function() {

		//var point;
		var attArray;
		//alert("changed");
		if (request.readyState == 4) {
	
	        var mrkers = request.responseXML.getElementsByTagName("m");
            
            for (var i = 0; i < mrkers.length; i++) {
		        var parentElement = mrkers[i];
        			
		        if (parentElement!=null) {	
			        //''2360398,2360398 Spare 1,-73.9585,40.7407,0,175,7/10/2007 7:52:28 PM				
			        attArray = (parentElement.getAttribute("d")).split(",")
			        //alert(parseFloat(attArray[2]) + " " + parseFloat(attArray[3]) );
        			
        			var updateMarker = markerArray[i]; 
        			//if (updateMarker.lonlat.lon != parseFloat(attArray[2]) && updateMarker.lonlat.lat != parseFloat(attArray[3]))
			        //{			        			            
			            markers.removeMarker(updateMarker);            			
    			            
			            updateMarker.lonlat.lon = parseFloat(attArray[2]);
			            updateMarker.lonlat.lat = parseFloat(attArray[3]);
			            
			            if ( lastUpdated == null) {
                            lastUpdated = new Date(attArray[6]);                        
                        }
                        else if ( lastUpdated < new Date(attArray[6])){
                            lastUpdated = new Date(attArray[6]); 
                        }  
            			
            			//updateMarker.lonlat.lon -= 0.001;
			            //updateMarker.lonlat.lat -= 0.001;
            			            
                        markers.addMarker(updateMarker);
                        
                        vehicleDescription[i] = attArray[1] + "<br />" + attArray[6];
                    //}
		        }
            }
            
            //if ( mrkers.length>0 ){
            //    var dateLast = new Date(lastUpdated);
            //    legendDiv.innerHTML = "<table style=\"border:1px solid Black;height:100%\"><tr><td><span style=\"vertical-align:middle;font-family:Verdana,Arial,Sans-Serif;font-size:10px;font-weight:normal\">Updated: " + MonthName(dateLast.getMonth()) + " " + dateLast.getDate() + " " + dateLast.getFullYear() + " " + dateLast.getHours() + ":" + dateLast.getMinutes() + "</span></td></tr>";			  
            //    legendDiv.style.visibility = "visible";
            //}
            
            var strLegend;	
            var dateLast = new Date(lastUpdated);		  
			if ( mrkers.length>0 ){
                strLegend = "<table style=\"background:white;border:1px solid Black;height:100%\"><tr>";
                if (optionValue==1 && legendUrl != ""){
                    strLegend = strLegend + "<td><img src=\"" + legendUrl + "\" /></td>";
                    //legendDiv.style.left = parseInt(legendDiv.style.left) - 60;
                }

                strLegend = strLegend + "<td><span style=\"background:white;vertical-align:middle;font-family:Verdana,Arial,Sans-Serif;font-size:10px;font-weight:normal\">Updated: " + MonthName(dateLast.getMonth()) + " " + dateLast.getDate() + " " + dateLast.getFullYear() + " " + FormatHourMinute(dateLast.getHours()) + ":" + FormatHourMinute(dateLast.getMinutes()) + "</span></td></tr>";			  
                legendDiv.innerHTML = strLegend;
                legendDiv.style.visibility = "visible";
                
            }
            
            if (optionValue==1){
	            var isRedraw = layer_data.redraw(true);
	            //alert(isRedraw);
	        }
        }
    }
    request.send(null);
    
    setTimeout(function(){UpdatePosition(cityID)}, 300000);  //refresh every 5 minutes    
}


