




 
var strGblID = null;
var selectedMonth;
var selectedYear;
var prevYear;
var tempSelectedMonth;
var selectedDate;

function changeDate(text)
{
	if(!isNaN(text.value) && parseInt(text.value)>0 && parseInt(text.value) < 10000)
	{
		var noYears=parseInt(text.value)-parseInt(new Date().getYear());
		var i=0;
		var date  = new Date();
		if (tempSelectedMonth != null ) {
			date = new Date(date.getYear(), tempSelectedMonth, 21);
		}
		i2uiShowDatePicker('datepicker_xyz123', date);
		if(noYears < 0)
		{
			noYears=-noYears;
			for(i=0;i < noYears;i++)
			{
				i2uiDatePickerPrevYear();
			}
		}
		else
		{	
			for(i=0;i < noYears;i++)
			{
				i2uiDatePickerNextYear();
			}
	
		}
		prevYear = text.value;
		if (selectedDate != null && selectedYear != null && selectedMonth != null) {
			var actualMonth = document.getElementById('monthHolder').value;
			var actualYear = document.getElementById('yearHolder').value;
			
			if (actualYear  == selectedYear && actualMonth==selectedMonth) {
				var anchors = document.body.getElementsByTagName("A");
				var len = anchors.length;
				var anchor;
				for (var aindex = 0; aindex < len ;aindex++) {
					anchor = anchors[aindex];
					if(anchor.innerText == selectedDate) {
						i2uiDatePickerSelect(anchor.parentNode.id,"null")
					}
				} 
				
			}
		}
	}
	else
	{
		displayMessage ('invalidyear', '1');
		if (prevYear != null) {
			text.value=prevYear;
		} else {
			text.value=new Date().getYear();
		}
	}

}

function init (strId)
{
	strGblID = strId;
    var refdate = null;
    var refdateStr = 'null';
    if (refdateStr != 'null')
    {
 	   var tmp = refdateStr.split('-');
       refdate = new Date(tmp[0], tmp[1], tmp[2]);
    }
    i2uiShowDatePicker('datepicker_xyz123', refdate);
    if (isDatePresent) {
	    var monthHolder=document.getElementById('monthHolder');
  	    var yearHolder=document.getElementById('yearHolder');
		var date = new Date();
		
		if (monthHolder !=null) {
			monthHolder.selectedIndex=date.getMonth();
		}
		
		if (yearHolder !=null) {
			yearHolder.value=date.getYear();
		}	
	}
}
 
 
var isYearPresent= true;
var isHourPresent= true;
var isMinPresent= true
var isSecPresent= true;
var isDatePresent = true;

function myOkHandler ()
{
	var date;
	var hour = 0;
	var min = 0;
	var sec= 0;
	/*
	if(i2uiDatePickerSelectedDate == null)	{
		displayMessage ('selectdate', '1');
	}
	else
	{	
		//document.getElementsByName(strGblID)[0].value = (i2uiDatePickerSelectedDate.getMonth()+1) + '/' + i2uiDatePickerSelectedDate.getDate() + '/' + i2uiDatePickerSelectedDate.getYear() + ' ';      	
		objTextBox.value = (i2uiDatePickerSelectedDate.getMonth()+1) + '/' + i2uiDatePickerSelectedDate.getDate() + '/' + i2uiDatePickerSelectedDate.getYear() + ' ';      	
  	    i2uiDatePickerClose(i2uiDatePickerSelectedDate);
  	}
  	*/
  	if(isDatePresent) {
 		if(i2uiDatePickerSelectedDate == null)	{ 		
			displayMessage ('ce.system.selectdate', '1');
			return;
		}
		else
		{	
			var actualMonth = document.getElementById('monthHolder').value;
			var actualYear = document.getElementById('yearHolder').value;
			if (actualYear  == selectedYear && actualMonth==selectedMonth) {
//				date = (i2uiDatePickerSelectedDate.getMonth()+1) + '/' + i2uiDatePickerSelectedDate.getDate() + '/' + i2uiDatePickerSelectedDate.getYear() + ' ';      	
				date = (i2uiDatePickerSelectedDate.getMonth()+1) + '/' + i2uiDatePickerSelectedDate.getDate() + '/' + i2uiDatePickerSelectedDate.getFullYear() + ' ';      	
			} else {
				displayMessage ('ce.system.selectdate', '1');
				return;	
			}
		}
	} else {
		var now = new Date();
		date = (now.getMonth()+1) + '/' + now.getDate() + '/' + now.getYear() + ' ';      	
	}
	if(isHourPresent) {
		var hourId = document.getElementById('hour');
		if(hourId != null) {
			hour = hourId.value;
		}
	}
	
	if(isMinPresent) {
		var minId = document.getElementById('min');
		if(minId != null) {
			min = minId.value;
		}
	}
	
	if(isSecPresent) {
		var secId = document.getElementById('sec');
		if(secId != null) {
			sec = secId.value;
		}
	}
	var features = "height=1,width=1,status=no,toolbar=no,menubar=no,location=no,directories=no,resizable =no,scrollbars=yes,titlebar=no,top="+ (window.screenTop + 10) + ",left=" + (window.screenLeft + 10); 
	var url =context + "/system/datePicker.jsp?date=" + date + "&hours=" + hour + "&minutes=" + min + "&seconds=" + sec + "&datemask=" + dateMask + "&textBoxname=" + objTextBoxName;
	window.open(url,"_self",features);
}

function myCancelHandler ()
{
	i2uiDatePickerClose(null);
}
    
    
var i2uiDatePickerLocaleString = 'en_US';
var i2uiMonthNames = new Array('January',
                               'February',
                               'March',
                               'April',
                               'May',
                               'June',
                               'July',
                               'August',
                               'September',
                               'October',
                               'November',
                               'December ');

var i2uiMonthLengths = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

var i2uiDatePicker_x = 0;
var i2uiDatePicker_y = 0;
var i2uiDatePickerActiveId = null;
var i2uiDatePickerRefDate = null;
var i2uiDatePickerSelectedDate = null;
var i2uiDatePickerSelectedDateId = null;
var i2uiDatePickerToday = null;

var i2uiDatePickerIsIE = document.all != null;
var i2uiDatePickerIsNS4 = document.layers != null;
var i2uiDatePickerIsNS6 = ! i2uiDatePickerIsIE && ! i2uiDatePickerIsNS4;

var i2uiDatePickerSearchTables = new Object();
var i2uiDatePickerCalendarCellTable = new Object();

// ************************************************************************
// debug function - display an object's properties in an alert
var i2uiDatePickerMatchRegExp = /.*/;
function showProps (msg, object, matchRegExp)
{
  if (matchRegExp == null) matchRegExp = i2uiDatePickerMatchRegExp;
  var str = msg + ": matching " + matchRegExp + "\n\n";
  var ctr = 0;
  var namesPerRow = 3;

  if (object)
  {
    for (prop in object)
    {
      if (prop.search(matchRegExp) != -1)
      {
        str += prop + (ctr++ % namesPerRow == (namesPerRow-1) ? "\n" : " : ");
      }
    }
    if (ctr == 0) str += "none";
  }
  else
  {
    str += "null or undefined";
  }
  alert(str);
}

// ************************************************************************
//
function findChildWithId (element, childId)
{
  var retval = null;

  if (element.all)
  {
    retval = element.all[childId];
  }
  else
  {
    /*
    if (element.id == childId)
    {
      retval = element;
    }
    else
    {
      for (var i = 0; retval == null && i < element.childNodes.length; ++i)
      {
        retval = findChildWithId(element.childNodes[i], childId);
      }
    }
    */

    // use an iterative solution to speed up the process (?)
    var level = 1;
    var elementStack = new Array(128);
    var indexStack = new Array(128);

    // keep track of the current element and its index in its parent's childNodes list for each level
    elementStack[0] = element;
    indexStack[level] = 0;
    while (retval == null && level > 0)
    {
      if (indexStack[level] < elementStack[level-1].childNodes.length)
      {
        // check the next child node
        var child = elementStack[level-1].childNodes[indexStack[level]];
        if (child.id == childId)
        {
          // found it
          retval = child;
        }
        else
        {
          // search this child node's children
          elementStack[level] = child;
          ++indexStack[level];
          ++level;
          indexStack[level] = 0;
        }
      }
      if (indexStack[level] == elementStack[level-1].childNodes.length)
      {
        // no more child nodes so return to the previous level and continue searching its child nodes
        --level;
      }
    }
  }

  return retval;
}

// ************************************************************************
// Reference date object used to define the calendar display
function ReferenceDate(d, pBegin, pEnd, pMonth, pYear, nBegin, nEnd, nMonth, nYear)
{
  this.refDate = d;
  this.prevBegin = pBegin;
  this.prevEnd = pEnd;
  this.prevMonth = pMonth;
  this.prevYear = pYear;
  this.nextBegin = nBegin;
  this.nextEnd = nEnd;
  this.nextMonth = nMonth;
  this.nextYear = nYear;
}

// ************************************************************************
function i2uiIsEmbedded ()
{
  return mySelectionCallback != null && mySelectionCallback != "null";
}

// ************************************************************************
function i2uiDayClassName (date, month, year)
{
  var retval = "datePickerDay";

  if (i2uiIsSelectedDate(date, month, year))
  {
    retval = "datePickerDaySelected";
  }
  else if (i2uiIsToday(date, month, year))
  {
    retval = "datePickerDayToday";
  }
  else if (month == i2uiDatePickerRefDate.refDate.getMonth())
  {
    retval = "datePickerDayThisMonth";
  }

  return retval;
}

// ************************************************************************
function i2uiMonthLength (month, year)
{
  var retval = i2uiMonthLengths[month];
  if (month == 1 && i2uiIsLeapYear(year)) retval = 29;

  return retval;
}

// ************************************************************************
function i2uiIsLeapYear (year)
{
  return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);;
}

// ************************************************************************
function i2uiIsSelectedDate (date, month, year)
{
  var retval = false;

  if (i2uiDatePickerSelectedDate != null)
  {
    retval = (date == i2uiDatePickerSelectedDate.getDate() &&
              month == i2uiDatePickerSelectedDate.getMonth() &&
              year == i2uiDatePickerSelectedDate.getFullYear());
  }

  return retval;
}

// ************************************************************************
function i2uiIsToday (date, month, year)
{
  return date == i2uiDatePickerToday.getDate() &&
         month == i2uiDatePickerToday.getMonth() &&
         year == i2uiDatePickerToday.getFullYear();
}

// ************************************************************************
function i2uiIsDisplayed (date, month, year)
{
  return (month == i2uiDatePickerRefDate.prevMonth &&
          year == i2uiDatePickerRefDate.prevYear &&
          date >= i2uiDatePickerRefDate.prevBegin) ||
         (month == i2uiDatePickerRefDate.refDate.getMonth() &&
          year == i2uiDatePickerRefDate.refDate.getFullYear()) ||
         (month == i2uiDatePickerRefDate.nextMonth &&
          year == i2uiDatePickerRefDate.nextYear &&
          date <= i2uiDatePickerRefDate.nextEnd);
}

// ************************************************************************
function i2uiSetDatePickerCoords(obj, e)
{
  var x, y;

  if (obj.clientLeft != null && obj.clientTop != null)
  {
    // this works for IE
    x = e.clientX + document.body.scrollLeft;
    y = e.clientY + document.body.scrollTop;
  }
  else if (obj.offsetLeft != null && obj.offsetTop != null)
  {
    // this works for NS 6
    // this is relative to owner not page coords
    x = obj.offsetLeft + obj.offsetWidth;
    y = obj.offsetTop + obj.offsetHeight;
  }
  else
  {
    // this works for NS 4
    // sorry - the best we can do is show it where the mouse event occured
    x = e.pageX;
    y = e.pageY;
  }

  i2uiSetDatePickerCoordsPrim(x, y);
}

// ************************************************************************
function i2uiSetDatePickerCoordsPrim(x, y)
{
  i2uiDatePicker_x = x;
  i2uiDatePicker_y = y;
}

// ************************************************************************
function i2uiHideDatePicker()
{
  if (i2uiDatePickerActiveId != null)
  {
    i2uiToggleItemVisibility(i2uiDatePickerActiveId, 'hide');

    i2uiDatePickerActiveId = null;
    i2uiDatePickerRefDate = null;
    i2uiDatePickerSelectedDate = null;
    i2uiDatePickerSelectedDateId = null;
    i2uiDatePickerToday = null;
  }
}

// ************************************************************************
function i2uiShowDatePicker(id, refDate)
{
  
  i2uiHideDatePicker();
  i2uiDatePickerActiveId = id;
  i2uiDatePickerToday = new Date();

  if (refDate && !isNaN(refDate.valueOf()))
  {
    if (! i2uiIsEmbedded())
    {
      // reference date is initally selected
      i2uiDatePickerSelectedDate = refDate;
    }
  }
  else
  {
    // no reference date so use today
    refDate = i2uiDatePickerToday;
  }

  var obj = null;
  if (i2uiDatePickerIsNS4)
  {
    obj = document.layers[id];
  }
  else
  {
 
	  
    obj =document.getElementById(id);
    
    // initialize the TD search table for this datepicker
    var tdTable = new Object();
    i2uiDatePickerSearchTables[i2uiDatePickerActiveId] = tdTable;
    var tds = obj.getElementsByTagName("TD");

    for (var i = 0; i < tds.length; ++i)
    {
      if (tds[i].id == "datePickerYearHeaderLabel" ||
          tds[i].id == "datePickerMonthHeaderLabel" ||
          tds[i].id.indexOf("cell") == 0)
      {
        tdTable[tds[i].id] = tds[i];
      }
    }
  }
  i2uiUpdateDatePicker(refDate);

  if (obj != null &&
      i2uiDatePicker_x != null &&
      i2uiDatePicker_y != null)
  {
   

 	i2uiKeepMenuInWindow(obj, i2uiDatePicker_x, i2uiDatePicker_y, id);

  }
}


function createDatePicker(textBoxName, mask)
{
	var left=window.event.x;
	var top=window.event.y;
	var features = "height=200,width=330,status=no,toolbar=no,menubar=no,location=no,directories=no,resizable =no,scrollbars=no,titlebar=no,top="+ top + ",left=" + left; 
	var url =context + "/system/datePicker.jsp?name=" + textBoxName ;
	if (mask != null && mask!="null") {
		url  = url +"&datemask=" + mask ;
	}
	objWin = window.open(url,"_blank",features);
}


// ************************************************************************
function i2uiUpdateDatePicker(d)
{
	//alert(d);
  var startDate;

  // extract what we need from the reference date
  var refDay = d.getDay(); // 0..6
  var refDate = d.getDate();  // 1..31
  var refMonth = d.getMonth(); // 0..11
  var refYear = d.getFullYear(); // yyyy
  tempSelectedMonth = refMonth;	
  // determine the preceding and following months and years
  var prevYear = refYear;
  var prevMonth = refMonth - 1;
  if (prevMonth == -1)
  {
    --prevYear;
    prevMonth = 11;
  }
  var nextYear = refYear;
  var nextMonth = refMonth + 1;
  if (nextMonth == 12)
  {
    ++nextYear;
    nextMonth = 0;
  }

  // what day is the 1st of the reference month on?
  var dayOfFirst = refDay - ((refDate - 1) % 7);
  if (dayOfFirst < 0) dayOfFirst += 7;

  // what date do we actually start with?
  var lastDate = i2uiMonthLength(prevMonth, refYear);
  startDate = lastDate - dayOfFirst + 1;
  if (dayOfFirst < 3) startDate -= 7;

  // we need this for the ReferenceDate
  var endOfMonth = i2uiMonthLength(refMonth, refYear);
  var nextEnd = 42 - ((lastDate - startDate + 1) + endOfMonth)

  // capture the reference date data
  i2uiDatePickerRefDate = new ReferenceDate(d, startDate, lastDate, prevMonth, prevYear, 1, nextEnd, nextMonth, nextYear);

  // update the year header label
  var obj = null;
  if (i2uiDatePickerIsNS4)
  {
    obj = document.layers[i2uiDatePickerActiveId].layers["datePickerYearHeaderLabel"];
    //showProps("date picker year header label", obj);
    obj.document.open();
    obj.document.write('<DIV CLASS="datePickerHeaderLabelNS4">'+refYear+'</DIV>');
    obj.document.close();
  }
  else
  {

    var tdTable = i2uiDatePickerSearchTables[i2uiDatePickerActiveId];
    obj = tdTable["datePickerYearHeaderLabel"];
   //    obj.innerHTML = refYear;
  }

  // update the month header label
  if (i2uiDatePickerIsNS4)
  {
    obj = document.layers[i2uiDatePickerActiveId].layers["datePickerMonthHeaderLabel"];
    //showProps("date picker year header label", obj);
    obj.document.open();
    obj.document.write('<DIV CLASS="datePickerHeaderLabelNS4">'+i2uiMonthNames[refMonth]+'</DIV>');
    obj.document.close();
  }
  else
  {

     var tdTable = i2uiDatePickerSearchTables[i2uiDatePickerActiveId];
     obj = tdTable["datePickerMonthHeaderLabel"];
//    obj.innerHTML = i2uiMonthNames[refMonth];
  }


	obj = tdTable["datePickerYearHeaderLabel"];
    if(obj==null) return;
	obj.innerHTML = i2uiMonthNames[refMonth] + " "+refYear;
	
  // update the calendar
  var date = startDate;
  var month = prevMonth;
  var year = prevYear;
  var className = null;
  var id = null;
  var startCount = false;
  var tempId;	
  var tempClassName;
   	
  for (w = 0; w < 6; ++w)
  {
    for (dow = 0; dow < 7; ++dow)
    {
      className = i2uiDayClassName(date, month, year);
      id = "cell" + w + dow;
      // if the selected date is still being displayed, capture its new id
      if (className == "datePickerDaySelected")
      {
        i2uiDatePickerSelectedDateId = id;
      }

      // capture the date in the cell
      if (i2uiDatePickerCalendarCellTable[id] == null)
      {
        i2uiDatePickerCalendarCellTable[id] = new Array(date, month, year);
      }
      else
      {
        i2uiDatePickerCalendarCellTable[id][0] = date;
        i2uiDatePickerCalendarCellTable[id][1] = month
        i2uiDatePickerCalendarCellTable[id][2] = year;
      }

      // render the cell
      if (i2uiDatePickerIsNS4)
      {
        obj = document.layers[i2uiDatePickerActiveId].layers[id];
        //showProps("calendar date object for "+id, obj);
        obj.document.open();
        obj.document.write("<DIV CLASS=\""+className+"NS4\">"+
                           "<A HREF='javascript:void i2uiDatePickerSelect(\"" + id + "\",\"" + mySelectionCallback + "\")'>" +
                           date +
                           "</A></DIV>");
        obj.document.close();
      }
      else
      {
        var tdTable = i2uiDatePickerSearchTables[i2uiDatePickerActiveId];
        obj = tdTable[id];
        obj.className = className;
        if (className == "datePickerDaySelected") {
        	tempId = id;
        	tempClassName = className;
        }
        
        // retrieve the <A> child
        var found = false;
        var childIdx = 0;
        for (; !found && childIdx < obj.childNodes.length; ++childIdx)
        {
          found = (obj.childNodes[childIdx].tagName != null && obj.childNodes[childIdx].tagName == "A");
        }
		
		if(date == 1)
		{
			startCount=!startCount;
		}

        // set the cell's date string
        if (found)
        {
          --childIdx;
          if(date >=1 && date <=31 && startCount) 
          {
          	obj.childNodes[childIdx].innerHTML = date;
          } 
          else
          {
          	obj.childNodes[childIdx].innerHTML = "";
          }
        }
      }

      // update the date
      if (date == lastDate)
      {
        date = 1;
        ++month;
        if (month == 12)
        {
          month = 0;
          ++year;
        }
        lastDate = i2uiMonthLength(month, year);
      }
      else
      {
        ++date;
      }
    }
       	
  }
  	document.getElementById('year').value= refYear;
  	
  	if (selectedDate != null && selectedYear != null && selectedMonth != null) {
			var actualMonth = document.getElementById('monthHolder').value;
			var actualYear = document.getElementById('yearHolder').value;
			
			if (actualYear  == selectedYear && actualMonth==selectedMonth) {
				var anchors = document.body.getElementsByTagName("A");
				var len = anchors.length;
				var anchor;
				for (var aindex = 0; aindex < len ;aindex++) {
					anchor = anchors[aindex];
					if(anchor.innerText == selectedDate) {
						i2uiDatePickerSelect(anchor.parentNode.id,"null")
					}
				} 
				
			}
	}
	
	if (tempId == null) {
		return;
	}
	
	tdTable = i2uiDatePickerSearchTables[i2uiDatePickerActiveId];
    obj = tdTable[tempId];
	if (tempClassName != null && tempClassName == "datePickerDaySelected") {
		if (obj.childNodes(0).nodeName=="A" 
	    	&& obj.childNodes(0).innerText=="") {
    			obj.className = "datePickerDay";    	
        }
    }
}

// ************************************************************************
function i2uiSetDatePickerToday()
{
  if (i2uiDatePickerActiveId != null)
  {

    
    var monthHolder=document.getElementById("monthHolder");
    var yearHolder=document.getElementById("yearHolder");
	var date = new Date();
	monthHolder.selectedIndex=date.getMonth();
	yearHolder.value=date.getYear();
	i2uiUpdateDatePicker(i2uiDatePickerToday);
	
  }
    
}

// ************************************************************************
function i2uiDatePickerOk(callback)
{
  eval(callback+"(i2uiDatePickerActiveId,i2uiDatePickerSelectedDate)");
  //i2uiHideDatePicker();
}

// ************************************************************************
function i2uiDatePickerCancel(callback)
{
  if (callback != null && callback != '' && callback != 'null')
  {
    eval(callback+"(i2uiDatePickerActiveId)");
  }
  i2uiHideDatePicker();
}

// ************************************************************************
function i2uiDatePickerPrevYear()
{
  if (i2uiDatePickerActiveId != null &&
      i2uiDatePickerRefDate != null)
  {
    var date = i2uiDatePickerRefDate.refDate.getDate();  // 1..31
    var month = i2uiDatePickerRefDate.refDate.getMonth(); // 0..11
    var year = i2uiDatePickerRefDate.refDate.getFullYear(); // yyyy
    i2uiUpdateDatePicker(new Date(year-1, month, date));
  }
}

// ************************************************************************
function i2uiDatePickerNextYear()
{
  if (i2uiDatePickerActiveId != null &&
      i2uiDatePickerRefDate != null)
  {
    var date = i2uiDatePickerRefDate.refDate.getDate();  // 1..31
    var month = i2uiDatePickerRefDate.refDate.getMonth(); // 0..11
    var year = i2uiDatePickerRefDate.refDate.getFullYear(); // yyyy
    i2uiUpdateDatePicker(new Date(year+1, month, date));
  }
}

// ************************************************************************
function i2uiDatePickerPrevMonth()
{
  if (i2uiDatePickerActiveId != null &&
      i2uiDatePickerRefDate != null)
  {
    var date = i2uiDatePickerRefDate.refDate.getDate();  // 1..31
    var month = i2uiDatePickerRefDate.refDate.getMonth(); // 0..11
    var year = i2uiDatePickerRefDate.refDate.getFullYear(); // yyyy
	tempSelectedMonth = month;

    --month;
    if (month == 1)
    {
      // Feb
      if (date > 28)
      {
        date = i2uiIsLeapYear(year) ? 29 : 28;
      }
    }
    else if (month == 3 ||
             month == 5 ||
             month == 8 ||
             month == 10)
    {
      // Apr, Jun, Sep, Nov
      if (date == 31)
      {
        date = 30;
      }
    }
    else if (month == -1)
    {
      // last year
      month = 11; // Dec
      --year;
    }
    i2uiUpdateDatePicker(new Date(year, month, date));
  }
}

// ************************************************************************
function i2uiDatePickerNextMonth()
{
  if (i2uiDatePickerActiveId != null &&
      i2uiDatePickerRefDate != null)
  {
    var date = i2uiDatePickerRefDate.refDate.getDate();  // 1..31
    var month = i2uiDatePickerRefDate.refDate.getMonth(); // 0..11
    var year = i2uiDatePickerRefDate.refDate.getFullYear(); // yyyy
	tempSelectedMonth = month;

    ++month;
    if (month == 1)
    {
      // Feb
      if (date > 28)
      {
        date = i2uiIsLeapYear(year) ? 29 : 28;
      }
    }
    else if (month == 3 ||
             month == 5 ||
             month == 8 ||
             month == 10)
    {
      // Apr, Jun, Sep, Nov
      if (date == 31)
      {
        date = 30;
      }
    }
    else if (month == 12)
    {
      // next year
      month = 0; // Jan
      ++year;
    }
    i2uiUpdateDatePicker(new Date(year, month, date));
  }
}

// ************************************************************************
function i2uiDatePickerSelect(cellId, embeddedCallback)
{

  if (i2uiDatePickerActiveId != null)
  {
    // the CalendarCellTable entry format is day|month|year
    var data = i2uiDatePickerCalendarCellTable[cellId];
    var obj = null;

    // do nothing if the selection is selected
    if (! i2uiIsSelectedDate(data[0], data[1], data[2]))
    {
      // unselect the previous selection
      if (i2uiDatePickerSelectedDate != null &&
          i2uiIsDisplayed(i2uiDatePickerSelectedDate.getDate(),
                          i2uiDatePickerSelectedDate.getMonth(),
                          i2uiDatePickerSelectedDate.getFullYear()))
      {
        var d = i2uiDatePickerSelectedDate;
        var id = i2uiDatePickerSelectedDateId;
        i2uiDatePickerSelectedDate = null;
        i2uiDatePickerSelectedDateId = null;
        if (i2uiDatePickerIsNS4)
        {
          obj = document.layers[i2uiDatePickerActiveId].layers[id];
          obj.document.open();
          obj.document.write("<DIV CLASS=\"" + i2uiDayClassName(d.getDate(), d.getMonth(), d.getFullYear()) + "NS4\">"+
                             "<A HREF='javascript:void i2uiDatePickerSelect(\"" + cellId + "\")'>" +
                             d.getDate() +
                             "</A></DIV>");
          obj.document.close();
        }
        else
        {
          var tdTable = i2uiDatePickerSearchTables[i2uiDatePickerActiveId];
          obj = tdTable[id];
          obj.className = i2uiDayClassName(d.getDate(), d.getMonth(), d.getFullYear());
        }
      }
		
      i2uiDatePickerSelectedDate = new Date(data[2], data[1], data[0]);
      selectedMonth = i2uiDatePickerSelectedDate.getMonth();
//	  selectedYear = i2uiDatePickerSelectedDate.getYear();
	  selectedYear = i2uiDatePickerSelectedDate.getFullYear();
	  selectedDate = i2uiDatePickerSelectedDate.getDate();
      i2uiDatePickerSelectedDateId = cellId;
      if (i2uiDatePickerIsNS4)
      {
        obj = document.layers[i2uiDatePickerActiveId].layers[cellId];
        obj.document.open();
        obj.document.write("<DIV CLASS=\"datePickerDaySelectedNS4\">"+
                           "<A HREF='javascript:void i2uiDatePickerSelect(\"" + cellId + "\")'>" +
                           data[0] +
                           "</A></DIV>");
        obj.document.close();
      }
      else
      {
        var tdTable = i2uiDatePickerSearchTables[i2uiDatePickerActiveId];
        obj = tdTable[cellId];
        obj.className = "datePickerDaySelected";
      }
    }
    // call the embedded callback even if the same date is reselected
    if (embeddedCallback != null && embeddedCallback != "null" && i2uiDatePickerSelectedDate != null)
    {
      eval(embeddedCallback+"(i2uiDatePickerActiveId,i2uiDatePickerSelectedDate)");
    }
  }
}



