/*
function rdfmapperSelection(nm)
{
  var cn = document.getElementById("item");
  var n = new Number(nm.slice(1,nm.length));
  cn . innerHTML = items[n];
}

*/

function itemWithBackButton(itm)
{
  if (lastDirectory.length == 0) return itm; else
  return '<a href="javascript:lastList();">Back to list</a><br/>'+itm;
}

var lastDirectory = new Array();
function setDirectory(itms)
{
  var txt;
  var cn = document.getElementById("item");
  directory = new Array();
  var ln  = itms.length;
  for (i=0;i<ln;i++) directory += itemlinks[itms[i]];
  lastDirectory = itms;
//  txt = "count: "+ln+"<br/>"+directory;
  cn . innerHTML = directory;
//  cMonth = -1;
}

function lastList(){setDirectory(lastDirectory)}

//cMonth < 0 means calendar off; set to -(1+previous value)

var cMonth = 1000000000;


function highlightDate(d)
{
   var dnm = "d"+d;
   var itm = document.getElementById(dnm);
//   alert("itm "+itm);
   if (typeof(itm) !=  "undefined") 
      itm . className = "calendarHighlightedEvent";
}


function unHighlightDate(d)
{
   var dnm = "d"+d;
   var itm = document.getElementById(dnm);
   if (typeof(itm)!= "undefined") 
     itm . className = "calendarEvent";
}

function unHighlightDates(mn)
{
   var evs,ln,i;
   if (mn >= 0)
      {
	  evs = monthevents[mn];
	  ln = evs.length;
	  for (i = 0;i<ln;i++) unHighlightDate(evs[i]);
	  }
}

function highlightDates(ds)
{
   var ln = d.length;
   for (i = 0;i<ln;i++) highlightDate(ds[i]);
}
// called when dot is clicked (from rdfmapperSelection)
function highlightDatesForItems(itms)
{
   var ln,i,itm,dt;
   if (cMonth < 0) return;
   unHighlightDates(cMonth);
   ln = itms.length;
   for (i = 0;i<ln;i++)
      {
	  itm = itms[i];
	  dt = itemDates[itm];
	  highlightDate(dt);
	  }
}


   
/*
function setDate(dt)
{
  setMonth(cMonth);
  var cn = document.getElementById("calendar");
  cn . innerHTML = monthcalendars[0];
  cMonth = 0;
}


*/

function itemsInDateRange(lw,hg)
{
   var ci,dt,j;
   var rs = new Array();
   var ln = sorted.length;
   j = 0;
//   alert("sorted length = "+ln+" allitems " + allitems.length);
   for (i=0;i<ln;i++)
       {
	   ci = sorted[i];
	   dt = itemDates[ci];
	   if ((lw <= dt) && (dt < hg)) rs[j++] = ci;
	   }
   return rs;
}


function itemsInMonth(its,mn)
{
   if (mn < 0) return its;
   var ci,dt,j,lw,hg,cit,rs;
   var rs = new Array();
   var ln = its.length;
   lw = monthdates[mn];
   hg = monthdates[mn+1];
   j = 0;
   for (i=0;i<ln;i++)
       {
	   cit = its[i];
	   dt = itemDates[cit];
	   if ((lw <= dt) && (dt < hg)) rs[j++] = cit;
	   }
//   alert("mn = "+mn+" rslength = "+rs.length);
   return rs;
}


// mn < 0 means select all
function setMonth(mn)
{
  var lw,hg;
// alert("cMonth = "+cMonth+" mn = "+mn);
 if (cMonth == mn) return;
  var cn = document.getElementById("calendar");
  if (mn < 0)
     {
     setDirectory(sorted);
     cn . innerHTML = "";
     pm_showPoints(3,2);
	 }
  else
     {
     lw = monthdates[mn];
     hg = monthdates[mn+1];
     pm_showPoints(lw,hg);
     setDirectory(itemsInDateRange(lw,hg));
     cn . innerHTML = monthcalendars[mn];
	 unHighlightDates(mn);
	 }
  cMonth = mn;
  clearListMsg();
}

function calendarOff()
{
  var mn;
  if (cMonth >= 0) mn = -(cMonth + 1); else mn = -1;
  setMonth(mn);
}

function calendarOn()
{
  var mn;
  if (cMonth < 0) mn = -cMonth - 1; else mn = 0;
  setMonth(mn);
}

function setListMsg()
{
  var cn = document.getElementById("listWhichEvents");
  if (cMonth >= 0)
     cn . innerHTML = "List all events this month";
  else
     cn . innerHTML = "List all events";
}

function clearListMsg()
{
  var cn = document.getElementById("listWhichEvents");
     cn . innerHTML = "";
}
	      
function calendarNextMonth()
{
  var ln = monthcalendars.length;
  if (cMonth < 0) setMonth(1);
  else 
  if (cMonth < (ln-1)) setMonth(cMonth+1);
  else alert("No events recorded after this month");
}



function calendarPreviousMonth()
{
  if (cMonth < 0) setMonth(0);
  else
  if (cMonth > 0) setMonth(cMonth-1);
  else 
  alert("No events recorded prior to this month");
}


function rdfmapperDirectory()
{
  setMonth(-1);
}

//synonyms
function listContents()
{
  rdfmapperDirectory();
}
// this is the official version
function listItems()
{
  var mn;
  mn = cMonth;
  cMonth = 1000000000;
  setMonth(mn);
}

function rdfmapperInit()
{
   pm_hideIndicator();
  var ln = monthcalendars.length;
   setMonth(ln-1);
}

function selectItem(n)
{
  var cn = document.getElementById("item");
  cn . innerHTML = itemWithBackButton(items[n]);
  pm_highlight("p"+item2loc[n]);
  if (cMonth >= 0)
     {
	 unHighlightDates(cMonth);
	 highlightDate(itemDates[n]);
	 }
  setListMsg();
}

function intsToIds(itms)
{
   var i,ln,rs;
   rs = new Array();
   ln = itms.length;
   for (i=0;i<ln;i++) rs[i] = "p"+item2loc[itms[i]];
   return rs.sort();
}
// called by clicking on a date on the calendar
function selectDate(n)
{
  var itms,iitms;
  itms = itemsInDateRange(n,n+1);
  iitms = intsToIds(itms);
//  alert("selectDate "+n+" itms "+iitms);
  pm_mhighlight(iitms);
  setDirectory(itms);
  unHighlightDates(cMonth);
  highlightDate(n);
  setListMsg();
}

// this is called when the user clicks on a link

var linkwinprops = "width=700,height=500,location=1,directories=1,toolbar=1,menubar=1,toolbar=1,menubar=1,scrollbars=1,resizable=1,status=1";
var linkwinname = 'linkwin';

function launchLink(url) {
	linkwin =window.open(url,linkwinname,linkwinprops);
// The following line forces the map window to pop in the foreground
		setTimeout('linkwin.focus();',200);
	}
