if (typeof (Edina) == "undefined") {
	var Edina = {};
};

if (typeof (Edina.Gogeo) == "undefined") {
	Edina.Gogeo = {};
};


var server = "http://unlock.edina.ac.uk/ws/"
	
	

//requires log-events.js
jQuery(document).ready(function() {
	Edina.Gogeo.defaultNameField = jQuery('#unlock-name-field').val();
	jQuery("#unlock-name-field").autocomplete(server+"uniqueNameSearch",{    
             
	     dataType: 'jsonp',
             
             parse: function(data){
    	  		var rows = new Array();
    	     	data = data.features;
    	     	for(var i=0; i<data.length; i++) {
    	       		rows[i] = { data:data[i], value:data[i].properties.name, result:data[i].properties.name };
    	       	}
    	       	return rows;
    	     },
    	     
     	     formatItem: function(row, i, n) {
    	    	 var centroid = new Array();
    	    	 centroid = row.properties.centroid.split(',');
    	    	 var xcoord = centroid[0].substr(0,centroid[0].indexOf('.')+5);
    	    	 var ycoord = centroid[1].substr(0,centroid[1].indexOf('.')+5);
     	         return row.properties.name + ", " +row.properties.country + "<br/><span style='font-size:70%'>" + row.properties.featuretype + "</span>"  + "<span style='margin-left:20px;font-size:70%'>(" +xcoord+ ", "+ycoord+")</span>" + "<br/><span style='font-size:90%'>" + row.properties.adminlevel1 + "</span>";
     	     },
    	     
    	     extraParams: {
    	       // Unlock doesn't support 'q' and 'limit', which are the autocomplete plugin defaults, so let's blank them out.
    	       q: '',
    	       limit: '',
    	       gazetteer: function(){
     	    	 if(jQuery("#unlock-uk-only").is(':checked')){return "os"}
     	    	 else{return "os,geonames"}
     	     	},
    	       format: 'json', // Retrieve the results in JSON format
    	       maxRows: 15, // Limit the number of results to 15
    	       count: 'no', // Prevent Unlock from counting the total possible results (faster)
    	       name: function () { return jQuery("#unlock-name-field").val() }
    	     },
    	     
    	     max: 15,
    	     minChars: 3
    	     
    	}).result(function(e, rows) {
            jQuery('#unlock-id-field').val(rows.id);
    	}); 
	
	jQuery("#advanced-unlock-name-field").autocomplete(server+"uniqueNameSearch",{    
        
		 dataType: 'jsonp',
        
        parse: function(data){
	  		var rows = new Array();
	     	data = data.features;
	     	for(var i=0; i<data.length; i++){
	       		rows[i] = { data:data[i], value:data[i].properties.name, result:data[i].properties.name };
	       	}
	       	return rows;
	     },
	     
	     formatItem: function(row, i, n) {
	    	 var centroid = new Array();
	    	 centroid = row.properties.centroid.split(',');
	    	 var xcoord = centroid[0].substr(0,centroid[0].indexOf('.')+5);
	    	 var ycoord = centroid[1].substr(0,centroid[1].indexOf('.')+5);
	         return row.properties.name + ", " +row.properties.country + "<br/><span style='font-size:70%'>" + row.properties.featuretype + "</span>" + "<span style='margin-left:20px;font-size:70%'>(" +xcoord+ ", "+ycoord+")</span>" ;
	     },
	     
	     extraParams: {
	       // Unlock doesn't support 'q' and 'limit', which are the autocomplete plugin defaults, so let's blank them out.
	       q: '',
	       limit: '',
	       gazetteer: function(){
	    	 if(jQuery("#advanced-unlock-uk-only").is(':checked')){return "os"}
	    	 else{return "os,geonames"}
	     	},
	       format: 'json', // Retrieve the results in JSON format
	       maxRows: 15, // Limit the number of results to 10
	       count: 'no', // Prevent Unlock from counting the total possible results (faster)
	       name: function () { return jQuery("#advanced-unlock-name-field").val() }
	     },
	     
	     max: 15,
	     minChars: 3
	     
	}).result(function(e, rows) {
       jQuery('#advanced-unlock-id-field').val(rows.id);
	});  
});  


Edina.Gogeo.autoNameSearch= function(){
	

	if(jQuery('#unlock-name-field').val() != Edina.Gogeo.defaultNameField ){
		withLocationSearch();

	}
	else{
		
		
		var any = $('#any').val();

		if($('#any').val() == ''){
			alert('nothing to search for');
		}

		else {
			var url = geonetworkUrl + 'any=' + $('#any').val() + '&sortBy=relevance&hitsPerPage=10&output=full';
			
			logSearch(any);
			window.location = url;
		}
	}
	

}

function withLocationSearch(){

	var any = $('#any').val();
	


	if(jQuery('#unlock-id-field').val() != 0){
		var url = server+'featureLookup?format=json&identifier=' + jQuery('#unlock-id-field').val()
	}
	else{
		var url = server+'uniqueNameSearch?format=json&name=' + jQuery('#unlock-name-field').val()
	}
	

	//make a jsonp request with &callback to allow XSS on IE8
	
	jQuery.getJSON(url+"&callback=?", function(data) {
		jQuery("#unlock-results").empty();
		jQuery.each(data.features, function(i,result) {
			var boundingBox = result.bbox;
			
			// choose decimal places
			var decimalPlaces = 4;
			
			var northLat = ""+boundingBox[3]; northLat = northLat.substr(0,northLat.indexOf('.')+(decimalPlaces+1));
			var southLat = ""+boundingBox[1]; southLat = southLat.substr(0,southLat.indexOf('.')+(decimalPlaces+1));
			var westLon = ""+boundingBox[2]; westLon = westLon.substr(0,westLon.indexOf('.')+(decimalPlaces+1));
			var eastLon = ""+boundingBox[0]; eastLon = eastLon.substr(0,eastLon.indexOf('.')+(decimalPlaces+1));
			
			
			
			var dLat = Math.abs(northLat-southLat);
			var dLon = Math.abs(westLon-eastLon);

			if(dLat < 0.7){
				northLat = parseFloat(northLat) + 0.35;
				southLat = parseFloat(southLat) - 0.35;
			}

			if(dLon < 1.0){
				westLon = parseFloat(westLon) - 0.5;
				eastLon = parseFloat(eastLon) + 0.5;
			}
			
			var url = '';
			if (any){
				url = geonetworkUrl + 'any=' + any + '&northBL=' + northLat + '&southBL=' + southLat + '&eastBL=' + eastLon + '&westBL=' + westLon + '&sortBy=relevance&hitsPerPage=10&output=full&relation=within'
			}
			else {
				url = geonetworkUrl + 'any=&northBL=' + northLat + '&southBL=' + southLat + '&eastBL=' + eastLon + '&westBL=' + westLon + '&sortBy=relevance&hitsPerPage=10&output=full&relation=within'
			}
			
			logWhereSearch(eastLon, westLon, southLat, northLat);
			
			window.location = url;
			
		});
	});
}

function advancedAutoNameSearch(){
	if(jQuery('#advanced-unlock-id-field').val() != 0){
		var url = server+'featureLookup?format=json&identifier=' + jQuery('#advanced-unlock-id-field').val()
	}
	else{
		var url = server+'uniqueNameSearch?format=json&name=' + jQuery('#advanced-unlock-name-field').val()
	}
	jQuery.getJSON(url, function(data){
		jQuery("#advanced-unlock-results").empty();
		jQuery.each(data.features, function(i,result){
			var boundingBox = result.bbox;
			
			// choose decimal places
			var decimalPlaces = 4;
			
			var northLat = ""+boundingBox[3]; northLat = northLat.substr(0,northLat.indexOf('.')+(decimalPlaces+1));
			var southLat = ""+boundingBox[1]; southLat = southLat.substr(0,southLat.indexOf('.')+(decimalPlaces+1));
			var westLon = ""+boundingBox[2]; westLon = westLon.substr(0,westLon.indexOf('.')+(decimalPlaces+1));
			var eastLon = ""+boundingBox[0]; eastLon = eastLon.substr(0,eastLon.indexOf('.')+(decimalPlaces+1));
			
			// jQuery("#results").append('<p>'+result.properties.name+'</p>');
			// jQuery("#advanced-unlock-results").append("<table style='font-size:70%'> <tbody> <tr><td></td><td>North bounding latitude<br/><span class='coord'>"+northLat+"</span></td><td></td></tr>  <tr><td>West bounding longitude<br/><span class='coord'>"+westLon+"</span></td><td></td><td>East bounding longitude<br/><span class='coord'>"+eastLon+"</span></td></tr>	<tr><td></td><td>South bounding latitude<br/><span class='coord'>"+southLat+"</span></td><td></td></tr> </tbody> </table>");
			
			jQuery("#northBL").val(northLat);
			jQuery("#southBL").val(southLat);
			jQuery("#eastBL").val(eastLon);
			jQuery("#westBL").val(westLon);
			jQuery("#region_simple").val('userdefined');

			GeoNetwork.minimapSimpleSearch.updateExtentBox();
			GeoNetwork.minimapAdvancedSearch.updateExtentBox();
			AoIrefresh();
		});
	});
}

function clearSearch(element){
	element.value='';
	element.onfocus=null;
	element.style.fontStyle='normal';
	element.style.color='black';
}

//If user presses enter, submit request
function checkEnter(e, formName) {
	var characterCode;
	if (e && e.which) {
		characterCode = e.which;
	} else {
		e = event;
		characterCode = e.keyCode;
	}

	if (characterCode == 13) {
		autoNameSearch();
		return false;
	} else {
		jQuery('#unlock-id-field').val(0);
		jQuery('#advanced-unlock-id-field').val(0);
		return true;
	}
}


