OpenLayers.Control.WFSAbandToolTip = OpenLayers.Class(OpenLayers.Control, {
    'wfsurl': '',
    'feature_class': '',
    defaultHandlerOptions: {
        'delay': 500,
        'pixelTolerance': null,
        'stopMove': false
    },


    initialize: function(options) {
        this.handlerOptions = OpenLayers.Util.extend(
			{}, this.defaultHandlerOptions
		);
        OpenLayers.Control.prototype.initialize.apply(
			this, arguments
		);
        this.handler = new OpenLayers.Handler.Hover(
			this,
			{ 'pause': this.onPause, 'move': this.onMove },
			this.handlerOptions
		);
    },

    onPause: function(e) {
        var ndList = document.getElementById('nodeList');
        ndList.innerHTML = "Loading...";
        var tolerance = new OpenLayers.Pixel(6, 6);
        var min_px = new OpenLayers.Pixel(
							e.xy.x - tolerance.x, e.xy.y + tolerance.y);
        var max_px = new OpenLayers.Pixel(
							e.xy.x + tolerance.x, e.xy.y - tolerance.y);
        var min_ll = map.getLonLatFromPixel(min_px);
        var max_ll = map.getLonLatFromPixel(max_px);

        url = this.wfsurl + '&MAXFEATURES=1&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=' + this.feature_class + '&SRS=' + map.projection + '&BBOX=' + min_ll.lon + ',' + min_ll.lat + ',' + max_ll.lon + ',' + max_ll.lat;

        $('nodeList').innerHTML = "<span style='background-color:green;color:white;font-family:arial;font-weight:bold'>Loading ...</span>";
        OpenLayers.ProxyHost = '';
        if (selectedParcels) {
            map.removeLayer(selectedParcels);
            selectedParcels = null;
        }
        selectedParcels = new OpenLayers.Layer.Vector("Selected Properties");
        map.addLayer(selectedParcels);
        var style_blue = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
        style_blue.strokeColor = "blue";
        style_blue.fillColor = "blue";
        var style_green = {
            strokeColor: "#00FF00",
            fillColor: "#FFFF00",
            strokeOpacity: 3,
            strokeWidth: 3,
            pointRadius: 3
            //pointerEvents: "visiblePainted"
        };
        //selectedParcels.style = style_green;

        OpenLayers.loadURL(url, '', map, function(response) {
            var doc = response.responseXML;
            var nodes = OpenLayers.Util.getNodes(doc, "gml:featureMember");
            var listDiv = ndList;
            var content = "";
            var feature_class = 'abandoned_private_2008';
            //document.write(url);
            if (nodes.length > 0) {
                selectedParcels.addFeatures(new OpenLayers.Format.GML().read(doc));
                for (var i = 0; i < nodes.length; i++) {
                    var nd = OpenLayers.Util.getNodes(nodes[i], "ms:" + feature_class)[0];
                    content += "<table class=tblProp><tr style='background-color:midnightblue;color:white'><th>" + OpenLayers.Util.getTagText(nd, "ms:strno") + " " + OpenLayers.Util.getTagText(nd, "ms:street_name") + " " + OpenLayers.Util.getTagText(nd, "ms:suffix") + "<br />" + OpenLayers.Util.getTagText(nd, "ms:neighborhood") + " " + OpenLayers.Util.getTagText(nd, "ms:zipcode") + "</th></tr>";
                    content += "<tr><td><b><a href='http://www.cityofboston.gov/assessing/search/default.asp?mode=reval&pid=" + OpenLayers.Util.getTagText(nd, "ms:parcel_id") + "' target=_blank>Assessing Info</a></td></tr>";
                    content += "<tr><td><b>Property Type</b><br />" + OpenLayers.Util.getTagText(nd, "ms:property_type") + "</td></tr><tr><td align=center><img src='/mapserv/GetProjectPicture.ashx?divprojid=Abandon" + OpenLayers.Util.getTagText(nd, "ms:yrsurvey") + "&parcel_id=" + OpenLayers.Util.getTagText(nd, "ms:parcel_id") + "&pictype=thumb' align='baseline' border=0 /></td></tr>";
                    content += '</table>';
                }

                //listDiv.innerHTML = content;
                if (popup) {
                    popup.destroy();
                    popup = null;
                }
                popup = new OpenLayers.Popup.FramedCloud("property",
						 new OpenLayers.LonLat(min_ll.lon, min_ll.lat),
						 new OpenLayers.Size(210, 210),
						 content, null, true);
                map.addPopup(popup);
                ndList.innerHTML = "";

            }
            else {//listDiv.innerHTML = "No matches found";
                //$('nodeList').innerHTML = url
            }

        });
    },

    onMove: function(evt) {
        // if this control sent an Ajax request (e.g. GetFeatureInfo) when
        // the mouse pauses the onMove callback could be used to abort that
        // request.
    },

    CLASS_NAME: "OpenLayers.Control.WFSToolTip"
});
