/* 
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
ac.registerActivityLogger( 
  "http://52.20.48.202",
  "STOUT", 
  "v0.1"
  );

$('#open-task-button').click(function() {
  ac.logUserActivity('User opened task form', // description
  'open_modal_tools', // activity_code
  ac.WF_CREATE // workflow State
  );
})

$('#task-complete-button').click(function() {
  ac.logUserActivity('User submitted task complete', // description
  'task_complete', // activity_code
  ac.WF_OTHER // workflow State
  );
})

$('#hide-button').click(function() {
  ac.logUserActivity('User hid task form', // description
  'hide_modal_tools', // activity code
  ac.WF_CREATE
  );
})