
function myOnLoad() {
       initDHTMLAPI();
       init();
	drawPage();

}

 var map;

        OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3;
        OpenLayers.Util.onImageLoadErrorColor = "transparent";

        function init(){
            var options = {
                projection: new OpenLayers.Projection("EPSG:900913"),
                displayProjection: new OpenLayers.Projection("EPSG:4326"),
                units: "m",
                maxResolution: 78271.516964020480859375,
                maxExtent: new OpenLayers.Bounds(-20037508.3427892431,-20037508.3427892431,20037508.3427892431,20037508.3427892431),

                controls: [new OpenLayers.Control.Navigation(),new OpenLayers.Control.PanZoomBar()]
            };
            map = new OpenLayers.Map('map', options);

            var mapnik = new OpenLayers.Layer.TMS(
                "OpenStreetMap&nbsp;(Mapnik)",
                  "http://a.tile.openstreetmap.org/",
                {
                    type: 'png', getURL: osm_getTileURL,
                    displayOutsideMaxExtent: true,
                    attribution: '<a href="http://www.openstreetmap.org/">OpenStreetMap</a>'
                }
            );
            
            var osmarender = new OpenLayers.Layer.TMS(
                "OpenStreetMap&nbsp;(Tiles@Home)",
                "http://tah.openstreetmap.org/Tiles/tile/",
                {
                    type: 'png', getURL: osm_getTileURL,
                    displayOutsideMaxExtent: true,
                    attribution: '<a href="http://www.openstreetmap.org/">OpenStreetMap</a>'
                }
            ); 

            gmap = new OpenLayers.Layer.Google(
                "Google&nbsp;Street&nbsp;Map",
                {'sphericalMercator': true, numZoomLevels: 22}
            );
            var gsat = new OpenLayers.Layer.Google(
                "Google&nbsp;Satellite",
                {type: G_SATELLITE_MAP, 'sphericalMercator': true, numZoomLevels: 22}
            );
            var ghyb = new OpenLayers.Layer.Google(
                "Google&nbsp;Hybrid&nbsp;Map",
                {type: G_HYBRID_MAP, 'sphericalMercator': true, numZoomLevels: 22}
            );

            var googlep = new OpenLayers.Layer.Google(
                "Google&nbsp;Terrain&nbsp;Map",
                {type: G_PHYSICAL_MAP, 'sphericalMercator': true, numZoomLevels: 22}
            );
 
            var veroad = new OpenLayers.Layer.VirtualEarth(
                "Bing&nbsp;Street&nbsp;Map",
                {'type': VEMapStyle.Road, 'sphericalMercator': true}
            );
            var veaer = new OpenLayers.Layer.VirtualEarth(
                "Virtual&nbsp;Earth&nbsp;Aerial",
                {'type': VEMapStyle.Aerial, 'sphericalMercator': true}
            );
            var vehyb = new OpenLayers.Layer.VirtualEarth(
                "Bing&nbsp;Hybrid&nbsp;Map",
                {'type': VEMapStyle.Hybrid, 'sphericalMercator': true}
            );
            var yahoo = new OpenLayers.Layer.Yahoo(
                "Yahoo&nbsp;Street&nbsp;Map",
                {'sphericalMercator': true}
            );
            var yahoosat = new OpenLayers.Layer.Yahoo(
                "Yahoo&nbsp;Satellite",
                {'type': YAHOO_MAP_SAT, 'sphericalMercator': true}
            );
            var yahoohyb = new OpenLayers.Layer.Yahoo(
                "Yahoo&nbsp;Hybrid&nbsp;Map",
                {'type': YAHOO_MAP_HYB, 'sphericalMercator': true}
            );
            var labelssattile = new OpenLayers.Layer.WMS( "Labels&nbsp;(for&nbsp;reliefmap)", "http://78.46.61.141/cgi-bin/tilecache-2.10/tilecache.py", {layers: "Labels_Sat_merc_z", format: 'image/png'},  {'buffer':1,'numZoomLevels':13,wrapDateLine: true, transparent:true });
             labelssattile.setTileSize(new OpenLayers.Size(512,512)); 
             labelssattile.addOptions({isBaseLayer: false});
             labelssattile.setVisibility(false);
            var topomapper = new OpenLayers.Layer.WMS( "Topographic&nbsp;Maps&nbsp;(Zoom&nbsp;In)", "http://78.46.61.141/cgi-bin/tilecache-2.11/tilecache.py", {layers: "topomapper_gmerc", format: 'image/jpeg'},  {'buffer':1,srs: 'EPSG:900913','numZoomLevels':13,wrapDateLine: true, transparent:false,'attribution': 'Image data hosted by <a href="http://mapshop.atlogis.com/index.php?refID=3">Atlogis</a>' });
             topomapper.setTileSize(new OpenLayers.Size(256,256)); 
            var reliefphysical_v2ht = new OpenLayers.Layer.WMS( "Physical&nbsp;Relief&nbsp;Map", "http://78.46.61.141/cgi-bin/tilecache-2.10/tilecache.py", {layers: "relief_physical_z", format: 'image/jpeg'},  {'buffer':1,srs: 'EPSG:900913','numZoomLevels':12,wrapDateLine: true, transparent:false,'attribution': 'Purchase map data at <a href="http://mapshop.atlogis.com/index.php?refID=3">Atlogis Map Shop</a>' });
             reliefphysical_v2ht.setTileSize(new OpenLayers.Size(512,512)); 





            map.addLayers([topomapper,reliefphysical_v2ht,gmap, ghyb, googlep, veroad, vehyb, yahoo, yahoohyb,mapnik,osmarender,labelssattile]);
            map.addControl(new OpenLayers.Control.Permalink('permalink'));
	     map.addControl(new OpenLayers.Control.Scale());
	     map.addControl(new OpenLayers.Control.ScaleLine ());
            map.addControl(new OpenLayers.Control.MousePosition());
            map.addControl(new OpenLayers.Control.KeyboardDefaults());


            var ls = new OpenLayers.Control.LayerSwitcher();
            map.addControl(ls);
            ls.maximizeControl();
            map.addControl(new OpenLayers.Control.Attribution());
            if (!map.getCenter()) {map.setCenter(OpenLayers.Layer.SphericalMercator.forwardMercator(8,23),1)}
        }


        function osm_getTileURL(bounds) {
            var res = this.map.getResolution();
            var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
            var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
            var z = this.map.getZoom()+1;
            var limit = Math.pow(2, z);

            if (y < 0 || y >= limit) {
                return OpenLayers.Util.getImagesLocation() + "404.png";
            } else {
                x = ((x % limit) + limit) % limit;
                return this.url + z + "/" + x + "/" + y + "." + this.type;
            }
        }


    // gsearch

    var geocoder = new GClientGeocoder();

    function showAddress(address) {

      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " not found");
            } else {
               map.setBaseLayer(gmap);
               map.setCenter(OpenLayers.Layer.SphericalMercator.forwardMercator(point.x,point.y),9);
               var markers = new OpenLayers.Layer.Markers( "Markers" );
               map.addLayer(markers);
               var size = new OpenLayers.Size(10,17);
               var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
               var icon = new OpenLayers.Icon('http://topomapper.com/images/tip-red.png',size,offset);
               markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(point.x,point.y).transform(new OpenLayers.Projection("EPSG:4326"),new OpenLayers.Projection("EPSG:900913")),icon));

            }
          }
        );
      }
    } 



function drawPage() {
    var browserWidth = getInsideWindowWidth();
    var browserHeight = getInsideWindowHeight();
    var content = getRawObject('content');
	var contentBackground = getRawObject('contentBackground');
	var contentText = getRawObject('contentText');
	

	
	//CONTENT
	content.style.top = "60px"; // viewport.style.top;
	content.style.left = "10px"; // parseInt(viewport.style.left) +10  + "px";
	content.style.height = browserHeight; // parseInt(viewport.style.height) -20  + "px";
	content.style.width = browserWidth - 40 + "px"; // parseInt(viewport.style.width) -20  + "px";
	contentBackground.style.height = browserHeight; // parseInt(viewport.style.height) -20  + "px";
	contentText.style.height = browserHeight - 65 + "px"; // parseInt(viewport.style.height) -65  + "px";
	contentText.style.width = browserWidth -70  + "px"; // parseInt(viewport.style.width) -50  + "px";

}

function showContent(url) {
	var content = getRawObject('content');
	//var viewport = getRawObject('viewport');
	content.style.top = "50px"; // parseInt(viewport.style.top) + 10 + "px";
	content.style.display = "block";
	call(url,this, setContent);
}

function setContent(szContent){
	var contentText = getRawObject('contentText');
	contentText.innerHTML = szContent;
}
function hideContent() {
	var content = getRawObject('content');
	var viewport = getRawObject('viewport');
	content.style.display = "none";
	//content.style.top = parseInt(viewport.style.top) + parseInt(viewport.style.height) + "px";
}





