var curCol = 3 //стойноста не променя нищо var curRow = 5 var hfold //3* mini karta var curMCols = l0Cols var curMRows = l0Rows var pikW = miniW * maxCols / curMCols var pikH = miniH * maxRows / curMRows var clX = 0 var clY = 0 var miniX = 0 var miniY = 0 var curZoomUp = true //3 //--------------------------------------------ne se promenq------------ //start Loading... var strTD1 = '' hfold = document.location.href for (var i = hfold.length; hfold.charAt(i)!="/"; i--){} hfold=hfold.substring(0,i+1) var strA = '' var strA1 = '' var strIMG1 = '" name="' var strIMG2 = '">' //razmer na kartinkite v kwadratite strCode = new Array() //мащаб Ниво l0 for (r = 1; r <= scrRows; r++){ strCode[r] ='' for (c = 1; c <= scrCols; c++){ strCode[r] += strTD // if (c > l0Cols || r > l0Rows){ strCode[r] += strA + strIMG + 'blanc.gif' + strIMG1 + 'c' + c + 'r' + r + strIMG2 + strA1 }else{ strCode[r] += strA + strIMG + fold + '/l' + curLev + '-' + c + 'x' + r + '.png' + strIMG1 + 'c' + c + 'r' + r + strIMG2 + strA1 // } strCode[r] += strTD1 + '\n\n' // } } //end Loading............................ // местене function mvRight(){ //на дясно if ((curCol+maxCols-1) < curMCols){ for (r = 1; r <= maxRows; r++){ var rr = curRow + r - 1 for (c = 1; c <= maxCols; c++){ var cc = curCol + c var imgName = eval('document.c'+c+'r'+r) imgName.src = fold + '/l' + curLev + '-' + cc + 'x' + rr + '.png' // } } curCol++ miniView() }else{document.mvR.src = "./left_arrow.gif";setTimeout('document.mvR.src = "./right.gif"',500);} } function mvLeft(){ // наляво if (curCol > 1){ for (r = 1; r <= maxRows; r++){ var rr = curRow + r - 1 for (c = 1; c <= maxCols; c++){ var cc = curCol + c - 2 var imgName = eval('document.c'+c+'r'+r) imgName.src = fold + '/l' + curLev + '-' + cc + 'x' + rr + '.png' } } curCol-- miniView() }else{document.mvL.src = "./right_arrow.gif";setTimeout('document.mvL.src = "./left.gif"',500);} } function mvDown(){ //надолу if ((curRow+maxRows-1) < curMRows){ for (c = 1; c <= maxCols; c++){ var cc = curCol + c - 1 for (r = 1; r <= maxRows; r++){ var rr = curRow + r var imgName = eval('document.c'+c+'r'+r) imgName.src = fold + '/l' + curLev + '-' + cc + 'x' + rr + '.png' } } curRow++ miniView() }else{document.mvD.src = "./up_arrow.gif";setTimeout('document.mvD.src = "./down.gif"',500);} } function mvUp(){ //нагоре if (curRow > 1){ for (c = 1; c <= maxCols; c++){ var cc = curCol + c - 1 for (r = 1; r <= maxRows; r++){ var rr = curRow + r - 2 var imgName = eval('document.c'+c+'r'+r) imgName.src = fold + '/l' + curLev + '-' + cc + 'x' + rr + '.png' } } curRow-- miniView() }else{document.mvU.src = "./down_arrow.gif";setTimeout('document.mvU.src = "./up.gif"',500);} } //нагоре/надолу и на ляво function mvUpLeft(){ if(curCol > 1 && curRow > 1){ mvUp() mvLeft() }else{document.mvUL.src = "./downright.gif";setTimeout('document.mvUL.src = "./upleft.gif"',500);} } function mvDownLeft(){ if(curCol > 1 && (curRow+maxRows-1) < curMRows){ mvDown() mvLeft() }else{document.mvDL.src = "./upright.gif";setTimeout('document.mvDL.src = "./downleft.gif"',500);} } //нагоре/надолу и на дясно function mvUpRight(){ if((curCol+maxCols-1) < curMCols && curRow > 1){ mvUp() mvRight() }else{document.mvUR.src = "./downleft.gif";setTimeout('document.mvUR.src = "./upright.gif"',500);} } function mvDownRight(){ if((curRow+maxRows-1) < curMRows && (curCol+maxCols-1) < curMCols){ mvDown() mvRight() }else{document.mvDR.src = "./upleft.gif";setTimeout('document.mvDR.src = "./downright.gif"',500);} } // намаляване function zoomIn(X,Y){ if (curLev < (maxLev - 1)){ curLev++ //if (strIMG < (strIMG - 1)){ //strIMG++ zoom(X,Y) } } //увеличаване function zoomOut(X,Y){ if (curLev > 0){ curLev-- zoom(X,Y) } } //увеличаване назад function zoomTo(lev){ if (curLev != lev){ curLev = lev zoom(maxCols*pixCol/2,maxRows*pixRow/2) } } //увеличаване напред function zoomToNext(){ zoomIn(maxCols*pixCol/2,maxRows*pixRow/2) //zoom (scrCols*pixCol,scrRows*pixRow)//(strIMG*2, strTD*2) мести картата по диагонал } //предишно ниво function zoomToPrev(){ zoomOut(maxCols*pixCol/2,maxRows*pixRow/2) //zoom (scrCols/pixCol/2,scrRows/pixRow/2)//(strIMG*2, strTD*2) мести картата по диагонал } //премества маркера за увеличение zcur.gif function zoomShow(){ for (i = 0; i < maxLev; i++){ if (i < curLev){var imgSrc = eval('document.z' + i);imgSrc.src = './zout.gif'} if (i == curLev){var imgSrc = eval('document.z' + i);imgSrc.src = './zcur.gif'} if (i > curLev){var imgSrc = eval('document.z' + i);imgSrc.src = './zin.gif'} } } //увеличение мащаб скала function zoomScale(){ var curScl = eval('scale' + curLev) if (curScl){ var strScl = '

 ' + curScl + '

' document.all.scale.innerHTML = strScl } } //--показва картата според мащаба function zoom(X,Y){ maxCols = scrCols maxRows = scrRows var oldMRows = curMRows var oldMCols = curMCols curMRows = eval('l'+curLev+'Rows') curMCols = eval('l'+curLev+'Cols') if (maxCols > curMCols){maxCols = curMCols} if (maxRows > curMRows){maxRows = curMRows} curRow = Math.floor(((Y + (curRow - 1) * pixRow) * curMRows) / (oldMRows * pixRow)- ((scrRows-1)/2)) +1 curCol = Math.floor(((X + (curCol - 1) * pixCol) * curMCols) / (oldMCols * pixCol)- ((scrCols-1)/2)) +1 if (curRow < 1){curRow = 1} if (curCol < 1){curCol = 1} if ((curCol+maxCols-1) > curMCols){ curCol = curMCols - maxCols + 1 } if ((curRow+maxRows-1) > curMRows){curRow = curMRows - maxRows + 1} for (r = 1; r <= scrRows; r++){ var rr = curRow + r - 1 for (c = 1; c <= scrCols; c++){ var cc = curCol + c - 1 var imgName = eval('document.c'+c+'r'+r) if (c > maxCols || r > maxRows){ imgName.src = 'blanc.gif' }else{ imgName.src = hfold + fold + '/l' + curLev + '-' + cc + 'x' + rr + '.png' } } } if (curLev == (maxLev - 1)){curZoomUp = false} //maxLev ако е "curlev" не връща назад 1 ниво else {curZoomUp = true} miniZoom() zoomShow() zoomScale() } //мини визуализация function miniView(){ document.all.pik.style.left = miniW/curMCols*(curCol-1)+(440 - miniW - 20) document.all.pik.style.top = miniH/curMRows*(curRow-1)+5 hidePlace() } function miniZoom(){ //малкия правоъгълник в мини картата pikW = Math.floor(miniW * maxCols / curMCols)-2+curLev pikH = Math.floor(miniH * maxRows / curMRows)-2+curLev document.pikk.width = pikW document.pikk.height = pikH document.all.pik.style.width = pikW document.all.pik.style.height = pikH miniView() } // кликване в мини визуализацията картинка горе function miniClick(){ var X var Y Y = clY + offY - 5 X = clX + offX - (440 -miniW - 20) maxCols = scrCols maxRows = scrRows curMRows = eval('l'+curLev+'Rows') curMCols = eval('l'+curLev+'Cols') if (maxCols > curMCols){maxCols = curMCols} if (maxRows > curMRows){maxRows = curMRows} curRow = Math.floor(Y*curMRows/miniH - ((scrRows-1)/2)) +1 curCol = Math.floor(X*curMCols/miniW - ((scrCols-1)/2)) +1 if (curRow < 1){curRow = 1} if (curCol < 1){curCol = 1} if ((curCol+maxCols-1) > curMCols){ curCol = curMCols - maxCols + 1 } if ((curRow+maxRows-1) > curMRows){ curRow = curMRows - maxRows + 1 } for (r = 1; r <= scrRows; r++){ var rr = curRow + r - 1 for (c = 1; c <= scrCols; c++){ var cc = curCol + c - 1 var imgName = eval('document.c'+c+'r'+r) if (c > maxCols || r > maxRows){ imgName.src = 'blanc.gif' }else{ imgName.src = fold + '/l' + curLev + '-' + cc + 'x' + rr + '.png' } } } miniZoom() zoomShow() zoomScale() } //моя добавка function zoomBox(){ //увеличава едно ниво при кликване на картата if (clX <= maxCols * pixCol && clY <= maxRows * pixRow){ //(maxCols - 2) последните 2 клетки не реагират if (curZoomUp){ zoomIn(clX,clY * 1.1) //корекция на координатите при преминаване в следващото ниво 1.3 }else{ //намалява едно ниво назад при кликване на картата zoomOut(clX,clY) } } } // Event.CLICK кликване в малката карта if (!document.all){ document.captureEvents(Event.CLICK) document.onclick=getClick } function getClick(e){ clX = e.pageX - offX clY = e.pageY - offY } function getClickIE(evt){ miniX = evt.clientX miniY = evt.clientY sT = document.body.scrollTop clX = evt.clientX - offX clY = evt.clientY - offY + sT } //показване на обект function showObject(absX,absY){ var cMRows = eval('l'+(maxLev-1)+'Rows') var cMCols = eval('l'+(maxLev-1)+'Cols') var shX = Math.floor((absX * curMCols)/cMCols) - (curCol - 1) * pixCol var shY = Math.floor((absY * curMRows)/cMRows) - (curRow - 1) * pixRow curLev = maxLev - 1 zoom(shX,shY) showPlace(absX,absY) } //показване на картата function showPlace(absX,absY){ var shX = absX - (curCol - 1) * pixCol var shY = absY - (curRow - 1) * pixRow //показва колалцето над обекта document.all.obj.style.left = shX - 9 + offX document.all.obj.style.top = shY - 9 + offY document.all.obj.style.visibility = 'visible' document.all.obj.style.width = 50 document.all.obj.style.height = 50 //document.all.map.onmouse.pix= '+shX+ +shY+' //document.all.map.innerHTML = document.all.map.onmouse.pix } //скриване на function hidePlace(){ document.all.obj.style.visibility = 'hidden'} /** позицията на мишката в пиксели**/ function getMousePosition(e) { return e.pageX ? {'x':e.pageX, 'y':e.pageY} : {'x':e.clientX + document.mapView.documentElement.scrollLeft + document.mapView.scrollLeft, 'y':e.clientY + document.mapView.documentElement.scrollTop + document.mapView.scrollTop}; } /*function showMousePos(e) { if (!e) e = event; // make sure we have a reference to the event var input = document.getElementById('mousepos'); var mp = getMousePosition(e); var kol = parseInt(mp.x / pixCol +1); // изчислява колоните отляво на дясно като цяло число var red = parseInt(mp.y / pixRow +1); // изчислява редовете отгоре надолу input.value = 'x : ' + mp.x + ', y : ' + mp.y + ' file: l' + curLev + '-' + red + 'x' + kol + '.png'; //показва ред колона ',кол:' +kol+ ',ред:'+ red + } */ function showMousePos(e) { if (!e) e = event; // make sure we have a reference to the event var input = document.getElementById('mousepos'); var mp = getMousePosition(e); var kl = curCol + c // изчислява колоните отляво които не се виждат var kol = kl*pixCol - scrCols*pixCol //- 1515//3608//6008; //превръща в пх и изважда 1561 за изравняване от ляво (1563) var koll = mp.x + kol- 8 //изчислява на коя колона е мишката. 8 се прибавя за изравняване на 0 позиц. на мишката с началото на клетката var kollv = mp.x + kol -2*pixCol -8 //-15 //показва реалните координати за фаила с улиците корекция var rl = curRow + r // изчислява редовете отгоре които не се виждат var red = rl*pixRow - scrRows*pixRow //- 1028//1868//4268; //превръща в пх и изважда 1119 за изравняване от горе (1136) var redd = mp.y + red -79 //изчислява на кой ред е мишката. 69 се прибавя за изравняване на 0 позиц. на мишката с началото на клетката var reddv = mp.y + red -2*pixRow -79//-15 //показва реалните координати за фаила с улиците var kolf = parseInt(koll / pixCol -1); // изчислява колоните отляво на дясно като цяло число var redf = parseInt(redd / pixRow -1); // изчислява редовете отгоре надолу като цяло число input.value = 'x : '+ kollv +', y : '+ reddv +' || file: l' + curLev + '-' + kolf + 'x' + redf + '.jpg'; // показва резултата } function inite() { document.onmousemove = showMousePos; } window.onload = inite; // function removeElement() { document.getElementById("imgbox1").style.display="none"; } function resetElement() { document.getElementById("imgbox1").style.display="block"; } // document.writeln('') // document.writeln('') /* */ document.writeln('
') //лого cityName ? //*1 var miniH1 = miniH + 2 * 5 document.writeln('') document.writeln('') document.writeln('

'+cityName+'

') //1024 document.writeln('') for (i = 1; i <= scrRows; i++){ document.writeln(strCode[i]) document.writeln('') } document.writeln('
') /* */ document.writeln('
') /* */ document.writeln('
') document.write('
') //позиционира малката карта document.all.minimap.style.width = miniW document.all.minimap.style.height = miniH document.all.minimap.style.left = 440 - miniW - 20 document.writeln('
') document.write('
') // document.all.pik.style.width = miniW document.all.pik.style.height = miniH document.all.pik.style.left = 440 - miniW - 20 /* */ document.writeln(' ')