Property Listings

Discover your perfect home from our extensive collection

House
New Construction Home
House

$395,000

3 days ago

456 Oak Avenue, Green Bay, WI 54301

3 beds
2.5 baths
1,850 sq ft
Family Home
House

$625,000

5 days ago

321 Pine Ridge Drive, Appleton, WI 54911

5 beds
4 baths
3,200 sq ft
Ranch Style Home
House

$275,000

1 day ago

654 University Avenue, Madison, WI 53715

2 beds
1 bath
950 sq ft
Colonial Revival Home
House

$445,000

1 week ago

987 Elm Street, Kenosha, WI 53140

3 beds
2 baths
1,680 sq ft
Showing 1-12 of 1,247 properties
...
Show:
document.addEventListener('DOMContentLoaded', function() { const viewToggles = document.querySelectorAll('.view-toggle'); const gridView = document.getElementById('grid-view'); const listView = document.getElementById('list-view'); const mapViewElement = document.getElementById('map-view'); const propertyMarkers = document.querySelectorAll('#map-view .absolute[style*="left"]'); viewToggles.forEach(toggle => { toggle.addEventListener('click', function() { const view = this.dataset.view; viewToggles.forEach(btn => { btn.classList.remove('bg-primary', 'text-white'); btn.classList.add('bg-white', 'text-gray-600'); }); this.classList.remove('bg-white', 'text-gray-600'); this.classList.add('bg-primary', 'text-white'); gridView.classList.add('hidden'); listView.classList.add('hidden'); mapView.classList.add('hidden'); if (view === 'grid') { gridView.classList.remove('hidden'); } else if (view === 'list') { listView.classList.remove('hidden'); } else if (view === 'map') { mapView.classList.remove('hidden'); } }); }); propertyMarkers.forEach(marker => { if (!marker.classList.contains('pointer-events-none')) { marker.addEventListener('click', function() { propertyMarkers.forEach(m => { if (m.querySelector('.bg-white')) { m.querySelector('.bg-white').style.display = 'none'; } }); const infoWindow = this.querySelector('.bg-white'); if (infoWindow) { infoWindow.style.display = 'block'; } }); } }); const zoomInElement = document.querySelector('#map-view .ri-zoom-in-line'); const zoomOutElement = document.querySelector('#map-view .ri-zoom-out-line'); const mapPinElement = document.querySelector('#map-view .ri-map-pin-line'); const focusElement = document.querySelector('#map-view .ri-focus-2-line'); const mapControls = { zoomIn: zoomInElement ? zoomInElement.parentElement : null, zoomOut: zoomOutElement ? zoomOutElement.parentElement : null, currentLocation: mapPinElement ? mapPinElement.parentElement : null, drawArea: focusElement ? focusElement.parentElement : null }; let isDrawingMode = false; let drawingPoints = []; let drawingOverlay = null; function createDrawingOverlay() { const overlay = document.createElement('div'); overlay.id = 'drawing-overlay'; overlay.style.position = 'absolute'; overlay.style.top = '0'; overlay.style.left = '0'; overlay.style.width = '100%'; overlay.style.height = '100%'; overlay.style.backgroundColor = 'rgba(59, 130, 246, 0.1)'; overlay.style.cursor = 'crosshair'; overlay.style.zIndex = '10'; return overlay; } function startDrawingMode() { if (!mapControls.drawArea) return; isDrawingMode = true; mapControls.drawArea.classList.add('bg-primary', 'text-white'); drawingOverlay = createDrawingOverlay(); const mapViewElement = document.getElementById('map-view'); if (mapViewElement) { mapViewElement.appendChild(drawingOverlay); } let isDrawing = false; let drawingPath = document.createElement('div'); drawingPath.style.position = 'absolute'; drawingPath.style.border = '2px solid #3B82F6'; drawingPath.style.backgroundColor = 'rgba(59, 130, 246, 0.1)'; drawingOverlay.addEventListener('mousedown', (e) => { isDrawing = true; const rect = drawingOverlay.getBoundingClientRect(); const startX = e.clientX - rect.left; const startY = e.clientY - rect.top; drawingPath.style.left = startX + 'px'; drawingPath.style.top = startY + 'px'; drawingPoints = [{x: startX, y: startY}]; drawingOverlay.appendChild(drawingPath); }); drawingOverlay.addEventListener('mousemove', (e) => { if (!isDrawing) return; const rect = drawingOverlay.getBoundingClientRect(); const currentX = e.clientX - rect.left; const currentY = e.clientY - rect.top; const width = currentX - drawingPoints[0].x; const height = currentY - drawingPoints[0].y; drawingPath.style.width = Math.abs(width) + 'px'; drawingPath.style.height = Math.abs(height) + 'px'; drawingPath.style.left = (width < 0 ? currentX : drawingPoints[0].x) + 'px'; drawingPath.style.top = (height < 0 ? currentY : drawingPoints[0].y) + 'px'; }); drawingOverlay.addEventListener('mouseup', () => { isDrawing = false; endDrawingMode(); }); } function endDrawingMode() { isDrawingMode = false; if (mapControls.drawArea) { mapControls.drawArea.classList.remove('bg-primary', 'text-white'); } if (drawingOverlay) { const drawnArea = drawingOverlay.querySelector('div'); if (drawnArea) { filterPropertiesByArea(drawnArea.getBoundingClientRect()); } drawingOverlay.remove(); drawingOverlay = null; } } function filterPropertiesByArea(bounds) { propertyMarkers.forEach(marker => { const markerRect = marker.getBoundingClientRect(); const isInBounds = ( markerRect.left >= bounds.left && markerRect.right <= bounds.right && markerRect.top >= bounds.top && markerRect.bottom <= bounds.bottom ); marker.style.opacity = isInBounds ? '1' : '0.3'; }); } Object.values(mapControls).forEach(control => { if (control) { control.addEventListener('click', function() { if (this === mapControls.drawArea) { if (!isDrawingMode) { startDrawingMode(); } } else { this.classList.add('bg-gray-100'); setTimeout(() => this.classList.remove('bg-gray-100'), 200); } }); } }); document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && isDrawingMode) { if (drawingOverlay) { drawingOverlay.remove(); drawingOverlay = null; } endDrawingMode(); } }); });