/**
*   @version $Id: googleMaps.js 21 2009-04-30 10:21:11Z paulinad $
*	@package cms googleMaps
*	@author kamilag
*/
	var map = null;
	var geocoder = null;
	var markers;
	/** okresla, czy sa w danej chwili uruchomione funkcje odpowiedzialne za zmiane rozmiaru mapy google */
	var gMapResize = 0;
	
	/**
	* Funkcja ladujaca mape google
	* @author kamilag
	* @param string gmaps_x - wspolrzedna x punktu wyswietlanego na mapie
	* @param string gmaps_y - wspolrzedna y punktu wyswietlanego na mapie
	* @param string txt - informacja wyswietlana podczas dodawania punktu na mapie
	*/
	function loadGM( gmaps_x, gmaps_y, txt )
	{ 
		if ( GBrowserIsCompatible() ) 
		{ 
			if( gMapObj = $( "map" ) )
			{
				map = new GMap2( gMapObj ); 
				if( ( gmaps_x == '' ) || ( gmaps_y == '' ) )
				{
					var point = new GLatLng( 54.44162184889164, 18.56011390686035 ); 
					var number = 10;  
					$( "hidden_gmaps_y" ).value = '';
					$( "hidden_gmaps_x" ).value = '';
				}
				else
				{
					var point = new GLatLng( gmaps_y, gmaps_x );
					var number = 16;  
					$( "hidden_gmaps_y" ).value = gmaps_y;
					$( "hidden_gmaps_x" ).value = gmaps_x;
				}
				map.setCenter( point, number );
				map.addControl( new GSmallMapControl() );
				map.addControl( new GMapTypeControl() );
				if( ( gmaps_x != '' ) || ( gmaps_y != '' )  )
				{
					map.addOverlay( createMarker( point ) );
				}
				GEvent.addListener( map, 'click', function( p, latlng )  
													{
														addMarkerOnMap( latlng, txt );
													}
				);
			}
		}  
	}

	/**
	* Funkcja dodajaca marker na mape
	* @author kamilag
	* @param  latlng - wspolrzedne ( y, x ) punktu wyswietlanego na mapie
	*/
	function createMarker( latlng )
	{
		var markerOptions = { icon: new GIcon( G_DEFAULT_ICON ), draggable: true };
		markers = new GMarker( latlng,  markerOptions );
		GEvent.addListener( markers , 'dragend' , function()  
		{
			point = markers.getLatLng();
			$( "hidden_gmaps_y" ).value = point.lat();
			$( "hidden_gmaps_x" ).value = point.lng();
		}
		);
		return markers;
	}

	/**
	* Funkcja dodajaca marker na mape o zadanym adresie
	* @author kamilag
	* @param  string txt - informacja wyswietlana gdy dany adres nie zostal odnaleziony
	*/
	function addMarker( txt, txt2 )
	{
		street = $( "exstreet" ).value;
		city = $( "excity" ).value;
		number = $( "exnumber" ).value;
		if( $( "exinny" ).checked == true )
		{
			country = $( "exkraj" ).value;
		}
		else
		{
			country = 'Polska';
		}
		//alert( country );
		if( ( street != '' ) && ( city != '' ) && ( country != '' ) )
		{
			address = country +' '+ city +' '+street+' '+number;
			geocoder = new GClientGeocoder();
			if( geocoder )
			{
				geocoder.getLatLng( address, function( point )
											{
												if( !point )
												{
													alert( address +' '+ txt );
												}
												else
												{
													map.clearOverlays();
													map.setCenter( point, 14 );
													map.addOverlay( createMarker( point ) );
													$( "hidden_gmaps_y" ).value = point.lat();
													$( "hidden_gmaps_x" ).value = point.lng();
												}
											}
										);
			}
		}
		else
		{
			alert( txt2 );
		}
	}

	/**
	* Funkcja dodajaca marker po klikniecu na mape
	* @author kamilag
	* @param  latlng wspolrzedne ( y, x ) punktu wyswietlanego na mapie
	* @param string  txt -  informacja wyswietlana podczas dodawania punktu na mapie
	*/
	function addMarkerOnMap( latlng, txt )
	{
		if( ( latlng != null ) || ( latlng != undefined ) )
		{
			if( confirm( txt ) )
			{
				map.clearOverlays();
				map.addOverlay( createMarker( latlng ) );
				$( "hidden_gmaps_y" ).value = latlng.lat();
				$( "hidden_gmaps_x" ).value = latlng.lng();
				latlng = null;
			}
		}
	}
	
	/**
	*	Opis: funkcja sprawdza, czy klasa aktywna, czy nie
	*	@param	String		txt			nazwa klasy
	*/
	function checkIsClassOn( txt )
	{
		re = /_on$/g;
		if( txt.match( re ) )
		{
			return 1;
		}
		else
		{
			return 0;
		}
	}
