/**
 *	MTV - video.class.js
 *
 * $Id: video.class.js,v 1.7 2007/04/11 12:04:26 tothsz Exp $
 * $RCSfile: video.class.js,v $
 * $Revision: 1.7 $
 * $Author: tothsz $
*/

/*
 * MediaPLayer status codes
 */
	var WMPstatusMessages = new Array('','Videó leállítva','Videó megállítva','Lejátszás...','Előre','Vissza','Letöltés...','Várakozás','Videó vége','Transitioning','Kész','Újracsatlakozás');

/*
 * MTVideo object
 * szabolcs.toth@carnation.hu
 */
	var MTVideo = Class.create();
	MTVideo.prototype = {
		initialize: function(mainId, mediaURL) {
			this.mainID = mainId;
			this.obj = $('id'+mainId);
			this.player = $('player_id'+this.mainID);
			this.mediaURL = mediaURL;

			/* IE vagy van megfelelo activeX kiterjesztes */
			if( document.agent.ie || typeof(this.player.controls) != 'undefined'){
				//document.getElementsByClassName('control',this.obj )[0].show();

				this.on = false;
				this.po = false;
				this.slider = false;
				this.volumeUnit = 8;
				this.duration = 0;

				this.statusInfo = document.getElementsByClassName('statusInfo',this.obj)[0];
				this.statusTime = document.getElementsByClassName('statusTime',this.obj)[0];

				this.volRange = document.getElementsByClassName('volset',this.obj);

				for(var i=0;i<this.volRange.length;i++){
					this.volRange[i].onclick = this.setVolume.bindAsEventListener(this);
				}

				this.volMute = document.getElementsByClassName('mute',this.obj)[0];
				this.volMute.onclick = this.volumeHandler.bindAsEventListener(this);

				this.buttonBack = document.getElementsByClassName('back',this.obj)[0];
				this.buttonPlay = document.getElementsByClassName('play',this.obj)[0];
				this.buttonPause = document.getElementsByClassName('pause',this.obj)[0];
				this.buttonForward = document.getElementsByClassName('forward',this.obj)[0];
				this.buttonFullscreen = document.getElementsByClassName('fullscreen',this.obj)[0];

				this.buttonBack.onclick =	this.cFReverse.bindAsEventListener(this);
				this.buttonPlay.onclick =	this.cPlay.bindAsEventListener(this);
				this.buttonPause.onclick =	this.cPause.bindAsEventListener(this);
				this.buttonForward.onclick =	this.cFForward.bindAsEventListener(this);
				this.buttonFullscreen.onclick =	this.cFullScreen.bindAsEventListener(this);

				this.slider = new Slider(document.getElementsByClassName('slider',this.obj )[0],document.getElementsByClassName('timeLineValue',this.obj )[0]);
			} else {
				document.getElementsByClassName('control',this.obj )[0].hide();
				document.getElementsByClassName('media',this.obj )[0].style.height = '196px';
				document.getElementsByClassName('media',this.obj )[0].innerHTML = '<object id="player_'+this.mainID+'" width="192" height="196" type="application/x-oleobject" standby="Videó töltése..." codebase="http://www.microsoft.com/ntserver/netshow/download/en/nsmp2inf.cab#Version=5,1,51,415" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">'+
						'<param value="'+this.mediaURL+'" name="url"/>'+
		        '<param name="autoStart" value="0" />'+
		        '<param name="uiMode" value="mini" />'+
						'<param value="1" name="PlayCount"/>'+
						'<param value="1" name="showStatusBar"/>'+
						'<param value="1" name="enableContextMenu"/>'+
						'<param value="1" name="stretchToFit"/>'+
						'<param value="-500" name="Volume"/>'+
						'<embed id="player_'+this.mainID+'" uiMode="mini" autostart="0" width="192" height="196" loop="false" showstatusbar="1" playcount="1" enablecontextmenu="1"  showcontrols="1"	 src="'+this.mediaURL+'" pluginspage="http://www.microsoft.com/windows/mediaplayer/download/default.asp" type="video/x-ms-asf-plugin"/>'+
					'</object>';
			}

			Object.extend(this.obj,this);
		},
		startScrollTags: function(){
				this.tagListScroll = new PeriodicalExecuter(this.scrollTags.bindAsEventListener(this, arguments[1]), 0.08);
		},
		stopScrollTags: function(){
			this.tagListScroll.stop();
		},
		scrollTags: function(){
			_t = eval(this.tagList.left+arguments[1]*10);
			if(_t > this.tagListScrollmaxleft*-1 && _t < 10){
				this.tagList.left = _t;
				this.tagList.style.left = _t+'px';
			}
		},
		updateInfo: function( ){
			if(typeof(arguments[0]) == 'number'){
				string = WMPstatusMessages[arguments[0]];
			} else {
				string = arguments[0];
			}
			this.statusInfo.innerHTML = string;
		},
		startTimeline: function(){
			if(this.duration == 0){
				this.duration = Math.round(this.player.currentMedia.duration);
				this.slider.setMaximum(eval(this.duration));
				this.slider.setMinimum(1);
				this.slider.setUnitIncrement(20);
				document.getElementsByClassName('timeline',this.obj )[0].onmousedown = this.seekStart.bindAsEventListener(this)
				document.getElementsByClassName('timeline',this.obj )[0].onmouseup =this.seekEnd.bindAsEventListener(this)
				this.po = new PeriodicalExecuter(this.updateTimeline.bindAsEventListener(this), 1)
			}
		},
		waitTimeline: function(){
			if(this.player.currentMedia.duration > 0){
				this.startTimeline();
			}else{
				this.later(200, "waitTimeline", true);
			}
		},
		seekStart: function(){
			this.cPause();
		},
		seekEnd: function(){
			this.player.controls.currentPosition = this.slider.getValue();
			this.cPlay();
		},
		updateTimeline: function(){
			this.slider.setValue(Math.round(this.player.controls.currentPosition));
			this.updateInfo(this.player.playState);
			this.updateStatusTime();
		},
		updateStatusTime: function(  ){
			this.statusTime.innerHTML = [this.player.controls.currentPositionString, (this.player.controls.currentPositionString == '')?'':' / ',this.player.currentMedia.durationString].join('');
		},
		volumeHandler: function(){
			if( Event.element(arguments[0]).hasClassName('mute') ){
					if(this.player.settings.mute){
						this.volMute.removeClassName('active');
						this.player.settings.mute = false;
					} else {
						this.volMute.addClassName('active');
						this.player.settings.mute = true;
					}
			} else if(Event.element(arguments[0]).hasClassName('volup')) {
				if( this.player.settings.volume <= 100 ){
					this.setVolume(1);
				}
			} else if(Event.element(arguments[0]).hasClassName('voldown')) {
				if( this.player.settings.volume >= 0 ){
					this.setVolume(-1);
				}
			}
			return false;
		},
		setVolume: function() {
			if( typeof(arguments[0]) == 'number' ){
				this.volumeUnit = (eval(this.volumeUnit+arguments[0]) > 8)?8:eval(this.volumeUnit+arguments[0]);
				this.volumeUnit = (this.volumeUnit < 0)?0:this.volumeUnit;
			} else {
				this.volumeUnit = Event.element(arguments[0]).className.toArray()[10]
			}
			this.player.settings.volume = eval(this.volumeUnit*11);
			this.volRange.each(function(s){ s.removeClassName('on')})
			for(var i=0;i<=this.volumeUnit;i++){
				this.volRange[i].addClassName('on');
			}
			return false;
		},
		cPlay: function(){
			if(this.on) this.on.removeClassName('on');
			this.buttonPlay.addClassName('on')
			this.on = this.buttonPlay;
			if(this.player.controls.isAvailable('play'))this.player.controls.play();
			this.later(200, "waitTimeline", true);
			return false;
		},
		cPause: function(){
			if(this.on && this.on == this.buttonPause){
				this.cPlay();return false;
			}else if(this.on){
				this.on.removeClassName('on');
				this.buttonPause.addClassName('on');
				this.on = this.buttonPause;
				if(this.player.controls.isAvailable('pause'))this.player.controls.pause();
				return false;
			} else {

				if (this.buttonPlay.hasClassName('on'))this.buttonPlay.removeClassName('on');
				this.on = this.buttonPause;
				this.buttonPause.addClassName('on');
				if(this.player.controls.isAvailable('pause'))this.player.controls.pause();
				return false;
			}
		},
		cFForward: function(){
			if(this.on) this.on.removeClassName('on');
			this.buttonForward.addClassName('on')
			this.on = this.buttonForward;
			if(this.player.controls.isAvailable('fastForward'))this.player.controls.fastForward(); return false;
		},
		cFReverse: function(){
			if(this.on) this.on.removeClassName('on');
			this.buttonBack.addClassName('on')
			this.on = this.buttonBack;
			if(this.player.controls.isAvailable('fastReverse'))this.player.controls.fastReverse(); return false;
		},
		cSeekTo: function(num, play){
			//this.player.controls.currentPosition = num;
			if(play){
				this.cPlay();
			}else{
				if(this.player.controls.isAvailable('play'))this.player.controls.play();
				this.later(50, "cSeekToPause", true);
			}
			return false;
		},
		cSeekToPause: function(){
			if(this.player.playState == 3){
				if(this.player.controls.isAvailable('pause'))this.player.controls.pause();
			} else{
				this.later(50, "cSeekToPause", true);
			}
		},
		cFullScreen: function(){
			if(this.player.playState == 3){
				this.player.fullScreen = 'true';
			}
		},
		loadMedia: function(){
			this.mediaURL = arguments[0];
			if( document.agent.ie || typeof(this.player.controls) != 'undefined'){
				document.getElementsByClassName('control',this.obj )[0].show();
				document.getElementsByClassName('media',this.obj )[0].show();
				if(this.player.controls.isAvailable('stop'))this.player.controls.stop();
				this.player.URL = this.mediaURL;
				this.duration = 0;
				this.on = false;
				//return this.cSeekTo(1, false);
				this.cPlay();

			} else {
				document.getElementsByClassName('media',this.obj )[0].innerHTML = '<object id="player_'+this.mainID+'" width="192" height="196" type="application/x-oleobject" standby="Videó töltése..." codebase="http://www.microsoft.com/ntserver/netshow/download/en/nsmp2inf.cab#Version=5,1,51,415" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">'+
						'<param value="'+this.mediaURL+'" name="url"/>'+
		        '<param name="autoStart" value="1" />'+
		        '<param name="uiMode" value="full" />'+
						'<param value="1" name="PlayCount"/>'+
						'<param value="1" name="showStatusBar"/>'+
						'<param value="1" name="enableContextMenu"/>'+
						'<param value="1" name="stretchToFit"/>'+
						'<param value="-500" name="Volume"/>'+
						'<embed id="player_'+this.mainID+'" uiMode="full" autostart="1" width="192" height="196" loop="false" showstatusbar="1" playcount="1" enablecontextmenu="1"  showcontrols="1"	 src="'+this.mediaURL+'" pluginspage="http://www.microsoft.com/windows/mediaplayer/download/default.asp" type="video/x-ms-asf-plugin"/>'+
					'</object>';
			}
			return false;
		},
		startMedia: function(){
			this.mediaURL = arguments[0];
			arguments[1].hide();
			if( document.agent.ie || typeof(this.player.controls) != 'undefined'){
				document.getElementsByClassName('control',this.obj )[0].show();
				document.getElementsByClassName('media',this.obj )[0].show();
				if(this.player.controls.isAvailable('stop'))this.player.controls.stop();
				this.player.URL = this.mediaURL;
				this.duration = 0;
				this.on = false;
				this.cPlay();

			} else {
				document.getElementsByClassName('media',this.obj )[0].show();
				document.getElementsByClassName('media',this.obj )[0].innerHTML = '<object id="player_'+this.mainID+'" width="192" height="196" type="application/x-oleobject" standby="Videó töltése..." codebase="http://www.microsoft.com/ntserver/netshow/download/en/nsmp2inf.cab#Version=5,1,51,415" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">'+
						'<param value="'+this.mediaURL+'" name="url"/>'+
		        '<param name="autoStart" value="1" />'+
		        '<param name="uiMode" value="full" />'+
						'<param value="1" name="PlayCount"/>'+
						'<param value="1" name="showStatusBar"/>'+
						'<param value="1" name="enableContextMenu"/>'+
						'<param value="1" name="stretchToFit"/>'+
						'<param value="-500" name="Volume"/>'+
						'<embed id="player_'+this.mainID+'" uiMode="full" autostart="1" width="192" height="196" loop="false" showstatusbar="1" playcount="1" enablecontextmenu="1"  showcontrols="1"	 src="'+this.mediaURL+'" pluginspage="http://www.microsoft.com/windows/mediaplayer/download/default.asp" type="video/x-ms-asf-plugin"/>'+
					'</object>';
			}
			return false;
		},
		end: true
	}

