#!/bin/bash

datadir=$(cd $(dirname "$0") && pwd)

. ${datadir}/common.fnc

pkgs="rar unrar lha-sjis libdvdcss2 libbluray1 libaacs0 libavcodec-extra-53 libavfilter-extra-2 libpostproc-extra-52 libavdevice-extra-53 gstreamer-tools gstreamer0.10-ffmpeg gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-ugly gstreamer0.10-packagekit lame flac ttaenc wavpack"

# Check
if [ "$1" == "-c" ] ; then
	if [ $(_check ${pkgs}) == "n" ] ; then
		echo FALSE
	else
		if [ -f "${datadir}/w32.txt" ] ; then
			if [ -f "${datadir}/fp10.txt" ] || [ $(_check adobe-flashplugin) == "y" ] ; then
				echo TRUE
			else
				echo FALSE
			fi
		else
			echo FALSE
		fi
	fi
	
# Install
elif [ "$1" == "-i" ] ; then
	_install ${pkgs}
	
	sudo echo "libdvdcss2 を有効化します..."
	if sudo /usr/share/doc/libdvdread4/install-css.sh ; then
		_log "libdvdcss2 の有効化に成功しました。"
	else
		_err "libdvdcss2 の有効化に失敗しました。"
	fi
	
	_win32codecs()
	{
		sudo mkdir -p /usr/lib/codecs
		echo "最新の Win32 コーデックをダウンロードしています..."
		cd /tmp
		
		zipfile=$(wget http://www.mplayerhq.hu/MPlayer/releases/codecs -O- | \
		         grep -o essential-2[0-9]*.tar.[0-9a-zA-Z]*\< | sort -V | \
		         tail -n 1 | grep -o "[0-9a-zA-Z\.\-]*")
		zipdir=$(echo $zipfile | sed -e 's/.[^.]*.[^.]*$//igm')
		
		_log "http://www.mplayerhq.hu/MPlayer/releases/codecs/$zipfile"
		if wget -c http://www.mplayerhq.hu/MPlayer/releases/codecs/$zipfile ; then
			_log "Win32 コーデックのダウンロードに成功しました。"
		else
			_err "Win32 コーデックのダウンロードに失敗しました。"
			return 1
		fi
		
		echo "ダウンロードしたアーカイブを解凍しています..."
		if tar xf $zipfile ; then
			_log "$zipfile の解凍に成功しました。"
		else
			_err "$zipfile の解凍に失敗しました。"
			return 1
		fi
		
		echo "データを移動しています..."
		cd $zipdir
		sudo bash -c "find . -type f | sed -e 's|^\.|/usr/lib/codecs|igm' > ${datadir}/w32.txt"
		_log "${datadir}/w32.txt にファイルリストを記録しました。"
		
		if sudo cp -v ./* /usr/lib/codecs ; then
			_log "/usr/lib/codecs への移動に成功しました。"
		else
			_err "/usr/lib/codecs への移動に失敗しました。"
			return 1
		fi
	
		_log "一時ファイルを除去しています..."
		cd /tmp
		rm -rf $zipdir
		rm -f  $zipfile
		
		cd $datadir
		echo
		
		return 0
	}
	_win32codecs
	
	_neroaac()
	{
		echo "Nero AAC Encoder をダウンロードしています..."
		cd /tmp
		
		_log "http://ftp6.nero.com/tools/NeroAACCodec-1.5.1.zip"
		if wget -c http://ftp6.nero.com/tools/NeroAACCodec-1.5.1.zip ; then
			_log "Nero AAC のダウンロードに成功しました。"
		else
			_err "Nero AAC のダウンロードに失敗しました。"
			return 1
		fi
		
		echo "ダウンロードしたアーカイブを解凍しています..."
		mkdir -p NeroAACCodec-1.5.1
		if unzip NeroAACCodec-1.5.1.zip -d NeroAACCodec-1.5.1 ; then
			_log "アーカイブの解凍に成功しました。"
		else
			_err "アーカイブの解凍に失敗しました。"
			return 1
		fi
		
		echo "実行ファイルを移動しています..."
		cd NeroAACCodec-1.5.1/linux
		if sudo cp -v ./* /usr/local/bin ; then
			_log "実行ファイルの移動に成功しました。"
		else
			_err "実行ファイルの移動に失敗しました。"
			return 1
		fi
		if sudo chmod +x /usr/local/bin/neroAacDec /usr/local/bin/neroAacEnc /usr/local/bin/neroAacTag ; then
			_log "実行ファイルの権限付与に成功しました。"
		else
			_err "実行ファイルの権限付与に失敗しました。"
			return 1
		fi
		
		_log "一時ファイルを除去しています..."
		cd /tmp
		rm -rf NeroAACCodec-1.5.1
		rm -f  NeroAACCodec-1.5.1.zip
	}
	_neroaac
	
	_flash()
	{
		echo
		echo "Linux 版の Flash Player 11 は非常に不安定なので、"
		read -p "代わりに Flash Player 10 を使用します。よろしいですか？ [Y/n]" yn
		
		if [ "a${yn}" == "an" ] || [ "a${yn}" == "aN" ] ; then
			_log "通常通り Flash Player 11 をインストールします。"
			_install adobe-flashplugin adobe-flash-properties-gtk
		
		else
			sudo echo "最新の Flash Player 10 をダウンロードしています..."
			cd /tmp
			zipurl=$(wget http://helpx.adobe.com/jp/flash-player/kb/228683.html -O- | grep 10.3. | \
			         grep -v --ignore-case only | grep -m1 -o -e "http.*fp_10.3[0-9a-zA-Z\-\._]*")
			_log "$zipurl"
			if wget -c $zipurl ; then
				_log "Flash Player 10 のダウンロードに成功しました。"
			else
				_err "Flash Player 10 のダウンロードに失敗しました。"
				return 1
			fi
			
			echo "ダウンロードしたアーカイブを解凍しています..."
			zipfile=$(basename $zipurl)
			if unzip -o -q $zipfile ; then
				_log "アーカイブの解凍に成功しました。"
			else
				_err "アーカイブの解凍に失敗しました。"
				return 1
			fi
		
			echo "Linux用のデータを移動しています..."
			tgzurl=$(find . -name *linux* | grep -v debug)
			if mv $tgzurl . ; then
				_log "Linux用データの抽出に成功しました。"
			else
				_err "Linux用データの抽出に失敗しました。"
				return 1
			fi
			
			_log "Win,Mac用のデータを除去しています..."
			zipdir=$(ls | grep -m1 ^fp_10)
			rm -rf $zipdir
			rm -f $zipfile
			
			echo "Linux用のデータを解凍しています..."
			tgzfile=$(ls | grep -m1 f*linux.t)
			if tar xf $tgzfile ; then
				_log "$tgzfile の解凍に成功しました。"
			else
				_err "Linux用データの解凍に失敗しました。"
				return 1
			fi
			
			echo "プラグイン本体をコピーしています..."
			sudo mkdir /usr/lib/adobe-flashplugin
			if sudo cp libflashplayer.so /usr/lib/adobe-flashplugin ; then
				_log "/usr/lib/adobe-flashplugin/libflashplayer.so のコピーに成功しました。"
			else
				_err "libflashplayer.so のコピーに失敗しました。"
				return 1
			fi
			sudo ln -s ../../adobe-flashplugin/libflashplayer.so /usr/lib/mozilla/plugins
			
			echo "その他のファイルをコピーしています..."
			cd usr
			sudo bash -c "find . -type f | sed -e 's/^\./\/usr/igm' > ${datadir}/fp10.txt"
			sudo cp -r * /usr
			
			_log "一時ファイルを除去しています..."
			cd ..
			rm -rf usr
			rm -f libflashplayer.so
			rm -f $tgzfile
			tgzfile=$(ls | grep -m1 f*linux_sa.t)
			rm -f $tgzfile
			echo
		fi
	}
	_flash
	
# Purge
elif [ "$1" == "-p" ] ; then

	if [ -f "${datadir}/fp10.txt" ] ; then
		if sudo bash -c "cat ${datadir}/fp10.txt | xargs rm -f" ; then
			_log "Flash Player 10 の除去に成功しました。"
			sudo rm -f ${datadir}/fp10.txt
		else
			_err "Flash Player 10 の除去に失敗しました。"
		fi
	fi
	
	if [ $(_check adobe-flashplugin) == "y" ] ; then
		pkgs="${pkgs} adobe-flashplugin adobe-flash-properties-gtk"
	fi
	_purge ${pkgs}
	
	if sudo bash -c "cat ${datadir}/w32.txt  | xargs rm -f" ; then
		_log "Win32 コーデックの除去に成功しました。"
		sudo rm -f ${datadir}/w32.txt
	else
		_err "Win32 コーデックの除去に失敗しました。"
	fi
	
	if sudo rm -f /usr/local/bin/neroAacDec /usr/local/bin/neroAacEnc /usr/local/bin/neroAacTag ; then
		_log "Nero AAC の除去に成功しました。"
	else
		_err "Nero AAC の除去に失敗しました。"
	fi
	
#	sudo rm -f /usr/lib/adobe-flashplugin/libflashplayer.so
#	sudo rm -f /usr/lib/mozilla/plugins/libflashplayer.so
	
fi
