var mediaviewer_url = 'mediaviewer.php?itemID=';

// Id of current item
var curr_item_id = null;

/**
*	Initialization
**/
$(document).ready(function()
{
	 // Event handler to hover
	 $('.mediabox_photos .photo_view_overlay').mouseover(function()
	 {
		$(this).removeClass('photo_view_overlay').addClass('photo_view_overlay_hover');
	 })
	 $('.mediabox_photos .photo_view_overlay').mouseout(function()
	 {
		$(this).removeClass('photo_view_overlay_hover').addClass('photo_view_overlay');
	 })

	 $('.mediabox_videos .video_play_overlay').mouseover(function()
	 {
		$(this).removeClass('video_play_overlay').addClass('video_play_overlay_hover');
	 })
	 $('.mediabox_videos .video_play_overlay').mouseout(function()
	 {
		$(this).removeClass('video_play_overlay_hover').addClass('video_play_overlay');
	 })

	 // Event handler to open mediaplayer, for photos
	 $('.mediabox_photos .photo_view_overlay').click(function()
	 {
		this.blur();
		curr_item_id = this.id.replace('mediaitem_', '');
		ShowMediaplayer('photo', curr_item_id);
		return false;
	 });

	 // Event handler to open mediaplayer, for videos
	 $('.mediabox_videos .video_play_overlay').click(function()
	 {
		this.blur();
		curr_item_id = this.id.replace('mediaitem_', '');
		ShowMediaplayer('video', curr_item_id);
		return false;
	 });

	
	// Event handler to close player
	$('#mediaplayer a.close_player').click(function()
	{
		this.blur();
		HideMediaplayer();
		return false;
	});

	// Links to open tabs
	$('#mediaplayer .tabs a').click(function()
	{
		this.blur();
		ShowTabs(this.id);
		return false;
	});

	// Link to close tabs
	$('#mediaplayer a.close_tab').click(function()
	{
		this.blur();
		HideTabs();
		return false;
	});
	
	// Event handler for 'tell a friend' forms
	$('.send_form').click(function()
	{
		var type = this.id.replace('submit_taf_', '');
		SubmitTellFriendForm(type);
	});

	// Event handlers to switch back to TAF form from feedback
	$('#taf_send_again_video').click(function()
	{
		$('#mediaplayer #taf_feedback_video').hide();
		$('#mediaplayer #taf_form_video').show();
		return false;
	});
	$('#taf_send_again_photo').click(function()
	{
		$('#mediaplayer #taf_feedback_photo').hide();
		$('#mediaplayer #taf_form_photo').show();
		return false;
	});

	// Event handlers for rollover effect on download button
	$('#mediaplayer .btn_download').mouseover(function()
	{
		$(this).addClass('btn_download_hover');
	});
	$('#mediaplayer .btn_download').mouseout(function()
	{
		$(this).removeClass('btn_download_hover');
	});

	// Event handlers for rollover effect on send button
	$('#mediaplayer .send_form').mouseover(function()
	{
		$(this).addClass('send_form_hover');
	});
	$('#mediaplayer .send_form').mouseout(function()
	{
		$(this).removeClass('send_form_hover');
	});

	// Event handlers for rollover effect on copy button
	$('#mediaplayer .btn_copy').mouseover(function()
	{
		$(this).addClass('btn_copy_hover');
	});
	$('#mediaplayer .btn_copy').mouseout(function()
	{
		$(this).removeClass('btn_copy_hover');
	});

	// Event handlers for copy button
	$.clipboardReady(function()
	{
		$('#mediaplayer .btn_copy').click(function()
		{
			$.clipboard($('#inp_embed_code').val());
			return false;
		});
	}, {swfpath: '/includes/javascript/jquery/jquery.clipboard.swf'});

});

// -----------------------------------------------------------------------

/**
*	ShowMediaplayer
*
*	Shows the mediaplayer and loads the photo/video.
*
*	- type: 'photo' or 'video'
*	- media_id: id of the media item
**/
function ShowMediaplayer(type, media_id)
{
	// Set type in attribute of mediaplayer div
	$('#mediaplayer').attr('mediatype', type);

	ResetPlayer();

	// Set type of heading
	$('#mediaplayer h1').removeClass().addClass(type);

	// Function to close mediaplayer
	// is used when user clicks outside player
	var close_function = function(hash)
	{
		var type = $('#mediaplayer').attr('mediatype');
	
		// Stop movie
		if (type == 'video')
		{
			var movie = GetFlashMovie('mediaplayer_flash');
			if (movie)
			{
				movie.PausePlayer();
			}
		}
		hash.w.fadeOut();
	};

	// Show player
	$('#mediaplayer_container').jqm(
	{
		onHide: close_function
	}).jqmShow();

	// Load media item
	if (type == 'photo')
	{
		LoadPhoto(media_id);
	}
	else
	{
		LoadVideo(media_id);
	}

	PrepareTabs(type);
}

// -----------------------------------------------------------------------

/**
*	HideMediaplayer
*
*	Hides the mediaplayer, removes the content, and hides the tabs.
**/
function HideMediaplayer()
{
	var type = $('#mediaplayer').attr('mediatype');

	// Stop movie
	if (type == 'video')
	{
		var movie = GetFlashMovie('mediaplayer_flash');
		if (movie)
		{
			movie.PausePlayer();
		}
	}

	$('#mediaplayer_container').jqmHide();
}

// -----------------------------------------------------------------------

/**
*	ResetPlayer
*
*	Hides all tab heads and surfaces, sets the tabs to the "light" state,
*	removes content, and sets the tab container to its initial position 
*	(only heads showing).
**/
function ResetPlayer()
{
	// Hide tab surfaces
	$('#mediaplayer .tab_container').css('top', '458px');
	
	// Hide all tab surfaces
	$('#mediaplayer .tab_surface').hide();

	// Reset tab head state
	$('#tab_share').removeClass('share_dark').addClass('share_light');
	$('#tab_download').removeClass('download_dark').addClass('download_light');

	// Hide tab heads
	$('#mediaplayer a#tab_share').hide();
	$('#mediaplayer a#tab_download').hide();

	// Clear content box
	$('#mediaplayer_content_box').html('');
}

// -----------------------------------------------------------------------

/**
*	PrepareTabs
*
*	Shows the tab heads and surfaces for the given media type.
*
*	- type: 'photo', 'video'
**/
function PrepareTabs(type)
{
	switch (type)
	{
		case 'photo':
			$('#mediaplayer a#tab_share').show();
			$('#mediaplayer a#tab_download').show();
			break;
		case 'video':
			$('#mediaplayer a#tab_share').show();
			break;
	}
}

// -----------------------------------------------------------------------

/**
*	ShowTabs
*
*	Shows the tab container and sets the active tab.
*
*	- active: tab to set active (share_photo, download_photo, share_video)
**/
function ShowTabs(active)
{
	var type = $('#mediaplayer').attr('mediatype');

	// Pause movie
	if (type == 'video')
	{
		var movie = GetFlashMovie('mediaplayer_flash');
		if (typeof movie != 'undefined')
		{
			movie.PausePlayer();
		}
	}

	// Set active tab
	if (active == 'tab_share')
	{
		if (type == 'photo')
		{
			$('#tab_download').removeClass('download_dark').addClass('download_light');
		}
		$('#tab_share').removeClass('share_light').addClass('share_dark');
		
		// Show correct tab
		$('#mediaplayer .tab_surface').hide();
		if (type == 'photo')
		{
			$('.btn_download').hide();
			$('#mediaplayer #tab_share_photo').show();
			$('ul.social_sites a').hide();

			// Make sure we show the form, not feedback
			$('#mediaplayer #taf_feedback_photo').hide();
			$('#mediaplayer #taf_form_photo').show();
		}
		else
		{
			$('.btn_download').hide();
			$('#mediaplayer #tab_share_video').show();
			$('ul.social_sites a').show();

			// Make sure we show the form, not feedback
			$('#mediaplayer #taf_feedback_video').hide();
			$('#mediaplayer #taf_form_video').show();
		}
		
		HideTellFriendFormErrors(type);
		$('#mediaplayer input.text').show();
		$('#mediaplayer input.send_form').show();
	}
	if (active == 'tab_download')
	{
		$('ul.social_sites a').hide();
		$('#mediaplayer input.text').hide();
		$('#mediaplayer input.send_form').hide();
		HideTellFriendFormErrors(type);
		$('.btn_download').show();
		
		$('#tab_share').removeClass('share_dark').addClass('share_light');
		$('#tab_download').removeClass('download_light').addClass('download_dark');
		$('#mediaplayer .tab_surface').hide();
		$('#mediaplayer #tab_download_photo').show();
	}

	$('#mediaplayer .tab_container').animate({top: '219px'}, 750);
}

// -----------------------------------------------------------------------

/**
*	HideTabs
*
*	Hides the tab container.
**/
function HideTabs()
{
	$('#mediaplayer .tab_container').animate({top: '458px'}, 750, '', function()
	{
		var type = $('#mediaplayer').attr('mediatype');

		// Pause movie
		if (type == 'video')
		{
			var movie = GetFlashMovie('mediaplayer_flash');
			if (typeof movie != 'undefined')
			{
				movie.ResumePlayer();
			}
		}

		// Reset tab heads
		$('#tab_share').removeClass('share_dark').addClass('share_light');
		$('#tab_download').removeClass('download_dark').addClass('download_light');
		
		// Reset share forms
		ResetForms();		
	});
}

// -----------------------------------------------------------------------

/**
*	LoadPhoto
*
*	Loads the photo into the content area.
*
*	- media_id: ID of media item
**/
function LoadPhoto(media_id)
{
	// Get photo details
	var url = '/PENGO/includes/ajaxCalls/getmediadetails.php?type=photo&id=' + media_id;
	$.get(url, {}, function(resp)
	{
		if (resp.error)
		{
			alert(resp.error);
		}
		else
		{
			// Set properties
			$('#mediaplayer_content_box').html('<table><tr><td><img src="' + resp.item.src + '" /></td></tr></table>');
			
			$('#mediaplayer h1').html(resp.item.title);
			$('#item_number').html(resp.item.item_number + "/" + resp.item.total_number);

			//if (resp.item.descr.length > 0)
			//{ 			
				$('#mediaplayer .caption').html(resp.item.descr);
			//}
			
			// Download details
			var last_slash = resp.item.src.lastIndexOf('/');
			var short_name = resp.item.src.substring(last_slash + 1);
			$('#mediaplayer_photo_name').html('<b>' + short_name + '</b>');			
			$('#mediaplayer_photo_size').html(resp.item.size);
			$('#mediaplayer_photo_dimensions').html(resp.item.dimensions);
			
			if (resp.item.download_link != '')
			{
				$('#mediaplayer .btn_download').click(function()
				{
					window.location = resp.item.download_link;	
				});
			}			
		}	

		SetNavButton('photo', 'prev', resp.prev_item);
		SetNavButton('photo', 'next', resp.next_item);
		
		ActivateSifr();
	}, 'json');
}

// -----------------------------------------------------------------------

/**
*	LoadVideo
*
*	Loads the SWF videoplayer into the content area.
*
*	- file: FLV file to play
**/
function LoadVideo(media_id)
{
	if (!window.swfobject)
	{
		alert('SWFobject is not available, can\'t load video');
	}
	
	// Get video details
	var url = '/PENGO/includes/ajaxCalls/getmediadetails.php?type=video&id=' + media_id;
	$.get(url, {}, function(resp)
	{
		if (resp.error)
		{
			alert(resp.error);
		}
		else
		{
			LoadVideoFile(resp.item.src);
			
			// Set properties
			$('#mediaplayer h1').html(resp.item.title);
			$('#item_number').html(resp.item.item_number + "/" + resp.item.total_number);

			//if (resp.item.descr.length > 0)
			//{ 			
				$('#mediaplayer .caption').html(resp.item.descr);
			//}

			if (resp.item.embed != '')
			{
				$('#inp_embed_code').val(resp.item.embed);
				
				// Show right column, might have been hidden
				$('#tab_share_video .right_column').show();
				
				// Show logo 
				$('#tab_share_video').removeClass('tab_surface surface_logo pngfix').addClass('tab_surface surface_sep pngfix');
			}
			else
			{
				// Hide logo 
				$('#tab_share_video').removeClass('tab_surface surface_sep pngfix').addClass('tab_surface surface_logo pngfix');
				
				// Hide whole right column if no embed code is available
				$('#tab_share_video .right_column').hide();
			}
						
		}	

		SetNavButton('video', 'prev', resp.prev_item);
		SetNavButton('video', 'next', resp.next_item);
		
		ActivateSifr();
	}, 'json');
}

// -----------------------------------------------------------------------

/**
*	LoadVideoFile
*
*	Embeds the video file as SWF using SWFobject.
*
*	- file: FLV file
**/
function LoadVideoFile(file) 
{
	// Add extra container inside content box, that SWFobject can use
	// for the SWF object - convenient for cleanup on close
	if ($('#mediaplayer_flash')) {
		$('#mediaplayer_flash').remove();
	}

	$('#mediaplayer_content_box').html('<div id="mediaplayer_flash"></div>');

	// Load Flash using SwfObject
	var flashvars = {
		videofile: file
	};
	var params = flashvars;
	params.wmode = 'opaque';
	params.swliveconnect = 'false';
	params.allowscriptaccess = 'always';
	params.allowfullscreen = 'true';
	params.enablejs = 'true';
	var attr = {};
	swfobject.embedSWF('flash/videoplayer.swf', 'mediaplayer_flash', '640', '480', '9', '', flashvars, params, attr);
}

// -----------------------------------------------------------------------

/**
*	SetNavButton
*
*	Set the event handler for prev or next buttons, and hides it
*	in case there is no previous/next item (value 0).
*
*	- media_type: 'photo' or 'video'
*	- nav_type: 'prev' or 'next'
*	- media_id: item id
**/
function SetNavButton(media_type, nav_type, media_id) 
{
	if (media_id == 0)
	{
		$('#mediaplayer a.' + nav_type).hide();
	}	
	else
	{
		$('#mediaplayer a.' + nav_type).unbind().click(function()
		{
			if (media_type == 'photo')
			{
				HideTabs();
				ResetForms();
				LoadPhoto(media_id);
			}
			else
			{
				HideTabs();
				ResetForms();
				LoadVideo(media_id);
			}
			return false;
		}).show();
	}
}

// -----------------------------------------------------------------------

/**
*	GetFlashMovie
*
*	Returns the flash movie object.
*
*	- name: name of movie
**/
function GetFlashMovie(name) 
{
	var isIE = navigator.appName.indexOf("Microsoft") != -1;
  	return (isIE) ? window[name] : document[name];
}

// -----------------------------------------------------------------------

/**
*	ActivateSifr
*
*	Replaces the title with SWF.
**/
function ActivateSifr()
{
	$('#mediaplayer h1').removeClass('sIFR-replaced');
	
	// Activate sifr - works only on visible elements
	sIFR.replace(russell, {
		selector: '#mediaplayer h1',
		wmode: 'transparent',
		css: {
			'.sIFR-root': { 'color': '#345d7c' }
		}
	});
}

// -----------------------------------------------------------------------

/**
*	ResetForms
*
*	Clears both tell-a-friend forms.
**/
function ResetForms()
{
	$('#tab_share_photo input.text, #tab_share_video input.text').each(function()
	{
		$(this).val('');
	});
}

// -----------------------------------------------------------------------

/**
*	SubmitTellFriendForm
*
*	Sends the tell a friend forms (both photo and video)
**/
function SubmitTellFriendForm(type)
{

	// Start by hiding old error messages
	HideTellFriendFormErrors(type);

	var has_error = false;
	var error_message = false;

	// Check sender name
	if ( (!has_error) && (!CheckNotEmpty(type + '_sender_name')) )
	{
		error_message = "Er is geen naam ingevuld.";
		input_field = '_sender_name';
		has_error = true;
	}
	
	// Check sender email
	if ( (!has_error) && (!CheckNotEmpty(type + '_sender_email')) )
	{
		error_message = "Er is geen emailadres ingevuld.";
		input_field = '_sender_email';
		has_error = true;
	}

	// Check sender email
	if ( (!has_error) && (!CheckValidEmail(type + '_sender_email')) )
	{
		error_message = "Er is geen geldig emailadres ingevuld.";
		input_field = '_sender_email';
		has_error = true;		
	}

	// Check recipient name
	if ( (!has_error) && (!CheckNotEmpty(type + '_recipient_name')) )
	{
		error_message = "Er is geen naam ingevuld.";
		input_field = '_recipient_name';
		has_error = true;
	}

	// Check recipient email
	if ( (!has_error) && (!CheckNotEmpty(type + '_recipient_email')) )
	{
		error_message = "Er is geen emailadres ingevuld.";
		input_field = '_recipient_email';
		has_error = true;		
	}
	
	// Check recipient email
	if ( (!has_error) && (!CheckValidEmail(type + '_recipient_email')) )
	{
		error_message = "Er is geen geldig emailadres ingevuld.";
		input_field = '_recipient_email';
		has_error = true;		
	}
	
	if (has_error)
	{
		$('#error_message_'+type).html(error_message);
		$('#error_message_'+type).show();
		$('#'+type + input_field).addClass('input_error');
		$('#'+type + input_field).focus();
	}
	else
	{
		SendTafData(type);
	}
}

/**
*	HideTellFriendFormErrors
*
*	Hides the tell a friend form errors
**/
function HideTellFriendFormErrors(type) {
	$('#feedback_overlay').hide();
	$('#mediaplayer .feedback').hide();
	$('.input_error').removeClass('input_error');
	$('#error_message_'+type).html('&nbsp;');
}
// -----------------------------------------------------------------------

/**
*	SendTafData
*
*	Sends the tell a friend form data 
**/
function SendTafData(type)
{
	// Get page ID
	var regex = /pageID=\d+/;
	var page_id = regex.exec(window.location.search);
	page_id = page_id[0];
	page_id = page_id.replace('pageID=', '');
	
	var name = window.location.search;
	var name = name.replace('?voornaam=', '');

	// Gather data and post it
	var data = {
		'formAction': 'sendForm',
		'returnMethod': 'JSON',
		'source': 'MMplayer',
		'sourcetype': type,
		'pageLink': mediaviewer_url + curr_item_id,
		'pageID': page_id,
		'not_verplicht': 'send_bestand',
		'adminPers': $('#' + type + '_sender_name').val(),
		'adminMail': $('#' + type + '_sender_email').val(),
		'userPers[]': $('#' + type + '_recipient_name').val(),
		'userEmail[]': $('#' + type + '_recipient_email').val()
	};
	$.post('/sendafriend.php', data, function(resp)
	{
		resp = eval(resp);
		if (resp.error)
		{
			ShowTafResult(type, resp.error);
		}
		else
		{
			var msg = 'Je bericht is verstuurd naar ' + $('#' + type + '_recipient_name').val() + '.';
			ShowTafResult(type, msg);
		}
		ResetForms();
		HideTellFriendFormErrors(type)
	});
}

// -----------------------------------------------------------------------

/**
*	ShowTafResult
*
*	Shows the result of sending the TAF mail.
*
*	type: photo or video
*	msg: string with error or success feedback
**/
function ShowTafResult(type, msg)
{
	$('#taf_feedback_' + type + ' p').html(msg);

	// Hide form div, show feedback
	$('#taf_form_' + type).hide();
	$('#taf_feedback_' + type).removeClass('hidden').show();
}
