// Davis Audio Visual, LLC PowerView
// (w) 2008 Mark Beazley
// (c) 2008 Davis Audio Visual, LLC

if (!document.getElementById)  { window.location = "badbrowser.htm"; } // Check for DOM compliance

var currentmenu = null;
var screenwidth = screen.availWidth;
var screenheight = screen.availHeight;

function menuon(menuid,actionid) {
	if (!document.getElementById) return null;
	menu = document.getElementById(menuid);
	action = document.getElementById(actionid);
	if (menu == null) return;
	// menu.style.left = action.offsetwidth + "px";
    menu.style.top = action.offsetTop + "px";
	menu.style.visibility = "visible";
	return menuid;
	}

function menuoff(menuid) {
	if (!document.getElementById) return null;
	if (menuid == null) return;
	menu = document.getElementById(menuid);
	if (menu == null) return;
	menu.style.visibility = "hidden";
	}
                
function classchanger(objid,newclass,lastid,oldclass,skip) {
    if (!document.getElementById) return null;
    if (lastid == objid) return lastid;
    document.getElementById(objid).className = newclass;
    if (lastid != skip) {
        document.getElementById(lastid).className = oldclass;
        }
    return objid;
    }
    
// This function performs all the actions to the movie

function movie_Control(dothis,value) {
    switch (dothis) {
        case 'play':
            document.cam_movie.Play();
            document.getElementById('playpausebutton').src = 'images/pause.png';
            movie_state = 'stop';
            break;
        case 'stop':
            document.cam_movie.Stop();
            document.getElementById('playpausebutton').src = 'images/play.png';
            movie_state = 'play';
            break;
        case 'next':
            if (next_slide < movie_totalslides + 1) {
                newtime = to_movieTime(slide_info[next_slide][1]);
                document.cam_movie.SetTime(newtime);
                document.cam_movie.Play();
                slide_Changer(next_slide);
                current_slide = next_slide;
                next_slide++;
                } 
            break;
        case 'prev':
            if (current_slide > 0) current_slide --;
            newtime = to_movieTime(slide_info[current_slide][1]);
            document.cam_movie.SetTime(newtime);
            document.cam_movie.Play();
            slide_Changer(current_slide);
            next_slide = current_slide+1;
            break;
        case 'jump':
            newtime = to_movieTime(slide_info[value][1]);
            document.cam_movie.SetTime(newtime);
            document.cam_movie.Play();
            slide_Changer(value);
            current_slide = value;
            next_slide = current_slide+1;
            break;
        case 'size':
            switch(value) {
                case 'small':
                    document.getElementById('slide').style.width = '533px';
                    document.getElementById('slide').style.height = '400px';
                    document.getElementById('slideshow').style.width = '533px';
                    document.getElementById('slideshow').style.height = '400px';
                    
                    document.getElementById('notes').style.width = '533px';
                    document.getElementById('notesshow').style.width = '533px';
                    document.getElementById('presentation').style.width = '533px';
                    document.getElementById('thumbs').style.height = '195px';
                    
                    document.getElementById('bodycontainer').style.width = '773px';
                    document.getElementById('maincontainer').style.width = '773px';
                    next_size = 'medium';
                    break;
                case 'medium':
                    document.getElementById('slide').style.width = '700px';
                    document.getElementById('slide').style.height = '525px';
                    document.getElementById('slideshow').style.width = '700px';
                    document.getElementById('slideshow').style.height = '525px';
                    
                    document.getElementById('notes').style.width = '700px';
                    document.getElementById('notesshow').style.width = '700px';
                    document.getElementById('presentation').style.width = '700px';
                    document.getElementById('thumbs').style.height = '320px';
                    
                    document.getElementById('bodycontainer').style.width = '940px';
                    document.getElementById('maincontainer').style.width = '940px';
                    next_size = 'full';
                    break;
                case 'full':
                    document.getElementById('slide').style.width = '1024px';
                    document.getElementById('slide').style.height = '768px';
                    document.getElementById('slideshow').style.width = '1024px';
                    document.getElementById('slideshow').style.height = '768px';
                    
                    document.getElementById('notes').style.width = '1024px';
                    document.getElementById('notesshow').style.width = '1024px';
                    document.getElementById('presentation').style.width = '1024px';
                    document.getElementById('thumbs').style.height = '563px';
                    
                    document.getElementById('bodycontainer').style.width = '1264px';
                    document.getElementById('maincontainer').style.width = '1264px';
                    next_size = 'small';
                    break;
                default:
                    next_size = 'small';   
            }    
        default:
    }
}   

// Helper Functions

function to_realTime(thetime) {
    var seconds = thetime / movie_timescale;
	var timeh = Math.floor(seconds/3600);
	var timemin = Math.floor ((seconds - (timeh * 3600))/60);
	var timesec = Math.floor (seconds % 60);
	if (timeh < 10) var displayh = "0" + timeh; else var displayh = timeh;
	if (timemin < 10) var displaym = "0" + timemin; else var displaym = timemin;
	if (timesec < 10) var displays = "0" + timesec; else var displays = timesec;
	real_time = displayh + ":" + displaym + ":" + displays;
    return real_time;
    }
    
function to_movieTime(thetime) {
    var seconds = thetime.substring(6,8);
    var minutes = thetime.substring(3,5);
    var hours = thetime.substring(0,2);
    var movseconds = seconds * movie_timescale;
    var movminutes = (minutes * 60) * movie_timescale;
    var movhours = (hours * 3600) * movie_timescale;
    var movie_time = (movseconds + movminutes + movhours);
    return movie_time;
    }
    
function slide_Changer(theslide) {
    document.getElementById('slideshow').src = "media/slides/" + slide_info[theslide][0] + ".png";
    document.getElementById('notesshow').innerHTML = slide_info[theslide][2];
    // cache the next slide
    document.getElementById('slidecache').src = "media/slides/" + slide_info[theslide+1][0] + ".png";
    }
    
// Functions to gather and set initial movie variables and properties and to initiate the whole shebang

function monitor_playback() {
    // update the playhead counter
    movie_playhead = document.cam_movie.GetTime();
    document.getElementById('playhead').innerHTML = to_realTime(movie_playhead);
    // check for a new slide
    next_time = to_movieTime(slide_info[next_slide][1]);
    if (movie_playhead >= next_time) {
        slide_Changer(next_slide);
        current_slide = next_slide;
        next_slide++;
        }  
    var movie_monitor=setTimeout("monitor_playback()", 1000);
    }

function show_movieInfo() {
    // set some global variables
    movie_duration = document.cam_movie.GetDuration();
    movie_timescale = document.cam_movie.GetTimeScale();
    movie_playhead = document.cam_movie.GetTime();
    // movie_totalslides = document.cam_movie.GetChapterCount();
    // update some on screen values
    document.getElementById('duration').innerHTML = "Duration " + to_realTime(movie_duration);
    // update first slide data 
    slide_Changer(current_slide);
    movie_info = 1;
    movie_ready = 1; 
    }
    
function show_Progress() {
    var percentLoaded = 0;
    var meterDisplay = 0;
    percentLoaded = parseInt((document.cam_movie.GetMaxTimeLoaded() / document.cam_movie.GetDuration()) * 100);
    meterDisplay = percentLoaded * 2;
    document.getElementById('meter_display').style.width = meterDisplay + "px";
    var movie_progress = setTimeout("show_Progress()", 5000);
    }

function begin_playback() {
    if (! movie_info) { show_movieInfo(); }
    document.getElementById('prev').style.visibility = "visible";
    document.getElementById('playpause').style.visibility = "visible";
    movie_ready = 1;
    clearTimeout(movie_progress);
    movie_Control('play',0);
    monitor_playback();
    }
    
function quicktime_canplay() {
    if (! movie_info) show_movieInfo();
    }
        
function quicktime_play() {
    if (! movie_info) show_movieInfo();
    movie_Control('play',0);
    movie_ready = 1;
    if (! movie_monitor) monitor_playback();
    }
    
function quicktime_stop() {
    movie_Control('stop',0);
    if (! movie_monitor) monitor_playback();
    }
    
function show_thumbs() {
    if (! movie_info) show_movieInfo();
    show_Progress();
    document.getElementById('thumbnails').style.display = "block";
    document.getElementById('next').style.visibility = "visible";
    document.getElementById('loadstatus').style.display = "none";
    document.getElementById('meter_display').style.display = "none";
    begin_playback();
    movie_loaded = 1;
    }
    
function show_Error() {
    document.getElementById('duration').innerHTML = "QuickTime has had an Error";
    }
    
// functions to begin DOM listening functions

function qtReady() {
    myListener('qt_progress', 'cam_movie', 'cam_movie_embed', show_Progress);
    myListener('qt_begin', 'cam_movie', 'cam_movie_embed', qt_isReady);
    myListener('qt_loadedmetadata', 'cam_movie', 'cam_movie_embed', show_movieInfo);
    myListener('qt_canplay', 'cam_movie', 'cam_movie_embed', quicktime_canplay);
    myListener('qt_canplaythrough', 'cam_movie', 'cam_movie_embed', begin_playback);
    myListener('qt_play', 'cam_movie', 'cam_movie_embed', quicktime_play);
    myListener('qt_pause', 'cam_movie', 'cam_movie_embed', quicktime_stop);
    myListener('qt_load', 'cam_movie', 'cam_movie_embed', show_thumbs);
    myListener('qt_error', 'cam_movie', 'cam_movie_embed', show_Error);
    show_Progress();
    }

function qtDelay() {
    var movie_delay=setTimeout("qtReady()", 5000);
    }

function qt_isReady() {
    movie_ready = 1;
    show_Progress();
    }

// These two functions add DOM listening functions to the quicktime movie
   
function myListener(eventName, objID, embedID, listenerFcn) {
    var obj = document.getElementById(objID);
    if ( ! obj ) obj = document.getElementById(embedID);
    if ( obj ) myAddListener(obj, eventName, listenerFcn, false);
    }
    
function myAddListener(obj, evt, handler, captures) {
    if (document.addEventListener)
        obj.addEventListener(evt, handler, captures);
    else
        // IE
        obj.attachEvent('on' + evt, handler);
    }
        
