// JavaScript Document
// Browser detection Section
// =================================================================================
// convert all characters to lowercase to simplify testing
var agt=navigator.userAgent.toLowerCase();

// *** BROWSER VERSION ***
// Note: On IE5, these return 4, so use is_ie5up to detect IE5.
var is_major = parseInt(navigator.appVersion);
var is_minor = parseFloat(navigator.appVersion);

 
var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
                && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
                && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
var is_nav2 = (is_nav && (is_major == 2));
var is_nav3 = (is_nav && (is_major == 3));
var is_nav4 = (is_nav && (is_major == 4));
var is_nav4up = (is_nav && (is_major >= 4));
var is_navonly      = (is_nav && ((agt.indexOf(";nav") != -1) ||
                       (agt.indexOf("; nav") != -1)) );
var is_nav6 = (is_nav && (is_major == 5));
var is_nav6up = (is_nav && (is_major >= 5));
var is_gecko = (agt.indexOf('gecko') != -1);
//test for FF3 or later
var is_FF3orLater = (is_nav && (navigator.oscpu && document.getElementsByClassName));

var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
var is_ie3    = (is_ie && (is_major < 4));
var is_ie4    = (is_ie && (is_major == 4) && (agt.indexOf("msie 5")==-1) );
var is_ie4up  = (is_ie && (is_major >= 4));
var is_ie5    = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
var is_ie5_5  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.5") !=-1));
var is_ie5up  = (is_ie && !is_ie3 && !is_ie4);
var is_ie5_5up =(is_ie && !is_ie3 && !is_ie4 && !is_ie5);

// Check for existence of GeckoActiveX object
// MGM June 9, 2004: Add NS7.1 support
// KGA June 30: added test for existence of window.opener to
//     prevent errors when this is called by a parent window
var hasGeckoActiveX = false;
// LBG March 14 2008 check for new WMP Firefox plugin (as per Alt Site update MGM Feb 1, 2008)
var hasWMPFirefoxPlugin=false;

if ((navigator.plugins) && (navigator.plugins.length))
{
	for (x=0; x < navigator.plugins.length; x++)
	{
		if (window.opener)
		// execute the test on window.opener... if you are in a child window
		{
			if ((navigator.plugins[x].name.indexOf('ActiveX') != -1) && (window.opener.window.GeckoActiveXObject))
			{
				hasGeckoActiveX=true;
				break;
			}
		} else {
			// or on the object directly if you are in a parent window
			if ((navigator.plugins[x].name.indexOf('ActiveX') != -1) && (window.GeckoActiveXObject))
			{
				hasGeckoActiveX=true;
				break;
			}
		}
		// LBG 14 March 2008 Check for new Windows Media Player Firefox Plugin (as per MGM Alt Media update 30 Jan 08)
		if (navigator.plugins[x].name.indexOf("Windows Media Player Firefox Plugin") >= 0 && navigator.plugins[x].name.indexOf("Microsoft") >= 0 ) {
			hasGeckoActiveX=true;
			hasWMPFirefoxPlugin=true;
			break;
		}
			
	}
}

//alert('hasGeckoActiveX = ' + hasGeckoActiveX);
// end MGM June 9, 2004

// End Browser detection Section
// =================================================================================
// mmate Sept 11, 2004
//
// This section checks to see if Windows Media live/OD slide sync is possible.  Since WM live/OD
// slide sync is only possible if ActiveX or GeckoActiveX is enabled, it makes sense to check
// for these technologies, rather than checking for individual browsers.
//
// canwmliveslidesync and canwmodslidesync is set to false by default
//
var canwmliveslidesync = false;
var canwmodslidesync = false;
var canrmodslidesync = true;
if ( (window.ActiveXObject && navigator.userAgent.indexOf('Windows') != -1) || (hasGeckoActiveX) )
{
   	 canwmliveslidesync = true;
	 canwmodslidesync = true;
	 // KGA Jan 31, 2005- the test being performed here really has nothing to do
	 // with Real...real should be true by default if and until we get a 
	 // compatibility test
	 // canrmodslidesync = true;
}
// =================================================================================
// mmate Sept 11, 2004
//
// These variables indicate whether the current event has live slide sync.  They are initialized
// to false by default, and are set in webcastini.phtml
//
var haswmliveslidesync = false;
var hasrmliveslidesync = false;
var wmliveslidesyncswitch = 0;
var rmliveslidesyncswitch = 0;

// KGA Nov 17 variable to indicate whether the sync counter table has been created
var synctable = 0;
var chartstateorg = 0; // original chart state; set in auditorium.phtml

// LBG 14 March 2008 Variables to indicate whether auditorium is video only and if zoomed (as per MGM Alt Site update 27 Nov 2007)
var vidonly=0;
var vidzoom=0;
var vidonlyaudwidth='397';
var vidonlyaudheight='575';

// =================================================================================
// Workaround for Navigator 4 resize bug.
// With Navigator 4, resizing a browser window causes dynamically created
// content to disappear.  Reloading the page is the workaround.
function reloadNavigator()
{
	if (is_nav4) {
		window.location.href = window.location.href;
	}
}
// End Navigator 4 resize bug section
// =================================================================================
// =================================================================================
// globalClass
// This is the base class of many of the webcasts classes
function globalclass ( ) {

	this.datadir='./';							// last end slash is required
	this.commondir='/investor/sharedv2/images/';			// last end slash is required
	this.digitimage='digit';
	this.totaldigitimage='totaldigit';
	this.digitname='count';
	this.digitextension='gif';
}
// =================================================================================
// =================================================================================
// chartclass
function chartclass () {
	this.titlechart= new Array ();
	this.timechart= new Array ();
	this.show = new Array ();
	this.chart = new Array ();
}
// =================================================================================

var delayid=null;
var n1;
var currentslide=1;
var currentslideshow=1;
var readytostartpoll=0;

function slideincrement(agendaobj,doseek,player) {
	    n1 = currentslide+1;
		enablebutton(n1,agendaobj);
    	if ( (n1 <= agendaobj.totalslides) && (parent.frames.controls.document.navigate.chartList.options[n1-1]) ) { //>
        	        currentslide=n1;
					parent.frames.controls.document.navigate.chartList.options[n1-1].selected=true;
					if ( (doseek !=0) && (parent.syncswitch !=0) ) {
						if (player=='wm') {
							parent.netshow.wmseekpos(parent.netshow.document.mmplayer1,agendaobj.timechart[n1-1]);
						}
						else if (player=='real') {
							parent.netshow.wmseekpos(parent.netshow.document.rplayer1,agendaobj.timechart[n1-1]);
						}
					}			
					parent.currenttimecode=parent.currenttimecode + 1;
					goslide(n1,agendaobj);		
    	    }
        	else {
	        }
	}	/* End slideincrement */
	
// =================================================================================	

	function slideindexjump(slideindex,agendaobj,doseek,player) {

	if ((slideindex > 0) && (slideindex <= agendaobj.totalslides))  {
		currentslide = slideindex;
		if ( (is_nav) && (parent.hasGeckoActiveX == false) ) {
			enablebutton(currentslide,agendaobj);
		}
		else {
			enablebutton(currentslide,agendaobj);
		}
 	   if (agendaobj.goslidemethod ==1)	{
			parent.slide.location.href = agendaobj.presdir+agendaobj.foilname+'.'+agendaobj.foilextension+'?'+slideindex;
		}
		else {
			parent.slide.location.href = agendaobj.presdir+agendaobj.foilname+agendaobj.slideindex+'.'+agendaobj.foilextension;
		}
		parent.frames.controls.document.navigate.chartList.options[slideindex-1].selected=true;
		if ( (doseek !=0) && (parent.syncswitch !=0) ) {
			if (player=='wm') {
				parent.netshow.wmseekpos(parent.netshow.document.mmplayer1,agendaobj.timechart[slideindex-1]);
			}
			else if (player=='real') {
				parent.netshow.wmseekpos(parent.netshow.document.rplayer1,agendaobj.timechart[slideindex-1]);
			}
		}
//		parent.currenttimecode=slideindex-1;		// don't need this. set in pollwmplayer. incorrect value set here anyway.
		if ( (is_nav) && (parent.hasGeckoActiveX == false) ) {
			currcount(currentslide,agendaobj);
		}
		else {
			currcount(currentslide,agendaobj);
		}
	  }
	}	/* End slideindexjump */
	
// =================================================================================	

	function slidedecrement(agendaobj,doseek,player) {
 	   n1 = currentslide-1;
		enablebutton(n1,agendaobj)
		if ( (n1 >= 1)&& (parent.frames.controls.document.navigate.chartList.options[n1-1]) ) {
  	              currentslide=n1;
					parent.frames.controls.document.navigate.chartList.options[n1-1].selected=true
					if ( (doseek !=0) && (parent.syncswitch !=0) ) {
						if (player=='wm') {
							parent.netshow.wmseekpos(parent.netshow.document.mmplayer1,agendaobj.timechart[n1-1]);
						}
						else if (player=='real') {
							parent.netshow.wmseekpos(parent.netshow.document.rplayer1,agendaobj.timechart[n1-1]);
						}
					}
					parent.currenttimecode=parent.currenttimecode-1;
					goslide(n1,agendaobj);
 	       }
 	       else {
 	   }
	}	/* End slidedecrement */
	
// =================================================================================	

	function enablebutton(x,agendaobj) {
		if (x<=0) x=1;
		if (x>=agendaobj.totalslides) x=agendaobj.totalslides
		if (parent.controls.document.previous && parent.controls.document.next)
		{
			image1=parent.controls.document.previous
			image2=parent.controls.document.next
			if (x==1) image1.src=agendaobj.commondir+"arrow_blank.gif";
			else image1.src=agendaobj.commondir+"arrow_left.gif"
			if (x==agendaobj.totalslides) image2.src=agendaobj.commondir+"arrow_blank.gif";
			else image2.src=agendaobj.commondir+"arrow_right.gif"
		}

	}	/* End enablebutton */
	
// =================================================================================

	function erase() {
    	 window.status="";
	}	/* End erase */
	
// =================================================================================	
     
	function prevstat(agendaobj) {
    	    if (currentslide == 1) {
        	        window.status ="FIRST Slide in this Show";
	        }
    	    else {
        	        window.status ="Go to PREVIOUS Slide";
	        } 
	}	/* End prevstat */
	
// =================================================================================

	function nextstat(agendaobj) {
    	    if (currentslide == agendaobj.totalslides) {
        	        window.status ="LAST Slide in this Show";
	        }
    	    else {
        	        window.status ="Go to NEXT Slide";
	        } 
	}	/* End nextstat */
	
// =================================================================================	

	function goslide(x,agendaobj) {

	  enablebutton(x,agendaobj)
	  if (agendaobj.goslidemethod==1) { // currently goslidemethod is always 1.  If the old goslidemethod 0 is needed, it is available.
  		parent.slide.location.href = agendaobj.presdir+agendaobj.foilname+'.'+agendaobj.foilextension+'?'+x;
	  } 
	  else  {
  		parent.slide.location.href = agendaobj.presdir+agendaobj.foilname+x+'.'+agendaobj.foilextension;  // old method to static html slide pages
	 	}
	  currcount(x,agendaobj);
	}	/* End goslide */
	
// =================================================================================	

	function currcount(x,agendaobj) {
		if (x<=0) x=1;
		if (x>=agendaobj.totalslides) x=agendaobj.totalslides;
		if (x<10) {
			parent.controls.document.images[agendaobj.digitimage+'1'].src=agendaobj.commondir+agendaobj.digitname+x+'.'+agendaobj.digitextension;
			parent.controls.document.images[agendaobj.digitimage+'2'].src=agendaobj.commondir+agendaobj.digitname+'space.'+agendaobj.digitextension;
		}
		else if (x<100) {
			digit1val=x%10;
			digit2val=(x-digit1val)/10;
			parent.controls.document.images[agendaobj.digitimage+'1'].src=agendaobj.commondir+agendaobj.digitname+digit1val+'.'+agendaobj.digitextension;
			parent.controls.document.images[agendaobj.digitimage+'2'].src=agendaobj.commondir+agendaobj.digitname+digit2val+'.'+agendaobj.digitextension;
		}
		else {
			digit1val=x%10;
			digit2val=((x%100)-digit1val)/10;
			digit3val=(x-(x%100))/100;
			parent.controls.document.images[agendaobj.digitimage+'1'].src=agendaobj.commondir+agendaobj.digitname+digit1val+'.'+agendaobj.digitextension;
			parent.controls.document.images[agendaobj.digitimage+'2'].src=agendaobj.commondir+agendaobj.digitname+digit2val+'.'+agendaobj.digitextension;
			parent.controls.document.images[agendaobj.digitimage+'3'].src=agendaobj.commondir+agendaobj.digitname+digit3val+'.'+agendaobj.digitextension;
		}
	}	/* End currcount */
	
// =================================================================================	

	function displaytotal(agendaobj) {

		x=agendaobj.totalslides;
		if (x<10) {
			parent.controls.document.images[agendaobj.totaldigitimage+'1'].src=agendaobj.commondir+agendaobj.digitname+'space.'+agendaobj.digitextension;
			parent.controls.document.images[agendaobj.totaldigitimage+'2'].src=agendaobj.commondir+agendaobj.digitname+x+'.'+agendaobj.digitextension;
			parent.controls.document.images[agendaobj.totaldigitimage+'3'].src=agendaobj.commondir+agendaobj.digitname+'space.'+agendaobj.digitextension;
		}
		else if (x<100) {
			digit1val=x%10;
			digit2val=(x-digit1val)/10;
			parent.controls.document.images[agendaobj.totaldigitimage+'1'].src=agendaobj.commondir+agendaobj.digitname+digit1val+'.'+agendaobj.digitextension;
			parent.controls.document.images[agendaobj.totaldigitimage+'2'].src=agendaobj.commondir+agendaobj.digitname+digit2val+'.'+agendaobj.digitextension;
			parent.controls.document.images[agendaobj.totaldigitimage+'3'].src=agendaobj.commondir+agendaobj.digitname+'space.'+agendaobj.digitextension;
		}
		else {
			digit1val=x%10;
			digit2val=((x%100)-digit1val)/10;
			digit3val=(x-(x%100))/100;
			parent.controls.document.images[agendaobj.totaldigitimage+'1'].src=agendaobj.commondir+agendaobj.digitname+digit1val+'.'+agendaobj.digitextension;
			parent.controls.document.images[agendaobj.totaldigitimage+'2'].src=agendaobj.commondir+agendaobj.digitname+digit2val+'.'+agendaobj.digitextension;
			parent.controls.document.images[agendaobj.totaldigitimage+'3'].src=agendaobj.commondir+agendaobj.digitname+digit3val+'.'+agendaobj.digitextension;
		}
	}	/* End displaytotal */
	
// =================================================================================	

	function iconslide(y,agendaobj) {
    	    var S1;
        	S1 = y;
	        currentslide=S1;
    	    goslide(S1,agendaobj);
	}	/* End iconslide */
	
// =================================================================================	

	function left_yes() {
		left_load = true;
	}	/* End left_yes */
	
// =================================================================================	

	function openurl(form,agendaobj,doseek,player)
	{	
		var myindex=form.chartList.selectedIndex
		var playing=0;
		currentslide = myindex+1;	
			if (player=='wm') {
				var s = parent.netshow.checkplaystate(parent.netshow.document.mmplayer1);
				// MGM Nov 09, 2004.  Added playstate value and check for WM9+ object
				if ( ((s==2)&& (parent.netshow.numversion < 9)) || ((s==3) && (parent.netshow.numversion >= 9)) ) {
					playing=1;
				}
			}
			else if (player=='real') {
				var s = parent.netshow.checkplaystate(parent.netshow.document.rplayer1);
				if ((s==3)||(s==2)) {
					playing=1;
				}
			} 
	

		enablebutton(myindex+1,agendaobj);
		if ( (doseek !=0) && (parent.syncswitch !=0) && (playing==1) ) {
			// KGA Deal with negative time values (I.E.: Move the chart,
			// but don't reposition the stream)
			if (agendaobj.timechart[myindex] < 0)
			{
				goslide(myindex+1,agendaobj);
			} else {
				if (player=='wm') {
					parent.netshow.wmseekpos(parent.netshow.document.mmplayer1,agendaobj.timechart[myindex]);
				}
				else if (player=='real') {
					parent.netshow.wmseekpos(parent.netshow.document.rplayer1,agendaobj.timechart[myindex]);
				}
			}
		}
		else if ((parent.syncswitch == 1) && (playing !=1)) {
			goslide(myindex+1,agendaobj);
		}
		
		else {
			goslide(myindex+1,agendaobj);
		}
	}	/* End openurl */ 	
	
// =================================================================================	
	
	function rewritechartlist(targetform,selected,agendaobj,doseek,player)
	{
		box = targetform.chartList;
		while (box.options.length) box.options[0] = null;
		for (i=0;i<agendaobj.totalslides;i++) {
			box.options.length = i+1;
      		box.options[i] = new Option(agendaobj.titlechart[i]);
			if (i==0) box.options[i].selected=true;
		}
		openurl(targetform,agendaobj,doseek,player);
		displaytotal(agendaobj);
		currentslideshow=selected+1;

	
	}

// =================================================================================
// slideclass
function slideshowclass () {
	
	if (is_nav) { 					// jsobject.call only works with Netscape 3.x and above
		globalclass.call(this);
	}
	this.totalslides=0;
	this.speakername='';
	this.goslidemethod=1;
	this.presdir='';
	this.foilname='';
	this.foilextension='';
	this.titlechart = new Array ();
	this.timechart = new Array ();
	// vars below are for dynamic slide.phtml?x generated pages.						
	this.chartimagename='';
	this.chartimagetype='';
	this.chartbgcolor='';
	this.charttablewidth='';
	this.chartwidth=0;
	this.chartheight=0;
	this.chartalign='';
	this.chartvalign='';
	this.chartborder=0;
	
}	/* End slideshowclass */


slideshowclass.prototype = new globalclass();
slideshowclass.prototype.currentshow=1;
slideshowclass.prototype.currentslide=1;

// =================================================================================
// buildtimecodes builds the global mastertimecodes
var mastertimecodes = new chartclass ();
var counttime=0;
var teststring='';

function buildtimecodes () {
	for (i=0;parent.agenda[i] != null; i++) {
		for (j=0;parent.agenda[i].timechart[j] != null; j++) {
			mastertimecodes.timechart[counttime]=parent.agenda[i].timechart[j];
			mastertimecodes.show[counttime]=i;
			mastertimecodes.chart[counttime]=j+1;
			counttime++;		
		}		
	}
}

// =================================================================================
// syncswitch turns av/slide sync on and off.  default is on.
var syncswitch=0;

function changesyc(syncobject){
	// KGA alter logic here to simply change the value
	// of syncswitch; leave polling active

	if (syncobject.sync.checked==true) {
		if (parent.syncswitch!=1) {
			parent.syncswitch=1;
			// parent.netshow.startpoll();
			parent.resyncchartondemand(parent.synchedspeaker, parent.synchedchart);
		}
	}
	else {
		if (parent.syncswitch !=0) {
			parent.syncswitch=0;
//			if (parent.delayid) {
//				parent.netshow.clearInterval(parent.delayid);
//			}
		}
	}
} /* end changesyc */
// =================================================================================
// mmate Sept 11, 2004
// onchange on/off behaviour for live sync checkbox
function changelivesyc(syncobject){
	if ((parent.media == "wm"))
	{
		if (syncobject.livesync.checked==true) {
			if (parent.wmliveslidesyncswitch != 1) {
				parent.wmliveslidesyncswitch = 1;
				parent.resyncchart(parent.synchedspeaker, parent.synchedchart);
			}
		}
		else {
			if (parent.wmliveslidesyncswitch != 0) {
				parent.wmliveslidesyncswitch = 0;
			}
		}
		// LBG 14 March 2008 (as per MGM Alt Site update 1 Feb. 2008)
		parent.netshow.wmliveslidesyncswitch = parent.wmliveslidesyncswitch;
	} else if (parent.media == "real")
	{
		if (syncobject.livesync.checked==true) {
			if (parent.rmliveslidesyncswitch != 1) {
				parent.rmliveslidesyncswitch = 1;
				parent.resyncchart(parent.synchedspeaker, parent.synchedchart);
			}
		}
		else {
			if (parent.rmliveslidesyncswitch != 0) {
				parent.rmliveslidesyncswitch = 0;
			}
		}
	}

} /* end changelivesyc */
// =================================================================================
// KGA October 15, 2004
// function to resynchronize displayed charts with "stream synchronized" chart position
//

function resyncchart(syncspeakernum, syncchartnum)
{
	if ( (syncchartnum != parent.currentslide) || (syncspeakernum != parent.currentslideshow) ) {
		if (syncspeakernum != parent.currentslideshow)  {
			parent.currentslideshow = syncspeakernum;
			parent.frames.controls.rewritechartlist(parent.frames.controls.document.navigate,parent.currentslideshow-1,parent.agenda[parent.currentslideshow-1],0,parent.media);
			if (parent.frames.controls.document.speakerform) {
				parent.frames.controls.document.speakerform.speaker.options[parent.currentslideshow -1].selected=true;
			}
			// We are moving to a new speaker- update the chart "totals"
			parent.displaytotal(parent.agenda[parent.currentslideshow - 1]);
		}

		parent.currentslide=syncchartnum;

		parent.slideindexjump(parent.currentslide,parent.agenda[parent.currentslideshow-1],0,parent.media);
	}
}

function resyncchartondemand(syncspeakernum, syncchartnum)
{
	// on-demand resync needs an extra slideindexjump for the condition where the syncspeakernum *matches* currentslideshow...
	// this syncs up the displayed chart to the navigation interface when a manual selection is made

	if ( syncspeakernum != parent.currentslideshow ) {
		resyncchart(syncspeakernum, syncchartnum);
	}
	else {
			parent.slideindexjump(syncchartnum,parent.agenda[syncspeakernum - 1],0,parent.media);
	}


}

//==========================================================================
// A function to check the current state of several properties and set the
// synchronization booleans appropriately
function checksync() 
{
//alert("in checksync.  cansync= " + parent.cansync + "; originalsync= " + parent.originalsync + "; chartstate= "+ parent.chartstate);
		parent.cansync = parent.originalsync;
		if (parent.cansync)
		{
		// turn off ondemand sync switch
			// LGB 14 March 2008 added last if condition (as per MGM Alt Site update Feb 2008)
			if ((parent.chartstate !=3) || (parent.media=='slidesonly') || (parent.media==null) || (parent.prestype==null) || (parent.prestype=='slidesonly') || (parent.vidonly==1) )  { // ensure sync can only be enabled during the replay
				parent.cansync=0;
			}
			// mmate Sept 11, 2004
			// Turn off windows media ondemand sync for browsers that don't support activeX or 
			// GeckoActiveX
			if ( ( (parent.canwmodslidesync==false) && (parent.media=='wm') ) || ( (parent.canrmodslidesync==false) && (parent.media=='real') ) )	{
			   parent.cansync=0;
			}
			// end Sept 11, 2004 update
		}
		if (parent.cansync) {
			parent.syncswitch=1;
		}
		else {
			parent.syncswitch=0;
		}

}



// KGA August 2004
// Deprecated code moved to ../deprecate/utility.js
//