function outputDateControl(id, showClear) {
  $('#'+id).datepicker({ 
    yearRange: '-1:+1', 
    changeFirstDay: false,
    onClose: function(date) {
      setDateValue(id);
    },
    showButtonPanel: true,
    changeMonth: true,
	changeYear: true,
	dateFormat: 'dd/mm/yy',
	closeText: 'Close',
	defaultDate: null
   });      
  $('#'+id+'Button').bind('click', function() {
    $('#'+id).datepicker('show');
  });
  $('#'+id+'Button').show();
  if (undefined == showClear || showClear) {
    outputClearControl(id, 'dd/mm/yyyy');
  }
}

function outputClearControl(id, clearValue) {
  var clearControl = '<img src="/images/cleardate.gif" id="clearDate_'+id+'" onclick="resetDateControl(\''+id+'\',\''+clearValue+'\')"/>';
  var obj = $('#'+id+'Button');
  if (undefined == obj.attr('id')) {
    $('#'+id).after(clearControl);
  } else {
    $('#'+id+'Button').after(clearControl);
  }
}

function resetDateControl(id, value) {
  $('#'+id).val(value);
}

function setDateValue(id) {
  if ($('#'+id).val() == '') {
    $('#'+id).val('dd/mm/yyyy');
  }
}

// NOTE: Only supports the default date format of dd/MM/yyyy
function validateDate(date,required,todayOrGreater) {  // TODO: Add validation for today or greater date
  if (!required && (date == 'dd/mm/yyyy' || date == '')) {
    return true;
  }
  if (date == 'dd/mm/yyyy') {
    return false;
  }
  var dateArray = date.split('/');
  if (dateArray.length < 3 || dateArray.length > 3) {
    return false;
  } else if (dateArray.length == 3) {
    if (dateArray[0].length == 2 && dateArray[1].length == 2 && dateArray[2].length == 4) {
      return true;
    }
  }
  return false;
}

// NOTE: Only supports the date format of dd/MM/yyyy HH:mm
function validateDateTime(date,required,todayOrGreater) {  // TODO: Add validation for today or greater date
  if (!required && (date == 'dd/mm/yyyy hh:mm' || date == '')) {
    return true;
  }
  if (date == 'dd/mm/yyyy hh:mm') {
    return false;
  }
  var dateArray = date.split('/');
  if (dateArray.length < 3 || dateArray.length > 3) {
    return false;
  } else if (dateArray.length == 3) {
    if (dateArray[0].length == 2 && dateArray[1].length == 2 && dateArray[2].length == 10) {
      return true;
    }
  }
  return false;
}

function formatDate(date) {
  if (date == 'dd/mm/yyyy' || date == '') {
    return null;
  }
  
  var dateArray = date.split('/');
  if (dateArray.length < 3 || dateArray.length > 3) {
    return null;
  } else if (dateArray.length == 3) {
    if (dateArray[0].length == 2 && dateArray[1].length == 2 && dateArray[2].length == 4) {
      var d = new Date();
      return new Date(dateArray[2], dateArray[1]-1, dateArray[0]);
    }
  }
  return null;
}


function outputTimestampControl(id) {
	date_obj = new Date();
	date_obj_hours = date_obj.getHours();
	date_obj_mins = date_obj.getMinutes();
	date_obj_secs = date_obj.getSeconds();

	if (date_obj_mins < 10) { date_obj_mins = "0" + date_obj_mins; }
	if (date_obj_secs < 10) { date_obj_secs = "0" + date_obj_secs; }

	date_obj_time = "'"+date_obj_hours+":"+date_obj_mins+":"+date_obj_secs+"'";


  $('#'+id).datepicker({ 
    yearRange: '-1:+1', 
    changeFirstDay: 
    false, 
    dateFormat: $.datepicker.W3C + " " + date_obj_time,
    onClose: function(date) {
      setTimestampValue(id);
    },
    showButtonPanel: true,
    gotoCurrent: true,
    showCurrentAtPos: 3,
    closeText: 'Close',
    changeMonth: true,
	changeYear: true
   });      
  $('#'+id+'Button').bind('click', function() {
    $('#'+id).datepicker('show');
  });
  $('#'+id+'Button').show();
  outputClearControl(id, 'dd/mm/yyyy hh:mm:ss');
}

function setTimestampValue(id) {
  if ($('#'+id).val() == '') {
    $('#'+id).val('dd/mm/yyyy hh:mm:ss');
  }
}
