2 * jQuery UI Install NextShare Video Plugins 1.0.0 beta
4 * Copyright 2011, Călin-Andrei Burloiu
5 * Dual licensed under the MIT or GPL Version 2 licenses.
6 * http://jquery.org/license
8 * This file constains code created by Riccardo Petrocco and Arno Bakker
9 * from http://swarmplayer.p2p-next.org.
15 (function( $, undefined ) {
17 $.widget( "ui.nsinstall", {
18 version: "1.0.0 beta",
20 type: "ns-html5", // "ns-html5" or "ns-vlc",
22 hideIfAlreadyInstalled: true,
27 "os not supported": " is not supported for your operating system",
28 "browser not supported": " is not supported for your browser",
29 "browser version not supported": " is not supported for your browser version",
30 "already installed": " is installed"
36 var platform = widget.platform();
38 // Check platform support conditions and create content.
40 if (widget.options.type == "ns-vlc")
42 if (platform.osName !== 'MacOS' && platform.osName !== 'Windows')
44 widget.options.error = "os not supported";
48 if (platform.browserName == 'Firefox')
50 if (platform.browserVersion < 3.5)
51 widget.options.error = "browser version not supported";
53 else if (platform.browserName == 'Internet Explorer')
55 if (platform.browserVersion < 7.0)
57 widget.options.error = "browser version not supported";
61 widget.options.error = "browser not supported";
64 if (widget.isNextSharePCAlreadyInstalled())
65 widget.options.error = "already installed";
67 if (widget.options.error !== "already installed"
68 || (widget.options.error === "already installed"
69 && ! widget.options.hideIfAlreadyInstalled) )
70 widget._createNextSharePCInstall();
73 else if (widget.options.type == "ns-html5")
75 if (platform.osName !== 'MacOS' && platform.osName !== 'Windows'
76 && platform.osName !== 'Ubuntu Linux'
77 && platform.osName !== 'Linux')
79 widget.options.error = "os not supported";
83 if (platform.browserName == 'Firefox')
85 if (platform.browserVersion < 3.5)
86 widget.options.error = "browser version not supported";
88 else if (platform.browserName == 'Internet Explorer')
90 if (platform.browserVersion < 7.0)
92 widget.options.error = "browser version not supported";
96 widget.options.error = "browser not supported";
99 if (widget.isSwarmPlayerAlreadyInstalled())
100 widget.options.error = "already installed";
102 if (widget.options.error !== "already installed"
103 || (widget.options.error === "already installed"
104 && ! widget.options.hideIfAlreadyInstalled) )
105 widget._createSwarmPlayerInstall();
109 _createSwarmPlayerInstall: function() {
114 if (widget.options.error == 'none')
116 var $installLink = $('<a id="install-swarmplayer" href="'
117 + widget.options.installLink + '">'
118 + widget.options.msg[widget.options.error] + ' SwarmPlayer Plugin</a>')
119 .appendTo(widget.element);
124 primary: "ui-icon-arrowthickstop-1-s"
128 else if (widget.options.error == 'already installed')
130 $box = $('<div id="install-swarmplayer"></div>')
131 .appendTo(widget.element);
134 .html('<div class="ui-widget">'
135 + '<div style="padding: 0 .7em;" class="ui-state-highlight ui-corner-all">'
136 + '<p style="text-align: center"><span style="float: left; margin-right: .3em;" class="ui-icon ui-icon-info"></span>'
137 + '<span id="install-swarmplayer-msg"></span></p>'
141 msg = 'SwarmPlayer ' + widget.options.msg[widget.options.error];
142 $('#install-swarmplayer-msg').html(msg);
146 $box = $('<div id="install-swarmplayer"></div>')
147 .appendTo(widget.element);
150 .html('<div class="ui-widget">'
151 + '<div style="padding: 0 .7em;" class="ui-state-error ui-corner-all">'
152 + '<p style="text-align: center"><span style="float: left; margin-right: .3em;" class="ui-icon ui-icon-alert"></span>'
153 + '<span id="install-swarmplayer-msg"></span></p>'
157 msg = 'SwarmPlayer ' + widget.options.msg[widget.options.error];
158 $('#install-swarmplayer-msg').html(msg);
163 _createNextSharePCInstall: function() {
168 if (widget.options.error == 'none')
170 var $installLink = $('<a id="install-nextsharepc" href="'
171 + widget.options.installLink + '">'
172 + widget.options.msg[widget.options.error] + ' NextSharePC Plugin</a>')
173 .appendTo(widget.element);
178 primary: "ui-icon-arrowthickstop-1-s"
182 else if (widget.options.error == 'already installed')
184 $box = $('<div id="install-nextsharepc"></div>')
185 .appendTo(widget.element);
188 .html('<div class="ui-widget">'
189 + '<div style="padding: 0 .7em;" class="ui-state-highlight ui-corner-all">'
190 + '<p style="text-align: center"><span style="float: left; margin-right: .3em;" class="ui-icon ui-icon-info"></span>'
191 + '<span id="install-nextsharepc-msg"></span></p>'
195 msg = 'NextSharePC ' + widget.options.msg[widget.options.error];
196 $('#install-nextsharepc-msg').html(msg);
200 $box = $('<div id="install-nextsharepc"></div>')
201 .appendTo(widget.element);
204 .html('<div class="ui-widget">'
205 + '<div style="padding: 0 .7em;" class="ui-state-error ui-corner-all">'
206 + '<p style="text-align: center"><span style="float: left; margin-right: .3em;" class="ui-icon ui-icon-alert"></span>'
207 + '<span id="install-nextsharepc-msg"></span></p>'
211 msg = 'NextSharePC ' + widget.options.msg[widget.options.error];
212 $('#install-nextsharepc-msg').html(msg);
216 _destroy: function() {
217 this.element.html('');
220 _setOption: function( key, value ) {
222 if ( key === "TODO" ) {
226 this._super( "_setOption", key, value );
229 isNextSharePCAlreadyInstalled: function() {
230 for (var i=0; i<navigator.plugins.length; i++)
232 if (navigator.plugins.item(i).name.indexOf('NextSharePC') != -1)
239 isSwarmPlayerAlreadyInstalled: function() {
240 if (typeof swarmTransport != 'undefined')
246 platform: function() {
247 var browserName="Unknown";
248 var browserVersion=-1;
249 var osName="Unknown";
250 var archName="Unknown";
252 if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent))
254 var ffbrowserVersion=new Number(RegExp.$1);
255 browserName = "Firefox";
256 browserVersion = ffbrowserVersion;
258 else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
260 var iebrowserVersion=new Number(RegExp.$1);
261 browserName = "Internet Explorer";
262 browserVersion = iebrowserVersion;
264 else if (/Chrome[\/\s](\d+\.\d+)/.test(navigator.userAgent))
266 // Must come before Safari, Chrome says it's Safari too.
267 var chbrowserVersion=new Number(RegExp.$1);
268 browserName = "Chrome";
269 browserVersion = chbrowserVersion;
271 else if (/Safari[\/\s](\d+\.\d+)/.test(navigator.userAgent))
273 var sfbrowserVersion=new Number(RegExp.$1);
274 browserName = "Safari";
275 browserVersion = sfbrowserVersion;
277 else if (/Iceweasel[\/\s](\d+\.\d+)/.test(navigator.userAgent))
279 // Iceweasel should be compatible with Firefox
280 var ffbrowserVersion=new Number(RegExp.$1);
281 browserName = "Firefox";
282 browserVersion = ffbrowserVersion;
284 else if (/Namoroka[\/\s](\d+\.\d+)/.test(navigator.userAgent))
286 // Namoroka should be compatible with Firefox
287 var ffbrowserVersion=new Number(RegExp.$1);
288 browserName = "Firefox";
289 browserVersion = ffbrowserVersion;
293 if (navigator.userAgent.indexOf("Win")!=-1) osName="Windows";
294 else if (navigator.userAgent.indexOf("Mac")!=-1) osName="MacOS";
295 else if (navigator.userAgent.indexOf("Ubuntu")!=-1) osName="Ubuntu Linux";
296 else if (navigator.userAgent.indexOf("Linux")!=-1) osName="Linux";
297 else if (navigator.userAgent.indexOf("X11")!=-1) osName="UNIX";
299 if (navigator.userAgent.indexOf("Intel Mac")!=-1) archName="Intel";
300 else if (navigator.userAgent.indexOf("PPC Mac")!=-1) archName="PowerPC";
301 else if (navigator.userAgent.indexOf("Linux i686")!=-1) archName="i686";
302 else if (navigator.userAgent.indexOf("Linux x86_64")!=-1) archName="x86_64";
304 return {browserName: browserName, browserVersion: browserVersion, osName: osName, archName: archName};