﻿//
// 地物データ読み込み
// 地図フレーム
// 縮尺の操作
// 地図の移動
// リンクボタン
// javascript関数を実行するボタン
//
var mapfrm;
var scobj;
var ciobj;
var urlidxobj;
var urllinkobj;
var lslist0= new Array();

// 2007/10/26 update start --------------------------------
var wmsobj;
var wmmaker;
// 2007/10/26 update end --------------------------------

var basedir= "../mapbasics/";
var idximgsrc= basedir+"img/link_ic_weather.gif";
var msrimgsrc= basedir+"img/measure.png";
var simgxsrc=  basedir+"img/center_x.png";
var simgysrc=  basedir+"img/center_y.png";
var simg1src=  basedir+"img/a1.gif";
var simg2src=  basedir+"img/a2.gif";
var simg3src=  basedir+"img/a3.gif";
var simg4src=  basedir+"img/a4.gif";

////
var datadir= "data/";

var ilist= new Array();
var iconf= new Array();
var ihddn= new Array();

function dataread(datafile){
  var a= Array();
  a= fread(datafile).split("\n");

  var s= Array();
  var b= Array();
  var len= a.length;
  for(var i=0;i<len;i++){
    s= a[i].split("#",1);
    b= s[0].split(",",2);
    if(b[0]){
      var name= b[0];
      ilist[i]= name;
      iconf[name]= datadir+name+"_conf.txt";
      ihddn[name]= b[1];
    }
  }
}

////
function overwrite(input,deflt){
  var a0= deflt.replace("?","").split("&");
  var a1= input.replace("?","").split("&");

  var a= new Array();
  var x= new Array();
  for(k in a0){
    a= a0[k].split("=");
    x[a[0]]= a[1];
  }

  for(k in a1){
    a= a1[k].split("=");
// 2007.11.06 update start ------------------------------
//    x[a[0]]= a[1];
    if(a[1]){
      x[a[0]]= a[1];
    }
// 2007.11.06 update end ------------------------------
  }

  var str= "?";
  for(k in x){
    if(k){
      str+= "&";
      str+= k+"="+x[k];
    }
  }

  return str.replace("?&","");
}

function lsearch(name){
  return(lslist0[name]);
}

function parsels(str){
  var a= str.replace("?","").split("&");
  for(var i in a){
    var b= a[i].split("=");
    lslist0[b[0]]= b[1];
  }
}

function mapframe(x0,y0,w0,h0,option){
  parsels(option);
  lslist0["framex"]= w0;
  lslist0["framey"]= h0;

  var datafile= lslist0["datafile"];
  if(datafile){
    dataread(datadir + datafile);
  }

  scobj= new scaleobj();
  setscale(lslist0["scale"]);

  var span0 = '<span style="position:absolute;'
    + ' top:' +y0.toString()+'px;'
    + ' left:'+x0.toString()+'px;'
    + '">';
  var span1= "</span>";

  var frmname= "map0";
// 2007.10.24 update start --------------------------------
//  var iframe0= "<iframe name=\""+frmname+"\" src=\""+basedir+"html/map.html\" width="+w0.toString()+" height="+h0.toString()+" scrolling=no frameborder=2>";
  var iframe0= "<iframe name=\""+frmname+"\" src=\""+basedir+"html/map.php?sel_day="+gs_day+"&sel_time="+gs_time+"\" width="+w0.toString()+" height="+h0.toString()+" scrolling=no frameborder=2>";
// 2007.10.24 update end --------------------------------
  var iframe1= "</iframe>";

  document.write(span0+iframe0+iframe1+span1);
  mapfrm= this.frames[frmname];

  ciobj= cimgobj(x0,y0,w0,h0);
  if(lslist0["centerimg"] == "off"){
    changecimg("hidden");
  }
}

////
function cimgobj(x0,y0,w0,h0){
  var img="";
  var x1,y1;

  var span0= "<span id=\"cimg\" style=\"visibility:visible;\">";
  var span1= "</span>";

  x1= x0+(w0+1)/2-15; y1= y0+(h0+1)/2;
  img+= "<img src=\""+simgxsrc+"\" style=\"position:absolute; top:"+y1+"px; left:"+x1+"px;\">";
  x1= x0+(w0+1)/2; y1= y0+(h0+1)/2-15;
  img+= "<img src=\""+simgysrc+"\" style=\"position:absolute; top:"+y1+"px; left:"+x1+"px;\">";

  var str= span0+img+span1;
  document.write(str);

  return document.getElementById("cimg");
}

function changecimg(){
  var v= (ciobj.style.visibility == "hidden") ? "visible" : "hidden";

  if(arguments[0] == "visible" || arguments[0] == "hidden"){
    var v= arguments[0];
  }

  ciobj.style.visibility= v;

  var str= "中心";
  str+= (ciobj.style.visibility == "hidden") ? "/有" : "/無";
  if(ciobj.buttonvalue){
    setinnertext(ciobj.buttonvalue,str);
  }
}

function cimgbutton(x0,y0,w0,h0){
  var span0= "<span id=\"cibttn\" style=\"position:absolute; top:"+y0.toString()+"px; left:"+x0.toString()+"px;\">";
  var span1= "</span>";

  var click= "onclick='changecimg();\'";
  var a0= "<button id=\"cibttnb\" style=\"width:"+w0+"px; height:"+h0+"px;\" "+click+">中心";
  var a1= "</button>";

  document.write(span0+a0+a1+span1);

  ciobj.buttonvalue= document.getElementById("cibttnb");

  var str= "中心";
  str+= (ciobj.style.visibility == "hidden") ? "/有" : "/無";
  setinnertext(ciobj.buttonvalue,str);
}

////
function movetask(){
  if(urlidxobj){
    urlidxobj.style.color= "#f8f070";
  }

  if(urllinkobj){
    urllinkobj.style.color= "#f8f070";
  }

  if(parent.mapinput_scale){
    parent.mapinput_scale.value= "";
    parent.mapinput_lat.value= "";
    parent.mapinput_lng.value= "";
  }
}

function settletask(lat,lng,scale){  
  if(urlidxobj){
    var url= urlstr();

    urlidxobj.removeChild( urlidxobj.lastChild );
    urlidxobj.appendChild( textobj(urlidxobj,url) );

    urlidxobj.href= url;
    urlidxobj.style.color= "#0000FF";
  }

  if(urllinkobj){
    var url= urlstr();

//    urlidxobj.removeChild( urlidxobj.lastChild );
//    urlidxobj.appendChild( textobj(urlidxobj,url) );

    urllinkobj.href= url;
    urllinkobj.style.color= "#0000FF";
  }

  if(parent.mapinput_scale){
    parent.mapinput_scale.value= scobj.scale;
    parent.mapinput_lat.value= lat;
    parent.mapinput_lng.value= lng;
  }
}

function textobj(obj,str){
  var tobj;

  if(document.all){
    tobj= obj.document.createElement('div');
    tobj.innerHTML= str;
  }else{
    tobj= document.createTextNode(str)
  }

  return tobj;
}

////
function urlindex(x0,y0,w0,h0){
  var span0= "<span width="+w0.toString()+" height="+h0.toString()+" style=\"position:absolute; top:"+y0.toString()+"px; left:"+x0.toString()+"px; background-color: #ffffff\" action=\"\">";
  var span1= "</span>";

  var a0= "<a id=\"urlindex\" href=\"\">#";
  var a1= "</a>";

  document.write(span0+a0+a1+span1);

  urlidxobj= document.getElementById("urlindex");
}

function urllink(x0,y0,w0,h0,str){
  var span0= "<span width="+w0.toString()+" height="+h0.toString()+" style=\"position:absolute; top:"+y0.toString()+"px; left:"+x0.toString()+"px; background-color: #ffffff\" action=\"\">";
  var span1= "</span>";

  var a0= "<a id=\"urllink\" href=\"\">"+str;
  var a1= "</a>";

  document.write(span0+a0+a1+span1);

  urllinkobj= document.getElementById("urllink");
}

////
function scaleobj(){
  this.scale= null;
  this.ll= -2;
  this.ul=  8;

  this.amp=  1;
  this.sll= -2;
  this.sul=  8;

  this.index= null;
  this.isrc= idximgsrc;
  this.iintval= null;
  this.ileft= null;
  this.itop=  null;

  this.measure= null;
  this.msrc= msrimgsrc;
  this.mll= -2;
  this.mul=  8;
  this.mwidth= 132;
  this.mintval= 23;
  this.mleft= null;
  this.mtop=  null;

  this.zoom=  null;
  this.zleft= null;
  this.ztop=  null;
}

function setscale(){
  if(arguments.length >= 1){
    var s= arguments[0];
    scobj.scale= s-0;
  }

  if(scobj.index){
    var y1= scobj.itop + scobj.iintval*(scobj.scale-scobj.ll);
    scobj.index.style.left= scobj.ileft+"px";
    scobj.index.style.top=  y1+"px";
  }

  if(scobj.measure){
    var ca= scobj.mintval*(scobj.scale-scobj.mll);
    var cb= ca+scobj.mintval;
    var x1= scobj.mleft;
    var y1= scobj.mtop-ca;
    var clip= "rect("+ca.toString()+" "+scobj.mwidth+" "+cb.toString()+" 0)";
    scobj.measure.style.left = x1+"px";
    scobj.measure.style.top  = y1+"px";
    scobj.measure.style.clip = clip;
  }
}

function scaleindex(){
  var img= "<img id=\"scaleindex\" src=\""+scobj.isrc+"\" style=\"position:absolute;\">";

  document.write(img);

  return document.getElementById("scaleindex");
}

// x0,y0,w0,h0,ll,ul
function scalebutton(){
  var x0= arguments[0];
  var y0= arguments[1];
  var w0= arguments[2];
  var h0= arguments[3];

  if(arguments.length >= 6){
    var ll= arguments[4];
    var ul= arguments[5];
    scobj.ll= ll;
    scobj.ul= ul;
  }else{
    var ll= scobj.ll;
    var ul= scobj.ul;
  }

  var value= new Array();
  value[ll]= "拡大";
  value[ul]= "縮小";
  for(var i=ll+1;i<=ul-1;i++){
    value[i]= "｜｜";
  }

  for(var i=ll;i<=ul;i++){
    var x1= x0;
    var y1= y0+(i-ll)*h0;

    var span0= "<span style=\"position:absolute; top:"+y1.toString()+"px; left:"+x1.toString()+"px;\">";
    var span1= "</span>";

    var click= " onclick='mapfrm.changescale("+i.toString()+");\'";

    var button0= "<button style=\"width:"+w0+"px; height:"+h0+"px; padding: 1px;\""+click+">";
    var button1= "</button>";

    document.write(span0+button0+value[i]+button1+span1);
  }

  scobj.index= scaleindex();
  scobj.iintval= h0;
  scobj.ileft=   x0-14;
  scobj.itop=    y0;

  setscale();
}

function zoomin(){
  if(arguments.length == 2){
    var x= arguments[0];
    var y= arguments[1];
  }else{
    var x= 0;
    var y= 0;
  }

  var s= scobj.scale-1;
  if( s >= scobj.ll ){
    mapfrm.changescale(s.toString());
    mapfrm.settle(-2*x,-2*y);
  }else{
    mapfrm.settle1(-x,-y);
  }
}

function zoomout(){
  if(arguments.length == 2){
    var x= arguments[0];
    var y= arguments[1];
  }else{
    var x= 0;
    var y= 0;
  }

  var s= scobj.scale+1;
  if( s <= scobj.ul ){
    mapfrm.changescale(s.toString());
    mapfrm.settle(-x/2,-y/2);
  }else{
    mapfrm.settle1(-x,-y);
  }
}

function zoombutton(x0,y0,w0,h0){
  var span0= "<span id=\"zmbttn\" style=\"position:absolute; top:"+y0.toString()+"px; left:"+x0.toString()+"px;\">";
  var span1= "</span>";

  var click= "onclick='zoomin();\'";
  var a0= "<button style=\"width:"+w0+"px; height:"+h0+"px;\" "+click+">＋";
  var a1= "</button>";

  var click= "onclick='zoomout();\'";
  var b0= "<button style=\"width:"+w0+"px; height:"+h0+"px;\" "+click+">－";
  var b1= "</button>";

  document.write(span0+a0+a1+b0+b1+span1);

  setscale();
}

function scalemeasure(x0,y0){
  s= scobj.scale;

  var img= "<img id=\"measure\" src=\""+scobj.msrc+"\" style=\"position:absolute; overflow: hidden;\">";
  document.write(img);

  scobj.measure= document.getElementById("measure");
  scobj.mleft= x0;
  scobj.mtop=  y0-scobj.mintval;

  setscale();
}

////
function movebutton(x0,y0,lat,lng){
  var value= new Array("上","┐","右","┘","下","└","左","┌","×");
  var x= new Array(0,1,1,1,0,-1,-1,-1,0);
  var y= new Array(1,1,0,-1,-1,-1,0,1,0);

  var b= 23;

  for(var i=0;i<9;i++){
    var x1= x0+b +x[i]*b;
    var y1= y0+b -y[i]*b;

    var span0= "<span style=\"position:absolute; top:"+y1.toString()+"px; left:"+x1.toString()+"px;\">";
    var span1= "</span>";

    if(i==8){
      var lat= lslist0["lat"];
      var lng= lslist0["lng"];
      var click= "onclick=\"javascript: mapfrm.drift("+lat+","+lng+");\"";
    }else{
      var click= "onclick=\'mapfrm.shift("+x[i].toString()+","+y[i].toString()+");\'";
    }

    var button0= "<button id=\"mb"+i+"\" style=\"width:"+b+"px; height:"+b+"px;\" "+click+">";
    var button1= "</button>";

    document.write(span0+button0+value[i]+button1+span1);
  }
}

// 2007.10.29 update start ----------------------------------------------------------
function movebuttonimg(x0,y0,w0,h0){
  var value= new Array("上","┐","右","┘","下","└","左","┌","×");
  var x= new Array(0,1,1,1,0,-1,-1,-1,0);
  var y= new Array(1,1,0,-1,-1,-1,0,1,0);
  var img_src= new Array("arrow4.gif","arrow6.gif","arrow7.gif","arrow8.gif","arrow5.gif","arrow3.gif","arrow2.gif","arrow1.gif");
  var img_width = new Array(34,22,7,22,34,22,7,22);
  var img_height = new Array(7,22,34,22,7,22,34,22);
  var img_x = new Array(x0+w0/2-34/2,x0+w0-22,x0+w0-7,x0+w0-22,x0+w0/2-34/2,x0,x0,x0);
  var img_y = new Array(y0,y0,y0+h0/2-34/2,y0+h0-22,y0+h0-7,y0+h0-22,y0+h0/2-34/2,y0);

  var b= 23;

  for(var i=0;i<8;i++){
    var x1= x0+b +x[i]*b;
    var y1= y0+b -y[i]*b;

    var span0= "<span style=\"position:absolute; top:"+img_y[i].toString()+"px; left:"+img_x[i].toString()+"px;\">";
    var span1= "</span>";

    if(i==8){
      var lat= lslist0["lat"];
      var lng= lslist0["lng"];
      var click= "onclick=\"javascript: mapfrm.drift("+lat+","+lng+");\"";
    }else{
      var click= "onclick=\'mapfrm.shift("+x[i].toString()+","+y[i].toString()+");\'";
    }

    var button0= "<input type=\"image\" src=\"../mapbasics/img/"+img_src[i]+"\" style=\"width:"+img_width[i]+"px; height:"+img_height[i]+"px;\" "+click+">";
    var button1= "</button>";

//    document.write(span0+button0+value[i]+button1+span1);
    document.write(span0+button0+button1+span1);
  }
}
// 2007.10.29 update end ----------------------------------------------------------

function driftbutton(x0,y0,w0,h0,text,lat,lng){
  var s= "style=\"";
  s+= "position:absolute; top:"+y0.toString()+"px; left:"+x0.toString()+"px;";
  s+= "background-color: #009900; border: 1px solid #ffffff; color: #ffffff;";
  s+= "width:"+w0.toString()+"px; height:"+h0.toString()+"px;";
  s+= "font-size: 8pt; text-align: center; padding: 1px; margin: 1px;";
  s+= "cursor:pointer;";
  s+= "\"";

  var clk= "onclick= \"javascript: mapfrm.drift("+lat+","+lng+");\""

  var b= "<button "+clk+" "+s+">"+text+"</button>";

  document.write(b);
}

////
function linkimage(x0,y0,imgsrc,link,target){
  var img= "<img src=\""+imgsrc+"\" border=0 style=\"position:absolute; top:"+y0.toString()+"px; left:"+x0.toString()+"px;\">";

  if(link){
    var a0= "<a href=\""+link+"\" target="+target+">";
    var a1= "</a>";
  }else{
    var a0= "";
    var a1= "";
  }

  document.write(a0+img+a1);
}

function actionbutton(x0,y0,w0,h0,text,action){
  var s= "style=\"";
  s+= "position:absolute; top:"+y0.toString()+"px; left:"+x0.toString()+"px;";
//  s+= "background-color: #009900; border: 1px solid #ffffff; color: #ffffff;";
  s+= "color: #000420;";
  s+= "width:"+w0.toString()+"px; height:"+h0.toString()+"px;";
  s+= "font-size: 9pt; text-align: center;";
  s+= "cursor:pointer;";
  s+= "\"";

  var clk= "onclick= \""+action+"\""
  
  var b= "<button "+clk+" "+s+">"+text+"</button>";

  document.write(b);
}

function gohome(x0,y0,w0,h0,lat,lng,str){
  var span0= "<span>";
  var span1= "</span>";

  var click= "onclick=\"javascript: mapfrm.drift("+lat+","+lng+");\"";

  var button0=  "<button style=\"position:absolute; ";
      button0+= "top:"+y0.toString()+"px; left:"+x0.toString()+"px;  padding: 1px; ";
      button0+= "width:"+w0.toString()+"px; height:"+h0.toString()+"px;\" "+click+">";
  var button1= "</button>";

  if( str ){
    var value= str;
  }else{
    var value= "原点に戻る";
  }

  document.write(span0+button0+value+button1+span1);
}

//
function getwindowwidth(){
  if(document.all){
    var iwidth= document.body.clientWidth;
  }else{
    var iwidth= window.innerWidth;
  }

  return iwidth;
}

function getwindowheight(){
  if(document.all){
    var iheight= document.body.clientHeight;
  }else{
    var iheight= window.innerHeight;
  }

  return iheight;
}

function urlstr(){
  var a= location.href.split("?");

  if(mapfrm.mapst.coordsys == "rectangular"){
    var str= a[0]+"?x="+Math.floor(mapfrm.mapx)+"&y="+Math.floor(mapfrm.mapy)+"&scale="+mapfrm.mapst.scale;
  }else{
    var str= a[0]+"?lat="+mapfrm.lat+"&lng="+mapfrm.lng+"&scale="+mapfrm.mapst.scale;
  }

  return str;
}

function resize(){
  location= urlstr();
}

// 2007.10.26 update start ------------------------------------------------------
function widemapset(){
/*
	wmsobj= ifwidemap.document.getElementById("mapspan_s");
	wmmaker= ifwidemap.document.createElement("img");
	wmmaker.src= "img/mark.gif";

	wmmaker.style.border=      0;
	wmmaker.style.position=   "absolute";
	wmmaker.style.visibility= "visible";
	wmmaker.galleryimg=       "false";

	wmmaker.width=  14;
	wmmaker.height= 21;

	wmmaker.style.left=  "100px";
	wmmaker.style.bottom= "100px";

	wmsobj.appendChild(wmmaker);
*/
}


function setwidemap(lat,lng,scale){  
//alert("lat="+lat+" lng="+lng);
	// 座標設定
	document.sel_form.lat.value = lat;
	document.sel_form.lng.value = lng;
	document.sel_form.scale.value = scale;

	document.form_scale7.lat.value = lat;
	document.form_scale7.lng.value = lng;
	document.form_scale6.lat.value = lat;
	document.form_scale6.lng.value = lng;
	document.form_scale3.lat.value = lat;
	document.form_scale3.lng.value = lng;

	// 原点（左下）
	var xorigin = 129.625;
	var yorigin = 32.9;
	
	// 1pxの大きさ
	var x_1px = 0.00525;
	var y_1px = 0.00455;
	
	// アイコン画像幅
	var mwidth = 20;

	var xbuf = lng - xorigin;
	xbuf = xbuf / x_1px;
	xbuf = Math.round(xbuf);
//	xbuf = xbuf - mwidth/2;
	xbuf = xbuf - mwidth;
	
	var ybuf = lat - yorigin;
	ybuf = ybuf / y_1px;
	ybuf = Math.round(ybuf);
//	ybuf = ybuf - mwidth/2;
	ybuf = ybuf - mwidth;

//alert("ybuf="+ybuf+" xbuf="+xbuf);
	wmmaker= ifwidemap.document.getElementById("makerspan_s");
	wmmaker.style.left=  xbuf+"px";
	wmmaker.style.bottom= ybuf+"px";
}
// 2007.10.26 update end ------------------------------------------------------

