function checkNumber(numIn){
	if(numIn == "")
	  return false;
	else
	  for(i=0;i<numIn.length;i++)
	    if(isNaN(numIn.substring(i,i+1)))
	      return false;
	return true;
}

function validYear(yearIn){
  if(!checkNumber(yearIn))
    return false;
  yearInt = parseInt(yearIn,10);
  if((yearInt <= 0) || (yearInt > 9999))
	  return false;
  if((yearInt < 50) && (yearIn.length == 2))
      yearInt += 2000;
  else if((yearInt < 100) && (yearIn.length == 2)) 
	  yearInt += 1900;
	return yearInt;
}

function validMonth(monthIn){
  if(!checkNumber(monthIn))
    return false;
  monthInt = parseInt(monthIn,10);
  if((monthInt <= 0) || (monthInt > 12))
	  return false;
	return monthInt;
}

function isLeapYear(yearStr){
//	A function to establish if a numeric value represents a leap year.
    var div4 = yearStr % 4;
    var div100 = yearStr % 100;
    var div400 = yearStr % 400;

    if (div4 != 0) {
      return false;  // if not divisible by 4, then it's not a leap year
		}
    if ((div100 == 0) && (div400 != 0)){
      return true; // If diviible by both 100 and 400 then it's not a leap year (i.e. 2000)
		}

    return false;  // otherwise return true.
  }

function validDay(dayIn,monIn,yearIn){
	if((dayIn < 1) || (dayIn > 31))
	  return false;  // If impossible day of month return false.
  switch(monIn){
    case 4,6,9,11:
      if(dayIn < 31)
        return parseInt(dayIn,10);
      else
        return false;
      break;
    case 2:
      maxDay = 28;
      if(isLeapYear(yearIn))
      	maxDay = 29;
      if(dayIn <= maxDay)
        return parseInt(dayIn,10);
      else
        return false;
      break;
		default:
      if(dayIn <= 31)
        return parseInt(dayIn,10);
      else
        return false;
  }
}

function appendZero(valIn){
	if(valIn< 10)
	  return "0" + valIn;
	else
	  return valIn;
}

function runCheck(dateIn){
  if(dateIn == "")
    return false;
  var i = 0;
  var sep1 = 0;
  var sep2 = 0;
  while((i < dateIn.length) && (!sep2)){
    if((dateIn.slice(i,i+1) == "/") || (dateIn.slice(i,i+1) == "-") || (dateIn.slice(i,i+1) == " "))
      if(!sep1)
				sep1 = i;
			else
			  sep2 = i;
		i++;
	}
	if((!sep2) || (sep2 == dateIn.length))
	  return false;
  var dayOfMonth = dateIn.substring(0,sep1);
  var monthOfYear = dateIn.substring(sep1+1,sep2);
  var year = dateIn.substring(sep2+1);
  if(!((year.length == 2) || (year.length == 4)))
    return false;
  year = validYear(year);
	if(!year)
	  return false;
	monthOfYear = validMonth(monthOfYear);
	if(!monthOfYear)
	  return false;
	dayOfMonth = validDay(dayOfMonth,monthOfYear,year);
	if(!dayOfMonth)
	  return false;
	return appendZero(dayOfMonth) + "/" + appendZero(monthOfYear) + "/" + year;
}

function checkDate(DateIn){
	DateIn = document.getElementById(DateIn);
	if(DateIn.value.length > 0){
		thisDate = runCheck(DateIn.value);
		if(!thisDate){
			alert("Invalid date format. Please re-enter in the DD/MM/YY or YYYY format");
			DateIn.focus();
			DateIn.select();
			return false;
		}
		else{
			DateIn.value = thisDate;
			return true;
		}
	}
	else
		return true;
	
}

function showAdvanced(alpha) {
	var elem = document.getElementById("basic_search");
	if ( elem.style.display != 'none' )
		elem.style.display = 'none';
	else
		elem.style.display = '';
		
	var elem = document.getElementById("advanced_search");
	if ( elem.style.display != 'none' )
		elem.style.display = 'none';
	else
		elem.style.display = '';
}

function switchComments(obj) {
var el = document.getElementById(obj);
if ( el.style.display != 'none' ) {
el.style.display = 'none';
}
else {
el.style.display = '';
}
}
