var datePickerDivID = "datepicker";
var iFrameDivID = "datepickeriframe";

var dayArrayShort = new Array('Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa');
var dayArrayMed = new Array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
var dayArrayLong = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var monthArrayShort = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
var monthArrayMed = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec');
var monthArrayLong = new Array('januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december');

var defaultDateSeparator = "/";        // common values would be "/" or "."
var defaultDateFormat = "dmy"    // valid values are "mdy", "dmy", and "ymd"
var dateSeparator = defaultDateSeparator;
var dateFormat = defaultDateFormat;
var ismain;
var gemeenteid;
var calendarelement = 'calendar';
var reportagelement = 'reportage'
var dtcalendar = 'dtcalendar';
var dtreportage = 'dtreportage';


function displayDatePicker(mainpage, gemeente, displayBelowThisObject, dtFormat, dtSep)
{
  ismain = mainpage;
  gemeenteid = gemeente;
 
  // if a date separator character was given, update the dateSeparator variable
  if (dtSep)
    dateSeparator = dtSep;
  else
    dateSeparator = defaultDateSeparator;
 
  // if a date format was given, update the dateFormat variable
  if (dtFormat)
    dateFormat = dtFormat;
  else
    dateFormat = defaultDateFormat;
 
  var x = 0;
  var y = 0;
 
 
	if (document.getElementById(dtcalendar))
	{
		caldt = document.getElementsByName(dtcalendar).item(0);
		drawDatePicker(caldt, x, y);
	}
	if (document.getElementById(dtreportage))
	{
		repdt = document.getElementsByName(dtreportage).item(0);
		drawDatePicker(repdt, x, y);
	}	

}

function drawDatePicker(targetDateField, x, y)
{
  var dt = getFieldDate(targetDateField.value );

 
  // draw the datepicker table
	if (document.getElementById(dtcalendar))
	{  
  		refreshDatePicker(calendarelement, targetDateField.name, dt.getFullYear(), dt.getMonth(), dt.getDate());
	}
	if (document.getElementById(dtreportage))
	{	
  		refreshDatePicker(reportagelement, targetDateField.name, dt.getFullYear(), dt.getMonth(), dt.getDate());
	}
}

function getDateString(dateVal)
{
  var dayString = "00" + dateVal.getDate();
  var monthString = "00" + (dateVal.getMonth()+1);
  dayString = dayString.substring(dayString.length - 2);
  monthString = monthString.substring(monthString.length - 2);
 
  switch (dateFormat) {
    case "dmy" :
      return dayString + dateSeparator + monthString + dateSeparator + dateVal.getFullYear();
    case "ymd" :
      return dateVal.getFullYear() + dateSeparator + monthString + dateSeparator + dayString;
    case "mdy" :
    default :
      return monthString + dateSeparator + dayString + dateSeparator + dateVal.getFullYear();
  }
}

function getFieldDate(dateString)
{
  var dateVal;
  var dArray;
  var d, m, y;
 
  try {
    dArray = splitDateString(dateString);
    if (dArray) {
      switch (dateFormat) {
        case "dmy" :
          d = parseInt(dArray[0], 10);
          m = parseInt(dArray[1], 10) - 1;
          y = parseInt(dArray[2], 10);
          break;
        case "ymd" :
          d = parseInt(dArray[2], 10);
          m = parseInt(dArray[1], 10) - 1;
          y = parseInt(dArray[0], 10);
          break;
        case "mdy" :
        default :
          d = parseInt(dArray[1], 10);
          m = parseInt(dArray[0], 10) - 1;
          y = parseInt(dArray[2], 10);
          break;
      }
      dateVal = new Date(y, m, d);
    } else if (dateString) {
      dateVal = new Date(dateString);
    } else {
      dateVal = new Date();
    }
  } catch(e) {
    dateVal = new Date();
  }
 
  return dateVal;
}

function splitDateString(dateString)
{
  var dArray;
  if (dateString.indexOf("/") >= 0)
    dArray = dateString.split("/");
  else if (dateString.indexOf(".") >= 0)
    dArray = dateString.split(".");
  else if (dateString.indexOf("-") >= 0)
    dArray = dateString.split("-");
  else if (dateString.indexOf("\\") >= 0)
    dArray = dateString.split("\\");
  else
    dArray = false;
 
  return dArray;
}

function refreshDatePicker(el,dateFieldName, year, month, day)
{
  // if no arguments are passed, use today's date; otherwise, month and year
  // are required (if a day is passed, it will be highlighted later)
  var thisDay = new Date();
 
  if ((month >= 0) && (year > 0)) {
    thisDay = new Date(year, month, 1);
  } else {
    day = thisDay.getDate();
    thisDay.setDate(1);
  }
 

  var html = '';

  getButtonCode(dateFieldName, thisDay, -1, "back");
  html += monthArrayLong[ thisDay.getMonth()] + " " + thisDay.getFullYear();
  getButtonCode(dateFieldName, thisDay, 1, "forward") ;

  document.getElementById(el+'month').innerHTML = html;
}


function getButtonCode(dateFieldName, dateVal, adjust, label)
{
  var newMonth = (dateVal.getMonth () + adjust) % 12;
  var newYear = dateVal.getFullYear() + parseInt((dateVal.getMonth() + adjust) / 12);
  if (newMonth < 0) {
    newMonth += 12;
    newYear += -1;
  }
  
	if (dateFieldName == "dtcalendar")
	{
	  document.getElementById(calendarelement+'month'+label).innerHTML = "<a class='"+label+"' title='"+label+"' href='#' onclick='refreshDatePicker(\""+calendarelement+"\",\"" + dateFieldName + "\", " + newYear + ", " + newMonth + ");getcalendar_reportage_content(\""+calendarelement+"\","+newMonth+","+newYear+","+ismain+","+gemeenteid+");return false'>"+label+"</a>";
	}
	if (dateFieldName == "dtreportage")
	{
	  document.getElementById(reportagelement+'month'+label).innerHTML = "<a class='"+label+"' title='"+label+"' href='#' onclick='refreshDatePicker(\""+reportagelement+"\",\"" + dateFieldName + "\", " + newYear + ", " + newMonth + ");getcalendar_reportage_content(\""+reportagelement+"\","+newMonth+","+newYear+","+ismain+","+gemeenteid+");return false'>"+label+"</a>";  
	}	  

}
