Remove old Hotspot library - refs #7705
parent
478b14d7f7
commit
bfb797c5a4
@ -1,455 +0,0 @@ |
|||||||
/* |
|
||||||
Macromedia(r) Flash(r) JavaScript Integration Kit License |
|
||||||
|
|
||||||
|
|
||||||
Copyright (c) 2005 Macromedia, inc. All rights reserved. |
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification, |
|
||||||
are permitted provided that the following conditions are met: |
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice, this |
|
||||||
list of conditions and the following disclaimer. |
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice, |
|
||||||
this list of conditions and the following disclaimer in the documentation and/or |
|
||||||
other materials provided with the distribution. |
|
||||||
|
|
||||||
3. The end-user documentation included with the redistribution, if any, must |
|
||||||
include the following acknowledgment: |
|
||||||
|
|
||||||
"This product includes software developed by Macromedia, Inc. |
|
||||||
(http://www.macromedia.com)."
|
|
||||||
|
|
||||||
Alternately, this acknowledgment may appear in the software itself, if and |
|
||||||
wherever such third-party acknowledgments normally appear. |
|
||||||
|
|
||||||
4. The name Macromedia must not be used to endorse or promote products derived |
|
||||||
from this software without prior written permission. For written permission, |
|
||||||
please contact devrelations@macromedia.com. |
|
||||||
|
|
||||||
5. Products derived from this software may not be called "Macromedia" or |
|
||||||
"Macromedia Flash", nor may "Macromedia" or "Macromedia Flash" appear in their |
|
||||||
name. |
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, |
|
||||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND |
|
||||||
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MACROMEDIA OR |
|
||||||
ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
|
||||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT |
|
||||||
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
|
||||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH |
|
||||||
DAMAGE. |
|
||||||
|
|
||||||
-- |
|
||||||
|
|
||||||
This code is part of the Flash / JavaScript Integration Kit: |
|
||||||
http://www.macromedia.com/go/flashjavascript/
|
|
||||||
|
|
||||||
Created by: |
|
||||||
|
|
||||||
Christian Cantrell |
|
||||||
http://weblogs.macromedia.com/cantrell/
|
|
||||||
mailto:cantrell@macromedia.com |
|
||||||
|
|
||||||
Mike Chambers |
|
||||||
http://weblogs.macromedia.com/mesh/
|
|
||||||
mailto:mesh@macromedia.com |
|
||||||
|
|
||||||
Macromedia |
|
||||||
*/ |
|
||||||
|
|
||||||
/** |
|
||||||
* Create a new Exception object. |
|
||||||
* name: The name of the exception. |
|
||||||
* message: The exception message. |
|
||||||
*/ |
|
||||||
function Exception(name, message) |
|
||||||
{ |
|
||||||
if (name) |
|
||||||
this.name = name; |
|
||||||
if (message) |
|
||||||
this.message = message; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Set the name of the exception.
|
|
||||||
*/ |
|
||||||
Exception.prototype.setName = function(name) |
|
||||||
{ |
|
||||||
this.name = name; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Get the exception's name.
|
|
||||||
*/ |
|
||||||
Exception.prototype.getName = function() |
|
||||||
{ |
|
||||||
return this.name; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Set a message on the exception.
|
|
||||||
*/ |
|
||||||
Exception.prototype.setMessage = function(msg) |
|
||||||
{ |
|
||||||
this.message = msg; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Get the exception message.
|
|
||||||
*/ |
|
||||||
Exception.prototype.getMessage = function() |
|
||||||
{ |
|
||||||
return this.message; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Generates a browser-specific Flash tag. Create a new instance, set whatever |
|
||||||
* properties you need, then call either toString() to get the tag as a string, or |
|
||||||
* call write() to write the tag out. |
|
||||||
*/ |
|
||||||
|
|
||||||
/** |
|
||||||
* Creates a new instance of the FlashTag. |
|
||||||
* src: The path to the SWF file. |
|
||||||
* width: The width of your Flash content. |
|
||||||
* height: the height of your Flash content. |
|
||||||
*/ |
|
||||||
function FlashTag(src, width, height) |
|
||||||
{ |
|
||||||
this.src = src; |
|
||||||
this.width = width; |
|
||||||
this.height = height; |
|
||||||
this.version = '7,0,14,0'; |
|
||||||
this.id = null; |
|
||||||
this.bgcolor = 'ffffff'; |
|
||||||
this.flashVars = null; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Sets the Flash version used in the Flash tag. |
|
||||||
*/ |
|
||||||
FlashTag.prototype.setVersion = function(v) |
|
||||||
{ |
|
||||||
this.version = v; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Sets the ID used in the Flash tag. |
|
||||||
*/ |
|
||||||
FlashTag.prototype.setId = function(id) |
|
||||||
{ |
|
||||||
this.id = id; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Sets the background color used in the Flash tag. |
|
||||||
*/ |
|
||||||
FlashTag.prototype.setBgcolor = function(bgc) |
|
||||||
{ |
|
||||||
this.bgcolor = bgc; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Sets any variables to be passed into the Flash content.
|
|
||||||
*/ |
|
||||||
FlashTag.prototype.setFlashvars = function(fv) |
|
||||||
{ |
|
||||||
this.flashVars = fv; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Get the Flash tag as a string.
|
|
||||||
*/ |
|
||||||
FlashTag.prototype.toString = function() |
|
||||||
{ |
|
||||||
var ie = (navigator.appName.indexOf ("Microsoft") != -1) ? 1 : 0; |
|
||||||
var flashTag = new String(); |
|
||||||
if (ie) |
|
||||||
{ |
|
||||||
flashTag += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" '; |
|
||||||
if (this.id != null) |
|
||||||
{ |
|
||||||
flashTag += 'id="'+this.id+'" '; |
|
||||||
} |
|
||||||
flashTag += 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version='+this.version+'" '; |
|
||||||
flashTag += 'width="'+this.width+'" '; |
|
||||||
flashTag += 'height="'+this.height+'">'; |
|
||||||
flashTag += '<param name="movie" value="'+this.src+'"/>'; |
|
||||||
flashTag += '<param name="quality" value="high"/>'; |
|
||||||
flashTag += '<param name="bgcolor" value="#'+this.bgcolor+'"/>'; |
|
||||||
if (this.flashVars != null) |
|
||||||
{ |
|
||||||
flashTag += '<param name="flashvars" value="'+this.flashVars+'"/>'; |
|
||||||
} |
|
||||||
flashTag += '</object>'; |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
flashTag += '<embed src="'+this.src+'" '; |
|
||||||
flashTag += 'quality="high" ';
|
|
||||||
flashTag += 'bgcolor="#'+this.bgcolor+'" '; |
|
||||||
flashTag += 'width="'+this.width+'" '; |
|
||||||
flashTag += 'height="'+this.height+'" '; |
|
||||||
flashTag += 'type="application/x-shockwave-flash" '; |
|
||||||
if (this.flashVars != null) |
|
||||||
{ |
|
||||||
flashTag += 'flashvars="'+this.flashVars+'" '; |
|
||||||
} |
|
||||||
if (this.id != null) |
|
||||||
{ |
|
||||||
flashTag += 'name="'+this.id+'" '; |
|
||||||
} |
|
||||||
flashTag += 'pluginspage="http://www.macromedia.com/go/getflashplayer">'; |
|
||||||
flashTag += '</embed>'; |
|
||||||
} |
|
||||||
return flashTag; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Write the Flash tag out. Pass in a reference to the document to write to.
|
|
||||||
*/ |
|
||||||
FlashTag.prototype.write = function(doc) |
|
||||||
{ |
|
||||||
doc.write(this.toString()); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* The FlashSerializer serializes JavaScript variables of types object, array, string, |
|
||||||
* number, date, boolean, null or undefined into XML.
|
|
||||||
*/ |
|
||||||
|
|
||||||
/** |
|
||||||
* Create a new instance of the FlashSerializer. |
|
||||||
* useCdata: Whether strings should be treated as character data. If false, strings are simply XML encoded. |
|
||||||
*/ |
|
||||||
function FlashSerializer(useCdata) |
|
||||||
{ |
|
||||||
this.useCdata = useCdata; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Serialize an array into a format that can be deserialized in Flash. Supported data types are object, |
|
||||||
* array, string, number, date, boolean, null, and undefined. Returns a string of serialized data. |
|
||||||
*/ |
|
||||||
FlashSerializer.prototype.serialize = function(args) |
|
||||||
{ |
|
||||||
var qs = new String(); |
|
||||||
|
|
||||||
for (var i = 0; i < args.length; ++i) |
|
||||||
{ |
|
||||||
switch(typeof(args[i])) |
|
||||||
{ |
|
||||||
case 'undefined': |
|
||||||
qs += 't'+(i)+'=undf'; |
|
||||||
break; |
|
||||||
case 'string': |
|
||||||
qs += 't'+(i)+'=str&d'+(i)+'='+escape(args[i]); |
|
||||||
break; |
|
||||||
case 'number': |
|
||||||
qs += 't'+(i)+'=num&d'+(i)+'='+escape(args[i]); |
|
||||||
break; |
|
||||||
case 'boolean': |
|
||||||
qs += 't'+(i)+'=bool&d'+(i)+'='+escape(args[i]); |
|
||||||
break; |
|
||||||
case 'object': |
|
||||||
if (args[i] == null) |
|
||||||
{ |
|
||||||
qs += 't'+(i)+'=null'; |
|
||||||
} |
|
||||||
else if (args[i] instanceof Date) |
|
||||||
{ |
|
||||||
qs += 't'+(i)+'=date&d'+(i)+'='+escape(args[i].getTime()); |
|
||||||
} |
|
||||||
else // array or object
|
|
||||||
{ |
|
||||||
try |
|
||||||
{ |
|
||||||
qs += 't'+(i)+'=xser&d'+(i)+'='+escape(this._serializeXML(args[i])); |
|
||||||
} |
|
||||||
catch (exception) |
|
||||||
{ |
|
||||||
throw new Exception("FlashSerializationException", |
|
||||||
"The following error occurred during complex object serialization: " + exception.getMessage()); |
|
||||||
} |
|
||||||
} |
|
||||||
break; |
|
||||||
default: |
|
||||||
throw new Exception("FlashSerializationException", |
|
||||||
"You can only serialize strings, numbers, booleans, dates, objects, arrays, nulls, and undefined."); |
|
||||||
} |
|
||||||
|
|
||||||
if (i != (args.length - 1)) |
|
||||||
{ |
|
||||||
qs += '&'; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
return qs; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Private |
|
||||||
*/ |
|
||||||
FlashSerializer.prototype._serializeXML = function(obj) |
|
||||||
{ |
|
||||||
var doc = new Object(); |
|
||||||
doc.xml = '<fp>';
|
|
||||||
this._serializeNode(obj, doc, null); |
|
||||||
doc.xml += '</fp>';
|
|
||||||
return doc.xml; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Private |
|
||||||
*/ |
|
||||||
FlashSerializer.prototype._serializeNode = function(obj, doc, name) |
|
||||||
{ |
|
||||||
switch(typeof(obj)) |
|
||||||
{ |
|
||||||
case 'undefined': |
|
||||||
doc.xml += '<undf'+this._addName(name)+'/>'; |
|
||||||
break; |
|
||||||
case 'string': |
|
||||||
doc.xml += '<str'+this._addName(name)+'>'+this._escapeXml(obj)+'</str>'; |
|
||||||
break; |
|
||||||
case 'number': |
|
||||||
doc.xml += '<num'+this._addName(name)+'>'+obj+'</num>'; |
|
||||||
break; |
|
||||||
case 'boolean': |
|
||||||
doc.xml += '<bool'+this._addName(name)+' val="'+obj+'"/>'; |
|
||||||
break; |
|
||||||
case 'object': |
|
||||||
if (obj == null) |
|
||||||
{ |
|
||||||
doc.xml += '<null'+this._addName(name)+'/>'; |
|
||||||
} |
|
||||||
else if (obj instanceof Date) |
|
||||||
{ |
|
||||||
doc.xml += '<date'+this._addName(name)+'>'+obj.getTime()+'</date>'; |
|
||||||
} |
|
||||||
else if (obj instanceof Array) |
|
||||||
{ |
|
||||||
doc.xml += '<array'+this._addName(name)+'>'; |
|
||||||
for (var i = 0; i < obj.length; ++i) |
|
||||||
{ |
|
||||||
this._serializeNode(obj[i], doc, null); |
|
||||||
} |
|
||||||
doc.xml += '</array>'; |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
doc.xml += '<obj'+this._addName(name)+'>'; |
|
||||||
for (var n in obj) |
|
||||||
{ |
|
||||||
if (typeof(obj[n]) == 'function') |
|
||||||
continue; |
|
||||||
this._serializeNode(obj[n], doc, n); |
|
||||||
} |
|
||||||
doc.xml += '</obj>'; |
|
||||||
} |
|
||||||
break; |
|
||||||
default: |
|
||||||
throw new Exception("FlashSerializationException", |
|
||||||
"You can only serialize strings, numbers, booleans, objects, dates, arrays, nulls and undefined"); |
|
||||||
break; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Private |
|
||||||
*/ |
|
||||||
FlashSerializer.prototype._addName= function(name) |
|
||||||
{ |
|
||||||
if (name != null) |
|
||||||
{ |
|
||||||
return ' name="'+name+'"'; |
|
||||||
} |
|
||||||
return ''; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Private |
|
||||||
*/ |
|
||||||
FlashSerializer.prototype._escapeXml = function(str) |
|
||||||
{ |
|
||||||
if (this.useCdata) |
|
||||||
return '<![CDATA['+str+']]>'; |
|
||||||
else |
|
||||||
return str.replace(/&/g,'&').replace(/</g,'<'); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* The FlashProxy object is what proxies function calls between JavaScript and Flash. |
|
||||||
* It handles all argument serialization issues. |
|
||||||
*/ |
|
||||||
|
|
||||||
/** |
|
||||||
* Instantiates a new FlashProxy object. Pass in a uniqueID and the name (including the path) |
|
||||||
* of the Flash proxy SWF. The ID is the same ID that needs to be passed into your Flash content as lcId. |
|
||||||
*/ |
|
||||||
function FlashProxy(uid, proxySwfName) |
|
||||||
{ |
|
||||||
this.uid = uid; |
|
||||||
this.proxySwfName = proxySwfName; |
|
||||||
this.flashSerializer = new FlashSerializer(false); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Call a function in your Flash content. Arguments should be: |
|
||||||
* 1. ActionScript function name to call, |
|
||||||
* 2. any number of additional arguments of type object, |
|
||||||
* array, string, number, boolean, date, null, or undefined.
|
|
||||||
*/ |
|
||||||
FlashProxy.prototype.call = function() |
|
||||||
{ |
|
||||||
|
|
||||||
if (arguments.length == 0) |
|
||||||
{ |
|
||||||
throw new Exception("Flash Proxy Exception", |
|
||||||
"The first argument should be the function name followed by any number of additional arguments."); |
|
||||||
} |
|
||||||
|
|
||||||
var qs = 'lcId=' + escape(this.uid) + '&functionName=' + escape(arguments[0]); |
|
||||||
|
|
||||||
if (arguments.length > 1) |
|
||||||
{ |
|
||||||
var justArgs = new Array(); |
|
||||||
for (var i = 1; i < arguments.length; ++i) |
|
||||||
{ |
|
||||||
justArgs.push(arguments[i]); |
|
||||||
} |
|
||||||
qs += ('&' + this.flashSerializer.serialize(justArgs)); |
|
||||||
} |
|
||||||
|
|
||||||
var divName = '_flash_proxy_' + this.uid; |
|
||||||
if(!document.getElementById(divName)) |
|
||||||
{ |
|
||||||
var newTarget = document.createElement("div"); |
|
||||||
newTarget.id = divName; |
|
||||||
document.body.appendChild(newTarget); |
|
||||||
} |
|
||||||
var target = document.getElementById(divName); |
|
||||||
var ft = new FlashTag(this.proxySwfName, 1, 1); |
|
||||||
ft.setVersion('6,0,65,0'); |
|
||||||
ft.setFlashvars(qs); |
|
||||||
target.innerHTML = ft.toString(); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* This is the function that proxies function calls from Flash to JavaScript. |
|
||||||
* It is called implicitly. |
|
||||||
*/ |
|
||||||
FlashProxy.callJS = function() |
|
||||||
{ |
|
||||||
var functionToCall = eval(arguments[0]); |
|
||||||
var argArray = new Array(); |
|
||||||
for (var i = 1; i < arguments.length; ++i) |
|
||||||
{ |
|
||||||
argArray.push(arguments[i]); |
|
||||||
} |
|
||||||
functionToCall.apply(functionToCall, argArray); |
|
||||||
} |
|
||||||
|
|
||||||
Binary file not shown.
@ -1,199 +0,0 @@ |
|||||||
/* |
|
||||||
JavaScriptProxy.as |
|
||||||
|
|
||||||
Part of the Flash / JavaScript Integration Kit |
|
||||||
http://www.macromedia.com/go/flashjavascript |
|
||||||
|
|
||||||
Created by: |
|
||||||
|
|
||||||
Mike Chambers |
|
||||||
http://weblogs.macromedia.com/mesh/ |
|
||||||
mesh@macromedia.com |
|
||||||
|
|
||||||
Christian Cantrell |
|
||||||
http://weblogs.macromedia.com/cantrell/ |
|
||||||
cantrell@macromedia.com |
|
||||||
|
|
||||||
---- |
|
||||||
Macromedia(r) Flash(r)./ JavaScript Integration Kit License |
|
||||||
|
|
||||||
|
|
||||||
Copyright (c) 2005 Macromedia, inc. All rights reserved. |
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification, |
|
||||||
are permitted provided that the following conditions are met: |
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice, this |
|
||||||
list of conditions and the following disclaimer. |
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice, |
|
||||||
this list of conditions and the following disclaimer in the documentation and/or |
|
||||||
other materials provided with the distribution. |
|
||||||
|
|
||||||
3. The end-user documentation included with the redistribution, if any, must |
|
||||||
include the following acknowledgment: |
|
||||||
|
|
||||||
"This product includes software developed by Macromedia, Inc. |
|
||||||
(http://www.macromedia.com)." |
|
||||||
|
|
||||||
Alternately, this acknowledgment may appear in the software itself, if and |
|
||||||
wherever such third-party acknowledgments normally appear. |
|
||||||
|
|
||||||
4. The name Macromedia must not be used to endorse or promote products derived |
|
||||||
from this software without prior written permission. For written permission, |
|
||||||
please contact devrelations@macromedia.com. |
|
||||||
|
|
||||||
5. Products derived from this software may not be called "Macromedia" or |
|
||||||
“Macromedia Flash”, nor may "Macromedia" or “Macromedia Flash” appear in their |
|
||||||
name. |
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, |
|
||||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND |
|
||||||
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MACROMEDIA OR |
|
||||||
ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
|
||||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT |
|
||||||
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
|
||||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH |
|
||||||
DAMAGE. |
|
||||||
|
|
||||||
*/ |
|
||||||
|
|
||||||
//import the serializer class |
|
||||||
import com.macromedia.javascript.JavaScriptSerializer; |
|
||||||
|
|
||||||
class com.macromedia.javascript.JavaScriptProxy |
|
||||||
{ |
|
||||||
private var instance:Object; |
|
||||||
private var lcId:String; |
|
||||||
private var receiving_lc:LocalConnection |
|
||||||
|
|
||||||
|
|
||||||
/* |
|
||||||
Constructor for Class |
|
||||||
Public |
|
||||||
|
|
||||||
Takes two arguments. |
|
||||||
|
|
||||||
lcId : REQUIRED : an id passed in from HTML / Javascript that is used to |
|
||||||
communicate with the gateway swf. The same id must be passed into |
|
||||||
the gateway swf. |
|
||||||
|
|
||||||
instance : the object / class instance that function call will be proxied to. |
|
||||||
This is required if function calls will be made from JavaScript |
|
||||||
to Flash |
|
||||||
|
|
||||||
*/ |
|
||||||
function JavaScriptProxy(lcId:String, instance:Object) |
|
||||||
{ |
|
||||||
|
|
||||||
//if either argument is undefined, JavaScript to Flash calls won't work. |
|
||||||
//So we just return. |
|
||||||
// |
|
||||||
//Flash to JavaScript calls will still work |
|
||||||
if(lcId == undefined || instance == undefined) |
|
||||||
{ |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
this.instance = instance; |
|
||||||
|
|
||||||
this.lcId = lcId; |
|
||||||
|
|
||||||
receiving_lc = new LocalConnection(); |
|
||||||
|
|
||||||
//the incoming function call will occur in the scope of receiving_lc, so we have |
|
||||||
//to set a property to let us get back to the correct scope. |
|
||||||
receiving_lc.controller = this; |
|
||||||
|
|
||||||
receiving_lc.callFlash = callFlash; |
|
||||||
|
|
||||||
//listen for incoming function calls |
|
||||||
receiving_lc.connect(this.lcId); |
|
||||||
} |
|
||||||
|
|
||||||
/* |
|
||||||
callFlash |
|
||||||
Private |
|
||||||
|
|
||||||
This is called by the FlashProxy in JavaScript to make a functon call into |
|
||||||
the Flash content. |
|
||||||
*/ |
|
||||||
private function callFlash(args:Array):Void |
|
||||||
{ |
|
||||||
//get a reference to the correct scope (this method is called in the scope |
|
||||||
//of the local connection object) |
|
||||||
var con:Object = this["controller"]; |
|
||||||
|
|
||||||
var functionName:Object = args.shift(); |
|
||||||
|
|
||||||
var f:Function = con.instance[functionName]; |
|
||||||
|
|
||||||
//call the function in the correct scope, passing the arguments |
|
||||||
f.apply(con.instance, args); |
|
||||||
} |
|
||||||
|
|
||||||
/* |
|
||||||
This proxies function calls to the server, which allows you to call JavaScript |
|
||||||
functions as if they were functions on JavaScriptProxy instance. |
|
||||||
|
|
||||||
i.e. |
|
||||||
|
|
||||||
var j:JavaScriptProxy = new JavaScriptProxy(); |
|
||||||
|
|
||||||
j.jsFunction("foo", [1, 2]); |
|
||||||
*/ |
|
||||||
public function __resolve(functionName:String):Function |
|
||||||
{ |
|
||||||
var f:Function = function() |
|
||||||
{ |
|
||||||
arguments.splice(0,0, functionName); |
|
||||||
var f:Function = call; |
|
||||||
f.apply(this, arguments); |
|
||||||
}; |
|
||||||
|
|
||||||
return f; |
|
||||||
} |
|
||||||
|
|
||||||
/* |
|
||||||
call |
|
||||||
public |
|
||||||
|
|
||||||
This is used to call functions within JavaScript. |
|
||||||
|
|
||||||
functionName : A string of the name of the function being called in JavaScript. |
|
||||||
|
|
||||||
a1, a2 ... an : subsequesnt arguments will be passed to the JavaScript function. |
|
||||||
|
|
||||||
Example: |
|
||||||
|
|
||||||
var j:JavaScriptProxy = new JavaScriptProxy(); |
|
||||||
|
|
||||||
j.call("jsFunction", "foo", [1, 2]); |
|
||||||
*/ |
|
||||||
public function call(functionName:String):Void |
|
||||||
{ |
|
||||||
var len:Number = arguments.length; |
|
||||||
|
|
||||||
var argsString:String = ""; |
|
||||||
|
|
||||||
//Serialize the arguments |
|
||||||
for(var i:Number = 0; i < len; i++) |
|
||||||
{ |
|
||||||
argsString += JavaScriptSerializer.serializeItem(arguments[i]); |
|
||||||
|
|
||||||
if(i != len - 1) |
|
||||||
{ |
|
||||||
argsString += ","; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
//Created the javascript URL |
|
||||||
var callString:String = "javascript:FlashProxy.callJS(" + argsString + ");"; |
|
||||||
|
|
||||||
//call out into the HTML / JavaScript environment |
|
||||||
getURL(callString); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
@ -1,478 +0,0 @@ |
|||||||
/* |
|
||||||
JavaScriptSerializer.as |
|
||||||
|
|
||||||
Part of the Flash / JavaScript Integration Kit |
|
||||||
http://www.macromedia.com/go/flashjavascript |
|
||||||
|
|
||||||
Created by: |
|
||||||
|
|
||||||
Mike Chambers |
|
||||||
http://weblogs.macromedia.com/mesh/ |
|
||||||
mesh@macromedia.com |
|
||||||
|
|
||||||
Christian Cantrell |
|
||||||
http://weblogs.macromedia.com/cantrell/ |
|
||||||
cantrell@macromedia.com |
|
||||||
|
|
||||||
---- |
|
||||||
Macromedia(r) Flash(r)./ JavaScript Integration Kit License |
|
||||||
|
|
||||||
|
|
||||||
Copyright (c) 2005 Macromedia, inc. All rights reserved. |
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification, |
|
||||||
are permitted provided that the following conditions are met: |
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice, this |
|
||||||
list of conditions and the following disclaimer. |
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice, |
|
||||||
this list of conditions and the following disclaimer in the documentation and/or |
|
||||||
other materials provided with the distribution. |
|
||||||
|
|
||||||
3. The end-user documentation included with the redistribution, if any, must |
|
||||||
include the following acknowledgment: |
|
||||||
|
|
||||||
"This product includes software developed by Macromedia, Inc. |
|
||||||
(http://www.macromedia.com)." |
|
||||||
|
|
||||||
Alternately, this acknowledgment may appear in the software itself, if and |
|
||||||
wherever such third-party acknowledgments normally appear. |
|
||||||
|
|
||||||
4. The name Macromedia must not be used to endorse or promote products derived |
|
||||||
from this software without prior written permission. For written permission, |
|
||||||
please contact devrelations@macromedia.com. |
|
||||||
|
|
||||||
5. Products derived from this software may not be called "Macromedia" or |
|
||||||
“Macromedia Flash”, nor may "Macromedia" or “Macromedia Flash” appear in their |
|
||||||
name. |
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, |
|
||||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND |
|
||||||
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MACROMEDIA OR |
|
||||||
ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
|
||||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT |
|
||||||
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
|
||||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH |
|
||||||
DAMAGE. |
|
||||||
|
|
||||||
*/ |
|
||||||
|
|
||||||
class com.macromedia.javascript.JavaScriptSerializer |
|
||||||
{ |
|
||||||
|
|
||||||
/**************** Serialization Methods ****************/ |
|
||||||
|
|
||||||
/* |
|
||||||
Static function that serializes any supported data types. |
|
||||||
|
|
||||||
Returns a String |
|
||||||
*/ |
|
||||||
public static function serializeItem(item:Object):String |
|
||||||
{ |
|
||||||
var type:String = typeof(item); |
|
||||||
var out:String; |
|
||||||
|
|
||||||
switch (type) |
|
||||||
{ |
|
||||||
case "string": |
|
||||||
{ |
|
||||||
out = JavaScriptSerializer.serializeString(String(item)); |
|
||||||
break; |
|
||||||
} |
|
||||||
case "number": |
|
||||||
{ |
|
||||||
out = JavaScriptSerializer.serializeNumber(Number(item)); |
|
||||||
break; |
|
||||||
} |
|
||||||
case "boolean": |
|
||||||
{ |
|
||||||
out = JavaScriptSerializer.serializeBoolean(Boolean(item)); |
|
||||||
break; |
|
||||||
} |
|
||||||
case "null": |
|
||||||
{ |
|
||||||
out = JavaScriptSerializer.serializeNull(); |
|
||||||
break; |
|
||||||
} |
|
||||||
case "undefined": |
|
||||||
{ |
|
||||||
out = JavaScriptSerializer.serializeUndefined(); |
|
||||||
break; |
|
||||||
} |
|
||||||
case "object": |
|
||||||
{ |
|
||||||
if(item instanceof Date) |
|
||||||
{ |
|
||||||
out = JavaScriptSerializer.serializeDate(new Date(item.getTime())); |
|
||||||
} |
|
||||||
else if(item instanceof Array) |
|
||||||
{ |
|
||||||
out = JavaScriptSerializer.serializeArray(item); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
//treat it as regular Object |
|
||||||
out = JavaScriptSerializer.serializeObject(item); |
|
||||||
} |
|
||||||
|
|
||||||
break; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
return out; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
/* Serializes an Object */ |
|
||||||
public static function serializeObject(o:Object):String |
|
||||||
{ |
|
||||||
var sb:String = "{"; |
|
||||||
|
|
||||||
for(var x:String in o) |
|
||||||
{ |
|
||||||
|
|
||||||
//dont include functions |
|
||||||
if(typeof(x[o]) == "function") |
|
||||||
{ |
|
||||||
continue; |
|
||||||
} |
|
||||||
|
|
||||||
sb += x + ":" + serializeItem(o[x]) + ","; |
|
||||||
} |
|
||||||
|
|
||||||
//remove the trailing "," |
|
||||||
if(sb.substring(sb.length - 1) == ",") |
|
||||||
{ |
|
||||||
sb = sb.substring(0, sb.length - 1); |
|
||||||
} |
|
||||||
|
|
||||||
sb += "}"; |
|
||||||
|
|
||||||
return sb; |
|
||||||
} |
|
||||||
|
|
||||||
/* Serializes an Array */ |
|
||||||
//not typed since I can't cast an object to Array |
|
||||||
public static function serializeArray(o):String |
|
||||||
{ |
|
||||||
var len:Number = o.length; |
|
||||||
|
|
||||||
var sb:String = "["; |
|
||||||
|
|
||||||
for(var i:Number = 0; i < len; i++) |
|
||||||
{ |
|
||||||
sb += serializeItem(o[i]); |
|
||||||
|
|
||||||
if(i != len - 1) |
|
||||||
{ |
|
||||||
sb += ","; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
sb += "]"; |
|
||||||
|
|
||||||
return sb; |
|
||||||
} |
|
||||||
|
|
||||||
/* Serializes a String */ |
|
||||||
public static function serializeString(s:String):String |
|
||||||
{ |
|
||||||
return "'" + s + "'"; |
|
||||||
} |
|
||||||
|
|
||||||
/* Serializes a Number */ |
|
||||||
public static function serializeNumber(n:Number):String |
|
||||||
{ |
|
||||||
return String(n); |
|
||||||
} |
|
||||||
|
|
||||||
/* Serializes a Boolean value */ |
|
||||||
public static function serializeBoolean(b:Boolean):String |
|
||||||
{ |
|
||||||
return String(b); |
|
||||||
} |
|
||||||
|
|
||||||
/* Serializes undefined */ |
|
||||||
public static function serializeUndefined(Void):String |
|
||||||
{ |
|
||||||
return "undefined"; |
|
||||||
} |
|
||||||
|
|
||||||
/* Serializes null */ |
|
||||||
public static function serializeNull(Void):String |
|
||||||
{ |
|
||||||
return "null"; |
|
||||||
} |
|
||||||
|
|
||||||
/* Serializes a Date */ |
|
||||||
public static function serializeDate(d:Date):String |
|
||||||
{ |
|
||||||
return "new Date(" + d.getTime() + ")"; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/**************** De-Serialization Methods ****************/ |
|
||||||
|
|
||||||
/* |
|
||||||
Static function that de-serializes any supported data types. |
|
||||||
|
|
||||||
Returns a String |
|
||||||
*/ |
|
||||||
public static function deserializeItem(type:String, data:String):Object |
|
||||||
{ |
|
||||||
var out:Object; |
|
||||||
|
|
||||||
switch (type) |
|
||||||
{ |
|
||||||
case "str": |
|
||||||
{ |
|
||||||
out = JavaScriptSerializer.deserializeString(data); |
|
||||||
break; |
|
||||||
} |
|
||||||
case "num": |
|
||||||
{ |
|
||||||
out = JavaScriptSerializer.deserializeNumber(data); |
|
||||||
break; |
|
||||||
} |
|
||||||
case "bool": |
|
||||||
{ |
|
||||||
out = JavaScriptSerializer.deserializeBoolean(data); |
|
||||||
break; |
|
||||||
} |
|
||||||
case "null": |
|
||||||
{ |
|
||||||
out = JavaScriptSerializer.deserializeNull(); |
|
||||||
break; |
|
||||||
} |
|
||||||
case "undf": |
|
||||||
{ |
|
||||||
out = JavaScriptSerializer.deserializeUndefined(); |
|
||||||
break; |
|
||||||
} |
|
||||||
case "date": |
|
||||||
{ |
|
||||||
out = JavaScriptSerializer.deserializeDate(data); |
|
||||||
|
|
||||||
break; |
|
||||||
} |
|
||||||
case "xser": |
|
||||||
{ |
|
||||||
out = JavaScriptSerializer.deserializeXMLSerializedItem(data); |
|
||||||
|
|
||||||
trace(data); |
|
||||||
|
|
||||||
break; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
return out; |
|
||||||
} |
|
||||||
|
|
||||||
/* Deserializes a String */ |
|
||||||
public static function deserializeString(s:String):String |
|
||||||
{ |
|
||||||
return s; |
|
||||||
} |
|
||||||
|
|
||||||
/* Deserializes a Number */ |
|
||||||
public static function deserializeNumber(s:String):Number |
|
||||||
{ |
|
||||||
return Number(s); |
|
||||||
} |
|
||||||
|
|
||||||
/* Deserializes a Boolean Value */ |
|
||||||
public static function deserializeBoolean(s:String):String |
|
||||||
{ |
|
||||||
return Boolean(s); |
|
||||||
} |
|
||||||
|
|
||||||
/* Deserializes undefined */ |
|
||||||
//returns undefined |
|
||||||
public static function deserializeUndefined(s:String) |
|
||||||
{ |
|
||||||
return undefined; |
|
||||||
} |
|
||||||
|
|
||||||
/* Deserializes null */ |
|
||||||
//returns null |
|
||||||
public static function deserializeNull(s:String) |
|
||||||
{ |
|
||||||
return null; |
|
||||||
} |
|
||||||
|
|
||||||
/* Deserializes a Date */ |
|
||||||
public static function deserializeDate(s:String):Date |
|
||||||
{ |
|
||||||
return new Date(Number(s)); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/**************** De-Serialization XML Methods ****************/ |
|
||||||
|
|
||||||
/* |
|
||||||
The methods below are for deserializing data serialized in XML format. |
|
||||||
|
|
||||||
This is used for serializing Objects and Arrays |
|
||||||
*/ |
|
||||||
|
|
||||||
|
|
||||||
/* |
|
||||||
Static function that de-serializes any supported XML serialized data types. |
|
||||||
|
|
||||||
Returns a String |
|
||||||
*/ |
|
||||||
public static function deserializeXMLSerializedItem(data:String):Object |
|
||||||
{ |
|
||||||
var x:XML = new XML(); |
|
||||||
x.ignoreWhite = true; |
|
||||||
x.parseXML(data); |
|
||||||
|
|
||||||
var out:Object = parseNode(x.firstChild.firstChild, new Object); |
|
||||||
|
|
||||||
return out; |
|
||||||
} |
|
||||||
|
|
||||||
/* recursive function that parses the xml tree */ |
|
||||||
public static function parseNode(x:XMLNode, o:Object):Object |
|
||||||
{ |
|
||||||
|
|
||||||
var nodeName:String = x.nodeName; |
|
||||||
var nodeValue:String = x.firstChild.nodeValue; |
|
||||||
var varName:String = x.attributes["name"]; |
|
||||||
|
|
||||||
var children:Array = x.childNodes; |
|
||||||
var len:Number = children.length; |
|
||||||
|
|
||||||
switch(nodeName) |
|
||||||
{ |
|
||||||
case "obj": |
|
||||||
{ |
|
||||||
if(varName == null) |
|
||||||
{ |
|
||||||
o = new Object(); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
o[varName] = new Object(); |
|
||||||
} |
|
||||||
break; |
|
||||||
} |
|
||||||
case "str": |
|
||||||
{ |
|
||||||
if(varName == undefined) |
|
||||||
{ |
|
||||||
o = String(nodeValue); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
o[varName] = nodeValue; |
|
||||||
} |
|
||||||
|
|
||||||
break; |
|
||||||
} |
|
||||||
case "num": |
|
||||||
{ |
|
||||||
if(varName == null) |
|
||||||
{ |
|
||||||
o = Number(nodeValue); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
o[varName] = Number(nodeValue); |
|
||||||
} |
|
||||||
|
|
||||||
break; |
|
||||||
} |
|
||||||
case "bool": |
|
||||||
{ |
|
||||||
if(varName == null) |
|
||||||
{ |
|
||||||
o = Boolean(nodeValue); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
o[varName] = Boolean(nodeValue); |
|
||||||
} |
|
||||||
|
|
||||||
break; |
|
||||||
} |
|
||||||
case "null": |
|
||||||
{ |
|
||||||
if(varName == null) |
|
||||||
{ |
|
||||||
o = null; |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
o[varName] = null; |
|
||||||
} |
|
||||||
|
|
||||||
break; |
|
||||||
} |
|
||||||
case "undf": |
|
||||||
{ |
|
||||||
if(varName == null) |
|
||||||
{ |
|
||||||
o = undefined; |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
o[varName] = undefined; |
|
||||||
} |
|
||||||
|
|
||||||
break; |
|
||||||
} |
|
||||||
case "date": |
|
||||||
{ |
|
||||||
if(varName == null) |
|
||||||
{ |
|
||||||
o = new Date(Number(nodeValue)); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
o[varName] = new Date(Number(nodeValue)); |
|
||||||
} |
|
||||||
|
|
||||||
break; |
|
||||||
} |
|
||||||
case "array": |
|
||||||
{ |
|
||||||
//this is not typed because the compiler gets confused about |
|
||||||
//the explicit type change for o below. |
|
||||||
var arr; |
|
||||||
if(varName == null) |
|
||||||
{ |
|
||||||
o = new Array(); |
|
||||||
arr = o; |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
o[varName] = new Array(); |
|
||||||
arr = o[varName]; |
|
||||||
} |
|
||||||
|
|
||||||
for(var x:Number = 0; x < len; x++) |
|
||||||
{ |
|
||||||
arr.push(parseNode(children[x], o)); |
|
||||||
} |
|
||||||
|
|
||||||
return arr; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
for(var i:Number = 0; i < len; i++) |
|
||||||
{ |
|
||||||
parseNode(children[i], o); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
return o; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} |
|
||||||
@ -1,104 +0,0 @@ |
|||||||
// in je FORM-tag voor de hotspots: onSubmit="return validateFlashVar('MINIMUM_AANTAL_CLICKS');
|
|
||||||
|
|
||||||
var flashVar = 1; |
|
||||||
|
|
||||||
var lcId = new Date().getTime(); |
|
||||||
//var flashProxy = new FlashProxy(lcId, "JavaScriptFlashGateway.swf");
|
|
||||||
|
|
||||||
function validateFlashVar(counter, lang_1, lang_2) |
|
||||||
{ |
|
||||||
return true; |
|
||||||
//alert(counter);
|
|
||||||
//alert(flashVar);
|
|
||||||
|
|
||||||
if(counter != flashVar) |
|
||||||
{ |
|
||||||
alert(lang_1 + counter + lang_2); |
|
||||||
|
|
||||||
return false; |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
return true; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
function updateFlashVar() |
|
||||||
{ |
|
||||||
//alert('updateFlashVar: ' + flashVar);
|
|
||||||
flashVar++; |
|
||||||
} |
|
||||||
|
|
||||||
/* |
|
||||||
* Save the results of the positioning of a point by the user on top of |
|
||||||
* the answer area. |
|
||||||
* @param int Question ID |
|
||||||
* @param int ID of the area (square or ellipse) |
|
||||||
* @param int Whether the answer is correct or not |
|
||||||
* @param int X-coordinate (horizontal) of the answer point |
|
||||||
* @param int Y-coordinate (vertical) of the answer point
|
|
||||||
*/ |
|
||||||
function saveHotspot(question_id, hotspot_id, answer, hotspot_x, hotspot_y) |
|
||||||
{ |
|
||||||
newHotspot = document.createElement("input"); |
|
||||||
newHotspot.type = "hidden"; |
|
||||||
newHotspot.name = "hotspot["+question_id+"]["+hotspot_id+"]"; |
|
||||||
newHotspot.value = hotspot_x + ";" + hotspot_y;
|
|
||||||
document.frm_exercise.appendChild(newHotspot); |
|
||||||
|
|
||||||
newHotspot = document.createElement("input"); |
|
||||||
newHotspot.type = "hidden"; |
|
||||||
newHotspot.name = "choice["+question_id+"]["+hotspot_id+"]"; |
|
||||||
newHotspot.value = answer;
|
|
||||||
document.frm_exercise.appendChild(newHotspot); |
|
||||||
} |
|
||||||
/* |
|
||||||
* Save the results of the positioning of a point by the user on top of |
|
||||||
* the answer area ( for polygons and delineation ) |
|
||||||
* @param int Question ID |
|
||||||
* @param int ID of the area (square or ellipse) |
|
||||||
* @param int Whether the answer is correct or not |
|
||||||
* @param array Coordinates (horizontal+vertical) of the answer points, in an array |
|
||||||
*/ |
|
||||||
function saveDelineationUserAnswer(question_id, hotspot_id, answer, coordinates) |
|
||||||
{ |
|
||||||
newHotspot = document.createElement("input"); |
|
||||||
newHotspot.type = "hidden"; |
|
||||||
newHotspot.name = "hotspot["+question_id+"]["+hotspot_id+"]"; |
|
||||||
newHotspot.value = coordinates; |
|
||||||
document.frm_exercise.appendChild(newHotspot); |
|
||||||
|
|
||||||
newHotspot = document.createElement("input"); |
|
||||||
newHotspot.type = "hidden"; |
|
||||||
newHotspot.name = "choice["+question_id+"]["+hotspot_id+"]"; |
|
||||||
newHotspot.value = answer;
|
|
||||||
document.frm_exercise.appendChild(newHotspot); |
|
||||||
} |
|
||||||
|
|
||||||
function saveShapeHotspot(question_id, hotspot_id, type, x, y, w, h) |
|
||||||
{ |
|
||||||
document.frm_exercise["hotspot_coordinates["+hotspot_id+"]"].value = x + ";" + y + "|" + w + "|" + h; |
|
||||||
document.frm_exercise["hotspot_type["+hotspot_id+"]"].value = type; |
|
||||||
} |
|
||||||
|
|
||||||
function savePolyHotspot(question_id, hotspot_id, coordinates) |
|
||||||
{ |
|
||||||
document.frm_exercise["hotspot_coordinates["+hotspot_id+"]"].value = coordinates; |
|
||||||
document.frm_exercise["hotspot_type["+hotspot_id+"]"].value = "poly"; |
|
||||||
} |
|
||||||
|
|
||||||
function saveDelineationHotspot(question_id, hotspot_id, coordinates) |
|
||||||
{ |
|
||||||
document.frm_exercise["hotspot_coordinates["+hotspot_id+"]"].value = coordinates; |
|
||||||
document.frm_exercise["hotspot_type["+hotspot_id+"]"].value = "delineation"; |
|
||||||
} |
|
||||||
|
|
||||||
function saveOARHotspot(question_id, hotspot_id, coordinates) |
|
||||||
{ |
|
||||||
document.frm_exercise["hotspot_coordinates["+hotspot_id+"]"].value = coordinates; |
|
||||||
document.frm_exercise["hotspot_type["+hotspot_id+"]"].value = "oar"; |
|
||||||
} |
|
||||||
function jsdebug(debug_string) |
|
||||||
{ |
|
||||||
alert(debug_string); |
|
||||||
} |
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,349 +0,0 @@ |
|||||||
// javascript Proxy |
|
||||||
import com.macromedia.javascript.JavaScriptProxy; |
|
||||||
var JS_proxy:JavaScriptProxy = new JavaScriptProxy(); |
|
||||||
|
|
||||||
System.useCodepage = true; |
|
||||||
|
|
||||||
// get id from querystring |
|
||||||
myURL = this._url; |
|
||||||
//myURL = "http://localhost/dokeosSVN/main/plugin/hotspot/hotspot_solution.swf?modifyAnswers=1&exe_id=2&from_db=3"; |
|
||||||
tmpAr = myURL.split("?"); |
|
||||||
tmpAr = tmpAr[1].split("&"); |
|
||||||
id = tmpAr[0].split("="); |
|
||||||
id = id[1]; |
|
||||||
exe_id = tmpAr[1].split("="); |
|
||||||
exe_id = exe_id[1]; |
|
||||||
from_db = tmpAr[2].split("="); |
|
||||||
from_db = from_db[1]; |
|
||||||
|
|
||||||
// get URL to load lang and hotspot variables |
|
||||||
|
|
||||||
//myURL = this._url; |
|
||||||
myPos = myURL.lastIndexOf("/"); |
|
||||||
myURL = myURL.substring(0, myPos); |
|
||||||
myPos = myURL.lastIndexOf("/"); |
|
||||||
myURL = myURL.substring(0, myPos); |
|
||||||
myPos = myURL.lastIndexOf("/"); |
|
||||||
myURL = myURL.substring(0, myPos); |
|
||||||
|
|
||||||
// movie properties |
|
||||||
var movieWidth:Number = 380; |
|
||||||
var movieHeight:Number = 400; |
|
||||||
|
|
||||||
// hotspot properties |
|
||||||
var startWidth:Number = 0; // \__ if these values are set, shape will be drawn right and down from the mouse; |
|
||||||
var startHeight:Number = 0; // / |
|
||||||
var pType:String = ""; // possible values: circle, square, poly; |
|
||||||
|
|
||||||
// other settings |
|
||||||
var i:Number = 1; |
|
||||||
var isDrawing:Boolean = false; |
|
||||||
var hotspots_c:Array = new Array('0x4271B5','0xFE8E16','0x45C7F0','0xBCD631','0xD63173','0xD7D7D7','0x90AFDD','0xAF8640','0x4F9242','0xF4EB24','0xED2024','0x3B3B3B'); |
|
||||||
|
|
||||||
// make array with all elements |
|
||||||
var hotspots:Array = new Array(); |
|
||||||
|
|
||||||
// get data from database |
|
||||||
this.createEmptyMovieClip("target_mc", 2000); |
|
||||||
//_answers |
|
||||||
loadVariables(myURL + "/exercice/hotspot_answers.as.php?modifyAnswers="+id+"&exe_id="+exe_id+"&from_db="+from_db, target_mc); |
|
||||||
var param_interval:Number = setInterval(checkParamsLoaded, 100); |
|
||||||
|
|
||||||
// language variables |
|
||||||
var str_choose:String = ""; |
|
||||||
var lang_interval:Number |
|
||||||
|
|
||||||
// counter for language (if language can't be loaded after 2 sec, |
|
||||||
// english will be loaded |
|
||||||
var counter:Number = 0; |
|
||||||
|
|
||||||
// booleans for loading |
|
||||||
var langLoaded:Boolean = false; |
|
||||||
var varsLoaded:Boolean = false; |
|
||||||
var imageLoaded:Boolean = false; |
|
||||||
|
|
||||||
// image preloader |
|
||||||
var loadListener:Object = new Object(); |
|
||||||
loadListener.onLoadComplete = function(){ |
|
||||||
_root.imageLoaded = true; |
|
||||||
_root.showInterface(); |
|
||||||
} |
|
||||||
var mcLoader:MovieClipLoader = new MovieClipLoader(); |
|
||||||
mcLoader.addListener(loadListener); |
|
||||||
var mc:MovieClip = _root.image_mc; |
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||||
// FUNCTIONS |
|
||||||
///////////////////////////////////////////////////////////////////////////////// |
|
||||||
|
|
||||||
// show hotspots, user can't click anymore |
|
||||||
function showHotspots(num){ |
|
||||||
for(j=1;j<=_root.hotspots.length;j++){ |
|
||||||
_root.map_mc["hotspot"+j]._alpha = num; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
function showUserpoints(num){ |
|
||||||
for(j=1;j<=_root.hotspots.length;j++){ |
|
||||||
_root["hotspot_answer"+j]._alpha = num; |
|
||||||
if(num==0){ |
|
||||||
_root["hotspot_answer"+j].hotspot_mc._visible = false; |
|
||||||
}else{ |
|
||||||
_root["hotspot_answer"+j].hotspot_mc._visible = true; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
function showInterface(){ |
|
||||||
if((_root.langLoaded == true) and (_root.varsLoaded == true) and (_root.imageLoaded == true)){ |
|
||||||
_root.showUserpoints(100); |
|
||||||
_root.showHotspots(100); |
|
||||||
_root.loading_mc._visible = false; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// get language file |
|
||||||
function getLang(){ |
|
||||||
counter++; |
|
||||||
if (_root.lang_mc.done != undefined) { |
|
||||||
_root.show_userPoints_btn.label = _root.lang_mc.showUserPoints; |
|
||||||
_root.show_hotspots_btn.label = _root.lang_mc.showHotspots; |
|
||||||
|
|
||||||
// check if interface can be showed (if everything else is loaded) |
|
||||||
_root.langLoaded = true; |
|
||||||
_root.showInterface(); |
|
||||||
|
|
||||||
// clear interval |
|
||||||
clearInterval(_root.lang_interval); |
|
||||||
}else if(counter==20){ |
|
||||||
// clear interval |
|
||||||
clearInterval(_root.lang_interval); |
|
||||||
|
|
||||||
// set counter to zero |
|
||||||
_root.counter = 0; |
|
||||||
|
|
||||||
// set new interval (get english version) |
|
||||||
loadVariables(myURL + "/lang/english/hotspot.inc.php", _root.lang_mc); |
|
||||||
_root.lang_interval = setInterval(getLang, 100); |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
function checkParamsLoaded() { |
|
||||||
if (target_mc.done != undefined) { |
|
||||||
// once we know the language, get language-variables from language file |
|
||||||
language = target_mc["hotspot_lang"]; |
|
||||||
_root.createEmptyMovieClip("lang_mc", 2001); |
|
||||||
|
|
||||||
//loadVariables(myURL + "/lang/" + language + "/hotspot.inc.php", _root.lang_mc); |
|
||||||
loadVariables(myURL + "/exercice/hotspot.inc.php", _root.lang_mc); |
|
||||||
|
|
||||||
_root.lang_interval = setInterval(getLang, 100); |
|
||||||
|
|
||||||
// start loading external image |
|
||||||
_root.mcLoader.loadClip("../../courses/" + target_mc["courseCode"] + "/document/images/" + target_mc["hotspot_image"], mc); |
|
||||||
|
|
||||||
// make needed array's: filled if hotspot exists, empty if not |
|
||||||
for(m = 1; m <= 12; m++){ |
|
||||||
// make seperate lists |
|
||||||
if(target_mc["hotspot_" + m]=="true"){ |
|
||||||
// add to general list |
|
||||||
tmpAr = Array(); |
|
||||||
tmpAr.push(m); |
|
||||||
tmpAr.push(target_mc["hotspot_" + m + "_type"]); |
|
||||||
_root.hotspots.push(tmpAr); |
|
||||||
|
|
||||||
if (target_mc["hotspot_" + m + "_type"] != 'poly' && target_mc["hotspot_" + m + "_type"] != 'delineation'){ |
|
||||||
// x;y|height|width |
|
||||||
_root["p_hotspot_" + m] = new Array; |
|
||||||
$coordinates = target_mc["hotspot_" + m + "_coord"].split("|"); |
|
||||||
$tmp_xy = $coordinates[0].split(";"); |
|
||||||
$x = $tmp_xy[0]; |
|
||||||
$y = $tmp_xy[1]; |
|
||||||
$height = $coordinates[1]; |
|
||||||
$widht = $coordinates[2]; |
|
||||||
_root["p_hotspot_" + m].push($x); |
|
||||||
_root["p_hotspot_" + m].push($y); |
|
||||||
_root["p_hotspot_" + m].push($height); |
|
||||||
_root["p_hotspot_" + m].push($widht); |
|
||||||
}else{ |
|
||||||
// p1_x;p1_y|p2_x;p2_y|... |
|
||||||
_root["p_hotspot_" + m] = new Array(); |
|
||||||
$coordinates = target_mc["hotspot_" + m + "_coord"].split("|"); |
|
||||||
|
|
||||||
for(k=0;k<$coordinates.length;k++){ |
|
||||||
$tmp_xy = $coordinates[k].split(";"); |
|
||||||
tempArray = Array(); |
|
||||||
tempArray.push($tmp_xy[0]); |
|
||||||
tempArray.push($tmp_xy[1]); |
|
||||||
_root["p_hotspot_" + m].push(tempArray); |
|
||||||
} |
|
||||||
} |
|
||||||
}else{ |
|
||||||
_root["p_hotspot_" + m] = Array(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// set border around image |
|
||||||
_root.map_mc._width = int(target_mc.hotspot_image_width) + 1; |
|
||||||
_root.map_mc._height = int(target_mc.hotspot_image_height) + 1; |
|
||||||
|
|
||||||
// draw the hotspots |
|
||||||
drawShapes(); |
|
||||||
|
|
||||||
// check if interface can be showed (if everything else is loaded) |
|
||||||
_root.varsLoaded = true; |
|
||||||
_root.showInterface(); |
|
||||||
|
|
||||||
// clear interval |
|
||||||
clearInterval(param_interval); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// draw the shapes that are given from the database |
|
||||||
function drawShapes(){ |
|
||||||
// draw points where user clicked |
|
||||||
_root.drawPoints(); |
|
||||||
|
|
||||||
// draw hotspots |
|
||||||
for (var j:String in hotspots) { |
|
||||||
if(j <> ""){ |
|
||||||
// +1 because array names starts from 1 |
|
||||||
_root.i = int(j) + 1; |
|
||||||
// -1 because array values starts from 0 |
|
||||||
_root.pType = _root.hotspots[_root.i - 1][1]; |
|
||||||
if(_root.pType=="poly" || _root.pType=="delineation"){ |
|
||||||
drawPoly(); |
|
||||||
} |
|
||||||
else{ |
|
||||||
drawShape(true); |
|
||||||
} |
|
||||||
_root.map_mc["hotspot" + _root.i]._alpha = 0; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
function drawPoints(){ |
|
||||||
answers = _root.target_mc.p_hotspot_answers.split("|"); |
|
||||||
|
|
||||||
if(answers[0]!=''){ |
|
||||||
j = 1; |
|
||||||
k = 500; |
|
||||||
|
|
||||||
for(var z:String in answers){ |
|
||||||
if(target_mc["hotspot_"+j+"_type"]=="delineation") |
|
||||||
{ |
|
||||||
// trace poly |
|
||||||
delineation_coords = answers[j-1].split("/"); |
|
||||||
drawDelineation(j, delineation_coords); |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
|
|
||||||
xy = answers[j-1].split(";"); |
|
||||||
$x = xy[0]; |
|
||||||
$y = xy[1]; |
|
||||||
|
|
||||||
// create new hotspot |
|
||||||
_root.createEmptyMovieClip("hotspot_answer" + j, k); |
|
||||||
|
|
||||||
// attach correct type of hotspot |
|
||||||
_root["hotspot_answer" + j].attachMovie("numbers", "hotspot_mc", _root["hotspot_answer" + j].getNextHighestDepth()); |
|
||||||
|
|
||||||
_root["hotspot_answer" + j].hotspot_mc._width = 33; |
|
||||||
_root["hotspot_answer" + j].hotspot_mc._height = 22; |
|
||||||
|
|
||||||
_root["hotspot_answer" + j].hotspot_mc._x = int($x) + _root.map_mc._x; |
|
||||||
_root["hotspot_answer" + j].hotspot_mc._y = int($y) + _root.map_mc._y; |
|
||||||
|
|
||||||
_root["hotspot_answer" + j].hotspot_mc.order_txt.text = int(j); |
|
||||||
_root["hotspot_answer" + j].hotspot_mc._visible = false; |
|
||||||
|
|
||||||
_root["hotspot_answer" + j]._alpha = 0; |
|
||||||
} |
|
||||||
|
|
||||||
j++; |
|
||||||
k++; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
function drawShape(userDrawing){ |
|
||||||
// create new hotspot |
|
||||||
_root.map_mc.createEmptyMovieClip("hotspot" + _root.i, _root.i); |
|
||||||
|
|
||||||
// attach correct type of hotspot |
|
||||||
_root.map_mc["hotspot" + _root.i].attachMovie(_root.pType, "hotspot_mc", _root.map_mc["hotspot" + _root.i].getNextHighestDepth()); |
|
||||||
|
|
||||||
_root.map_mc["hotspot" + _root.i].hotspot_mc._visible = true; |
|
||||||
_root.map_mc["hotspot" + _root.i].hotspot_mc.center_mc._alpha = 60; |
|
||||||
_root.map_mc["hotspot" + _root.i].hotspot_mc._x = _root["p_hotspot_"+ _root.i][0]; |
|
||||||
_root.map_mc["hotspot" + _root.i].hotspot_mc._y = _root["p_hotspot_"+ _root.i][1]; |
|
||||||
_root.map_mc["hotspot" + _root.i].hotspot_mc._width = _root["p_hotspot_"+ _root.i][2]; |
|
||||||
_root.map_mc["hotspot" + _root.i].hotspot_mc._height = _root["p_hotspot_"+ _root.i][3]; |
|
||||||
|
|
||||||
colorchange = new Color(_root.map_mc["hotspot" + _root.i].hotspot_mc); |
|
||||||
colorchange.setRGB(_root.hotspots_c[_root.i - 1]); |
|
||||||
} |
|
||||||
// when black lines of hotspots are deleted, draw the exact same poly with coordinates |
|
||||||
// that are saved in the array |
|
||||||
function drawPoly(){ |
|
||||||
// create empty movieclip |
|
||||||
_root.map_mc.createEmptyMovieClip("hotspot" + _root.i, _root.i); |
|
||||||
|
|
||||||
// begin filling the movieclip |
|
||||||
_root.map_mc["hotspot" + _root.i].beginFill(_root.hotspots_c[_root.i - 1], 60); |
|
||||||
|
|
||||||
// set linestyle |
|
||||||
_root.map_mc["hotspot" + _root.i].lineStyle(1, _root.hotspots_c[_root.i - 1], 100); |
|
||||||
|
|
||||||
// move mouse to first coordinate |
|
||||||
_root.map_mc["hotspot" + _root.i].moveTo(_root["p_hotspot_"+_root.i][0][0],_root["p_hotspot_"+_root.i][0][1]); |
|
||||||
|
|
||||||
// draw lines to all coordinates |
|
||||||
v = _root["p_hotspot_"+_root.i].length; |
|
||||||
for (k=1;k<v;k++){ |
|
||||||
_root.map_mc["hotspot" + _root.i].lineTo(_root["p_hotspot_"+_root.i][k][0],_root["p_hotspot_"+_root.i][k][1]); |
|
||||||
} |
|
||||||
|
|
||||||
// attach first and last coordinates |
|
||||||
_root.map_mc["hotspot" + _root.i].lineTo(_root["p_hotspot_"+_root.i][0][0],_root["p_hotspot_"+_root.i][0][1]); |
|
||||||
|
|
||||||
// stop filling the movieclip |
|
||||||
_root.map_mc["hotspot" + _root.i].endFill(); |
|
||||||
} |
|
||||||
|
|
||||||
function drawDelineation(level, coords){ |
|
||||||
|
|
||||||
// create empty movieclip |
|
||||||
_root.map_mc.createEmptyMovieClip("hotspot_delineation" + level, 2000+level); |
|
||||||
|
|
||||||
// begin filling the movieclip |
|
||||||
_root.map_mc["hotspot_delineation" + level].beginFill(0xFFFFFF, 60); |
|
||||||
|
|
||||||
// set linestyle |
|
||||||
_root.map_mc["hotspot_delineation" + level].lineStyle(1,0x000000, 100); |
|
||||||
|
|
||||||
// move mouse to first coordinate |
|
||||||
xy_origin = coords[0].split(";"); |
|
||||||
_root.map_mc["hotspot_delineation" + level].moveTo(xy_origin[0],xy_origin[1]); |
|
||||||
|
|
||||||
// draw lines to all coordinates |
|
||||||
v = coords.length; |
|
||||||
for (k=1;k<v;k++){ |
|
||||||
xy = coords[k].split(";"); |
|
||||||
_root.map_mc["hotspot_delineation" + level].lineTo(xy[0],xy[1]); |
|
||||||
} |
|
||||||
|
|
||||||
// attach first and last coordinates |
|
||||||
_root.map_mc["hotspot_delineation" + level].lineTo(xy_origin[0],xy_origin[1]); |
|
||||||
|
|
||||||
// stop filling the movieclip |
|
||||||
_root.map_mc["hotspot_delineation" + level].endFill(); |
|
||||||
} |
|
||||||
|
|
||||||
function jsdebug(debug_string){ |
|
||||||
_root.JS_proxy.jsdebug(debug_string); |
|
||||||
} |
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,86 +0,0 @@ |
|||||||
// Globals
|
|
||||||
// Major version of Flash required
|
|
||||||
var requiredMajorVersion = 7; |
|
||||||
// Minor version of Flash required
|
|
||||||
var requiredMinorVersion = 0; |
|
||||||
// Minor version of Flash required
|
|
||||||
var requiredRevision = 0; |
|
||||||
// the version of javascript supported
|
|
||||||
var jsVersion = 1.0; |
|
||||||
//
|
|
||||||
|
|
||||||
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; |
|
||||||
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; |
|
||||||
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false; |
|
||||||
jsVersion = 1.1; |
|
||||||
// JavaScript helper required to detect Flash Player PlugIn version information
|
|
||||||
function JSGetSwfVer(i){ |
|
||||||
// NS/Opera version >= 3 check for Flash plugin in plugin array
|
|
||||||
if (navigator.plugins != null && navigator.plugins.length > 0) { |
|
||||||
if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) { |
|
||||||
var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; |
|
||||||
var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; |
|
||||||
descArray = flashDescription.split(" "); |
|
||||||
tempArrayMajor = descArray[2].split("."); |
|
||||||
versionMajor = tempArrayMajor[0]; |
|
||||||
versionMinor = tempArrayMajor[1]; |
|
||||||
if ( descArray[3] != "" ) { |
|
||||||
tempArrayMinor = descArray[3].split("r"); |
|
||||||
} else { |
|
||||||
tempArrayMinor = descArray[4].split("r"); |
|
||||||
} |
|
||||||
versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0; |
|
||||||
flashVer = versionMajor + "." + versionMinor + "." + versionRevision; |
|
||||||
} else { |
|
||||||
flashVer = -1; |
|
||||||
} |
|
||||||
} |
|
||||||
// MSN/WebTV 2.6 supports Flash 4
|
|
||||||
else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; |
|
||||||
// WebTV 2.5 supports Flash 3
|
|
||||||
else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; |
|
||||||
// older WebTV supports Flash 2
|
|
||||||
else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; |
|
||||||
// Can\'t detect in all other cases
|
|
||||||
else { |
|
||||||
|
|
||||||
flashVer = -1; |
|
||||||
} |
|
||||||
return flashVer; |
|
||||||
} |
|
||||||
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
|
|
||||||
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) |
|
||||||
{ |
|
||||||
reqVer = parseFloat(reqMajorVer + "." + reqRevision); |
|
||||||
// loop backwards through the versions until we find the newest version
|
|
||||||
for (i=25;i>0;i--) { |
|
||||||
if (isIE && isWin && !isOpera) { |
|
||||||
versionStr = VBGetSwfVer(i); |
|
||||||
} else { |
|
||||||
versionStr = JSGetSwfVer(i); |
|
||||||
} |
|
||||||
if (versionStr == -1 ) { |
|
||||||
return false; |
|
||||||
} else if (versionStr != 0) { |
|
||||||
if(isIE && isWin && !isOpera) { |
|
||||||
tempArray = versionStr.split(" "); |
|
||||||
tempString = tempArray[1]; |
|
||||||
versionArray = tempString .split(","); |
|
||||||
} else { |
|
||||||
versionArray = versionStr.split("."); |
|
||||||
} |
|
||||||
versionMajor = versionArray[0]; |
|
||||||
versionMinor = versionArray[1]; |
|
||||||
versionRevision = versionArray[2]; |
|
||||||
|
|
||||||
versionString = versionMajor + "." + versionRevision; // 7.0r24 == 7.24
|
|
||||||
versionNum = parseFloat(versionString); |
|
||||||
// is the major.revision >= requested major.revision AND the minor version >= requested minor
|
|
||||||
if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ) { |
|
||||||
return true; |
|
||||||
} else { |
|
||||||
return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false ); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
@ -1,13 +0,0 @@ |
|||||||
|
|
||||||
Function VBGetSwfVer(i) |
|
||||||
on error resume next |
|
||||||
Dim swControl, swVersion |
|
||||||
swVersion = 0 |
|
||||||
|
|
||||||
set swControl = CreateObject(\"ShockwaveFlash.ShockwaveFlash.\" + CStr(i)) |
|
||||||
if (IsObject(swControl)) then |
|
||||||
swVersion = swControl.GetVariable(\"\$version\") |
|
||||||
end if |
|
||||||
VBGetSwfVer = swVersion |
|
||||||
End Function |
|
||||||
|
|
||||||
Loading…
Reference in new issue