User:Chriskang/Sandbox/fwk.js
From Guild Wars 2 Wiki
< User:Chriskang | Sandbox
Jump to navigationJump to search
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
/*<nowiki>*/ var mainTimer; var effectInProgress = true; var mouseX = 0; var mouseY = 0; var mainPanel; var imageCount = 0; function effectTick() { if (effectInProgress) { doAllEffects(); mainTimer = setTimeout("effectTick()",50); } } function doAllEffects() { //document.getElementById('debugTxtOffsetLeft').firstChild.nodeValue = document.getElementById('debugTxt').offsetLeft; //document.getElementById('debugTxtOffsetTop').firstChild.nodeValue = document.getElementById('debugTxt').offsetTop; //document.getElementById('debugTxtScrollX').firstChild.nodeValue = document.body.scrollLeft; if (mainPanel) { for ( var i = 0; i < imageCount; i++ ) { zoomOneImage(mainPanel.childNodes[i].childNodes[0], 100 + (600 / (imageCount - 1)) * i); } } //zoomOneImage('1', 85); //zoomOneImage('2', 175); //zoomOneImage('3', 265); //zoomOneImage('4', 355); //zoomOneImage('5', 445); //zoomOneImage('6', 535); //zoomOneImage('7', 625); //zoomOneImage('8', 715); } function zoomOneImage(imageNode, centerX) { var delta1 = 130 - 2 * Math.abs(mouseX - centerX); if (Math.abs(mouseY - 130) > 60) { delta1 = delta1 - 2 * (Math.abs(mouseY - 130) - 60); } delta1 = Math.max(delta1, 0); delta1 = Math.min(delta1, 90); if (imageNode) { imageNode.style.width = "" + (100 + delta1 / 2) + "px"; imageNode.style.height = "" + (120 + delta1 / 1.667) + "px"; //imageNode.style.left = "" + ((centerX - 40 - delta1 / 3 / 2) - (mouseX - centerX) / 50) + "px"; imageNode.style.left = "" + (centerX - 50 - delta1 / 4) + "px"; imageNode.style.top = "" + (40 - delta1 / 2.3) + "px"; imageNode.style.zIndex = "" + delta1; imageNode.style.position = "absolute"; } //setOpacity(imageNode, 0.5 + delta1 / 200.0); } //var IE = document.all?true:false //if (!IE) document.captureEvents(Event.MOUSEMOVE) function captureMousePosition(e) { if (mainPanel) { if (!e) var e = window.event; if (e.pageX || e.pageY) { //Firefox, Chrome mouseX = e.pageX - getX(mainPanel); mouseY = e.pageY - mainPanel.offsetTop } else if (e.clientX || e.clientY) { //IE mouseX = e.clientX - getX(mainPanel) + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); mouseY = e.clientY - mainPanel.offsetTop + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); } //mouseX = mouseX - getX(mainPanel); //mouseY = mouseY - getY(mainPanel); if (mouseX < 0) mouseX = 0; if (mouseY < 0) mouseY = 0; if (mouseX > 790) mouseX = 790; if (mouseY > 300) mouseY = 300; } return true } function getX( oElement ) { var iReturnValue = 0; while( oElement != null ) { iReturnValue += oElement.offsetLeft; oElement = oElement.offsetParent; } return iReturnValue; } function getY( oElement ) { var iReturnValue = 0; while( oElement != null ) { iReturnValue += oElement.offsetTop; oElement = oElement.offsetParent; } return iReturnValue; } function setOpacity(obj, val) { obj.style.opacity = val; obj.style.filter = "alpha(opacity="+ val*100 +")"; } function initialize() { //next line is stolen from Poke's CollapsibleTables var docContent = document.getElementById('bodyContent') || document.getElementById('article') || document.getElementById('mw_contentholder'); if (docContent) { var divs = docContent.getElementsByTagName('div'); for ( var i = 0, n = divs.length; i < n; i++ ) { if (divs[i].className == 'magnified') { mainPanel = divs[i]; imageCount = mainPanel.childNodes.length; } } } effectTick(); } initialize(); document.onmousemove = captureMousePosition; /*</nowiki>*/