// JavaScript include file for question response functions

// Declaring valid date character, minimum year and maximum year
var minYear = 1900;
var maxYear = 2100;

var checkFocus = true;
var IE = (document.all) ? 1 : 0;

// capture mouse movement for date picker pop up
if (document.addEventListener){
   document.addEventListener("mouseover", handlerMO, false); 
} else if (document.attachEvent){
   document.attachEvent("onmouseover", handlerMO);
} else {
   mx = 500;
   my = 400;
}

function getScrollYOffset() {
   var yOff = 0;
   if( typeof( window.pageYOffset ) == 'number' ) {
      yOff = window.pageYOffset;
   } else if(document.body && (document.body.scrollTop)) {
      yOff = document.body.scrollTop;
   } else if( document.documentElement && (document.documentElement.scrollTop)) {
      yOff = document.documentElement.scrollTop;
   }
   return yOff;
}

function handlerMO(e) {
   mx = (!IE) ? e.pageX : event.clientX;
   my = (!IE) ? e.pageY - getScrollYOffset() : event.clientY - getScrollYOffset();
}

function openDateEdit(elementId, dateFormat) {
   var argline;
   argline = '/include/datePicker.php?fieldId='+elementId+'&format='+dateFormat;
   props= 'toolbar=no,location=no,directories=no,status=no,scrollbars=no,resizable=no,copyhistory=no,width=150,height=175,top='+my+',left='+mx;
   mywin = window.open(argline, 'datePicker', props);
}
    
function daysInFebruary (year){
   return (((year % 4 == 0) && (!(year % 100 == 0) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n) {
   for (var i = 1; i <= n; i++) {
      if (i == 4 || i == 6 || i == 9 || i == 11) {
         this[i] = 30;
      } else if (i == 2) {
         this[i] = 29;
      } else {
         this[i] = 31;
      }
   } 
   return this;
}

function checkDate(dateField, dateFormat, dateSeparator){
   isValid = true;
   checkFocus = false;
   daysInMonth = DaysArray(12);
   
   dateStr = dateField.value;
   delPos1 = dateStr.indexOf(dateSeparator);
   delPos2 = dateStr.indexOf(dateSeparator, delPos1 + 1);
   
   switch (dateFormat.split(dateSeparator).join('')){
      case "ddmmyyyy":
         day = parseInt(dateStr.substring(0, delPos1),10);
         month = parseInt(dateStr.substring(delPos1 + 1, delPos2),10);
         year = parseInt(dateStr.substring(delPos2 + 1),10);
         break;
      case "mmmddyyyy":
         month = parseInt(dateStr.substring(0, delPos1),10);
         day = parseInt(dateStr.substring(delPos1 + 1, delPos2),10);
         year = parseInt(dateStr.substring(delPos2 + 1),10);
         break;
      default:
         year = parseInt(dateStr.substring(0, delPos1),10);
         month = parseInt(dateStr.substring(delPos1 + 1, delPos2),10);
         day = parseInt(dateStr.substring(delPos2 + 1),10);
   }
   
   errorMsg = "Please enter a valid date (" + dateFormat + ")";
   if (dateStr.split(' ').join('') == ''){
      isValid = true;
   } else if (delPos1 == -1 || delPos2 == -1){
      isValid = false;
   } else if (month < 1 || month > 12){
      errorMsg = "Invalid month. " + errorMsg;
      isValid = false;
   } else if (day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]){
      errorMsg = "Invalid day. " + errorMsg;
      isValid = false;
   } else if (year == 0 || year < minYear || year > maxYear){
      errorMsg = "Please enter a valid four digit year between " + minYear + " and " + maxYear;
      isValid = false;
   } else if (dateStr.indexOf(dateSeparator, (delPos2 + 1)) != -1 || isNaN(dateStr.split(dateSeparator).join(''))){
      isValid = false;
   }
   
   // update hidden input or return focus to the text box
   if (!isValid){
      alert(errorMsg);
      setTimeout(function(){if(dateField)dateField.focus();},10);
      dateField.value = '';
      document.getElementById('hidden'+dateField.id).value = '';
   } else if (dateStr == ''){
      document.getElementById('hidden'+dateField.id).value = '';
   } else if (dateStr.split(' ').join('') == ''){
      document.getElementById('hidden'+dateField.id).value = ' ';
   } else {
      if (day < 10){
         day = '0' + day;
      }
      if (month < 10){
         month = '0' + month;
      }
      document.getElementById('hidden'+dateField.id).value = year + '-' + month + '-' + day;
   }
   
   checkFocus = true;
}


