var MapSearch = {

	initialize : function()
	{
		$.widget("custom.catcomplete", $.ui.autocomplete, {
        	_renderMenu: function( ul, items ) {
            	var self = this,
                currentCategory = "";
                $.each( items, function( index, item ) {
                	if ( item.category != currentCategory ) {
                		ul.append( "<li class='ui-autocomplete-category'>" + item.category + "</li>" );
                		currentCategory = item.category;
                	}
                	self._renderItem( ul, item );
                });
			}
    	});
    				
        geocoder = new GClientGeocoder();
        geocoder.setBaseCountryCode('FI');
        
        $("#searchField").catcomplete({
        	source: function(request, response) {
     						
     			var responses = new Array();
     			geocoder.getLocations(request.term, function(results, status) {
     						
     				if (typeof(results.Placemark) !== "undefined" || results.Status.code == 200)
    				{
                    	if (results.Placemark.length == 1)
                        {
                        	if(typeof(results.Placemark[0].AddressDetails) !== "undefined" && typeof(results.Placemark[0].AddressDetails.Country) !== "undefined" && results.Placemark[0].AddressDetails.Country.CountryNameCode == 'FI'){
                            	responses.push({"category":"Osoitteet","id":"","label":results.Placemark[0].address,"value":results.Placemark[0].address,"latitude":results.Placemark[0].Point.coordinates[0],"longitude":results.Placemark[0].Point.coordinates[1]});
                            }
						}
                        else if (results.Placemark.length > 1)
                        {
                        	for (var i = 0; i < results.Placemark.length; i++) {
        						if(typeof(results.Placemark[0].AddressDetails) !== "undefined" && typeof(results.Placemark[0].AddressDetails.Country) !== "undefined" && results.Placemark[0].AddressDetails.Country.CountryNameCode == 'FI'){
        							responses.push({"category":"Osoitteet","id":"","label":results.Placemark[i].address,"value":results.Placemark[i].address,"latitude":results.Placemark[i].Point.coordinates[0],"longitude":results.Placemark[i].Point.coordinates[1]});
        						}
        					}
						}
					}
    						
    			});
    					
    			$.ajax({
            		url: "/marker/getmarkerstosearch/term/",
            		data: request,
            		dataType: "json",
            		success: function( data ) {
            	 		if(data.length > 0){
                			for (var i = 0; i < data.length; i++) {
                				responses.push({"category":"Kohteet","id":data[i].id,"label":data[i].label,"value":data[i].value});
                			}
            			}
            			
            			MapSearch.setHeight(responses.length);			
            			            			
            			response(responses);
    					return;
            		}
    			});
    						
    		}, 	
            minLength: 2,
            select: function(event, ui) {
            	
            	$('#searchField').val('');
            	
            	if (ui.item.id == "") {
            				
            		var coords = {
                    	lat : ui.item.latitude,
                        lng : ui.item.longitude
                    };
                        		
                    MMap.goToLocation(coords); 
            	}
            	else {
            		
            		window.location = "?markerId="+ui.item.id;
            	}
            				
            }
		});
	},
	
	setHeight : function(length){
		
		var height = 80;
		var counter = 0;
		
		do {
	  		height = height + 25;
	  		counter++;
		} while (length > counter && counter < 19) {
			$('.ui-menu').height(height);		
		}
		
	}
}
