var Navigation = {
	// service
	services:{
		server:"",
		path:"services/",
		collection:"collection.wsdl.php",
		browse:"browse.wsdl.php"
	},	

	// per page amount
	amount:{
		// variables
		display:"amount",
		count:[5, 10, 25, 50, 100],
		perpage:25,
		
		// methods
		init:function()
		{
			$("#" + this.display).html("");

			for(i in this.count)
			{
				var li = $(document.createElement("li"));
				li.text(this.count[i]);

				this.perpage == this.count[i] ? li.css({color:"#cb6828"}) : li.css({color:"#999999"}) ;

				li.bind(
					'click',
					function()
					{
						Navigation.pagination.page = 0;
						Navigation.amount.set($(this).text());
					}
				)

				$("#" + this.display).append(li);

			}
		},

		// set
		set:function(perpage)
		{
			this.perpage = perpage;
			var post	= {
				perpage:perpage
			}
			if(Navigation.favorites){post['favorites'] = true;}

			this.init();
						
			var service	= !Navigation.browse ? Navigation.services.collection : Navigation.services.browse;
			service		= Navigation.services.server + Navigation.services.path + service;

			$.ajax(
				{
					url:service,
					cache:false,
					data:post,
					dataType:"json",
					type:"POST",
					success:function(response)
					{
						Navigation.pagination.set(Navigation.pagination.page)
						Navigation.pagination.get();
					},
					error:function()
					{
						console.log("failed:" + service);
					}
				}
			);			
		}
	},

	// pagination
	pagination:{
		display:"pages",
		skip:{
			back:["<<", "<"],
			next:[">", ">>"]
		},
		page:0,
		count:0,

		init:function()
		{
			/*
				<li class="first"><<</li>
				<li class="prev"><</li>
				<li>1</li>
				<li>2</li>
				<li>3</li>
				<li>...</li>
				<li>20</li>
				<li class="next">></li>
				<li class="last">>></li>
			*/
			$("#" + this.display).html("");

			// first and back
			for(i in this.skip.back)
			{
				var li = $(document.createElement("li"));
				li.text(this.skip.back[i]);

				li.bind(
					'click',
					function()
					{
						page = Navigation.pagination.page;
						page = page - 1 < 0 ? 0 : page - 1;
						switch($(this).text())
						{
							case "<":
								Navigation.pagination.set(page);
							break;
							case "<<":
								Navigation.pagination.set(0);
							break;
						}						
					}
				)

				$("#" + this.display).append(li);
			}

			for(i = 0; i < this.count; i++)
			{
				var li = $(document.createElement("li"));
				li.text((i + 1));
				this.page == i ? li.css({color:"#cb6828"}) : li.css({color:"#999999"}) ;

				li.bind(
					'click',
					function()
					{
						Navigation.pagination.set(parseInt($(this).text()) - 1);
					}
				)

				$("#" + this.display).append(li);

			}

			// next and last
			for(i in this.skip.next)
			{
				var li = $(document.createElement("li"));
				li.text(this.skip.next[i]);

				li.bind(
					'click',
					function()
					{
						page = Navigation.pagination.page;
						page = page + 1 > Navigation.pagination.count - 1 ? Navigation.pagination.count - 1 : page + 1;
						switch($(this).text())
						{
							case ">":
								Navigation.pagination.set(page);
							break;
							case ">>":
								Navigation.pagination.set(Navigation.pagination.count - 1);
							break;
						}
					}
				)

				$("#" + this.display).append(li);
			}
		},

		set:function(page)
		{
			this.page = page;
			var post	= {
				page:page
			}
			if(Navigation.favorites){post['favorites'] = true;}

			var service	= !Navigation.browse ? Navigation.services.collection : Navigation.services.browse;
			service		= Navigation.services.server + Navigation.services.path + service;

			$.ajax(
				{
					url:service,
					cache:false,
					data:post,
					dataType:"json",
					type:"POST",
					success:function(response)
					{
						// finally call data
						Collection.data();
					},
					error:function()
					{
						console.log("failed:" + service);
					}
				}
			);			

			this.init();
		},
		
		get:function()
		{
			var service	= !Navigation.browse ? Navigation.services.collection : Navigation.services.browse;
			service		= Navigation.services.server + Navigation.services.path + service;

			var post	= {count:true};
			var search	= this.search();
			
			if(search.length)
			{
				post['search'] = search;
			}

			if(Navigation.favorites){post['favorites'] = true;}

	
			$.ajax(
				{
					url:service,
					cache:false,
					data:post,
					dataType:"json",
					type:"POST",
					success:function(response)
					{
						Navigation.pagination.count = response.count;
						Navigation.pagination.init();
					},
					error:function()
					{
						console.log("failed:" + service);
					}
				}
			);
		},

		search:function()
		{
			var search	= {}
			if (location.search != ""){ 
				var x = location.search.substr(1).split("&") 
				for (var i=0; i<x.length; i++){ 
					var y = x[i].split("="); 

					if(y[1].indexOf("|") != -1)
					{
						search = y[1];
					}
				} 
			}
			return search;
		}
	}
}