// JavaScript Document
var audio, audio_mp3, audio_ogg, playtoggle, gutter, guttertrack, processed, loading, handle, time, player, loadingaudio; // components
var audio_autoPlay 	= true;		
var audio_status	= 0; //0 is not ready 1 is ready  2 is playing 3 is pause	
var audio_duration  = 0;
var audio_position  = 0;
var audio_tracker;
var audio_refresher;

var music_id;

function initMusic(){
	allow_click		= false;
	music_id 		= $('active_item').value;
	
	if($('mp3')){
		if(browserIE && browserIE9 == false){
	
			var obj = new Swiff(root_domain+'blog/blogparts/music_detail.swf', {
				id: 'music_player',
				container: $('item_extra'),
				width: 350,
				height: 80,
				params: {
					wmode: 'window',
					bgcolor: '#ffffff'
				},
				vars: {
					basis_url: root_domain,
					item_id: music_id
				}
			})
		
		}else{
			
			if($('mp3')){
			var mp3_source = $('mp3').value;
			var ogg_source = $('ogg').value;
			}
			
			audio  			= new Element('audio', {
				'preload': 'auto'			
			});
			
			audio_mp3  		= new Element('source', {
				'src': mp3_source
			});
			
			audio_ogg  		= new Element('source', {
				'src': ogg_source
			});
			
			playtoggle  	= new Element('div', {
				'id': 'playtoggle',
				'class': 'play'
			});
			
			gutter  		= new Element('div', {
				'id': 'gutter'
			});
			
			processed  		= new Element('div', {
				'id': 'processed'
			});
			
			guttertrack  	= new Element('div', {
				'id': 'guttertrack'
			});
			
			handle  		= new Element('div', {
				'id': 'handle'
			});
			
			time  			= new Element('span', {
				'id': 'time',
				'html': '00:00'
			});
			
			player  		= new Element('div', {
				'id': 'player'
			});
			
			loadingaudio	= new Element('div', {
				'id': 'loadingaudio',
				'html': '<br/>audio loading'
			});
			
			
			player.inject($('item_extra'));
			
			playtoggle.inject(player);
			processed.inject(player);
			gutter.inject(guttertrack);
			guttertrack.inject(player);
			handle.inject(player);
			time.inject(player);
			
			audio.inject(player);
			audio_mp3.inject(audio);
			audio_ogg.inject(audio);
			
			loadingaudio.inject(player);
			
			audio_refresher	= audioStatus.periodical(100);
		}
	}else{
		//hide custom player	
		$('item_extra').setStyle('display','none')
	}
	allow_click		= true;	
}



function audioStatus() {
	var ready_state	 = audio.readyState;
	if(ready_state == 3 || ready_state == 4){
		clearInterval(audio_refresher);
		audio_duration	= audio.duration;
		//console.log(audio_duration)
		audio_position	= 0;
		if(audio_autoPlay){
			audio.currentTime = 0.1;
			audio.play();
			playtoggle.toggleClass('pause'); //make visible - default css on play!
			audio_refresher	= audioVisuals.periodical(audio_refreshrate);
			audio_status	= 2;
		}else{
			audio.currentTime = 0.1;
			audio_status	= 1;
		}
		audioControls();
		
		loadingaudio.fade('out');
		
	}
}


function audioControls(){
	
	playtoggle.addEvent('click', function(event){ 
		switch(audio_status){
			case 0:
				//nothing! still loading!
			break;
			case 1:
				//start it
				playtoggle.toggleClass('pause');
				audio.play();
				audio_status	= 2;

				clearInterval(audio_refresher);
				audio_refresher		= audioVisuals.periodical(audio_refreshrate);

			break;
			case 2:
				//pause it!
				playtoggle.toggleClass('pause');
				audio.pause();
				audio_status	= 3;
				
				clearInterval(audio_refresher);

			break;
			case 3:
				//resume it
				playtoggle.toggleClass('pause');
				audio.play();
				audio_status	= 2;
						
				clearInterval(audio_refresher);
				audio_refresher		= audioVisuals.periodical(audio_refreshrate);
				
			break;
		}
	});
	
	
	audio_tracker = new Slider(guttertrack, gutter, {
		range: [0, audio_width],
		wheel: false,
		snap: true,
		onChange: function(pos){
			clearInterval(audio_refresher);
       		audio.pause();
			processed.setStyle('width',pos + 1);
			
			var calculated_audio_position	= pos / audio_width * audio_duration;
			
			var minutes						= MakeDigits(Math.floor(calculated_audio_position/60),2);
			var seconds						= MakeDigits(Math.floor(calculated_audio_position%60),2);
			
			time.innerHTML 					= minutes + ':' + seconds;
			
       		//console.log(this.property)
			//console.log(pos);
		},
		onComplete: function(pos){
       		//console.log(this.property)
			//console.log(pos);
			audio.currentTime 	= pos / audio_width * audio_duration;
			clearInterval(audio_refresher);
			audio_refresher		= audioSeeking.periodical(5);
		}
	});

	
}

var audio_width 		= 250;
var audio_refreshrate 	= 40;
function audioVisuals() {
	//console.log(audio_duration)
	audio_position	= audio.currentTime + 1;
	var completed	= parseInt(audio_position / audio_duration * audio_width);
	//console.log(parseInt(completed))
	processed.setStyle('width',completed);
	gutter.setStyle('left',completed);
	
	var minutes		= MakeDigits(Math.floor(audio_position/60),2);
	var seconds		= MakeDigits(Math.floor(audio_position%60),2);
	
	time.innerHTML  = minutes + ':' + seconds;
}

function audioSeeking() {
	//console.log(audio.seeking)
	if(!audio.seeking){
		clearInterval(audio_refresher);
		if(audio_status == 2){
			audio.play();
			audio_refresher		= audioVisuals.periodical(audio_refreshrate);
		}
	}
}


var gutter_volume, guttertrack_volume, processed_volume, handle_volume;
var volume_tracker;
var volume_width	= 100;
var current_volume	= 0.5;

var video, video_mp4, video_webm, video_ogv, loadingvideo, controls_bg, controls; // components
var video_autoPlay 	= true;		
var video_status	= 0; //0 is not ready 1 is ready  2 is playing 3 is pause	
var video_duration  = 0;
var video_position  = 0;
var video_tracker;
var video_refresher;


var video_id;
function initVideo(){
	allow_click		= false;
	
	if($('video_container') && $('youtubeID')){
	
		var youtubeID		= $('youtubeID').value
		movieActive			= true;
		movieIDtoload		= youtubeID;
		_run();
		$('video_container').setStyle('display','block');
		
		processed		= $('processed');
		guttertrack		= $('guttertrack');
		gutter			= $('gutter');
		handle			= $('handle');
		time			= $('time');
	}else{
	
		if(browserIE && browserIE9 == false){
	
			
		
		}else{
			
			var frame_width		= 720;
			var frame_height	= 405;
			
			var videos	= $$('.video-object');
			videos.each(function(element) {
				video_id 		= parseInt(element.getProperty('id').substring(6));
				
				var url 		= root_domain + 'blog/blogparts/htmlvideo.php?video_id='+video_id+'&frame_width='+frame_width+'&frame_height='+frame_height+'&browserIE='+browserIE+'&browserCHROME='+browserCHROME+'&browserFF='+browserFF;
				//alert(url);
				var req = new Request({url: url,
					method: 'get',
					onSuccess: function(responseText) {
						var output 	= req.response.text;
					
						$('video_'+video_id).innerHTML = output;
						$('video_'+video_id).addEvent('domready', function() {
							//console.log(video_id)
							playtoggle		= $('playtoggle');
							processed		= $('processed');
							guttertrack		= $('guttertrack');
							gutter			= $('gutter');
							handle			= $('handle');
							time			= $('time');
							video			= $('video_container');
							loadingvideo	= $('loadingvideo');
							controls		= $('controls');
							controls_bg		= $('controls_bg');
	
							
							processed_volume		= $('processed_volume');
							guttertrack_volume		= $('guttertrack_volume');
							gutter_volume			= $('gutter_volume');
							handle_volume			= $('handle_volume');
							
							controls_bg.setStyle('opacity',0.6);
							controls.setStyle('display','block');
							
							/*video.addEventListener("loadstart", function() { alert(1); }, true);
							video.addEventListener("empty", function() { alert(2); }, true);
							video.addEventListener("canplay", function() { alert(3); }, true);*/
							
							video_refresher	= videoStatus.periodical(100);
			
							
						});
					},
					onFailure: function() {
						//$(target).set('innerHTML', 'The request failed.');
					}
				});
				req.send();
			
			});
			
			/*video.addEventListener("loadstart", function() { alert(1); }, true);
			video.addEventListener("empty", function() { alert(2); }, true);
			video.addEventListener("canplay", function() { alert(3); }, true);
			
			video_refresher	= videoStatus.periodical(100);*/
		}
	
	}
	
	allow_click		= true;	
}


function videoStatus() {
	var ready_state	 = video.readyState;
//	console.log(ready_state)
	if(ready_state >= 2){
		clearInterval(video_refresher);
		
		video_duration	= video.duration;
		//video.volume	= 1;
		
		//console.log(video_duration)
		video_position	= 0;
		if(video_autoPlay){
			video.currentTime = 0.1;
			video.pause();
			video.play();
			playtoggle.toggleClass('pause'); //make visible - default css on play!
			video_refresher	= videoVisuals.periodical(video_refreshrate);
			video_status	= 2;
		}else{
			video.currentTime = 0.1;
			video.pause();
			video_status	= 1;
		}
		videoControls();
		loadingvideo.fade('out');
	}
}

function videoControls(){
	playtoggle.addEvent('click', function(event){ 
		switch(video_status){
			case 0:
				//nothing! still loading!
			break;
			case 1:
				//start it
				playtoggle.toggleClass('pause');
				video.play();
				video_status	= 2;

				clearInterval(video_refresher);
				video_refresher		= videoVisuals.periodical(video_refreshrate);
			break;
			case 2:
				//pause it!
				playtoggle.toggleClass('pause');
				video.pause();
				video_status	= 3;
				
				clearInterval(video_refresher);
			break;
			case 3:
				//resume it
				playtoggle.toggleClass('pause');
				video.play();
				video_status	= 2;
						
				clearInterval(video_refresher);
				video_refresher		= videoVisuals.periodical(video_refreshrate);
			break;
		}
	});
	
	
	video_tracker = new Slider(guttertrack, gutter, {
		range: [0, video_width],
		wheel: false,
		snap: true,
		onChange: function(pos){
			clearInterval(video_refresher);
       		video.pause();
			processed.setStyle('width',pos + 1);
			
			var calculated_video_position	= pos / video_width * video_duration;
			
			var minutes						= MakeDigits(Math.floor(calculated_video_position/60),2);
			var seconds						= MakeDigits(Math.floor(calculated_video_position%60),2);
			
			time.innerHTML 					= minutes + ':' + seconds;
			
       		//console.log(this.property)
			//console.log(pos);
		},
		onComplete: function(pos){
       		//console.log(this.property)
			//console.log(pos);
			video.currentTime 	= pos / video_width * video_duration;
			clearInterval(video_refresher);
			video_refresher		= videoSeeking.periodical(5);
		}
	});
	
	
	volume_tracker = new Slider(guttertrack_volume, gutter_volume, {
		range: [0, volume_width],
		wheel: false,
		snap: true,
		steps: 50,
		onChange: function(pos){
			processed_volume.setStyle('width',pos + (5 * (100 - pos)/ volume_width));
			if(pos > 0){
				current_volume	= pos / volume_width * 1;
				video.volume 	= current_volume;
			}
		},
		onComplete: function(pos){
			if(pos > 0){
				current_volume	= pos / volume_width * 1;
				video.volume 	= current_volume;
			}
		}
	});
	volume_tracker.set(volume_width/2);

	
}

var video_width 		= 500;
var video_refreshrate 	= 40;

function videoVisuals() {
	//console.log(video_duration)
	video_position	= video.currentTime + 1;
	var completed	= parseInt(video_position / video_duration * video_width);
	//console.log(parseInt(completed))
	processed.setStyle('width',completed);
	gutter.setStyle('left',completed);
	
	var minutes		= MakeDigits(Math.floor(video_position/60),2);
	var seconds		= MakeDigits(Math.floor(video_position%60),2);
	
	time.innerHTML  = minutes + ':' + seconds;
}

function videoSeeking() {
	//console.log(video.seeking)
	if(!video.seeking){
		clearInterval(video_refresher);
		if(video_status == 2){
			video.play();
			video_refresher		= videoVisuals.periodical(video_refreshrate);
		}
	}
}

function setControlsYoutube(){
	
	video_tracker = new Slider(guttertrack, gutter, {
		range: [0, 450],
		wheel: false,
		snap: true,
		onChange: function(pos){
			clearInterval(video_refresher);
			pauseVideo();
			processed.setStyle('width',pos + 1);
			
			var calculated_video_position	= pos / 450 * video_duration;
			
			var minutes						= MakeDigits(Math.floor(calculated_video_position/60),2);
			var seconds						= MakeDigits(Math.floor(calculated_video_position%60),2);
			
			time.innerHTML 					= minutes + ':' + seconds;
			
			
			//console.log(this.property)
		},
		onComplete: function(pos){
			var calculated_video_position	= pos / 450 * video_duration;
			ytplayer.seekTo(calculated_video_position, true);
			
			playVideo();
			clearInterval(video_refresher);
			video_refresher		= videoVisualsYouTube.periodical(4);
		}
	});
	
	
	if(ytplayer){
		ytplayer.playVideo();
	}
}

function videoVisualsYouTube() {
	if(ytplayer){
	//console.log(video_duration)
	video_position	= ytplayer.getCurrentTime() + 1;
	var completed	= parseInt(video_position / video_duration * 450);
	//console.log(parseInt(completed))
	processed.setStyle('width',completed);
	gutter.setStyle('left',completed);
	
	var minutes		= MakeDigits(Math.floor(video_position/60),2);
	var seconds		= MakeDigits(Math.floor(video_position%60),2);
	
	time.innerHTML  = minutes + ':' + seconds;
	}
}

function MakeDigits(n, totalDigits){ 
	n = n.toString(); 
	var pd = ''; 
	if (totalDigits > n.length){ 
		for (i=0; i < (totalDigits-n.length); i++){ 
			pd += '0'; 
		} 
	} 
	return pd + n.toString(); 
}
