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() {
113 if (widget.options.error == 'none')
115 var $installLink = $('<a id="install-swarmplayer" href="'
116 + widget.options.installLink + '">'
117 + widget.options.msg[widget.options.error] + ' SwarmPlayer Plugin</a>')
118 .appendTo(widget.element);
123 primary: "ui-icon-arrowthickstop-1-s"
127 else if (widget.options.error == 'already installed')
130 .html('<div class="ui-widget">'
131 + '<div style="padding: 0 .7em;" class="ui-state-highlight ui-corner-all">'
132 + '<p style="text-align: center"><span style="float: left; margin-right: .3em;" class="ui-icon ui-icon-info"></span>'
133 + '<span id="install-swarmplayer-msg"></span></p>'
137 msg = 'SwarmPlayer ' + widget.options.msg[widget.options.error];
138 $('#install-swarmplayer-msg').html(msg);
142 var $box = $('<div id="install-swarmplayer"></div>')
143 .appendTo(widget.element);
146 .html('<div class="ui-widget">'
147 + '<div style="padding: 0 .7em;" class="ui-state-error ui-corner-all">'
148 + '<p style="text-align: center"><span style="float: left; margin-right: .3em;" class="ui-icon ui-icon-alert"></span>'
149 + '<span id="install-swarmplayer-msg"></span></p>'
153 msg = 'SwarmPlayer ' + widget.options.msg[widget.options.error];
154 $('#install-swarmplayer-msg').html(msg);
159 _createNextSharePCInstall: function() {
162 if (widget.options.error == 'none')
164 var $installLink = $('<a id="install-nextsharepc" href="'
165 + widget.options.installLink + '">'
166 + widget.options.msg[widget.options.error] + ' NextSharePC Plugin</a>')
167 .appendTo(widget.element);
172 primary: "ui-icon-arrowthickstop-1-s"
176 else if (widget.options.error == 'already installed')
178 var $box = $('<div id="install-nextsharepc"></div>')
179 .appendTo(widget.element);
182 .html('<div class="ui-widget">'
183 + '<div style="padding: 0 .7em;" class="ui-state-highlight ui-corner-all">'
184 + '<p style="text-align: center"><span style="float: left; margin-right: .3em;" class="ui-icon ui-icon-info"></span>'
185 + '<span id="install-nextsharepc-msg"></span></p>'
189 var msg = 'NextSharePC ' + widget.options.msg[widget.options.error];
190 $('#install-nextsharepc-msg').html(msg);
194 var $box = $('<div id="install-nextsharepc"></div>')
195 .appendTo(widget.element);
198 .html('<div class="ui-widget">'
199 + '<div style="padding: 0 .7em;" class="ui-state-error ui-corner-all">'
200 + '<p style="text-align: center"><span style="float: left; margin-right: .3em;" class="ui-icon ui-icon-alert"></span>'
201 + '<span id="install-nextsharepc-msg"></span></p>'
205 var msg = 'NextSharePC ' + widget.options.msg[widget.options.error];
206 $('#install-nextsharepc-msg').html(msg);
210 _destroy: function() {
211 this.element.html('');
214 _setOption: function( key, value ) {
216 if ( key === "TODO" ) {
220 this._super( "_setOption", key, value );
223 isNextSharePCAlreadyInstalled: function() {
224 for (var i=0; i<navigator.plugins.length; i++)
226 if (navigator.plugins.item(i).name.indexOf('NextSharePC') != -1)
233 isSwarmPlayerAlreadyInstalled: function() {
237 platform: function() {
238 var browserName="Unknown";
239 var browserVersion=-1;
240 var osName="Unknown";
241 var archName="Unknown";
243 if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent))
245 var ffbrowserVersion=new Number(RegExp.$1);
246 browserName = "Firefox";
247 browserVersion = ffbrowserVersion;
249 else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
251 var iebrowserVersion=new Number(RegExp.$1);
252 browserName = "Internet Explorer";
253 browserVersion = iebrowserVersion;
255 else if (/Chrome[\/\s](\d+\.\d+)/.test(navigator.userAgent))
257 // Must come before Safari, Chrome says it's Safari too.
258 var chbrowserVersion=new Number(RegExp.$1);
259 browserName = "Chrome";
260 browserVersion = chbrowserVersion;
262 else if (/Safari[\/\s](\d+\.\d+)/.test(navigator.userAgent))
264 var sfbrowserVersion=new Number(RegExp.$1);
265 browserName = "Safari";
266 browserVersion = sfbrowserVersion;
268 else if (/Iceweasel[\/\s](\d+\.\d+)/.test(navigator.userAgent))
270 // Iceweasel should be compatible with Firefox
271 var ffbrowserVersion=new Number(RegExp.$1);
272 browserName = "Firefox";
273 browserVersion = ffbrowserVersion;
275 else if (/Namoroka[\/\s](\d+\.\d+)/.test(navigator.userAgent))
277 // Namoroka should be compatible with Firefox
278 var ffbrowserVersion=new Number(RegExp.$1);
279 browserName = "Firefox";
280 browserVersion = ffbrowserVersion;
284 if (navigator.userAgent.indexOf("Win")!=-1) osName="Windows";
285 else if (navigator.userAgent.indexOf("Mac")!=-1) osName="MacOS";
286 else if (navigator.userAgent.indexOf("Ubuntu")!=-1) osName="Ubuntu Linux";
287 else if (navigator.userAgent.indexOf("Linux")!=-1) osName="Linux";
288 else if (navigator.userAgent.indexOf("X11")!=-1) osName="UNIX";
290 if (navigator.userAgent.indexOf("Intel Mac")!=-1) archName="Intel";
291 else if (navigator.userAgent.indexOf("PPC Mac")!=-1) archName="PowerPC";
292 else if (navigator.userAgent.indexOf("Linux i686")!=-1) archName="i686";
293 else if (navigator.userAgent.indexOf("Linux x86_64")!=-1) archName="x86_64";
295 return {browserName: browserName, browserVersion: browserVersion, osName: osName, archName: archName};