diff --git a/web/js/regions.js b/web/js/regions.js
index 7a890dd9..1c12e377 100644
--- a/web/js/regions.js
+++ b/web/js/regions.js
@@ -1,5 +1,46 @@
var regionConstructors = {};
+function createPolygonSurfaces(latlng, maxx, minx, maxy, miny, maxz, minz) {
+ return [
+ new L.Polygon([
+ latlng(minx,miny,minz),
+ latlng(maxx,miny,minz),
+ latlng(maxx,miny,maxz),
+ latlng(minx,miny,maxz)
+ ], {}),
+ new L.Polygon([
+ latlng(minx,maxy,minz),
+ latlng(maxx,maxy,minz),
+ latlng(maxx,maxy,maxz),
+ latlng(minx,maxy,maxz)
+ ], {}),
+ new L.Polygon([
+ latlng(minx,miny,minz),
+ latlng(minx,maxy,minz),
+ latlng(maxx,maxy,minz),
+ latlng(maxx,miny,minz)
+ ], {}),
+ new L.Polygon([
+ latlng(maxx,miny,minz),
+ latlng(maxx,maxy,minz),
+ latlng(maxx,maxy,maxz),
+ latlng(maxx,miny,maxz)
+ ], {}),
+ new L.Polygon([
+ latlng(minx,miny,maxz),
+ latlng(minx,maxy,maxz),
+ latlng(maxx,maxy,maxz),
+ latlng(maxx,miny,maxz)
+ ], {}),
+ new L.Polygon([
+ latlng(minx,miny,minz),
+ latlng(minx,maxy,minz),
+ latlng(minx,maxy,maxz),
+ latlng(minx,miny,maxz)
+ ], {})
+ ];
+}
+
componentconstructors['regions'] = function(dynmap, configuration) {
regionCfg = configuration;
var regionType = regionCfg.name;
diff --git a/web/js/regions_Residence.js b/web/js/regions_Residence.js
index bf7e2105..8df9672a 100644
--- a/web/js/regions_Residence.js
+++ b/web/js/regions_Residence.js
@@ -1,137 +1,31 @@
-regionConstructors['polygon'] = function(map, resname, region)
-{
- $.each(region.Areas, function(aname, area) {
- var name = resname + '_' + aname;
- if(regionCfg.use3dregions)
- {
- regionPolygons[name+'_bottom'] = new google.maps.Polygon($.extend(regionCfg.regionstyle, {
- paths: [
- map.getProjection().fromWorldToLatLng(area.X1,area.Y1,area.Z1),
- map.getProjection().fromWorldToLatLng(area.X2,area.Y1,area.Z1),
- map.getProjection().fromWorldToLatLng(area.X2,area.Y1,area.Z2),
- map.getProjection().fromWorldToLatLng(area.X1,area.Y1,area.Z2)
- ],
- map: map
- }));
- google.maps.event.addListener(regionPolygons[name+'_bottom'] , 'click', function(event) {
- regionInfo(event, resname, region);
- });
-
- regionPolygons[name+'_top'] = new google.maps.Polygon($.extend(regionCfg.regionstyle, {
- paths: [
- map.getProjection().fromWorldToLatLng(area.X1,area.Y2,area.Z1),
- map.getProjection().fromWorldToLatLng(area.X2,area.Y2,area.Z1),
- map.getProjection().fromWorldToLatLng(area.X2,area.Y2,area.Z2),
- map.getProjection().fromWorldToLatLng(area.X1,area.Y2,area.Z2)
- ],
- map: map
- }));
- google.maps.event.addListener(regionPolygons[name+'_top'] , 'click', function(event) {
- regionInfo(event, resname, region);
- });
-
- regionPolygons[name+'_east'] = new google.maps.Polygon($.extend(regionCfg.regionstyle, {
- paths: [
- map.getProjection().fromWorldToLatLng(area.X1,area.Y1,area.Z1),
- map.getProjection().fromWorldToLatLng(area.X1,area.Y2,area.Z1),
- map.getProjection().fromWorldToLatLng(area.X2,area.Y2,area.Z1),
- map.getProjection().fromWorldToLatLng(area.X2,area.Y1,area.Z1)
- ],
- map: map
- }));
- google.maps.event.addListener(regionPolygons[name+'_east'] , 'click', function(event) {
- regionInfo(event, resname, region);
- });
-
- regionPolygons[name+'_south'] = new google.maps.Polygon($.extend(regionCfg.regionstyle, {
- paths: [
- map.getProjection().fromWorldToLatLng(area.X2,area.Y1,area.Z1),
- map.getProjection().fromWorldToLatLng(area.X2,area.Y2,area.Z1),
- map.getProjection().fromWorldToLatLng(area.X2,area.Y2,area.Z2),
- map.getProjection().fromWorldToLatLng(area.X2,area.Y1,area.Z2)
- ],
- map: map
- }));
- google.maps.event.addListener(regionPolygons[name+'_south'] , 'click', function(event) {
- regionInfo(event, resname, region);
- });
-
- regionPolygons[name+'_west'] = new google.maps.Polygon($.extend(regionCfg.regionstyle, {
- paths: [
- map.getProjection().fromWorldToLatLng(area.X1,area.Y1,area.Z2),
- map.getProjection().fromWorldToLatLng(area.X1,area.Y2,area.Z2),
- map.getProjection().fromWorldToLatLng(area.X2,area.Y2,area.Z2),
- map.getProjection().fromWorldToLatLng(area.X2,area.Y1,area.Z2)
- ],
- map: map
- }));
- google.maps.event.addListener(regionPolygons[name+'_west'] , 'click', function(event) {
- regionInfo(event, resname, region);
- });
-
- regionPolygons[name+'_north'] = new google.maps.Polygon($.extend(regionCfg.regionstyle, {
- paths: [
- map.getProjection().fromWorldToLatLng(area.X1,area.Y1,area.Z1),
- map.getProjection().fromWorldToLatLng(area.X1,area.Y2,area.Z1),
- map.getProjection().fromWorldToLatLng(area.X1,area.Y2,area.Z2),
- map.getProjection().fromWorldToLatLng(area.X1,area.Y1,area.Z2)
- ],
- map: map
- }));
- google.maps.event.addListener(regionPolygons[name+'_west'] , 'click', function(event) {
- regionInfo(event, resname, region);
- });
- }
- else
- {
- middleY = area.Y2;
- regionPolygons[name+'_bottom'] = new google.maps.Polygon($.extend(regionCfg.regionstyle, {
- paths: [
- map.getProjection().fromWorldToLatLng(area.X1,middleY,area.Z1),
- map.getProjection().fromWorldToLatLng(area.X2,middleY,area.Z1),
- map.getProjection().fromWorldToLatLng(area.X2,middleY,area.Z2),
- map.getProjection().fromWorldToLatLng(area.X1,middleY,area.Z2)
- ],
- map: map
- }));
- google.maps.event.addListener(regionPolygons[name+'_bottom'] , 'click', function(event) {
- regionInfo(event, resname, region);
- });
- }
- });
+function createPolygonsFromResidence(latlng, name, residence) {
+ return createPolygonSurfaces(residence.X1, residence.X2, residence.Y1, residence.Y2, residence.Z1, residence.Z2);
}
-regionConstructors['info'] = function(event, name, region)
-{
- var flags = "";
- $.each(region.Permissions.AreaFlags, function(flag, status)
- {
- flags += flag+': '+status+'
';
- });
- var replace = ['%regionname%','%playerowners%','%flags%','%groupowners%', '%playermembers%', '%groupmembers%','%parent%', '%priority%'];
- var by = [name,region.Permissions.Owner, flags, '', '', '', '', ''];
+function createPopupContent(name, region) {
+ return $('