Difference between revisions of "MediaWiki:Common.js"

From Bible Wiki, www.natnee.com
Jump to navigation Jump to search
Line 1: Line 1:
 
/* Any JavaScript here will be loaded for all users on every page load. */
 
/* Any JavaScript here will be loaded for all users on every page load. */
function dragElement(elmnt) {
+
    var id, timeOut, origin, mouseWhere='',
  var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
+
        container = $("body"),
  if ($('#'+elmnt[0].id + "header")) {
+
        count=0;
    /* if present, the header is where you move the DIV from:*/
+
     // endvar
    $('#'+elmnt[0].id + "header").on('mousedown', dragMouseDown);
 
  } else {
 
     /* otherwise, move the DIV from anywhere inside the DIV:*/
 
    elmnt.on('mousedown',dragMouseDown);
 
  }
 
  
  function dragMouseDown(e) {
+
    function dragElement(elmnt) {
    e = e || window.event;
+
      var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
    e.preventDefault();
+
      if ($('#'+elmnt[0].id + "header")) {
    // get the mouse cursor position at startup:
+
        /* if present, the header is where you move the DIV from:*/
    pos3 = e.clientX;
+
        $('#'+elmnt[0].id + "header").on('mousedown', dragMouseDown);
    pos4 = e.clientY;
+
      } else {
    $(document).on('mouseup',closeDragElement);
+
        /* otherwise, move the DIV from anywhere inside the DIV:*/
    // call a function whenever the cursor moves:
+
        elmnt.on('mousedown',dragMouseDown);
    $(document).on('mousemove',elementDrag);
+
      }
  }
+
 
 +
      function dragMouseDown(e) {
 +
        e = e || window.event;
 +
        e.preventDefault();
 +
        // get the mouse cursor position at startup:
 +
        pos3 = e.clientX;
 +
        pos4 = e.clientY;
 +
        $(document).on('mouseup',closeDragElement);
 +
        // call a function whenever the cursor moves:
 +
        $(document).on('mousemove',elementDrag);
 +
      }
 +
 
 +
      function elementDrag(e) {
 +
        e = e || window.event;
 +
        e.preventDefault();
 +
        // calculate the new cursor position:
 +
        pos1 = pos3 - e.clientX;
 +
        pos2 = pos4 - e.clientY;
 +
        pos3 = e.clientX;
 +
        pos4 = e.clientY;
 +
        // set the element's new position:
 +
        elmnt.css('top', (elmnt[0].offsetTop - pos2) + "px");
 +
        elmnt.css('left', (elmnt[0].offsetLeft - pos1) + "px");
 +
      }
 +
 
 +
      function closeDragElement() {
 +
        /* stop moving when mouse button is released:*/
 +
        $(document).off('mouseup',closeDragElement);
 +
        $(document).off('mousemove',elementDrag);
 +
      }
 +
    }
 +
    function clickClose(i) {  $('#close-'+ i).trigger('click');  }
 +
    function getID(el) {  return el.text().replace(' ', '').replace(':','').replace('-','');  }
 +
    function showHover(hover, lnk) {
 +
      var posleft = lnk.offset().left;  posleft = posleft <= 50 ? 10 : posleft - 50;
 +
      var postop = lnk.offset().top;    postop  = postop <= 200 ? 10 : postop - 200;
 +
 
 +
      hover.css({"z-index":count,
 +
                    "left":posleft+"px",
 +
                    "top":postop+"px",
 +
              "visibility":"visible"})
 +
          .addClass("mwe-popups-fade-in-up");
 +
 
 +
    }
  
  function elementDrag(e) {
 
    e = e || window.event;
 
    e.preventDefault();
 
    // calculate the new cursor position:
 
    pos1 = pos3 - e.clientX;
 
    pos2 = pos4 - e.clientY;
 
    pos3 = e.clientX;
 
    pos4 = e.clientY;
 
    // set the element's new position:
 
    elmnt.css('top', (elmnt[0].offsetTop - pos2) + "px");
 
    elmnt.css('left', (elmnt[0].offsetLeft - pos1) + "px");
 
  }
 
  
  function closeDragElement() {
+
    $(document)
    /* stop moving when mouse button is released:*/
+
        .on( 'mouseover keyup', '.verse', function ( event ) {
    $(document).off('mouseup',closeDragElement);
+
          var lnk = $(this);
    $(document).off('mousemove',elementDrag);
+
          // delay showing the verse hover box
  }
+
          setTimeout(function(){
}
+
            verse = lnk.text();
var timer, timer_out, origin, what, mouseWhere='';
+
            id = getID(lnk);
var dte, whereami;
+
            var hover = $('#' + id);
var container = $("body");
+
            count++;
var count=0;
+
            if (hover.length === 0) {
 +
              $.ajax({
 +
                url: '/chronology/index.php?route=common/home/sa',
 +
                type: 'get',
 +
                data: '&verse=' + verse,
 +
                dataType: 'html',
 +
                beforeSend: function() {
 +
                  // set the verse hover box:  content is loading
 +
                  lnk.after('<div id="' + id +'" class="hover"><div id="'+ id +'header" class="header">' + verse + '<div id="close-' + id + '" class="close">&times;</div></div><div class="content"><img src="/natnee/images/6.gif" /></div></div>');
 +
                },
 +
                success: function(json) {
 +
                  // verse hover box:  content is the verse
 +
                  $('#' + id + ' .content').html(json);
 +
                  // important to redefine the hover; it becomes null if it isn't defined
 +
                  hover = $('#' + id);                   
 +
                  origin = 'top';
 +
                  showHover(hover, lnk);
 +
                  // make it draggable
 +
                  dragElement(hover);
 +
                  // when [x] of verse hover is clicked
 +
                  $('#close-'+id).on('click',
 +
                    function() {
 +
                      if (origin == 'top') hover.removeClass("mwe-popups-fade-in-up").addClass("mwe-popups-fade-out-down");
 +
                      else                hover.removeClass("mwe-popups-fade-in-down").hover.addClass("mwe-popups-fade-out-up");
  
$('.verse').each(function()});
+
                      hover.on("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd",
 +
                        function(e){ hover.off(e);
 +
                          if (hover.attr('class').indexOf('mwe-popups-fade-out') >= 0 ) {
 +
                            hover.removeClass("mwe-popups-fade-out-down").css({'visibility':'hidden','top':'0','left':'0', 'z-index':'0'});
 +
                          }
 +
                        }
 +
                      );//end hover animation
 +
                    }
 +
                  );//end close on click
  
$('.verse').on('click', function(){
 
  elm = $(this);
 
  verse = elm.text();
 
  id = elm.text().replace(' ', '').replace(':','').replace('-','');
 
 
 
  if ($('#' + id).length === 0) {
 
    $.ajax({
 
      url: '/chronology/index.php?route=common/home/sa',
 
      type: 'get',
 
      data: '&verse=' + verse,
 
      dataType: 'html',
 
      beforeSend: function() { },
 
      success: function(json) {
 
        var dv = '<div id="' + id +'" style="visibility:hidden; box-shadow: 0 0 10px rgba(0,0,0,0.5); background-color:#eee; width:250px;height:250px;position:fixed; top:50%; left:50%; transform:translate(-50%,-50%);"><div id="'+ id +'header" style="background-color:#aaa;cursor: move;padding:5px 10px">' + verse + '<div class="close" style="display:inline-block;cursor:pointer; float:right; font-weight:900;font-size:18px;line-height:15px" data-id="'+ id +'">&times;</div></div><div style="padding:20px;height:160px; overflow-y:scroll; ">' + json +  '</div></div>'
 
        elm.after(dv);
 
        $('#' + id).css('visibility', 'visible');
 
        //$('#one #header').mousedown(handle_mousedown);
 
        dragElement($("#" + id));
 
        $('.close').on('click', function() { close(this); } );
 
  
      },
+
                  return false;
      error: function(xhr, ajaxOptions, thrownError) {
 
          alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
 
      }
 
  
    });
+
                }, error: function(xhr, ajaxOptions, thrownError) {
  } else {
+
                  alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
    $('#' + id).css('visibility', 'visible');
+
                }
  }
+
              });
});
+
            } else if (hover.css('visibility') == 'hidden') { showHover(hover, lnk); }
  
$(document).on( 'mouseover keyup', '.verse', function ( event ) {
+
          }, 700);
  whereami = $(this).attr("data-ttl");
+
        })
  mouseWhere = 'over';
+
        .on( 'mouseout blur', '.verse', function () { timeOut = setTimeout( clickClose, 1000, getID($(this))); })
 +
        .on( 'mouseover',    '.hover', function() {  clearTimeout( timeOut ); })
 +
        .on( 'mouseout',      '.hover', function() {  timeOut = setTimeout( clickClose, 1000, $(this)[0].id ); });
 +
    // end document
  
  dte = Date.now();
 
  var lnk = $(this);
 
  
  verse = lnk.text();
 
  id = lnk.text().replace(' ', '').replace(':','').replace('-','');
 
  var hover = $('#' + id);//$('#hover-'+title);
 
  
  if (mouseWhere == 'over') {
+
     $('bak.verse').on('click', function(){  
     count++;
+
      var lnk = $(this);
    if (hover.length === 0) {
 
      $.ajax({
 
        url: '/chronology/index.php?route=common/home/sa',
 
        type: 'get',
 
        data: '&verse=' + verse,
 
        dataType: 'html',
 
        success: function(json) {
 
          lnk.after('<div id="' + id +'" class="hover"><div id="'+ id +'header" class="header">' + verse + '<div id="close-' + id + '" class="close">&times;</div></div><div class="content">' + json +  '</div></div>');
 
          hover = $('#' + id);
 
  
          hover.css('--hover-border-color',lnk.offsetParent().css("color"));
+
      verse = lnk.text();
          origin = 'top';
+
      id = getID(lnk);
          hover.css({"z-index":count,"left":(lnk.offset().left-50)+"px","top":(lnk.offset().top-200)+"px","visibility":"visible"}).addClass("mwe-popups-fade-in-up");
+
      var hover = $('#' + id);//$('#hover-'+title);
           dragElement(hover);
+
     
           $('#close-'+id).on('click', function() {
+
      if ($('#' + id).length === 0) {
             if (origin == 'top') hover.removeClass("mwe-popups-fade-in-up").addClass("mwe-popups-fade-out-down");
+
        $.ajax({
             else hover.removeClass("mwe-popups-fade-in-down").hover.addClass("mwe-popups-fade-out-up");
+
          url: '/chronology/index.php?route=common/home/sa',
 +
           type: 'get',
 +
           data: '&verse=' + verse,
 +
          dataType: 'html',
 +
          beforeSend: function() { },
 +
          success: function(json) {
 +
             lnk.after('<div id="' + id +'" class="hover"><div id="'+ id +'header" class="header">' + verse + '<div id="close-' + id + '" class="close">&times;</div></div><div class="content">' + json +  '</div></div>');
 +
             hover = $('#' + id);
  
             hover.on("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(e){ hover.off(e);  
+
            origin = 'top';
             if (hover.attr('class').indexOf('mwe-popups-fade-out') >= 0 ) {
+
            var posleft = lnk.offset().left;
               hover.removeClass("mwe-popups-fade-out-down").css({'visibility':'hidden','top':'0','left':'0', 'z-index':'0'});
+
            var postop = lnk.offset().top;
            } });
+
            posleft = posleft <= 50 ? 10 : posleft - 50;
          } );
+
            postop = postop <= 200 ? 10 : postop - 200;
 +
             hover.css({"z-index":count,"left":posleft+"px","top":postop+"px","visibility":"visible"})
 +
                  .addClass("mwe-popups-fade-in-up");
 +
             dragElement(hover);
 +
            $('#close-'+id).on('click', function() {
 +
              if (origin == 'top') hover.removeClass("mwe-popups-fade-in-up").addClass("mwe-popups-fade-out-down");
 +
               else hover.removeClass("mwe-popups-fade-in-down").hover.addClass("mwe-popups-fade-out-up");
  
          dte = Date.now();
+
              hover.on("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(e){ hover.off(e);
 +
              if (hover.attr('class').indexOf('mwe-popups-fade-out') >= 0 ) {
 +
                hover.removeClass("mwe-popups-fade-out-down").css({'visibility':'hidden','top':'0','left':'0', 'z-index':'0'});
 +
              } });
 +
            } );
  
          return false;
 
  
        }, error: function(xhr, ajaxOptions, thrownError) {
+
          },
          alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
+
          error: function(xhr, ajaxOptions, thrownError) {
        }
+
              alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
      });
+
          }
    } else if (hover.css('visibility') == 'hidden') {
 
      hover.css({"z-index":count,"left":(lnk.offset().left-50)+"px","top":(lnk.offset().top-200)+"px","visibility":"visible"}).addClass("mwe-popups-fade-in-up");
 
    }
 
  }
 
  
});
+
        });
 +
      } else {
 +
        $('#' + id).css('visibility', 'visible');
 +
      }
 +
    });

Revision as of 05:48, 11 June 2020

/* Any JavaScript here will be loaded for all users on every page load. */
    var id, timeOut, origin, mouseWhere='',
        container = $("body"),
        count=0;
    // endvar

    function dragElement(elmnt) {
      var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
      if ($('#'+elmnt[0].id + "header")) {
        /* if present, the header is where you move the DIV from:*/
        $('#'+elmnt[0].id + "header").on('mousedown', dragMouseDown);
      } else {
        /* otherwise, move the DIV from anywhere inside the DIV:*/
        elmnt.on('mousedown',dragMouseDown);
      }

      function dragMouseDown(e) {
        e = e || window.event;
        e.preventDefault();
        // get the mouse cursor position at startup:
        pos3 = e.clientX;
        pos4 = e.clientY;
        $(document).on('mouseup',closeDragElement);
        // call a function whenever the cursor moves:
        $(document).on('mousemove',elementDrag);
      }

      function elementDrag(e) {
        e = e || window.event;
        e.preventDefault();
        // calculate the new cursor position:
        pos1 = pos3 - e.clientX;
        pos2 = pos4 - e.clientY;
        pos3 = e.clientX;
        pos4 = e.clientY;
        // set the element's new position:
        elmnt.css('top', (elmnt[0].offsetTop - pos2) + "px");
        elmnt.css('left', (elmnt[0].offsetLeft - pos1) + "px");
      }

      function closeDragElement() {
        /* stop moving when mouse button is released:*/
        $(document).off('mouseup',closeDragElement);
        $(document).off('mousemove',elementDrag);
      }
    }
    function clickClose(i) {  $('#close-'+ i).trigger('click');  }
    function getID(el) {  return el.text().replace(' ', '').replace(':','').replace('-','');  }
    function showHover(hover, lnk) {
      var posleft = lnk.offset().left;  posleft = posleft <= 50 ? 10 : posleft - 50;
      var postop = lnk.offset().top;    postop  = postop <= 200 ? 10 : postop - 200;

      hover.css({"z-index":count,
                    "left":posleft+"px",
                     "top":postop+"px",
              "visibility":"visible"})
           .addClass("mwe-popups-fade-in-up");

    }


    $(document)
        .on( 'mouseover keyup', '.verse', function ( event ) {
          var lnk = $(this);
          // delay showing the verse hover box
          setTimeout(function(){
            verse = lnk.text();
            id = getID(lnk);
            var hover = $('#' + id);
            count++;
            if (hover.length === 0) {
              $.ajax({ 
                url: '/chronology/index.php?route=common/home/sa',
                type: 'get',
                data: '&verse=' + verse,
                dataType: 'html',
                beforeSend: function() {
                  // set the verse hover box:  content is loading
                  lnk.after('<div id="' + id +'" class="hover"><div id="'+ id +'header" class="header">' + verse + '<div id="close-' + id + '" class="close">&times;</div></div><div class="content"><img src="/natnee/images/6.gif" /></div></div>');
                },
                success: function(json) {
                  // verse hover box:  content is the verse
                  $('#' + id + ' .content').html(json);
                  // important to redefine the hover; it becomes null if it isn't defined
                  hover = $('#' + id);                    
                  origin = 'top';
                  showHover(hover, lnk);
                  // make it draggable
                  dragElement(hover);
                  // when [x] of verse hover is clicked
                  $('#close-'+id).on('click',
                    function() {
                      if (origin == 'top') hover.removeClass("mwe-popups-fade-in-up").addClass("mwe-popups-fade-out-down");
                      else                 hover.removeClass("mwe-popups-fade-in-down").hover.addClass("mwe-popups-fade-out-up");

                      hover.on("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", 
                        function(e){ hover.off(e); 
                          if (hover.attr('class').indexOf('mwe-popups-fade-out') >= 0 ) {
                            hover.removeClass("mwe-popups-fade-out-down").css({'visibility':'hidden','top':'0','left':'0', 'z-index':'0'});
                          }
                        }
                      );//end hover animation
                    }
                  );//end close on click


                  return false;

                }, error: function(xhr, ajaxOptions, thrownError) {
                  alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
                }
              });
            } else if (hover.css('visibility') == 'hidden') { showHover(hover, lnk); }

          }, 700);
        })
        .on( 'mouseout blur', '.verse', function () {  timeOut = setTimeout( clickClose, 1000, getID($(this))); })
        .on( 'mouseover',     '.hover', function() {  clearTimeout( timeOut );  })
        .on( 'mouseout',      '.hover', function() {  timeOut = setTimeout( clickClose, 1000, $(this)[0].id );  });
    // end document



    $('bak.verse').on('click', function(){ 
      var lnk = $(this);

      verse = lnk.text();
      id = getID(lnk);
      var hover = $('#' + id);//$('#hover-'+title);
      
      if ($('#' + id).length === 0) {
        $.ajax({
          url: '/chronology/index.php?route=common/home/sa',
          type: 'get',
          data: '&verse=' + verse,
          dataType: 'html',
          beforeSend: function() { },
          success: function(json) {
            lnk.after('<div id="' + id +'" class="hover"><div id="'+ id +'header" class="header">' + verse + '<div id="close-' + id + '" class="close">&times;</div></div><div class="content">' + json +  '</div></div>');
            hover = $('#' + id);

            origin = 'top';
            var posleft = lnk.offset().left;
            var postop = lnk.offset().top;
            posleft = posleft <= 50 ? 10 : posleft - 50;
            postop = postop <= 200 ? 10 : postop - 200;
            hover.css({"z-index":count,"left":posleft+"px","top":postop+"px","visibility":"visible"})
                  .addClass("mwe-popups-fade-in-up");
            dragElement(hover);
            $('#close-'+id).on('click', function() {
              if (origin == 'top') hover.removeClass("mwe-popups-fade-in-up").addClass("mwe-popups-fade-out-down");
              else hover.removeClass("mwe-popups-fade-in-down").hover.addClass("mwe-popups-fade-out-up");

              hover.on("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(e){ hover.off(e); 
              if (hover.attr('class').indexOf('mwe-popups-fade-out') >= 0 ) {
                hover.removeClass("mwe-popups-fade-out-down").css({'visibility':'hidden','top':'0','left':'0', 'z-index':'0'});
              } });
            } );


          },
          error: function(xhr, ajaxOptions, thrownError) {
              alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
          }

        });
      } else {
        $('#' + id).css('visibility', 'visible');
      }
    });