// //This script was contributed by TYDAC AG : http://www.tydac.ch/ // /** * * @project CWC2 * @revision $Id: eventslib.js,v 1.20 2004/05/23 23:58:58 pspencer Exp $ * @purpose Used with Ruler widget * @author DM Solutions Group (assefa@dmsolutions.ca) * @copyright * Copyright (c) 2002, DM Solutions Group Inc. * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ function startDist(e){ //alert ("startDist"); var ontarget=false; gRulerHideLayers = 1; if (gRulerg_digitTool == true){var gRulerg_end_digit = false;} //if (isIE4 || isNav6){ontarget=ctrlIEonTarget(e)} if (MapWinsideMap()) ontarget = true; //alert(ontarget); if (ontarget == true){ // add point to the array of points if (isNav4 || isNav6) { // only add if not a duplicate of last record if ( DistTool.aaPointTrace.length > 0 ) { if ( DistTool.aaPointTrace[DistTool.aaPointTrace.length-1][0] != e.pageX || DistTool.aaPointTrace[DistTool.aaPointTrace.length-1][1] != e.pageY ) DistTool.aaPointTrace[DistTool.aaPointTrace.length] = new Array(e.pageX,e.pageY); } else DistTool.aaPointTrace[DistTool.aaPointTrace.length] = new Array(e.pageX,e.pageY); } else { // only add if not a duplicate of last record if ( DistTool.aaPointTrace.length > 0 ) { if ( DistTool.aaPointTrace[DistTool.aaPointTrace.length-1][0] != window.event.clientX + document.body.scrollLeft || DistTool.aaPointTrace[DistTool.aaPointTrace.length-1][1] != window.event.clientY + document.body.scrollTop ) DistTool.aaPointTrace[DistTool.aaPointTrace.length] = new Array(window.event.clientX + document.body.scrollLeft,window.event.clientY + document.body.scrollTop); } else DistTool.aaPointTrace[DistTool.aaPointTrace.length] = new Array(window.event.clientX + document.body.scrollLeft,window.event.clientY + document.body.scrollTop); } if (gRulerfirstClickDist == false){ if (isNav4 || isNav6){ if (e.which == 3){ stopDist(e) } } if (isIE4 || isNav6){DistTool.dtDrawDist(e)} DistTool.dtSetInflection(e) if (gRulerg_end_digit == true){stopDist(e)} return false } else { DistTool.dtDistance = 0 gRulerfirstClickDist = false DistTool.dtInitDist(e, gRulerSpaceBetweenPoints) } } return false } function ctrlIEonTarget(e){ if (MapWinsideMap) return true; else return false; //not used after this : original code. if (isNav6){ if (e.pageX >= gRulerMapImgOX && e.pageX < gRulerMapImgOX + gRulercMapWidth && e.pageY >= gRulerMapImgOY && e.pageY < gRulerMapImgOY + gRulercMapHeight){ return true } else { return false } }else{ if (window.event.clientX >= gRulerMapImgOX && window.event.clientX < gRulerMapImgOX + gRulercMapWidth && window.event.clientY >= gRulerMapImgOY && window.event.clientY < gRulerMapImgOY + gRulercMapHeight){ return true } else { return false } } } //not used function mouseOnMap() { //alert("mouseOnMap"); document.onmousedown = document.onmousemove = document.onDblClick = null if (isNav4){ document.captureEvents(Event.MOUSEDOWN) document.captureEvents(Event.MOUSEMOVE) document.captureEvents(Event.DblClick) } if (gRulerCurrentTool == "distance"){ document.onmousedown=startDist //document.onmousemove=distIt document.onDblClick=stopDist } } function mouseOutMap() { //if (isNav4){ // document.releaseEvents(Event.MOUSEDOWN) // document.releaseEvents(Event.MOUSEMOVE) // document.releaseEvents(Event.DBLCLICK) //} document.onmousedown=null //document.onmousemove=null document.onDblClick=null } function distIt(e){ var ontarget=true moveit(e) if (isIE4 || isNav6){ ontarget=ctrlIEonTarget(e) } if (ontarget == true){ if (gRulerfirstClickDist == false){ DistTool.dtCalcDist(e) } } } function closePoly(e){ DistTool.dtDrawClose(e) stopDist(e) // clear the array of points DistTool.aaPointTrace = new Array(); return false } function stopDist(e) { window.status=""; var ontarget=true if (isIE4 || isNav6){ontarget=ctrlIEonTarget(e)} if (ontarget == true){ gRulerfirstClickDist = true if (gRulerfirstClickDist == false){ if (isNav4) { //document.releaseEvents(Event.DBLCLICK) //document.captureEvents(Event.MOUSEMOVE) //document.onmousemove = document.onmouseup = null //document.onmousemove = distIt } else { //getParObject("MapLayerDiv").onmousemove = null //getParObject("MapLayerDiv").onmousemove = distIt } gRulerfirstClickDist = true } if (gRulerareaMode == true) { var nbPic = 1 var espace = 20 //pixels - interval between pixels during the drag phase var intervalmin = gRulerSpaceBetweenPoints //pixels - interval between pixels once definitively paint var intervalmax = gRulerSpaceBetweenPoints+1 //pixels - idem var flag = false; parent.gRulerareaString = parent.gRulerareaString.substring(1,parent.gRulerareaString.length); dDistX = (parent.startPtX - parent.lastPtX); dDistY = (parent.startPtY - parent.lastPtY); //alert(parent.gRulerareaString +':\n'+ parent.startPtX +','+parent.startPtY + '-'+parent.lastPtX +','+parent.lastPtY); dD = Math.sqrt((dDistX*dDistX)+(dDistY*dDistY)) var Vx = dDistX/dD var Vy = dDistY/dD do { intervalle = dD/nbPic if (intervalle <= intervalmin){flag = true} if (intervalle > intervalmax){ nbPic += 1 } else { flag = true } } while (flag == false) if (parent.gStartPix + nbPic <= gRulerNbPoints){ for (i = parent.gStartPix + 1; i<= parent.gStartPix + nbPic; i++){ shiftTo("pix"+i, parent.lastPtX + (i-parent.gStartPix)*Vx*intervalle,parent.lastPtY +(i-parent.gStartPix)*Vy*intervalle); showLayer("pix"+i) } } } } } function moveit(e){ if (isNav4){ var X = e.pageX - gRulerMapImgOX var Y = e.pageY - gRulerMapImgOY } else{ if (isNav6){ var X = e.pageX - gRulerMapImgOX var Y = e.pageY - gRulerMapImgOY }else{ var X = window.event.clientX - gRulerMapImgOX var Y = window.event.clientY - gRulerMapImgOY } } if (document.forms[0].NAV_CMD != null) { if (document.forms[0].NAV_CMD.value != "RULER") { if (document.forms[0].RULER_RESULT != null) document.forms[0].RULER_RESULT.value == ""; return; } } X = gMapWmouseX; //comes from mapdhtmlwidget Y = gMapWmouseY; var posX = parseFloat(gRulermapMinX) + parseFloat(gRulergblPixelSize) * X var posY = parseFloat(gRulermapMaxY) - parseFloat(gRulergblPixelSize) * Y posX = Math.round(posX) posY = Math.round(posY) var dfDistance = ""; var sStopText = ""; if (isNaN(posX) == false){ var sStatus = "";"Location= " + posX + " / " + posY } if (gRulerCurrentTool == "distance" && gRulerfirstClickDist== false) { dfDistance = (Math.round(parseFloat(gRulergblPixelSize) * DistTool.dtDistance*10)/10); sStatus += " Distance=" + dfDistance; sStatus += " "+gRulersUnits; if (isNav4) sStopText = " Use Right Click to stop"; else if (isNav6) sStopText += " Use Double Click or Press any key to stop."; else sStopText += " Use Double Click or Press any key to stop."; sStatus += sStopText; if (document.forms[0].RULER_RESULT != null) { document.forms[0].RULER_RESULT.value = ""+ dfDistance + " " + gRulersUnits; //window.status = sStopText; } } } function outIE(){ getObject("MapLayerDiv").onmousemove=null } function setMapDraggable(obj) { if(isNav4){ getObject(obj).onmouseover= mouseOnMap getObject(obj).onmouseout= mouseOutMap document.onmousedown=startDist=startDist document.onDblClick=stopDist document.onKeyPress=stopDist document.onKeyUp=stopDist //getObject(obj).onmousemove=distIt } else if (isIE4 || isNav6) { var layer = getParObject(obj) document.onmousedown=startDist document.ondblclick=stopDist layer.onmouseout=outIE //layer.onmousemove=distIt if (isNav6) document.addEventListener("dblclick",stopDist,true); } } //function not used function drawDistPt(){ var str var tobj for (var i=1; i<= 200; i++){ str = "

" document.write(str) str = "

" document.write(str) } }