var RightClick = {
 /**
  *  Constructor
  */ 
 init: function () {
  this.FlashObjectID = "customRightClick";
  this.FlashContainerID = "flashcontent";
  this.Cache = this.FlashObjectID;
  if(window.addEventListener){
    window.addEventListener("mousedown", this.onGeckoMouse(), true);
  } else {
   document.getElementById(this.FlashContainerID).onmouseup = function() { document.getElementById(RightClick.FlashContainerID).releaseCapture(); }
   document.oncontextmenu = function(){ if(window.event.srcElement.id == RightClick.FlashObjectID) { return false; } else { RightClick.Cache = "nan"; }}
   document.getElementById(this.FlashContainerID).onmousedown = RightClick.onIEMouse;
  }
 },
 /**
  * GECKO / WEBKIT event overkill
  * @param {Object} eventObject
  */
 killEvents: function(eventObject) {
  if(eventObject) {
   if (eventObject.stopPropagation) eventObject.stopPropagation();
   if (eventObject.preventDefault) eventObject.preventDefault();
   if (eventObject.preventCapture) eventObject.preventCapture();
      if (eventObject.preventBubble) eventObject.preventBubble();
  }
 },
 /**
  * GECKO / WEBKIT call right click
  * @param {Object} ev
  */
 onGeckoMouse: function(ev) {
    return function(ev) {
     if (ev.button != 0) {
   RightClick.killEvents(ev);
   if(ev.target.id == RightClick.FlashObjectID && RightClick.Cache == RightClick.FlashObjectID) {
       RightClick.call();
   }
   RightClick.Cache = ev.target.id;
  }
   }
 },
 /**
  * IE call right click
  * @param {Object} ev
  */
 onIEMouse: function() {
    if (event.button > 1) {
   if(window.event.srcElement.id == RightClick.FlashObjectID && RightClick.Cache == RightClick.FlashObjectID) {
    RightClick.call(); 
   }
   document.getElementById(RightClick.FlashContainerID).setCapture();
   if(window.event.srcElement.id)
   RightClick.Cache = window.event.srcElement.id;
  }
 },
 /**
  * Main call to Flash External Interface
  */
 call: function() {
  document.getElementById(this.FlashObjectID).rightClick();
 }
 
}
