

var paginator = {};

paginator.init = function(options) {
	
	var itemCont = $(options.container);
	if(itemCont == null) return;
	
	
	var current_view_mode = 'tile'; 
	
	itemCont.viewMode = current_view_mode;
	itemCont.listItemSelector = options.selector;
	itemCont.tileItemSelector = "div.gameTileItem";
	itemCont.currentPage = 0;
	var items = itemCont.getElements(options.selector);
	

	//controls
	
	var prev_page_top = $('paginator_prev_page_top');
	var page_index_top = $('paginator_page_index_top');
	var next_page_top = $('paginator_next_page_top');
	
	var prev_page_bottom = $('paginator_prev_page_bottom');
	var page_index_bottom = $('paginator_page_index_bottom');
	var next_page_bottom = $('paginator_next_page_bottom');
	
	var sort_arrow = $('paginator_sort_arrow');
	sort_arrow.opened = false;
	sort_arrow.sortType = "date";
	var sort_choice_div = $('paginator_sort_choices');
	var sort_choice_current = $('paginator_sort_current');
	
	var alpha_choice = new Element('div');
	alpha_choice.set('html','A - Z');
	alpha_choice.inject(sort_choice_div);
	
	var latest_choice = new Element('div');
	latest_choice.set('html','Latest');
	latest_choice.inject(sort_choice_div);
	latest_choice.setStyle('display','none');
	
	var price_choice = new Element('div');
	price_choice.set('html','Price');
	price_choice.inject(sort_choice_div);
	
	alpha_choice.addEvent('click',function(){
		
		sort_choice_current.set('html', 'A - Z');
		
		alpha_choice.setStyle('display','none');
		latest_choice.setStyle('display','block');
		price_choice.setStyle('display','block');
		
		sort_arrow.sortType = "alpha";
		paginator.sortAlpha(itemCont, items);
		
		sort_choice_div.setStyle('display', 'none');
		sort_arrow.opened = false;
	
	});
	
	latest_choice.addEvent('click',function(){
		
		sort_choice_current.set('html', 'Latest');
		
		alpha_choice.setStyle('display','block');
		latest_choice.setStyle('display','none');
		price_choice.setStyle('display','block');
		
		sort_arrow.sortType = "date";
		paginator.sortDate(itemCont, items);
		
		sort_choice_div.setStyle('display', 'none');
		sort_arrow.opened = false;
	});
	
	price_choice.addEvent('click',function(){
		
		sort_choice_current.set('html', 'Price');
		
		alpha_choice.setStyle('display','block');
		latest_choice.setStyle('display','block');
		price_choice.setStyle('display','none');
		
		sort_arrow.sortType = "price";
		paginator.sortPrice(itemCont, items);
		
		sort_choice_div.setStyle('display', 'none');
		sort_arrow.opened = false;
		
	});
	
	sort_arrow.addEvent('click', function(){
		
		if(sort_arrow.opened == false)
		{
			sort_choice_div.setStyle('display', 'block');
			sort_arrow.opened = true;
			
		}
		else
		{
			sort_choice_div.setStyle('display', 'none');
			sort_arrow.opened = false;
		}
		
	});
	
	
	
	var tile_button = $('paginator_tile_button');
	var list_button = $('paginator_list_button');
	
	
	
	var viewStyle = Cookie.read('games.viewMode');
	
	if(viewStyle == null)
	{
		viewStyle = 'tile';
		Cookie.write('games.viewMode',viewStyle);	
	}
	
	if(viewStyle == 'tile')
	{
		itemCont.currentPage = 0;
		current_view_mode = 'tile';
		itemCont.viewMode = current_view_mode;
		
		paginator.setTileView(itemCont,items);
		tile_button.removeClass('tile_button');
		tile_button.addClass('tile_button_active');
		
	}
	else
	{
		itemCont.currentPage = 0;
		current_view_mode = 'list';
		itemCont.viewMode = current_view_mode;
		
		paginator.setListView(itemCont,items);
		
		list_button.removeClass('list_button');
		list_button.addClass('list_button_active');
	}
	
	itemCont.setStyle('display','block');
	
	tile_button.addEvent('click', function(){
		
		if(current_view_mode == 'tile') return;
		
		current_view_mode = 'tile';
		itemCont.viewMode = current_view_mode;
		
		tile_button.removeClass('tile_button');
		tile_button.addClass('tile_button_active');
		list_button.removeClass('list_button_active');
		list_button.addClass('list_button');
		itemCont.currentPage = 0;
		Cookie.write('games.viewMode','tile');	
		paginator.setTileView(itemCont,items);
		
	});
	
	list_button.addEvent('click', function(){
		
		if(current_view_mode == 'list') return;
		
		current_view_mode = 'list';
		itemCont.viewMode = current_view_mode;
		
		tile_button.removeClass('tile_button_active');
		tile_button.addClass('tile_button');
		list_button.removeClass('list_button');
		list_button.addClass('list_button_active');
		itemCont.currentPage = 0;
		Cookie.write('games.viewMode','list');	
		paginator.setListView(itemCont, items);
		
	});
	
	prev_page_top.addEvent('click', function(){
		paginator.paginate(itemCont,itemCont.currentPage -1);
	});
	
	next_page_top.addEvent('click', function(){
		paginator.paginate(itemCont,itemCont.currentPage +1);
	});
	
	prev_page_bottom.addEvent('click', function(){
		paginator.paginate(itemCont,itemCont.currentPage -1);
	});
	
	next_page_bottom.addEvent('click', function(){
		paginator.paginate(itemCont,itemCont.currentPage +1);
	});
	
}


paginator.setTileView = function(container,items){
	
	
	var num_tile_per_page = 12;
	var num_tile_per_row = 4;
	//var items = container.getElements(options.selector);
	
	for(var i = 0; i <items.length;i++ )
	{
		var item = items[i];
		
		item.removeClass('gameRowItem');
		item.removeClass('gameTileItem');
		item.addClass('gameTileItem');
		
		item.setStyle('border-top','none');
		
	}
	
	paginator.paginate(container,0);
	
}

paginator.setListView = function(container,items){
	
	var num_list_per_page = 5;
	
	for(var i = 0; i <items.length;i++ )
	{
		var item = items[i];
		item.removeClass('gameTileItem');
		item.addClass('gameRowItem');
		item.setStyle('border-left','none');
	}
	
	paginator.paginate(container,0);
}

paginator.paginate = function(container,pageIndex){
	
	var num_tile_per_page = 12;
	var num_tile_per_row = 4;
	var num_list_per_page = 5;
	
	
	var items;

	var numPages = 0;
	var startItemIndex = pageIndex * num_list_per_page;
	var endItemIndex = startItemIndex + (num_list_per_page-1);
	if(container.viewMode == "list")
	{
		items = container.getElements(container.listItemSelector);
		numPages = Math.ceil(items.length / num_list_per_page);
		startItemIndex = pageIndex * num_list_per_page;
		endItemIndex = startItemIndex + (num_list_per_page-1);
		
	}
	else
	{

		items = container.getElements(container.tileItemSelector);

		numPages = Math.ceil(items.length / num_tile_per_page);
		startItemIndex = pageIndex * num_tile_per_page;
		endItemIndex = startItemIndex + (num_tile_per_page-1);
		
	}
	
	
	if(pageIndex < 0 || pageIndex >= numPages) return;
	
	var childs = container.getChildren('div.tileSeparator');
	for(var j = 0; j < childs.length;j++)
	{
			childs[j].destroy();
	}
	
	childs = container.getChildren('div.gameTileItemEmpty');
	for(var j = 0; j < childs.length;j++)
	{
			childs[j].destroy();
	}
	
	container.currentPage = pageIndex;
	
	
	for(var i = 0; i <items.length;i++ )
	{
		var item = items[i];
		
		if(i < startItemIndex)
		{
			item.setStyle('display', 'none');
			continue;
		}
		
		if(i > endItemIndex)
		{
			item.setStyle('display', 'none');
			continue;
		}
		
		if(container.viewMode == "list")
		{
			if(i % num_list_per_page == 0)
			{
				item.setStyle('border-top','none');
			}
			else
			{
				item.setStyle('border-top','1px solid #009be8');
			}
		}
		else
		{
			if(i % num_tile_per_page == 0)
			{
				var sep = new Element('div');
				sep.addClass('tileSeparator');
				sep.setStyle('background','none');
				sep.inject(item,'before');
			}
			
			
			
			if(i % num_tile_per_row == 0)
			{
				item.setStyle('border-left','none');
			}
			else
			{
				item.setStyle('border-left','1px solid #009be8');
			}
			
			if(i % num_tile_per_row == 3 && i % num_tile_per_page != 11)
			{
				var sep = new Element('div');
				sep.addClass('tileSeparator');
				
				sep.inject(item,'after');
			}
		}
		
		item.setStyle('display', 'block');
	}
	
	if(container.viewMode == "tile" && (items.length % num_tile_per_row) != 0 && pageIndex == numPages-1 )
	{
		for(var j = 0; j < num_tile_per_row - (items.length % num_tile_per_row);j++ )
		{
			
			var emptyItem = new Element('div');
			emptyItem.addClass('gameTileItemEmpty');
			
			emptyItem.inject(container);
		}
	}
	
	var page_index_top = $('paginator_page_index_top');
	page_index_top.set('html','');
	var showing_page_top = $('paginator_showing_top');
	showing_page_top.set('html','<strong>Showing ' + (startItemIndex+1) + " - " + (Math.min(endItemIndex+1,items.length)) + " of " + items.length) + "</strong>";
	

	var page_index_bottom = $('paginator_page_index_bottom');
	page_index_bottom.set('html','');
	var showing_page_bottom = $('paginator_showing_bottom');
	showing_page_bottom.set('html','<strong>Showing ' + (startItemIndex+1) + " - " + (Math.min(endItemIndex+1,items.length)) + " of " + items.length) + "</strong>";
	
	if(numPages < 6)
	{
		
		
		for(var p = 0; p < numPages;p++)
		{
			if(p != 0)
			{
				//str += " - ";
				page_index_top.appendText(" - ");
				page_index_bottom.appendText(" - ");
			}
			if(p!=pageIndex)
			{
				var pageLink = new Element('a');
				pageLink.setProperty('href','javascript:void(0)');
				pageLink.set('html', (p+1));
				
				pageLink.inject(page_index_top);
				
				pageLink.addEvent('click', (function(pi){
					return function(){
						paginator.paginate(container,pi);
					}
				})(p));
				
				pageLink = new Element('a');
				pageLink.setProperty('href','javascript:void(0)');
				pageLink.set('html', (p+1));
				
				pageLink.inject(page_index_bottom);
				
				pageLink.addEvent('click', (function(pi){
					return function(){
						paginator.paginate(container,pi);
					}
				})(p));
				
				//str += '<a href="javascript:void(0)">' + (p+1) + '</a>';
			}
			else
			{
				var pageLink = new Element('strong');
				//pageLink.setProperty('href','javascript:void(0)');
				pageLink.set('html', (p+1));
				
				pageLink.inject(page_index_top);
				
				pageLink = new Element('strong');
				//pageLink.setProperty('href','javascript:void(0)');
				pageLink.set('html', (p+1));
				
				pageLink.inject(page_index_bottom);
				
				
				
			}
		}
	}
	else
	{
		if(pageIndex < 3)
		{
			for(var p = 0; p < 3;p++)
			{
				if(p != 0)
				{
					//str += " - ";
					page_index_top.appendText(" - ");
					page_index_bottom.appendText(" - ");
				}
				if(p!=pageIndex)
				{
					var pageLink = new Element('a');
					pageLink.setProperty('href','javascript:void(0)');
					pageLink.set('html', (p+1));
					
					pageLink.inject(page_index_top);
					
					pageLink.addEvent('click', (function(pi){
						return function(){
							paginator.paginate(container,pi);
						}
					})(p));
					
					pageLink = new Element('a');
					pageLink.setProperty('href','javascript:void(0)');
					pageLink.set('html', (p+1));
					
					pageLink.inject(page_index_bottom);
					
					pageLink.addEvent('click', (function(pi){
						return function(){
							paginator.paginate(container,pi);
						}
					})(p));
					
					//str += '<a href="javascript:void(0)">' + (p+1) + '</a>';
				}
				else
				{
					var pageLink = new Element('strong');
					//pageLink.setProperty('href','javascript:void(0)');
					pageLink.set('html', (p+1));
					
					pageLink.inject(page_index_top);
					
					pageLink = new Element('strong');
					//pageLink.setProperty('href','javascript:void(0)');
					pageLink.set('html', (p+1));
					
					pageLink.inject(page_index_bottom);
					
					
					
				}
			}
			
			page_index_top.appendText(" ... ");
			page_index_bottom.appendText(" ... ");
			
			var pageLink = new Element('a');
			pageLink.setProperty('href','javascript:void(0)');
			pageLink.set('html', (numPages));
			
			pageLink.inject(page_index_top);
			
			pageLink.addEvent('click', (function(pi){
				return function(){
					paginator.paginate(container,pi);
				}
			})(numPages-1));
			
			pageLink = new Element('a');
			pageLink.setProperty('href','javascript:void(0)');
			pageLink.set('html', (numPages));
			
			pageLink.inject(page_index_bottom);
			
			pageLink.addEvent('click', (function(pi){
				return function(){
					paginator.paginate(container,pi);
				}
			})(numPages-1));
			
		}
		else if(pageIndex > numPages - 3)
		{
			var pageLink = new Element('a');
			pageLink.setProperty('href','javascript:void(0)');
			pageLink.set('html', '1');
			
			pageLink.inject(page_index_top);
			
			pageLink.addEvent('click', (function(pi){
				return function(){
					paginator.paginate(container,pi);
				}
			})(0));
			
			pageLink = new Element('a');
			pageLink.setProperty('href','javascript:void(0)');
			pageLink.set('html', '1' );
			
			pageLink.inject(page_index_bottom);
			
			pageLink.addEvent('click', (function(pi){
				return function(){
					paginator.paginate(container,pi);
				}
			})(0));
			
			page_index_top.appendText(" ... ");
			page_index_bottom.appendText(" ... ");
			
			
			for(var p = numPages - 3; p < numPages;p++)
			{
				if(p != numPages - 3)
				{
					//str += " - ";
					page_index_top.appendText(" - ");
					page_index_bottom.appendText(" - ");
				}
				if(p!=pageIndex)
				{
					var pageLink = new Element('a');
					pageLink.setProperty('href','javascript:void(0)');
					pageLink.set('html', (p+1));
					
					pageLink.inject(page_index_top);
					
					pageLink.addEvent('click', (function(pi){
						return function(){
							paginator.paginate(container,pi);
						}
					})(p));
					
					pageLink = new Element('a');
					pageLink.setProperty('href','javascript:void(0)');
					pageLink.set('html', (p+1));
					
					pageLink.inject(page_index_bottom);
					
					pageLink.addEvent('click', (function(pi){
						return function(){
							paginator.paginate(container,pi);
						}
					})(p));
					
					//str += '<a href="javascript:void(0)">' + (p+1) + '</a>';
				}
				else
				{
					var pageLink = new Element('strong');
					//pageLink.setProperty('href','javascript:void(0)');
					pageLink.set('html', (p+1));
					
					pageLink.inject(page_index_top);
					
					pageLink = new Element('strong');
					//pageLink.setProperty('href','javascript:void(0)');
					pageLink.set('html', (p+1));
					
					pageLink.inject(page_index_bottom);
					
					
					
				}
			}
			
			
		}
		else
		{
			var pageLink = new Element('a');
			pageLink.setProperty('href','javascript:void(0)');
			pageLink.set('html', '1');
			
			pageLink.inject(page_index_top);
			
			pageLink.addEvent('click', (function(pi){
				return function(){
					paginator.paginate(container,pi);
				}
			})(0));
			
			pageLink = new Element('a');
			pageLink.setProperty('href','javascript:void(0)');
			pageLink.set('html', '1' );
			
			pageLink.inject(page_index_bottom);
			
			pageLink.addEvent('click', (function(pi){
				return function(){
					paginator.paginate(container,pi);
				}
			})(0));
			
			page_index_top.appendText(" ... ");
			page_index_bottom.appendText(" ... ");
			
			
			for(var p = pageIndex - 1; p < pageIndex + 2;p++)
			{
				if(p != pageIndex - 1)
				{
					//str += " - ";
					page_index_top.appendText(" - ");
					page_index_bottom.appendText(" - ");
				}
				if(p!=pageIndex)
				{
					var pageLink = new Element('a');
					pageLink.setProperty('href','javascript:void(0)');
					pageLink.set('html', (p+1));
					
					pageLink.inject(page_index_top);
					
					pageLink.addEvent('click', (function(pi){
						return function(){
							paginator.paginate(container,pi);
						}
					})(p));
					
					pageLink = new Element('a');
					pageLink.setProperty('href','javascript:void(0)');
					pageLink.set('html', (p+1));
					
					pageLink.inject(page_index_bottom);
					
					pageLink.addEvent('click', (function(pi){
						return function(){
							paginator.paginate(container,pi);
						}
					})(p));
					
					//str += '<a href="javascript:void(0)">' + (p+1) + '</a>';
				}
				else
				{
					var pageLink = new Element('strong');
					//pageLink.setProperty('href','javascript:void(0)');
					pageLink.set('html', (p+1));
					
					pageLink.inject(page_index_top);
					
					pageLink = new Element('strong');
					//pageLink.setProperty('href','javascript:void(0)');
					pageLink.set('html', (p+1));
					
					pageLink.inject(page_index_bottom);
					
					
					
				}
			}
			
			page_index_top.appendText(" ... ");
			page_index_bottom.appendText(" ... ");
			
			pageLink = new Element('a');
			pageLink.setProperty('href','javascript:void(0)');
			pageLink.set('html', (numPages));
			
			pageLink.inject(page_index_top);
			
			pageLink.addEvent('click', (function(pi){
				return function(){
					paginator.paginate(container,pi);
				}
			})(numPages-1));
			
			pageLink = new Element('a');
			pageLink.setProperty('href','javascript:void(0)');
			pageLink.set('html', (numPages));
			
			pageLink.inject(page_index_bottom);
			
			pageLink.addEvent('click', (function(pi){
				return function(){
					paginator.paginate(container,pi);
				}
			})(numPages-1));
			
		}
		
		
	}
	
}



paginator.sortAlpha = function(container,items)
{
	container.empty();
	items.sort(function(a,b){
		
		var aname = a.getProperty('sortalpha').toLowerCase();
		var bname = b.getProperty('sortalpha').toLowerCase();
		
		if(aname < bname) return -1;
		if(aname > bname) return 1;
		return 0;
	});

	for(var i = 0; i< items.length;i++)
	{
		items[i].inject(container);
	}
	
	if(container.viewMode == 'list')
	{
		paginator.setListView(container,items);
	}
	else
	{
		paginator.setTileView(container,items);
	}
	
	//paginator.paginate(container, 0);
}


paginator.sortDate = function(container,items)
{
	container.empty();
	items.sort(function(a,b){ 
		
		var adate = parseInt(a.getProperty('sortdate'),10);
		var bdate = parseInt(b.getProperty('sortdate'),10);
		
		/*if(adate < bdate) return -1;
		if(adate > bdate) return 1;*/
		return bdate - adate;
	});
	
	for(var i = 0; i< items.length;i++)
	{
		items[i].inject(container);
	}
	
	if(container.viewMode == 'list')
	{
		paginator.setListView(container,items);
	}
	else
	{
		paginator.setTileView(container,items);
	}
	
	//paginator.paginate(container, 0);
}

paginator.sortPrice = function(container,items)
{
	container.empty();
	items.sort(function(a,b){ 
		
		var adate = parseFloat(a.getProperty('sortprice'),10);
		var bdate = parseFloat(b.getProperty('sortprice'),10);
		
		/*if(adate < bdate) return -1;
		if(adate > bdate) return 1;*/
		return bdate - adate;
	});
	
	for(var i = 0; i< items.length;i++)
	{
		items[i].inject(container);
	}
	
	if(container.viewMode == 'list')
	{
		paginator.setListView(container,items);
	}
	else
	{
		paginator.setTileView(container,items);
	}
	
	//paginator.paginate(container, 0);
}

var collapsable = {};
collapsable.init = function(options){
	
	var trigger = $(options.trigger);
	if(trigger ==  null) return;
	
	
	var cont = $(options.container);
	
	cont.isOpen = Cookie.read(options.trigger);
	if(cont.isOpen == null)
	{
		Cookie.write(options.trigger,1);
		cont.isOpen = 1;
	}
	
	if(cont.isOpen == 0)
	{
		cont.setStyle('display', 'block');
		cont.setStyle('margin-top', -cont.clientHeight);
		
			
	}
	else
	{
		cont.setStyle('display', 'block');
		
		var title = trigger.getElement('div.title');
		title.removeClass('closed');
		
		//trigger.getElement('div').removeClass('closed');
	}
	
	
	trigger.addEvent('click',function(){
		
		cont.isOpen = cont.isOpen == 0 ? 1 : 0;
		Cookie.write(options.trigger,cont.isOpen);
		if(cont.isOpen)
		{
			cont.morph({'margin-top' : 0});
			
		}
		else
		{
			
			cont.morph({'margin-top' : -cont.clientHeight});
			
		}
		
		var title = trigger.getElement('div.title');
		title.toggleClass('closed');

	});
	
	
}

var rotbanner = {};

rotbanner.init = function(options) {
	
	var element = $(options.element);
	if(element == null) return;
	
	
	
	var images = element.getElements(options.selector);
	element.swap = 0;
	element.currentIndex = -1;
	element.totalImages = images.length;
	var swapper1 = new Element('div',{'class':'swapper1'});
	swapper1.inject(element);
	
	var swapper2 = new Element('div',{'class':'swapper2'});
	swapper2.inject(element);
	
	
	for(var i = 0; i< images.length; i++)
	{
		var img = images[i];
		var myLink = img.getProperty('urllink');
		img.addEvent('click', (function(link){
			return function(){
				window.location = link;
			};
			
		})(myLink));
	}
	
	
	var func = function()
	{
		var lastIndex = element.currentIndex;
		element.currentIndex++;
		if(element.currentIndex == element.totalImages)
		{
			element.currentIndex = 0;
		}
		
		element.swap = element.swap == 0 ? 1:0;
		if(element.swap == 0)
		{
			swapper1.setStyle('z-index',300);
			
			swapper2.empty();
			images[element.currentIndex].inject(swapper2);
			images[element.currentIndex].setStyle('display','block');
			swapper2.setStyle('opacity',0);
			swapper2.setStyle('z-index',301);
			swapper2.morph({opacity:1});
		}
		else
		{
			swapper2.setStyle('z-index',300);
			
			swapper1.empty();
			images[element.currentIndex].inject(swapper1);
			images[element.currentIndex].setStyle('display','block');
			swapper1.setStyle('opacity',0);
			swapper1.setStyle('z-index',301);
			swapper1.morph({opacity:1});
		}

		
	};
	func();
	var timer = func.periodical(4000);
	
	
	
}

var linktoFTP =  function(options)
{
	var form = $(options.formName);
	
	var url = "ftp://" + form.username.value + ":" + form.password + "@" + options.ftpAddress;
	
	window.open(url,"Merdian 4"); 

}



