var def_calendar = "V2.1";

var getCalendarUrl = "/members/calendarXML.jsp";
var setCalendarUrl = "/members/calendarSave.jsp";

var newItemTitle = "New Item";

var startDay    = 0;
var showMonth   = 0;
var showYear    = 2006;
var isThisMonth = false;

var editItemId   = 0;
var deleteItemId = 0;
var createItem   = false;

var days = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
var mons = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var lens = [31, 28, 31, 30,  31,  30,  31,  31,  30,  31,  30,  31];
var strt = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];

var calendarItems = [];
var errorMessages = [];
var itemsOnDays   = [];
var contactTypes  = [];

var domDocument;
var domRootElement;

function isLeapYear( theYear )
{
  return ( theYear % 4 == 0 ) && ( theYear % 100 != 0 || theYear % 400 == 0 );
}

function setCalendar()
{
  var day;
  var week;
  startDay = ( ( showYear - 1 ) * 365 + Math.floor( ( showYear - 1 ) / 4 ) - Math.floor( ( showYear - 1 ) / 100 ) + Math.floor( ( showYear - 1 ) / 400 ) + strt[showMonth] + 1 + ( ( isLeapYear( showYear ) && showMonth > 1 ) ? 1 : 0 ) ) % 7;

  var today = new Date();

  isThisMonth = ( today.getFullYear() == showYear ) && ( today.getMonth() == showMonth );

  for( var i = 0 ; i < 42 ; i++ )
  {
    week = Math.floor( i / 7 ) + 1;
    day  = days[i % 7];

    dayElt = getElt( "week" + week + day );

    if( dayElt == null ) continue;

    dayElt.style.fontWeight = "";

    var dayVal;
    if( i - startDay >= 0 && i - startDay < lens[showMonth] + ( ( isLeapYear( showYear ) && showMonth == 1 ) ? 1 : 0 ) )
    {
      dayVal = ( i - startDay + 1 );
      dayElt.innerHTML = dayVal;
      dayElt.style.backgroundColor = "";
      dayElt.style.cursor = "pointer";
      dayElt.title = "New item starting " + dayVal + "-" + mons[showMonth] + "-" + showYear;	//showYear + "/" + zpad( showMonth + 1, 2 ) + "/" + zpad( dayVal, 2 );

      dayElt.onclick = function(){addCalendarEvent( this.innerHTML )};

      if( isThisMonth && today.getDate() == dayVal )
      {
        dayElt.className += " today";
      }
      else if( dayElt.className.indexOf( " today" ) != -1 )
      {
        dayElt.className = dayElt.className.substring( 0, dayElt.className.length - 6 );
      }
    }
    else
    {
      dayElt.innerHTML = "";
      dayElt.style.backgroundColor = "#eee";
      dayElt.style.cursor = "";
      dayElt.title = "";
      dayElt.onclick = null;
    }
  }

  getElt( "monthDisplay" ).innerHTML = mons[showMonth] + " " + showYear;

  loadData();
}

function clearCalendar()
{
  itemsOnDays = [];

  for( var i = 0 ; i < 42 ; i++ )
  {
    week = Math.floor( i / 7 ) + 1;
    day  = days[i % 7];

    dayElt = getElt( "week" + week + day );

    if( dayElt != null && dayElt.innerHTML != "" )
    {
      dayElt.style.fontWeight      = "";
      dayElt.style.backgroundColor = "";
    }

    itemsOnDays[i] = [];
  }
}

function incMonth()
{
  showMonth++;

  if( showMonth == 12 )
  {
    showMonth = 0;
    showYear++;
  }

  setCalendar();
}

function decMonth()
{
  showMonth--;

  if( showMonth == -1 )
  {
    showMonth = 11;
    showYear--;
  }

  setCalendar();
}

function incYear()
{
  showYear++;

  setCalendar();
}

function decYear()
{
  showYear--;

  setCalendar();
}

function loadData()
{
  //getElt( "items" ).innerHTML = '<img src="/art/loading.gif"> Loading...';

  callRemote( getCalendarUrl + "?showYear=" + showYear + "&showMonth=" + showMonth, function(data){handleData(data,null)} );

  return false;
}

function loadItem( itemId, postScript )
{
  callRemote( getCalendarUrl + "?itemId=" + itemId, function(data){handleData(data,postScript)} );

  return false;
}

function handleData( data, postScript )
{
  var parser = new DOMImplementation();

  domDocument    = parser.loadXML( data );
  domRootElement = domDocument.getDocumentElement();

  var items = domRootElement.getChildNodes();

  var resultDiv = getElt( "items" );

  if( resultDiv != null )
  {
    resultDiv.innerHTML = "";
  }

  calendarItems = [];

  clearCalendar();

  var rowCount = 0;
  for( var i = 0 ; i < items.length ; i++ )
  {
    calendarItems[items.item( i ).getAttribute( "id" )] = items.item( i );
    if( resultDiv != null )
    {
      resultDiv.innerHTML += item2html( items.item( i ), rowCount );
      rowCount++;
    }

    hliteDays( items.item( i ) );
  }

  if( resultDiv != null && items.length == 0 )
  {
    resultDiv.innerHTML += '<div id="noItems" class="item">No Events for ' + mons[showMonth] + ' ' + showYear + '</div>';
  }

  if( editItemId > 0 )
  {
    editItem( editItemId );
    editItemId = 0;
  }
  else if( deleteItemId > 0 )
  {
    deleteCalItem( deleteItemId );
    deleteItemId = 0;
  }
  else if( createItem )
  {
    addCalendarEvent( new Date().getDate() );
    createItem = false;
  }
  if( typeof(postScript) == "function" )
  {
    postScript();
  }
}

function hliteDays( item )
{
  var startDate = parseDate( getSubItem( item, "start" ) ).getTime();
  var endDate   = parseDate( getSubItem( item, "end" ) ).getTime();
  var checkDate = new Date( showYear, showMonth, 1 ).getTime();

  if( startDate < checkDate )
  {
    startDate = checkDate;
  }

  var cellNum;
  var week;
  var day;
  var dayElt;

  while( startDate <= endDate )
  {
    cellNum = startDay + Math.floor( ( startDate - checkDate ) / 86400000 );

    if( cellNum > 41 ) break;

    week = Math.floor( cellNum / 7 ) + 1;
    day  = days[cellNum % 7];

    dayElt = getElt( "week" + week + day );

    if( dayElt == null || dayElt.innerHTML == "" ) break;

    itemsOnDays[dayElt.innerHTML][itemsOnDays[dayElt.innerHTML].length] = item.getAttribute( "id" );

    dayElt.style.fontWeight = "bold";

    if( day == "sun" || day == "sat" )
    {
      dayElt.style.backgroundColor = "#c5c5ff";
    }
    else
    {
      dayElt.style.backgroundColor = "#e0e0ff";
    }

    dayElt.title = "Manage events for " + dayElt.innerHTML + "-" + mons[showMonth] + "-" + showYear;		//showYear + "/" + zpad( showMonth + 1, 2 ) + "/" + zpad( dayElt.innerHTML, 2 );
    dayElt.onclick = showCalendarMenu;

    startDate += 86400000;
  }
}

function item2html( item, row )
{
  var startDate = formatDateTime( getSubItem( item, "start" ) );
  var endDate   = formatDateTime( getSubItem( item, "end" ) );

  var dateRange = formatDateRange( getSubItem( item, "start" ), getSubItem( item, "end" ) );

  var itemId    = item.getAttribute( "id" );

  var eventName = getSubItemValue( item, "name" );

  if( eventName == null || eventName == "" )
  {
    eventName = "No Event Name";
  }

  return '<div id="item' + itemId + '" class="item row' + (row%2)+ '">' +
         '<div id="tools' + itemId + '" class="tools">' +
         ' <a href="/members/iCalendarExport.jsp?calendarItemId=' + itemId + '">Export</a>'+
         //' <a href="#" onclick="exportPopup(' + itemId + ',event);return false">Export</a>'+
         ' <a href="#" onclick="return editCalendarEvent(' + itemId + ')">Edit</a>'+
         ' <a href="#" onclick="if( confirm( \'Are you sure you want to delete this calendar event?\' ) ) deleteCalItem(' + itemId + '); return false">Delete</a></div>' +
         '<span class="itemDate">' +
         dateRange + '</span><span class="eventName"><a href="#" onclick="return editCalendarEvent(' + itemId + ')">' + eventName + '</a> - ' + getSubItemValue( item, "country" ) +
         ( ( item.getAttribute( "ooc" ) != "" ) ? "<img src=\"/art/ooc.png\" class=\"contactIcon\" alt=\"Out of Contact\" title=\"Out of Contact\"/>" : "" ) +
         ( ( item.getAttribute( "dnd" ) != "" ) ? "<img src=\"/art/dnd.png\" class=\"contactIcon\" alt=\"Do Not Disturb\" title=\"Do Not Disturb\"/>" : "" ) +
         '</span>' +
         '</div>';
}


function deleteCalItem( itemId )
{

  var item = getElt( "item"  + itemId );

  if( item != null )
  {
    item.style.opacity = 0.3;
  }

  callRemote( setCalendarUrl + "?mode=delete&calendarItemId=" + itemId, handleCalDelete );
}

function handleCalDelete( data )
{
  var parser = new DOMImplementation();

  domDocument    = parser.loadXML( data );
  domRootElement = domDocument.getDocumentElement();

  var status = parseInt( 0 + domRootElement.getAttribute( "status" ), 10 );

  if( status >= 200 && status <= 299 )
  {
    loadData();
  }
  else
  {
    alert( status + ": " + errorMessages[status] );
  }
}

function showCalendarMenu( ev )
{
  if( typeof( ev ) == "undefined" )
  {
    ev = event;
  }

  var clicked = ( ( ev.target ) ? ev.target : ev.srcElement );

  menuData = "";

  var item;
  var eventName;

  for( var i = 0 ; i < itemsOnDays[clicked.innerHTML].length ; i++ )
  {
    item = calendarItems[itemsOnDays[clicked.innerHTML][i]];

    eventName = getSubItemValue( item, "name" );

    if( eventName == null || eventName == "" )
    {
      eventName = "No Event Name";
    }

    menuData += '<a href="#" onclick="return editCalendarEvent(' + item.getAttribute( "id" ) + ')">Edit ' + eventName + '</a>';
  }

  menuData += '<a href="#" onclick="return addCalendarEvent(' + clicked.innerHTML + ')">Add an Event</a>';
  menuData += '<a href="#" onclick="return closeTmpl(\'info\')">Cancel</a>';

  popTmpl( "info", menuData, new Dimension(getlayerleft( clicked.id ) + getlayerwidth( clicked.id ),getlayertop( clicked.id ) + getlayerheight( clicked.id ) ), null, null, null, true );

  return true;
}

function addCalendarItem( day )
{
  var showDay = parseInt( "0" + day, 10 );

  if( showDay == 0 )
  {
    showDay = new Date().getDate();
    showMonth = new Date().getMonth();
    showYear = new Date().getYear();
    if(showYear<=1900){showYear+=1900;}
  }

  var startDate = new Date( showYear, showMonth, showDay,  9,  0 );
  var endDate   = new Date( showYear, showMonth, showDay, 17, 30 );

  //hideTools();

  //var editDiv = getElt( "editPane" );
  var itmForm = getElt( "itemEditForm" );

  itmForm.calendarItemId.value = -1;
  itmForm.itemLabel.value      = newItemTitle;

  setDateForm( itmForm, "editStart", startDate );
  setDateForm( itmForm, "editEnd",   endDate );

  for( var i = 0 ; i < itmForm.locationId.options.length ; i++ )
  {
    itmForm.locationId.options[i].selected = false;
  }

  itmForm.locationId.selectedIndex = 0;

  setLocation( itmForm );

  itmForm.locationName.value        = "";
  itmForm.cityLocationId.value      = "";
  itmForm.cityName.value            = "";
  itmForm.countryCode.selectedIndex =  0;

  itmForm.visibility.value = "A";

  itmForm.OOC.checked = false;
  itmForm.DND.checked = false;

  for( var i = 0 ; i < contactTypes.length ; i++ )
  {
    itmForm.elements['contact' + contactTypes[i]].value = "";
  }

  showViewLink();

  var addressLayer = getElt( "addressDetails" );

  if( addressLayer != null )
  {
    clearAddressForm();
  }

  //editDiv.style.visibility = "visible";

  return false;
}

function editItem( itemId )
{
  //hideTools();

  //var editDiv = getElt( "editPane" );
  var itmForm = getElt( "itemEditForm" );

  itmForm.calendarItemId.value = itemId;
  itmForm.itemLabel.value      = getSubItemValue( calendarItems[itemId], "name" );

  setDateForm( itmForm, "editStart", getSubItem( calendarItems[itemId], "start" ) );
  setDateForm( itmForm, "editEnd",   getSubItem( calendarItems[itemId], "end" ) );

  var locationId = getSubItemValue( calendarItems[itemId], "location" );

  for( var i = 0 ; i < itmForm.locationId.options.length ; i++ )
  {
    itmForm.locationId.options[i].selected = ( itmForm.locationId.options[i].value == locationId );
  }

  setLocation( itmForm );

  itmForm.visibility.value = getSubItemValue( calendarItems[itemId], "visibility" );

  itmForm.OOC.checked = ( calendarItems[itemId].getAttribute( "ooc" ) != "" );
  itmForm.DND.checked = ( calendarItems[itemId].getAttribute( "dnd" ) != "" );

  var contact  = "";
  var contacts = getSubItem( calendarItems[itemId], "contacts" );

  for( var i = 0 ; i < contactTypes.length ; i++ )
  {
    contact = "";

    if( contacts != null )
    {
      contact = getSubItemValue( contacts, "contact", "typeId", contactTypes[i] );

      if( contact == null ) contact = "";
    }

    itmForm.elements['contact' + contactTypes[i]].value = contact;
  }

  //editDiv.style.visibility = "visible";

  return false;
}

function getDateFromForm( theForm, elemNameBase, useOld )
{
  var yearElem  = theForm.elements[elemNameBase + "Year"];
  var monthElem = theForm.elements[elemNameBase + "Month"];
  var dayElem   = theForm.elements[elemNameBase + "Day"];
  var hourElem  = theForm.elements[elemNameBase + "Hour"];
  var minElem   = theForm.elements[elemNameBase + "Min"];

  var yearVal  = 0;
  var monthVal = 0;
  var dayVal   = 0;
  var hourVal  = 0;
  var minVal   = 0;

  if( useOld )
  {
    yearVal  = yearElem.options[yearElem.oldSelectedIndex].text;
    monthVal = monthElem.options[monthElem.oldSelectedIndex].value - 1;
    dayVal   = dayElem.options[dayElem.oldSelectedIndex].text;
    hourVal  = parseInt( hourElem.options[hourElem.oldSelectedIndex].text, 10 );
    minVal   = parseInt( minElem.options[minElem.oldSelectedIndex].text,   10 );
  }
  else
  {
    yearVal  = yearElem.options[yearElem.selectedIndex].text;
    monthVal = monthElem.options[monthElem.selectedIndex].value - 1;
    dayVal   = dayElem.options[dayElem.selectedIndex].text;
    hourVal  = parseInt( hourElem.options[hourElem.selectedIndex].text, 10 );
    minVal   = parseInt( minElem.options[minElem.selectedIndex].text,   10 );
  }

  return new Date( yearVal, monthVal, dayVal, hourVal, minVal, 0, 0 );
}

function setDateForm( theForm, elementRoot, dateObj )
{
  if( dateObj.getFullYear )
  {
    setDateTimeSelect( theForm.elements[elementRoot + "Year"],  dateObj.getFullYear() - theForm.elements[elementRoot + "Year"].options[0].text );
    setDateTimeSelect( theForm.elements[elementRoot + "Month"], dateObj.getMonth() );
    setDateTimeSelect( theForm.elements[elementRoot + "Day"],   dateObj.getDate() - 1 );
    setDateTimeSelect( theForm.elements[elementRoot + "Hour"],  dateObj.getHours() );
    setDateTimeSelect( theForm.elements[elementRoot + "Min"],   dateObj.getMinutes() / 5 );
  }
  else
  {
    setDateTimeSelect( theForm.elements[elementRoot + "Year"],  getSubItemValue( dateObj, "year" ) - theForm.elements[elementRoot + "Year"].options[0].text );
    setDateTimeSelect( theForm.elements[elementRoot + "Month"], getSubItemValue( dateObj, "month" ) - 1 );
    setDateTimeSelect( theForm.elements[elementRoot + "Day"],   getSubItemValue( dateObj, "day" ) - 1 );
    setDateTimeSelect( theForm.elements[elementRoot + "Hour"],  getSubItemValue( dateObj, "hour" ) );
    setDateTimeSelect( theForm.elements[elementRoot + "Min"],   getSubItemValue( dateObj, "minute" ) / 5 );
  }
}

function setDateTimeSelect( elem, selIndex )
{
  elem.selectedIndex    = selIndex;
  elem.oldSelectedIndex = selIndex;
}

function saveItem()
{
  var itmForm = getElt( "itemEditForm" );

  callRemote( setCalendarUrl + "?mode=save&" + getQueryString( itmForm ), handleSave );

  closeItemEdit();
}

function handleSave( data )
{
  var parser = new DOMImplementation();

  domDocument    = parser.loadXML( data );
  domRootElement = domDocument.getDocumentElement();

  var status = parseInt( 0 + domRootElement.getAttribute( "status" ), 10 );

  if( status >= 200 && status <= 299 )
  {
    var items = domRootElement.getChildNodes();

    if( items.length > 0 )
    {
      var locnObj = getSubItem( items.item( 0 ), "location" );

      if( locnObj != null )
      {
        var itmForm = getElt( "itemEditForm" );
        if( typeof(itmForm) != "undefined" && typeof(itmForm.locationId) != "undefined")
        {
          itmForm.locationId.options[itmForm.locationId.options.length] = new Option( getItemValue( locnObj ), locnObj.getAttribute( "id" ) );
        }
      }
    }

    if( getElt( "itemBox" ) != null )
    {
      loadData();
    }
    else
    {
      reloadLocator();
    }
  }
  else
  {
    alert( status + ": " + errorMessages[status] + "\n" + domRootElement.getAttribute( "location" ) );
  }
}

function cancelItemEdit()
{
  closeItemEdit();
}

function closeItemEdit()
{
  closeTmpl( 'entry1' );
  //showTools();

  //var editDiv = getElt( "editPane" );

  //editDiv.style.visibility = "hidden";

  //if( typeof( hideResults ) != "undefined" )
  //{
  //  hideResults();
  //}
}

function parseDate( dateObj )
{
  return new Date( getSubItemValue( dateObj, "year" ), getSubItemValue( dateObj, "month" ) - 1, getSubItemValue( dateObj, "day" ),
                   getSubItemValue( dateObj, "hour" ), getSubItemValue( dateObj, "minute" ) );
}

function formatDate( dateObj )
{
  var theDate = parseDate( dateObj );

  return ((theDate.getDate()<10)?("0"):("")) + theDate.getDate() + " " + mons[theDate.getMonth()] + " " + theDate.getFullYear();
}

function formatTime( dateObj )
{
  var theDate = parseDate( dateObj );

  return zpad( theDate.getHours(), 2 ) + ":" + zpad( theDate.getMinutes(), 2 );
}

function formatDateTime( dateObj )
{
  return formatDate( dateObj ) + " " + formatTime( dateObj );
}

function formatDateRange( startDateObj, endDateObj )
{
  var startDateVals = splitDate( parseDate( startDateObj ) );
  var endDateVals   = splitDate( parseDate( endDateObj ) );

  if( startDateVals[0] == endDateVals[0] )							// Same Year
  {
    if( startDateVals[1] == endDateVals[1] )							// Same Month
    {
      if( startDateVals[2] == endDateVals[2] )							// Same Day
      {
        if( startDateVals[3] == endDateVals[3] && startDateVals[4] == endDateVals[4] )		// Same Time
        {
          return formatDateTime( startDateObj );
        }
        else
        {
          return formatDateTime( startDateObj ) + "-" + formatTime( endDateObj );
        }
      }
      else
      {
        return ((startDateVals[2]<"10")?("0"):("")) + startDateVals[2] + "-" + formatDate( endDateObj );
      }
    }
    else
    {
      return startDateVals[2] + " " + mons[startDateVals[1]] + "-" + formatDate( endDateObj );
    }
  }
  else
  {
    return formatDate( startDateObj ) + "-" + formatDate( endDateObj );
  }
}

function splitDate( theDate )
{
  return new Array( theDate.getFullYear(), theDate.getMonth(), theDate.getDate(), theDate.getHours(), theDate.getMinutes() );
}

function setLocation( theForm )
{
  var locationForm = getElt( "locationForm" );

  if( theForm.locationId.options[theForm.locationId.selectedIndex].value == -1 )
  {
    locationForm.style.display = "block";
  }
  else
  {
    locationForm.style.display = "none";
  }
  refreshShadow( "entry1" );

  //positionEditDiv();
}

function zpad( theNumber, length )
{
  theNumber = "" + theNumber;

  for( var i = 0 ; theNumber.length < length && i < length - theNumber.length ; i++ )
  {
    theNumber = "0" + theNumber;
  }

  return theNumber;
}

function validateDates( elem, elemNameBase )
{
  var yearElem  = elem.form.elements[elemNameBase + "Year"];
  var monthElem = elem.form.elements[elemNameBase + "Month"];
  var dayElem   = elem.form.elements[elemNameBase + "Day"];

  var yearVal  = yearElem.options[yearElem.selectedIndex].text;
  var monthVal = monthElem.options[monthElem.selectedIndex].value;
  var dayVal   = dayElem.options[dayElem.selectedIndex].text;

  var maxDay = lens[monthVal - 1] + ( ( monthVal == 2 && isLeapYear( yearVal ) ) ? 1 : 0 );

  dayVal = Math.min( dayVal, maxDay );

  dayElem.selectedIndex = dayVal - 1;

  var otherElemNameBase = "editStart";

  if( elemNameBase == "editStart" )
  {
    otherElemNameBase = "editEnd";
  }

  var otherElemName = otherElemNameBase + elem.name.substring( elemNameBase.length );
  var otherElem = elem.form.elements[otherElemName];

  if( elemNameBase == "editStart" )
  {
    var startDate    = getDateFromForm( elem.form, "editStart" );
    var oldStartDate = getDateFromForm( elem.form, "editStart", true );
    var endDate      = getDateFromForm( elem.form, "editEnd" );

    endDate = new Date( endDate.valueOf() + ( startDate - oldStartDate ) );

    setDateForm( elem.form, "editEnd", endDate )
  }
  else
  {
    ensureDatesDontCross( elem );
  }

  elem.oldSelectedIndex      = elem.selectedIndex;
  otherElem.oldSelectedIndex = otherElem.selectedIndex;
}

function validateTimes( elem, elemNameBase )
{
  var otherElemNameBase = "editStart";

  if( elemNameBase == "editStart" )
  {
    otherElemNameBase = "editEnd";
  }

  var otherElemName = otherElemNameBase + elem.name.substring( elemNameBase.length );
  var otherElem = elem.form.elements[otherElemName];

  if( elemNameBase == "editStart" )
  {
    var startDate    = getDateFromForm( elem.form, "editStart" );
    var oldStartDate = getDateFromForm( elem.form, "editStart", true );
    var endDate      = getDateFromForm( elem.form, "editEnd" );

    endDate = new Date( endDate.valueOf() + ( startDate - oldStartDate ) );

    setDateForm( elem.form, "editEnd", endDate )
  }
  else
  {
    ensureTimesDontCross( elem.form );
  }

  elem.oldSelectedIndex      = elem.selectedIndex;
  otherElem.oldSelectedIndex = otherElem.selectedIndex;
}

function ensureDatesDontCross( elem )
{
  var startDate = getDateFromForm( elem.form, "editStart" );
  var endDate   = getDateFromForm( elem.form, "editEnd" );

  if( startDate - endDate > 0 )
  {
    if( elem.name.toLowerCase().indexOf("month") == -1 && endDate.getDate() < startDate.getDate() && endDate.getFullYear() <= startDate.getFullYear() )
    {
      endDate.setMonth( (startDate.getMonth()<11?startDate.getMonth()+1:1) );
    }
    if( startDate - endDate > 0 && endDate.getFullYear() <= startDate.getFullYear() )
    {
      endDate.setYear( startDate.getFullYear()+1 );
    }
    setDateForm( elem.form, "editEnd", endDate )
  }
}

function ensureTimesDontCross( theForm )
{
  var startDate = getDateFromForm( theForm, "editStart" );
  var endDate   = getDateFromForm( theForm, "editEnd" );

  if( startDate - endDate > 0 )
  {
    startDate.setHours( endDate.getHours() );
    startDate.setMinutes( endDate.getMinutes() );

    setDateForm( theForm, "editStart", startDate )
  }
}

function viewAddressForm()
{
  popTmpl( "entry2", "addressDetails", true, "Add address details", null, clearAddressForm );
  //var editPane     = getElt( "editPane" );
  //var addressLayer = getElt( "addressDetails" );
  //
  //if( addressLayer != null )
  //{
  //  addressLayer.style.top  = getlayertop(  "editPane" ) + ( ( getlayerheight( "editPane" ) - getlayerheight( "addressDetails" ) ) / 2 ) + "px";
  //  addressLayer.style.left = getlayerleft( "editPane" ) + ( ( getlayerwidth(  "editPane" ) - getlayerwidth(  "addressDetails" ) ) / 2 ) + "px";
  //
  //  backLayer( addressLayer );
  //
  //  addressLayer.style.visibility = "";
  //}
}

function hideAddressForm()
{
  closeTmpl( "entry2" );
  //var addressLayer = getElt( "addressDetails" );
  //
  //if( addressLayer != null )
  //{
  //  unbackLayer( addressLayer );
  //
  //  addressLayer.style.visibility = "hidden";
  //}
}

function cancelAddressForm()
{
  closeTmpl( "entry2", clearAddressForm );
}
function clearAddressForm()
{
  var itmForm = getElt( "itemEditForm" );

  itmForm.elements['address1'].value = "";
  itmForm.elements['address2'].value = "";
  itmForm.elements['postcode'].value = "";
  itmForm.elements['telephone1'].value = "";
  itmForm.elements['telephone2'].value = "";
  itmForm.elements['fax'].value = "";
  itmForm.elements['wireless'].checked = false;
  itmForm.elements['comments'].value = "";
}