// ------------- NAVIGATE.JS ---------------------------
// VERSION 0.4 (BETA)

function onclick_navigate(newimgcoord,direction)
{
  var controlform = eval("window.top.controlframe.document.controls");

  if (controlform.mode[1].checked == true) 
  {
    if (controlform.animate.checked == true) 
    {
      controlform.animate.checked = false;
      alert('Animation currently available only for single image segments');
    }
    if (is_ie4up || is_ie5up || is_ie5_5up || is_ie6up)
    {
      onclick_grow(newimgcoord,direction);
    } 
    else if (is_nav6up || is_gecko) 
    {
      onclick_grow2(newimgcoord,direction);
    }
    else
    {
      alert('Multiple Image Segment Mode currently available only in IE 4+, Mozilla and Netscape 6 and up');
      controlform.mode[0].checked = true;
    }
  } 
  else 
  {
    onclick_move(newimgcoord,direction);
  }

}
function onclick_animate()
{
  var imgext=get_imgext();
  var controlform = eval("window.top.controlframe.document.controls");
  var imageloc=window.top.imageframe.location.href;
  var basepath=imageloc.substring(0,imageloc.lastIndexOf("/")+1);
  var newfile=imageloc.substr(imageloc.lastIndexOf("/")+1);

  if (controlform.animate.checked == true) 
  {
    if (controlform.mode[1].checked == true) 
    {
      controlform.mode[0].checked = true;
      alert('Animation currently available only for single image segments');
    }
    newfile=basepath+newfile.substring(0,newfile.indexOf(".html"))+"-animation.html";
  }
  else 
  {
    newfile=basepath+newfile.substring(0,newfile.indexOf("-animation.html"))+".html";
  }

  window.top.imageframe.location.href=newfile;
  
}
// ---------------------------------------------------------------------------------------
function onclick_newimageformat()
{
  var imgext=get_imgext();
  var controlform = eval("window.top.controlframe.document.controls");
  var imageloc=window.top.imageframe.location.href;

  if (imageloc.indexOf("frame") != -1)
  {
    if (controlform.animate.checked == true) 
    {
      var basepath=imageloc.substring(0,imageloc.lastIndexOf("/")+1);
      var newloc=basepath+"imageframe_"+imgext+"-animation.html";
    }
    else
    {
      var basepath=imageloc.substring(0,imageloc.lastIndexOf("/")+1);
      var newloc=basepath+"imageframe_"+imgext+".html";
    }
  }
  else 
  {
    if (controlform.animate.checked == true) 
    {
      var basepath=imageloc.substring(0,imageloc.lastIndexOf("/"));
      var file=imageloc.substr(imageloc.lastIndexOf("/")+1);
      var newbasepath=basepath.substring(0,basepath.lastIndexOf("/")+1)+imgext+"/"; 
      var newloc=newbasepath+file;
    }
    else
    {
      var basepath=imageloc.substring(0,imageloc.lastIndexOf("/"));
      var file=imageloc.substr(imageloc.lastIndexOf("/")+1);
      var newbasepath=basepath.substring(0,basepath.lastIndexOf("/")+1)+imgext+"/"; 
      var newloc=newbasepath+file;
    }
  } 
  window.top.imageframe.location.href=newloc;

}
// ---------------------------------------------------------------------------------------
function onclick_zoomout()
{
  var controlform = eval("window.top.controlframe.document.controls");
  var imgext=get_imgext();
  var controlform = eval("window.top.controlframe.document.controls");
  var imageloc=window.top.imageframe.location.href;
  var basepath="/data/geo/goes-composite/";

  if (controlform.animate.checked == true) 
  {
    var newloc=basepath+"imageframe_"+imgext+"-animation.html";
  }
  else 
  {
    var newloc=basepath+"imageframe_"+imgext+".html";
  }

  window.top.imageframe.location.href=newloc;
}

// ---------------------------------------------------------------------------------------
function onclick_grow(newimgcoord,direction)
{
  var nrows=10;
  var ncols=10;

  //------- DISPLAY REQUESTED IMAGE SEGMENT/COORDINATE -----
  var imgext=get_imgext();
  var currentloopnumber = document.imagesectors.elements["loopnumber"].value;
  var newimgsrc='vis_conus_'+newimgcoord+'-'+currentloopnumber+'.'+imgext;
  var newimgobj=eval('img'+newimgcoord);
  var newhtml='<img src="'+newimgsrc+'">';
  newimgobj.innerHTML=newhtml;

  // ------ UPDATE NAVIGATION CONTROLLS -----------
  var row=parseInt(newimgcoord.substr(1,1));
  var col=parseInt(newimgcoord.substr(3,1));
  var navtext=new Array('<img src="../../up.gif" width="640" height="480" border="0" alt="Up">',
           '<img src="../../right.gif" width="640" height="480" border="0" alt="Right">',
           '<img src="../../down.gif" width="640" height="480" border="0" alt="Down">',
           '<img src="../../left.gif" width="640" height="480" border="0" alt="Left">');

  // UPDATE LIST OF IMAGE SEGMENTS IN HIDDEN FORM
  var current_contents=hiddenspan.innerHTML;
  var hiddenhtml=current_contents+'<input type="hidden" id="hiddenr'+row+'c'+col+'">';
  hiddenspan.innerHTML=hiddenhtml;    

  var newrow = new Array(row-1,row,row+1,row);
  var newcol = new Array(col,col+1,col,col-1);

  var newnavhtml='';
  var i;
  for (i = 0; i <= 3; i++)
  {
    if (newrow[i] <= (nrows-1) && newcol[i] <= (ncols-1) && newrow[i] >= 0 && newcol[i] >= 0)
    { 
      newnavhtml='<a href="javascript: onclick_navigate('+"'r"+newrow[i]+"c"+newcol[i]+"','down');"+'">'+navtext[i]+'</a>';
      var newnavobj=eval('img'+'r'+newrow[i]+'c'+newcol[i]);

      var imgobj=eval('document.images["image'+'r'+newrow[i]+'c'+newcol[i]+'"]');

      var tmp = eval('document.imagesectors.elements["hiddenr'+newrow[i]+'c'+newcol[i]+'"]');
      if ( typeof(tmp) == "undefined" )
      {
        newnavobj.innerHTML=newnavhtml;
      }
    }
  }

  //------- SCROLL TO NEW IMAGE SEGMENT/COORDINATE -------
  // DISABLE UNTIL I GET THIS WORKING BETTER
  //scroll_to_image(newimgcoord); 

}

// ---------------------------------------------------------------------------------------
function onclick_grow2(newimgcoord,direction)
{
  var nrows=10;
  var ncols=10;

  //------- DISPLAY REQUESTED IMAGE SEGMENT/COORDINATE -----
  var imgext=get_imgext();
  var currentloopnumber = document.imagesectors.elements["loopnumber"].value;
  var newimgsrc='vis_conus_'+newimgcoord+'-'+currentloopnumber+'.'+imgext;

  var newimgobj='img'+newimgcoord; 
  newElem = document.createElement("img");
  newElem.setAttribute("src",newimgsrc);
  document.getElementById(newimgobj).replaceChild(newElem,document.getElementById(newimgobj).firstChild);

  // ------ UPDATE NAVIGATION CONTROLS -----------
  var row=parseInt(newimgcoord.substr(1,1));
  var col=parseInt(newimgcoord.substr(3,1));
//  var navtext=new Array('<img src="../../up.gif" width="640" height="480" border="0" alt="Up">',
//           '<img src="../../right.gif" width="640" height="480" border="0" alt="Right">',
//           '<img src="../../down.gif" width="640" height="480" border="0" alt="Down">',
//           '<img src="../../left.gif" width="640" height="480" border="0" alt="Left">');

  var navsrc=new Array('../../up.gif',
           '../../right.gif',
           '../../down.gif',
           '../../left.gif');

  var navalt=new Array('Up',
           'Right',
           'Down',
           'Left');

  // UPDATE LIST OF IMAGE SEGMENTS IN HIDDEN FORM
//  var current_contents=hiddenspan.innerHTML;
//  var hiddenhtml=current_contents+'<input type="hidden" id="hiddenr'+row+'c'+col+'">';
//  hiddenspan.innerHTML=hiddenhtml;    
  newElem = document.createElement("input");
  newElem.setAttribute("type","hidden");
  newElem.setAttribute("id","hiddenr"+row+"c"+col);
  document.getElementById("hiddenspan").appendChild(newElem);

  var newrow = new Array(row-1,row,row+1,row);
  var newcol = new Array(col,col+1,col,col-1);

  // UPDATE NAVIGATION BUTTONS SURROUNDING IMAGE SEGMENTS USING INFORMATION IN HIDDEN FORM
  var newnavhtml='';
  var i;
  for (i = 0; i <= 3; i++)
  {
    if (newrow[i] <= (nrows-1) && newcol[i] <= (ncols-1) && newrow[i] >= 0 && newcol[i] >= 0)
    { 
//      newnavhtml='<a href="javascript: onclick_navigate('+"'r"+newrow[i]+"c"+newcol[i]+"','down');"+'">'+navtext[i]+'</a>';
//      var newnavobj=eval('img'+'r'+newrow[i]+'c'+newcol[i]);
      var newnavobj='img'+'r'+newrow[i]+'c'+newcol[i];

      var imgobj=eval('document.images["image'+'r'+newrow[i]+'c'+newcol[i]+'"]');

//      var tmp = eval('document.imagesectors.elements["hiddenr'+newrow[i]+'c'+newcol[i]+'"]');
//      if ( typeof(tmp) == "undefined" )
      if ( !(document.getElementById(newnavobj).hasChildNodes()) )
      {
//        newnavobj.innerHTML=newnavhtml;
        newElem2 = document.createElement("img");
        newElem2.setAttribute("src",navsrc[i]);
        newElem2.setAttribute("width","640");
        newElem2.setAttribute("height","480");
        newElem2.setAttribute("border","0");
        newElem2.setAttribute("alt",navalt[i]);

        newElem = document.createElement("a");
        newElem.setAttribute("href",'javascript: onclick_navigate('+"'r"+newrow[i]+"c"+newcol[i]+"','down');");

        newElem.appendChild(newElem2);
        document.getElementById(newnavobj).appendChild(newElem);        
//          document.getElementById(newnavobj).replaceChild(newElem,document.getElementById(newnavobj).firstChild);
      }
    }
  }

  //------- SCROLL TO NEW IMAGE SEGMENT/COORDINATE -------
  // DISABLE UNTIL I GET THIS WORKING BETTER
  //scroll_to_image(newimgcoord); 
}

// ---------------------------------------------------------------------------------------
function onclick_move(newimgcoord,direction) {
  var imgext=get_imgext();
  var newfile = '/data/geo/goes-composite/images/'+imgext+'/vis_conus_'+newimgcoord+'.html';
  window.location.href=newfile;
}

// ---------------------------------------------------------------------------------------
function get_imgext() {
  var controlform = eval("window.top.controlframe.document.controls");
  var radioSet = controlform.imageformat;
  var imgext='jpg';

  for (i=0; i<radioSet.length; i++) {
    if (radioSet[i].checked == true) {
      imgext=radioSet[i].value;
      break;
    }   
  }
  return imgext;
}


// ---------------------------------------------------------------------------------------
function scroll_to_image(newimgcoord) {

  //var screen_width=window.width;
  //var screen_height=window.height;

  var row=parseInt(newimgcoord.substr(1,1));
  var col=parseInt(newimgcoord.substr(3,1));
  var controlform = eval("window.top.controlframe.document.controls");

  if (controlform.animate.checked == false) 
  {
    if (is_ie4up || is_ie5up || is_ie5_5up || is_ie6up)
    {
      var obj=eval('img'+newimgcoord);
      var top=topPos(obj)-30;
      var left=leftPos(obj)-30;
      //window.scrollTo(0,0)
      //window.scrollBy(left,top);
      window.scrollTo(left,top);
    }
    else 
    {
      var obj=eval('document.images["image'+newimgcoord+'"]');
      if (row == 0 ) 
      {
        var newrow=0;
      } 
      else 
      {
        var newrow=480-30;
      }
  
      if (col == 0)
      {
        var newcol=0;
      } 
      else 
      {
        var newcol=640-30;
      }
      
      window.scrollTo(newcol,newrow);
    }
  }

}

// ---------------------------------------------------------------------------------------
function topPos(el) {
  //The following "two" functions are needed to calculate the position
  return doPosLoop(el, "Top");
}

// ---------------------------------------------------------------------------------------
function leftPos(el) {
 return doPosLoop(el, "Left");
}

// ---------------------------------------------------------------------------------------
function doPosLoop(el, val) {
 var temp = el;
 var x = eval("temp.offset" + val);
 while ((temp.tagName!="BODY") && (temp.offsetParent.style.position 
!= "absolute")) {
// while (temp.tagName!="BODY") {
  temp = temp.offsetParent;
  x += eval("temp.offset" + val);
 } return x;
}
