(function($){
		
	$.pfa = {
		defaults : {
			container : null,
			source : {
				//server: 'http://test.netblast.no' 
				server:'http://intranet1.ekbo.de'				
			},
			dimensions : {},
			maxelements: 10,
			parameters : {
				module: 'pfa',
				callback : 'gemeinden',
				validation : new Date().getTime()+"STRONG",
				q: null,  //escaped
				format:'jsonp'
			}
		}	
	};
			   
	$.fn.extend({
		pfa : function(parameters){	
			//Combine the incoming parameters with the defaults
			var options = $.extend(true,$.pfa.defaults,parameters);
					
			//$.log(options);	
				
			//Setting the container
			options.container = this;					

			//Draw result
			return this.each(function(){
				$.fn.pfa.result(options);
			});						
		}
	});
	
	$.fn.pfa.result = function(options){
	
		var url = options.source.server + "/ekbo/injection?" + $.parameterize(options.parameters) + '&jsoncallback=?';
			
		var result = jQuery("<div/>").addClass("netblast-pfa-result").css("min-height","100px");		
		
		if(options.container){
			jQuery(options.container).prepend(result);	
		} else {			
			jQuery("#content").find("h1").after(result);
		}			  
			 
		$.log(url);
		result.busy();
	
		jQuery.ajax({
			url: url,
			dataType:'json',
			success:function(data){	
				//$.log("DONE, data: "+data);
				
				if(data && data.value){
									
					var table = jQuery("<table/>").attr({'cellspacing':'0','cellpadding':'0'});
					var thead = jQuery("<thead/>");                
					var row = jQuery("<tr/>");
	
					var cell = jQuery("<td/>").addClass("ziffer").text("#");
					row.append(cell);
				
					cell = jQuery("<td/>").addClass("name").text("Name");
					row.append(cell);            
		
					table.append(thead.append(row));

					data.value.sort(function(a,b){

						var s1 = a.sortorder;
						var s2 = b.sortorder;
						
						var f1 = a.filename.replace(/\s/g, '');
						var f2 = b.filename.replace(/\s/g, '');
	

						if(s1 != s2){
							if(s1 > s2) return -1;
							if(s1 < s2) return 1;
							return 0;							
						}

						if(f1 < f2) return -1;
						if(f1 > f2) return 1;
						return 0;
					});         
	
					jQuery.each(data.value,function(index,element){                    
																
						row = jQuery("<tr/>");
						if(index%2==0){
							row.addClass("odd");
						} else {
							row.addClass("even");
						}     
	
						cell = jQuery("<td/>").addClass("even ziffer").text(element.filename);
						row.append(cell);
	
						cell = jQuery("<td/>").addClass("odd").text(element.label);
						row.append(cell);                    
	
						row.click(function(){
							options.parameters.ziffer = jQuery(".ziffer",this).text();//.split(' ').join(''); 
							options.parameters.callback = 'gemeinde';
							
							$.log("options.parameters.ziffer: "+options.parameters.ziffer); 
																			
							$.fn.pfa.ziffer(options);																					
						});
	
						table.append(row.append(cell));
	
						//$.log(element);
					}); 
					
					var tfoot = jQuery("<tfoot/>");
					tfoot.append(jQuery("<tr/>").append($("<td/>").attr("colspan","2").text("Gefunden: "+data.value.length)));
					table.append(tfoot);
					result.append(table).finished();
				}
			},
			error:function(XMLHttpRequest, textStatus, errorThrown){
				//$.log(textStatus);
			},
			timeout:4000
		});			
	}
	
	$.fn.pfa.ziffer = function(options){
		
		var url = options.source.server + "/ekbo/injection?" + $.parameterize(options.parameters) + '&jsoncallback=?';			
		var details = jQuery("<div/>").attr("id","netblast-pfa-details");
		$(".netblast-pfa-result",options.container).prepend(details);
		$("table",options.container).fadeOut(200);
		
		$.log(url);
		
		details.busy();
		
		jQuery.ajax({
			url: url,
			dataType:'json',
			success:function(data){				
				if(data.value.html){
				
					if(options.parameters.q.indexOf("+") != -1){
  						var keywords = options.parameters.q.split("+");
					   	var content = data.value.html;
  						
					   	for(i=0;i<keywords.length;i++){
					   		content = $.highlight(content,unescape(keywords[i]));
						}
						
						details.html(content);
					} else {
						details.html($.highlight(data.value.html,unescape(options.parameters.q)));															}
						
					var close = jQuery("<button/>").text("x").click(function(){
						details.fadeOut(200).detach(); 
						$("table",options.container).fadeIn(200);
					});										
					details.prepend(close).finished();
				//CLOSE ZIFFER
				} else {			
					$.log(data);		
					details.finished().fadeOut(200).detach(); 
					$("table",options.container).fadeIn(200);
					alert("Invalid data");
				}
			},
			error:function(XMLHttpRequest, textStatus, errorThrown){
				//$.log(textStatus);
			},
			timeout:4000
		});
	}
			
	$(document).ready(function(){
		
		if(location.search != "" || location.search != "?"){
				if(location.search.substring(1).split("=")[0] == "q"){					
					
					var query = decodeURI(location.search.substring(1).split("=")[1]);
					
					
					$.log("query before escaping it: "+query);
					query = escape(query);				
					$.log("query escaped: "+query);
					
					$("#content h1").after($("<div/>").pfa({parameters:{q:query}}));
				}
		}
	});
	
})(jQuery);
