function ShopSort()
{
	var self;
	{
		self = this;
		self.Title = document.getElementById('shop_sort_title');
		self.Pop = document.getElementById('shop_sort_pop');
		self.New = document.getElementById('shop_sort_new');
		self.Preview = document.getElementById('shop_preview');
		self.PosterList = document.getElementById('poster_list');
		self.NavIndex = document.getElementById('shop_nav_index');
		self.ShopNav = document.getElementById('shop_nav');
		self.ShowAllTag = document.getElementById('shop_show_all');
		self.PageCount = 0;
		self.PageIndex = 0;
		self.SortType = 'title';
		self.SelColor = '#0c93f1';
		self.ShowAll = false;
	}

	this.init = function()
	{
		YUI().use("io-base", function(Y) {
			var uri = "/shop/getPageInfo/";
			Y.on('io:complete', self.countComplete, this);
			Y.io(uri);
		});
	}

	this.countComplete = function(id, o)
	{
		var val = o.responseText.split(",");
		self.PageCount = parseInt(val[0]);
		self.PageIndex = parseInt(val[1]);
		self.SortType = val[2];
		
		if(self.SortType == "title"){
			self.changeToSelected(self.Title, self.Pop, self.New);
		}
		else if(self.SortType == "pop"){
			self.changeToSelected(self.Pop, self.Title, self.New);
		}
		else if(self.SortType == "new"){
			self.changeToSelected(self.New, self.Title, self.Pop);
		}
		else{
			self.changeToSelected(self.Title, self.Pop, self.New);
		}
			
		self.getNewSortPage();
		self.buildNavIndex();
	}

	this.getNewSortPage = function()
	{
		YUI().use("io-base", function(Y) {
			var uri = "/shop/sort?type=" + self.SortType + "&index=" + self.PageIndex;
			Y.on('io:complete', self.sortComplete, this);
			Y.io(uri);
		});
		try {
			pageTracker._trackPageview('/shop/sort');
		} catch(err) {}
	}
	
	this.buildNavIndex = function()
	{
		var navindex = " | ";
		for(i = 0; i < self.PageCount; i++)
		{
			navindex += "<span id='nav_index" + i + "' class='nav-button' onclick='shopsort.jumpIndex(" + (i) +")'>"+(i+1)+"</span> | ";
		}
		self.NavIndex.innerHTML = navindex;

		if(self.PageIndex < 0)
		{
			self.ShowAll = true;
			self.ShopNav.style.display = "none";
			self.ShowAllTag.innerHTML = "Show in Pages";
		}
		else
		{
			document.getElementById('nav_index' + self.PageIndex).style.color = self.SelColor;
			self.ShowAllTag.innerHTML = "Show All";
		}
	}
	
	this.sortComplete = function(id, o)
	{
		self.PosterList.innerHTML = o.responseText;
	}

	this.sortByTitle = function()
	{
		self.changeToSelected(self.Title, self.Pop, self.New);
		self.SortType = "title";
		self.getNewSortPage();
	}

	this.sortByPop = function()
	{
		self.changeToSelected(self.Pop, self.Title, self.New);
		self.SortType = "pop";
		self.getNewSortPage();
	}

	this.sortByNew = function()
	{
		self.changeToSelected(self.New, self.Title, self.Pop);
		self.SortType = "new";
		self.getNewSortPage();
	}
	
	this.changeToSelected = function(select, unselect1, unselect2)
	{
		YUI().use('node', function(Y) {
			var sel = Y.one(select);
			var unsel1 = Y.one(unselect1);
			var unsel2 = Y.one(unselect2);
			
			sel.addClass('sel');
			sel.removeClass('unsel');
			
			unsel1.addClass('unsel');
			unsel1.removeClass('sel');
			
			unsel2.addClass('unsel');
			unsel2.removeClass('sel');
		});
	}

	this.showPreview = function(imgloc)
	{
		self.Preview.style.display = "block";
		self.Preview.innerHTML = "<img src=\'" + imgloc + "\' />";
	}

	this.hidePreview = function()
	{
		self.Preview.style.display = "none";
	}

	this.incIndex = function()
	{
		if(self.PageIndex < self.PageCount-1)
		{
			document.getElementById('nav_index' + self.PageIndex).style.color = "black";
			self.PageIndex++;
			document.getElementById('nav_index' + self.PageIndex).style.color = self.SelColor;
			self.getNewSortPage();
		}
	}

	this.decIndex = function()
	{
		if(self.PageIndex > 0)
		{
			document.getElementById('nav_index' + self.PageIndex).style.color = "black";
			self.PageIndex--;
			document.getElementById('nav_index' + self.PageIndex).style.color = self.SelColor;
			self.getNewSortPage();
		}
	}

	this.jumpIndex = function(new_index)
	{
		document.getElementById('nav_index' + self.PageIndex).style.color = "black";
		self.PageIndex = new_index;
		document.getElementById('nav_index' + self.PageIndex).style.color = self.SelColor;
		self.getNewSortPage();
	}

	this.toggleNav = function()
	{
		if(self.ShowAll)
		{
			self.ShowAll = false;
			self.ShopNav.style.display = "inline";
			self.PageIndex = 0;
			document.getElementById('nav_index' + self.PageIndex).style.color = self.SelColor;
			self.getNewSortPage();
			self.ShowAllTag.innerHTML = "Show All";
		}
		else
		{
			self.ShowAll = true;
			self.ShopNav.style.display = "none";
			document.getElementById('nav_index' + self.PageIndex).style.color = "black";
			self.PageIndex = -1;
			self.getNewSortPage();
			self.ShowAllTag.innerHTML = "Show in Pages";
		}
	}

	this.showOverlay = function(element, show)
	{
		if(show == 1)
		{
			element.getElementsByTagName("div")[0].style.display = "block";
		}
		else
		{
			element.getElementsByTagName("div")[0].style.display = "none";
		}
	}
}

