/**
* 	q_Sugestie 0.1
*
*/
		function lista(dane){
			var listaSugesti	=	"<ul>";
			var	i	=	1;
				dane.each(function(wiersz){
					if(model.maxSugesti>=i){
						wartosc	=	$(model.idInputText).value
						//wiersz2	=	wiersz.replace('/'+wartosc+'/gi','<b>'+wartosc+'</b>');
						var reg = new RegExp(wartosc, 'gi');
						wiersz2	=	wiersz.replace(reg,'<b>'+wartosc+'</b>');
						listaSugesti	+=	"<li>"+wiersz2+'</li>';
						i++
					}
				})
			listaSugesti	+=	'</ul>';
			return listaSugesti
		}

                function czyscWartosc(wiersz){
			wiersz	=	wiersz.replace('/\<b\>/gi','');
			wiersz	=	wiersz.replace('/\<\/b\>/gi','');
			wiersz	=	wiersz.replace('/\//gi','/');
			wiersz 	=	wiersz.replace('&amp;','&');
			wiersz 	=	wiersz.replace('&amp;','&');
                        wiersz  =       wiersz.replace(/\./gi,'')
                        return wiersz;
                }

		Model.prototype.pobierzDane	=	function(){
			var self	=	this;
			new Ajax.Request(this.plik,{
				'asynchronous':self.asynchronous,
                                'parameters':{
                                    'ajax':1
                                },
				onSuccess:function(odp){
					var pobraneDane	=	odp.responseText.evalJSON()
					self.dane	=	self.suroweDane	=	pobraneDane.rows.sort()
				}
			})
		}

                Model.prototype.dopelnij = function(){
                    if(this.dopelnienie){
                        sugestie                        =   $('q_sugestie').getElementsByTagName('li')
                        if(sugestie[0]){
                            $('q_dopelnienie').innerHTML       =   sugestie[0].innerHTML.stripTags()
                            $(this.idInputText).value          =   $(this.idInputText).value.stripTags()
                        }
                    }
                }

		Model.prototype.generujSugestie =	function (){
                    if($(this.idDiva)){
			$(this.idDiva).innerHTML=lista(this.dane)
                       // this.dopelnij();
                    }
		}
		Model.prototype.usunSugestie	=	function(){
			this.dane	=	[];
			this.generujSugestie()
			if($(this.idInputText).value==''){
				$(this.idInputText).value=this.tekstStart
			}
		}
		
		Model.prototype.obserwuj = function (){
			var self	=	this
			$(this.idDiva).observe('mousedown',function(zdarzenie){
				if(zdarzenie.target.tagName=='LI'){
					self.wstawDoPola(zdarzenie.target.innerHTML)
					self.wyslijForm()
					//$(self.idInputText).value	=	zdarzenie.target.innerHTML
				}
			})			
		}
		
		Model.prototype.wyslijForm	=	function (){
                    $(this.submit).click();
		//	$(this.form).request();
		}
		
		Model.prototype.wstawDoPola	=	function(wiersz){
			wiersz  =   czyscWartosc(wiersz)
			$(this.idInputText).value	=	wiersz.stripTags()
		}
		
		Model.prototype.nawigacjaStrzalkami	=	function(){
			var tablicaZLista               =	$('q_sugestie').getElementsByTagName('li')
			var wielkosctablicy             =	tablicaZLista.length-1
			if(this.kliknietyPrzycisk==38){
				//gora
				this.nawigacjaNumer	=	(this.nawigacjaNumer<=0)?wielkosctablicy:this.nawigacjaNumer-1;
			}else if(this.kliknietyPrzycisk==40){
				//dol
				this.nawigacjaNumer	=	(this.nawigacjaNumer>=wielkosctablicy)?0:this.nawigacjaNumer+1;
			}else if(this.kliknietyPrzycisk==27){
				//esc
				this.usunSugestie()
			}else if(this.kliknietyPrzycisk==13){
				//enter
				
			}
			
			if(this.kliknietyPrzycisk!=27){
				for(var i=0; i<=wielkosctablicy;i++){
						if(this.nawigacjaNumer==i){
							this.wstawDoPola(tablicaZLista[i].innerHTML)
							//$(this.idInputText).value	=	tablicaZLista[i].innerHTML
						}			
						klasa	=	(this.nawigacjaNumer==i)?'q_sugestieAktywny':'';
						tablicaZLista[i].className=klasa
				}
			}
		}
		
		function Model(url,opcje){
			this.plik			=	url;
			this.idDiva			=	$('q_sugestie');
			this.idInputText		=	opcje.idInputText
			this.submit			=	opcje.submit
			this.start			=	(opcje.start)?opcje.start:3;
			this.asynchronous		=	(opcje.asynchronous)?opcje.asynchronous:true;
			this.tekstStart			=	(opcje.tekstStart)?opcje.tekstStart:'';
			this.maxSugesti			=	(opcje.maxSugesti)?opcje.maxSugesti:10;
			this.aktywny			=	false;
			this.kliknietyPrzycisk          =	false;
                        this.dopelnienie                =       opcje.dopelnienie
			this.nawigacjaNumer		=	-1;
			this.suroweDane			=	'';
			this.dane			=	'';
			this.pobierzDane();
			this.obserwuj();
			$(this.idInputText).value	=	this.tekstStart
		}
		
		function filtruj(input){
			var wartosc	=	$F(input);
                        
			if(wartosc==model.tekstStart){
				input.value=''
			}
			wartosc =   wartosc.replace(/\./gi,'');
			if(wartosc.toArray().length>=model.start && model.suroweDane!=''){
					model.dane	=	model.suroweDane.clone()
                                       // model.dane      =       model.dane.uniq()
					model.dane	=	model.dane.filter(function(x){
						var xMa	=	x.toLocaleLowerCase()
						var wartoscMa	=	wartosc.toLocaleLowerCase()
						var reg = new RegExp('^'+wartosc, 'gi');
						return xMa.match(reg);
					})
					if(model.dane.length==0){
						model.dane	=	model.suroweDane.clone()
						model.dane	=	model.dane.filter(function(x){
							var xMa	=	x.toLocaleLowerCase()
							var wartoscMa	=	wartosc.toLocaleLowerCase()
							return xMa.indexOf(wartoscMa) != -1;
						})
					}
				model.aktywny	=	true;
			}else{
				model.dane	=	[];
			}
			
			if(!model.kliknietyPrzycisk){
				model.nawigacjaNumer	=	-1
				model.generujSugestie()
			}
		}
		
		
	   window.document.observe('keydown', function(zdarzenie) {
			var kod	=	zdarzenie.keyCode;				
			if(model.aktywny && (kod==38||kod==40||kod==13||kod==27)){
					model.kliknietyPrzycisk	=	kod
					model.nawigacjaStrzalkami()
			}else{
				model.kliknietyPrzycisk	=	false;
			}
		})
	   window.document.observe('mousedown', function(zdarzenie) {
			model.usunSugestie()
		})
		
				//gora :38
				//dol :40
				//enter :13
				//esc	:27

