// create a namespace

YAHOO.namespace("project_gallery");
			
// define the namespace object
YAHOO.project_gallery.gallery = function() {
	
	/* shorthand dor YUI libraries */ 
	var yue = YAHOO.util.Event;
	var yud = YAHOO.util.Dom;
	
	var image_array;
	var image_nodes;
	
	var gallery_image_count;
	
	return {									
		// initialise function
		init: function(){
			
			// get the list items from the page
			YAHOO.project_gallery.gallery.get_images();
									
			var gallery_links_div = document.getElementById('gallery_links');
			var gallery_link_parent = document.getElementById('gallery_links_ul');	
			
			// elements to clone - these are hidden
			var gallery_link_li_hidden = document.getElementById('gallery_link_li_hidden');
			var gallery_link_hidden = document.getElementById('gallery_link_hidden');
			
			// put links on the page if there are images to see
			for(var i=0;i<YAHOO.project_gallery.gallery.gallery_image_count.length;i++){
				
				var gallery_name = YAHOO.project_gallery.gallery.gallery_image_count[i][0];
					
				// clone the 'a' tag - the link
				var new_gallery_link_node = gallery_link_hidden.cloneNode(true);
				new_gallery_link_node.setAttribute('id','gallery_link_' + i)
				new_gallery_link_node.setAttribute('class','gallery_link')
				new_gallery_link_node.setAttribute('index',i)
				new_gallery_link_node.innerHTML = gallery_name;
					
				// clone the 'li' tag - the list item the link goes in
				var new_gallery_link_li_node = gallery_link_li_hidden.cloneNode(true);
				new_gallery_link_li_node.setAttribute('id','gallery_link_li_' + i);
				new_gallery_link_li_node.setAttribute('class','gallery_link_li');
				
				new_gallery_link_li_node.appendChild(new_gallery_link_node);
											
				gallery_link_parent.appendChild(new_gallery_link_li_node);
				yud.setStyle(new_gallery_link_li_node.id,'display','');
				
				yud.setStyle(new_gallery_link_node.id,'display','');
				
				// add listener
				yue.addListener(new_gallery_link_node,'click', YAHOO.project_gallery.gallery.initialise_swf_object,{gallery_name:gallery_name,gallery_link_id:'gallery_link_' + i});
			}						
									
			// display a gallery by default - the first one we have as we read them in the right order already
			if(YAHOO.project_gallery.gallery.gallery_image_count.length > 0){
				yud.setStyle(gallery_links_div.id,'display','');
				
				// the [0][0] item is the gallery name
				YAHOO.project_gallery.gallery.initialise_swf_object(null,{gallery_name:YAHOO.project_gallery.gallery.gallery_image_count[0][0],gallery_link_id:'gallery_link_0'});
								
			}else{
				yud.setStyle(gallery_links_div.id,'display','none');
			}
														
		},
		
		get_images: function(){
			
			YAHOO.project_gallery.gallery.image_nodes = yud.getElementsByClassName('project_image_hidden');
										
			YAHOO.project_gallery.gallery.image_array = [];
			YAHOO.project_gallery.gallery.gallery_image_count = [];
			
			var prev_gallery_name = '';
			var gallery_count = 0;
			var image_count = 0;
			
			// loop through all list items, get attributes & push an object onto the array					
			for(var i=0;i<YAHOO.project_gallery.gallery.image_nodes.length;i++){
			
				var file_name 		= YAHOO.project_gallery.gallery.image_nodes[i].getAttribute('file_name');	
				var gallery_name	= YAHOO.project_gallery.gallery.image_nodes[i].getAttribute('gallery_name');
				var thumbnail_file_name	= YAHOO.project_gallery.gallery.image_nodes[i].getAttribute('thumbnail_file_name');
				var title		= YAHOO.project_gallery.gallery.image_nodes[i].getAttribute('title');
			
				YAHOO.project_gallery.gallery.image_array.push({
					file_name: file_name, 
					gallery_name:gallery_name,
					thumbnail_file_name:thumbnail_file_name,
					title:title
				});
				
				if((gallery_name != prev_gallery_name)){
					
					if(prev_gallery_name == ''){						
						YAHOO.project_gallery.gallery.gallery_image_count[gallery_count] = new Array();
						YAHOO.project_gallery.gallery.gallery_image_count[gallery_count][0] = gallery_name;
						YAHOO.project_gallery.gallery.gallery_image_count[gallery_count][1] = ++image_count;						
					}else{						
						gallery_count++;
						image_count = 0;
						YAHOO.project_gallery.gallery.gallery_image_count[gallery_count] = new Array();
						YAHOO.project_gallery.gallery.gallery_image_count[gallery_count][0] = gallery_name;
						YAHOO.project_gallery.gallery.gallery_image_count[gallery_count][1] = ++image_count;																	
					}															
				}else{
					
					YAHOO.project_gallery.gallery.gallery_image_count[gallery_count][1] = ++image_count;
				}
				
				prev_gallery_name = gallery_name;
			}						
			
		},
		
		initialise_swf_object: function(e,params){
							
			if(e){
				yue.stopEvent(e);
			}
			
			
			// invoke the swf object
			var so = new SWFObject("/assets/flash/project_gallery.swf", "gallery", "695", "440", "8", "#ffffff");
			var swf_var_count = 0;
			
			for(var i=0;i<YAHOO.project_gallery.gallery.image_array.length;i++){
			
				if(YAHOO.project_gallery.gallery.image_array[i]['gallery_name'] == params['gallery_name']){
															
					so.addVariable("image_" + swf_var_count, YAHOO.project_gallery.gallery.image_array[i]['file_name']);
					so.addVariable("image_thumbnail_" + swf_var_count, YAHOO.project_gallery.gallery.image_array[i]['thumbnail_file_name']);
					so.addVariable("image_title_" + swf_var_count, YAHOO.project_gallery.gallery.image_array[i]['title']);
					swf_var_count++;
				}
			}
			so.addVariable("image_count",swf_var_count);
			so.addVariable("image_gallery",params['gallery_name']);
			
			so.write("gallery_swf_holder");
												
			// now set the gallery link classes for styling
			YAHOO.project_gallery.gallery.set_gallery_link_class(params['gallery_link_id']);
																		
		},
		
		set_gallery_link_class: function(current_gallery_link_id){
			
			var gallery_links_div  = document.getElementById('gallery_links');												
			var gallery_links = yud.getElementsByClassName('gallery_link','a',gallery_links_div);
			
			for(var i=0;i<gallery_links.length;i++){
				
				if(yud.hasClass(gallery_links[i],'current_gallery_link')){				
					yud.removeClass(gallery_links[i], 'current_gallery_link');
				}								
			}
			
			// while we're here, set a class on the filter links so that the 'current' one can be styled
			var current_gallery_link = document.getElementById(current_gallery_link_id);
			yud.addClass(current_gallery_link, 'current_gallery_link');
		}
		
	};
}();

// intialise page object once the page has loaded
YAHOO.util.Event.on(window, 'load', YAHOO.project_gallery.gallery.init, YAHOO.project_gallery.gallery, true );
