jQuery.expr[':'].contains = function(a,i,m){
    return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0;
};

(function($) {
	$.fn.tagAjaxFb = function(options) {
		var settings = $.extend({}, $.fn.tagAjaxFb.options, options);
		selezionaDaLista=true;
		
		$(this).find('.selezionati div.checkbox input').hide();
		$(this).find('.selezionati div.checkbox').hide();
		
		$(this).find('.lista div.checkbox').click(function(){
			$.fn.tagAjaxFb.clickLista($(this),settings.soloUno);
			
		});
		
		$(this).find('.selezionati div.checkbox').click(function(){
			$.fn.tagAjaxFb.clickSelezionati($(this));
		});
		
	
		$('.cercaFb').keyup(function(e){
			$.fn.tagAjaxFb.cercaFb($(this),settings.add,settings.evidenzia);
		});
		
		$('.resetRicerca').click(function(){
			inputCerca=$(this).prev();
				
			inputCerca.attr('value','');
			inputCerca.keyup();
		});
		
		$('.addRicerca').click(function(){
			$.fn.tagAjaxFb.add($(this),settings.model);
		});
	}
	
	$.fn.tagAjaxFb.clickLista = function(el,soloUno) {
		if(soloUno==0 || selezionaDaLista==true){
			check=el.find('input');
			
			check.attr('checked','checked');
			
			idCheck=check.attr('value');

			el.hide();
			
			selezionati=el.parent().next();
			selezionati.find('input[value='+idCheck+']').parent().show();
	
//			el.parent().find('div.checkbox input').attr('readonly','readonly');
			if(soloUno==1)
				selezionaDaLista=false;
			
			$.fn.tagAjaxFb.attivaHasOne();
		}
	}
	
	$.fn.tagAjaxFb.clickSelezionati = function(el) {
		el.find('input').attr('checked','');

		idCheck=el.find('input').attr('value');
		el.hide();
		
		lista=el.parent().prev();
		lista.find('input[value='+idCheck+']').parent().show();
		lista.find('input[value='+idCheck+']').attr('checked','');		

//		el.parent().parent().find('.lista div.checkbox input').attr('readonly','');
		selezionaDaLista=true;

		$.fn.tagAjaxFb.attivaHasOne();
	}	
	
	$.fn.tagAjaxFb.cercaFb = function(el,add,evidenzia) {
		date=new Date;
		tempoInizio=date.getMilliseconds();
		tempoOra=tempoInizio;

		lista=el.nextAll().find('.lista').eq(0);
		selezionati=el.nextAll().find('.selezionati');
		ricerca=el.attr('value');
		
		if(ricerca==''){
			el.removeClass('attivo');
			el.nextAll('.resetRicerca').eq(0).hide();
			el.nextAll('.addRicerca').eq(0).hide();
		}else{
			el.nextAll('.resetRicerca').eq(0).show();
			el.addClass('attivo');
		}		

		
		lista.find('label').parent().show();

		giaSelezionati=selezionati.find('div:visible input');
				
		nonTrovati=lista.find('label').not(":contains('"+ricerca+"'), :first-child");
		nonTrovati=nonTrovati.parent();

		nonTrovati.hide();
		
		trovati=lista.find("label:contains('"+ricerca+"')").not(":first-child");

//		console.log(trovati);
//		console.log(giaSelezionati);
		giaSelezionati.each(function(){
			trovati.parent().find('input[value='+$(this).attr('value')+']').parent().hide();
		});

		if(trovati.length>0){		
//			el.addClass('attivo');
//			el.nextAll('.resetRicerca').show();
			el.nextAll('.addRicerca').eq(0).hide();
			
			if(evidenzia==1){
				trovati.each(function(){
					$.fn.tagAjaxFb.evidenzia($(this),ricerca);
				});
			}
		}else{
			if(add==1){
				el.nextAll('.resetRicerca').eq(0).hide();
				el.nextAll('.addRicerca').eq(0).show();
			}
		}
	}	
	
	$.fn.tagAjaxFb.evidenzia = function(el,ricerca,model) {
		ricercaRegExp=new RegExp(ricerca,'i');
		text=el.text().match(ricercaRegExp);
		
		text=el.text().replace(text,'<span class="evidenzia">'+text+'</span>');
		
		el.html(text);
	}
	
	$.fn.tagAjaxFb.add = function(el,model) {
		ricerca=el.prevAll('.cercaFb').attr('value');
//		console.log(ricerca);
		dataPost={
			nome:ricerca,
			model:model,
			parentClass:'',
			tipo:''
		};
//		console.log(dataPost);
		$.post(
			DIR+'tags/add/', 
			dataPost, 
			$.fn.tagAjaxFb.addCallback, 
			"json"
		);
	}
	
	$.fn.tagAjaxFb.addCallback = function(data){
		htmlInputLista='<input type="checkbox" id="'+data.modelBase+''+data.modelBase+''+data.id+'" value="'+data.id+'" name="data['+data.modelBase+']['+data.modelBase+'][]"/>';
		htmlInputSelezionati='<input type="checkbox" id="'+data.modelBase+''+data.modelBase+''+data.id+'" value="'+data.id+'" name="data['+data.modelBase+']['+data.modelBase+'][]" style="display: none;"/>';

		htmlLista='<div class="checkbox">';
		htmlLista+=htmlInputLista;
		htmlLista+='<label for="'+data.modelBase+''+data.modelBase+''+data.id+'">'+data.nome+'</label>';
		htmlLista+='</div>';
		
		htmlSelezionati='<div class="checkbox" style="display: none;">';
		htmlSelezionati+=htmlInputSelezionati;
		htmlSelezionati+='<label for="'+data.modelBase+''+data.modelBase+''+data.id+'">'+data.nome+'</label>';
		htmlSelezionati+='</div>';
		
		
		$('#editBlock #elencoFb'+data.modelBase+' .lista').append(htmlLista);
		$('#editBlock #elencoFb'+data.modelBase+' .selezionati').append(htmlSelezionati);
		
		$('#editBlock #elencoFb'+data.modelBase).prevAll('.cercaFb').keyup();
		
		$('#editBlock #elencoFb'+data.modelBase).find('.lista div.checkbox').unbind('click');
		$('#editBlock #elencoFb'+data.modelBase).find('.lista div.checkbox').click(function(){
			$.fn.tagAjaxFb.clickLista($(this));			
		});
		
//		console.log('#elencoFb'+data.modelBase);
		$('#editBlock #elencoFb'+data.modelBase).find('.selezionati div.checkbox').unbind('click');
		$('#editBlock #elencoFb'+data.modelBase).find('.selezionati div.checkbox').click(function(){
			$.fn.tagAjaxFb.clickSelezionati($(this));			
		});
	}

	$.fn.tagAjaxFb.attivaHasOne = function() {
		hasOne='';
		$('.hasOne').each(function(){
		    classe=$(this).attr('class');
		    classe=classe.replace(/hasOne /,'');

		    hasOne+=classe+',';
		});

		$('#elencoFbTag .selezionati .checkbox:visible label').each(function(){
			nomeTag=$(this).text();
			
//			console.log(nomeTag);
			
			nomeTag=nomeTag.replace(/ /g,'').replace(/\[X\]/g,'');
			
			if(hasOne.search(nomeTag+',')>-1){
				$('.'+nomeTag).slideDown();
				hasOne=hasOne.replace(nomeTag+',','')
			}
		});
		
		inattivi=hasOne.split(',');
		for (i in inattivi){
		    if(inattivi[i]!='')
		    	$('.'+inattivi[i]).slideUp();
		}
	}
	
	$.fn.tagAjaxFb.options = {
		add:0,
		model:'',
		evidenzia:1,
		soloUno:0
	};
})(jQuery);
