/*
Copyright 2005 skyvector.com. All Rights reserved.
You may not use this script for any purpose without permission.
*/
//  <![CDATA[
var chart;
var slider;
var tile=new Array();
var tilesrc=new Array();
var vwidth;
var vheight;
var setid=1;
var protoid=1;
var scale=1;
var tilesize=256;
var tiledir='http://skyvector.com/tiles';
var scrolltimeout;
var scalors=new Array(.5,1,1.5,2,3,4,6,8,12,16,24,36,48,72,96);

var sizes=new Array();

sizes[1]=[11923,8179];
sizes[2]=[11890,8145];
sizes[3]=[11877,8123];
sizes[4]=[11878,8137];
sizes[5]=[11929,8200];
sizes[6]=[11879,8147];
sizes[7]=[11846,8137];
sizes[8]=[10970,8157];
sizes[9]=[11865,8164];
sizes[10]=[11841,8162];
sizes[11]=[11912,8174];
sizes[12]=[11886,8160];
sizes[13]=[11917,8170];
sizes[14]=[11902,8135];
sizes[15]=[11847,8128];
sizes[16]=[11058,8145];
sizes[17]=[11849,8177];
sizes[18]=[11008,8159];
sizes[19]=[11076,8155];
sizes[20]=[11002,8178];
sizes[21]=[11892,8174];
sizes[22]=[11950,8161];
sizes[23]=[11044,8159];
sizes[24]=[11108,8172];
sizes[25]=[11890,8132];
sizes[26]=[11897,8130];
sizes[27]=[11860,8113];
sizes[28]=[11891,8109];
sizes[29]=[11896,8141];
sizes[30]=[11193,8171];
sizes[31]=[10950,8068];
sizes[32]=[11049,8147];
sizes[33]=[10981,8104];
sizes[34]=[11114,8179];
sizes[35]=[11000,8207];
sizes[36]=[11427,8161];
sizes[37]=[11442,8091];
sizes[38]=[6810,5684];
sizes[39]=[11087,8160];
sizes[40]=[10919,8121];
sizes[41]=[11024,8175];
sizes[42]=[10950,4129];
sizes[43]=[11039,8172];
sizes[44]=[11037,8036];
sizes[45]=[11020,8179];
sizes[46]=[10950,8111];
sizes[47]=[10967,8085];
sizes[48]=[10957,8127];
sizes[49]=[10934,8133];
sizes[50]=[10984,8193];
sizes[51]=[11051,8145];
sizes[52]=[11892,4137];
sizes[53]=[10970,4105];
sizes[54]=[10799,4116];
sizes[55]=[11017,8104];
sizes[100]=[7978,3985];
sizes[101]=[6018,5031];
sizes[102]=[7984,5779];
sizes[103]=[6965,5894];
sizes[104]=[6001,4999];
sizes[105]=[4980,4018];
sizes[106]=[5982,5803];
sizes[107]=[4985,4040];
sizes[108]=[7867,5802];
sizes[109]=[6014,5072];
sizes[110]=[5954,4066];
sizes[111]=[6069,5372];
sizes[112]=[5984,4922];
sizes[113]=[7005,4041];
sizes[114]=[10975,4015];
sizes[115]=[6001,4950];
sizes[116]=[6980,5983];
sizes[117]=[4975,4007];
sizes[118]=[5978,3983];
sizes[119]=[7963,4013];
sizes[120]=[5006,4787];
sizes[121]=[5979,5003];
sizes[122]=[4984,3980];
sizes[123]=[11834,4099];
sizes[124]=[4981,3994];
sizes[125]=[6987,4986];
sizes[126]=[7947,4068];
sizes[127]=[6932,4407];
sizes[128]=[4994,5033];
sizes[129]=[5984,5165];
sizes[130]=[7495,3975];
sizes[131]=[7826,5172];
sizes[200]=[9088,6208];
sizes[201]=[7999,6087];
sizes[202]=[7424,6128];
sizes[203]=[9053,4070];
sizes[204]=[8030,4015];
sizes[205]=[7040,5904];
sizes[206]=[5082,2970];
sizes[207]=[7040,6144];
sizes[208]=[9056,6160];
sizes[230]=[9022,4028];


var htiles;
var vtiles;
var hmax;
var vmax;

var posx;
var posy;
var scrollx=0;
var scrolly=0;

function pan(x,y,force){
   posx=Math.floor(x);
   posy=Math.floor(y);
   newscrollx=Math.floor(vwidth/2)-posx;
   newscrolly=Math.floor(vheight/2)-posy;
   if(force || newscrollx != scrollx || newscrolly != scrolly){
      //msg.innerHTML=("scrolled to ("+posx+","+posy+") which is at ("+newscrollx+","+newscrolly+")");
      //msg.innerHTML=(protoid+","+scale+","+posx+","+posy+", scrolltop="+chart.scrollTop );
      scrollx=newscrollx;
      scrolly=newscrolly;
      slider.style.top=scrolly+"px";
      slider.style.left=scrollx+"px";
      var tx=scrollx>0 ? 0 : Math.floor(-1*scrollx/tilesize); //first tile to load
      var ty=scrolly>0 ? 0 : Math.floor(-1*scrolly/tilesize); //first tile to load
      for(var i=ty ; i < ty+vtiles; i++){
         for(var j=tx ; j < tx+htiles; j++){
            var ix=j % htiles; //image x array element
            var iy=i % vtiles; //image y array element
            var itop=i*tilesize; //image top
            var ileft=j*tilesize; //image left
            var filename="";
            if (i >=0 && i < vmax && j >=0 && j < hmax ){
               filename=tiledir + "/tile_" + setid + "_" + protoid + "_" + scale + "_" + j + "_" + i + ".jpg";
            }else{
               filename=tiledir + "/clear.gif";
            }
            if (tilesrc[iy][ix] != filename){
               tile[iy][ix].src = filename;
               tilesrc[iy][ix] = filename;
               if (tile[iy][ix].style.top == itop+"px" && tile[iy][ix].style.left == ileft+"px"){
               }else{
                  tile[iy][ix].style.top=itop+"px";
                  tile[iy][ix].style.left=ileft+"px";
               }
            }
         }
      }
   }
}


function initMap(p_chart,p_set,p_protoid,p_scale,p_x,p_y){
   if(p_chart){
      chart=document.getElementById(p_chart);
      if (!chart){return false};
      chart.style.position='relative';
      chart.style.border='1px solid #808080';
      chart.style.backgroundColor='#D5E6E6';
      chart.style.overflow='hidden';
   }else{
      if (!chart){return false};
   }
   if(p_set){
      setid=p_set;
   }
   if(p_scale){
      scale=p_scale;
   }
   if(p_protoid){
      protoid=p_protoid;
   }
   if(p_x){
      posx=p_x;
   }
   if(p_y){
      posy=p_y;
   }
   mapwidth=sizes[protoid][0];
   mapheight=sizes[protoid][1];
   if(!posx){
      posx=Math.floor((mapwidth/2)/scalors[scale]);
   }
   if(!posy){
      posy=Math.floor((mapheight/2)/scalors[scale]);
   }

   vwidth=chart.clientWidth;
   vheight=chart.clientHeight;
   if (!vwidth) vwidth=chart.style.pixelWidth;
   if (!vheight) vheight=chart.style.pixelHeight;
   htiles=Math.ceil(vwidth/tilesize)+1;
   vtiles=Math.ceil(vheight/tilesize)+1;
   if(htiles<2) htiles=2;
   if(vtiles<2) vtiles=2;
   hmax=Math.ceil((mapwidth/scalors[scale])/tilesize);
   vmax=Math.ceil((mapheight/scalors[scale])/tilesize);
   if (target){
      target=" target=\""+target+"\" ";
   }
   var html="<div style=\"position: absolute; z-index: 1; right: 0px; bottom: 0px;\"><img width=\"82\" height=\"13\" border=\"0\" src=\"http://skyvector.com/images/logotiny.png\" /></div>";
   html += "<div id=\"slider\" style=\"position: absolute; z-index: 0; width: 20px; height: 20px; top: 0px; left: 0px;\">";
   html += "<a id=\""+p_chart+"_a\" href=\"http://skyvector.com/#" + hash + "\" " + target + ">";
   for (var i=0; i < vtiles; i++){
      for (var j=0; j < htiles; j++){
         html += "<img style=\"position: absolute; z-index: 0; top: "+i*tilesize+"px; left: "+j*tilesize+"px;\" id=\"img_"+j+"_"+i+"\" border=\"0\" width=\"" + tilesize + "\" height=\"" + tilesize + "\" src=\""+tiledir + "/clear.gif\" />";
      }
   }
   html += "</a></div>";
   chart.innerHTML=html;
   slider=document.getElementById("slider");   
   for (var i=0; i < vtiles; i++){
      tile[i]=new Array();
      tilesrc[i]=new Array();
      for (var j=0; j < htiles; j++){
         tile[i][j]=document.getElementById("img_"+j+"_"+i);
         tilesrc[i][j]='x';
         if(tile[i][j]){
         }else{ alert("tile img element ("+j+","+i+")not found")}
      }
   } 
   pan(posx,posy,1);
}
// ]]>
