<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">/* Copyright ÂŠ 2007 DIALNET All rights reserved. */
var map = null;
function sortNumber(a,b)
{
    return a - b
}

if(GBrowserIsCompatible())
{
    var icons = new Array();

    icons['std'] = new GIcon();
    icons['std'].shadow = "http://www.google.com/mapfiles/shadow50.png";
    icons['std'].image = "http://www.google.com/mapfiles/marker.png";
    icons['std'].iconSize = new GSize(20, 34);
    icons['std'].iconAnchor = new GPoint(9, 34);
    icons['std'].shadowSize = new GSize(37, 34);
    icons['std'].infoShadowAnchor = new GPoint(18, 25);
    icons['std'].infoWindowAnchor = new GPoint(9, 13);
    
    icons['num'] = new GIcon();
    icons['num'].shadow = "http://www.google.com/mapfiles/shadow50.png";
    icons['num'].image = "http://www.google.com/mapfiles/marker.png";
    icons['num'].iconSize = new GSize(20, 20);
    icons['num'].iconAnchor = new GPoint(10, 10);
    icons['num'].shadowSize = new GSize(37, 34);
    icons['num'].infoShadowAnchor = new GPoint(18, 25);
    icons['num'].infoWindowAnchor = new GPoint(9, 13);
    var arrayW = new Array(); // do wyliczenia mediany
    var arrayL = new Array();
    var autoZoom;
}

function goToMarker( mNo )
{
    if( map == null ) return;
    if( createOffersMarker( mNo, true ))
    {
        setTimeout("map.panTo( gMapData['markers']["+mNo+"]._marker.getPoint())", 100); // wycentrowanie na ofercie...
    }
}


function createOffersMarker( i, showCloud )
{
    var offer = gMapData['markers'][i];
    var marker = null;
    if( !gMapData['markers'] || i &gt;= gMapData['markers'].length ) return; // marker nie istnieje

    if( !gMapData['markers'][i]._marker )
    {
	var point = new GLatLng( offer['gMapW'], offer['gMapL'] );
	if( offer['icoType'] &amp;&amp; icons[offer['icoType']] )
	{
	    var icon = new GIcon( icons[offer['icoType']] );
	    //alert( offer['icoImg'] );
	    if( offer['icoImg'] )
	    {
		icon.image = offer['icoImg'];
	    }
	    else if( offer['icoInfix'] &amp;&amp; gMapData['icoDir'] &amp;&amp; gMapData['icoPrefix'] &amp;&amp; gMapData['icoSufix'] )
	    {
		icon.image = gMapData['icoDir']+gMapData['icoPrefix']+offer['icoInfix']+gMapData['icoSufix'];
	    }
	    if( gMapData['icoImgShadow'] &amp;&amp; gMapData['icoImgShadow']!='' )
	    {
		icon.shadow = gMapData['icoImgShadow'];
	    }
	}
	else
	{
	    var icon = new GIcon(icons['std']);
	}
	marker = new GMarker(point, icon);
	gMapData['markers'][i]._marker = marker;
    }
    else
    {
	marker = gMapData['markers'][i]._marker;
    }
    var cHTML = '';

    if( offer['html'] &amp;&amp; offer['html'] != '' )
    {
	cHTML = offer['html'];
    }
    else if( offer['tplVars'] )
    {
	cHTML = gMapData['tpl'];

	for( tplVar in offer['tplVars'] )
	{
	    cHTML = cHTML.replace('#'+tplVar+'#', offer['tplVars'][tplVar] );
	}
    }

	
	if (cHTML != '')
	{
		cHTML = '&lt;div style="border: 1px solid white; background-color: white"&gt;'+cHTML+'&lt;/div&gt;';
	}


    if( cHTML &amp;&amp; cHTML != '' )
    {

	GEvent.addListener(marker, "click", function()
	{
	    marker.openInfoWindowHtml( cHTML );
	});
    }
    if( showCloud == true &amp;&amp; cHTML &amp;&amp; cHTML != '' )
    {
	//alert( gMapData['markers'][i]['gMapAccuracy'] );
	map.setZoom( getZoomByAccuracy( gMapData['markers'][i]['gMapAccuracy']));
	marker.openInfoWindowHtml( cHTML );
    }

    return marker;
}

function showGMap( cSmallControl, cLargeControl, cScale, cType, cSmallZoom )
{
    if(GBrowserIsCompatible()) 
    {
	var minW = 0; // do wyliczenia prostokata widocznych ofert
	var minL = 0;
	var maxW = 0;
	var maxL = 0;
	var medW = 0;
	var medL = 0;
	arrayW = new Array();
	arrayL = new Array();
	map = new GMap2(  document.getElementById ? document.getElementById("mapDiv") :  document.all.mapDiv );
	if( cSmallControl == true )						map.addControl(new GSmallMapControl());
	if( cLargeControl == true || (!cLargeControl &amp;&amp; cLargeControl != false))map.addControl(new GLargeMapControl());
	if( cScale == true || (!cScale &amp;&amp; cScale != false))			map.addControl(new GScaleControl());
	if( cType == true || (!cType &amp;&amp; cType != false) )			map.addControl(new GMapTypeControl());
	if( cSmallZoom == true )						map.addControl(new GSmallZoomControl());
	map.setCenter(new GLatLng( gMapData.mapCenterW, gMapData.mapCenterL), getZoomByAccuracy( gMapData['accuracy']) );
	if( gMapData['accuracy'] &lt;= 1 ) map.disableDragging();

	mixMarkers();


	for( var i=0; i &lt; gMapData['markers'].length; i++ )
	{
	    offer = gMapData['markers'][i];
	    map.addOverlay( createOffersMarker( i ) );

	    minW = Math.min( minW, offer['gMapW'] );
	    minL = Math.min( minL, offer['gMapL'] );
	    maxW = Math.max( maxW, offer['gMapW'] );
	    maxL = Math.max( maxL, offer['gMapL'] );
	    arrayW[ arrayW.length ] = offer['gMapW'];
	    arrayL[ arrayL.length ] = offer['gMapL'];
	}
	if( arrayW.length &gt; 0 )
	{
	    if( gMapData['accuracy'] &gt; 1 )
	    {
		arrayW = arrayW.sort(sortNumber);
		arrayL = arrayL.sort(sortNumber);
		var medIndex = Math.floor(arrayL.length/2);
		medW = arrayW[ medIndex ];
		medL = arrayL[ medIndex ];
		var medPoint = new GLatLng( medW, medL ); // przewiniecie do przeciec modalnej
		map.panTo( medPoint );
		autoZoom = true;
	    }
	
	    GEvent.addListener( map, "moveend", function()
	    {
		if( !autoZoom ) return;
		autoZoom = false;
		var mapBounds = map.getBounds();
		var halfMapBounds = cropBounds( mapBounds );
		var quarterMapBounds = cropBounds( halfMapBounds );
		var visibleMarkers = 0;
		var visibleInCropBoundsMarkers = 0;
		var visibleInDoubleCropBoundsMarkers = 0;

		for( var i=0; i &lt; gMapData['markers'].length; i++ )
		{
		    var offer = gMapData['markers'][i];
		    var offerPoint = new GLatLng( offer['gMapW'], offer['gMapL']);
		    if( mapBounds.contains( offerPoint )) visibleMarkers++;
		    if( halfMapBounds.contains( offerPoint )) visibleInCropBoundsMarkers++;
		    if( quarterMapBounds.contains( offerPoint )) visibleInDoubleCropBoundsMarkers++;
		}

		if( (visibleMarkers / arrayW.length*100) &lt; 90 )
		{
		    map.zoomOut();
		    //alert('auto zoom out');
		}
		else if( visibleInCropBoundsMarkers &gt;= arrayW.length )
		{
		    map.zoomIn();
		    //alert('auto zoom in');
		    if( visibleInDoubleCropBoundsMarkers &gt;= arrayW.length )
		    {
			map.zoomIn();
			//alert('double auto zoom in');
		    }
		}
	    });
	}
	
	/* ograniczenia zoomowania */
	
	GEvent.addListener(map, "zoomend", function( oldLevel, newLevel )
	{
	    if( newLevel &gt; 18 )
	    {
		map.setZoom(18);
		//if( cDragging == true ) map.enableDragging();
		map.enableDragging();
	    }
	    if( newLevel &lt;= 6 )
	    {
		map.disableDragging();
		map.setZoom(6);
	    }
	    else
	    {
		//if( cDragging == true ) map.enableDragging();
		map.enableDragging();
	    }
	});
    }
}

/* zwraca dwukrotnie miejszy prostokat (powierzchniowo 4X) odpowiadajacy zoomowi o 1 stopien*/
function cropBounds( bounds )
{
    var SWPoint = bounds.getSouthWest();
    var NEPoint = bounds.getNorthEast();

    var xDistance =  ( NEPoint.x - SWPoint.x ) / 4;
    var yDistance =  ( NEPoint.y - SWPoint.y ) / 4;
    var newSWPoint =  new GLatLng( SWPoint.y + yDistance, SWPoint.x + xDistance );
    var newNEPoint =  new GLatLng( NEPoint.y - yDistance, NEPoint.x - xDistance );

    return new GLatLngBounds( newSWPoint, newNEPoint );
}


/* mixuje polozenie markerow wskazujacych na identyczna lokalizacje... */

function mixMarkers()
{
    var change = false;
    for( var i=0; i &lt; gMapData['markers'].length; i++ )
    {
	offerSrc = gMapData['markers'][i];
	for( var j=0; j &lt; gMapData['markers'].length; j++ )
	{
	    if( i==j ) continue;
	    offer = gMapData['markers'][j];
	    if( offerSrc['gMapW'] == offer['gMapW'] &amp;&amp; offerSrc['gMapL'] == offer['gMapL'] )
	    {
		if( Math.round(Math.random()) )
		{
		    gMapData['markers'][i]['gMapW'] = gMapData['markers'][i]['gMapW'] * 1 +  0.001;
		}
		else
		{
		    gMapData['markers'][i]['gMapW'] = gMapData['markers'][i]['gMapW'] * 1 -  0.001;
		}
		if( Math.round(Math.random()) )
		{
		    gMapData['markers'][i]['gMapL'] = gMapData['markers'][i]['gMapL'] * 1 +  0.001;
		}
		else
		{
		    gMapData['markers'][i]['gMapL'] = gMapData['markers'][i]['gMapL'] * 1 -  0.001;
		}
		change = true;
	    }
	}
    }
    if( change )
    {
	mixMarkers();
    }
}

</pre></body></html>