/*
 * These are some predefined glue listeners that you can
 *  modify to fit your application.
 *
 * This file should not placed in the /resources directory of your application
 * as that directory is for jmaki specific resources.
 */

// uncomment to turn on the logger
jmaki.debug = false;
// uncomment to show publish/subscribe messages
jmaki.debugGlue = false;

// map topic dojo/fisheye to fisheye handler
jmaki.subscribe("/dojo/fisheye*", function(args) {
  jmaki.log("glue.js : fisheye event");
});


// map topics ending with  /onSave to the handler
jmaki.subscribe("*onSave", function(args) {
  jmaki.log("glue.js : onSave request from: " + args.id + " value=" + args.value);
});

// map topics ending with  /onSave to the handler
jmaki.subscribe("*onSelect", function(args) {
  jmaki.log("glue.js : onSelect request from: " + args.widgetId);
});

// map topics ending with  /onSave to the handler
jmaki.subscribe("*onClick", function(args) {
  jmaki.log("glue.js : onClick request from: " + args.widgetId);
});

jmaki.subscribe("/nSpecies/*", function(args) {
  jmaki.log("glue.js : /nSpecies/onClick request from: " + args.widgetId);

  var speciesName = document.getElementById("speciesName").value;
  var spLocation = document.getElementById("spLocation").value;
  var gridRef = document.getElementById("gridRef").value;
  var extent = document.getElementById("extent").value;
  var emailAddress = document.getElementById("emailAddress").value;

  if ( (typeof emailAddress != 'undefined' ) && (emailAddress.indexOf("@") > 0) ) {
    // send data back to server
    jmaki.doAjax({
      method: "POST",
      url: "NotSpeciesServlet",
      content: {
        emailAddress: emailAddress,
        speciesName: speciesName,
        spLocation: spLocation,
        gridRef : gridRef,
        extent : extent
      },
      callback: function(_req) {
        jmaki.log("Back from Comobox Update: response is : " +  _req.responseText);

        alert(_req.responseText);
        document.getElementById("NotifiableSpeciesForm").reset();
      },
      onerror : function(m) {
        jmaki.log("Error updaing Combobox data");
      }
    });
  }
});

jmaki.subscribe("/contactForm/*", function(args) {

  alert("sending message.\nPlease wait ...");

  var emailAddress = document.getElementById("emailAddress").value;
  var subject = document.getElementById("subject").value;
  var message = document.getElementById("message").value;

  if ( typeof message != 'undefined' ) {
    // send data back to server
    jmaki.doAjax({
      method: "POST",
      url: "ContactServlet",
      content: {
        emailAddress: emailAddress,
        subject: subject,
        message: message
      },
      callback: function(_req) {
        jmaki.log("Back from Comobox Update: response is : " +  _req.responseText);
        
        document.getElementById("emailAddress").value="";
        document.getElementById("subject").value="";
        document.getElementById("message").value="";
  
        document.getElementById("messResp").value=_req.responseText;
      },
      onerror : function(m) {
        jmaki.log("Error updaing Combobox data");
      }
    });
  }
});


jmaki.subscribe("/getGridRef/*", function(args) {

  var latitude = document.getElementById("incident.latitude").value;
  var longitude = document.getElementById("incident.longitude").value;

  if ( typeof latitude != 'undefined' ) {
    // send data back to server
    jmaki.doAjax({
      method: "POST",
      url: "GridRefServlet",
      content: {
        latitude : latitude,
        longitude: longitude
      },
      callback: function(_req) {
        jmaki.log("Back from Grid Ref Update: response is : " +  _req.responseText);

        document.getElementById("gridRefReq").value=_req.responseText;
        document.getElementById("gridRef").value=_req.responseText;
      },
      onerror : function(m) {
        jmaki.log("Error updaing Grid Ref data");
      }
    });
  }
});

jmaki.subscribe("/dojo/dropdownDatePicker/*", function(args) {
  document.getElementById("visitDate").value=args.value;
});

jmaki.subscribe("/educationVisitRequest/onClick", function(args) {
  var schoolName = document.getElementById("schoolName").value;
  var contactName = document.getElementById("contactName").value;
  var contactEmail = document.getElementById("contactEmail").value;
  var visitLocation = document.getElementById("visitLocation").value;
  var noOfChildren = document.getElementById("noOfChildren").value;
  var visitDate = document.getElementById("visitDate").value;

  jmaki.doAjax({
    method: "POST",
    url: "EducationVisitServlet",
    content: {
      schoolName : schoolName,
      contactName : contactName,
      contactEmail : contactEmail,
      visitLocation : visitLocation,
      noOfChildren : noOfChildren,
      visitDate : visitDate
    },
    callback: function(_req) {
      jmaki.log("EducationVisitServlet: response is : " +  _req.responseText);
      alert(_req.responseText);

      document.getElementById("visitForm").reset();
    },
    onerror : function(m) {
      jmaki.log("Error updaing Event data");

      alert ("There was an error with the visit details. Please check and try again.")
    }
  });
});

jmaki.subscribe("/eventDate/*", function(args) {
  document.getElementById("eventDate").value=args.value;
});

jmaki.subscribe("/addEvent/*", function(args) {
  
  var eventTitle = document.getElementById("eventTitle").value;
  var locationName = document.getElementById("locationName").value;
  var eventDate = document.getElementById("eventDate").value;
  var eventTime = document.getElementById("eventTime").value;
  var eventDesc = document.getElementById("eventDesc").value;
  var eventSummary = document.getElementById("eventSummary").value;
  var linkUrl = document.getElementById("linkUrl").value;
  var latitude = document.getElementById("event.latitude").value;
  var longitude = document.getElementById("event.longitude").value;

  var checked;

  if (latitude == "") {
    checked = "false";
    alert("Please select a location");
  }
  if (eventDate == ""){
    checked = "false";
    alert("Please select a date");
  }

  if (checked != "false") {
    jmaki.doAjax({
      method: "POST",
      url: "AddEventServlet",
      content: {
        eventTitle : eventTitle,
        locationName : locationName,
        eventDate : eventDate,
        eventTime : eventTime,
        eventSummary : eventSummary,
        eventDesc : eventDesc,
        latitude : latitude,
        longitude: longitude,
        linkUrl : linkUrl
      },
      callback: function(_req) {
        jmaki.log("Back from Event Update: response is : " +  _req.responseText);
        alert(_req.responseText);

        document.getElementById("eventForm").reset();
      },
      onerror : function(m) {
        jmaki.log("Error updaing Event data");

        alert ("There was an error with the event details. Please check and try again.")
      }
    });
  }
});

jmaki.subscribe("/closeNewsEditor/*", function(args) {  
  document.getElementById("editorBox").style.display="none";
  document.getElementById("NewsForm").reset();  
});

jmaki.subscribe("/addNews/onClick", function(args) {  
  document.getElementById("editorBox").style.display="inline-block";  
});

jmaki.subscribe("/newsEditor/*", function(args) {
  var article = args.value;
  var title = document.getElementById("title").value;
  var summary = document.getElementById("summary").value;

  jmaki.doAjax({
    method: "POST",
    url: "NewsServlet",
    content: {
      title : title,
      article : article,
      summary : summary
    },
    callback: function(_req) {
      jmaki.log("Back from NewsServlet: response is : " +  _req.responseText);      
      var row = eval('('+_req.responseText+')');
      //alert(_req.responseText);

      jmaki.publish("/newsArticleTable/addRow",{
        value: row
      });

      document.getElementById("editorBox").style.display="none";
      document.getElementById("NewsForm").reset();

      alert("news item added");
    },
    onerror : function(m) {
      jmaki.log("Error updaing news data");

      alert ("There was an error with the news item. Please check and try again.")
    }
  });
});

jmaki.subscribe("/test", function(args){
  alert("test");
});

jmaki.subscribe("/newsTable/onSelect", function(args) {
  var del = confirm("Do you want to delete this news item?\n\nClick OK to delete");
  if (del) {
    jmaki.doAjax({
      method: "POST",
      url: "DeleteNewsServlet",
      content: {
        id : args.value.id
      },
      callback: function(_req) {
        jmaki.log("Back from DeleteNewsServlet: response is : " +  _req.responseText);
        //alert(_req.responseText);

        //var rows = eval('('+_req.responseText+')');

        //jmaki.publish("/newsArticleTable/clear", { });
        //jmaki.publish('/newsArticleTable/setValues', rows);

        jmaki.publish("/newsArticleTable/removeRow", {
          targetId : args.value.id
        });
      },
      onerror : function(m) {
        jmaki.log("Error updaing news data");

        alert ("There was an error deleting the news item "+args.value.id+". Please check and try again.")
      }
    });
  }
});


jmaki.subscribe("/volRegistration/onClick", function(args) {

  document.body.className = 'wait';

  var vEmail = document.getElementById("vEmail").value;
  if (vEmail.indexOf("@") > 1) {
    jmaki.doAjax({
      method: "POST",
      url: "VolEmailConfirmServlet",
      content: {
        vEmail : vEmail
      },
      callback: function(_req) {
        jmaki.log("Back from NewsServlet: response is : " +  _req.responseText);
        alert(_req.responseText);

      },
      onerror : function(m) {
        jmaki.log("Error updaing news data");

        alert ("There was an error with sending the passcode item. Please check and try again.")
      }
    });
  } else {
    alert("Your email address is invalid");
    document.getElementById("vEmail").value="";
    document.getElementById("vEmail").focus();
  }

  document.body.className = "reset";
});

jmaki.subscribe("/volRegConfirm/onClick", function(args) {

  var password = document.getElementById("password").value;

  var vName = document.getElementById("vName").value;
  var vAddress = document.getElementById("vAddress").value;
  var vPostcode = document.getElementById("vPostcode").value;
  var vEmail = document.getElementById("vEmail").value;
  var vTel = document.getElementById("vTel").value;
  var vMedical = document.getElementById("vMedical").value;

  jmaki.doAjax({
    method: "POST",
    url: "VolRegServlet",
    content: {
      vName : vName,
      vAddress : vAddress,
      vPostcode : vPostcode,
      vEmail : vEmail,
      vTel : vTel,
      vMedical : vMedical,
      password : password
    },
    callback: function(_req) {
      jmaki.log("Back from NewsServlet: response is : " +  _req.responseText);
      var resp = _req.responseText;

      alert(resp);
      
      if (resp.indexOf("accepted") > 0){
        document.getElementById("volRegForm").reset();
        document.getElementById("password").value="";
      }
    },
    onerror : function(m) {
      jmaki.log("Error updaing news data");

      alert ("There was an error with your application. Please check and try again.")
    }
  });
});


jmaki.subscribe("/contactMessage/onSelect", function(args) {
  var send = confirm("Reply to "+args.value.emailAddress+" ?");
  if (send){
    document.getElementById("replyTitle").value=args.value.title;
    document.getElementById("replyBox").style.display="inline-block";
    document.getElementById("replyEmail").value=args.value.emailAddress;
  }
});

jmaki.subscribe("/closeReply/onClick", function(args) {
  var send = confirm("Close?");
  if (send){
    document.getElementById("replyForm").reset();
    document.getElementById("replyBox").style.display="none";
  }
});

jmaki.subscribe("/replyTo/onClick", function(args) {

  var title = document.getElementById("replyTitle").value;
  var emailAddress = document.getElementById("replyEmail").value;
  var message = document.getElementById("replyMessage").value;

  var send = confirm("Send?");
  if (send){
    jmaki.doAjax({
      method: "POST",
      url: "ContactResponseServlet",
      content: {
        title : title,
        emailAddress : emailAddress,
        message : message
      },
      callback: function(_req) {
        jmaki.log("Back from ContactReplyServlet: response is : " +  _req.responseText);
        var resp = _req.responseText;

        alert(resp);

        if (resp.indexOf("sent") > 0){
          document.getElementById("replyForm").reset();
        }
      },
      onerror : function(m) {
        jmaki.log("Error updaing news data");

        alert ("There was an error with your application. Please check and try again.")
      }
    });

    document.getElementById("replyForm").reset();
    document.getElementById("replyBox").style.display="none";

  }
});

jmaki.subscribe("/familyQuiz1/onClick", function(args) {
  var correctCount = 0;



  var q1 = document.getElementById("q1c");
  if (q1.checked) {
    correctCount++;
  }  

  var q2 = document.getElementById("q2c");
  if (q2.checked) {
    correctCount++;
  }

  var q3 = document.getElementById("q3b");
  if (q3.checked) {
    correctCount++;
  }

  var q4 = document.getElementById("q4a");
  if (q4.checked) {
    correctCount++;
  }

  var q5 = document.getElementById("q4b");
  if (q5.checked) {
    correctCount++;
  }

  var q6 = document.getElementById("q4c");
  if (q6.checked) {
    correctCount++;
  }

  var q7 = document.getElementById("q4d");
  if (q7.checked) {
    correctCount++;
  }

  var q8 = document.getElementById("q5c");
  if (q8.checked) {
    correctCount++;
  }

  var q9 = document.getElementById("q6a");
  if (q9.checked) {
    correctCount++;
  }

  var q10 = document.getElementById("q6b");
  if (q10.checked) {
    correctCount++;
  }

  var q11 = document.getElementById("q6c");
  if (q11.checked) {
    correctCount++;
  }

  var q12 = document.getElementById("q6d");
  if (q12.checked) {
    correctCount++;
  }

  var q13 = document.getElementById("q7a");
  if (q13.checked) {
    correctCount++;
  }

  var q14 = document.getElementById("q8d");
  if (q14.checked) {
    correctCount++;
  }

  var q15 = document.getElementById("q9");
  if (q15.checked) {
    correctCount++;
  }

  var q16 = document.getElementById("q10");
  if (q16.checked) {
    correctCount++;
  }

  var q17 = document.getElementById("q11");
  if (q17.checked) {
    correctCount++;
  }

  var q18 = document.getElementById("q12");
  if (q18.checked) {
    correctCount++;
  }

  var q19 = document.getElementById("q13");
  if (q19.checked) {
    correctCount++;
  }

  var q20 = document.getElementById("q14");
  if (q20.checked) {
    correctCount++;
  }

  for (var x = 1; x<=20; x++){
    document.getElementById("a"+x).style.backgroundColor = "#bac1ec";
  }

  document.styleSheets[2].cssRules[3].style.display="inline";
  document.styleSheets[2].cssRules[3].style.fontStyle="italic";

  alert("You scored "+correctCount+" out of 20");
});

jmaki.subscribe("/setActivityDate/onSelect", function(args) { 
  document.getElementById("activityDate").value=args.value;
});

jmaki.subscribe("/logActivity*", function(args) {
  var activityDate = document.getElementById("activityDate").value;
  var description = args.value;

  var send = confirm("Update Diary?");
  if (send){
    jmaki.doAjax({
      method: "POST",
      url: "DiaryUpdateServlet",
      content: {
        activityDate : activityDate,
        description : description
      },
      callback: function(_req) {
        jmaki.log("Back from ContactReplyServlet: response is : " +  _req.responseText);
        var resp = _req.responseText;

        /*alert(resp);*/

        if (resp.indexOf("updated") > 0){
          document.getElementById("appointmentForm").reset();

          var _widget = this;
          _widget.container = document.getElementById(args.id + "_container");
          
          /*alert(args.id+":"+_widget.container.childNodes);
          _widget.set("value", "");*/

          document.location.href="diaryAdmin.jsp";
        }
      },
      onerror : function(m) {
        jmaki.log("Error updaing diary");

        alert ("Error updaing diary");
      }
    });
  }
});

jmaki.subscribe("/addAppointment/onClick", function(args) {
  document.getElementById("appointmentBox").style.display="inline-block";
});

jmaki.subscribe("/closeAppointment/onClick", function(args) {
  document.getElementById("appointmentBox").style.display="none";
});


jmaki.subscribe("/updateSearchIndex/onClick", function(args) {
  var send = confirm("Update Search Index?");
  if (send){
    jmaki.doAjax({
      method: "POST",
      url: "LuceneIndexServlet",
      content: { },
      callback: function(_req) {
        jmaki.log("Back from LuceneIndexServlet: response is : " +  _req.responseText);
        var resp = _req.responseText;

        alert(resp);
      },
      onerror : function(m) {
        jmaki.log("Error updaing diary");

        alert ("Error updaing diary");
      }
    });
  }
});

jmaki.subscribe("/emailAll/onClick", function(args) {
  var emailTitle = document.getElementById("emailTitle").value;
  var emailMessage = document.getElementById("emailMessage").value;

  var send = confirm("email all volunteers?");
  if (send){
    jmaki.doAjax({
      method: "POST",
      url: "EmailVolunteerServlet",
      content: {
        title : emailTitle,
        message : emailMessage
      },
      callback: function(_req) {
        jmaki.log("Back from ContactReplyServlet: response is : " +  _req.responseText);
        var resp = _req.responseText;

        alert(resp);

        document.getElementById("emailBox").style.display="none";
      },
      onerror : function(m) {
        jmaki.log("Error updaing diary");

        alert ("Error updaing diary");
      }
    });
  }
});

jmaki.subscribe("/openEmailAll/onClick", function(args) {
  document.getElementById("emailBox").style.display="inline-block";
});

jmaki.subscribe("/closeEmail/onClick", function(args) {
  document.getElementById("emailBox").style.display="none";
});

