/* 
* relies on common_ajax.js being loaded 
* 
* NacreData L.L.C. 2009 
* Based in part on code from the book "Bulletproof Ajax" by Jeremy Keith
*/

var NDexisting_map;
var NDmaps       = new Array();
var NDsrc        = new Array();
var NDready      = new Array();
var NDdir;
var debug        = false;
var NDImgMap     = new Array();
var NDImgMapSrc  = new Array();
var NDImgMapCode = {};

function NDMapInit() {
    var dir = NDMapInit.arguments[0];
    var i   = 1;
    while( NDmaps[i] = arguments[i] ) {
      NDsrc[i] = dir + '/' + NDmaps[i] + '.jpg';
      i++;
    }
}

function NDswap(i) {  
    if( debug ) { alert( 'inside NDswap()' ); }
    if( !NDexisting_map ) {
      document.getElementById('section_map').innerHTML 
      = '<img src="images/maps/ajax-loader.gif" id="swappable_map" usemap="#bigmap" border="0" />';
    }
    if( !NDsrc[i] ) {
        document.getElementById('swappable_map').src   = 'images/maps/ajax-loader.gif';
        document.getElementById('swappable_map').style.marginLeft='350px';
        document.getElementById('swappable_map').style.marginRight='368px';
        document.getElementById('swappable_map').style.marginTop='200px';
        document.getElementById('swappable_map').style.marginBottom='200px';
        document.getElementById('swappable_map').style.width='32px';
        document.getElementById('swappable_map').style.height='32px';
        setTimeout("NDswap("+i+");",1000);
        return false;
    }
    if( debug ) {
      alert('NDswap called with # ' + i + ', existing map = ' + NDexisting_map);
    }
    if( NDexisting_map == i ) { 
      return true;
    }

    document.getElementById('swappable_map').style.margin='0px';
    if( NacreData.theme == 'mtr' ) {
      document.getElementById('swappable_map').style.width='630px';
      document.getElementById('swappable_map').style.height='815px';
    }
    else {
      document.getElementById('swappable_map').style.width='884px';
      document.getElementById('swappable_map').style.height='838px';
    }
    if( debug ) { alert( 'loading map ' + NDsrc[1] ); }
    document.getElementById('swappable_map').src = NDsrc[i];
    NDexisting_map = i;
    swapImgMap(i);
    return true;
}

function NDaddMapAJAX(src, i) {
    var request = NDgetHTTPObject();
    if( request ) {
        request.onreadystatechange = function() {
            NDupdateMap( request, i );
        }
        request.open( "GET", src, true );
        request.send( null );
        return true;
    }
    else {
        return false;
    }
}

function NDupdateMap( request, i ) {
    if( request.readyState == 4 ) {
        if( request.status == 200 || request.status == 304 ) {
            NDready[i] = true;
            var next = i + 1;
            if( NDsrc[next] ) {
              NDaddMapAJAX(NDsrc[next], next)
            }
        }
        else {
            NDready[i] = false;
        }
    }
    else {
        NDready[i] = false;
    }
}

function NDImgMapInit() {
  /* load image map code */
  var dir = NDImgMapInit.arguments[0];
  var i   = 1;
  while( NDImgMap[i] = NDImgMapInit.arguments[i] ) {
    NDImgMapSrc[i] = dir + '/' + NDImgMap[i] + '.map';
    i++;
  }
  NDaddImgMapAJAX(NDImgMapSrc[1], 1 );
}

function NDaddImgMapAJAX( src, i ) {
  var request = NDgetHTTPObject();
  if( request ) {
    request.onreadystatechange = function() {
      NDcacheImgMap( request, i );
    }
    request.open("GET", src, true );
    request.send( null );
    return true;
  }
  else {
    return false;
  }
}

function swapImgMap( i ) {
  var isSet = false;
  for( mapName in NDImgMapCode ) {
    if( mapName == NDmaps[i] ) {
      document.getElementById('image_map_div').innerHTML = NDImgMapCode[mapName];
      isSet = true;
    }
  }
  if( !isSet ) {
    document.getElementById('image_map_div').innerHTML =  '';
  }
}

function NDcacheImgMap( request, i ) {
  if( request.readyState == 4 ) {
    if( request.status == 200 || request.status == 304 ) {
      var map_name = NDImgMap[i];
      NDImgMapCode[map_name] = request.responseText;
            
      var next = i + 1;
      if( NDImgMapSrc[next] ) {
        NDaddImgMapAJAX( NDImgMapSrc[next], next );
      }
    }
  }
}
