PageRenderTime 47ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/src/sweatless/utils/Detect.as

https://github.com/GunioRobot/odonto-game
ActionScript | 231 lines | 112 code | 28 blank | 91 comment | 23 complexity | 5b9782b7d51dba743eba439d518bbffa MD5 | raw file
  1. /**
  2. * Licensed under the MIT License and Creative Commons 3.0 BY-SA
  3. *
  4. * Copyright (c) 2009 Sweatless Team
  5. *
  6. * Permission is hereby granted, free of charge, to any person obtaining a copy of
  7. * this software and associated documentation files (the "Software"), to deal in
  8. * the Software without restriction, including without limitation the rights to
  9. * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
  10. * the Software, and to permit persons to whom the Software is furnished to do so,
  11. * subject to the following conditions:
  12. *
  13. * The above copyright notice and this permission notice shall be included in all
  14. * copies or substantial portions of the Software.
  15. *
  16. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
  18. * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
  19. * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
  20. * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  21. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  22. *
  23. * http://www.opensource.org/licenses/mit-license.php
  24. *
  25. *
  26. * THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC
  27. * LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW.
  28. * ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS
  29. * PROHIBITED.
  30. * BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE
  31. * TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE
  32. * LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH
  33. * TERMS AND CONDITIONS.
  34. *
  35. * http://creativecommons.org/licenses/by-sa/3.0/legalcode
  36. *
  37. * http://code.google.com/p/sweatless/
  38. *
  39. * @author Valério Oliveira (valck)
  40. *
  41. */
  42. package sweatless.utils{
  43. import flash.events.Event;
  44. import flash.events.EventDispatcher;
  45. import flash.external.ExternalInterface;
  46. import flash.net.URLRequest;
  47. import flash.net.navigateToURL;
  48. import flash.system.Capabilities;
  49. import flash.utils.setTimeout;
  50. /**
  51. *
  52. * Simple Class for detect OS and browser.
  53. *
  54. *
  55. * @example <listing version="3.0">
  56. private var detect = new Detect();
  57. detect.addEventListener(Detect.COMPLETE, detected);
  58. private function detected(evt:Event):void{
  59. trace(detect.os);
  60. trace(detect.plataform);
  61. trace(detect.browser);
  62. trace(detect.browser_version);
  63. trace(detect.servicepack);
  64. }
  65. * </listing>
  66. */
  67. public class Detect extends EventDispatcher{
  68. public static const COMPLETE : String = "complete";
  69. private var userBrowser : String;
  70. private var userBrowserVersion : String;
  71. private var userOs : String;
  72. private var userPlatform : String;
  73. private var userSPack : String;
  74. /**
  75. * Create a virtual JS in memory to detect the browser
  76. */
  77. public function Detect(){
  78. if(Capabilities.playerType == "StandAlone") throw new Error("UserDetect, only detect the user in browser.");
  79. var js : URLRequest = new URLRequest("javascript:function detect(){return [navigator.userAgent, navigator.platform,navigator.appMinorVersion];};");
  80. navigateToURL(js, "_self");
  81. setTimeout(load, 500);
  82. }
  83. /**
  84. * Returns the current OS.
  85. * @return String
  86. *
  87. */
  88. public function get os():String{
  89. return userOs;
  90. }
  91. /**
  92. * Plataform getter
  93. * @return String
  94. *
  95. */
  96. public function get plataform():String{
  97. return userPlatform;
  98. }
  99. /**
  100. * Browser getter
  101. * @return String
  102. *
  103. */
  104. public function get browser():String{
  105. return userBrowser;
  106. }
  107. /**
  108. * Browser Version getter
  109. * @return String
  110. *
  111. */
  112. public function get browser_version():String{
  113. return userBrowserVersion;
  114. }
  115. /**
  116. * Service Pack getter only for Windows XP
  117. * @return String
  118. *
  119. */
  120. public function get servicepack():String{
  121. return userSPack;
  122. }
  123. /**
  124. * Call and parser the virtual JS
  125. *
  126. */
  127. private function load():void{
  128. var results : Array = String(ExternalInterface.call('detect')).split(",");
  129. var a : String = results[0];
  130. var b : String = results[1];
  131. var d : String = results[2];
  132. var c : Object = new Object();
  133. c = {
  134. version: (a.toLowerCase().match( /.+(?:rv|it|ra|ie|me)[\/: ]([\d.]+)/ ) || [])[1],
  135. chrome: /chrome/.test( a.toLowerCase() ),
  136. safari: /webkit/.test( a.toLowerCase() ) ,
  137. opera: /opera/.test( a.toLowerCase() ),
  138. msie: /msie/.test( a.toLowerCase() ),
  139. mozilla: /mozilla/.test( a.toLowerCase() )
  140. };
  141. var mozilla : Boolean = c.mozilla;
  142. var msie : Boolean = c.msie;
  143. var opera : Boolean = c.opera;
  144. var safari : Boolean = c.safari;
  145. var chrome : Boolean = c.chrome;
  146. var version : String = c.version;
  147. if(mozilla){
  148. userBrowser = 'Mozilla';
  149. userBrowserVersion = version;
  150. }
  151. if(msie){
  152. userBrowser = 'Msie';
  153. userBrowserVersion = version ;
  154. }
  155. if(opera){
  156. userBrowser = 'Opera';
  157. userBrowserVersion = version ;
  158. }
  159. if(safari){
  160. userBrowser = 'Safari';
  161. userBrowserVersion = version;
  162. }
  163. if(chrome){
  164. userBrowser = 'Chrome';
  165. userBrowserVersion = version;
  166. }
  167. switch(b){
  168. case 'Win64':
  169. userPlatform = 'Windows 64'
  170. break;
  171. case 'Win32':
  172. userPlatform = 'Windows 32'
  173. break;
  174. case 'Linux i686':
  175. userPlatform = 'Linux'
  176. break;
  177. case 'MacPPC':
  178. userPlatform = 'Mac PPC'
  179. break;
  180. case 'MacIntel':
  181. userPlatform = 'Mac Intel'
  182. break;
  183. case 'iPhone':
  184. userPlatform = 'iPhone'
  185. break;
  186. }
  187. if(a.indexOf('Windows NT 6.1') > -1) userOs = 'Windows 7';
  188. if(a.indexOf('Windows NT 6.0') > -1) userOs = 'Windows Vista';
  189. if(a.indexOf('Windows NT 5.2') > -1) userOs = 'Windows Server 2003 | Windows XP (x64)';
  190. if(a.indexOf('Windows NT 5.1') > -1) userOs = 'Windows XP';
  191. if(a.indexOf('Windows NT 5.0') > -1) userOs = 'Windows 2000';
  192. if(a.indexOf('Windows NT 4.0') > -1) userOs = 'Windows NT 4.0';
  193. if(a.indexOf('Windows NT 3.51') > -1) userOs = 'Windows NT 3.51';
  194. if(a.indexOf('Windows NT 3.5') > -1) userOs = 'Windows NT 3.5';
  195. if(a.indexOf('Windows NT 3.1') > -1) userOs = 'Windows NT 3.1';
  196. if ((d.indexOf('SP3') > -1) && (a.indexOf('Windows NT 5.1') > -1)) userSPack = 'SP3';
  197. if ((d.indexOf('SP2') > -1) && (a.indexOf('Windows NT 5.1') > -1)) userSPack = 'SP2';
  198. if ((d.indexOf('SP1') > -1) && (a.indexOf('Windows NT 5.1') > -1)) userSPack = 'SP1';
  199. dispatchEvent(new Event(COMPLETE));
  200. }
  201. }
  202. }