VisualSearchClass = function(){
	this.ITEMS_PER_PAGE = 5;
	
	this.Page = 1;
	this.Pages = 0;
	
	this.$form = $j("#visualsearch form");
	this.$container = $j("#visualsearch .container");
	this.$results = this.$container.find(".results ul");	
}

VisualSearchClass.prototype.Search = function(){
	objVisualSearch = this;
	this.$container.find(".noresults").fadeOut();
	this.$results.fadeTo("normal", 0.2);
	$j.post(location.pathname, this.$form.serialize(), function(sResponse){
		try{
			objVisualSearch.$results.html("");
			
			eval("var aResults = " + sResponse + ";");
			
			if(aResults.length != 0){
				var sHTML = "";
				
				for(i=0; i<aResults.length; i++){
					Item = aResults[i];
					if(Item.thumbnail == "") continue;
					sHTML += "<li><a href=\"" + Item.url + "\"><img src=\"" + Item.thumbnail + "\" alt=\"\" /><span>" + Item.name + "</span></a></li>";
				}
				objVisualSearch.$results.html(sHTML);
				
				objVisualSearch.Entries = aResults;
				objVisualSearch.Pages = Math.ceil(objVisualSearch.Entries.length / objVisualSearch.ITEMS_PER_PAGE);
				
				objVisualSearch.ItemWidth = objVisualSearch.$results.find("li").outerWidth(true);
				$j("#visualsearch .container .results ul").width(objVisualSearch.ItemWidth * objVisualSearch.Entries.length);
				
				if(objVisualSearch.Pages > 1){
					objVisualSearch.$pages = $j("#visualsearch .paging .pages");
					objVisualSearch.$pages.html("");
					
					var sHTML = "";
					for(i=1; i<=objVisualSearch.Pages; i++){
						sHTML += "<a href=\"#" + i + "\"><img id=\"as_visualsearch_page_" + i + "\" src=\"/images/visualsearch/page-dot.gif\" alt=\"Page " + i + "\" /></a>";
					}
					objVisualSearch.$pages.html(sHTML);
					
					if(!$j("#visualsearch").hasClass("floatingnav")){
						$j("#visualsearch .paging").show();
					}
					
					objVisualSearch.$pages.find("a").unbind().click(function(){
						var iPage = parseInt(this.href.split("#")[1]);
						objVisualSearch.SetPage(iPage);
						return false;
					});
				}
				else{
					$j("#visualsearch .paging").hide();
				}
				
				objVisualSearch.SetPage(1);
				
				objVisualSearch.$results.stop().fadeTo("normal", 1);
			}
			else{
				this.Page = 1;
				this.Pages = 0;
				objVisualSearch.$results.fadeTo("normal", 0);
				objVisualSearch.$container.stop().find(".noresults").fadeIn();
			}
		}
		catch(e){}
	});
}

VisualSearchClass.prototype.ChangePage = function(iStep){
	iPage = this.Page + iStep;
	if(iPage < 1) iPage = 1;
	if(iPage > this.Pages) iPage = this.Pages;
	if(iPage != this.Page){
		this.SetPage(iPage);
	}
}

VisualSearchClass.prototype.SetPage = function(iPage){
	if(iPage < 1 || iPage > this.Pages || isNaN(iPage)) return;
	this.Page = iPage;
	
	this.$container.find(".paging .pages img").each(function(){
		var sImage = this.src;
		sImage = sImage.replace("dot-active", "dot");
		this.src = sImage;
	});
	
	$j("#as_visualsearch_page_" + this.Page).each(function(){
		var sImage = this.src;
		sImage = sImage.replace("dot", "dot-active");
		this.src = sImage;
		return;
	});
	
	this.$results.animate({left: -((this.ItemWidth * this.ITEMS_PER_PAGE) * (this.Page - 1))});
}

function VisualSearch_Load(){
	VisualSearch = new VisualSearchClass();
	
	VisualSearch.$container.find(".previous a").click(function(){
		VisualSearch.ChangePage(-1);
		return false;
	});
	
	VisualSearch.$container.find(".next a").click(function(){
		VisualSearch.ChangePage(1);
		return false;
	});
}
