﻿function createMap() 
{
    //var map = $create(ESRI.ADF.UI.Map, {"callbackFunctionString":"void(0);","uniqueID":mapId,"extent":new ESRI.ADF.Geometries.Envelope(-128.76802301835,16.8516217934828,-64.2751131193493,60.0245614779379)}, null, null, $get("Map1"));            
    var map = $create(ESRI.ADF.UI.Map, {"callbackFunctionString":"void(0);","uniqueID":mapId,"extent":new ESRI.ADF.Geometries.Envelope(-127.31659375,31.1750703125,-100.94940625,46.5559296875)}, null, null, $get("Map1"));            
    
    var layers = new ESRI.ADF.Layers.LayerCollection();
    addAgsLayer(layers);  
    //addUsaLayer(layers);    
    addCaliforniaLayer(layers);
    //addSantaClaraLayer(layers);
    map.set_layers(layers);
}

function addAgsLayer(layers)
{
    var agslayer = $create(ESRI.ADF.Layers.AdfTileDirectAccess,{"id":"Map1_ESRI_StreetMap_World_2D","serverUrl":"http://services.arcgisonline.com/cache_sm/ESRI_StreetMap_World_2D/Layers/_alllayers","extent":new ESRI.ADF.Geometries.Envelope(-180,-90,180,90),"tileOrigin":new ESRI.ADF.Geometries.Point(-180,90),"imageFormat":"jpg","tileUrlGeneratorFunction":arcgisVirtualDirectoryTileUrlGenerator,"opacity":1,"levels":[new ESRI.ADF.Layers.LevelInfo(512,512,1,2,0.3515625,0.3515625,0,0),new ESRI.ADF.Layers.LevelInfo(512,512,2,4,0.17578125,0.17578125,0,0),new ESRI.ADF.Layers.LevelInfo(512,512,4,8,0.087890625,0.087890625,0,0),new ESRI.ADF.Layers.LevelInfo(512,512,8,16,0.0439453125,0.0439453125,0,0),new ESRI.ADF.Layers.LevelInfo(512,512,16,32,0.02197265625,0.02197265625,0,0),new ESRI.ADF.Layers.LevelInfo(512,512,32,64,0.010986328125,0.010986328125,0,0),new ESRI.ADF.Layers.LevelInfo(512,512,64,128,0.0054931640625,0.0054931640625,0,0),new ESRI.ADF.Layers.LevelInfo(512,512,128,256,0.00274658203125,0.00274658203125,0,0),new ESRI.ADF.Layers.LevelInfo(512,512,256,512,0.001373291015625,0.001373291015625,0,0),new ESRI.ADF.Layers.LevelInfo(512,512,512,1024,0.0006866455078125,0.0006866455078125,0,0),new ESRI.ADF.Layers.LevelInfo(512,512,1024,2048,0.00034332275390625,0.00034332275390625,0,0),new ESRI.ADF.Layers.LevelInfo(512,512,2048,4096,0.000171661376953125,0.000171661376953125,0,0),new ESRI.ADF.Layers.LevelInfo(512,512,4096,8192,8.58306884765625E-05,8.58306884765625E-05,0,0),new ESRI.ADF.Layers.LevelInfo(512,512,8192,16384,4.29153442382813E-05,4.29153442382813E-05,0,0),new ESRI.ADF.Layers.LevelInfo(512,512,16384,32768,2.14576721191407E-05,2.14576721191407E-05,0,0)],"visible":true});
    layers.add(agslayer);
}

function addUsaLayer(layers)
{
    var usalayer = $create(ESRI.ADF.Layers.AdfTileDirectAccess,{"id":"Map1_USA_Data","serverUrl":"http://maestro/arcgiscache/USA_Data/Layers/_alllayers","extent":new ESRI.ADF.Geometries.Envelope(-183.780014745329,16.2975638854873,-61.4068547410964,74.0304580085983),"tileOrigin":new ESRI.ADF.Geometries.Point(-400,400),"imageFormat":"png8","tileUrlGeneratorFunction":arcgisVirtualDirectoryTileUrlGenerator,"opacity":1,"levels":[new ESRI.ADF.Layers.LevelInfo(512,512,1,3,0.15228550153247,0.15228550153247,4,2),new ESRI.ADF.Layers.LevelInfo(512,512,2,4,0.0761427507662349,0.0761427507662349,8,5),new ESRI.ADF.Layers.LevelInfo(512,512,4,7,0.0380713753831174,0.0380713753831174,16,11),new ESRI.ADF.Layers.LevelInfo(512,512,7,13,0.0190356876915587,0.0190356876915587,33,22)],"visible":true});    
    layers.add(usalayer);
}

function addCaliforniaLayer(layers)
{
    var califLayer = $create(ESRI.ADF.Layers.AdfTileDirectAccess,{"id":"Map1_California","serverUrl":"http://shampur/arcgiscache/california/Layers/_alllayers","extent":new ESRI.ADF.Geometries.Envelope(-124.906008212026,32.0624608223553,-113.611860140747,42.4755122966973),"tileOrigin":new ESRI.ADF.Geometries.Point(-180,90),"imageFormat":"png8","tileUrlGeneratorFunction":arcgisVirtualDirectoryTileUrlGenerator,"opacity":0.6,"levels":[new ESRI.ADF.Layers.LevelInfo(512,512,1,1,0.351562499999999,0.351562499999999,0,0),new ESRI.ADF.Layers.LevelInfo(512,512,1,1,0.17578125,0.17578125,0,0),new ESRI.ADF.Layers.LevelInfo(512,512,1,1,0.0878906250000001,0.0878906250000001,1,1),new ESRI.ADF.Layers.LevelInfo(512,512,1,1,0.0439453125,0.0439453125,2,2),new ESRI.ADF.Layers.LevelInfo(512,512,2,2,0.02197265625,0.02197265625,4,4),new ESRI.ADF.Layers.LevelInfo(512,512,3,3,0.010986328125,0.010986328125,8,9),new ESRI.ADF.Layers.LevelInfo(512,512,5,5,0.0054931640625,0.0054931640625,16,19),new ESRI.ADF.Layers.LevelInfo(512,512,9,9,0.00274658203124999,0.00274658203124999,33,39),new ESRI.ADF.Layers.LevelInfo(512,512,16,17,0.001373291015625,0.001373291015625,67,78),new ESRI.ADF.Layers.LevelInfo(512,512,30,33,0.0006866455078125,0.0006866455078125,135,156),new ESRI.ADF.Layers.LevelInfo(512,512,60,65,0.000343322753906249,0.000343322753906249,270,313),new ESRI.ADF.Layers.LevelInfo(512,512,120,130,0.000171661376953125,0.000171661376953125,540,626),new ESRI.ADF.Layers.LevelInfo(512,512,238,258,8.58306884765626E-05,8.58306884765626E-05,1081,1253),new ESRI.ADF.Layers.LevelInfo(512,512,475,515,4.29153442382813E-05,4.29153442382813E-05,2162,2507),new ESRI.ADF.Layers.LevelInfo(512,512,949,1029,2.14576721191406E-05,2.14576721191406E-05,4325,5014),new ESRI.ADF.Layers.LevelInfo(512,512,1897,2057,1.07288360595703E-05,1.07288360595703E-05,8651,10029)],"visible":true});
    layers.add(califLayer);
}

function addSantaClaraLayer(layers)
{
   var sc_layer = $create(ESRI.ADF.Layers.AdfTileDirectAccess,{"id":"Map1_SantaClara","serverUrl":"http://sarge/arcgiscache/SantaClara/SantaClara/_alllayers","extent":new ESRI.ADF.Geometries.Envelope(-122.25213395,36.86463115,-121.15968105,37.51415585),"tileOrigin":new ESRI.ADF.Geometries.Point(-180,90),"imageFormat":"png32","tileUrlGeneratorFunction":arcgisVirtualDirectoryTileUrlGenerator,"opacity":1,"levels":[new ESRI.ADF.Layers.LevelInfo(512,512,1,1,0.00274658203124999,0.00274658203124999,37,41),new ESRI.ADF.Layers.LevelInfo(512,512,256,512,0.001373291015625,0.001373291015625,74,82),new ESRI.ADF.Layers.LevelInfo(512,512,3,4,0.0006866455078125,0.0006866455078125,149,164),new ESRI.ADF.Layers.LevelInfo(512,512,4,5,0.000475892192288968,0.000475892192288968,215,237),new ESRI.ADF.Layers.LevelInfo(512,512,5,7,0.000343322753906249,0.000343322753906249,298,328),new ESRI.ADF.Layers.LevelInfo(512,512,7,9,0.000237946096144484,0.000237946096144484,430,474),new ESRI.ADF.Layers.LevelInfo(512,512,8,13,0.000171661376953125,0.000171661376953125,597,657),new ESRI.ADF.Layers.LevelInfo(512,512,12,18,0.000118973048072242,0.000118973048072242,861,948)],"visible":true});     
   layers.add(sc_layer);
}

function getServerProxyUrl(level, column, row, imageFormat, serverUrl){
    var url = location.href;
    var pos = url.lastIndexOf('/');
    if(pos > -1) 
        {url = url.substring(0, pos);}
    return String.format('{0}/tileserverproxy.ashx?level={1}&column={2}&row={3}&imageFormat={4}&url={5}', url, level, column, row, imageFormat, encodeURIComponent(serverUrl));
}

function isSameOrigin(url) {
    if(!url){return false;}
    var host = location.host;
    if(url.startsWith('http://' + host) || url.startsWith('https://' + host) || url.startsWith('http://www.' + host) || url.startsWith('https://www.' + host))
        {return true;}
    return false;
}

function pad(toPad, padding, totalLength, padLeft)  {
    if (toPad.length < totalLength) 
    {   
        if (padLeft) 
            toPad = padding + toPad;
        else toPad = 
            toPad + padding;
    }
    if (toPad.length >= totalLength) 
        return toPad;
    return pad(toPad, padding, totalLength, padLeft);
}

function arcgisVirtualDirectoryTileUrlGenerator(level, column, row, vdir, fileExtension) {    
    var sLevel = String.format('L{0}', pad(level.toString(), '0', 2, true));
    var sRow = String.format('R{0}', pad(row.toString(16), '0', 8, true));
    var sColumn = String.format('C{0}', pad(column.toString(16), '0', 8, true));
    return String.format('{0}/{1}/{2}/{3}.{4}', vdir, sLevel, sRow, sColumn, fileExtension);
}






