var xmlhttp;
var response;
var outError;

function validateUser(id,psw) {

  var id;
  var psw;

  xmlhttp=GetXmlHttpObject();

  if (xmlhttp==null) {
    alert ("Your browser does not support AJAX!");
    return;
  }

  var url="getPupil.php" + "?id=" + id + "&psw=" + psw;
  xmlhttp.open("GET",url,false);  
  xmlhttp.send(null);

  response=xmlhttp.responseText;
//  if (psw != "") {
    document.getElementById("errorInfo").innerHTML=xmlhttp.responseText;
//  }

  if (response == "Invalid User ") {
    return false;
  }
  if (response == "Invalid Password ") {
    return false;  
  }

  return true;
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
  {
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}

function validateRequest() {

// Validate Id

  if (validateUser(document.requestLesson.id.value,"ignore")==false) {
    document.getElementById("errorInfo").innerHTML="Invalid Id";
    document.requestLesson.id.select();
    document.requestLesson.id.focus();
    return false ;
  }
  
// Validate Date

  outError=valDate(document.requestLesson.reqdDate.value,outError);
  if (outError != "") {
      document.getElementById("errorInfo").innerHTML=outError;
      document.requestLesson.reqdDate.select();
      document.requestLesson.reqdDate.focus();
      return false;
  }

// Validate Time

  if ((document.requestLesson.reqdTime.value < 700) || (document.requestLesson.reqdTime.value > 2000)) {
      document.getElementById("errorInfo").innerHTML="Invalid Time";
      document.requestLesson.reqdTime.select();
      document.requestLesson.reqdTime.focus();
      return false;
   }
 
// Validate Duration

  if (document.requestLesson.reqdDurn.value < "1  ") {
    document.getElementById("errorInfo").innerHTML="Lessons less than one hour are not available" ;
    document.requestLesson.reqdDurn.select();
    document.requestLesson.reqdDurn.focus();
    return false ;
  }

  if (document.requestLesson.reqdDurn.value != "1  "
  && document.requestLesson.reqdDurn.value != "1.5"
  && document.requestLesson.reqdDurn.value != "2  "
  && document.requestLesson.reqdDurn.value != "2.5"
  && document.requestLesson.reqdDurn.value != "3  ") {
    document.getElementById("errorInfo").innerHTML="Lessons must be 1, 1.5, 2, 2.5 or 3 hours in length" ;
    document.requestLesson.reqdDurn.select();
    document.requestLesson.reqdDurn.focus();
    return false ;
  }

  if (document.requestLesson.reqdDurn.value > "3  ") {
    document.getElementById("errorInfo").innerHTML="Lessons longer than 3 hours are not available" ;
    document.requestLesson.reqdDurn.select();
    document.requestLesson.reqdDurn.focus();
    return false ;
  }
  
// Check to see if the date/time is available

  checkDate(document.requestLesson.reqdDate.value,document.requestLesson.reqdTime.value,document.requestLesson.reqdDurn.value) ;

  if (response != "Available") {
    document.getElementById("errorInfo").innerHTML="Requested Date/Time not available - Sorry" ;
    return false ;
  }

return true;
}

function validateEvaluation() {

// Function used by the Evaluation request process to validate the form

// Validate Email - must not be blank, must contain @ and email 1 must match email 2

  var email1=document.requestEvaluation.email.value;
  var email2=document.requestEvaluation.email2.value;
  var phone=document.requestEvaluation.phone.value;

  if ((email1 == "") || (email2 == " " )){
    document.getElementById("errorInfo").innerHTML="Email address is blank" ;
    document.requestEvaluation.email.select();
    document.requestEvaluation.email.focus();
    return false ;
  }

  if (email1.match("@") != "@"){
    document.getElementById("errorInfo").innerHTML="Email address is incorrect format" ;
    document.requestEvaluation.email.select();
    document.requestEvaluation.email.focus();
    return false ;
  }

  if (email1 != email2) {
    document.getElementById("errorInfo").innerHTML="Email addresses don't match" ;
    document.requestEvaluation.email.select();
    document.requestEvaluation.email.focus();
    return false ;
  }
 
// Validate Contact

  if ((phone == "") || (phone == " " )){
    document.getElementById("errorInfo").innerHTML="No Contact Number Entered" ;
    document.requestEvaluation.phone.select();
    document.requestEvaluation.phone.focus();
    return false ;
  }

// Validate Date

  outError=valDate(document.requestEvaluation.reqdDate.value,outError);
  if (outError != "") {
      document.getElementById("errorInfo").innerHTML=outError;
      document.requestEvaluation.reqdDate.select();
      document.requestEvaluation.reqdDate.focus();
      return false;
  }

// Validate Time

  if ((document.requestEvaluation.reqdTime.value < 700) || (document.requestEvaluation.reqdTime.value > 2000)) {
      document.getElementById("errorInfo").innerHTML="Invalid Time";
      return false;
   }

return true;
}
function validateFirst() {

// Function used by the First Lesson request process to validate the form

  var name=document.requestFirst.name.value;
  var email1=document.requestFirst.email.value;
  var email2=document.requestFirst.email2.value;
  var phone=document.requestFirst.phone.value;

  if ((name == "") || (name == " " )){
    document.getElementById("errorInfo").innerHTML="Name is blank" ;
    document.requestFirst.name.select();
    document.requestFirst.name.focus();
    return false ;
  }

// Validate Email - must not be blank, must contain @ and email 1 must match email 2

  if ((email1 == "") || (email2 == "" )){
    document.getElementById("errorInfo").innerHTML="Email address is blank" ;
    document.requestFirst.email.select();
    document.requestFirst.email.focus();
    return false ;
  }

  if (email1.match("@") != "@"){
    document.getElementById("errorInfo").innerHTML="Email address is incorrect format" ;
    document.requestFirst.email.select();
    document.requestFirst.email.focus();
    return false ;
  }

  if (email1 != email2) {
    document.getElementById("errorInfo").innerHTML="Email addresses don't match" ;
    document.requestFirst.email.select();
    document.requestFirst.email.focus();
    document.requestFirst.email2.select();
    document.requestFirst.email2.focus();
    return false ;
  }
 
// Validate Contact

  if ((phone == "") || (phone == " " )){
    document.getElementById("errorInfo").innerHTML="No Contact Number Entered" ;
    document.requestFirst.phone.select();
    document.requestFirst.phone.focus();
    return false ;
  }

// Validate Date

  if ((document.requestFirst.reqdDate.value != "DDMMYY") && (document.requestFirst.reqdTime.value != "")
  &&  (document.requestFirst.reqdTime.value != "      ")) {

    outError=valDate(document.requestFirst.reqdDate.value,outError);
    if (outError != "") {
        document.getElementById("errorInfo").innerHTML=outError;
        document.requestFirst.reqdDate.select();
        document.requestFirst.reqdDate.focus();
        return false;
    }
  }

// Validate Time

  if ((document.requestFirst.reqdTime.value != "HHMM") && (document.requestFirst.reqdTime.value != "")
  &&  (document.requestFirst.reqdTime.value != "    ")) {
 
    if ((document.requestFirst.reqdTime.value < "0700") || (document.requestFirst.reqdTime.value > "2000")) {
      document.getElementById("errorInfo").innerHTML="Invalid Time";
      document.requestFirst.reqdTime.select();
      document.requestFirst.reqdTime.focus();
      return false;
    }
  }

return true;
}

function validateAssessment() {

// Function used by the Assessment Lesson request process to validate the form

// Validate Email - must not be blank, must contain @ and email 1 must match email 2

  var email1=document.requestAssessment.email.value;
  var email2=document.requestAssessment.email2.value;
  var phone=document.requestAssessment.phone.value;

  if ((email1 == "") || (email2 == "" )){
    document.getElementById("errorInfo").innerHTML="Email address is blank" ;
    document.requestAssessment.email.select();
    document.requestAssessment.email.focus();
    return false ;
  }

  if (email1.match("@") != "@"){
    document.getElementById("errorInfo").innerHTML="Email address is incorrect format" ;
    document.requestAssessment.email.select();
    document.requestAssessment.email.focus();
    return false ;
  }

  if (email1 != email2) {
    document.getElementById("errorInfo").innerHTML="Email addresses don't match" ;
    document.requestAssessment.email.select();
    document.requestAssessment.email.focus();
    return false ;
  }
 
// Validate Contact

  if ((phone == "") || (phone == " " )){
    document.getElementById("errorInfo").innerHTML="No Contact Number Entered" ;
    document.requestAssessment.phone.select();
    document.requestAssessment.phone.focus();
    return false ;
  }

// Validate Date

  if ((document.requestAssessment.reqdDate.value != "") &&  (document.requestAssessment.reqdDate.value != "      ")) {

    outError=valDate(document.requestAssessment.reqdDate.value,outError);

    if (outError != "") {
        document.getElementById("errorInfo").innerHTML=outError;
        document.requestAssessment.reqdDate.select();
        document.requestAssessment.reqdDate.focus();
        return false;
    }
  }

// Validate Time

  if ((document.requestAssessment.reqdTime.value != "") &&  (document.requestAssessment.reqdTime.value != "    ")) {

    if ((document.requestAssessment.reqdTime.value < "0700") || (document.requestAssessment.reqdTime.value > "2000")) {
        document.getElementById("errorInfo").innerHTML="Invalid Time";
        document.requestAssessment.reqdTime.select();
        document.requestAssessment.reqdTime.focus();
        return false;
     }
   }
     
return true;
}

function validateContact() {

// Function used by the Assessment Lesson request process to validate the form

// Validate Email - must not be blank, must contain @ and email 1 must match email 2

  var email1=document.sendEmail.email.value;
  var email2=document.sendEmail.email2.value;
 
  if ((email1 == "") || (email2 == "" )){
    document.getElementById("errorInfo").innerHTML="Email address is blank" ;
    document.sendEmail.email.select();
    document.sendEmail.email.focus();
    return false ;
  }

  if (email1.match("@") != "@"){
    document.getElementById("errorInfo").innerHTML="Email address is incorrect format" ;
    document.sendEmail.email.select();
    document.sendEmail.email.focus();
    return false ;
  }

  if (email1 != email2) {
    document.getElementById("errorInfo").innerHTML="Email addresses don't match" ;
    document.sendEmail.email.select();
    document.sendEmail.email.focus();
    return false ;
  }
 
return true;
}

function newloadId(formName) {
  userId = location.search;
  idPos = userId.search("=");
  idPos = idPos + 1;
  Id = userId.substr(idPos);
  document[formName].id.value = Id;
  document[formName].reqdDate.focus();
}

function loadId() {
  userId = location.search;
  idPos = userId.search("=");
  idPos = idPos + 1;
  Id = userId.substr(idPos);
  document.requestLesson.id.value = Id;
  document.requestLesson.reqdDate.focus();
}

function valDate(DateValue,outError) {

  var checkstr = "0123456789";
  var Datevalue = "";
  var DateTemp = "";
  var seperator = "/";
  var day; 
  var month;
  var year;
  var leap = 0;
  var i;
  todate = new Date() ;
  today = todate.getDate();
  tomonth = todate.getMonth() ;
  tomonth = tomonth + 1;
  toyear = todate.getFullYear() ;
  var DateValue ;

  /* Remove any characters in the date except numbers */

  for (i = 0; i < DateValue.length; i++) {
    if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
	     DateTemp = DateTemp + DateValue.substr(i,1);
    }
  }

  DateValue = DateTemp;

  /* if year is entered as 2-digit, convert to 4-digit assuming 20xx */

  if (DateValue.length == 6) {
    DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2); 
  }

  if (DateValue.length != 8) {
    return "Date - Incorrect Length";
  }

  /* Validate the year */

  year = DateValue.substr(4,4);
  if (year == 0) {
    return "Invalid Year";
  }

  /* Validation of month*/

  month = DateValue.substr(2,2);
  if ((month < 1) || (month > 12)) {
    return "Invalid Month";
  }

   /* Validation of day*/

  day = DateValue.substr(0,2);
  if (day < 1) {
    return "Invalid Day";
  }

   /* Validation leap-year / february / day */

  if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
    leap = 1;
  }

  if ((month == 2) && (leap == 1) && (day > 29)) {
    return "Invalid Date - Leap Year";
  }

  if ((month == 2) && (leap != 1) && (day > 28)) {
    return "Invalid Date - Leap Year";
  }

  /* Validation of other months */

  if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
    return "Invalid Date - Days in Month";
  }

  if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
    return "Invalid Date - Days in Month";
  }

  return "";
}

/* Convert to upper case */

function caps(element){
  element.value = element.value.toUpperCase();
}

/* Convert date */

function convertDate(inDate, inFormat, outDate, outFormat){
  if (inFormat == 'YMD'){
    inCC = '00';
    inYY = inDate.substr(0,2);
    inMM = inDate.substr(2,2);
    inDD = inDate.substr(4,2);
    if (outFormat == 'DMY'){
      outDate = inDD.concat(inMM,inYY);
    }
    if (outFormat == 'DMCY'){
      outDate = inDD.concat(inMM,inCC,inYY);
    }
  }
  if (inFormat == 'DMY'){
  }
  if (inFormat == 'CYMD'){
    inCC = inDate.substr(0,2);
    inYY = inDate.substr(2,2);
    inMM = inDate.substr(4,2);
    inDD = inDate.substr(6,2);
    if (outFormat == 'DMY'){
      outDate = inDD.concat(inMM,inYY);
    }
    if (outFormat == 'DMCY'){
      outDate = inDD.concat(inMM,inCC,inYY);
    }
  }
}

function checkDate(reqdDate,reqdTime,reqdDurn) {
 
  var reqdDate;
  var reqdTime;
  var reqdDurn;

  xmlhttp=GetXmlHttpObject();
  if (xmlhttp==null) {
    alert ("Your browser does not support AJAX!");
    return;
  }

  var url="checkAvailability.php" + "?reqdDate=" + reqdDate + "&reqdTime=" + reqdTime + "&reqdDurn=" + reqdDurn;

  xmlhttp.open("GET",url,false);  
  xmlhttp.send(null);
  response=xmlhttp.responseText;

  if (response == "Available") {
    return false;
  }
  if (response == "Unavailable") {
    document.getElementById("errorInfo").innerHTML="Date/Time Requested is Unavailable - Sorry";
    return false;  
  }

  return true;
}

