jQuery.addMutator(function(ctx) {
 jQuery(".Truncated[@original]", ctx)
  .each(
   function() {
    var jThis = jQuery(this);
    var original = this.getAttribute("original");
    jThis.after("<span style='padding: 5px; margin: 5px; background-color: #ffffff; border: 1px solid black; display: none; position: absolute'>" + original + "</span>")
    var originalBox = jQuery(this.nextSibling);
    jThis.mousemove(
      function(e) {
       var xy = webslinger.fixMouseEvent(e);
       originalBox.css("top", xy[1] + 10).css("left", xy[0] + 10);
      }
     ).hover(
      function(e) {
       var xy = webslinger.fixMouseEvent(e);
       originalBox.css("top", xy[1] + 10).css("left", xy[0] + 10).show();
      },
      function(e) {
       originalBox.hide();
      }
     ).click(function() { return false; });
   }
  );
 jQuery(".lprThemeImage", ctx).each(
  function() {
   var url = webslinger.url.removeProtocol(this.getAttribute("src"));
   url = url.substring(0, url.length - 6) + "/html";
   jQuery(this).dblclick(
    function() {
     jQuery("body").openDialog(url, "ThemePreview", "Theme Preview");
    }
   );
  }
 );
 webslinger.defaultErrorHandler = function(type, data) {
  switch (type) {
   case "request":
    jQuery("body").openDialog("/Errors/ClientSide/Request", "ClientSide:Error:Request", "Request Error", {data: data});
    break;
   case "client":
    jQuery("body").openDialog("/Errors/ClientSide/Client", "ClientSide:Error:Client", "Client Error", {data: data});
    break;
   case "server":
    jQuery("body").openDialog("/Errors/ClientSide/Server", "ClientSide:Error:Server", "Server Error", {data: data});
    break;
  }
 };
});

