From: <Saved by Windows Internet Explorer 7>
Subject: The Explore Template
Date: Thu, 27 Aug 2009 08:47:21 +0200
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01CA26F2.FDAF36A0"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01CA26F2.FDAF36A0
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://demo.mohive.net/course/e1967f8e-1da5-4b7f-889b-02a96cb42de1/main.aspx?courseId={6d4369fa-a253-4731-8307-798779543695}&menuId=e1967f8e-1da5-4b7f-889b-02a96cb42de1&gotoExercise=&APIflag=&reviewId=&SCORMversion=&aicc_url=&aicc_sid=

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>The Explore Template</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3Dutf-8">
<SCRIPT language=3DJavaScript type=3Dtext/javascript>

			function debugWindow( params )
			{
				   =20
				var theNewWin =3D window.open( "../debugInfo.aspx?" + params, =
"DebugInfo",=20
					"height=3D340, width=3D370, top=3D0, left=3D0, toolbar=3Dno, =
status=3Dno, " +=20
					"scrollbars=3Dauto, location=3Dno, menubar=3Dno, directories=3Dno, =
resizable=3Dyes" );
						=09
				theNewWin.focus();
			}

			function closeWindow(){window.close();}

			function openUrlWin( Url, width, height, windowPos )
			{
				var x =3D 0, y =3D 0, windowHeight =3D 0, windowWidth =3D 0; // =
default values	=09
			=09
				/*Internet Explorer*/
				if (document.all)=20
				{	=09
					y =3D window.screenTop;
					x =3D window.screenLeft;
				}
				else /*Firefox*/=20
				{
					x =3D window.screenX;
					y =3D window.screenY;	=09
				}
					=20
			=09
				windowWidth    =3D f_clientWidth();
				windowHeight   =3D f_clientHeight();	=09
				var windowLeft =3D 0;
				var windowTop  =3D 0;	=09

				if( height =3D=3D null || width =3D=3D null )
				{
					window.open( Url );	=09
				=09
					return;
				}
			=09
				switch(windowPos)
				{
					case "LT":
						windowLeft =3D x;
						windowTop  =3D y;
					break;
				=09
					case "RT":
						windowLeft =3D x + ( windowWidth - width ) + 12;
						windowTop  =3D y;
					break;
				=09
					case "LB":
						windowLeft =3D x;
						windowTop  =3D y + ( windowHeight - height ) - 30;
					break;
				=09
					case "RB":
						windowLeft =3D x + ( windowWidth - width ) + 12;
						windowTop  =3D y + ( windowHeight - height )- 30;
					break;
					=09
					case "CE":
						windowLeft =3D x + ((windowWidth / 2) - (width / 2));
						windowTop  =3D y + ((windowHeight / 2) - (height / 2));
					break;
				}
						=09
				var theNewWin =3D window.open( Url, "PopupWinELPS", "left=3D" + =
windowLeft +=20
					", top=3D" + windowTop + ", height=3D" + height + ", width=3D" + =09
					width + ", toolbar=3Dno, status=3Dno, scrollbars=3Dno, =
location=3Dno, " +=20
					"menubar=3Dno, directories=3Dno, resizable=3Dno" );
			=09
				theNewWin.focus();
			}=09
		=09
			function f_filterResults(n_win, n_docel, n_body)=20
			{
				var n_result =3D n_win ? n_win : 0;
				if (n_docel && (!n_result || (n_result > n_docel)))
					n_result =3D n_docel;
				return n_body && (!n_result || (n_result > n_body)) ? n_body : =
n_result;
			}

			function f_clientWidth()
			{
				return f_filterResults (
					window.innerWidth ? window.innerWidth : 0,
					document.documentElement ? document.documentElement.clientWidth : =
0,
					document.body ? document.body.clientWidth : 0
				);
			}

			function f_clientHeight()
			{
				return f_filterResults (
					window.innerHeight ? window.innerHeight : 0,
					document.documentElement ? document.documentElement.clientHeight : =
0,
					document.body ? document.body.clientHeight : 0
				);
			}=09

			function getGotoExercise()
			{
				var gotoExercise =3D '';
			=09
				if(gotoExercise)
					return gotoExercise;
				=09
				// check querystring for gotoexercise
				if(location.search)
				{
					var searchArray =3D location.search.replace('?', '').split('&');
				=09
					for(var i=3D0; i<searchArray.length; i++)
					{				=09
						var nameValue =3D searchArray[i].split('=3D');				=09
						if(nameValue[0] =3D=3D 'gotoExercise' && nameValue.length > 1)
						{
							gotoExercise =3D nameValue[1];
							break;
						}
					}
				}
			=09
				return gotoExercise;
			}
		=09
    </SCRIPT>
<!-- Required for tracking and logging -->
<SCRIPT language=3DJavaScript =
src=3D"http://demo.mohive.net/SCORM/Log.js"=20
type=3Dtext/javascript></SCRIPT>
<!-- Reqired for SCORM support -->
<SCRIPT language=3DJavaScript =
src=3D"http://demo.mohive.net/SCORM/SCORMLogg.js"=20
type=3Dtext/javascript></SCRIPT>
<!-- Reqired for AICC support -->
<SCRIPT language=3DJavaScript =
src=3D"http://demo.mohive.net/SCORM/AICCLogg.js"=20
type=3Dtext/javascript></SCRIPT>
<!-- Reqired for SCORM support -->
<SCRIPT language=3DJavaScript type=3Dtext/javascript>
			//<!--

			// Initialize variables
			UserID				=3D "";
			UserName			=3D "";
			loggingEnabled 			=3D false;
			APIflag 			=3D "";
			forceSCORMversion 		=3D "";


			// Initialize the SCORM API
			API =3D findAPI( forceSCORMversion );

			if ( API !=3D null)
			{
				// A SCORM compliant LMS was found=09
				// Initialize the SCORM session
				var initCompleted =3D initialize();	=09

				=09
			=09
				var scormVersion =3D LMS.SCORMversion;
			=09
				if( scormVersion =3D=3D "1.2" )
				{
					// Get the userID from the LMS
					UserID 		=3D API.LMSGetValue( "cmi.core.student_id" );
					UserName 	=3D API.LMSGetValue( "cmi.core.student_name" );
				}
				else if( scormVersion =3D=3D "2004" )
				{
					// Get the userID from the LMS
					UserID 		=3D API.GetValue( "cmi.learner_id" );
					UserName 	=3D API.GetValue( "cmi.learner_name" );
				}

				loggingEnabled =3D true;
			}
			else if(AICCApi)
			{
				initialize();
			=09
				UserID =3D AICCApi.StudentId;
				UserName =3D AICCApi.StudentName;
			}
			else
			{
				// A SCORM compliant LMS was not found
				UserID		=3D "";
				UserName 	=3D "";
				loggingEnabled 	=3D false;


				=09
			}


			function unloadHandler()
			{
			finish();
			}


			function getMovie( movieName )
			{
			// IE and Netscape refer to the movie object differently.
			// This function returns the appropriate syntax depending on the =
browser.
			if (navigator.appName.indexOf ("Microsoft") !=3D-1)=20
			{
				return window[movieName];
			}=20
			else=20
			{
				return document[movieName];
			}
			}

			function getSuspendData()
			{
				// Retrieve lesson_location and suspendData and return data to =
content object
				var eLPSMovie =3D getMovie( "Main" );

				if( API !=3D null)
				{
				    var lesson_location;
					var suspendData;
					=09
					if( LMS.SCORMversion =3D=3D "1.2" )
					{
						lesson_location =3D API.LMSGetValue( "cmi.core.lesson_location" );
						suspendData	    =3D API.LMSGetValue( "cmi.suspend_data" );
					}
					else if( LMS.SCORMversion =3D=3D "2004" )
					{
						lesson_location =3D API.GetValue( "cmi.location" );
						suspendData     =3D API.GetValue( "cmi.suspend_data" );
					}
				=09
					eLPSMovie.SetVariable( "__suspend_data", suspendData );
					eLPSMovie.SetVariable( "__lesson_location", lesson_location );
					eLPSMovie.SetVariable( "__getSuspendDataLoaded", "true" );
				=09
				}
				else
				{
					// Do nothing at all
					eLPSMovie.SetVariable( "__getSuspendDataLoaded", "true" );
				}
			}

		//-->
    </SCRIPT>
<LINK href=3D"http://demo.mohive.net/course/main.css" type=3Dtext/css=20
rel=3Dstylesheet>
<SCRIPT src=3D"http://demo.mohive.net/course/swfobject.js"=20
type=3Dtext/javascript></SCRIPT>

<STYLE type=3Dtext/css>#centerLayoutElement {
	MARGIN: -300px 0px 0px -400px; WIDTH: 800px; HEIGHT: 600px
}
</STYLE>

<META content=3D"MSHTML 6.00.6000.16890" name=3DGENERATOR></HEAD>
<BODY bgColor=3D#939598 onunload=3DunloadHandler();>
<DIV id=3DcenterLayoutElement>
<DIV id=3DflashContent></DIV></DIV>
<SCRIPT language=3Djavascript type=3Dtext/javascript>
	  =20
			var data =3D '';

			var Url =3D "../Preload.swf?courseId=3D1329&gotoExercise=3D" + =
getGotoExercise() +=20
				"&userId=3D" + UserID + "&userName=3D" + UserName + "&APIflag=3D" +=20
				=
"&projector=3Dfalse&cacheCtrl=3D2&menuId=3De1967f8e-1da5-4b7f-889b-02a96c=
b42de1";
				=09
			var so =3D new SWFObject(Url, "Main", "800", "600",=20
				"6", "#FFFFFF");

			so.addParam("scale", "noscale");
			so.addParam("quality", "high");
			=09
			so.write("flashContent");				=09
	=09
    </SCRIPT>
</BODY></HTML>

------=_NextPart_000_0000_01CA26F2.FDAF36A0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://demo.mohive.net/course/main.css

BODY {
	OVERFLOW: hidden
}
#centerLayoutElement {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LEFT: 50%; PADDING-BOTTOM: 0px; =
OVERFLOW: auto; PADDING-TOP: 0px; POSITION: absolute; TOP: 50%; =
TEXT-ALIGN: left
}

------=_NextPart_000_0000_01CA26F2.FDAF36A0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://demo.mohive.net/SCORM/Log.js

/*
   IMPORTANT: MAC & FIREFOX REQUIRES THIS FILE TO BE IN UTF-8 FORMAT
*/

/***************************                               =
***********************************/
/***************************  INTERNAL FUNCTIONS AND DATA  =
***********************************/
/***************************                               =
***********************************/


/*
	Logs an interaction
*/
function addInteraction(id, type, description, correct, response, =
result, latency)
{
	var cnt =3D LMS.interactionCnt;
	var interaction =3D "cmi.interactions." + cnt;
	var weight =3D 1; // We normally don't weight our exercises
=09
	if( API )
	{	  =20
		var rc =3D "";
	=09
		if( LMS.SCORMversion =3D=3D "1.2" )
		{=20
			var now =3D SCORMtime( new Date() );

			rc =3D API.LMSSetValue( interaction + ".id",                          =
id       );
			checkResult( rc );

			rc =3D API.LMSSetValue( interaction + ".time",                        =
now      );
			checkResult( rc );

			rc =3D API.LMSSetValue( interaction + ".type",                        =
type     );
			checkResult( rc );

			// fill-in response field is limited to 255 characters
			if(type =3D=3D "fill-in") correct =3D correct.slice(0,254);

			rc =3D API.LMSSetValue( interaction + ".correct_responses.0.pattern", =
correct  );
			checkResult( rc );

			rc =3D API.LMSSetValue( interaction + ".weighting",                   =
weight   );
			checkResult( rc );

			// fill-in response field is limited to 255 characters
			if(type =3D=3D "fill-in") response =3D response.slice(0,254);

			rc =3D API.LMSSetValue( interaction + ".student_response",            =
response );
			checkResult( rc );

			rc =3D API.LMSSetValue( interaction + ".result",                      =
result   );
			checkResult( rc );

			rc =3D API.LMSSetValue( interaction + ".latency",                     =
latency  );
			checkResult( rc );

			document.Main.SetVariable ( "LMSReturnValue" , rc );

			API.LMSCommit("");
		}
		else if( LMS.SCORMversion =3D=3D "2004" )
		{

			// -----------------------------
			// Convert latency
			// -----------------------------
			var timeArray =3D new Array(4);
			timeArray =3D latency.split(":");

			var hours =3D timeArray[0];
			var minutes =3D timeArray[1];
			var seconds =3D timeArray[2];
     =20
			latency =3D "PT" + hours + "H" + minutes + "M" + seconds + "S";=20


			// -----------------------------
			// Convert time
			// -----------------------------
			var now 	=3D new Date();
			var year 	=3D now.getYear();
			var month 	=3D now.getMonth();

			year =3D year % 100;
			year +=3D (year < 38) ? 2000 : 1900;
    =20
			if ( month <=3D 9 )
			{
				month =3D "0" + month;
			}

			var day =3D now.getDay();

			if ( day <=3D 9 )
			{
				day =3D "0" + day;
			}

			now =3D year + "-" + month + "-" + day + "T" + SCORMtime( new Date() =
);


			// -----------------------------
			// Convert result
			// -----------------------------
			if ( result =3D=3D "wrong" )
			{
				result =3D "incorrect";
			}


			rc =3D API.SetValue( interaction + ".id",                          id =
      );
			checkResult( rc );

			rc =3D API.SetValue( interaction + ".timestamp",                   =
now      );
			checkResult( rc );

			// Utilize the scorm 2004 support for long answers
			if(type =3D=3D "fill-in") type =3D "long-fill-in";

			rc =3D API.SetValue( interaction + ".type",                        =
type     );
			checkResult( rc );

			//SCORM 2004 requires different delimiters: "," is replaced with =
"[,]", "." is replaced with "[.]"
			rc =3D API.SetValue( interaction + ".correct_responses.0.pattern", =
correct.split(',').join('[,]').split('.').join('[.]')  );
			checkResult( rc );

			rc =3D API.SetValue( interaction + ".weighting",                   =
weight   );
			checkResult( rc );

			description =3D description.slice(0,249);
			rc =3D API.SetValue( interaction + ".description",                 =
description );
			checkResult( rc );

			//SCORM 2004 requires different delimiters: "," is replaced with =
"[,]", "." is replaced with "[.]"
			rc =3D API.SetValue( interaction + ".learner_response",            =
response.split(',').join('[,]').split('.').join('[.]') );
			checkResult( rc );

			rc =3D API.SetValue( interaction + ".result",                      =
result   );
			checkResult( rc );

			rc =3D API.SetValue( interaction + ".latency",                     =
latency  );
			checkResult( rc );

			document.Main.SetVariable ( "LMSReturnValue" , rc );

			API.Commit("");
		}
	}
	else if(AICCApi)
	{
		AICCApi.addInteraction(id, type, correct, response, result, latency);
	}
	else
	{
		if( APIflag =3D=3D "force" )
		{
			window.location.href =3D "../noAPI.html";
		}

	}

   LMS.interactionCnt++;
}
/*
	Checks the results from the API for validity
*/
function checkResult( rc )
{

   if( APIflag =3D=3D "force" )
   {
      if( rc !=3D "true" )
      {
         window.location.href =3D "../noAPI.html";
      }
   }
}

/**************************                             =
**********************/
/**************************  PUBLIC FUNCTIONS AND DATA  =
**********************/
/**************************                             =
**********************/

function initialize()
{

	timeOfInit =3D new Date();

	if( API !=3D null)
	{
		if( LMS.SCORMversion =3D=3D "1.2" )
		{
			try
			{
				var result =3D API.LMSInitialize("");

				if( result !=3D "true" )
				{
					// If not LMSInitalize was successful, exit with an error
					return( false );
				}

				lessonStatus =3D API.LMSGetValue( "cmi.core.lesson_status" );

				if( lessonStatus.length =3D=3D 0 || (lessonStatus.length > 0 && =
lessonStatus.charAt(0) !=3D "p" && lessonStatus.charAt(0) !=3D "c" && =
lessonStatus.charAt(0) !=3D "f" ))
				{
					API.LMSSetValue( "cmi.core.lesson_status", "incomplete" );
					API.LMSCommit("");
				}
			}
			catch( e )
			{
				return( false );
			}
		}
		else if( LMS.SCORMversion =3D=3D "2004" )
		{		=09
			try
			{			=09
				var result =3D API.Initialize("");			=09
							=09
				if( result !=3D "true" )
				{
					// If not LMSInitalize was successful, exit with an error
					return( false );
				}

				var completionStatus =3D String( API.GetValue( =
"cmi.completion_status" ) );=09

				if( completionStatus.length =3D=3D 0 || ( completionStatus.length > =
0 && completionStatus.charAt(0) !=3D "c" ) )
				{
					API.SetValue( "cmi.completion_status", "incomplete" );
					API.Commit("");
				}

			}
			catch( e )
			{
				return( false );
			}
		}
	}
	else if(AICCApi)
	{
		AICCApi.initialize(timeOfInit);
	}
	else
	{
		return( false );
	}
=20
   return( true );
}

/*
	Logs the course as completed.
*/=09
function courseCompleted()
{
	if( API )
	{
		if( LMS.SCORMversion =3D=3D "1.2" )
		{	=09
			lessonStatus =3D API.LMSGetValue( "cmi.core.lesson_status" );

			if( lessonStatus.charAt(0) !=3D "p" && lessonStatus.charAt(0) !=3D =
"c" )
			{
				API.LMSSetValue( "cmi.core.lesson_status", "completed" );
				API.LMSCommit("");
			}
		}
		else if( LMS.SCORMversion =3D=3D "2004" )
		{	=09
			completionStatus =3D String( API.GetValue( "cmi.completion_status" ) =
);

			if( completionStatus.length =3D=3D 0 || ( completionStatus.length > 0 =
&& completionStatus.charAt(0) !=3D "c" ) )
			{			=09
				API.SetValue( "cmi.completion_status", "completed" );
				API.Commit("");
			}
		}
	}
	else if(AICCApi)
	{
		AICCApi.courseCompleted();
	}
}


/*
	Sets the completion status for the course
*/
function setCompletion( value )
{
	if( API )
	{
		if( LMS.SCORMversion =3D=3D "1.2" )
		{
			lessonStatus =3D API.LMSGetValue( "cmi.core.lesson_status" );

			// Do not alter if user has completed or passed allready
			if( lessonStatus.charAt(0) !=3D "p" && lessonStatus.charAt(0) !=3D =
"c" )
			{
				API.LMSSetValue( "cmi.core.lesson_status", value );
				API.LMSCommit( "" );
			}
		}
		else if( LMS.SCORMversion =3D=3D "2004" )
		{
			completionStatus 	=3D String( API.GetValue( "cmi.completion_status" ) =
);
			successStatus 		=3D String( API.GetValue( "cmi.success_status" ) );


			if( value =3D=3D "passed" || value =3D=3D "failed" )
			{
				// Do not alter if user has passed allready
				if( successStatus.length =3D=3D 0 || ( successStatus.length > 0 && =
successStatus.charAt(0) !=3D "p" ) )
				{
					API.SetValue( "cmi.completion_status", "completed" );
					API.SetValue( "cmi.success_status", value );
					API.Commit( "" );
				}
			}
			else if( value =3D=3D "completed" || value =3D=3D "incomplete" )
			{
				// Do not alter if user has completed allready
				if( completionStatus.length =3D=3D 0 || ( completionStatus.length > =
0 && completionStatus.charAt(0) !=3D "c" ) )
				{

					API.SetValue( "cmi.completion_status", value );
					API.Commit( "" );
				}
			}
		}
	}
	else if(AICCApi)
	{
		AICCApi.setCompletion(value);
	}
}

/*
	Sets the score for the course
*/
function setScore( value )
{

	if( API )
	{
		if( LMS.SCORMversion =3D=3D "1.2" )
		{
			lessonStatus =3D API.LMSGetValue( "cmi.core.lesson_status" );

			// Do not alter if user has completed or passed session
			if( lessonStatus.charAt(0) !=3D "p" && lessonStatus.charAt(0) !=3D =
"c" )
			{
				API.LMSSetValue( "cmi.core.score.raw", value );
				API.LMSSetValue( "cmi.core.score.min", 0 );
				API.LMSSetValue( "cmi.core.score.max", 100 );
				API.LMSCommit( "" );
			}
		}
		else if( LMS.SCORMversion =3D=3D "2004" )
		{
			successStatus =3D String( API.GetValue( "cmi.success_status" ) );

			// Do not alter if user has completed or passed session
			if( successStatus.length =3D=3D 0 || ( successStatus.length > 0 && =
successStatus.charAt(0) !=3D "p" ) )
			{
				API.SetValue( "cmi.score.raw", value );
				API.SetValue( "cmi.score.min", 0 );
				API.SetValue( "cmi.score.max", 100 );
				API.SetValue( "cmi.score.scaled", value/100 );
				API.Commit( "" );
			}
		}
	}
	else if(AICCApi)
	{
		AICCApi.setScore(value);
	}

}

/*
	Sets the score and completion for the course
*/=09
function setScoreAndCompletion( value, completion )
{
	if( API )
	{
		if( LMS.SCORMversion =3D=3D "1.2" )
		{
			lessonStatus =3D API.LMSGetValue( "cmi.core.lesson_status" );

			// Do not alter if user has completed or passed session
			if( lessonStatus.charAt(0) !=3D "p" && lessonStatus.charAt(0) !=3D =
"c" )
			{
				API.LMSSetValue( "cmi.core.score.raw", value );
				API.LMSSetValue( "cmi.core.score.min", 0 );
				API.LMSSetValue( "cmi.core.score.max", 100 );
				API.LMSSetValue( "cmi.core.lesson_status", completion );
				API.LMSCommit( "" );
			}
		}
		else if( LMS.SCORMversion =3D=3D "2004" )
		{
			successStatus 		=3D String( API.GetValue( "cmi.success_status" ) );

			// Do not alter if user has passed the session
			if( successStatus.length =3D=3D 0 || ( successStatus.length > 0 && =
successStatus.charAt(0) !=3D "p" ) )
			{
				if( completion =3D=3D "passed" || completion =3D=3D "failed" )
				{
					API.SetValue( "cmi.score.raw", value );
					API.SetValue( "cmi.score.min", 0 );
					API.SetValue( "cmi.score.max", 100 );
					API.SetValue( "cmi.score.scaled", value/100 );
					API.SetValue( "cmi.success_status", completion );
					API.SetValue( "cmi.completion_status", "completed" );
					API.Commit( "" );
				}
			}
		}	=09
	}
	else if(AICCApi)
	{
		AICCApi.setScoreAndCompletion(value, completion);
	}

}

/*
	Marks the current session as finished=20
*/
function finish()
{
	if( API )
	{
		timeOfCompletion =3D new Date();
		var secondsElapsed =3D Math.floor( ( timeOfCompletion.getTime() - =
timeOfInit.getTime() ) / 1000 );

	=09
		if( LMS.SCORMversion =3D=3D "1.2" )
		{	=09
			timeUsed =3D secsToTime( secondsElapsed );			=09

			API.LMSSetValue( "cmi.core.session_time", timeUsed );
			API.LMSCommit("");=20

			API.LMSFinish("");
		}
		else if( LMS.SCORMversion =3D=3D "2004" )
		{				=09
			timeUsed =3D secsToTime2004( secondsElapsed );			=09

			API.SetValue( "cmi.session_time", timeUsed );
			API.Commit("");=20

			API.Terminate("");
		}
	}=09
	else if(AICCApi)
	{
		AICCApi.finish();
	}
}

// Example:
// addMultipleChoice( "ex1", "my exercise", "a,b", =
"a,c","wrong","0:0:12" );
function =
addMultipleChoice(id,description,correct,response,result,latency)
{   =
addInteraction(id,"choice",description,correct,response,result,latency);}=



// Example:
// addSlider( "ex1", "my exercise", "", "3","","0:0:12" );
// addSlider( "ex2", "choice 3", "choice 2","wrong","0:0:12" );
function addSlider(id,description,correct,response,result,latency)
{   =
addInteraction(id,"likert",description,correct,response,result,latency);}=



// Example:
// addFreetext( "ex3", "my exercise", "Platon", =
"Platon","correct","0:0:12" );
function addFreetext(id,description,correct,response,result,latency)
{
   // Workaround implemented to support long parameters (>2kB)
   correct =3D document.Main.GetVariable("__FillInCorrect");
   response =3D document.Main.GetVariable("__FillInResponse");

   =
addInteraction(id,"fill-in",description,correct,response,result,latency);=

}


// Example:
// addDragDrop( "ex4", "my exercise", "{a.b,e.f,c.b}", =
"a.b,e.f,c.f","wrong","0:0:12" );
function addDragDrop(id,description,correct,response,result,latency)
{   =
addInteraction(id,"matching",description,correct,response,result,latency)=
;}

/*
	Saves suspend data for the course
*/
function suspendCourse( location, data )
{
	if( API )
	{
		if( LMS.SCORMversion =3D=3D "1.2" )
		{
			var rc =3D API.LMSSetValue( "cmi.core.exit", "suspend" );
			checkResult( rc );

			var rc =3D API.LMSSetValue( "cmi.core.lesson_location", location );
			checkResult( rc );

			var rc =3D API.LMSSetValue( "cmi.suspend_data", data );
			checkResult( rc );
		}
		else if( LMS.SCORMversion =3D=3D "2004" )
		{
			var rc =3D API.SetValue( "cmi.exit", "suspend" );
			checkResult( rc );

			var rc =3D API.SetValue( "cmi.location", location );
			checkResult( rc );

			var rc =3D API.SetValue( "cmi.suspend_data", data );
			checkResult( rc );
		}
	}
	else if(AICCApi)
	{
		AICCApi.suspendCourse(location, data);
	}
	else
	{
		//alert( "API not found. suspendCourse: " + location + ", " + data );
	}

}


------=_NextPart_000_0000_01CA26F2.FDAF36A0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://demo.mohive.net/SCORM/SCORMLogg.js

=EF=BB=BF/***************************************************************=
***********************

	Description:=20
		Contains functionality for logging through a SCORM based API

*************************************************************************=
*************/

var LMS =3D new Object();
LMS.today =3D SCORMdate(new Date());
LMS.interactionCnt =3D 0;
LMS.lesson_id =3D "lesson2"; // Developer defined id - must be uniqe for =
this learning object
LMS.SCORMversion =3D null; // Defines which version of SCORM that has =
been found

function join( arr, separator )
{
   res =3D "";

   for( i =3D 0; i < arr.length; i++ )
   {
      if( i )  res +=3D separator;
      if( arr[ i ] <=3D 9 ) res +=3D "0";
      res +=3D arr[ i ];
   }

   return res;
}

function SCORMdate(date)  {  return join([ date.getFullYear(), =
date.getMonth()+1, date.getDate()],    "/" );}
function SCORMtime(time)  {  return join([ time.getHours(),    =
time.getMinutes(), time.getSeconds()], ":" );}
function secsToTime( sec ) { return join([ Math.floor( sec/3600 ), =
Math.floor((sec%3600)/60), sec%60], ":");}
function secsToTime2004( sec ) { return "PT" + Math.floor( sec/3600 ) + =
"H" + Math.floor((sec%3600)/60) + "M" + sec%60 + "S"; }

/*
	returns the LMS API object (may be null if not found)
*/
var findAPITries =3D 0;
function FindAPIinWin( win, version )
{
   // Difference between 1.2 and 2004
   var APIname =3D "API";

   if( version =3D=3D "2004" )
   {
     APIname =3D "API_1484_11";
   }
        =20
   // Search for API
   while ( (win[ APIname ] =3D=3D null) && (win.parent !=3D null) && =
(win.parent !=3D win))
   {		  =20
      findAPITries++;
      // Note: 7 is an arbitrary number, but should be more than =
sufficient
      if (findAPITries > 7)=20
      {
         //alert("Error finding API -- too deeply nested.");
         return null;
      }
     =20
      win =3D win.parent;
=20
   }
   return win[ APIname ];

}


function scanForAPI( version )
{
   var theAPI		=3D null;
   LMS.SCORMversion =3D null;
  =20
   // Start looking for API in current window
   // Catch error to avoid javascript runtime error
   // Errors are handled separately
   try
   {
      theAPI =3D FindAPIinWin( window, version );
   }
   catch( e )
   {
      return null;
   }


   if ( ( theAPI =3D=3D null ) && ( window.opener !=3D null ) && ( =
typeof( window.opener ) !=3D "undefined" ) )
   {
      try
      {
         theAPI =3D FindAPIinWin( window.opener, version );
      }
      catch( e )
      {
      	 return null;
      }
   }
	/*
	// create a dummy API for testing purposes
   theAPI =3D {};
   theAPI.LMSFinish =3D function() { };
   theAPI.LMSInitialize =3D function() { };
   theAPI.LMSGetValue =3D function( v )=20
   {
	   if( v =3D=3D "cmi.lesson_location" ) return "17365";
	   if( v =3D=3D "cmi.entry" ) return "resume";
	   return "";
   };

   theAPI.LMSSetValue =3D function( n, v ) {};
	*/
=09
=09
    LMS.SCORMversion =3D ( version =3D=3D "2004" ? "2004" : "1.2" );

	return theAPI;
}


// If forceSCORMversion !=3D null, search for defined version
// else search for highest version
function findAPI( forceSCORMversion )
{
   var theAPI =3D null;

   if( forceSCORMversion =3D=3D null || forceSCORMversion =3D=3D "" )
   {
      // If forceSCORMversion is undefined, first scan for version 2004
      theAPI =3D scanForAPI( "2004" );
     =20
      if( theAPI =3D=3D null )
      {
         // If not found, try to scan for version 1.2
         theAPI =3D scanForAPI( "1.2" );
      }
   }
   else
   {
      // Scan for the required version
      theAPI =3D scanForAPI( forceSCORMversion );           =20
   }   =20

   return theAPI;
}

------=_NextPart_000_0000_01CA26F2.FDAF36A0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://demo.mohive.net/SCORM/AICCLogg.js

=EF=BB=BF/***************************************************************=
***********************

	Description:=20
		Contains a Javascript implementation that logs using the HACP =
protocol.
		The implementation requires an ASP file on the server called =
AICCProxy.asp
		that can redirect calls to the lms to avoid cross-domain scripting =
issues.

*************************************************************************=
*************/

/*
	Create a new AICC LMS Object
*/
var AICCApi =3D new AICCLMS(location.search);

if(!AICCApi.LMSDetected())
{
	AICCApi =3D null;
}

/*
	Constructor for creating an AICC LMS
*/
function AICCLMS(aiccparams)
{
	// Values for AICC
	this.AICC_url =3D null;
	this.AICC_sid =3D null;=09
=09
	// Values for tracking time
	this.startTime =3D new Date();  =20
	this.endTime =3D new Date(); 	=09
=09
	// Student data
	this.StudentId =3D null;
	this.StudentName =3D null;=09
	this.LessonStatus =3D null;
=09
	/*
		Initializes the AICCLMS object. This involves setting up the runtime =
environment
	*/
	this.initializeLms =3D function(aiccparams)
	{
		// Check for AICC/HACP usage. This is found by checking the =
querystring for
		// the parameters aicc_url and aicc_sid (session id)=09
		aiccparams =3D new QueryString();
	=09
		this.AICC_url =3D aiccparams.getValue("aicc_url");
		this.AICC_sid =3D aiccparams.getValue("aicc_sid");
	=09
		// debug div
		document.write("<div id=3D\"debug\" =
style=3D\"height:320px;width:160px;");
		document.write("overflow:scroll;border:solid 1px #E0E0E0;");
		document.write("font-family:courier =
new;font-size:8px;display:none\">&nbsp;</div>");	=09
	=09
		this.debug("URL: " + this.AICC_url);
		this.debug("SID: " + this.AICC_sid);			=09
	=09
		// communication
		this.httpReq =3D this.createHttpRequestObject();=09
	=09
		// read important settings
		this.getData();=09
	}
	=09
	/*
		Logs an interaction	=09
	*/
	this.addInteraction =3D function(id, type, correct, response, result, =
latency)
	{
		this.debug(id + ", " + type + ", " + correct + ", " + response + ", " =
+=20
			result + ", " + latency);
		=09
		this.putInteraction(id, type, correct, response, result, latency);
	}
=09
	/*
		Initializes the course with the LMS
	*/
	this.initialize =3D function(timeOfInit)
	{
		this.startTime =3D timeOfInit;
	=09
		this.debug("initialize(" + timeOfInit.toString() + ")");
	=09
		this.setScoreAndCompletion(0, "incomplete");
	}
=09
	/*
		Marks the course as completed
	*/
	this.courseCompleted =3D function()
	{
		this.debug("courseCompleted()");
		this.putParam("completed", null, this.trackTime());
	}
=09
	/*
		Sets the completion status for the course
	*/
	this.setCompletion =3D function(completion)
	{
		this.debug("setCompletion(" + completion + ")");=09
		this.putParam(completion, null, this.trackTime())	=09
	}
=09
	/*
		Sets the score for the course
	*/
	this.setScore =3D function(score)
	{
		this.debug("setScore(" + score + ")");
		this.putParam(null, score, this.trackTime())
	}
=09
	/*
		Sets the score and completion status for the course
	*/
	this.setScoreAndCompletion =3D function(score, completion)
	{
		this.debug("setScoreAndCompletion(" + score + ", " + completion + =
")");	=09
		this.putParam(completion, score, this.trackTime())=20
	}
=09
	/*
		Finish the session in the lms
	*/
	this.finish =3D function()
	{
		this.debug("finish()");
	=09
		// Call exit system
		this.exitSystem(this.trackTime());
	}
=09
	/*
		Save suspend data in the lms=09
	*/
	this.suspendCourse =3D function(location, data)
	{
		this.debug("suspendCourse(" + location + ", " + data + ")");	=09
	}
=09
	/*
		Writes out a debug message
	*/
	this.debug =3D function(txt)
	{
		if(!this.debugDiv)	=09
			this.debugDiv =3D document.getElementById('debug');					=09
	=09
		if(this.debugDiv && this.debugDiv.style.display !=3D 'none')	=09
		{=09
			this.debugDiv.innerHTML =3D (this.debugDiv.innerHTML =3D=3D "&nbsp;" =
? "" :
				this.debugDiv.innerHTML) + txt + "<br>";
		}
	}
	=09
	/*
		Returns the AICC formated time when tracking. Formats the date and =
time=20
		so it can be read by the LMS
	*/
	this.trackTime =3D function()
	{
		var Time, Minutes, sendInfo; =09
	=09
		// Get the time when they finish the topic=20
		this.endTime =3D new Date();=20
		var Time =3D Math.floor((this.endTime.getTime() - =
this.startTime.getTime()) / 1000);=20
	=09
		// Find the difference=20
		var Minutes =3D Math.floor(Time / 60);=20
		Time =3D this.padNumber(Math.floor(Minutes / 60)) + ":" + =
this.padNumber(Minutes % 60) + ":" + =20

		this.padNumber(Time % 60);=20
	=09
		return Time;=20
	=09
	}=20

	/* =20
		Adds padding to numbers so that they always equals two characters=20
	*/=20
	this.padNumber =3D function(num)=20
	{=20
		if (num < 10)=20
			return "0" + num;=20
		else=20
			return num;=20
	}=20


	/*
		Returns true if the content was called by an LMS running AICC
	*/
	this.LMSDetected =3D function()
	{
		var Detected =3D (this.AICC_sid && this.AICC_url) &&
			(this.AICC_sid.length > 0 && this.AICC_url.length > 0);
		=09
		return (Detected ? true : false);
	}

	/*
		Sends a putparam command to the LMS via AICC/HACP
	*/
	this.putParam =3D function(lessonStatus, score, time)=20
	{=20
		// created aicc_data parameter=20
		var aiccData=3D '[CORE]';=20
	=09
		if(lessonStatus && this.LessonStatus && this.LessonStatus.length > 0 =
&&
			this.LessonStatus.charAt(0) !=3D 'c' && this.LessonStatus.charAt(0) =
!=3D 'p')
			aiccData +=3D '\nLESSON_STATUS=3D' + lessonStatus;=20
		=09
		if(score)
			aiccData +=3D '\nSCORE=3D' + score;=20
				=09
		aiccData +=3D '\nTIME=3D' + time;=20

		this.sendData("putParam", aiccData);
	}=20
=09
	/*
		Sends a putinteraction command to the LMS via AICC/HACP
	*/
	this.putInteraction =3D function(id, type, correct, response, result, =
latency)
	{=20
		// created aicc_data parameter=20
		var aiccData =3D "\"course_id\", \"student_id\", \"lesson_id\", =
\"date\", \"time\"," +=20
			"\"interaction_id\",\"objective_id\", =
\"type_interaction\",\"correct_response\"," +=20
			"\"student_response\", \"result\", \"weighting\", \"latency\"\r\n";

		aiccData +=3D ", this.StudentId, , , , " +=20
			id + ", \"\", \"" + type + "\", \"" +=20
			correct + "\", \"" + response + "\", \"" + result + "\",, " + =
latency;

		// ex: =
A340ft-2","jqh085","APU1","2004/01/15","15:14:23",37,ft1016,C,A,C,W,, =
00:00:3=20

		this.sendData("putInteractions", aiccData);
	}=20

	/*
		Sends the ExitAU command to the LMS
	*/
	this.exitSystem =3D function(time)=20
	{=20
		// created aicc_data parameter=20
		var aiccData=3D '[CORE]';=20
		aiccData +=3D '\nTIME=3D' + time;=20
	=09
		this.sendData("ExitAU", aiccData);  =20
	}=20

	/*
		Sends data to the LMS via AICC/HACP
	*/
	this.sendData =3D function(command, aiccdata)=20
	{=20
		if(this.LMSDetected())
		{
			// Send request
			this.parseResults(this.sendHttpRequest(command, aiccdata));
		}
	}=20

	/*
		reads data from the AICC LMS
	*/
	this.getData =3D function ()=20
	{ =09
	=09
		if(this.LMSDetected())
		{
			this.parseResults(this.sendHttpRequest("getparam", ""));
		}
	}=20
=09
	/*
		Callback whenever we recieve result back from our proxy on the server
	*/
	this.parseResults =3D function(result)
	{
		if(!result)
			return;
	=09
		// Parse results
		result =3D this.unescapeex(result);=09
		var ResultList =3D result.split('\r')=09
	=09
		// Loop through all the lines and split them
		for(var i =3D 0; i< ResultList.length; i++)
		{
			var NameValue =3D ResultList[i].split('=3D');
		=09
			if(NameValue.length =3D=3D 2)
			{
				var Name =3D this.trim(NameValue[0]).toLowerCase();
				var Val =3D this.trim(NameValue[1]).toLowerCase();
						=09
				if(Val)
				{
					switch(Name)
					{
						case "student_id":		=09
							this.StudentId =3D Val;
							break;
						=09
						case "student_name":
							this.StudentName =3D Val;
							break;
						=09
						case "lesson_status":
							this.LessonStatus =3D Val;
							break;
											=09
					}
				}
			}
		}=09
	=09
		// Add to debug:
		this.debug("Student ID:   " + this.StudentId);
		this.debug("Student Name: " + this.StudentName);								=09
		this.debug("LessonStatus: " + this.LessonStatus);
	}

	/*
		Callback from the ASP proxy whenever a communication error occurs.
	*/
	this.AICCResultError =3D function (errno, description)
	{	=09
		debug('err: ' & description);
	}=09

	/*
		Creates the HttpRequest Object
	*/
	this.createHttpRequestObject =3D function()
	{
		var A =3D null;=0A=
	=0A=
		try=0A=
		{=0A=
			A =3D new ActiveXObject("Msxml2.XMLHTTP")=0A=
		}=0A=
		catch(e)=0A=
		{=0A=
			try=0A=
			{=0A=
				A =3D new ActiveXObject("Microsoft.XMLHTTP")=0A=
			} =0A=
			catch(ex)=0A=
			{=0A=
				A =3D null=0A=
			}=0A=
		}=0A=
		=0A=
		if(!A && typeof XMLHttpRequest !=3D "undefined") =0A=
		{=0A=
			A =3D new XMLHttpRequest()=0A=
		}=0A=
		=0A=
		return A;
	}=09
=09
	/*
		Sends a Http Request and returns the results
	*/
	this.sendHttpRequest =3D function(command, aicc_data)
	{	=09
		if(this.httpReq)=0A=
		{		=0A=
			// Create the URL:=0A=
			var aicc_url =3D escape(this.AICC_url) + (this.AICC_url.indexOf("?") =
> -1 ? "" : "?");=0A=
			var url =3D "./../../SCORM/AICCProxy.asp?aicc_url=3D" + aicc_url + =
"&";=0A=
			url +=3D "session_id=3D" + escape(this.AICC_sid) + "&";=0A=
			url +=3D "command=3D" + escape(command) + "&";=0A=
			url +=3D "aicc_data=3D" + escape(aicc_data) + "&";=0A=
			url +=3D "version=3D1.0";=0A=
			=0A=
			// Call the logger.asp file=0A=
			this.httpReq.open("GET", url, false);=0A=
						=0A=
			// Send!=0A=
			this.httpReq.send();					=0A=
			=0A=
			this.debug("Result:");=0A=
			this.debug(this.httpReq.responseText);=0A=
			=0A=
			// Return the result from the request=0A=
			return this.httpReq.responseText;=0A=
		}
	}

	/*
		trims a string
	*/
	this.trim =3D function(str)=20
	{
		return str.replace(/^\s+|\s+$/g,"");
	}

	/*
		extended replace to handle + signs
	*/
	this.unescapeex =3D function(str)=20
	{
		return unescape(str).replace(/\+/g, " ");
	}


	=09
	// Initialize
	this.initializeLms(aiccparams);=09
=09
}

/*
	Creates a parsed querystring object
*/
function QueryString() =0A=
{=0A=
	q =3D location.search;=0A=
	=0A=
	if(q.length > 1) =0A=
		this.q =3D q.substring(1, q.length);=0A=
	else =0A=
		this.q =3D null;=0A=
	=0A=
	this.keyValuePairs =3D new Array();=0A=
	=0A=
	if(this.q) =0A=
	{		=0A=
		for(var i=3D0; i < this.q.split("&").length; i++) =0A=
		{=0A=
			this.keyValuePairs[i] =3D this.q.split("&")[i];			=0A=
		}=0A=
	}=0A=
	=0A=
	this.getKeyValuePairs =3D function() =0A=
	{ =0A=
		return this.keyValuePairs; =0A=
	}=0A=
	=0A=
	this.getValue =3D function(s) =0A=
	{		=0A=
		for(var j=3D0; j < this.keyValuePairs.length; j++) =0A=
		{=0A=
			if(this.keyValuePairs[j].split("=3D")[0].toLowerCase() =3D=3D =
s.toLowerCase())=0A=
			{=0A=
				var temp =3D this.keyValuePairs[j].split("=3D");				=0A=
				var res =3D "";=0A=
				=0A=
				for(var n =3D 1; n < temp.length; n++)=0A=
					res +=3D (res =3D=3D "" ? "" : "=3D") + temp[n];=0A=
					=0A=
				return res;=0A=
			}=0A=
		}=0A=
		return -1;=0A=
	}=0A=
	=0A=
	this.getParameters =3D function() =0A=
	{=0A=
		var a =3D new Array(this.getLength());=0A=
		=0A=
		for(var j=3D0; j < this.keyValuePairs.length; j++) =0A=
		{=0A=
			a[j] =3D this.keyValuePairs[j].split("=3D")[0];=0A=
		}=0A=
		return a;=0A=
	}=0A=
	=0A=
	this.getLength =3D function() { return this.keyValuePairs.length; }	=0A=
}=0A=

------=_NextPart_000_0000_01CA26F2.FDAF36A0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://demo.mohive.net/course/swfobject.js

/**=0A=
 * SWFObject v1.5: Flash Player detection and embed - =
http://blog.deconcept.com/swfobject/=0A=
 *=0A=
 * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT =
License:=0A=
 * http://www.opensource.org/licenses/mit-license.php=0A=
 *=0A=
 */=0A=
if(typeof deconcept=3D=3D"undefined"){var deconcept=3Dnew =
Object();}if(typeof =
deconcept.util=3D=3D"undefined"){deconcept.util=3Dnew =
Object();}if(typeof =
deconcept.SWFObjectUtil=3D=3D"undefined"){deconcept.SWFObjectUtil=3Dnew =
Object();}deconcept.SWFObject=3Dfunction(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!=
document.getElementById){return;}this.DETECT_KEY=3D_a?_a:"detectflash";th=
is.skipDetect=3Ddeconcept.util.getRequestParameter(this.DETECT_KEY);this.=
params=3Dnew Object();this.variables=3Dnew =
Object();this.attributes=3Dnew =
Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id"=
,id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height=
",h);}if(_5){this.setAttribute("version",new =
deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=3Dd=
econcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&=
&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=3Dtrue;}if(c=
){this.addParam("bgcolor",c);}var =
q=3D_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpress=
Install",false);this.setAttribute("doExpressInstall",false);var =
_c=3D(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.s=
etAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);=
}};deconcept.SWFObject.prototype=3D{useExpressInstall:function(_d){this.x=
iSWFPath=3D!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInsta=
ll",true);},setAttribute:function(_e,_f){this.attributes[_e]=3D_f;},getAt=
tribute:function(_10){return =
this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=3D_12;=
},getParams:function(){return =
this.params;},addVariable:function(_13,_14){this.variables[_13]=3D_14;},g=
etVariable:function(_15){return =
this.variables[_15];},getVariables:function(){return =
this.variables;},getVariablePairs:function(){var _16=3Dnew Array();var =
key;var _18=3Dthis.getVariables();for(key in =
_18){_16[_16.length]=3Dkey+"=3D"+_18[key];}return =
_16;},getSWFHTML:function(){var =
_19=3D"";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.l=
ength){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplay=
erType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19=3D"<embed =
type=3D\"application/x-shockwave-flash\" =
src=3D\""+this.getAttribute("swf")+"\" =
width=3D\""+this.getAttribute("width")+"\" =
height=3D\""+this.getAttribute("height")+"\" =
style=3D\""+this.getAttribute("style")+"\"";_19+=3D" =
id=3D\""+this.getAttribute("id")+"\" =
name=3D\""+this.getAttribute("id")+"\" ";var =
_1a=3Dthis.getParams();for(var key in =
_1a){_19+=3D[key]+"=3D\""+_1a[key]+"\" ";}var =
_1c=3Dthis.getVariablePairs().join("&");if(_1c.length>0){_19+=3D"flashvar=
s=3D\""+_1c+"\"";}_19+=3D"/>";}else{if(this.getAttribute("doExpressInstal=
l")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",t=
his.xiSWFPath);}_19=3D"<object id=3D\""+this.getAttribute("id")+"\" =
classid=3D\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" =
width=3D\""+this.getAttribute("width")+"\" =
height=3D\""+this.getAttribute("height")+"\" =
style=3D\""+this.getAttribute("style")+"\">";_19+=3D"<param =
name=3D\"movie\" value=3D\""+this.getAttribute("swf")+"\" />";var =
_1d=3Dthis.getParams();for(var key in _1d){_19+=3D"<param =
name=3D\""+key+"\" value=3D\""+_1d[key]+"\" />";}var =
_1f=3Dthis.getVariablePairs().join("&");if(_1f.length>0){_19+=3D"<param =
name=3D\"flashvars\" value=3D\""+_1f+"\" />";}_19+=3D"</object>";}return =
_19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var =
_21=3Dnew =
deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21=
)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.=
setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",es=
cape(this.getAttribute("xiRedirectUrl")));document.title=3Ddocument.title=
.slice(0,47)+" - Flash Player =
Installation";this.addVariable("MMdoctitle",document.title);}}if(this.ski=
pDetect||this.getAttribute("doExpressInstall")||this.installedVer.version=
IsValid(this.getAttribute("version"))){var n=3D(typeof =
_20=3D=3D"string")?document.getElementById(_20):_20;n.innerHTML=3Dthis.ge=
tSWFHTML();return =
true;}else{if(this.getAttribute("redirectUrl")!=3D""){document.location.r=
eplace(this.getAttribute("redirectUrl"));}}return =
false;}};deconcept.SWFObjectUtil.getPlayerVersion=3Dfunction(){var =
_23=3Dnew =
deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeType=
s.length){var x=3Dnavigator.plugins["Shockwave =
Flash"];if(x&&x.description){_23=3Dnew =
deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replac=
e(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&nav=
igator.userAgent.indexOf("Windows CE")>=3D0){var axo=3D1;var =
_26=3D3;while(axo){try{_26++;axo=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=3Dnew =
deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=3Dnull;}}}else{try{var =
axo=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var =
axo=3Dnew ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=3Dnew =
deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess=3D"always";}catch=
(e){if(_23.major=3D=3D6){return _23;}}try{axo=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=3Dnull=
){_23=3Dnew deconcept.PlayerVersion(axo.GetVariable("$version").split(" =
")[1].split(","));}}}return =
_23;};deconcept.PlayerVersion=3Dfunction(_29){this.major=3D_29[0]!=3Dnull=
?parseInt(_29[0]):0;this.minor=3D_29[1]!=3Dnull?parseInt(_29[1]):0;this.r=
ev=3D_29[2]!=3Dnull?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototyp=
e.versionIsValid=3Dfunction(fv){if(this.major<fv.major){return =
false;}if(this.major>fv.major){return =
true;}if(this.minor<fv.minor){return =
false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return =
false;}return =
true;};deconcept.util=3D{getRequestParameter:function(_2b){var =
q=3Ddocument.location.search||document.location.hash;if(_2b=3D=3Dnull){re=
turn q;}if(q){var _2d=3Dq.substring(1).split("&");for(var =
i=3D0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("=3D"))=3D=3D=
_2b){return _2d[i].substring((_2d[i].indexOf("=3D")+1));}}}return =
"";}};deconcept.SWFObjectUtil.cleanupSWFs=3Dfunction(){var =
_2f=3Ddocument.getElementsByTagName("OBJECT");for(var =
i=3D_2f.length-1;i>=3D0;i--){_2f[i].style.display=3D"none";for(var x in =
_2f[i]){if(typeof =
_2f[i][x]=3D=3D"function"){_2f[i][x]=3Dfunction(){};}}}};if(deconcept.SWF=
Object.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.pre=
pUnload=3Dfunction(){__flash_unloadHandler=3Dfunction(){};__flash_savedUn=
loadHandler=3Dfunction(){};window.attachEvent("onunload",deconcept.SWFObj=
ectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFO=
bjectUtil.prepUnload);deconcept.unloadSet=3Dtrue;}}if(!document.getElemen=
tById&&document.all){document.getElementById=3Dfunction(id){return =
document.all[id];};}var =
getQueryParamValue=3Ddeconcept.util.getRequestParameter;var =
FlashObject=3Ddeconcept.SWFObject;var SWFObject=3Ddeconcept.SWFObject;
------=_NextPart_000_0000_01CA26F2.FDAF36A0--

