

var map = null;
var geocoder = null;

function initializeGMap() {

    if ( $("check_map") && GBrowserIsCompatible() ) {
		
    	map = new GMap2( $("check_map") );
    	
        map.enableScrollWheelZoom() ;
        map.addControl(new GSmallMapControl() );
        map.enableContinuousZoom();
        map.enableScrollWheelZoom();
        GEvent.addListener( map, 'click', function( overlay, point ) {
            // Add a click listener
            if (overlay) {
                
            } else if ( point ) {
                //addpoint( point ) ;
            }
        });

        geocoder = new GClientGeocoder();

        if ($('check_map_button')){
	        $('check_map_button').addEvent('click', function(){
	            showCheckMap();
	        });
	        if( $('Coordinate') && $('Coordinate').value ) {
	            geocoder.getLatLng( $('Coordinate').value, function(point) {
	                map.clearOverlays();
	                map.setCenter(point, 15);
	                var marker = new GMarker(point,{draggable: true});
	                map.addOverlay(marker);
	                marker.enableDragging();
	                marker.openInfoWindowHtml( '<b>Keresett helyszín:</b> ' + getAddress() + '<br/><br/> <b>A piros találatjelzőt megfoghatja az egérrel és<br/> annak áthelyezésével pontosíthatja a<br/> helyszín koordinátáit!</b><br/><br/>' );
	                GEvent.addListener( marker, 'dragend', function() {
	                    addpoint( marker.getPoint() );
	                    marker.openInfoWindowHtml( '<b>Keresett helyszín:</b> ' + getAddress() + ' ' );
	                });
	            });
	        } else {
	            geocoder.getLatLng( 'magyarország', function(point) {
	                    map.setCenter(point, 7);
	            });
	        }
        }

        if ($$('.coord_ellenorzes')){
        	
        	if ($('mapBox')) $('mapBox').addEvent('click',function(){$('mapBox').setStyle('visibility','hidden')});
        	
            geocoder.getLatLng( 'magyarország', function(point) {
                map.setCenter(point, 7);
            });
        	
        	$$('.coord_ellenorzes').addEvent('click', function(){
        		p = $(this).rel;
        		coord = $('cor_'+p).value;
        		addr = $('loc_'+p+'_Postcode').value + ' ' + $('loc_'+p+'_City').value+ ', ' + $('loc_'+p+'_Address').value + ' ' + $('loc_'+p+'_PlaceType').options[$('loc_'+p+'_PlaceType').selectedIndex].text + ' ' + $('loc_'+p+'_AddressNum').value + '';
        		if (!coord || addr != $('cor_'+p).rel){
        			if( $('loc_'+p+'_Postcode').value && $('loc_'+p+'_City').value && $('loc_'+p+'_Address').value ){
	        	    	geocoder.getLatLng(addr , function(point) {
	        	    		if (!point) {
	        	    			alert( 'Hiányos vagy nem létező cím, kérjük ellenőrizze.' );
	        	    			$('cor_'+p).value = '';
	        	    			$('loc_'+p+'_Chk').checked = false;
	        	    			$('loc_'+p+'_Chk').disabled = true;
	        	    			$$('.loc_'+p).setStyle('background','#ffaaaa');
	        	    			return false;
	        	            } else {
	        	            	$('cor_'+p).value = point.toString().slice(1,-1);
	        	            	$('cor_'+p).rel = addr;
	        	            	$$('.loc_'+p).setStyle('background','#F0F1F3');
	        	            	$('loc_'+p+'_Chk').checked = true;
	        	            	$('loc_'+p+'_Chk').disabled = false;
	        	            	showUploadMap(point);
	        	            }
	        	    	});
        			}
        			else{
        				alert( 'Hiányos vagy nem létező cím, kérjük ellenőrizze.' );
        				$('loc_'+p+'_Chk').checked = false;
        				$('loc_'+p+'_Chk').disabled = true;
        				$$('.loc_'+p).setStyle('background','#ffaaaa');
        				$('cor_'+p).value = '';
        				return false;
        			}
        		} else {
        			$('loc_'+p+'_Chk').checked = true;
        			$('loc_'+p+'_Chk').disabled = false;
        			$$('.loc_'+p).setStyle('background','#F0F1F3');
        			showUploadMap(coord);
        		}
        	});
        }
        
    }

}

function getUploadedCoords(p,geocoder){
	addr = $('loc_'+p+'_Postcode').value + ' ' + $('loc_'+p+'_City').value+ ', ' + $('loc_'+p+'_Address').value + ' ' + $('loc_'+p+'_PlaceType').options[$('loc_'+p+'_PlaceType').selectedIndex].text + ' ' + $('loc_'+p+'_AddressNum').value + '';
		if( $('loc_'+p+'_Postcode').value && $('loc_'+p+'_City').value && $('loc_'+p+'_Address').value ){
	    	geocoder.getLatLng(addr , function(point) {
	    		if (!point) {
	    			$('cor_'+p).rel = addr;
	    			$('loadImage_'+p).setStyle('display','none');
	            	$$('.loc_'+p).setStyle('background','#ffaaaa');
	            	$('loc_'+p+'_Chk').checked = false;
	            	$('loc_'+p+'_Chk').disabled = true;
	            } else {
	            	$('cor_'+p).value = point.toString().slice(1,-1);
	            	$('cor_'+p).rel = addr;
	            	$('loadImage_'+p).setStyle('display','none');
	            	$$('.loc_'+p).setStyle('background','#F0F1F3');
	            	$('loc_'+p+'_Chk').checked = true;
	            	$('loc_'+p+'_Chk').disabled = false;
	            }
	    	});
		}
		else{
			$$('.loc_'+p).setStyle('background','#ffaaaa');
		}
}

function showUploadMap(coord){
	geocoder.getLatLng( coord, function(point) {
        map.clearOverlays();
        map.setCenter(point, 15);
        var marker = new GMarker(point,{draggable: true});
        map.addOverlay(marker);
        marker.enableDragging();
        marker.openInfoWindowHtml( '<b>'+$('cor_'+p).rel+'</b><br/><br/>A piros találatjelzőt megfoghatja az egérrel<br/>és annak áthelyezésével pontosíthatja a<br/> helyszín koordinátáit!' );
        GEvent.addListener( marker, 'dragend', function() {
        	$('cor_'+p).value =  marker.getPoint().toString().slice(1,-1);
            marker.openInfoWindowHtml( 'A piros találatjelzőt megfoghatja az egérrel<br/>és annak áthelyezésével pontosíthatja a<br/> helyszín koordinátáit!' );
        });
        size = $(window).getSize();
        $('mapBox').setStyles({
        	'visibility': 'visible',
        	'position':'fixed',
			left: Math.round(((size.size.x-$('check_map').getStyle('width').toInt())/2)),
		    top: Math.round(((size.size.y-$('check_map').getStyle('height').toInt())/2))
		});
        
	});
} 

function getAddress() {
    return $('postcode').value + ' ' + $('city').value+ ', ' + $('Address').value + ' ' + $('PlaceType').options[$('PlaceType').selectedIndex].text + ' ' + $('AddressNum').value + '';
}



function showCheckMap() {
    if( $('postcode').value && $('city').value && $('Address').value ) {
        showAddress( getAddress() );
    } else {
        alert( 'Hiányos a cím, kérjük ellenőrizze.' );
    }
}

function addpoint( point ) {
    if( $('Coordinate') ) {
        var c = point.toString().substring( 1 );
        $('Coordinate').value = c.substring( 0, c.length-1 );
    }
}

function showAddress(address) {
    if (geocoder) {
        geocoder.getLatLng( address, function(point) {
            if (!point) {
            
                //alert( '"' + address + '" cím hibás vagy nem található. Kérjük ellenőrizze az irányítószám,város,utca mezőkben kitöltött adatokat! PL: elírt irányítószám, város név egybe vagy különírva, utca vagy köz, stb... Ha a Település nem található és tudja a GPS kordinátáit azt megadhatja a térkép alatti mezőben' );

                showAddress( prompt( '"' + address + '" cím hibás vagy nem található... Kérjük ellenőrizze az irányítószám,város,utca mezőkben kitöltött adatokat!\n\n Amennyiben így sem található a cím, akkor az alábbi mezőbe adja meg az irányítószámot és a város nevét, majd a megjelenő térkép segítségével válassza ki manuálisan a célhelyszínt.', $('city').value ) );

            } else {
                //alert(this->Placemark[0]->Point->coordinates[0]);
                addpoint( point );
                map.clearOverlays();
                map.setCenter(point, 15);
                var marker = new GMarker(point,{draggable: true});
                map.addOverlay(marker);
                marker.enableDragging();
                marker.openInfoWindowHtml( '<b>Keresett helyszín:</b> ' + address + '<br/><br/> <b>A piros találatjelzőt megfoghatja az egérrel és<br/> annak áthelyezésével pontosíthatja a<br/> helyszín koordinátáit!</b><br/><br/>' );
                GEvent.addListener( marker, 'dragend', function() {
                    addpoint( marker.getPoint() );
                    marker.openInfoWindowHtml( '<b>Keresett helyszín:</b> ' + address + '<br/><br/> <b>A piros találatjelzőt megfoghatja az egérrel és<br/> annak áthelyezésével pontosíthatja a<br/> helyszín koordinátáit!</b><br/><br/>' );
                });
            }
        });
    }
}
/*
function showAddress(address) {
  if (geocoder) {
    geocoder.getLatLng(
      address,
      function(point) {
        if (!point) {
          alert(address + " not found");
        } else {
          map.setCenter(point, 13);
          var marker = new GMarker(point);
          map.addOverlay(marker);
          marker.openInfoWindowHtml(address);
        }
      }
    );
  }
}
*/

function setDirectionState() {

    if( gd.getStatus().code == 200 ) {
        $('Status')
    }else{
        $('Status')
    }

}

function handleErrors(){
   var error = '';
   var cnum = gd.getStatus().code;
   if (cnum == G_GEO_UNKNOWN_ADDRESS)
     error = "Az alábbi címek közül az egyik nem megfelelő. Ez akkor forgul elő, ha a cím viszonylag új és még nincs a redszerben, vagy helytelen.\nHiba kód: " + cnum;
   else if (cnum == G_GEO_SERVER_ERROR)
     error = "Egy geocoding vagy irányok kérés sikeresen nem tudták megmunkálni, de a kudarc pontos okát nem tudják.\n Error code: " + cnum;

   else if (cnum == G_GEO_MISSING_QUERY)
     error = "A HTTP q paraméter volt bármelyik hiányzó vagy nincs érték. Geocoderkérésekért ez azt jelenti, hogy egy üres címet inputként részleteztek. Irányokért kérések, ez azt jelenti, hogy kérdést nem részleteztek az inputban.\n Error code: " + cnum;

   //else if (cnum == G_UNAVAILABLE_ADDRESS)  <--- Doc bug... this is either not defined, or Doc is wrong
   //  error = "Az geocode az adott címért vagy az adott irányokhoz vezető útvonalért kérdezz nem tudják visszaküldeni törvényes vagy szerződéses okok miatt.\n Error code: " + cnum;

   else if (cnum == G_GEO_BAD_KEY)
     error = "Az adott kulcs bármelyik érvénytelen vagy nem illeszti össze azt a tartományt, amiért azt odaadták. \n Error code: " + cnum;

   else if (cnum == G_GEO_BAD_REQUEST)
     error = "Egy irányok kérést sikeresen nem elemezhetnének.\n Error code: " + cnum;

   else
    error = "Egy ismeretlen hiba történt.";

    //alert( error );

}
