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() {
112 if (widget.options.error == 'none')
114 var $installLink = $('<a id="install-swarmplayer" href="'
115 + widget.options.installLink + '">'
116 + widget.options.msg[widget.options.error] + ' SwarmPlayer Plugin</a>')
117 .appendTo(widget.element);
122 primary: "ui-icon-arrowthickstop-1-s"
126 else if (widget.options.error == 'already installed')
129 .html('<div class="ui-widget">'
130 + '<div style="padding: 0 .7em;" class="ui-state-highlight ui-corner-all">'
131 + '<p style="text-align: center"><span style="float: left; margin-right: .3em;" class="ui-icon ui-icon-info"></span>'
132 + '<span id="install-swarmplayer-msg"></span></p>'
136 var msg = 'SwarmPlayer ' + widget.options.msg[widget.options.error];
137 $('#install-swarmplayer-msg').html(msg);
141 var $box = $('<div id="install-swarmplayer"></div>')
142 .appendTo(widget.element);
145 .html('<div class="ui-widget">'
146 + '<div style="padding: 0 .7em;" class="ui-state-error ui-corner-all">'
147 + '<p style="text-align: center"><span style="float: left; margin-right: .3em;" class="ui-icon ui-icon-alert"></span>'
148 + '<span id="install-swarmplayer-msg"></span></p>'
152 var msg = 'SwarmPlayer ' + widget.options.msg[widget.options.error];
153 $('#install-swarmplayer-msg').html(msg);
158 _createNextSharePCInstall: function() {
161 if (widget.options.error == 'none')
163 var $installLink = $('<a id="install-nextsharepc" href="'
164 + widget.options.installLink + '">'
165 + widget.options.msg[widget.options.error] + ' NextSharePC Plugin</a>')
166 .appendTo(widget.element);
171 primary: "ui-icon-arrowthickstop-1-s"
175 else if (widget.options.error == 'already installed')
177 var $box = $('<div id="install-nextsharepc"></div>')
178 .appendTo(widget.element);
181 .html('<div class="ui-widget">'
182 + '<div style="padding: 0 .7em;" class="ui-state-highlight ui-corner-all">'
183 + '<p style="text-align: center"><span style="float: left; margin-right: .3em;" class="ui-icon ui-icon-info"></span>'
184 + '<span id="install-nextsharepc-msg"></span></p>'
188 var msg = 'NextSharePC ' + widget.options.msg[widget.options.error];
189 $('#install-nextsharepc-msg').html(msg);
193 var $box = $('<div id="install-nextsharepc"></div>')
194 .appendTo(widget.element);
197 .html('<div class="ui-widget">'
198 + '<div style="padding: 0 .7em;" class="ui-state-error ui-corner-all">'
199 + '<p style="text-align: center"><span style="float: left; margin-right: .3em;" class="ui-icon ui-icon-alert"></span>'
200 + '<span id="install-nextsharepc-msg"></span></p>'
204 var msg = 'NextSharePC ' + widget.options.msg[widget.options.error];
205 $('#install-nextsharepc-msg').html(msg);
209 _destroy: function() {
210 this.element.html('');
213 _setOption: function( key, value ) {
215 if ( key === "TODO" ) {
219 this._super( "_setOption", key, value );
222 isNextSharePCAlreadyInstalled: function() {
223 for (var i=0; i<navigator.plugins.length; i++)
225 if (navigator.plugins.item(i).name.indexOf('NextSharePC') != -1)
232 isSwarmPlayerAlreadyInstalled: function() {
236 platform: function() {
237 var browserName="Unknown";
238 var browserVersion=-1;
239 var osName="Unknown";
240 var archName="Unknown";
242 if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent))
244 var ffbrowserVersion=new Number(RegExp.$1);
245 browserName = "Firefox";
246 browserVersion = ffbrowserVersion;
248 else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
250 var iebrowserVersion=new Number(RegExp.$1);
251 browserName = "Internet Explorer";
252 browserVersion = iebrowserVersion;
254 else if (/Chrome[\/\s](\d+\.\d+)/.test(navigator.userAgent))
256 // Must come before Safari, Chrome says it's Safari too.
257 var chbrowserVersion=new Number(RegExp.$1);
258 browserName = "Chrome";
259 browserVersion = chbrowserVersion;
261 else if (/Safari[\/\s](\d+\.\d+)/.test(navigator.userAgent))
263 var sfbrowserVersion=new Number(RegExp.$1);
264 browserName = "Safari";
265 browserVersion = sfbrowserVersion;
267 else if (/Iceweasel[\/\s](\d+\.\d+)/.test(navigator.userAgent))
269 // Iceweasel should be compatible with Firefox
270 var ffbrowserVersion=new Number(RegExp.$1);
271 browserName = "Firefox";
272 browserVersion = ffbrowserVersion;
274 else if (/Namoroka[\/\s](\d+\.\d+)/.test(navigator.userAgent))
276 // Namoroka should be compatible with Firefox
277 var ffbrowserVersion=new Number(RegExp.$1);
278 browserName = "Firefox";
279 browserVersion = ffbrowserVersion;
283 if (navigator.userAgent.indexOf("Win")!=-1) osName="Windows";
284 else if (navigator.userAgent.indexOf("Mac")!=-1) osName="MacOS";
285 else if (navigator.userAgent.indexOf("Ubuntu")!=-1) osName="Ubuntu Linux";
286 else if (navigator.userAgent.indexOf("Linux")!=-1) osName="Linux";
287 else if (navigator.userAgent.indexOf("X11")!=-1) osName="UNIX";
289 if (navigator.userAgent.indexOf("Intel Mac")!=-1) archName="Intel";
290 else if (navigator.userAgent.indexOf("PPC Mac")!=-1) archName="PowerPC";
291 else if (navigator.userAgent.indexOf("Linux i686")!=-1) archName="i686";
292 else if (navigator.userAgent.indexOf("Linux x86_64")!=-1) archName="x86_64";
294 return {browserName: browserName, browserVersion: browserVersion, osName: osName, archName: archName};