// Plugin class
var locationPlugin = {

	messageIncorrectAddress : '',
	executed : false,
		
	setMap : function(mapContainer,address)
	{
		// Set complete function
		//$.fn.setMapComplete = complete;
	
		// Init jMap
		$(mapContainer).jmap('init');
		
		// Get address and coordinates
		locationPlugin.getCoordinates(
				mapContainer,
				address,
				function(data){
			
					// Set map
					$(mapContainer).jmap('AddMarker',{
			        	'pointLatLng':[data['lat'],data['lon']],
			        	'pointHTML':data['address']
					});
					
					// Center map
					$(mapContainer).jmap('MoveTo',{
						'mapCenter':[data['lat'],data['lon']]
			    	});
					
					// Do oncomplete 
					//$(this).setMapComplete();
			
				}
		);
	},
	
	getCoordinates : function(container,address,onComplete)
	{
		// set oncomplete
		$.fn.getCoordinatesComplete = onComplete;
		
		$(container).jmap('SearchAddress',{
	        'query': address,
	        'returnType': 'getLocations'
		},
		
    	function(result,options)
    	{
    		var valid = Mapifies.SearchCode(result.Status.code);
    		if(valid.success){
    			
    			var data 			= new Array();
        			data['lat']		= result.Placemark[0].Point.coordinates[1];
        			data['lon']		= result.Placemark[0].Point.coordinates[0];
        			data['address']	= result.Placemark[0].address;
        			
        		$(this).getCoordinatesComplete(data);
        		return data;

    		}else{
    			$(this).getCoordinatesComplete(false);
    			return false;
    		}
	    });
	},
	
	getRoute : function(mapContainer,directionsContainer,fromValue,toValue)
	{
		// First check if this address is correct
		this.getCoordinates(mapContainer,fromValue,function(data){
			if(data === false){
				$('#response').html('<div class="error">'+locationPlugin.messageIncorrectAddress+'</div>');
				$('#response').slideDown('normal');
				return false;
			}else{
				$('#response').hide();
			}
		});
		
		// Hide response
		$('#response').hide();
		
		$(mapContainer).jmap('SearchDirections',
		{
			'query': 'from: '+fromValue+' to: '+toValue+' ',
			'panel': directionsContainer,
			'locale' : 'nl_NL'
		},
		
		function(result,options)
		{
			var valid 		= Mapifies.SearchCode(result.getStatus());
			if(valid.success){
				$.each(result.Placemark,function(i,point){
					$(mapContainer).jmap('AddMarker',{
						'pointLatLng':[point.Point.coordinates[1],point.Point.coordinates[0]],
		                'pointHTML':point.address
					});
				});
			}
		});
		
		$('#directions').slideDown('normal');

	}
}
