/*
"GNV_DROPDOWN" module for Prototype-Scriptaculous
Copyright (c) 2008 GNV&Partners s.n.c. - http://www.gnvpartners.com
Authors: Nicolò Volpato
Project page at http://www.gnvpartners.com
***Last update: Aug 28th, 2008***
*/
/** CREAZIONE CLASSI **/
	var GNV_DROPDOWN = Class.create({
		// INIZIALIZZAZIONE OGGETTO
		initialize: function(strcontainer_id, htmltitle) {
			this.maincontainer_id = strcontainer_id;
			this.css_mainclass = 'gnv_dropdown';
			this.title = htmltitle;
			this.transitionEffectsDuration = 0.5; // in seconds
			this.isOpen = false; 
			this.build();
		},
		
		
		/**
		 * 
		 */
		build: function () {
			var container_el = $(this.maincontainer_id);

			// checking main container			
			if (!container_el) {
				container_el = new Element('div', { 'id': this.maincontainer_id, 'class': this.css_mainclass}).update("&nbsp;");
				$(document.body).insert(container_el, { position: 'bottom' });
			} else {
				if (!container_el.hasClassName(this.css_mainclass))
					container_el.addClassName(this.css_mainclass);
			}
			if(this.isOpen) {
				container_el.show();
			} else {
				container_el.hide();
			}
			this.toggleView('list');
			$('p_loading').hide();
		},
		
		toggle: function (invoker) {
			var container_el = $(this.maincontainer_id);
			
			if(this.isOpen){
				this.isOpen = false;
				container_el.fade({ duration: this.transitionEffectsDuration, from: 1, to: 0.0 });
				$(invoker).removeClassName('selected');
			} else {
				this.isOpen = true;
				container_el.appear({ duration: this.transitionEffectsDuration, from: 0.0, to: 1 });
				$(invoker).addClassName('selected');
			}
		},
		
		toggleView: function (view, invoker) {
			switch(view) {
				case 'list':
					$('cont_list').appear({ duration: this.transitionEffectsDuration, delay: this.transitionEffectsDuration });
					$('cont_search').fade({ duration: this.transitionEffectsDuration });
					$('btn_categorie').addClassName('selected');
					$('btn_search').removeClassName('selected');
					break;
				case 'search':
					$('cont_list').fade({ duration: this.transitionEffectsDuration });
					$('cont_search').appear({ duration: this.transitionEffectsDuration, delay: this.transitionEffectsDuration });
					$('btn_categorie').removeClassName('selected');
					$('btn_search').addClassName('selected');
					break;
				default:
					$('cont_list').appear({ duration: this.transitionEffectsDuration, delay: this.transitionEffectsDuration });
					$('cont_search').fade({ duration: this.transitionEffectsDuration });
					$('btn_categorie').addClassName('selected');
					$('btn_search').removeClassName('selected');
					break;
			}
		},
		
		showColumn: function (invoker,column_id) {
			var column = $('c'+column_id);
			var orcolumn = $('c'+(column_id-1));
			var targ = $('l'+invoker.getAttribute('id')+'_'+column_id);
			
			this.clearColumn(column_id,true);
			this.clearColumn(column_id+1);
			
			// toglie tutte le selezioni
			orcolumn.select('a').each(function(element) {
				if(element == invoker) {
					// seleziona solo l'elemento selezionato
					if(!element.hasClassName('selected')) element.addClassName('selected');
				} else {
					if(element.hasClassName('selected')) element.removeClassName('selected');
				}
			});
			
			// nasconde tutti gli elementi dentro a column
			column.select('ul').each(function(element) {
				if(element == targ) {
					// mostra solo l'elemento selezionato
					element.appear({ duration: 0.5 });
					if(!element.hasClassName('selected')) element.addClassName('selected');
				} else {
					element.fade({ duration: 0.5 });
					if(element.hasClassName('selected')) element.removeClassName('selected');
				}
			});
		},
		
		clearColumn: function (column_id, aonly) {
			var column = $('c'+column_id);
			
			// nasconde tutti gli elementi dentro a column
			column.select('ul', '#p_preview', 'ul li a').each(function(element) {
				if(!element.match('a')) {
					if(!aonly) element.fade({ duration: 0.5 });
				}
				element.removeClassName('selected');
			});
			$('p_loading').hide();
		},
		
		setSelection: function (a, b, c, imgurl, targeturl) {			
			$(a).addClassName('selected');
			$(b).addClassName('selected');
				$(b).firstDescendant().firstDescendant().addClassName('selected');
			$(c).addClassName('selected');			
				this.showPreview($(c).firstDescendant().firstDescendant(), 4, imgurl, targeturl)
		},
		
		showPreview: function (invoker, column_id, imgurl, targeturl) {
			var container_el = $('p_preview');
			var orcolumn = $('c'+(column_id-1));

			// toglie tutte le selezioni
			orcolumn.select('a').each(function(element) {
				if(element == invoker) {
					// seleziona solo l'elemento selezionato
					if(!element.hasClassName('selected')) element.addClassName('selected');
				} else {
					if(element.hasClassName('selected')) element.removeClassName('selected');
				}
			});
			
			// loading
			container_el.hide();
			$('p_loading').show();
			
			container_el.select('#p_img img').each(function(element) {
				element.setAttribute('src',imgurl);
			});
			
		
			container_el.select('a').each(function(element) {
				element.setAttribute('href',targeturl);
			});
			
			container_el.appear({ duration: 0.5, delay: 2.0 });
			this.fadeLoader();
		},
		
		fadeLoader: function() {
			$('p_loading').fade({ duration: 0.5, delay: 1.5 });
		}
	});