/*	
	showcase.js
	===============================================================
	Film NZ - Functions unique to: Production Showcase, July 2008	
	
	Created 10.07.2008 by SwordFox
	Reformatted 21.07.2008 by DS, to match CT standard
	Last Updated: See SVN
	_______________________________________________________________
*/	

	var loadXML = function(req,xml_doc)
	{
		var div = 'output';
		
		$(div).empty();
		
		var x=xml_doc.getElementsByTagName("FilmInfo");
	
		var output_left = '';
		var output_right = '';
		var itemvalues = x[0];
		var itemvalues_cast;
		var len_cast;
		
		if (itemvalues.getElementsByTagName("ImageURL")[0].childNodes[0])
		{
			var imageURL = itemvalues.getElementsByTagName("ImageURL")[0].childNodes[0].nodeValue;
		}		
		
		if (itemvalues.getElementsByTagName("ImageCaption")[0].childNodes[0])
		{
			var imageCaption = itemvalues.getElementsByTagName("ImageCaption")[0].childNodes[0].nodeValue;	
		}
		
		var ProductionCompany = itemvalues.getElementsByTagName("ProductionCompany")[0].childNodes;

		if (itemvalues.getElementsByTagName("PDVCompany")[0])
		{
			var PDVCompany = itemvalues.getElementsByTagName("PDVCompany")[0].childNodes;	// PDV company	
		}
		
		if (itemvalues.getElementsByTagName("NZContribution")[0])
		{
			var NZContribution = itemvalues.getElementsByTagName("NZContribution")[0].childNodes;	// NZ contribution
		}		
		
		var fullTitle = get_selected_title();		
		var Producer = itemvalues.getElementsByTagName("Producer")[0].childNodes;
		var Director = itemvalues.getElementsByTagName("Director")[0].childNodes;
		var Writer = itemvalues.getElementsByTagName("Writer")[0].childNodes;
		var DirectorOfPhotography = itemvalues.getElementsByTagName("DirectorOfPhotography")[0].childNodes;
		var NZLineProducer = itemvalues.getElementsByTagName("NZLineProducer")[0].childNodes;
		var AlternativeTitles = itemvalues.getElementsByTagName("AlternativeTitles")[0].childNodes;
		var ShotOnLocation = itemvalues.getElementsByTagName("ShotOnLocation")[0].childNodes;
		var Synopsis = itemvalues.getElementsByTagName("Synopsis")[0].childNodes;
		var OtherInfo = itemvalues.getElementsByTagName("OtherInfo")[0].childNodes;
		var SubbingFor = itemvalues.getElementsByTagName("SubbingFor")[0].childNodes;	// added by DS 21.07.2008
		var Website = itemvalues.getElementsByTagName("Website")[0].childNodes; // added by DS 21.07.2008		
		
	/*
		DS 21.07.2008
		Film Info output order changed to the following
	
	- Alternative title: 
	- Director: 
	- Producer(s): 
	- Writer(s): 
	- Director of Photography: 
	- Cast: [can we have up to four lines for cast names, but only one line needs to read "Cast"] 
	- NZ Line Producer: 
	- Production Company: 
	- PDV company	[added 09.09.2008]
	- NZ contribution	[added 09.09.2008]	
	- Where shot:  [instead of Shot on location] 
	- Subbing for: (new to spec)
	- Website: (new to spec)
	*/
		
		output_left = '<h4>' + ( fullTitle == '' ? 'FILM INFO' : fullTitle ) + '</h4><ul>';
		output_left += showcase_list_item(AlternativeTitles, 'Alternative Titles');	
		output_left += showcase_list_item(Director, 'Director');	
		output_left += showcase_list_item(Producer, 'Producer(s)');	
		output_left += showcase_list_item(Writer, 'Writer(s)');
		output_left += showcase_list_item(DirectorOfPhotography, 'Director of Photography');	
		
		// Get Cast members
		itemvalues_cast=itemvalues.getElementsByTagName("CastMembers")[0].getElementsByTagName("CastMember");
		len_cast=itemvalues_cast.length;
		
		if (len_cast!=0)
		{
			output_left += '<li><b>Cast:</b>';
			
			// nested list added by DS 21.07.2008
			if (len_cast > 0)
			{
				output_left += '<ul>';
				
				for (i=0; i<len_cast; i++)
				{
					output_left += '<li>' + itemvalues_cast[i].childNodes[0].nodeValue + '</li>'; // updated by DS 21.07.2008 to use LI
				}
				
				output_left += '</ul>';			
			}
			output_left += '</li>';
		}		
		
		output_left += showcase_list_item(NZLineProducer, 'NZ Line Producer');	
		output_left += showcase_list_item(ProductionCompany, 'Production Company');		
		
		if (PDVCompany)
		{	
			output_left += showcase_list_item(PDVCompany, 'PDV Company');
		}
		if (NZContribution)
		{
			output_left += showcase_list_item(NZContribution, 'New Zealand contribution');		
		}		
		
		output_left += showcase_list_item(ShotOnLocation, 'Where shot');
		output_left += showcase_list_item(SubbingFor, 'Subbing for');
		output_left += showcase_list_item_linked(Website, 'Website');	
		output_left += '</ul>';
		
		output_right = showcase_heading_item(Synopsis, 'SYNOPSIS');
		output_right += showcase_heading_item(OtherInfo, 'OTHER INFO');
		
		showcase_tr = new Element('div', {'class': 'showcase_bl'}).injectInside($('output'));
		showcase_bl = new Element('div', {'class': 'showcase_tr'}).injectInside(showcase_tr);
		showcase_br = new Element('div', {'class': 'showcase_br'}).injectInside(showcase_bl);
		showcase_tl = new Element('div', {'class': 'showcase_tl'}).injectInside(showcase_br);
		
		showcase_image = new Element('div', {'class': 'showcase_image'}).injectInside(showcase_tl);		
		
		if (imageURL)
		{		
			showcase_image_src = new Element('img', {'src': imageURL, 'alt': ''}).injectInside(showcase_image);	
		}
				
		if (imageCaption)
		{
			showcase_caption = new Element('p').injectInside(showcase_image);
			showcase_caption.innerHTML = imageCaption;					
		}		
		
		showcase_content = new Element('div', {'class': 'showcase_content'}).injectInside(showcase_tl);
		
		showcase_content_left = new Element('div').injectInside(showcase_content);
		showcase_content_left.innerHTML = output_left;
		
		showcase_content_right = new Element('div', {'class': 'border'}).injectInside(showcase_content);
		showcase_content_right.innerHTML = output_right;
		
		// Close button & clear
		showcase_button = new Element('p', {'class': 'button'}).injectInside(showcase_tl);
		showcase_a = new Element('a', {'href': '', 'id': 'close'}).injectInside(showcase_button);
		showcase_clear = new Element('div', {'class': 'clear'}).injectInside(showcase_tl);
		
		window.location.hash = "output";
		
		/*
		// Smooth scroll
		this.scroll = new Fx.Scroll(window, {
			offset: {
				x: 0,
				y: 0
			}
		});
		this.scroll.toElement($(div));
		*/
		
		
		$('close').addEvent("click", function(e) 
		{
			new Event(e).stop();
			
			var fade = new Fx.Style(div, 'opacity', {duration:600, onComplete: function()
			{
					$(div).empty();
					
					var linksrevert = $$("ul#showcase li");
					linksrevert.each(function(linkrevert, i) 
					{
						linkrevert.removeClass('active');
					});
				}
			});
			
			fade.start(1, 0);
		});
	};
	
	var showcase = function()
	{
		var div = 'output';
		var xml;
			
		var links = $$("ul#showcase li");
		links.each(function(link, i) 
		{
			link.addEvent("mouseover", function(e) 
			{
				link.setStyle('cursor', 'pointer');
			});
			link.addEvent("click", function(e) 
			{
				new Event(e).stop();
				
				xml=link.className;
				
				var fade = new Fx.Style(div, 'opacity', {duration:600, onComplete: function()
				{
						new XHR({method:'get', onSuccess: loadXML}).send(xml);
						new Fx.Style(div, 'opacity', {duration:600}).start(0, 1);
					}
				});
				fade.start(1, 0);
				
				var linksrevert = $$("ul#showcase li");
				linksrevert.each(function(linkrevert, i) 
				{
					linkrevert.removeClass('active');
				});
				
				$(this.id+'').addClass('active');
			});
		});
	};
	
	
	function showcase_list_item(xmlObject, itemTitle)
	{
		return (xmlObject.length!=0 ? ('<li><b>' + itemTitle + ':</b> ' + xmlObject[0].nodeValue.replace('\n', '<br />') + '</li>') : '');
	}
	
	function showcase_list_item_linked(xmlObject, itemTitle)
	{
		if(xmlObject.length!=0){
		// added by DS 21.07.2008
			var href = xmlObject[0].nodeValue.replace('\n', '<br />');
		
			return '<li><b>' + itemTitle + ':</b> <a href="' + href + '">' + href + '</a></li>';
		}
		return '';
	}
	
	function showcase_heading_item(xmlObject, itemTitle)
	{
		return (xmlObject.length!=0 ? ('<h5>' + itemTitle + '</h5><p>' + xmlObject[0].nodeValue.replace('\n', '<br />') + '</p>') : '');
	}
	
	function get_selected_title()
	{
		// DS 29.07.2009
		
		var list_items = document.getElementById('showcase').getElementsByTagName('li');
		var list_title = '';
		
		for (var li=0; li<list_items.length; li++)
		{
			var this_li = list_items[li];
			
			if ( this_li.className.indexOf('active') != -1 )
			{
				list_title = this_li.title.toUpperCase();
			}
		}
		
		return list_title;
	}