Project

General

Profile

Download (4.41 KB) Statistics
| Branch: | Revision:
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
})();
    (1-1/1)