/*
 * Serkan Konakci
 * Simple Multi Search Script 
 */

$(document).ready(function() {
	$('#searchopener').click(
		function(){
			if($('div').hasClass('fullpage'))
				$(".fullpage").fadeOut();

			$('<div class="fullpage"></div>').css('filter', 'alpha(opacity=35)').fadeIn(100).prependTo('body');
			$(".absolute").fadeIn();
			$("input[name='search']").watermark("Örn: Sürücü Yükleme");	
			
			
			// custom css expression for a case-insensitive contains()
			jQuery.expr[':'].Contains = function(a,i,m){
				return (a.textContent || a.innerText || "").toUpperCase().indexOf(m[3].toUpperCase())>=0;
				};
			/*
			start = new Date().getTime();
			stop = new Date().getTime();
			dif=(stop-start)/1000;
			$('<li>'+ start + ': ' + stop + " : " + dif + "</li>").appendTo('#alert');
			*/
			function sortsearch(data_A, data_B) {
				return ((data_A.length < data_B.length) ? -1 : ((data_A.length > data_B.length) ? 1 : 0));
				}
			jQuery.fn.en = function(type){
				var tr = new Array("ı","ş","ç","ü","ö","ğ","İ","Ş","Ç","Ü","Ö","Ğ");
				var en = new Array("i","s","c","u","o","g","I","S","C","U","O","G");
				var text;
				$(this).each(function(){
						$this = $(this);
						(type=='input') ? text = $this.val() :  text =  $this.html();
						for (var i=0;i<tr.length;i++)
							text =  text.replace(new RegExp(tr[i],"g"), en[i]);
						if (type!='input')
							$this.html(text);
					}
				);
				return text;
				}
			$.get("/list.html").success(function(data){
					$('ul#list').html(data);
					$clone = $("ul#list").clone();
					$($clone).en();
					$('input[name="search"]').bind('keyup',function(e) {
					var $found = new Array();
					if ($('input[name="search"]').val().length>2){
						var $words = $.trim($('input[name="search"]').en('input')).split(" ");
						$subsets =new Array(new Array());
						$.each($words,function($k,$element){
								if($element.length>2) //uzunluğu 2 den büyük kelimeleri arar
								$.each($subsets,function($l,$combination){
									$subsets.push([$element].concat($combination));
									}
								);
							});
						$subsets.shift();
						$subsets.sort(sortsearch).reverse();
						$("<ul id='recs'></ul>").appendTo($("#search .recadd"));
						$.each($subsets, function(key, value){
								$matches="";
								$.each(value,function(k,v){
									//if(v.length>2)
										$matches += ':Contains('+v+')';
									});
								$('li',$clone).each(function (e){
							    	if(($($matches,this).text().length)>0)
							    		if($.inArray(e,$found)==-1)
							    			$found.push(e);
							    	});
							});
						//$('<li>'+ $found + "</li>").appendTo('#alert');
						$('#recs li').remove();
						if($($found).size()>0){
							$($found).each(function(k,v){
								
								$($('ul#list li').get(v)).clone().appendTo('#recs');
								});
							$('.paginator').remove();
							separator = ''; // To separate paginator's items
							$("#recs").pagination();
							$('.paginator').addClass('center');
						}
						else
							$('.paginator').remove();
					}
					else{
						$('.paginator').remove();
						$('#recs li').remove();
					}
						
					});
				});
			$('.fullpage').click(
				function(){
					$("#search .absolute").fadeOut();
					$(".fullpage").fadeOut(100);
					$("input[name='search']").watermark("Örn: Akis Kart Yükleme Adımları");
					});
		});
});
