
var map;
var kibanwms;
var tokyo5000wms;
var mnwms;
var anwms;

var resource = {
  'tokyo5000' : function() {
	  return Rococo.lang == 'en' ?
		'Tokyo 1/5000' :
		'東京 5千分の1';
	},
  'kiban' : function() {
      return Rococo.lang == 'en' ?
        'Fundamental Geospatial Data' :
        '基盤地図情報';
    },
  'pmname' : function() {
      return Rococo.lang == 'en' ?
        'Prefecture/Municipality Name' :
        '都道府県・市区町村名';
    },
  'aname' : function() {
      return Rococo.lang == 'en' ?
        'Section Name' :
        '字・町丁目名';
    },
  't_tokyo5000' : function() {
	  return Rococo.lang == 'en' ?
		'Tokyo 5000 transparency' :
		'東京 5千分1 透明度';
	},
  't_kiban' : function() {
      return Rococo.lang == 'en' ?
        'Fundamental Geospatial Data transparency' :
        '基盤地図 透明度';
    },
  'full_transparent': function() {
      return Rococo.lang == 'en' ?
        'Invisible' :
        '透明';
    },
  'full_opaque': function() {
      return Rococo.lang == 'en' ?
        'Opaque' :
        '不透明';
    },


  'habs' : function() {
      return Rococo.lang == 'en' ?
        'Historical Agro-Environment Browsing System' :
        '歴史的農業環境閲覧システム';
    },
  'hawms' : function() {
      return Rococo.lang == 'en' ?
        'Historical Agro-Environment Web Map Service' :
        '歴史的農業環境WMS配信サービス';
    },
  'kibanwms' : function() {
      return Rococo.lang == 'en' ?
        'Fundamental Geospatial Data (Approval: GYOU-SHI 449 2008)' :
        '基盤地図情報(平20業使、第449号)';
    }
};

function init() {
	init_3100();
}

function init_4326() {
  var options = {
	  projection: "EPSG:4326",
	  maxExtent: new OpenLayers.Bounds(-180,-90,180,90),
	  maxResolution: 0.00034332275390625,
	  center: new OpenLayers.LonLat(139.76,35.69),
	  zoom: 4
	};
  init_core(options);
}

function init_3100() {
  var options = {
	  projection: "EPSG:3100",
	  maxExtent: new OpenLayers.Bounds(383693, 3945860, 391286, 3953430),
	  maxResolution: 25,
	  center: new OpenLayers.LonLat(388000,3949000),
	  zoom: 4
	};
  init_core(options);
}

function init_core(opts) {
  var options = {
	  projection: opts.projection,
	  maxExtent: opts.maxExtent,
	  controls: [
		  new OpenLayers.Control.PanZoomBar(),
		  new OpenLayers.Control.LayerSwitcher(),
//		  new OpenLayers.Control.MousePosition(),
		  new OpenLayers.Control.Navigation(),
		  new OpenLayers.Control.Permalink(),
		  new OpenLayers.Control.Attribution({displayClass: 'prmtcd'})
		],
//	  maxResolution: 0.010986328125,
	  maxResolution: opts.maxResolution,
	  // ------------------------------------------------ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
	  numZoomLevels: 8
	};
  map = new OpenLayers.Map('map',options);
  map.div.style.backgroundColor = 'rgb(255,255,255)';

  tokyo5000wms = new OpenLayers.Layer.WMS(
	  resource.tokyo5000(),
	  "http://www.finds.jp/ws/hawms.cgi?",
	  {
	    layers: 'Tokyo5000_utm54',
	    format: 'image/png'
	  },
	  {
	    attribution: '<a target="_blank" class="iic-out" href="http://habs.dc.affrc.go.jp/">'+resource.habs()+'</a>',
	    isBaseLayer: true
	  }
	);

  kibanwms = new OpenLayers.Layer.WMS.Untiled(
	  resource.kiban(),
	  "http://www.finds.jp/ws/kiban25000wms.cgi?",
	  {
	    layers: "JpSmplBdr,PrefSmplBdr,AdmAreaBdr,Cntr10,Cntr100,Cntr100w,RailCL,BldA,WL,RdEdg",
	    styles: "medium,medium,thick,medium,thick,medium,medium,thin,medium,medium",
	    format: "image/png",
	    transparent: true
	  },
	  {
	    ratio: 1,
	    attribution: '<a target="_blank" href="http://www.finds.jp/wsdocs/kibanwms/index.html">'+resource.kibanwms()+'</a>',
	    isBaseLayer: false
	  }
	);

//  kibanwms = new OpenLayers.Layer.WMS(
//	  resource.kiban(),
//	  "http://www.finds.jp/ws/kiban25000gwc.cgi?",
//	  {
//	    layers: "kiban25000:AllB",
//	    format: "image/png",
//	    transparent: true
//	  },
//	  {
//	    attribution: '<a target="_blank" href="http://www.finds.jp/wsdocs/kibanwms/index.html">'+resource.kibanwms()+'</a>',
//	    isBaseLayer: false
//	  }
//	);

  mnwms = new OpenLayers.Layer.WMS.Untiled(
	  resource.pmname(),
	  "http://www.finds.jp/ws/pnwms.cgi?",
	  {
	    layers: "PrefName,MncplName",
	    styles: "largeborder,mediumborder",
	    format: "image/png"
	  },
	  {
	    ratio: 1,
	    isBaseLayer: false
	  }
	);

  anwms = new OpenLayers.Layer.WMS.Untiled(
	  resource.aname(),
	  "http://www.finds.jp/ws/pnwms.cgi?",
	  {
	    layers: "AzaName",
	    styles: "smallborder",
	    format: "image/png"
	  },
	  {
	    ratio: 1,
	    isBaseLayer: false
	  }
	);

  map.addLayers([tokyo5000wms,kibanwms,mnwms,anwms]);

  if( !map.getCenter() ) {
    map.setCenter(opts.center,opts.zoom);
  }

  var opacitywrap = document.getElementById('opacitywrap');
  var opacityform = document.createElement('form');
  opacityform.action='javascript:void(0)';

  var tokyo5000opacitypara = document.createElement('p');
  tokyo5000opacitypara.appendChild(document.createTextNode(resource.t_tokyo5000()+' '));
  var tokyo5000opacityselect = document.createElement('select');
  tokyo5000opacitypara.appendChild(tokyo5000opacityselect);
  opacityform.appendChild(tokyo5000opacitypara);

  var kibanopacitypara = document.createElement('p');
  kibanopacitypara.appendChild(document.createTextNode(resource.t_kiban()+' '));
  var kibanopacityselect = document.createElement('select');
  kibanopacitypara.appendChild(kibanopacityselect);
  opacityform.appendChild(kibanopacitypara);

  opacitywrap.appendChild(opacityform);

  var opacitylist = [
	  {text:resource.full_transparent(),value:0},
	  {text:'25%',value:25},
	  {text:'50%',value:50},
	  {text:'75%',value:75},
	  {text:resource.full_opaque(),value:100}
	];

  Rococo.tk.em.recreateElement(tokyo5000opacityselect,null,'tokyo5000opacity',
	{
      name: 'tokyo5000opacity',
	  list: opacitylist,
	  value: 100
	});
  tokyo5000opacityselect.addEventHandler('change',setTokyo5000Opacity);

  Rococo.tk.em.recreateElement(kibanopacityselect,null,'kibanopacity',
	{
      name: 'kibanopacity',
	  list: opacitylist,
	  value: 100
	});
  kibanopacityselect.addEventHandler('change',setKibanOpacity);
  setTokyo5000Opacity();
  setKibanOpacity();
}

function setTokyo5000Opacity() {
  var e = document.getElementById('tokyo5000opacity');
  var v = e.getValue();
  if( v >= 0 && v <= 100 ) {
    tokyo5000wms.setOpacity(v/100);
  }
}

function setKibanOpacity() {
  var e = document.getElementById('kibanopacity');
  var v = e.getValue();
  if( v >= 0 && v <= 100 ) {
    kibanwms.setOpacity(v/100);
    kibanwms.setVisibility(v>0);
  }
}

Rococo.init.push(init);
