_ _    _ _____  ___   __                       
 __      _(_) | _(_)___ / ( _ ) / /_   ___ ___  _ __ ___  
 \ \ /\ / / | |/ / | |_ \ / _ \| '_ \ / __/ _ \| '_ ` _ \ 
  \ V  V /| |   <| |___) | (_) | (_) | (_| (_) | | | | | |
   \_/\_/ |_|_|\_\_|____/ \___/ \___(_)___\___/|_| |_| |_|

User:Parkerdr/popupBookmarks.js

User:Parkerdr/popupBookmarks.js is a topic that has captured the attention of millions of people around the world. Since its appearance on the public scene, it has generated endless debate and has sparked growing interest in various disciplines. This phenomenon has been the subject of study by academics, has inspired artists and has challenged conventions in its respective industry. As User:Parkerdr/popupBookmarks.js continues to make headlines and generate controversy, it is important to analyze its impact on contemporary society and understand the extent to which it has shaped the way we think and act. In this article, we will closely explore User:Parkerdr/popupBookmarks.js and examine its influence on different aspects of our daily lives.
//
//Extended bookmarks script, to accept the current page as the bookmarks page.
//
//any tables are hidden, and edit section (<span>s are hidden.
//
var myCookie = getCookie("roadmappage");
if (myCookie == null) {
  validatePage();
} else
  myBkmPagex = myCookie;

var myBkmURL = wgServer + wgArticlePath.replace('$1','') + myBkmPagex

if (doneOnloadHook) myBookmarksLoad()
else addOnloadHook(myBookmarksLoad)

function myBookmarksLoad() {
 var obj_id = window.myBkmPlace || 'p-personal'
 var obj = document.getElementById(obj_id)
 if (!obj) return
 var bkmLink
 if (obj.className && obj.className == 'portlet') {
   mw.util.addPortletLink(obj_id, myBkmURL, window.myBkmName || 'Bookmarks', 't-bkmmenu')
   obj = document.getElementById('t-bkmmenu')
 }
 if (window.myBkmShowOnHover != 2) addHandler(obj, 'click', myBookmarks)
 if (window.myBkmShowOnHover) addHandler(obj, 'mouseover', myBookmarks)
}


function myBookmarks(e){
 if (e.preventDefault) e.preventDefault(); else e.returnValue = false //do not follow the link
 if (!window.bkmMenu) myBookmarksIni()
 bkmMenu.ShowHide(e)
 return false 
}




function myBookmarksIni(){
  var ht = sajax_init_object()  
  ht.open('GET', myBkmURL + '?action=render', false)  
  ht.send(null)
  bkmMenu = new mnuObj('papka', ht.responseText, 
     (window.myBkmHideOnHover!=2), window.myBkmHideOnHover)
  if (window.myBkmNewWin){
    var links = bkmMenu.div.getElementsByTagName('a')
    for (var i=0; i<links.length; i++)
      links.target = '_blank'
  }
  var tables = bkmMenu.div.getElementsByTagName('table')
    for (var i=0; i< tables.length; i++) {
      tables.style.display='none'
      tables.width = 10
    }
  var spans = bkmMenu.div.getElementsByTagName("span");
      for (var j = 0; j < spans.length; j++)
      {
        if (spans.className == "editsection")
        {
           spans.style.display='none'
        }
      }
  var links = bkmMenu.div.getElementsByTagName('a');
  var home = window.location.pathname.substring(1).replace (/ /, "_");
    for (var i=0; i<links.length; i++)
      if (links.pathname.replace (/ /, "_") == home) {
          links.style.backgroundColor = 'yellow'
      } 
//else bkmMenu.div.innerHTML += '<br>' + links.pathname + ' ' + window.location.pathname

  bkmMenu.div.innerHTML += '<div style="text-align:right">'
  + '  <br>  </div>'

}




/* MENU */

function mnuObj(id, html, isMouseUp, isMouseOut) {
 var d = document.createElement('div')
 d.id=id
 d.className = 'menudiv'
 d.innerHTML=html
 d.style.display='none' 
 d.style.position='absolute' 
 d.style.padding='5px'
 d.style.border='3px outset' 
 d.style.zIndex = '50' 
 d.style.backgroundColor='#EEEEEE'
 document.body.appendChild(d)
 this.div = d
 this.div.obj = this //backlink

 this.Hide = function (){
  this.div.style.display = 'none'
 }

 this.ShowHide = function (e){
   if (this.div.style.display == 'block') this.Hide()
   else this.Show(e) 
 }  

 this.Show = function (e){
  this.div.style.display = 'block'
  var e = e || window.event
  if (!e) return
  var coords = getMousePos(e)
  var posx = coords, posy = coords
  this.div.style.top = posy + 5 + 'px'
  posx -= elementWidth(this.div)/2
  if (posx + elementWidth(this.div) > windowWidth())   posx = windowWidth() - elementWidth(this.div) - 20
  else if (posx < 0)  posx = 10
  this.div.style.left = posx + 'px'
 }


 this.hideOnMouseUp = function (e){
	 var e = e || window.event
	 if ((e.which && e.which == 3) || (e.button && e.button == 2)) return //except right-click
   var targ = e.srcElement || e.target
   while (targ && (!targ.className || targ.className != 'menudiv')) targ = targ.parentNode
   if (!targ) return
   targ.style.display = 'none'
 }

 this.hideOnMouseOut = function(e){
   var e = e || window.event
   var targ = e.srcElement || e.target
   while (targ && (!targ.className || targ.className != 'menudiv')) targ = targ.parentNode
   if (!targ) return
   var toEl = e.toElement || e.relatedTarget
   while (toEl && toEl != targ && toEl.nodeName != 'BODY') toEl = toEl.parentNode
   if (toEl == targ) return
   targ.style.display = 'none'
 }

 if (isMouseUp) addHandler(this.div, 'mouseup', this.hideOnMouseUp)
 if (isMouseOut) addHandler(this.div, 'mouseout', this.hideOnMouseOut)
}


/*API  */



function windowWidth(){
if (self.innerWidth) // all except Explorer
 return self.innerWidth
else if (document.documentElement && document.documentElement.clientWidth)// Explorer 6 Strict Mode
 return document.documentElement.clientWidth
else if (document.body) // other Explorers
 return document.body.clientWidth
else return 0
}

function elementWidth(el){
 return Math.max(el.scrollWidth, el.offsetWidth)
}

function getMousePos(ev){
 var posx = 0;	var posy = 0
 if (ev.pageX)  
   return 
 else if (ev.clientX) 
   return  [ev.clientX + document.body.scrollLeft + document.documentElement.scrollLeft,
            ev.clientY + document.body.scrollTop  + document.documentElement.scrollTop]
 else return null
}

    function setRoadMap() {
    var expdate = new Date();
    var where = window.location.pathname;
       if (where.substring(0,6) == "https://wiki386.com/en/")
          where = where.substring(6);
       
       expdate.setMonth(expdate.getMonth()+1);
       setCookie ("roadmappage", where, expdate, "/");
       myBkmPagex = where;
       myBkmURL = wgServer + wgArticlePath.replace('$1','') + myBkmPagex;
       bkmMenu = null;
    }
    function resetRoadMap(){
       var expdate = new Date();    
       setCookie ("roadmappage", "", expdate, "/");
       validatePage();
       bkmMenu = null;
   
    }
    function validatePage() {
       if (!window.myBkmPage) 
           myBkmPagex = '/Bookmarks';
       else 
           myBkmPagex = myBkmPage;
       if (myBkmPagex.charAt(0)=='/') myBkmPagex = 'User:' + wgUserName + myBkmPagex
       myBkmURL = wgServer + wgArticlePath.replace('$1','') + myBkmPagex;
    }
// name - name of the cookie
   // * return string containing value
   // of specified cookie or null if cookie
   // does not exist
   function getCookie(name) {
      var prefix = name + "="
      var cookieStartIndex = document.cookie.indexOf(prefix)
      if (cookieStartIndex == -1)
         return null
      var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex +
         prefix.length)
      if (cookieEndIndex == -1)
         cookieEndIndex = document.cookie.length
      return unescape(document.cookie.substring(cookieStartIndex +
         prefix.length,
   cookieEndIndex))
   }

function setCookie (sName, vValue)
{
    var argv = setCookie.arguments, argc = setCookie.arguments.length;
    var sExpDate = (argc > 2) ? "; expires="+argv.toGMTString() : "";
    var sPath = (argc > 3) ? "; path="+argv : "";
    var sDomain = (argc > 4) ? "; domain="+argv : "";
    var sSecure = (argc > 5) && argv ? "; secure" : "";
    document.cookie = sName + "=" + escape(vValue,0) + sExpDate + sPath + sDomain + sSecure + ";";
}