function loadXML(xmlFile)
{
  // xmlDoc.async="false";
  xmlDoc.onreadystatechange=verify;
  if (bIsFirefox)
    xmlDoc.onload=loaded;

  if ( !xmlDoc.load(xmlFile) ) 
  {
    alert ("Failed to load XML data source!");
  } 
//  if (!bIsFirefox)
//    xmlObj=xmlDoc.documentElement;
  // else
  //   xmlObj=xmlDoc;
//  alert("firefox loaded"+xmlObj.getElementsByTagName('photo'));
}


function verify()
{
  // 0 Object is not initialized
  // 1 Loading object is loading data
  // 2 Loaded object has loaded data
  // 3 Data from object can be worked with
  // 4 Object completely initialized
  if (xmlDoc.readyState != 4)
  {
      return false;
  }
//  alert("hi");
   xmlObj=xmlDoc.documentElement;
  WritePhotoAlbum();
  SetImage(0, false);
  return(true);
}

function loaded()
{
  xmlObj=xmlDoc;
  WritePhotoAlbum();
  SetImage(0, false);
}

function SetImage(ind, hold)
{
  var width=photo_images[ind].width;
  var height=photo_images[ind].height;
  document.fullsize.src="blackpixel.png"; // Otherwise we get a resize effect.
  if (width>height)
  {
    document.fullsize.width=iImageDim;
    document.fullsize.height=(iImageDim*height)/width;
  }
  else
  {
    document.fullsize.height=iImageDim;
    document.fullsize.width=(iImageDim*width)/height;
  }
  document.fullsize.src=photo_images[ind].src;
  document.getElementById("pictitle").innerHTML=photo_titles[ind];
  document.getElementById("pictext").innerHTML=photo_texts[ind];
  
  if (iTimeoutID) window.clearTimeout(iTimeoutID);
  if (iAutoChange>0  && !hold)
  {
    iTimeoutID=window.setTimeout("SetImage("+((ind+1)%iMaxInd)+", false)", iAutoChange); // milliseconds
  }
  iCurrentInd=ind;
  return(true);
}


function HoldOff()
{
  if (iAutoChange>0)
  {
    if (iTimeoutID) window.clearTimeout(iTimeoutID);
    iTimeoutID=window.setTimeout("SetImage("+((iCurrentInd+1)%iMaxInd)+", false)", iAutoChange); // milliseconds
  }
  return(true);
}


function NextPhoto()
{
  // alert(iCurrentInd);
  SetImage((iCurrentInd+1)%iMaxInd);
  return(true);
}


function PreviousPhoto()
{
  // alert(iCurrentInd);
  SetImage((iCurrentInd-1+iMaxInd)%iMaxInd);
  return(true);
}


function ToggleAutochange()
{
  iAutoChange=-iAutoChange;
  if (iAutoChange>0)
  {
    iTimeoutID=window.setTimeout("SetImage("+((iCurrentInd+1)%iMaxInd)+")", iAutoChange); // milliseconds
    document.getElementById("slideshowmode").innerHTML="Turn slideshow off";
  }
  else
  {
    window.clearTimeout(iTimeoutID);
    iTimeoutID=0;
    document.getElementById("slideshowmode").innerHTML="Turn slideshow on";
  }
  return(false);
}


function WritePhotoAlbum()
{
  var x;
  if (!bIsFirefox)
  {
    x=xmlObj.getElementsByTagName('gallery');
    if (x && x.item(0)) 
    document.getElementById("pagetitle").innerHTML="<h1>"+x.item(0).text+"</h1>";
    x=xmlObj.getElementsByTagName('subtitle');
    if (x && x.item(0)) 
    document.getElementById("subtitle").innerHTML=x.item(0).text;
  }
  else  
  {  
    x=xmlDoc.getElementsByTagName('gallery');
    if (x && x.item(0)) 
     document.getElementById("pagetitle").innerHTML="<h1>"+x.item(0).firstChild.nodeValue+"</h1>";
    x=xmlDoc.getElementsByTagName('subtitle');
    if (x && x.item(0)) 
     document.getElementById("subtitle").innerHTML=x.item(0).firstChild.nodeValue;
  }
  if (!bIsFirefox)
    x=xmlObj.getElementsByTagName('photo');
  else    
    x=xmlDoc.getElementsByTagName('photo');
  var i;
  var a="<table>";
  // alert("loaded"+x.length);

  iMaxInd=x.length;
  for(i=0; i<x.length; i++)
  {
       if (i%row==0) a+="<tr>";
      a+="<td>";
   if (!bIsFirefox)
    {
     var y=x[i].getElementsByTagName('file');
      var file=y.item(0).text;
      //alert(file);
     photo_images[i]=new Image();
      photo_images[i].src=file;
       var thumbnail=x[i].getElementsByTagName('thumbnail').item(0).text;
      photo_titles[i]=x[i].getElementsByTagName('title').item(0).text;
      if (x[i].getElementsByTagName('text').length > 0)
	photo_texts[i]=x[i].getElementsByTagName('text').item(0).text;
      else
	photo_texts[i]="";
      a+="<td align='center'><a href='javascript:return(false);' onmouseover=' return(SetImage("+i+", true));' onmouseout='return(HoldOff());'>";
    a+="<img src=\""+thumbnail+"\" border='0'></a>";
    }
    else
    {
    photo_images[i]=new Image();
	photo_texts[i]="";
      var photonodes=x[i].childNodes;
//      a+="length"+x[i].childNodes.length;
      for (j=0;j<x[i].childNodes.length;j++)
		{
//      a+=" "+x[i].childNodes[j].nodeType;
			if (x[i].childNodes[j].nodeType != 1) continue;
       		
      var theName = x[i].childNodes[j].nodeName;
      var theData = "";
      if (x[i].childNodes[j].firstChild)
	theData=x[i].childNodes[j].firstChild.nodeValue;
//      a+=theName+"/"+theData+"xx";
      if (theName=="thumbnail")
      {
	a+="<td align='center'><a href='javascript:return(false);' onmouseover='return(SetImage("+i+", true));' onmouseout='return(HoldOff());'>";
	a+="<img src=\""+theData+"\" border='0'></a>";
      }
      if (theName=="title")
	photo_titles[i]=theData;
      if (theName=="file")
	photo_images[i].src=theData;
      if (theName=="text")
      	photo_texts[i]=theData;

		}
    }
 a+="</td>";       
 if (i%row==row-1 || i==x.length-1) a+="</tr>";
   }
a=a+"</table>";
        document.getElementById("album").innerHTML=a;
}

