Avoid missing API error in PolyGerrit.

* PolyGerrit does not have Gerrit.{get,post,delete,refresh},
  self.delete, and self.onAction.
  Replace them with compatible self.* APIs or skip the operation.
* Under PolyGerrit, there is no "Find Owners" button.
  On submit, the pop up page shows owners info and allows
  users to add reviewers, but not to delete reviewers yet.

Change-Id: I39b2a36c88ad113f280432e58e3badb2bfddba1c
diff --git a/src/main/resources/static/find-owners.js b/src/main/resources/static/find-owners.js
index ae281d2..163564b 100644
--- a/src/main/resources/static/find-owners.js
+++ b/src/main/resources/static/find-owners.js
@@ -100,8 +100,39 @@
     function getElement(id) {
       return document.getElementById(id);
     }
+    function httpGet(url, callback) {
+      var xhr = new XMLHttpRequest();
+      xhr.open('GET', url);
+      xhr.onreadystatechange = function() {
+        if (xhr.readyState == XMLHttpRequest.DONE) {
+          // skip special characters ")]}'\n"
+          callback(!!xhr.responseText ?
+                   JSON.parse(xhr.responseText.substring(5)) : {});
+        }
+      };
+      xhr.send();
+    }
+    function httpError(msg, callback) {
+      console.log('UNIMPLEMENTED: ' + msg);
+      callback();
+    }
+    function gerritGet(url, callback) {
+      (!!Gerrit.get) ? Gerrit.get(url, callback) :
+          ((!!self.get) ? self.get('/../..' + url, callback) :
+              httpGet(url, callback));
+    }
+    function gerritPost(url, data, callback) {
+      (!!Gerrit.post) ? Gerrit.post(url, data, callback) :
+          ((!!self.post) ? self.post('/../..' + url, data, callback) :
+              httpError('POST ' + url, callback));
+    }
+    function gerritDelete(url, callback) {
+      (!!Gerrit.delete) ? Gerrit.delete(url, callback) :
+          ((!!self.delete) ? self.delete('/../..' + url, callback) :
+              httpError('DELETE ' + url, callback));
+    }
     function getReviewers(change, callBack) {
-      Gerrit.get('changes/' + change + '/reviewers', callBack);
+      gerritGet('/changes/' + change + '/reviewers', callBack);
     }
     function setupReviewersMap(reviewerList) {
       reviewerId = {};
@@ -137,9 +168,9 @@
           // Gerrit core UI shows the error dialog and does not provide
           // a way for plugins to handle the error yet.
           needRefresh = true;
-          Gerrit.post('changes/' + changeId + '/reviewers',
-                      {'reviewer': email},
-                      checkAddRemoveLists);
+          gerritPost('/changes/' + changeId + '/reviewers',
+                     {'reviewer': email},
+                     checkAddRemoveLists);
           return;
         }
       }
@@ -148,16 +179,16 @@
         if (email in reviewerId) {
           removeList = removeList.slice(i + 1, removeList.length);
           needRefresh = true;
-          Gerrit.delete('changes/' + changeId +
-                        '/reviewers/' + reviewerId[email],
-                        checkAddRemoveLists);
+          gerritDelete('/changes/' + changeId +
+                       '/reviewers/' + reviewerId[email],
+                       checkAddRemoveLists);
           return;
         }
       }
       hideFindOwnersPage();
       if (needRefresh) {
         needRefresh = false;
-        Gerrit.refresh();
+        (!!Gerrit.refresh) ? Gerrit.refresh() : location.reload();
       }
       callServer(showFindOwnersResults);
     }
@@ -431,7 +462,7 @@
     function callServer(callBack) {
       // Use the plugin REST API; pass only changeId;
       // let server get current patch set, project and branch info.
-      Gerrit.get('changes/' + changeId + '/owners', showFindOwnersResults);
+      gerritGet('/changes/' + changeId + '/owners', showFindOwnersResults);
     }
     event.stopPropagation();
     callServer(showFindOwnersResults);
@@ -460,7 +491,11 @@
     }
   }
   // When the "Find Owners" button is clicked, call onFindOwners.
-  self.onAction('revision', 'find-owners', onFindOwners);
+  if (!!self.onAction) { // PolyGerrit does not have self.onAction
+    self.onAction('revision', 'find-owners', onFindOwners);
+  } else {
+    console.log('WARNING, no handler for the Find Owners button');
+  }
   // When the "Submit" button is clicked, call onSubmit.
   self.on('submitchange', onSubmit);
   // Clicks outside the pop up window should close the window.