//==========================
//
// Map Generator
//
//==========================
// Created by: Martin Andres
// Date: Feb 22, 2005
//
//  x,y
// +---+---+---+
// |1,1|2,1|3,1|4,1
// +---+---+---+
// |1,2|2,2|3,2|4,2
// +---+---+---+
// |1,3|2,3|3,3|4,3
// +---+---+---+
//  1,4 2,4 3,4
//
// Arrows Images:
//  arrow_{x}-{y}.gif
//
// Nav Images:
//  nav_{x}-{y}.gif

//== User define default vars

var mapW=2, mapH=3; // Size of map grid
var mapX=1, mapY=1; // Starting point of map in grid

var mapFullWidth=400,    mapFullHeight=400;    // Image size of full map
var mapNavWidth=28,      mapNavHeight=25;      // Image size of nav
var mapButArrowWidth=27, mapButArrowHeight=27; // Image size of arrow

var mapFullPath="./";  // Image path for full
var mapNavPath="./";   // Image path for nav
var mapArrowPath="/images/buttons/arrows1/"; // Image path for arrow

var mapFullExt="gif";  // Image file extension for full
var mapNavExt="gif";   // Image file extension for nav
var mapArrowExt="gif"; // Image file extension for arrow

var mapFilter=""; // Image filter for transitions

//== Script default vars

var mapLoaded = false;
var mapNavOn = false;

// Check if filters work
var fgo = false;
var navagent = navigator.userAgent.toLowerCase();
var iev = 0
if (iev = parseInt(navagent.indexOf("msie"))) iev = parseFloat(navagent.substring(iev+5,iev+5+navagent.substring(iev+5,iev+10).indexOf(";")))
if (iev>5.4) fgo = true;

function mapInit() {

 if (mapFullPath.substr(mapFullPath.length-1,1)!="/") mapFullPath+="/";
 if (mapNavPath.substr(mapNavPath.length-1,1)!="/") mapNavPath+="/";
 if (mapArrowPath.substr(mapArrowPath.length-1,1)!="/") mapArrowPath+="/";

//== Preload images
 for (var y=1; y<=mapH; y++) {
  for (var x=1; x<=mapW; x++) {
   MM_preloadImages(mapNavPath+"nav_"+x+"-"+y+"."+mapNavExt,mapNavPath+"nav_"+x+"-"+y+"_ov."+mapNavExt);
   MM_preloadImages(mapFullPath+"map_"+x+"-"+y+"."+mapFullExt);
  }
 }
 MM_preloadImages(mapArrowPath+"arrow_0-0."+mapArrowExt);
 for (var y=1; y<=3; y++) {
  for (var x=1; x<=3; x++) {
   if (x==2 && y==2) {} else MM_preloadImages(mapArrowPath+"arrow_"+x+"-"+y+"."+mapArrowExt,mapArrowPath+"arrow_"+x+"-"+y+"_ov."+mapArrowExt);
  }
 }
}

function mapStart() {
 mapLoaded = true;
 mapUpdate();
}

function mapUpdate() {
 var i=0, x=0, y=0, nam="", img="";

 // Update small map
 for (var y=1; y<=mapH; y++) {
  for (var x=1; x<=mapW; x++) {
   mapButNav(0,x,y);
  }
 }

 // Update arrows
 for (var y=1; y<=3; y++) {
  for (var x=1; x<=3; x++) {
   if (x==2 && y==2) {} else mapButArrow(0,x,y);
  }
 }

 // Update big map
 img = mapFullPath+"map_"+mapX+"-"+mapY+"."+mapFullExt;
 var objMap = MM_findObj("imgMap",'');
 if (mapFilter && fgo) objMap.filters[0].Apply();
 MM_swapImage("imgMap",'',img,1);
 MM_changeProp("imgMap",x,'title',mapX+" x "+mapY);
 if (mapFilter && fgo) objMap.filters[0].Play();
}

function mapButArrow(action,x,y) {
 if (mapLoaded) {
  var img = "";
  var nam = "imgArrow_"+x+"_"+y;

  var go=true
  if (x==1 && y==1) if (mapY==1 || mapX==1) go=false
  if (x==2 && y==1) if (mapY==1) go=false
  if (x==3 && y==1) if (mapX==mapW || mapY==1) go=false
  if (x==1 && y==2) if (mapX==1) go=false
  if (x==3 && y==2) if (mapX==mapW) go=false
  if (x==1 && y==3) if (mapY==mapH || mapX==1) go=false
  if (x==2 && y==3) if (mapY==mapH) go=false
  if (x==3 && y==3) if (mapX==mapW || mapY==mapH) go=false

  if (action==0) { // Out
   img = mapArrowPath+"arrow_0-0."+mapArrowExt;
   if (go) img = mapArrowPath+"arrow_"+x+"-"+y+"."+mapArrowExt;
  }
  if (action==1) { // Over
   img = mapArrowPath+"arrow_0-0."+mapArrowExt;
   if (go) img = mapArrowPath+"arrow_"+x+"-"+y+"_ov."+mapArrowExt;
  }
  if (action==2 && go) { // Click
   if (x==1 && mapX>1) mapX--;
   if (x==3 && mapX<mapW) mapX++;
   if (y==1 && mapY>1) mapY--;
   if (y==3 && mapY<mapH) mapY++;
   mapUpdate();
  }
  if (img) MM_swapImage(nam,'',img,1);
 }
 return false;
}

function mapButNav(action,x,y) {
 if (mapLoaded && mapNavOn) {
  var img = "";
  var nam = "imgNav_"+x+"_"+y;
  if (action==0) { // Out
   img = mapNavPath+"nav_"+x+"-"+y;
   if (x==mapX && y==mapY) img+= "_ov";
   img+= "."+mapNavExt;
  }
  if (action==1) { // Over
   img = mapNavPath+"nav_"+x+"-"+y+"_ov."+mapNavExt;
  }
  if (action==2) { // Click
   mapX=x; mapY=y;
   mapUpdate();
  }
  if (img) MM_swapImage(nam,'',img,1);
 }
 return false;
}

function mapDrawNav() {
 mapNavOn = true;
 var d=document;
 d.writeln("<TABLE class='mapNavTable' width="+(mapNavWidth*mapW)+" height="+(mapNavHeight*mapH)+" border=0 cellspacing=0 cellpadding=0>");
 for (var y=1; y<=mapH; y++) {
  d.writeln("<TR>");
  for (var x=1; x<=mapW; x++) {
   d.write("<TD width="+mapNavWidth+" height="+mapNavHeight+">");
   d.write("<DIV class='mapNavBut'>");
   d.write("<A href='#'");
   d.write(" onClick=\"return mapButNav(2,"+x+","+y+");\"");
   d.write(" onMouseOver=\"return mapButNav(1,"+x+","+y+")\"");
   d.write(" onMouseOut=\"return mapButNav(0,"+x+","+y+")\">");
   //d.write(x+"x"+y+":");
   d.write("<IMG src=\""+mapNavPath+"nav_"+x+"-"+y+"."+mapNavExt+"\" name='imgNav_"+x+"_"+y+"' width="+mapNavWidth+" height="+mapNavHeight+" border='0'></A>");
   d.write("</DIV>");
   d.write("</TD>\n");
  }
  d.writeln("</TR>");
 }
 d.writeln("</TABLE>");
}

function mapDrawFull() {
 var d=document;
 var style = "";
 d.writeln("<TABLE class='mapFullTable' width="+((mapButArrowWidth*2)+mapFullWidth)+" height="+((mapButArrowHeight*2)+mapFullHeight)+" border=0 cellspacing=0 cellpadding=0>");
 for (var y=1; y<=3; y++) {
  d.writeln("<TR>");
  for (var x=1; x<=3; x++) {
   d.write("<TD align='center' valign='middle'>");
   //d.write(x+"x"+y+":");
   if (x==2 && y==2) {
    if (mapFilter) style = "style=\"filter:"+mapFilter+"\"";
    d.write("<DIV class='mapFullMap'>");
    d.write("<IMG "+style+" src=\"/images/null.gif\" title='Loading...' name='imgMap' width="+mapFullWidth+" height="+mapFullHeight+">");
    d.write("</DIV>");
   } else {
    d.write("<DIV class='mapArrowBut'>");
    d.write("<A href='#'");
    d.write(" onClick=\"return mapButArrow(2,"+x+","+y+")\"");
    d.write(" onMouseOver=\"return mapButArrow(1,"+x+","+y+")\"");
    d.write(" onMouseOut=\"return mapButArrow(0,"+x+","+y+")\">");
    d.write("<IMG src=\""+mapArrowPath+"arrow_0-0."+mapArrowExt+"\" name='imgArrow_"+x+"_"+y+"' width="+mapButArrowWidth+" height="+mapButArrowHeight+" border=0></A>");
    d.write("</DIV>");
   }
   d.write("</TD>\n");
  }
  d.writeln("</TR>");
 }
 d.writeln("</TABLE>");
}
