﻿var media = new RM3SMedia();
var _player = new RM3SPlayer("_player", "player", "", 400, 225, false, false, null, 0);
var mediaId = '';
var mediaGUID = '';
var editMode = true;
var useLocalURL = false;

menu_tag_onclick_handler = function(tag_id, tag_time, tag_title, tag_description, dontTrack) {
	_player.exec('goto', tag_time);
	//_player.exec('play');
	minTagTime = tag_time;
	if(!dontTrack) trackPlayer();  
}

function switchLocalURL() {
	var localURLlink = document.getElementById("localURLlink");
	if(media.streamingURLs == null || media.streamingURLs.length < 1 || media.streamingURLs[0] == null) return;
	if(useLocalURL) useLocalURL = false;
	else useLocalURL = true;
	if(useLocalURL && (media.streamingURLs[0].localURL == null || media.streamingURLs[0].localURL == "")) {
		useLocalURL = false;
		if(localURLlink != null) localURLlink.innerHTML = "Use&nbsp;Local&nbsp;Media";
		alert("No local media URL specified");
		return false;
	}
	if(localURLlink != null) localURLlink.innerHTML = (useLocalURL ? "Use&nbsp;Public&nbsp;Media" : "Use&nbsp;Local&nbsp;Media");
	_player.exec('open', (useLocalURL ? media.streamingURLs[0].localURL : media.streamingURLs[0].publicURL)); 
}

var player_onPositionChange_handler = null;
function player_onPositionChange(oldPosition, newPosition) {
	if(player_onPositionChange_handler != null) {
		try {
			player_onPositionChange_handler(oldPosition, newPosition);
		} catch(e) {}
	}
}

function body_onload() {
	player_onPositionChange_handler = function(dblOldPosition, dblNewPosition) {
		if(!isNaN(dblNewPosition) && (minTagTime - dblNewPosition > 0)) minTagTime = dblNewPosition;
		trackPlayer();
	}
  //process_addTrackingListener(trackPlayer);
  showRecent();
  
  var menuHeaderDiv = document.getElementById("menuHeaderDiv");
  if(menuHeaderDiv != null) menuHeaderDiv.innerHTML = menu_header_create_html();
  
/*  media.title = "New Program";
  media.streamingURLs = [{publicURL: "video/demo.wmv", localURL: ""}];
  media_onload();
  auth_editMedia('authoringDiv', 'player', media);
*/  
}

function media_onload() {
  var menuDiv = document.getElementById("menuDiv");
  if(menuDiv != null) menuDiv.innerHTML = menu_create_html(media);
  if(media == null) { 
    alert("No media has been loaded");
    return; 
  }
	mediaId = media.id;

  updateStyles();
  hideStart();
  
  updateDimensions();
  
	_player.videoURL = (media.streamingURLs == null || media.streamingURLs.length < 1 || media.streamingURLs[0] == null ? "" :  (useLocalURL ? media.streamingURLs[0].localURL : media.streamingURLs[0].publicURL));
	_player.startSecs = 0;
	_player.createInstance("playerDiv", "playerControlsDiv");
	_player.onTimeChange = trackPlayer;
	_player.onPositionChange = player_onPositionChange_handler;
	_player.startTimer();
			
  var titleDiv = document.getElementById("titleDiv");
  if(titleDiv != null) {
		titleDiv.innerHTML = media.title;
	}
	
	auth_saveChanges();
}

function updateStyles() {
	var bg = '';
	if(media.styles != null && media.styles.v_background != null && media.styles.v_background != "") {
		bg = media.styles.v_background;
	}
	if(bg != null && bg != "") document.body.style.background = bg;
}

function updateDimensions() {
	if(media.dimensions != null) {
		var w = parseInt(media.dimensions.width);
		var h = parseInt(media.dimensions.height);
		if(!isNaN(w) && w > 20) {
			var outerTable = document.getElementById("outerTable");
			if(outerTable != null) outerTable.style.width = (w + 20) + "px";
			var playerOuter = document.getElementById("playerOuter");
			if(playerOuter != null) playerOuter.style.width = (w + 20) + "px";
			var playerDiv = document.getElementById("playerDiv");
			if(playerDiv != null) playerDiv.style.width = w + "px";
			var playerControlsDiv = document.getElementById("playerControlsDiv");
			if(playerControlsDiv != null) playerControlsDiv.style.width = w + "px";
			var menuScrollDiv = document.getElementById("menuScrollDiv");
			if(menuScrollDiv != null) menuScrollDiv.style.width = w + "px";
			var menuHeaderDiv = document.getElementById("menuHeaderDiv");
			if(menuHeaderDiv != null) menuHeaderDiv.style.width = (w - 20) + "px";
			var menuDiv = document.getElementById("menuDiv");
			if(menuDiv != null) menuDiv.style.width = (w - 20) + "px";
			_player.videoWidth = w;
		}
		if(!isNaN(h) && h > 0) {
			var playerDiv = document.getElementById("playerDiv");
			if(playerDiv != null) playerDiv.style.height = h + "px";
			_player.videoHeight = h;
		}
		
		if(!isNaN(w) && w > 20 && !isNaN(h) && h > 0) {
			_player.resize(w, h);
			_player.updateControls(true);
		}
	}
}

var currentTagId = null;
var currentChapterId = null;
var minTagTime = 0.0;
var started = false;

function trackPlayer() {
  var totaltime = _player.getTotalTime();
	if(!isNaN(totaltime) && totaltime > 0 && !started) {
		started = true;
  }
  if(process_media_duration != totaltime) {
    process_media_duration = totaltime
    media.calcDurations(process_media_duration);
    media.calcChaptersTime("");
    var menuDiv = document.getElementById("menuDiv");
    if(menuDiv != null) menuDiv.innerHTML = menu_create_html(media);
  }
  
  var time = _player.getCurrentTime();
	
  //if(time > 0) hideStartVideoRow();
  var cTime = (!isNaN(minTagTime) && (minTagTime - time > 0) ? minTagTime : time);
  var curTag = media.getTagByTime(cTime, 0.5);
  var curChaptersList = media.getChaptersContainTag(curTag == null ? null : curTag.id);
  var cl = "";
  if(curChaptersList != null) {
    for(var i = 0, n = curChaptersList.length; i < n; i++) {
      cl += (cl == "" ? "" : ", ") + (curChaptersList[i] == null ? "null" : curChaptersList[i].title);
    }
  }
  //var timespan = document.getElementById('timespan');
  //if(timespan != null) timespan.innerHTML = rm3s_formatTime(time) + " / " + rm3s_formatTime(totaltime);
  /*var currentChapterDiv = document.getElementById('currentChapterDiv');
  if(currentChapterDiv != null) {
    var l = 45;
    var html = "<b>" + cl + "</b> : <i>" + curTag.title + "</i>";
    if(cl.length > l) html = "<b>" + cl.substr(0, l) + "...</b>";
    else if(cl.length + curTag.title.length > l) html = "<b>" + cl + "</b> : <i>" + curTag.title.substr(0, l - cl.length) + "...</i>"
    
    currentChapterDiv.innerHTML = html;
    currentChapterDiv.title = cl + " : " + curTag.title;
  }*/
  menu_mark_tag_by_id(curTag == null ? null : curTag.id, curChaptersList);
  
	if(currentTagId != (curTag == null ? null : curTag.id)) {
		currentTagId = (curTag == null ? null : curTag.id);
	}
	
}

var skipStep = 2; // 2 secs
var skipTimeout = 300; // 300 ms
var skipValue = 0;
var skipTimer = null;

function skipMediaStart(skipDirection) {
	_player.exec("pause", 0);
	skipValue = 0;
	skipMedia_ontimer(skipDirection);
}

function skipMediaDo() {
	if(skipTimer != null) window.clearTimeout(skipTimer);
	var time = _player.getCurrentTime();
	var total = _player.getTotalTime();
	var p = parseFloat(time) + parseInt(skipValue);
	if(p < 0) p = 0;
	if(p > total) p = total;
			
	skipValue = 0;
	var skipValueCell = document.getElementById("skipValueCell");
	if(skipValueCell != null) skipValueCell.innerHTML = skipValue;
	
	_player.exec("goto", p);
	_player.exec("play", 0);
}

function skipMediaCancel() {
	if(skipTimer != null) window.clearTimeout(skipTimer);
	skipValue = 0;
	var skipValueCell = document.getElementById("skipValueCell");
	if(skipValueCell != null) skipValueCell.innerHTML = skipValue;
}

function skipMedia_ontimer(skipDirection) {
	if(isNaN(skipDirection)) skipDirection = 1;
	if(skipTimer != null) window.clearTimeout(skipTimer);
	skipValue += skipDirection * skipStep;
	var skipValueCell = document.getElementById("skipValueCell");
	if(skipValueCell != null) skipValueCell.innerHTML = skipValue;
	skipTimer = window.setTimeout("skipMedia_ontimer(" + skipDirection + ")", skipTimeout);
}

function log_event(mediaId, tagId, chapterId, eventType, eventNotes) {
}

var slidesFolder = "slides/";
var slidesFullSizeFolder = "fullsize/";
var slidesThumbFolder = "thumbs/";

function toggle(id) {
	var e = document.getElementById(id);
	if(e != null) e.style.display = (e.style.display == "none" ? "" : "none");
}

function checkFileSelected(filepath, buttonId) {
	var b = document.getElementById(buttonId);
	if(b != null) b.style.display = (filepath == "" ? "none" : ""); //b.disabled = (filepath == "" ? true : false);
}

var start_RecentList = new Array();
function showRecent() {
	var start_recent = document.getElementById("start_recent");
	if(start_recent == null) return; 
	s = "";
	start_RecentList = getCookiesList("rm3sLocalMedia");
	var mm = new RM3SMedia();
	for(var i = 0, n = start_RecentList.length; i < n; i++) {
		try { 
			mm.loadFromXML(start_RecentList[i]);
			if(mm.title != null) s += '<a href="#" onclick="start_openRecent(' + i + '); return false;"><img src="img/tag.gif" style="border:none; cursor:pointer; vertical-align:top;" />&nbsp;' + mm.title + '</a><br />';
		} catch(e) {
		}
	}
	start_recent.innerHTML = (s == "" ? "<i>No Recent</i>" : s);
}

function start_createLocal() {
	var start_createLocalFile = document.getElementById("start_createLocalFile");
	if(start_createLocalFile == null) return; 
	var s = start_createLocalFile.value;
	if(s == "") {
		alert("Please select a media file");
		return;
	}
	var mediaURL = "file://" + s.replace(/\\/ig, "/");
	start_create(mediaURL);	
}

function start_createURL() {
	var start_createURLText = document.getElementById("start_createURLText");
	if(start_createURLText == null) return; 
	var mediaURL = start_createURLText.value; 
	if(mediaURL == "") {
		alert("Please enter an URL for online media");
		return;
	}
	start_create(mediaURL);	
}

function start_load() {
/*	var start_loadFile = document.getElementById("start_loadFile");
	if(start_loadFile == null) return; 
	var s = start_loadFile.value;
	if(s == "") {
		alert("Please select a file to open");
		return;
	}*/
	try {
		var filename = auth_fileMng.openDialog("", "XML Files (*.xml)|*.xml", "Open Program");
		if(filename == null || filename == "") return;
		var xml = auth_fileMng.openFile(filename);
		if(xml == null) return;
		media.loadFromXML(xml);
		media_onload();
	} catch(e) {
		//alert("Open file is not supported or permission denied");
		media_onload();
		auth_import("authoringDiv");
	}
}

function start_openRecent(index) {
	if(index < 0 || index >= start_RecentList.length) return;
	media.loadFromXML(start_RecentList[index]);
  media_onload();
}

function start_create(mediaURL) {
	mediaId = Math.round(Math.random() * 10000000);
	media.id = mediaId;
	var m = mediaURL.match(/(?:\/)([^\/]+?)(?:\.[^\.]*)?$/);
	if(m == null || m.length < 1) media.title = mediaURL;
	else if(m.length > 1) media.title = m[1];
	else media.title = m[0];
  media.streamingURLs = [{publicURL: mediaURL, localURL: ""}];
  media_onload();
  //auth_editMedia('authoringDiv', 'player', media);
}

function hideStart() {
	toggle("startCreateRow");
	toggle("startLoadRow");
	toggle("playerRow");
	toggle("toolbarRow");
	toggle("menuRow");
}