[Linpha-cvs] SF.net SVN: linpha: [4922] trunk/linpha2/lib/plugins/maps/LinMapsYUI.js
Status: Inactive
Brought to you by:
bzrudi
From: <fan...@us...> - 2008-04-26 09:24:17
|
Revision: 4922 http://linpha.svn.sourceforge.net/linpha/?rev=4922&view=rev Author: fangehrn Date: 2008-04-26 02:23:26 -0700 (Sat, 26 Apr 2008) Log Message: ----------- Added Paths: ----------- trunk/linpha2/lib/plugins/maps/LinMapsYUI.js Copied: trunk/linpha2/lib/plugins/maps/LinMapsYUI.js (from rev 4921, trunk/linpha2/lib/plugins/maps/LinMaps.js) =================================================================== --- trunk/linpha2/lib/plugins/maps/LinMapsYUI.js (rev 0) +++ trunk/linpha2/lib/plugins/maps/LinMapsYUI.js 2008-04-26 09:23:26 UTC (rev 4922) @@ -0,0 +1,355 @@ + +/** + * class and global definitions + */ +var LinMaps = Class.create(); +var myLinMaps; + +LinMaps.prototype = +{ + /** + * initialize() + * Constructor runs on completion of the DOM loading. + */ + initialize: function() + { + this.editMarker = false; + this.showNav = true; + this.defaultMarkerZoom = linMapsDefaultMarkerZoom; + + this.markersData = false; + this.markersObj = new Array(); + this.imagesObj = new Array(); + + this.ajaxUrl = linUrlBase + '&linId=' + linIdCurrent + '&xml'; + }, + + /** + * Marker functions + */ + loadMarkers: function() + { + myLinGlobal.AjaxPost(myLinMaps.ajaxUrl, 'cmd=loadMarkers',myLinMaps.showMarkers); + }, + showMarkers: function(t) + { + var i; + + myLinMaps.markersData = eval('(' + t.responseText + ')'); + //myLinMaps.markers = t.responseText.evalJSON(true); + + /** + * delete existing markers + */ + if( myLinMaps.markersObj ) + { + for( i = 0; i < myLinMaps.markersObj.length; i++ ) + { + myLinMapObject.removeMarker( myLinMaps.markersObj[i] ); + } + + myLinMaps.markersObj = new Array(); + } + + /** + * draw new markers + */ + myLinMapObject.initBounds(); + + for( i = 0; i < myLinMaps.markersData.markers.length; i++ ) + { + myLinMaps.markersObj[i] = myLinMapObject.createMarker( myLinMaps.markersData.markers[i], false ); + } + + /** + * update center + * only if there is more than one marker + * prevent zooming to high + */ + if( i > 0) { + if( i == 1 ) { + myLinMapObject.updateCenter( myLinMaps.markersData.markers[0].zoom ); + } else { + myLinMapObject.updateCenter( 0 ); + } + } + }, + + updateEditMarker: function() + { + if( myLinMaps.editMarker ) // marker activated. use myLinMaps. instead of "this." when fired from GEvent class + { + latlng = myLinMaps.editMarker.getPoint(); + $('linFormEditMarker').linInputLat.value = latlng.lat(); + $('linFormEditMarker').linInputLon.value = latlng.lng(); + $('linFormEditMarker').linInputZoom.value = googlemap.getZoom(); + } + }, + + saveMarker: function(t) + { + xmlAnswer = t.responseXML.documentElement; + + if( xmlAnswer.getElementsByTagName('responseCode').item(0).firstChild.data == 'success' ) + { + myLinMaps.removeEditMarker(); + + myLinMaps.loadMarkers(); + } + else + { + alert(xmlAnswer.getElementsByTagName('responseMsg').item(0).firstChild.data ); + } + }, + + deleteMarker: function(markerId) + { + myLinGlobal.AjaxPost(myLinMaps.ajaxUrl, 'cmd=deleteMarker&markerId='+markerId,myLinMaps.deleteMarkerFinish); + }, + deleteMarkerFinish: function(t) + { + xmlAnswer = t.responseXML.documentElement; + + if( xmlAnswer.getElementsByTagName('responseCode').item(0).firstChild.data == 'success' ) + { + var markerId = xmlAnswer.getElementsByTagName('responseData').item(0).firstChild.data; + + for( i = 0; i < myLinMaps.markersData.markers.length; i++ ) + { + if( myLinMaps.markersData.markers[i].id == markerId ) + { + myLinMapObject.removeMarker( myLinMaps.markersObj[i] ); + myLinMaps.markersObj[i] = false; + } + } + } + else + { + alert(xmlAnswer.getElementsByTagName('responseMsg').item(0).firstChild.data ); + } + }, + + removeEditMarker: function() + { + myLinMapObject.removeMarker( this.editMarker ); + this.editMarker = false; + }, + + assignAlbum: function(markerId,albId) + { + myLinGlobal.AjaxPost(myLinMaps.ajaxUrl, 'cmd=assignAlbum&markerId='+markerId+'&albId='+albId,myLinMaps.assignAlbumFinish); + }, + assignAlbumChange: function(markerId,albId) { + myLinGlobal.AjaxPost(myLinMaps.ajaxUrl, 'cmd=assignAlbumChange&markerId='+markerId+'&albId='+albId,myLinMaps.assignAlbumFinish); + }, + assignAlbumDelete: function(markerId,albId) + { + myLinGlobal.AjaxPost(myLinMaps.ajaxUrl, 'cmd=assignAlbumDelete&markerId='+markerId+'&albId='+albId,myLinMaps.assignAlbumFinish); + }, + assignAlbumFinish: function(t) + { + xmlAnswer = t.responseXML.documentElement; + + // recreate marker on success + if( xmlAnswer.getElementsByTagName('responseCode').item(0).firstChild.data == 'success' ) + { + myLinMaps.loadMarkers(); + } + else + { + // print error message + alert(xmlAnswer.getElementsByTagName('responseMsg').item(0).firstChild.data ); + } + }, + + loadAlbums: function() + { + myLinGlobal.AjaxPost(myLinMaps.ajaxUrl, 'cmd=loadAlbums',myLinMaps.showAlbums); + }, + showAlbums: function(t) + { + $('linDivMapAlbums').innerHTML = ''; + albumsData = eval('(' + t.responseText + ')'); + + for( i = 0; i < albumsData.albums.length; i++ ) + { + $('linDivMapAlbums').innerHTML += + '<a href="javascript:myLinMaps.loadImages(' + albumsData.albums[i].id + ')">' + + albumsData.albums[i].name + '</a><br />'; + } + + myLinGlobal.createPopup('linDivPopupAlbums'); + }, + + /** + * Thumbnail functions + */ + loadImages: function(albId) + { + this.startLoading(); + + myLinMapObject.closeMarkerWindows(); + + if( !this.showNav ) { + this.toggleNav(); + } + + myLinGlobal.AjaxPost(this.ajaxUrl, 'cmd=loadImages&albId='+albId,myLinMaps.showImages); + + }, + showImages: function(t) + { + myLinMaps.imagesData = eval('(' + t.responseText + ')'); + //myLinMaps.images = t.responseText.evalJSON(true); + + /** + * delete existing images + */ + $('linDivMapNav').innerHTML = ''; + if( myLinMaps.imagesObj ) + { + for( i = 0; i < myLinMaps.imagesObj.length; i++ ) + { + myLinMapObject.removeMarker( myLinMaps.imagesObj[i] ); + } + + myLinMaps.imagesObj = new Array(); + } + + + /** + * draw new markers / create thumbnails list + */ + myLinMapObject.initBounds(); + + for( i = 0; i < myLinMaps.imagesData.images.length; i++ ) + { + thumbId = myLinMaps.imagesData.images[i].id; + + var ElemImg = Builder.node('img', {src: thumbSrc + thumbId, className: 'linImgMapThumb', width: displayThumbSize, height: displayThumbSize}); + var ElemA = Builder.node('a', {id: "thumb_"+thumbId, href: 'javascript:myLinMapObject.openImage(' + i + ')'}); + var ElemDiv = Builder.node('div', {className: 'linDivMapsThumb'}); + + ElemA.appendChild( ElemImg ); + ElemDiv.appendChild( ElemA ); + $('linDivMapNav').appendChild(ElemDiv); + + if( i == 0 ) + myLinMaps.imagesObj[i] = myLinMapObject.createMarker( myLinMaps.imagesData.images[i], true ); + else + myLinMaps.imagesObj[i] = myLinMapObject.createMarker( myLinMaps.imagesData.images[i], false ); + } + + myLinMapObject.updateCenter(0); + + myLinMaps.stopLoading(); + + }, + + toggleNav: function() + { + + if( this.showNav ) + { + Element.hide('linDivMapNav'); + + // backup current margin + $('linDivMapNav').style.marginRight = $('linDivMapObject').style.marginRight; + + $('linDivMapObject').style.marginRight = '7px'; + + this.showNav = false; + } + else + { + // restore saved margin + $('linDivMapObject').style.marginRight = $('linDivMapNav').style.marginRight; + $('linDivMapNav').style.marginRight = 0; + + Element.show('linDivMapNav'); + + this.showNav = true; + } + + // update google map size + myLinMapObject.checkResize(); + }, + + + + startLoading: function() { + Element.show('linDivLoadingOuter'); + }, + stopLoading: function() { + Element.hide('linDivLoadingOuter'); + } + + + + + + + + +} // end class LinMaps + +function linOnResizeWrapper() +{ + myLinGlobal.setWindowSize(); + var newHeight = myLinGlobal.linInnerHeight - $('linDivMain').offsetTop - $('linDivMapBottom').offsetHeight - 30; + if(newHeight < 100) + { + newHeight = 100; + } + + $('linDivMapNav').style.height = newHeight + 'px'; + $('linDivMapMain').style.height = newHeight + 'px'; + + + /** + * tempoarely set the map heigth to a small value (zero does not work!) + * in IE setMainHeight() would not work while reducing the window size + * because IE takes always as much space as he actually needs ignoring + * the height attribute + */ + + /*$('linDivMapNav').style.height = '10px'; + $('linDivMapMain').style.height = '10px'; + + myLinGlobal.setMainHeight(); + + $('linDivMapMain').style.height = ($('linDivMain').offsetHeight - $('linDivMapTop').offsetHeight - $('linDivMapBottom').offsetHeight - 5) + 'px';*/ + + /** + * set also height of the navigation bar + * overflow:auto does not work in IE with height: 100% + */ + /*$('linDivMapNav').style.height = $('linDivMapMain').style.height;*/ + + // resize also google map itself + myLinMapObject.checkResize(); +} + +/** + * initLinMaps() + * + * create the class object + */ +function initLinMaps() +{ + myLinMaps.toggleNav(); + + /*if( doLoadAlbums ) + myLinMaps.loadAlbums();*/ + + //linEnableOnResize(); + //linOnResizeWrapper(); + myLinPage.enableOnResize('maps'); + + myLinMaps.loadMarkers(); +} +Event.observe(window, 'load', initLinMaps, false); +//Event.observe(body, 'load', initLinMaps, false); + +myLinMaps = new LinMaps(); +linMapObjectInit(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |