
(function($){
  $.fn.extend({ 
    komodoWatchMenu: function(params) {
      var defaults = {};
      var options =  $.extend(defaults, params);
      var $this = $(this);
      var mode = 'Document';
      
      var init = function() {
        debug('Start komodoWatchMenu');
        $('body').bind('note-deactivate', noteDeactivated);
        $('body').bind('note-activate', noteActivated);
        $(".cli-resource").accordion({fillSpace: true});
        $("#cli-mode").buttonset();
        $('#cli-mode-1').click(setDocumentMode);
        $('#cli-mode-2').click(setChapterMode);
        $('#cli-mode-3').click(setResourceMode);
        
        $('.cli-function-button-action').button({icons:{primary: "ui-icon-triangle-1-s"}}).
          click(function() {
            $('.cli-function-menu-action').position({of: $(this), my: 'right top', at: 'right bottom',offset: '0 -2'}).
              effect('slide', {direction:'up'}, 500).
                mouseover(function(e){e.stopPropagation();}).
                mousemove(function(e){e.stopPropagation();});
        });
        
        $('.cli-function-button-option').button({icons:{primary: "ui-icon-triangle-1-s"}}).
          click(function() {
            $('.cli-function-menu-option').position({of: $(this), my: 'right top', at: 'right bottom', offset: '0 -2'}).
              effect('slide', {direction:'up'}, 500).
              mouseover(function(e){e.stopPropagation();}).
              mousemove(function(e){e.stopPropagation();});
        });
      $('body').mousemove(function(e){hideMenu(e);});
      
        /**
         * Activate message system
         */
        $('body').colibriMessage(presentation);
        
        //Show/hide options
        $('#showHideMyNotes').toggle(hideMyNote,showMyNote);
        $('#showHideTheirNotes').toggle(hideTheirNote,showTheirNote);
        $('#showHideAllNotes').toggle(hideAllNote,showAllNote);
        //launch the default mode
        eval('set'+options.initMode+'Mode()');
      };
      var debug = function(message) {
        if(options.debugMode && window.console) { 
          console.log(message);
        };
      };
      var setDocumentMode = function(){
        if(this.mode=='document') return false;
        $('body').triggerHandler('note-deactivate');
        setDocumentPosition(285,20,662,496);
        setChapterPosition(0,216,280,367);
        setAnnexPosition(285,522,662,61);
        $('.cli-document-holder').css('display','block');
        $('.cli-resource-holder').css('display','none');
        //hide note options
        $('.cli-function-menu-option-note').css('display', 'none');
        //hide notes
        $('.cli-note-form').css('display','none');
      };
      var setChapterMode = function(){
        if(this.mode=='chapter') return false;
        $('input#cli-mode-2').attr('checked', true);
        $('#cli-mode').buttonset('refresh');
        setDocumentPosition(0,216,280,210);
        setChapterPosition(285,20,662,496);
        setAnnexPosition(0,431,280,85);
        $('body').triggerHandler('note-activate');
        $('.cli-document-holder').css('display','block');
        $('.cli-resource-holder').css('display','none');
        //show note options
        $('.cli-function-menu-option-note').css('display', 'block');
        //show user notes if exists
        $('.cli-note-form').each(function(){
          if($(this).find('textarea').val()!='') $(this).css('display','block');
        })
      }
      var setResourceMode = function(){
        if(this.mode=='resource') return false;
        $('body').triggerHandler('note-deactivate');
        $('.cli-document-holder').css('display','none');
        setDocumentPosition(285,20,662,496);
        setChapterPosition(0,216,280,367);
        setAnnexPosition(285,522,662,61);
        $('.cli-resource-holder').css('display','block');
        //hide note options
        $('.cli-function-menu-option-note').css('display', 'none');
      }
      /**
       * set the main document area to a specific position and size
       * 
       * @param: _left, the left position in pixel
       * @param: _top, the top position in pixel
       * @param: _width, the width of the element in pixel
       * @param: _height, the height of the element in pixel
       */
      var setDocumentPosition = function(_left,_top,_width,_height){
        $('.cli-document-holder').animate({"left":_left,"top":_top,"width":_width,"height":_height}, "slow", 
          function(){
            $('#colibriDoc').css('width',_width);
            $('#colibriDoc').css('height',_height);
          });
      }
      /**
       * set the chapter area to a specific position and size
       * 
       * @param: _left, the left position in pixel
       * @param: _top, the top position in pixel
       * @param: _width, the width of the element in pixel
       * @param: _height, the height of the element in pixel
       */
      var setChapterPosition = function(_left,_top,_width,_height){
        $('.cli-chapter-holder').animate({"left":_left,"top":_top,"width":_width,"height":_height}, "slow", 
          function(){
            $('.cli-chapter').css('width',_width);
            $('.cli-chapter').css('height',_height);
          });
      }
      /**
       * set the annex area to a specific position and size
       * 
       * @param: _left, the left position in pixel
       * @param: _top, the top position in pixel
       * @param: _width, the width of the element in pixel
       * @param: _height, the height of the element in pixel
       */
      var setAnnexPosition = function(_left,_top,_width,_height){
        $('.cli-annex-holder').animate({"left":_left,"top":_top,"width":_width,"height":_height}, "slow", function(){});
      }
      var hideMenu = function(e){
        if(!$(e.target).hasClass('cli-function-menu') && 
           !$(e.target).hasClass('cli-function-button') && 
           !$(e.target).hasClass('ui-button-text') && 
           !$(e.target).hasClass('ui-button-icon-primary')) {
          $('.cli-function-menu').css('top', -500);
        }
      };
      var hideAllNote = function(){
        hideMyNote();
        hideTheirNote();
        $('#showHideAllNotes span.off').css('display','none');
        $('#showHideAllNotes span.on').css('display','block');
      }
      var hideMyNote = function(){
        $('.cli-note-form-user').css('display','none');
        $('#showHideMyNotes span.off').css('display','none');
        $('#showHideMyNotes span.on').css('display','block');
      }
      var hideTheirNote = function(){
        $('.cli-note-form-shared').css('display','none');
        $('#showHideTheirNotes span.off').css('display','none');
        $('#showHideTheirNotes span.on').css('display','block');
      }
      var showAllNote = function(){
        showMyNote();
        showTheirNote();
        $('#showHideAllNotes span.off').css('display','block');
        $('#showHideAllNotes span.on').css('display','none');
      }
      var showMyNote = function(){
        $('.cli-note-form-user').css('display','block');
        $('#showHideMyNotes span.off').css('display','block');
        $('#showHideMyNotes span.on').css('display','none');
      }
      var showTheirNote = function(){
        $('.cli-note-form-shared').css('display','block');
        $('#showHideTheirNotes span.off').css('display','block');
        $('#showHideTheirNotes span.on').css('display','none');
      }
      var noteDeactivated = function() {
        $(this).find('span.on').css('display','block');
        $(this).find('span.off').css('display','none');
      };
      var noteActivated = function() {
        $(this).find('span.on').css('display','none');
        $(this).find('span.off').css('display','block');
      }
      init();
    }
  });
})(jQuery);

