summaryrefslogtreecommitdiffstats
path: root/rdpweb/webclient.js
diff options
context:
space:
mode:
authorIan Moore <ian.moore@fireeye.com>2015-07-29 12:12:26 -0400
committerIan Moore <ian.moore@fireeye.com>2015-07-29 12:12:26 -0400
commit83e0bc0d26bd88925053ac3a6cc84edf7236f18e (patch)
tree18ac7e2f300934ba12dcdc20531b2de6813ffde9 /rdpweb/webclient.js
parent76a645369fd0dc61bca879ec5f083464d62a7369 (diff)
downloadphpvirtualbox-83e0bc0d26bd88925053ac3a6cc84edf7236f18e.zip
phpvirtualbox-83e0bc0d26bd88925053ac3a6cc84edf7236f18e.tar.gz
phpvirtualbox-83e0bc0d26bd88925053ac3a6cc84edf7236f18e.tar.bz2
Move source tree up one level
Diffstat (limited to 'rdpweb/webclient.js')
-rw-r--r--rdpweb/webclient.js206
1 files changed, 206 insertions, 0 deletions
diff --git a/rdpweb/webclient.js b/rdpweb/webclient.js
new file mode 100644
index 0000000..ece8503
--- /dev/null
+++ b/rdpweb/webclient.js
@@ -0,0 +1,206 @@
+/* JS helpers for the Flash RDP Web Control.
+ *
+ * Methods started with '_' are for internal use and must not be called.
+ * Methods started with '_control' are called from the SWF.
+ */
+var RDPWebClient = {
+ RDPWebUUID: "747f07ac-c30b-4439-826d-7b5c67fd47e7",
+ embedSWF: function (FlashFileName, FlashId)
+ {
+ /* Create the Flash object. */
+ var flashvars = {};
+ flashvars.flashId = FlashId;
+
+ var params = {};
+ params.wmode="opaque";
+ params.menu="false";
+ params.bgcolor="#ffffff";
+ params.quality="low";
+ params.allowScriptAccess="always";
+
+ var attributes = {};
+
+ /* Make sure that the SWF will be reloaded from the server, not from browser cache. */
+ var stamp = new Date();
+ var seed = "?s=" + stamp.getTime();
+
+ swfobject.embedSWF(FlashFileName + seed, FlashId, "100%", "100%", "9.0.0",
+ "", flashvars, params, attributes);
+ },
+ isRDPWebControlById: function(Id)
+ {
+ var flash = RDPWebClient.getFlashById(Id);
+ return RDPWebClient.isRDPWebControlByElement(flash);
+ },
+ isRDPWebControlByElement: function(element)
+ {
+ if (element && element.getProperty)
+ {
+ var uuid = element.getProperty("UUID");
+ if (uuid == RDPWebClient.RDPWebUUID)
+ {
+ return true;
+ }
+ }
+ return false;
+ },
+ _controlInit: function (FlashId)
+ {
+ var flash = RDPWebClient.getFlashById(FlashId);
+
+ if (flash)
+ {
+ if (window.addEventListener)
+ {
+ /* Mozilla */
+ window.addEventListener("contextmenu", function(event) { return RDPWebClient._MozillaContextMenu(event); }, true);
+ window.addEventListener("mousedown", function(event) { return RDPWebClient._MozillaMouse(event, true); }, true);
+ window.addEventListener("mouseup", function(event) { return RDPWebClient._MozillaMouse(event, false); }, true);
+ flash.addEventListener("mouseout", function(event) { return RDPWebClient._MozillaMouseOut(event); }, true);
+ }
+ else
+ {
+ document.oncontextmenu = function() { return RDPWebClient._IEContextMenu(); }
+ flash.parentNode.onmousedown = function() { return RDPWebClient._IEMouse(true); }
+ flash.parentNode.onmouseup = function() { return RDPWebClient._IEMouse(false); }
+ flash.onmouseout=function() {return RDPWebClient._IEMouseOut(); }
+ }
+ }
+ },
+ _controlResize: function(flashId, width, height, reason)
+ {
+ var e = document.getElementById(flashId + 'Container');
+ if (e)
+ {
+ e.style.width=width + "px";
+ e.style.height=height + "px";
+ }
+ },
+ _IEMouseOut: function()
+ {
+ if (window.event && RDPWebClient.isRDPWebControlById(window.event.srcElement.id))
+ {
+ RDPWebClient._callMouseOut(window.event.srcElement.id);
+ }
+ return true;
+ },
+ _IECancelEvent: function()
+ {
+ window.event.returnValue = false;
+ window.event.cancelBubble = true;
+ return false;
+ },
+ _IEContextMenu: function()
+ {
+ if (window.event && RDPWebClient.isRDPWebControlById(window.event.srcElement.id))
+ {
+ return RDPWebClient._IECancelEvent();
+ }
+ },
+ _IEMouse: function(fMouseDown)
+ {
+ if (window.event && RDPWebClient.isRDPWebControlById(window.event.srcElement.id))
+ {
+ if (window.event.button == 2)
+ {
+ if (fMouseDown == true)
+ {
+ RDPWebClient.getFlashById(window.event.srcElement.id).parentNode.setCapture();
+ RDPWebClient._callRightMouseDown(window.event.srcElement.id);
+ }
+ else
+ {
+ RDPWebClient._callRightMouseUp(window.event.srcElement.id);
+ RDPWebClient.getFlashById(window.event.srcElement.id).parentNode.releaseCapture();
+ }
+ return RDPWebClient._IECancelEvent();
+ }
+ }
+ },
+ _MozillaMouseOut: function(event)
+ {
+ if (RDPWebClient.isRDPWebControlById(event.target.id))
+ {
+ RDPWebClient._callMouseOut(event.target.id);
+ }
+ return true;
+ },
+ _MozillaCancelEvent: function(event)
+ {
+ if (event)
+ {
+ if (event.preventBubble) event.preventBubble();
+ if (event.preventCapture) event.preventCapture();
+ if (event.preventDefault) event.preventDefault();
+ if (event.stopPropagation) event.stopPropagation();
+ }
+ },
+ _MozillaContextMenu: function(event)
+ {
+ if (RDPWebClient.isRDPWebControlById(event.target.id))
+ {
+ RDPWebClient._MozillaCancelEvent(event);
+ }
+ },
+ _MozillaMouse: function(event, fMouseDown)
+ {
+ if (RDPWebClient.isRDPWebControlById(event.target.id))
+ {
+ if (event.button == 2)
+ {
+ if (fMouseDown)
+ {
+ RDPWebClient._callRightMouseDown(event.target.id);
+ }
+ else
+ {
+ RDPWebClient._callRightMouseUp(event.target.id);
+ }
+ RDPWebClient._MozillaCancelEvent(event);
+ }
+ }
+ },
+ _callRightMouseDown: function(FlashId)
+ {
+ var flash = RDPWebClient.getFlashById(FlashId);
+ if (flash && flash.rightMouseDown)
+ {
+ try
+ {
+ flash.rightMouseDown();
+ }
+ catch (e) {}; /* Hack for IE, which calls the Flash method but then throws the exception. */
+ }
+ },
+ _callRightMouseUp: function(FlashId)
+ {
+ var flash = RDPWebClient.getFlashById(FlashId);
+ if (flash && flash.rightMouseUp)
+ {
+ try
+ {
+ flash.rightMouseUp();
+ }
+ catch (e) {}; /* Hack for IE, which calls the Flash method but then throws the exception. */
+ }
+ },
+ _callMouseOut: function(FlashId)
+ {
+ var flash = RDPWebClient.getFlashById(FlashId);
+ if (flash && flash.mouseOut)
+ {
+ try
+ {
+ flash.mouseOut();
+ }
+ catch (e) {}; /* Hack for IE, which calls the Flash method but then throws the exception. */
+ }
+ },
+ getFlashById: function(flashId)
+ {
+ if (document.embeds && document.embeds[flashId])
+ return document.embeds[flashId];
+
+ return document.getElementById(flashId);
+ }
+}