if (GBrowserIsCompatible()) { 
	/*gmaps*/
	var geo;
	var map;
	var reasons=[];
	var countryCode='hr' ; //do parametryzacji
	var point;
	var isMarkerExist = false;
	var ismapactive = false;
	var overlay;
	var AEvent;
	//var localCustomfields = getAddress();
	var localCustomfields = new Array();
	var defaultZoom = 14;
	var rid=0;
	var hintLocateOnMap =false;
	var hintDisplayCoordinates = false;

//  var maps = "map";
	var maps = "terrain";
	var satelite = "satelite";
	var hybrid = "hybrid";

	var mapAlt = "show street map";
	var sateliteAlt = "show satelite imagery";
	var hybridAlt = "show imagery with street names";
	var gmapMessageDidYouMean = "Did you mean"
//  var gmapMessageDidYouMean = "gmaps.response.reasons.didyoumean"


	var currentPage=''
	var activatingDCButton = false;
	thisInterval =false;
	activatingLOMButton = false;

	messWrongGPSDate =	"krivi GPS podaci";



	function showLocateOnMapHint() {
		if(!hintLocateOnMap){
			document.getElementById('locateOnMapHint').style.display= 'block';
			hintLocateOnMap = true; 	}
	}

	function showLocateOnMapHintClear() {
		document.getElementById('locateOnMapHint').style.display= 'none'; 
		hintLocateOnMap = false;
	}

	function showDisplayCoordinatesHint() {
		if(!hintLocateOnMap){
			document.getElementById('displayCoordinatesHint').style.display= 'block';
			hintDisplayCoordinates = true; 	}
	}

	function showDisplayCoordinatesHintClear() {
		document.getElementById('displayCoordinatesHint').style.display= 'none'; 
		hintDisplayCoordinates = false;
	}

	function showParameters(){

		document.getElementById('mapLon').value= ''	;
		document.getElementById('mapLat').value= '';
		document.getElementById('mapZoom').value= '';
	}

	function showParametersForMarker(marker){

		document.getElementById('mapLon').value= marker.getLatLng().lng()	;
		document.getElementById('mapLat').value= marker.getLatLng().lat()
		document.getElementById('mapZoom').value= map.getZoom();
	}


	function mapConstructor(div){
		map = new GMap2(document.getElementById(div));
		map.addControl(new GLargeMapControl());
		map.addControl(new GScaleControl());
		var mapType = map.getMapTypes();

		mapType[0].getName= function(){return maps;}
		mapType[1].getName= function(){return satelite;}
		mapType[2].getName= function(){return hybrid;}
		mapType[0].getAlt= function(){return mapAlt;}
		mapType[1].getAlt= function(){return sateliteAlt;}
		mapType[2].getAlt= function(){return hybridAlt;}


		map.addControl(new GMapTypeControl());
		map.enableScrollWheelZoom();
		var overviewmap = new GOverviewMapControl();
		map.addControl(overviewmap);
		overviewmap.hide(true);

	}


	function showMapAdvert(slat, slng, szoom){
		var szoom = parseInt(szoom);

		mapConstructor("showMap");
		var latlng = new GLatLng(slat,slng);
		map.setCenter(latlng, szoom);

		var marker = new GMarker(latlng);
		map.addOverlay(marker);  

	}

	function editMapInAdvert(slat, slng, szoom){
		checkLocateOnMapButton();
		defaultZoom = parseFloat(szoom);
		place(slat,slng);		  	
	}





	function displayCoordinatesValidation(){
		var mapLon =$('input#mapLon').val();
		var mapLat = $('input#mapLat').val();

		mapLon = mapLon.replace(',','.');
		mapLat = mapLat.replace(',','.');


		if(parseFloat(mapLon)>180 || parseFloat(mapLon)< -180)
		{
			$('#mapContainer #message').html(messWrongGPSDate);
			return false;
		}
		else if(parseFloat(mapLat)>90 || parseFloat(mapLat)< -90)
		{
			$('#mapContainer #LonLatMessage').html(messWrongGPSDate); 
			return false;
		}

		else if( isNaN(mapLat) || isNaN(mapLon) || mapLat=='' || mapLon=='')
		{
			$('#mapContainer #LonLatMessage').html(messWrongGPSDate); 
			return false;
		}
		else if(!activatingDCButton)
		{
			displayCoordinates();
		}else
		{
			setTimeout(displayCoordinatesValidation,400);
		}
	}



	function displayCoordinates(){	

		checkInit();
		var mapLon = document.getElementById('mapLon').value;
		var mapLat = document.getElementById('mapLat').value;

		mapLon = mapLon.replace(',','.');
		mapLat = mapLat.replace(',','.');

		if(!isNaN(mapLat)&&!isNaN(mapLon)&&mapLat!=''&&mapLon!=''){
			place(parseFloat(mapLat), parseFloat(mapLon), defaultZoom );}
		else{document.getElementById('message').innerHTML = '<p> '+invalidCustomfieldValue+' </p>'}

	}

	function checkRestParams() { 

		var tempParam= '';
		var tempParamObj= new Object;
		if( document.getElementById( 'mapStreet' ) && document.getElementById( 'mapStreet' ).value != '' ){
			tempParamObj.mapStreet=document.getElementById( 'mapStreet' ).value;
		}
		if( document.getElementById( 'mapHouseNr' ) && document.getElementById( 'mapHouseNr' ).value != '' ){
			tempParamObj.mapHouseNr=document.getElementById( 'mapHouseNr' ).value;
		}
		if( document.getElementById( 'mapZip' ) && document.getElementById( 'mapZip' ).value != '' ){
			tempParamObj.mapZip=document.getElementById( 'mapZip' ).value;
		}
		return tempParamObj;


	}	



	function checkLocateOnMapButton(){	



		localCustomfields = new Array();



		$(function() {
				$('#RegionCustomfields input').each(function(i){				
						localCustomfields[i] = ($(this).attr("name"));
					})



				$('input#mapZoom').livequery(function(){ $(this).parent('div').hide(); }) 
				$('input#mapLon').livequery(function(){ $(this).parent('div').hide(); }) 
				$('input#mapLat').livequery(function(){ $(this).parent('div').hide(); }) 
				$('input#localteOnMap').livequery(function(){  $(this).attr("disabled", "disabled"); })	 
				$('#locateOnMapSpan').livequery(function(){$(this).removeClass("revButton v1 arrow"); $(this).addClass("revButtonDisabled v1 arrow"); })
				if(!$('#mapLon').val() || !$('#mapLon').val()){
					$('input#displayCoordinates').livequery(function(){  this.disabled = true; })
					$('#displayCoordinatesSpan').livequery(function(){$(this).removeClass("revButton v1 arrow"); $(this).addClass("revButtonDisabled v1 arrow"); })
				}
				$('#locateOnMapHint').livequery(function(){$(this).hide(); })


				var mapLonOldValue = $('#mapLon').val();
				var mapLatOldValue = $('#mapLat').val();


				var timeout = 350;
				activatingDCButton = false;
				activatingLOMButton = false;
				var activatingDCButtonTimout;
				var activatingLOMButtonTimout;	
				oldUprid = 0;


				function showLOMButton() {
					$('#locateOnMapSpan').livequery(function(){
							$(this).removeClass("revButtonDisabled v1 arrow");
							$(this).addClass("revButton v1 arrow"); })

					$('input#localteOnMap').livequery(function(){$(this).removeAttr("disabled");  })
					$('#localteOnMap').livequery(function(){$(this).next('span').removeClass("revButton");  })
				}

				function hideLOMButton() {
					$('input#localteOnMap').livequery(function(){ this.disabled = true; }) 
					$('#locateOnMapSpan').livequery(function(){
							$(this).removeClass("revButton v1 arrow");
							$(this).addClass("revButtonDisabled v1 arrow");
						});
				}

				function checkLocateOnMapButtonActive(){ 

					if(activatingLOMButton) {window.clearTimeout( activatingLOMButtonTimeout ); }
					activatingLOMButton = true;
					activatingLOMButtonTimeout = window.setTimeout(function() {

							if($('input#localteOnMap').attr('disabled')){ LOMBut = true; }else {LOMBut= false}

//              if( checkRestParams().mapStreet || checkRestParams().mapZip || rid>1 ) {
							if( checkRestParams() || rid>1 ) {
								if(LOMBut){ showLOMButton(); }
							}else{
								if(!LOMBut){ hideLOMButton(); }
							} 	
							activatingLOMButton = false;
//              if(currentPageAdress.search('editAd.do') > 0 || currentPageAdress.search('editAdvert.do') > 0){
							if(currentPageAdress.search('editAd.do') || currentPageAdress.search('editAdvert.do') ){
								showLOMButton();
							}

						}, timeout );
				}




				function checkDisplayCoordinatesButtonActive(){
					if(activatingDCButton) {window.clearTimeout( activatingDCButtonTimeout ); }
					activatingDCButton = true;
					activatingDCButtonTimeout = window.setTimeout(function() {


							var mapLonNewValue = $('#mapLon').val();
							var mapLatNewValue = $('#mapLat').val();	  			

							if( mapLonNewValue!=mapLonOldValue || mapLatNewValue!=mapLatOldValue ) {

								if( mapLonNewValue && mapLatNewValue && $('input#displayCoordinates').attr('disabled') ) {
									$('input#displayCoordinates').removeAttr('disabled');
									$( '#displayCoordinatesSpan' ).livequery( function() {
											$(this).removeClass('revButtonDisabled v1 arrow');
											$(this).addClass('revButton v1 arrow'); 
										} );
								} else {
									if( !$('input#displayCoordinates').attr('disabled')  ) {
										if(!mapLonNewValue || !mapLatNewValue ){
											$('input#displayCoordinates').livequery( function() { 
													$(this).attr('disabled','disabled') 
												} );
											$('#displayCoordinatesSpan').livequery( function() {
													$(this).removeClass('revButton v1 arrow');
													$(this).addClass('revButtonDisabled v1 arrow'); 
												});}}
								}	
							}
							mapLonOldValue =mapLonNewValue;
							mapLatOldValue = mapLatNewValue;
							activatingDCButton = false;

						}, timeout );
				}



				checkLocateOnMapButtonActive();





				for(var i=0;i<localCustomfields.length;i++){ 

					$('#'+localCustomfields[i]+'').livequery(function(){ 
							$(this).keyup( function() {  
									checkLocateOnMapButtonActive();
								});  
							$(this).change( function() {  
									checkLocateOnMapButtonActive();
								}); 
						});
				}     

				$('input#localteOnMap').livequery('click', function() {
						locateOnMap();
					}); 

				$('input#displayCoordinates').livequery('click', function() {
						displayCoordinatesValidation();
					}); 

				$('#locateOnMapHintIcon').livequery(function() {
						$(this).mouseover( function() { showLocateOnMapHint(); } );
						$(this).mouseout( function() { showLocateOnMapHintClear(); } );
					});

				$('#displayCoordinatesHintIcon').livequery(function() {
						$(this).mouseover( function() { showDisplayCoordinatesHint(); } );
						$(this).mouseout( function() { showDisplayCoordinatesHintClear(); } );
					});


				$('#mapLon').livequery(function(){ 
						$(this).keyup( function() { 
								checkDisplayCoordinatesButtonActive()  } );
						$(this).change( function() { 
								checkDisplayCoordinatesButtonActive()  } );
						$(this).keypress( function(event) {
								checkDisplayCoordinatesButtonActive()
								if (event.charCode && (event.charCode < 45 || event.charCode > 57))
								{  event.preventDefault();   }
							});
					});

				$('#mapLat').livequery(function(){ 
						$(this).keyup( function() { 
								checkDisplayCoordinatesButtonActive()
							}); 
						$(this).change( function() { 
								checkDisplayCoordinatesButtonActive()
							}); 
						$(this).keypress( function(event) {
								checkDisplayCoordinatesButtonActive()
								if (event.charCode && (event.charCode < 45 || event.charCode > 57))
								{  event.preventDefault();   }
							});
					});  
			});


	}

	function getRegionsPath(){
		var regs = $('#regionsPath div a');
		var regArr = new Array();
		for( var it = regs.length - 1 ; it >=0; it-- ){
			regArr.push( regs[it].text );
		}
		search = regArr.join( ', ');
		return search;
	}

	function locateOnMap(){ 

		var restParams = checkRestParams();
		if(currentPageAdress.search('editAd.do') > 0 || currentPageAdress.search('editAdvert.do') > 0  ){

			if( restParams.mapStreet || restParams.mapZip ){
				if(rid>=1){
					var search = getRegionsPath();
				}else{
					var search = '';
				}	


				if( restParams.mapStreet ){
					search = restParams.mapStreet + ', ' + search;
					if( restParams.mapHouseNr ){
						search = restParams.mapHouseNr + ', ' + search;
					}
				}
				if( restParams.mapZip ){
					search = search + ', ' + restParams.mapZip;
				}

				if($('#mapLon').val()>-180 &&$('#mapLon').val()<180 && $('#mapLat').val()>-90 &&$('#mapLon').val()<90){
					showAddress(search);
				} else{$('#message').html(messWrongGPSDate)}
			}else {

				if(rid>=1){
					var regionCoordinateLon = document.getElementById('regionCoordinateLon').value;
					var regionCoordinateLat = document.getElementById('regionCoordinateLat').value;
					var regionCoordinateZoom = document.getElementById('regionCoordinateZoom').value;
					showRegion(parseFloat(regionCoordinateLon), parseFloat(regionCoordinateLat), parseFloat(regionCoordinateZoom) )
				} 
			}
		}else{

			if( restParams.mapStreet || restParams.mapZip ){
				var search = '';
				if(rid>1){
					var search = getRegionsPath();
				}else{
					var search = '';
				}	

				if( restParams.mapStreet ){
					search = restParams.mapStreet + ', ' + search;
					if( restParams.mapHouseNr ){
						search = restParams.mapHouseNr + ', ' + search;
					}
				}
				if( restParams.mapZip ){
					search = search + ', ' + restParams.mapZip;
				}
				showAddress(search);
			}else{

				if(rid >1){
					var regionCoordinateLon = document.getElementById('regionCoordinateLon').value;
					var regionCoordinateLat = document.getElementById('regionCoordinateLat').value;
					var regionCoordinateZoom = document.getElementById('regionCoordinateZoom').value;
					showRegion(parseFloat(regionCoordinateLon), parseFloat(regionCoordinateLat), parseFloat(regionCoordinateZoom) )
				} 
			} 
		}
	}


	function showRegion(slat, slng, szoom) {

		checkInit();
		if(isMarkerExist){map.clearOverlays(); 
			isMarkerExist =false; 
			showParameters();
		} 
		var latlng = new GLatLng(slng,slat);
		map.setCenter(latlng,szoom);

		var marker = new GMarker(latlng,{draggable:true});
			 	addListeners(marker);
		map.addOverlay(marker);
		showParametersForMarker(marker);

		GEvent.addListener(marker, "dragend", function(){
				showParametersForMarker(marker);
			})

		isMarkerExist = true;
	}


	function addListeners(marker){

		GEvent.addListener(map, "click", function(overlay, latlng) {

				if(isMarkerExist){
					if(overlay){      		
						map.clearOverlays(overlay);                  		
						isMarkerExist=false;

						showParameters();
					}
				}else{
					if (overlay) {
						map.clearOverlays(overlay);
						isMarkerExist = false;
					}else{

						var marker = new GMarker(latlng,{draggable:true});
						map.addOverlay(marker);
						showParametersForMarker(marker);

						isMarkerExist = true;
						listenerDrag(marker);
					}}

			});

		function listenerDrag(marker){ GEvent.addListener(marker, "dragend", function(){
					showParametersForMarker(marker);
				})}
		GEvent.addListener(map, 'zoomend', function() {
				document.getElementById('mapZoom').value= map.getZoom();
			} )
	}


	function showMap(){
		if(document.getElementById("map").style.display != 'block'){ismapactive=false;}

		document.getElementById("mapContainer").style.display= 'block'
		document.getElementById("map").style.display= 'block'

	}


	function checkInit(){

		document.getElementById('message').innerHTML = '';

		showMap();

		if(!ismapactive){

			mapConstructor("map");
			geo = new GClientGeocoder();



			if(countryCode){ 
				geo.setBaseCountryCode(countryCode);}

			ismapactive = true;  
		}
		addListeners();

	}


	// ===== list of words to be standardized =====
	var standards = [   ["road","rd"],   
	["street","st"], 
	["avenue","ave"], 
	["av","ave"], 
	["drive","dr"],
	["saint","st"], 
	["north","n"],   
	["south","s"],    
	["east","e"], 
	["west","w"],
	["expressway","expy"],
	["parkway","pkwy"],
	["terrace","ter"],
	["turnpike","tpke"],
	["highway","hwy"],
	["lane","ln"]
	];
	// ===== convert words to standard versions =====
	function standardize(a) {
		for (var i=0; i<standards.length; i++) {
			if (a == standards[i][0])  {a = standards[i][1];}
		}
		return a;
	}
	// ===== check if two addresses are sufficiently different =====
	function different(a,b) {
//    debug  seems that comparison don't work for croatia, google responds in english 
		return( 0 );
		// only interested in the bit before the first comma in the reply
		var c = b.split(",");
		b = c[0];
		// convert to lower case
		a = a.toLowerCase();
		b = b.toLowerCase();
		// remove apostrophies
		a = a.replace(/'/g ,"");
		b = b.replace(/'/g ,"");
		// replace all other punctuation with spaces
		a = a.replace(/\W/g," ");
		b = b.replace(/\W/g," ");
		// replace all multiple spaces with a single space
		a = a.replace(/\s+/g," ");
		b = b.replace(/\s+/g," ");
		// split into words
		awords = a.split(" ");
		bwords = b.split(" ");
		// perform the comparison
		var reply = false;
		for (var i=0; i<bwords.length; i++) {
			//GLog.write (standardize(awords[i])+"  "+standardize(bwords[i]))
			if (standardize(awords[i]) != standardize(bwords[i])) {reply = true}
		}
		//GLog.write(reply);
		return (reply);
	}


	function place(lat,lng) {

		checkInit();

		if(isMarkerExist){map.clearOverlays();  isMarkerExist = false;}

		var latlng = new GLatLng(lat,lng);
		map.setCenter(latlng,defaultZoom); 



		var marker = new GMarker(latlng,{draggable:true});
			 	addListeners(marker);
		map.addOverlay(marker);
		showParametersForMarker(marker);

		GEvent.addListener(marker, "dragend", function(){
				showParametersForMarker(marker);
			})

		isMarkerExist = true;
	}


	function showAddress(search) {
		checkInit();


		geo.getLocations(search, function (result)
			{

				map.clearOverlays(); 

				if (result.Status.code == G_GEO_SUCCESS) {


					if (result.Placemark.length > 1) { 
						document.getElementById("message").innerHTML = '<p id="gmapsMessage">'+gmapMessageDidYouMean+': </p><br />';

						for (var i=0; i<result.Placemark.length; i++) {
							var p = result.Placemark[i].Point.coordinates;
							document.getElementById("message").innerHTML += "<br> <p class='gmapMessegeResults'><a href='javascript:place(" +p[1]+","+p[0]+")'>"+ result.Placemark[i].address+"</a></p>";
						}
					}

					else {
						document.getElementById("message").innerHTML = "";
						if (different(search, result.Placemark[0].address)) {
							document.getElementById("message").innerHTML = '<p id="gmapsMessage">'+gmapMessageDidYouMean+':</p> <br />';
							var p = result.Placemark[0].Point.coordinates;
							document.getElementById("message").innerHTML += '<a href="javascript:place('+p[1]+','+p[0]+')"><p class="gmapMessegeResults">'+ result.Placemark[0].address+'</p></a>';
						} else {
							var p = result.Placemark[0].Point.coordinates;
							place(p[1],p[0]);
							document.getElementById("message").innerHTML = "Nađeno: "+result.Placemark[0].address;
						}
					}

				}
				// ====== Decode the error status ======
				else {
					var reason="Code "+result.Status.code;
					if (reasons[result.Status.code]) {
						reason = reasons[result.Status.code]
					} 
					document.getElementById("message").innerHTML =gmapMessageCouldNotFind +'"'+search+ '" ' + reason;
				}
				if(!map.isLoaded()){
					var regionCoordinateLon = document.getElementById('regionCoordinateLon').value;
					var regionCoordinateLat = document.getElementById('regionCoordinateLat').value;
					var regionCoordinateZoom = document.getElementById('regionCoordinateZoom').value;
					map.setCenter(new GLatLng(parseFloat(regionCoordinateLat),parseFloat(regionCoordinateLon)),parseFloat(regionCoordinateZoom));
				}
			}
		);
	}
}
//
// display a warning if the browser was not compatible
else {
	alert(gmapBrowserWarning);
}
