{I"
class:ETI"BundledAsset;�FI"logical_path;�TI"polyblock/polyblock.js;�FI"
pathname;�TI"i/Applications/XAMPP/xamppfiles/htdocs/polyblock/app/assets/javascripts/polyblock/polyblock.js.coffee;�FI"content_type;�TI"application/javascript;�TI"
mtime;�Tl+N��RI"length;�Tir)I"digest;�TI"%e56d0eedc13d38c6e449323fa71f48ef;�FI"source;�TI"r)(function() {
  var unsavedChanges;

  CKEDITOR.disableAutoInline = true;

  unsavedChanges = false;

  window.onbeforeunload = function() {
    if (unsavedChanges) {
      return "Are you sure you want to leave this page? Your unsaved changes will not be stored!";
    }
  };

  $(function() {
    return $(document).ready(function() {
      var blocks, has_switch, initialize, pb_switch;
      blocks = $(".polyblock[contenteditable='true']");
      if (!blocks.length) {
        return;
      }
      pb_switch = $('.polyblock-switch');
      has_switch = pb_switch.is('*');
      initialize = function() {
        var blockclones, changeChecker, changeText, convertFromTextarea, convertToTextarea, currentMode, editorModeOff, editorModeOn, indicator, initialBodyPadding, instanciateCKEditor, previousMode, revertChanges, saveChanges, showSavedChanges, showUnsavedChanges, startListening, stopListening, verbose;
        blockclones = {};
        instanciateCKEditor = function(id) {
          return CKEDITOR.inline(id, {
            on: {
              focus: function(e) {
                editorModeOn();
                return startListening(id);
              },
              blur: function(e) {
                return stopListening();
              }
            }
          });
        };
        blocks.each(function() {
          var id;
          id = $(this).attr('id');
          blockclones[id] = $(this).clone();
          if (!_.contains(_.keys(CKEDITOR.instances), id)) {
            return instanciateCKEditor(id);
          }
        });
        verbose = false;
        changeChecker = null;
        indicator = $('.pb-change-indicator');
        changeText = $('.pb-change-text');
        startListening = function(which) {
          var buffer;
          stopListening();
          if (verbose) {
            console.log("I'm listening...");
          }
          buffer = CKEDITOR.instances[which].getData();
          return changeChecker = setInterval(function() {
            var reading;
            if (verbose) {
              console.log("Checking for changes...");
            }
            reading = CKEDITOR.instances[which].getData();
            if (reading !== buffer && !unsavedChanges) {
              return showUnsavedChanges();
            } else if (reading === buffer && unsavedChanges) {
              return showSavedChanges();
            }
          }, 1000);
        };
        stopListening = function() {
          if (changeChecker == null) {
            return;
          }
          if (verbose) {
            console.log("I'm no longer listening.");
          }
          clearInterval(changeChecker);
          return changeChecker = null;
        };
        showUnsavedChanges = function() {
          indicator.transition({
            rotate: "-30deg",
            color: "red"
          });
          changeText.html("You have unsaved changes.").transition({
            color: "red"
          });
          return unsavedChanges = true;
        };
        showSavedChanges = function() {
          indicator.transition({
            rotate: "0deg",
            color: "green"
          });
          changeText.html("All changes saved.").transition({
            color: "green"
          });
          return unsavedChanges = false;
        };
        initialBodyPadding = $('body').css("padding-bottom");
        editorModeOn = function(pb) {
          return $('#pb_bar').show("slide", {
            direction: "down"
          }, 250, function() {
            $('body').css("padding-bottom", $("#pb_bar").height() + 20);
            return typeof pb === "function" ? pb() : void 0;
          });
        };
        editorModeOff = function(pb) {
          return $('#pb_bar').hide("slide", {
            direction: "down"
          }, 250, function() {
            $('body').css("padding-bottom", initialBodyPadding);
            return typeof pb === "function" ? pb() : void 0;
          });
        };
        saveChanges = function() {
          var pbs;
          showSavedChanges();
          pbs = _.map(blocks, function(b) {
            return {
              id: $(b).attr("data-pbid"),
              name: $(b).attr("data-pbname"),
              content: $(b).html()
            };
          });
          return $.post("/polyblock/update", {
            pbs: pbs
          }, function(data) {
            return editorModeOff(function() {
              return alertify.success("Your changes have been saved.");
            });
          });
        };
        revertChanges = function(pb) {
          if (!confirm("Are you sure you want to discard your changes?")) {
            return;
          }
          return editorModeOff(function() {
            blocks.each(function() {
              return $(this).replaceWith(blockclones[$(this).attr("id")]);
            });
            return alertify.success("Your changes have been discarded.");
          });
        };
        currentMode = previousMode = "WYSIWYG";
        convertToTextarea = function(block, content, tab) {
          var previous_textarea, replaceIt, tabchars, textarea,
            _this = this;
          if (content == null) {
            content = null;
          }
          if (tab == null) {
            tab = "\t";
          }
          tabchars = tab.replace(/\\/, "").length;
          previous_textarea = $("textarea[data-pbid=" + (block.attr("data-pbid")) + "]");
          if (content == null) {
            content = previous_textarea.is("*") ? previous_textarea.val() : block.html();
          }
          textarea = $('<textarea />').addClass("form-control").attr("data-pbid", block.attr("data-pbid")).val(content).css({
            "font-family": 'Monaco, Menlo, Consolas, "Courier New", monospace'
          }).on("keydown", function(e) {
            var end, keycode, start;
            keycode = e.keyCode || e.which;
            if (!(keycode === 9 || keycode === 8 || keycode === 46)) {
              return;
            }
            start = $(this).get(0).selectionStart;
            end = $(this).get(0).selectionEnd;
            if (keycode === 9) {
              e.preventDefault();
              $(this).val("" + ($(this).val().substring(0, start)) + tab + ($(this).val().substring(end)));
              return $(this).get(0).selectionStart = $(this).get(0).selectionEnd = start + tabchars;
            } else if (keycode === 8) {
              if (!(currentMode === "HAML" && $(this).val().substring(start - tabchars, start) === tab)) {
                return;
              }
              e.preventDefault();
              $(this).val("" + ($(this).val().substring(0, start - tabchars)) + ($(this).val().substring(end)));
              return $(this).get(0).selectionStart = $(this).get(0).selectionEnd = start - tabchars;
            } else if (keycode === 46) {
              if (!(currentMode === "HAML" && $(this).val().substring(start, start + tabchars) === tab)) {
                return;
              }
              e.preventDefault();
              $(this).val("" + ($(this).val().substring(0, start)) + ($(this).val().substring(end + tabchars)));
              return $(this).get(0).selectionStart = $(this).get(0).selectionEnd = start;
            }
          });
          replaceIt = function(html) {
            if (!previous_textarea.is("*")) {
              block.replaceWith(textarea);
            } else {
              previous_textarea.replaceWith(textarea);
            }
            return textarea.autosize().focus();
          };
          if (previousMode !== "HAML") {
            return replaceIt(content);
          } else {
            return $.post("/convert_haml_to_html", {
              haml: content
            }, function(data) {
              return replaceIt(data);
            });
          }
        };
        convertFromTextarea = function(block) {
          var replaceIt, textarea,
            _this = this;
          textarea = $("textarea[data-pbid=" + (block.attr("data-pbid")) + "]");
          replaceIt = function(html) {
            console.log("Replacing with html: " + html);
            textarea.replaceWith(block);
            return block.html(html);
          };
          if (previousMode !== "HAML") {
            return replaceIt(textarea.text());
          } else {
            return $.post("/convert_haml_to_html", {
              haml: textarea.val()
            }, function(data) {
              return replaceIt(data);
            });
          }
        };
        $('#pb_bar_format_buttons button').click(function(e) {
          var changeModes,
            _this = this;
          e.preventDefault();
          if ($(this).hasClass("active")) {
            return;
          }
          previousMode = currentMode;
          currentMode = $(this).html();
          changeModes = function(block) {
            var content, textarea;
            textarea = $("textarea[data-pbid=" + (block.attr("data-pbid")) + "]");
            content = textarea.is("*") ? textarea.val() : block.html();
            switch (currentMode) {
              case "WYSIWYG":
                return convertFromTextarea(block);
              case "HTML":
                return convertToTextarea(block, html_beautify(content));
              case "HAML":
                return $.post("/convert_html_to_haml", {
                  html: content
                }, function(data) {
                  return convertToTextarea(block, data, "  ");
                });
              case "Markdown":
                return convertToTextarea(block, html_beautify(content));
            }
          };
          if (previousMode === "WYSIWYG") {
            blocks = $(".polyblock[contenteditable='true']");
          }
          blocks.each(function() {
            return changeModes($(this));
          });
          return $(this).siblings().removeClass("active").end().addClass("active");
        });
        $('#pb_bar_revert').click(function(e) {
          e.preventDefault();
          return revertChanges();
        });
        return $('#pb_bar_save').click(function(e) {
          e.preventDefault();
          return saveChanges();
        });
      };
      if (has_switch) {
        return pb_switch.click(function(e) {
          e.preventDefault();
          if ($(this).hasClass("active")) {
            $(this).removeClass("active");
            return window.location.reload();
          } else {
            $(this).addClass("active");
            return initialize();
          }
        });
      } else {
        return initialize();
      }
    });
  });

}).call(this);
;�TI"required_assets_digest;�TI"%16e25f8ceaf525c68a3fa6ffbed1e942;�FI"
_version;�TI"%01dc9d4cb5b0ece13ed47cc1cabfeb41;�F