1
|
(function(){
|
2
|
|
3
|
var f = function(){
|
4
|
|
5
|
// note: navigator.mimeTypes in safari only includes 'application/x-java-applet
|
6
|
var versions = ['1.4.2', '1.5','1.6','1.7'],
|
7
|
java_url = 'http://java.com/en/download/manual.jsp',
|
8
|
version = "-1";
|
9
|
|
10
|
function setHighestVersion(potential_new_version){
|
11
|
if(potential_new_version > version){
|
12
|
version = potential_new_version;
|
13
|
}
|
14
|
}
|
15
|
|
16
|
function populateVersions(){
|
17
|
if(navigator.userAgent.indexOf("MSIE") != -1){
|
18
|
populateVersionsIE();
|
19
|
}
|
20
|
else{
|
21
|
populateVersionsNotIE();
|
22
|
}
|
23
|
}
|
24
|
|
25
|
function populateVersionsIE(){
|
26
|
|
27
|
// 1.5 -> 1.5.0.0
|
28
|
function pad(version){
|
29
|
var max_dots = 3;
|
30
|
var dots = version.replace(/[^.]/g, '').length;
|
31
|
for(; dots < max_dots; dots++){
|
32
|
version = version + ".0";
|
33
|
}
|
34
|
return version;
|
35
|
}
|
36
|
|
37
|
for(var i = 0; i < versions.length; i++){
|
38
|
var version = pad(versions[i]);
|
39
|
|
40
|
try{
|
41
|
if(new ActiveXObject('JavaWebStart.isInstalled.' + version) != null){
|
42
|
setHighestVersion(version);
|
43
|
}
|
44
|
}
|
45
|
catch(e){
|
46
|
}
|
47
|
}
|
48
|
}
|
49
|
|
50
|
function populateVersionsNotIE(){
|
51
|
if(navigator.mimeTypes){
|
52
|
for(var i = 0; i < versions.length; i++){
|
53
|
var version = versions[i];
|
54
|
if(navigator.mimeTypes['application/x-java-applet;version=' + version]){
|
55
|
setHighestVersion(version);
|
56
|
}
|
57
|
}
|
58
|
// add the general one under ''
|
59
|
if(navigator.mimeTypes['application/x-java-applet']){
|
60
|
setHighestVersion("");
|
61
|
}
|
62
|
}
|
63
|
}
|
64
|
|
65
|
function hasVersion(min_version){
|
66
|
if(navigator.vendor && (navigator.vendor.indexOf("Apple") !== -1)){
|
67
|
// safari
|
68
|
return hasPlugin();
|
69
|
}
|
70
|
|
71
|
if(min_version !== undefined){
|
72
|
return min_version <= version;
|
73
|
}
|
74
|
else{
|
75
|
return hasPlugin();
|
76
|
}
|
77
|
}
|
78
|
|
79
|
function hasPlugin(){
|
80
|
return (version === "-1") ? false : true;
|
81
|
}
|
82
|
|
83
|
function paramify(key, value){
|
84
|
return ' <param name="' + key + '" value="' + value + '" />';
|
85
|
}
|
86
|
|
87
|
// init
|
88
|
populateVersions();
|
89
|
|
90
|
return {
|
91
|
|
92
|
plugin: hasPlugin(),
|
93
|
hasVersion: hasVersion,
|
94
|
version: version,
|
95
|
javaUrl: java_url,
|
96
|
|
97
|
inject: function(node, args){
|
98
|
|
99
|
if(!node){
|
100
|
node = document.body;
|
101
|
}
|
102
|
|
103
|
if(!this.plugin){
|
104
|
if(args.noJava){
|
105
|
args.noJava();
|
106
|
}
|
107
|
// Commented out to allow upload without Java
|
108
|
//else{
|
109
|
// alert('Java is not present, please enable or download from <a href="http://java.com">Oracle</a>'); // java.java_url
|
110
|
//}
|
111
|
}
|
112
|
|
113
|
if(args.min_version){
|
114
|
if(!hasVersion(args.min_version)){
|
115
|
alert('Applet requires at least Java plugin version ' + args.min_version);
|
116
|
return;
|
117
|
}
|
118
|
}
|
119
|
|
120
|
var id = args.id;
|
121
|
var width = args.width || "1";
|
122
|
var heigth = args.heigth || "1";
|
123
|
var params = [];
|
124
|
|
125
|
for(var k in args){
|
126
|
params.push(paramify(k, args[k]));
|
127
|
}
|
128
|
|
129
|
var t = [
|
130
|
'<object id="' + id + '" type="application/x-java-applet" width="' + width + '" height="' + heigth + '">',
|
131
|
' <param name="mayscript" value="true" />',
|
132
|
params.join('\n'),
|
133
|
'</object>'].join('\n');
|
134
|
|
135
|
var wrapperNode = document.createElement('div');
|
136
|
wrapperNode.innerHTML = t;
|
137
|
node.appendChild(wrapperNode);
|
138
|
}
|
139
|
};
|
140
|
};
|
141
|
|
142
|
if(typeof define !== 'undefined'){
|
143
|
define([], function(){
|
144
|
return f();
|
145
|
});
|
146
|
}
|
147
|
|
148
|
})();
|