// included in all HTML/JS templates
// requires jQuery

// Setup admin link handler
SidecarAdmin = {
  keys: "sidecar".split(''),
  kPos: 0,
  overlayDivId: 'admin-overlay-wrapper',
  timeoutInterval: 1000,
  keyTimeout: null,
  
  createAdminOverlay: function () {
    // Grab the URL of the top window (outside of CS frame)
    var csUrl, referString = '';
    if (csUrl = window.location.search.match(/_cs_pur=([^&]+$)/)) {
      if (csUrl[1]) {
        referString = '?from_url='+encodeURIComponent(csUrl[1]);
      }
    } else {
      referString = '?from_url=blank';      
    }
    
    // Create Content
    jQuery('head').append('<link type="text/css" rel="stylesheet" href="http://dev5.stepchangegroup.com/stylesheets/sidecar_admin.css">');
    var overlay = ['<div id="admin-overlay-wrapper" style="display:none">',
                      '<div id="admin-overlay">',
                        '<img src="/images/sidecar_flash_component.gif" alt="Sidecar">',
                        '<p><a href="/main/director', referString, '" target="_top">Configure &amp;<wbr> View Reports</a></p>',
                      '</div>',
                    '</div>'].join('');
    jQuery('body').append(overlay);
  },
  
  listenForOpen: function (evt) {
    var code = evt.which || evt.keyCode;
    var keyPressed = String.fromCharCode(code);
    if (keyPressed==SidecarAdmin.keys[SidecarAdmin.kPos]) {
       if (SidecarAdmin.kPos == SidecarAdmin.keys.length-1) {
            SidecarAdmin.showAdminLink();
         } else {
            clearTimeout(SidecarAdmin.keyTimeout);
            SidecarAdmin.kPos++;
            SidecarAdmin.keyTimeout = setTimeout(SidecarAdmin.cancelKeys, SidecarAdmin.timeoutInterval);
         }
    } else {
       SidecarAdmin.cancelKeys();
       clearTimeout(SidecarAdmin.keyTimeout);
    }
  },
  
  listenForClose: function (evt) {
    var code = evt.which || evt.keyCode;
    if (code==27) { // ESC
      SidecarAdmin.hideAdminLink();
    }
  },
  
  addListener: function () {
    $(document).keypress(SidecarAdmin.listenForOpen);
  },
  
  removeListener: function () {
    $(document).unbind("keypress", SidecarAdmin.listenForOpen);
  },

  addCloseListener: function () {
    this.closeListener = $(document).keypress(SidecarAdmin.listenForClose);
  },

  removeCloseListener: function () {
    $(document).unbind("keypress", SidecarAdmin.addCloseListener);
  },

  cancelKeys: function () {
    SidecarAdmin.kPos = 0;
  },

  showAdminLink: function () {
    this.addCloseListener();
    jQuery('#'+this.overlayDivId).css('display', 'block');
  },

  hideAdminLink: function () {
    this.addListener();
    jQuery('#'+this.overlayDivId).css('display', 'none');
  }
  
};

jQuery(function () {
  SidecarAdmin.createAdminOverlay();
  SidecarAdmin.addListener();
});

