|
POST
|
Yes your code should work. I updated my sample to add the world imagery and remove the thumbnails and it worked for me. Here's the code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=7,IE=9" />
<!--The viewport meta tag is used to improve the presentation and behavior
of the samples on iOS devices-->
<meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"
/>
<title>
Basemap Gallery - Bing Maps
</title>
<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/2.6/js/dojo/dijit/themes/claro/claro.css">
<style type="text/css">
html,body {
height:100%;
width:100%;
margin:0;
padding:0;
}
body {
background-color:#feffff;
overflow:hidden;
font-family:"Trebuchet MS";
margin:2%;
}
#map {
-moz-border-radius:4px;
overflow:hidden;
border:solid 2px #03c;
}
.claro .dijitButtonText {
color:#03c;
font-family: Arial, Helvetica, sans-serif
font-weight:bold;
}
.claro td.dijitMenuItemLabel {
color:#03c;
font-family: Arial, Helvetica, sans-serif
font-weight:500;
}
</style>
<script type="text/javascript">
var djConfig = {
parseOnLoad: true
};
</script>
<script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=2.6">
</script>
<script type="text/javascript">
dojo.require("dijit.dijit"); // optimize: load dijit layer
dojo.require("dijit.layout.BorderContainer");
dojo.require("dijit.layout.ContentPane");
dojo.require("esri.map");
dojo.require("esri.dijit.BasemapGallery");
dojo.require("dijit.Tooltip");
dojo.require("dijit.form.Button");
dojo.require("dijit.Menu");
var map, basemapGallery;
function init() {
var initialExtent = new esri.geometry.Extent({
"xmin": -1641867,
"ymin": 2647172,
"xmax": 3064207,
"ymax": 4765395,
"spatialReference": {
"wkid": 102113
}
});
map = new esri.Map("map", {
extent: initialExtent
});
createBasemapGallery();
dojo.connect(map, 'onLoad', function(map) {
//resize the map when the browser resizes
dojo.connect(dijit.byId('map'), 'resize', map,map.resize);
});
}
function createBasemapGallery(){
//Manually create a list of basemaps to display
var basemaps = [];
var oceanLayer = new esri.dijit.BasemapLayer({
url: "http://server.arcgisonline.com/ArcGIS/rest/services/Ocean_Basemap/MapServer"
});
var oceansBasemap = new esri.dijit.Basemap({
layers:[oceanLayer],
title:"World Oceans"
});
basemaps.push(oceansBasemap);
var basemapImagery = new esri.dijit.Basemap({
layers: [new esri.dijit.BasemapLayer({
url: "http://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"
})],
id: "bmImagery",
title: "Imagery"
});
basemaps.push(basemapImagery);
var natGeoLayer = new esri.dijit.BasemapLayer({
url:"http://server.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer"
});
var natGeoBasemap = new esri.dijit.Basemap({
layers:[natGeoLayer],
title:"National Geographic"
});
basemaps.push(natGeoBasemap);
basemapGallery = new esri.dijit.BasemapGallery({
showArcGISBasemaps: false,
basemaps: basemaps,
map: map
});
//BasemapGallery.startup isn't needed because we aren't using the default basemap, instead
//we are going to create a custom user interface to display the basemaps, in this case a menu.
dojo.forEach(basemapGallery.basemaps, function(basemap) {
//Add a menu item for each basemap, when the menu items are selected
dijit.byId("bingMenu").addChild(new dijit.MenuItem({
label: basemap.title,
onClick: dojo.hitch(this, function() {
this.basemapGallery.select(basemap.id);
})
}));
});
}
//show map on load
dojo.addOnLoad(init);
</script>
</head>
<body class="claro">
<div dojotype="dijit.layout.BorderContainer" design="headline" gutters="false"
style="width: 95%; height: 94%;">
<div id="map" dojotype="dijit.layout.ContentPane" region="center">
<div style="position:absolute; right:50px; top:10px; z-Index:99;">
<button id="dropdownButton" label="Basemaps" dojoType="dijit.form.DropDownButton">
<div dojoType="dijit.Menu" id="bingMenu">
<!--The menu items are dynamically created using the basemap gallery layers-->
</div>
</button>
</div>
</div>
</div>
</body>
</html>
... View more
12-20-2011
11:30 AM
|
0
|
0
|
2023
|
|
POST
|
To modify the size, location and labels for the zoom slider you can use the options in esri.config. Here's an example that modifies the location and size:
function init() {
//set position of slider at 10 pixels offset from right/top of map
//set slider height to 100 pixels
esri.config.defaults.map.slider = { right:"10px", top:"10px", width:null, height:"300px" };
For the arrows here's some css that changes the arrow image. In this case I have a sprite that contains two arrows (up and down). The positions specified for the up and down arrow using background-position specify the location of the individual image within the sprite. If you use a tool like this one to generate the sprite it will provide you with the location coords for each of the contained images. http://spritegen.website-performance.org/
.claro .dijitSliderDecrementIconH, .claro .dijitSliderIncrementIconH, .claro .dijitSliderDecrementIconV, .claro .dijitSliderIncrementIconV {
background: url("../images/arrows.png") no-repeat top left;
border: 1px solid #B5BCC7;
border-radius: 2px 2px 2px 2px;
font-size: 1px;
}
.claro .dijitSliderDecrementIconV {
background-position: 0 0;
width:16px;
height:16px;
border: none;
}
.claro .dijitSliderIncrementIconV {
background-position: 0 -66px;
width:16px;
height:16px;
border:none;
}
... View more
12-20-2011
07:42 AM
|
2
|
0
|
3157
|
|
POST
|
You will need to manually build the basemaps you want to add to the gallery. Here's an example that shows adding the Oceans and National Geographic basemaps. You can't include the Imagery Prime map with these because its in a different spatial reference (4326) and all the basemaps in the gallery need to share the same spatial reference.
//Manually create a list of basemaps to display
var basemaps = [];
var oceanLayer = new esri.dijit.BasemapLayer({
url: "http://server.arcgisonline.com/ArcGIS/rest/services/Ocean_Basemap/MapServer"
});
var oceansBasemap = new esri.dijit.Basemap({
layers:[oceanLayer],
title:"World Oceans",
thumbnailUrl:"http://www.arcgis.com/sharing/content/items/2adf08a4a1a84834a773805a6e86f69e/info/thumbnail/oceans.jpg"
});
basemaps.push(oceansBasemap);
var natGeoLayer = new esri.dijit.BasemapLayer({
url:"http://server.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer"
});
var natGeoBasemap = new esri.dijit.Basemap({
layers:[natGeoLayer],
title:"National Geographic",
thumbnailUrl:"http://www.arcgis.com/sharing/content/items/b9b1b422198944fbbd5250b3241691b6/info/thumbnail/natgeo3.jpg"
});
basemaps.push(natGeoBasemap);
basemapGallery = new esri.dijit.BasemapGallery({
showArcGISBasemaps: false,
basemaps: basemaps,
map: map
});
Alternatively you could create a group in ArcGIS.com that contains the basemaps you want to display then use the new (at version 2.6) basemapsGroup option to specify the owner and name of the group you created:
var basemapGallery = new esri.dijit.BasemapGallery({
showArcGISBasemaps: true,
basemapsGroup:{owner:"esri",title:"Community Basemaps"},
map: map
}, dojo.create('div'));
... View more
12-20-2011
06:50 AM
|
0
|
0
|
2023
|
|
POST
|
Emily, Here's one approach using the method Jeff suggested above (disable identify when measure tools are active). In the doIdentify function I check to see if any of the measurement tools have been selected. If they are then the identify is not performed.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=7,IE=9" />
<!--The viewport meta tag is used to improve the presentation and behavior of the samples
on iOS devices-->
<meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"/>
<title>Identify Sample</title>
<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/2.6/js/dojo/dijit/themes/claro/claro.css">
<script type="text/javascript">djConfig = { parseOnLoad:true }</script>
<script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=2.6"></script>
<style>
html, body { height: 98%; width: 98%; margin: 0; padding: 5px; }
</style>
<script type="text/javascript">
dojo.require("esri.map");
dojo.require("esri.tasks.identify");
dojo.require("dijit.layout.ContentPane");
dojo.require("dijit.layout.TabContainer");
dojo.require("dijit.form.Button");
dojo.require("esri.dijit.Measurement");
var map, identifyTask, identifyParams, symbol;
var layer2results, layer3results, layer4results;
var measurement;
function init() {
var initExtent = new esri.geometry.Extent({"xmin":-9270392.071487641,"ymin":5247043.693206084,"xmax":-9269914.340060795,"ymax":5247401.99177622,"spatialReference":{"wkid":102100}});
map = new esri.Map("mapDiv",{extent:initExtent});
dojo.connect(map, "onLoad", initFunctionality);
var basemap = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer");
map.addLayer(basemap);
var landBaseLayer = new esri.layers.ArcGISDynamicMapServiceLayer("http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/BloomfieldHillsMichigan/Parcels/MapServer",{opacity:.20});
dojo.connect(map.infoWindow, "onShow", function() {
dijit.byId("tabs").resize();
});
map.addLayer(landBaseLayer);
}
function initFunctionality(map) {
measurement = new esri.dijit.Measurement({
map: map
}, dojo.byId('mdiv'));
measurement.startup();
dojo.connect(map, "onClick", doIdentify);
identifyTask = new esri.tasks.IdentifyTask("http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/BloomfieldHillsMichigan/Parcels/MapServer");
identifyParams = new esri.tasks.IdentifyParameters();
identifyParams.tolerance = 3;
identifyParams.returnGeometry = true;
identifyParams.layerIds = [0,2];
identifyParams.layerOption = esri.tasks.IdentifyParameters.LAYER_OPTION_ALL;
identifyParams.width = map.width;
identifyParams.height = map.height;
map.infoWindow.resize(415, 200);
map.infoWindow.setContent(dijit.byId("tabs").domNode);
map.infoWindow.setTitle("Identify Results");
symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255,0,0]), 2), new dojo.Color([255,255,0,0.25]));
}
function doIdentify(evt) {
var measureMode = dojo.query(".esriButton .dijitButtonNode").some(function(node, index, arr){
if(node.childNodes[0].checked){
//at least one of the measure tools is active so disable identify
return true;
}
});
if(! measureMode){
map.graphics.clear();
identifyParams.geometry = evt.mapPoint;
identifyParams.mapExtent = map.extent;
identifyTask.execute(identifyParams, function(idResults) { addToMap(idResults, evt); });
}
}
function addToMap(idResults, evt) {
bldgResults = {displayFieldName:null,features:[]};
parcelResults = {displayFieldName:null,features:[]};
for (var i=0, il=idResults.length; i<il; i++) {
var idResult = idResults;
if (idResult.layerId === 0) {
if (!bldgResults.displayFieldName) {bldgResults.displayFieldName = idResult.displayFieldName};
bldgResults.features.push(idResult.feature);
}
else if (idResult.layerId === 2) {
if (!parcelResults.displayFieldName) {parcelResults.displayFieldName = idResult.displayFieldName};
parcelResults.features.push(idResult.feature);
}
}
dijit.byId("bldgTab").setContent(layerTabContent(bldgResults,"bldgResults"));
dijit.byId("parcelTab").setContent(layerTabContent(parcelResults,"parcelResults"));
map.infoWindow.show(evt.screenPoint, map.getInfoWindowAnchor(evt.screenPoint));
}
function layerTabContent(layerResults, layerName) {
var content = "";
switch (layerName) {
case "bldgResults":
content = "<i>Total features returned: " + layerResults.features.length + "</i>";
content += "<table border='1'><tr><th>ID</th><th>Address</th></tr>";
for (var i=0, il=layerResults.features.length; i<il; i++) {
content+="<tr><td>"+layerResults.features.attributes['PARCELID']+" <a href='#' onclick='showFeature(" + layerName + ".features[" + i + "]); return false;'>(show)</a></td>";
content+="<td>"+layerResults.features.attributes['Full Site Address']+"</td>";
}
content+="</tr></table>";
break;
case "parcelResults":
content = "<i>Total features returned: " + layerResults.features.length + "</i>";
content += "<table border='1'><tr><th>ID</th><th>Year Built</th><th>School District</th><th>Description</th></tr>";
for (var i=0, il=layerResults.features.length; i<il; i++) {
content+="<tr><td>"+layerResults.features.attributes['Parcel Identification Number']+" <a href='#' onclick='showFeature(" + layerName + ".features[" + i + "]); return false;'>(show)</a></td>";
content+="<td>"+layerResults.features.attributes['Residential Year Built']+"</td>";
content+="<td>"+layerResults.features.attributes['School District Description']+"</td>";
content+="<td>"+layerResults.features.attributes['Property Description']+"</td>";
}
content+="</tr></table>";
break;
}
return content;
}
function showFeature(feature) {
map.graphics.clear();
feature.setSymbol(symbol);
map.graphics.add(feature);
}
dojo.addOnLoad(init);
</script>
</head>
<body class="claro">
Click the map to identify building and tax information.
<div id="mapDiv" style="width:800px; height:600px; border:1px solid #000;"></div>
<!-- info window tabs -->
<div id="tabs" dojoType="dijit.layout.TabContainer" style="width:385px;height:150px;">
<div id="bldgTab" dojoType="dijit.layout.ContentPane" title="Buildings"></div>
<div id="parcelTab" dojoType="dijit.layout.ContentPane" title="Tax Parcels"></div>
</div>
<div id='mdiv'>My test div area</div>
</body>
</html>
... View more
12-19-2011
08:40 AM
|
0
|
0
|
978
|
|
POST
|
For an example of destroying/recreating the editor take a look at the Basic Viewer template. The source code is available as a download here: http://www.arcgis.com/home/item.html?id=89db99ee00834c85b3f9284d9e81c964
... View more
12-16-2011
07:54 AM
|
0
|
0
|
2225
|
|
POST
|
The JavaScript viewer has not been updated in a long time but it looks like you can download the source code here: http://arcscripts.esri.com/details.asp?dbid=15987
... View more
12-16-2011
07:38 AM
|
0
|
0
|
634
|
|
POST
|
Jeff, I don't think there is a list or service that defines the basemaps that will be included in the basemap gallery. However if you want control over the basemaps you might want to look at the basemapsGroup option that was added at 2.6 to the BasemapGallery. This option allows you to specify an ArcGIS.com group that contains the basemaps that will be used by the gallery. You could create an ArcGIS.com group and add the basemaps you want so you have complete control. For example, here we add all the maps in the 'Community Basemaps' group: var basemapGallery = new esri.dijit.BasemapGallery({
showArcGISBasemaps: false,
basemapsGroup:{owner:"esri",title:"Community Basemaps"},
map: map
}, dojo.create('div'));
... View more
12-16-2011
07:31 AM
|
0
|
0
|
1314
|
|
POST
|
Setting a value on a custom widget probably won't work because when the attribute editor is displayed it will overwrite your value with the value (perhaps null) for the currently edited feature. Here's an example that uses the 'onBeforeApplyEdits' approach. Is there a reason you didn't want to use this approach?
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=7, IE=9" />
<!--The viewport meta tag is used to improve the presentation and behavior of the samples
on iOS devices-->
<meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"/>
<title>Validate Attributes</title>
<!-- include dojo theme -->
<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/2.6/js/dojo/dijit/themes/claro/claro.css">
<style type="text/css">
.dj_ie .infowindow .window .top .right .user .content { position: relative; }
.dj_ie .simpleInfoWindow .content {position: relative;}
</style>
<style>
html, body { height: 100%; width: 100%; margin: 0; padding: 0; overflow:hidden; }
#leftPane{
overflow:hidden;
border:none;
color:#5C832F;
}
#map{
border: solid medium #382513;
padding:0;
}
.esriAttributeInspector{
atiLayerName:'Building Details'
}
.templatePicker{
border:none !important;
}
.templatePicker .grid .groupLabel{
display:none;
}
</style>
<!-- specify dojo configuration to parse dijits at load time -->
<script type="text/javascript">
dojoConfig = {
parseOnLoad:true
};
</script>
<!-- reference ArcGIS JavaScript API -->
<script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=2.6"></script>
<script type="text/javascript">
//require selection dijit
dojo.require("esri.map");
dojo.require("esri.dijit.editing.Editor-all");
dojo.require("dijit.layout.ContentPane");
dojo.require("dijit.layout.BorderContainer");
dojo.require("dijit.form.DateTextBox");
dojo.require("dijit.form.TextBox");
var map;
function init() {
//This sample requires a proxy page to handle communications with the ArcGIS Server services. You will need to
//replace the url below with the location of a proxy on your machine. See the 'Using the proxy page' help topic
//for details on setting up a proxy page.
esri.config.defaults.io.proxyUrl = "http://autumn/proxy/proxy.ashx";
//This service is for development and testing purposes only. We recommend that you create your own geometry service for use within your applications.
esri.config.defaults.geometryService = new esri.tasks.GeometryService("http://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer");
var initialExtent = new esri.geometry.Extent({"xmin":-13062820,"ymin":4063755,"xmax":-13048794,"ymax":4071609,"spatialReference":{"wkid":102100}});
map = new esri.Map("map", { extent:initialExtent, slider: false, nav: true });
dojo.connect(map, "onLoad", function() {
//resize the map when the browser resizes
dojo.connect(dijit.byId('map'), 'resize', map,map.resize);
});
dojo.connect(map, "onLayersAddResult", initEditor);
var basemap = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer");
map.addLayer(basemap);
//Add the editable feature layer to the map
var pointsOfInterest = new esri.layers.FeatureLayer("http://sampleserver5.arcgisonline.com/ArcGIS/rest/services/Notes/FeatureServer/0",{
mode: esri.layers.FeatureLayer.MODE_ONDEMAND,
outFields: ['*']
});
map.addLayers([pointsOfInterest]);
}
function initEditor(results) {
//only one layer
var featureLayer = results[0].layer;
//add a default value for newly added features
dojo.connect(featureLayer,'onBeforeApplyEdits',function(adds,deletes,updates){
dojo.forEach(adds,function(add){
if(add.attributes['name'] === null){
add.attributes['name'] = 'Sam Wrangler';
}
});
});
var templatePicker = new esri.dijit.editing.TemplatePicker({
featureLayers: [featureLayer],
rows: 'auto',
groupingEnabled:false,
columns: 1
},'editorDiv');
templatePicker.startup();
var textDijit = new dijit.form.TextBox({
id:"nameField",
placeHolder:'Enter your name here' //do they need placeholder or value
});
var layerInfos = [{
'featureLayer':featureLayer,
'showAttachments':false,
'showDeleteButton':false,
'fieldInfos':[
{'fieldName':'name','label':'Name','customField':textDijit},
{'fieldName':'email','label':'Email'}
]
}];
//define the editor settings
var settings = {
map: map,
templatePicker:templatePicker,
layerInfos:layerInfos
};
var params = {settings: settings};
//Create the editor widget
var editorWidget = new esri.dijit.editing.Editor(params);
editorWidget.startup();
//resize the info window (attribute inspector)
map.infoWindow.resize(295,245);
}
dojo.addOnLoad(init);
</script>
</head>
<body class="claro">
<div data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="design:'sidebar'" style="width:100%;height:100%;">
<div id="map" data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'center'"></div>
<div id="leftPane" data-dojo-type="dijit.layout.ContentPane" style="width:100px;" data-dojo-props="region:'left'">
<div>Click the Notes icon - then click location on map to add new map note. When a new phone number is
entered dojo's ValidationTextBox is used to make sure a properly formatted phone number is entered.</div>
<div id="editorDiv"></div>
<div></div>
</div>
</div>
</body>
</html>
... View more
12-15-2011
12:11 PM
|
1
|
0
|
1479
|
|
POST
|
Jeff, We'd really like to try and reproduce this issue but so far no luck. Just to clarify can you reproduce the problem with the sample or is it only your application? Since you are seeing errors in Firebug I assume you are seeing the issue in Firefox - which version? If you can't reproduce with the sample do you have a url that shows the problem?
... View more
12-15-2011
09:42 AM
|
0
|
0
|
1314
|
|
POST
|
Jeff, I can't reproduce with this sample: http://help.arcgis.com/en/webapi/javascript/arcgis/demos/widget/widget_basemap.html Can you repro with that sample? If so can you provide me with a series of steps that will show the problem. I tested switching basemaps and using the scroll wheel to zoom and everything looked ok to me.
... View more
12-15-2011
08:44 AM
|
0
|
0
|
1651
|
|
POST
|
Are you specifying a valid bing maps key for the BasemapGallery? var basemapGallery = new esri.dijit.BasemapGallery({
showArcGISBasemaps: true,
bingMapsKey:'Enter Bing Maps Key Here',
map: map
}, "basemapGallery"); I appear to have the same problem. I'm using the BasemapGallery Dijit in my application.
... View more
12-15-2011
08:20 AM
|
0
|
0
|
1651
|
|
POST
|
Paul, You could create zoom buttons that modify the map's extent. Something like this: <div data-dojo-type="dijit.form.Button" id="zoomin" data-dojo-props="iconClass:'zoominIcon', onClick:function(){map.setExtent(map.extent.expand(0.5));}">Zoom In</div>
<div data-dojo-type="dijit.form.Button" id="zoomout" data-dojo-props="iconClass:'zoomoutIcon', onClick:function(){map.setExtent(map.extent.expand(2));}">Zoom Out</div>
... View more
12-14-2011
12:12 PM
|
0
|
0
|
1221
|
|
POST
|
For those that need the local download it is now available: http://resources.arcgis.com/content/web/arcgis-javascript-api-download
... View more
12-14-2011
11:46 AM
|
0
|
0
|
1352
|
|
POST
|
After clicking on the zoom buttons you'll need to draw a zoom extent on the map in order for the zoom action to occur. You mentioned that it doesn't work in your project. Can you post code?
... View more
12-14-2011
08:22 AM
|
0
|
0
|
1221
|
|
POST
|
Thanks Jeff. I updated the broken links and the 'fixed' version of the document should be available in approximately 20 minutes.
... View more
12-14-2011
07:48 AM
|
0
|
0
|
1352
|
| Title | Kudos | Posted |
|---|---|---|
| 1 | 03-31-2026 08:27 AM | |
| 1 | 03-26-2026 09:07 AM | |
| 1 | 03-26-2026 10:11 AM | |
| 1 | 03-24-2026 02:23 PM | |
| 1 | 03-17-2026 02:50 PM |
| Online Status |
Offline
|
| Date Last Visited |
yesterday
|