var calendarUtil = new Object ();

calendarUtil.listMonthNameEnglish = ["January","February","March","April","May","June","July","August","September","October","November","December"]; 
calendarUtil.listMonthNameFrench = ["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"]  ;

calendarUtil.createMonthRow = function ( calendarDate ,language_id)
{
  var calendarMonthRow = document.createElement ( "TR" );
  var calendarMonthColumn = document.createElement ( "TD" );
  calendarMonthColumn.height = "25";
  calendarMonthColumn.colSpan = "7";
  calendarMonthColumn.align = "left";
  calendarMonthColumn.style.backgroundColor = "#FFFFFF";
  calendarMonthColumn.className = "Bluetext";
  var calendarMonthColumnText = document.createElement ( "STRONG" );
  if(language_id == 2){
    calendarMonthColumnText.appendChild ( document.createTextNode ( calendarUtil.listMonthNameFrench[calendarDate.getMonth()] + " " + calendarDate.getFullYear() ) );
  }else{
    calendarMonthColumnText.appendChild ( document.createTextNode ( calendarUtil.listMonthNameEnglish[calendarDate.getMonth()] + " " + calendarDate.getFullYear() ) );
  }
  calendarMonthColumn.appendChild ( calendarMonthColumnText );
  calendarMonthRow.appendChild ( calendarMonthColumn );
  
  return calendarMonthRow;
}

calendarUtil.createDayColumn = function ( dayLabel )
{
  var calendarDayColumn = document.createElement ( "TD" );
  calendarDayColumn.align = "center";
  calendarDayColumn.style.backgroundColor = "#FFFFFF";
  calendarDayColumn.className = "Bluetext";
  calendarDayColumn.appendChild ( document.createTextNode ( dayLabel ) );
  
  return calendarDayColumn;
}

calendarUtil.createSeparaterRow = function ()
{
  var separaterRow = document.createElement ( "TR" );
  var separaterColumn = document.createElement ( "TD" );
  separaterColumn.height = "5";
  separaterColumn.colSpan = "7";
  separaterColumn.align = "center";
  separaterColumn.className = "Bluetext";
  separaterRow.appendChild ( separaterColumn );
  
  return separaterRow;
}

calendarUtil.createDateRow = function ( calendarDate, rowNo, mapOccurrenceDate )
{
  var tmpDate = new Date ( calendarDate.getTime () );
  tmpDate.setDate ( 1 );
  tmpDate.setDate ( tmpDate.getDate () + (rowNo*7) );
  
  var calendarDateRow = document.createElement ( "TR" );
  for ( var i = 0; i < 7; i++ )
  {
    var calendarDateColumn = document.createElement ( "TD" );
    calendarDateColumn.align = "center";
    calendarDateColumn.style.backgroundColor = ( (rowNo % 2) == 0 ) ? "#E3F1F6" : "#FFFFFF";
    calendarDateColumn.className = "Bluetext";
    
    var pivotDay = tmpDate.getDay ();
    var loopDate = new Date ( tmpDate.getTime () );
    loopDate.setDate ( loopDate.getDate () - pivotDay + i );
    
    if ( loopDate.getMonth () == calendarDate.getMonth () )
    {
      calendarDateColumn.appendChild ( document.createTextNode ( new String ( loopDate.getDate () ) ) );
      calendarDateColumn.id = "dateColumn" + loopDate.getDate ();
    }
    else
    {
      var blankDiv = document.createElement ( "DIV" );
      blankDiv.style.height = "13px";
      calendarDateColumn.appendChild ( blankDiv );
    }
    
    calendarDateRow.appendChild ( calendarDateColumn );
  }

  return calendarDateRow;
}

calendarUtil.createCalendarTableContainer = function ( calendarDate,language_id, mapOccurrenceDate )
{
  var calendarTable = document.createElement ( "TABLE" );
  calendarTable.width = "200px";
  calendarTable.cellPadding = "2";
  calendarTable.cellSpacing = "1";
  calendarTable.bgcolor = "#B7DBE8";
  
  var calendarTableBody = document.createElement ( "TBODY" );
  calendarTable.appendChild ( calendarTableBody );

  // Create Month Row
  calendarTableBody.appendChild ( calendarUtil.createMonthRow ( calendarDate,language_id ) );

  // Create Day Row
  var calendarDayRow = document.createElement ( "TR" );
  calendarDayRow.appendChild ( calendarUtil.createDayColumn ( "S" ) );
  calendarDayRow.appendChild ( calendarUtil.createDayColumn ( "M" ) );
  calendarDayRow.appendChild ( calendarUtil.createDayColumn ( "T" ) );
  calendarDayRow.appendChild ( calendarUtil.createDayColumn ( "W" ) );
  calendarDayRow.appendChild ( calendarUtil.createDayColumn ( "T" ) );
  calendarDayRow.appendChild ( calendarUtil.createDayColumn ( "F" ) );
  calendarDayRow.appendChild ( calendarUtil.createDayColumn ( "S" ) );
  calendarTableBody.appendChild ( calendarDayRow );
  
  // Create Separater Row
  calendarTableBody.appendChild ( calendarUtil.createSeparaterRow () );
  
  // Create Date Row
  for ( var i = 0; i < 6; i++ )
  {
    calendarTableBody.appendChild ( calendarUtil.createDateRow ( calendarDate, i, mapOccurrenceDate ) );
  }

  // Create Separater Row
  calendarTableBody.appendChild ( calendarUtil.createSeparaterRow () );

  return calendarTable;
} 
