$(document).ready(function(){
	search_init();
});

var timeout = null;
var prevsearch = "";
var noresult = false;

function search_init()
{	
	$("#search_txt").bind("keyup",autocompleter);
	//updateResults();
}

function autocompleter()
{
	if (timeout) clearTimeout(timeout);
	timeout = setTimeout(function(){
		var cursearch = $("#search_txt").val();
		//if(cursearch.indexOf(prevsearch)==0)
		//	alert('Hi');
		if(!(prevsearch!="" && cursearch.indexOf(prevsearch) >= 0 && cursearch.length > prevsearch.length && noresult))
			updateResults();
	}, 400);

}

function updateResults()
{
	
	var page=$("#pagenum").val();
	if(page==null)
		page =1 ;
	var url = "/postings/search/";
	var add = "%20";
	if($("#search_txt").val().length > 0 && $("#search_txt").val() != "Enter keyword, company, title or location")
		add = escape($("#search_txt").val());
	add = url+add+'/' + page;
	$.getJSON(add,
			function(data)
			{ 	
				if(data.countpages != 0 && $("#pagenum").val() > data.countpages)
				{	$("#pagenum").val(1);
					updateResults();
				}
				else
				{
					var display = "<ul class=\"postings\">";
					if(data.countpages != 0)
					{
						jQuery.each(data,function(i,val) {	
							if(i!="countpages") 
							{	var link = "<a href=\""+createPostingURLTitle(this.P.id,this.P.position,this.C.company_name)+"\">";
								display = display + "<li>\n" + link + "<div>\n<big>" + this.P.position + "</big>\n";
								display = display + "<small>" + this.C.company_name + "</small>\n<strong>";
								display = display + this.P.city + ", " + this.P.state + "</strong>\n</div>\n</a>\n</li>";
								/*
								display = display + "<tr><td>" + link + this.P.company_name + "</a></td><td> " + link; 
								display = display + this.P.position + "</a></td><td> ";
								display = display +  link + this.P.city + ", " + this.P.state + "</a></td></tr>\n"; */
							} 
						});
						
						noresult = false;
						prevsearch = $("#search_txt").val();
					}
					if(data.countpages == 0)
					{	display = display + "<li> <br/> <center> No Results </center> </li>";
						noresult = true;
					}
					display = display + "</ul>";
					$("#display_content").html(display);
					makepagenav(data.countpages,$('#pagenum').val());
				}
			});
}

function createPostingURLTitle(id,position,company_name)
{	
		var allowed="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_";
		var start = "http://www.entryboard.com/v/"+id+"/";
		var i = 0;
		var inSpace = false;
		while(i < position.length)
		{	if(allowed.indexOf(position.charAt(i))>=0)
			{	start+=position.charAt(i);
				inSpace = false;
			}
			else if(!inSpace)
			{	start+="-";
				inSpace = true;
			}
			i++;
		}
		i=0;
		inSpace=false;
		start+="-";
		while(i < company_name.length)
		{	if(allowed.indexOf(company_name.charAt(i))>=0)
			{	start+=company_name.charAt(i);
				inSpace = false;
			}
			else if(!inSpace)
			{	start+="-";
				inSpace = true;
			}
			i++;
		}
		return start;	
}

function makepagenav(countpages, curpage)
{	var o = "";
	var start = 1;
	var end = countpages;
	var tablestr ="<table id=\"pagenavtable\"><tr>";
	var f_first = false;
	var f_last = false;
	var numshow = 10;
	if(countpages > numshow)
	{	if(curpage < numshow-2)
		{	end = numshow;
		}
		else if(curpage > countpages-3)
		{	end = countpages;
			start = countpages-numshow+1;
		}
		else
		{	start = curpage-Math.floor(numshow/2);
			end = start+numshow-1;	
		}	

		if(curpage!=1)
		{	tablestr = tablestr + "<td><b><span id=\"first\"> \< </span></b></td>";
			f_first = true;
		}
	}
	for(i=start;i<=end;i++)
	{	if(i==curpage)
				tablestr = tablestr +  "<td><b><span id=page" + i + ">" + i + "</span></b></td>";
			else
				tablestr = tablestr +  "<td><span id=page" + i + ">" + i + "</span></td>";
			
	}
	if(countpages > numshow && curpage != countpages)
	{	tablestr = tablestr + "<td><b><span id=\"last\"> \> </span></b></td>";
		f_last = true;
	}	
	tablestr = tablestr + "</tr></table>";
	$("#pagenav").html(tablestr);
	if(f_first)
		$("#first").bind("click",function(){$("#pagenum").val(1);updateResults(1);});	
	if(f_last)
		$("#last").bind("click",function(){$("#pagenum").val(countpages);updateResults(countpages);});
	for(i=start; i<=end;i++)
	{	if(i!=curpage)
				$("#page"+i).bind("click",function(){
											$("#pagenum").val(this.innerHTML);
											updateResults(this.innerHTML);
											});
	}
}