var ProjectFilter = Class.create();

ProjectFilter.prototype = {
	initialize: function()
	{
		debug("ProjectFilter->init()");
		this.eventFunction = this.load.bindAsEventListener(this);
		this.page = "project-list";
		debug(this.eventFunction)
	},
	registerLinks: function()
	{
		registerEventByClassName('.'+this.page, this.eventFunction);
	},
	unregisterLinks: function()
	{
		unregisterEventByClassName('.'+this.page, this.eventFunction);
	},
	load: function(e)
	{
		var element = Event.element(e);
		if (element.match('img'))
			element = element.parentNode;
		if (currentPage == "project-list")
		{
			var ca_id = element.href.replace(/^.*\?ca_id=([0-9]+)$/i, "$1");
			if (ca_id == element.href)
				ca_id = 0;
			if (ca_id != this.ca_id)
				this.setCurrent(ca_id);
			Event.stop(e);
		}
		else
		{
/*
			var element = Event.element(e);
			if (element.match('img'))
				element = element.parentNode;
			var targetHref=element.href.replace(/^([a-z]+:\/\/[\w\.\:\-]+\/)(.*)$/i, "$1rpc/$2");
			sendRequest2(targetHref, this.loadCallback());
		Event.stop(e);
*/
		}
	},
/*
	loadCallback: function()
	{
		var self = this;
		return {
			onSuccess: function (transport) {
				debug("project-load:onSuccess:");
				var json = transport.responseText.evalJSON(true);
				if (!json.error)
				{
					if (currentPage==self.page || currentPage == "project-list")
					{
						self.unregisterLinks();

						debug(self.page);
						document.body.addClassName(self.page);

						var element = $('middle');
						if (element)
							element.replace(json.middle);
						var element = $('project_pager')
						if (element)
							element.replace(json.pager);
						var element = $('right')
						if (element)
							element.replace(json.right);

						if (currentPage != self.page)
						{
							document.body.removeClassName(currentPage);
							currentPage = self.page;
						}

						self.registerLinks();
					}
					else
					{
						error("ProjectLoad: only works from project-list & project-show page");
					}
				}
				else
				{
					ajax_error(json.error)
				}
			}
		}
	},
*/
        setCurrent: function(ca_id)
        {
                var element = $('content_left');
                this.ca_id = ca_id;
/*
                if (!this.currentTag)
                        this.currentTag=this.tags[0];
                element.innerHTML=this.currentTag['ta_name'];
*/
                var menuUnselect = Element.getElementsByClassName(element, 'subnav_item_selected');
                var menuSelect = Element.getElementsByClassName(element, 'ca_id'+this.ca_id);
		menuUnselect[0].removeClassName('subnav_item_selected');
		menuSelect[0].addClassName('subnav_item_selected');

                var element = $('content_right');
                var showElements = Element.getElementsByClassName(element, 'ca_id'+this.ca_id);
                var hideElements = Element.getElementsBySelector(element, '.project_list');
                hideElements.each (
                        function(it)
                        {
                                if (showElements.indexOf(it)==-1)
                                        Effect.Fade(it);
                        }
                );
                showElements.each(
                        function(it)
                        {
                                        Effect.Appear(it);
                        }
                );

                sendRequest("tag","setcurrent",{}, {ca_id:this.ca_id});
        }
};


var ThumbnailList = Class.create();

ThumbnailList.prototype = {
	initialize: function()
	{
		debug("ThumbnailLoader->init()");
		this.page = "projectpicture-show";
		this.eventFunction = this.showImage.bindAsEventListener(this);
	},
	registerLinks: function()
	{
		registerEventByClassName('.'+this.page, this.eventFunction);
	},
	unregisterLinks: function()
	{
		unregisterEventByClassName('.'+this.page, this.eventFunction);
	},
	showImage: function(e)
	{
		var element = Event.element(e).parentNode;
		var targetHref=element.href.replace(/^(([a-z]+:\/\/[\w\.\:\-]+)?\/)(.*)$/i, "$1rpc/$3");
/*
		mouseoverLoader.unregisterSingle($$('#gallery_nav_next img')[0]);
		mouseoverLoader.unregisterSingle($$('#gallery_nav_prev img')[0]);
		this.unregisterLinks();
*/
		sendRequest2(targetHref, this.loadCallback(), {pictureOnly:true});
		Event.stop(e);
	},
	loadCallback: function()
	{
		var self = this;
		return {
			onSuccess: function (transport) {
				debug("thumbnail-list:onSuccess:");
				var json = transport.responseText.evalJSON(true);
				if (!json.error)
				{
					var element = $('gallery_image');
					var element = Element.getElementsBySelector(element, 'img');
					element[0].src = json.projectpicture['link'];
				//	var element = $('gallery_description');
				//	element.innerHTML = json.projectpicture['pp_description'];
					// 
					var elements = Element.getElementsByClassName($('gallery_thumbnails'), "gallery_thumbnail_a")
					for (var i=0; i<elements.length; i++)
						elements[i].removeClassName('gallery_thumbnail_a_sel');

					var element = Element.getElementsByClassName($('gallery_thumbnails'), "pp_id"+json.projectpicture['pp_id'])
					element[0].addClassName('gallery_thumbnail_a_sel');

/*
					if (json.projectpicture['prev_link'] != "")
					{
						$('gallery_nav_prev').href = json.projectpicture['prev_link'];
						$$('#gallery_nav_prev img')[0].src="/view/img/foto_zurueck_off.gif";
					}
					else
					{
						$$('#gallery_nav_prev img')[0].src="/view/img/foto_zurueck_grey.gif";
					}
					if (json.projectpicture['next_link'] != "")
					{
						$('gallery_nav_next').href = json.projectpicture['next_link'];
						$$('#gallery_nav_next img')[0].src="/view/img/foto_weiter_off.gif";
					}
					else
					{
						$$('#gallery_nav_next img')[0].src="/view/img/foto_weiter_grey.gif";
					}
					mouseoverLoader.registerSingle($$('#gallery_nav_next img')[0]);
					mouseoverLoader.registerSingle($$('#gallery_nav_prev img')[0]);
*/
					self.registerLinks();
				}
				else
				{
					ajax_error(json.error)
				}
			}
		}
	}
};

var ProjectLoader = Class.create();

ProjectLoader.prototype = {
	initialize: function()
	{
		debug("ProjectLoader->init()");
		this.eventFunction = this.load.bindAsEventListener(this);
		this.page = "project-show";
		debug(this.eventFunction)
		this.thumbnailList = new ThumbnailList();
	},
	registerLinks: function()
	{
//		registerEventByClassName('.'+this.page,this.eventFunction);
		this.thumbnailList.registerLinks();
	},
	unregisterLinks: function()
	{
		//this.eventFunction = this.load.bindAsEventListener(this);
		this.thumbnailList.unregisterLinks();
//		unregisterEventByClassName('.'+this.page,this.eventFunction);
	},
	load: function(e)
	{
		if (currentPage==self.page || currentPage == "project-list")
		{
			var element = Event.element(e);
			if (element.match('img'))
				element = element.parentNode;
			var targetHref=element.href.replace(/^([a-z]+:\/\/[\w\.\:\-]+\/)(.*)$/i, "$1rpc/$2");
			sendRequest2(targetHref, this.loadCallback());
			Event.stop(e);
		}
	},
	loadCallback: function()
	{
		var self = this;
		return {
			onSuccess: function (transport) {
				debug("project-load:onSuccess:");
				var json = transport.responseText.evalJSON(true);
				if (!json.error)
				{
					if (currentPage==self.page || currentPage == "project-list")
					{
						self.unregisterLinks();

						debug(self.page);
						document.body.addClassName(self.page);

						var element = $('middle');
						if (element)
							element.replace(json.middle);
						var element = $('project_pager')
						if (element)
							element.replace(json.pager);
						var element = $('right')
						if (element)
							element.replace(json.right);

						if (currentPage != self.page)
						{
							document.body.removeClassName(currentPage);
							currentPage = self.page;
						}

						self.registerLinks();
					}
					else
					{
						error("ProjectLoad: only works from project-list & project-show page");
					}
				}
				else
				{
					ajax_error(json.error)
				}
			}
		}
	}
};

function init_project_list()
{
	var project_filter = new ProjectFilter();
}

