DeskTop.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551
  1. /*
  2. 此处为桌面系统启动应用区域
  3. */
  4. Namespace.register("U.MD.D.I"); //桌面应用处理
  5. //判断图片是否在拖拽,如果是拖拽图标的过程是不会打开图片的
  6. U.MD.D.I.IsDrag;
  7. U.MD.D.I.Ip;
  8. //桌面图标的全局变量
  9. U.MD.D.I.DeskIcon = [
  10. //
  11. // { "Name": "互联办公", "Url": "boomYun", "Img": { "x": "-844", "y": "-419"} },
  12. // { "Name": "Word", "Url": "word", "Img": { "x": "-462", "y": "-296"} },
  13. // { "Name": "Execl", "Url": "excel", "Img": { "x": "-523", "y": "-296"} },
  14. // { "Name": "文本文件", "Url": "txt", "Img": { "x": "-267", "y": "-413"} },
  15. // { "Name": "我的好友", "Url": "friend", "Img": { "x": "-648", "y": "-297"} },
  16. // { "Name": "查找好友", "Url": "lookupFriend", "Img": { "x": "-85", "y": "-413"} },
  17. // { "Name": "我的设置", "Url": "set", "Img": { "x": "-400", "y": "-296"} },
  18. // { "Name": "系统设置", "Url": "systemSet", "Img": { "x": "-144", "y": "-413"} },
  19. // { "Name": "云端下载", "Url": "client", "Img": { "x": "-648", "y": "-357"} },
  20. // { "Name": "云端产品", "Url": "xz", "Img": { "x": "-24", "y": "-413"} }
  21. // { "Name": "FTP", "Url": "ftp", "Img": { "x": "-24", "y": "-413"} },
  22. // { "Name": "群文档", "Url": "group", "Img": { "x": "-85", "y": "-413"} },
  23. // { "Name": "web编程", "Url": "frontEndProgramming", "Img": { "x": "-275", "y": "-297"} },
  24. // { "Name": "后端编程", "Url": "backEndProgramming", "Img": { "x": "-275", "y": "-297"} },
  25. { "Name": "项目管理", "Url": "backEndProgramming", "style": { "cssText": "background-image:url(/img/icon/project.png)" } },
  26. { "Name": "学生管理", "Url": "backEndProgramming", "style": { "cssText": "background-image:url(/img/icon/student.png)" } }
  27. ];
  28. //#region 桌面初始化
  29. /**
  30. * 初始化桌面的起始函数
  31. *
  32. */
  33. U.MD.D.I.init = function () {
  34. if ($("#U_MD_D_K")[0]) {
  35. //初始化桌面图标
  36. U.MD.D.I.initDesktopIcons($("#U_MD_D_K")[0]);
  37. // var clickUrl = ':12588/requestIp.php';
  38. // U.MD.D.I.Mysqlrequest(clickUrl,function(data){
  39. // U.MD.D.I.Ip = data;
  40. // var AccessUrl = ':12588/useAccess.php?ip=' + U.MD.D.I.Ip;
  41. // U.MD.D.I.Mysqlrequest(AccessUrl,function(data){
  42. // U.selectEl("#U_MD_D_RW").css("width", US.width - 165 + "px");
  43. // })
  44. // //初始化任务栏,因为是静态的,所以直接改变样式即可.
  45. // })
  46. }
  47. }
  48. /**
  49. * 隐藏任务栏
  50. *
  51. * @param {element} 桌面元素
  52. */
  53. U.MD.D.I.hiddenTaskbar = function (el) {
  54. //任务栏位置变小
  55. U.selectEl(el).parentElement(3).css({ "bottom": "-39px" });
  56. //桌面的位置变大
  57. // U.selectEl("#U_MD_D_K").css({ "left": "5px" });
  58. }
  59. /**
  60. * 初始化打印桌面图标
  61. *
  62. * @param {element} 桌面元素
  63. */
  64. U.MD.D.I.initDesktopIcons = function (el) {
  65. var i, //用于循环
  66. _content, //桌面图标元素
  67. _iconcontent, //桌面图标元素
  68. _frag = $$("frag"), //定义一个碎片元素
  69. _DesktopIconInfo = U.MD.D.I.DeskIcon; //获取桌面图标
  70. //清楚桌面图标
  71. el.innerHTML = "";
  72. //循环创建桌面图标
  73. for (i = 0; i < _DesktopIconInfo.length; i++) {
  74. _content = $$("div", {
  75. className: "U_MD_D_KO",
  76. "onmousedown": U.UF.C.closure(function (obj) {
  77. //防止拖动图标即打开了桌面应用
  78. U.MD.D.click(this, obj);
  79. }, [_DesktopIconInfo[i]]),
  80. "onclick": U.UF.C.closure(function (obj) {
  81. //防止拖动图标即打开了桌面应用
  82. U.MD.D.click(this, obj);
  83. }, [_DesktopIconInfo[i]])
  84. }, _frag); //
  85. _iconcontent = $$("div", { className: "U_MD_D_KOA" }, _content);
  86. $$("div", { className: "U_MD_D_KOS U_Img", "style": _DesktopIconInfo[i].style }, _iconcontent); //{ "backgroundPosition": _DesktopIconInfo[i].Img.x + "px " + _DesktopIconInfo[i].Img.y + "px" }
  87. $$("div", { className: "U_MD_D_KOX", "style": { "cssText": "text-shadow: #000 2px 1px 3px,#666 0 1px 0,#555 -1px 0 0,#999 0 -1px 0; -webkit-text-shadow: #333 1px 0 0,#666 0 1px 0,#555 -1px 0 0,#999 0 -1px 0; -moz-text-shadow: #333 1px 0 0,#666 0 1px 0,#555 -1px 0 0,#999 0 -1px 0; filter: Glow(color=#777777, strength=1)\9;" }, "innerHTML": _DesktopIconInfo[i].Name }, _iconcontent);
  88. }
  89. //加载好后给图标定位
  90. U.MD.D.iconPostion($(_frag).Child());
  91. //把图标加载到页面
  92. el.appendChild(_frag);
  93. }
  94. /**
  95. * 显示任务栏
  96. *
  97. * @param {element} 桌面元素
  98. */
  99. U.MD.D.I.displayTaskbar = function (el) {
  100. //判断是否需要形式任务栏,由于用了mouseover事件会冒泡响应多次,这里做了过滤
  101. if (!U.UF.EV.stopBubbleMouseOutOrOver(el) && U.selectEl(el).css("bottom") != "0px") {
  102. //任务栏位置变化
  103. U.selectEl(el).css({ "bottom": "0px" });
  104. //桌面位置变话
  105. // U.selectEl("#U_MD_D_K").css({ "left": "70px" });
  106. }
  107. }
  108. //#region 桌面图标拖动逻辑
  109. /**
  110. * 桌面排列图标
  111. *
  112. * @param {element} 桌面元素
  113. * @param {object} 上下相距的距离
  114. * @param {object} 左右相距的距离
  115. * @return {object} 命名空间
  116. */
  117. U.MD.D.iconPostion = function (childs, top, left) {
  118. var i; //用于循环处理
  119. top = top || 15; //如果没有设置元素的间距处理默认上间距为15
  120. left = left || 20; //如果没有设置元素的间距处理默认左间距为15
  121. //循环所有的图标,设置每个图标的间距,打印顺序是竖排打印的方式
  122. for (i = 0; i < childs.length; i++) {
  123. //如果竖排top超过了范围处理
  124. if (top + 95 > US.height - 85) {
  125. //left超过了页面范围处理,则向上重叠打印处理
  126. if ((left + 180) > US.width) {
  127. top -= 115;
  128. left -= 90;
  129. }
  130. //没有超过范围,那么left+90添加到下一个竖排打印
  131. else {
  132. left += 90;
  133. top = 15;
  134. };
  135. }
  136. //给图标的位置赋值
  137. U.selectEl(childs[i]).css({ top: top + "px", left: left + "px" });
  138. if (i < childs.length - 1) {
  139. //页面图标每次向下加115
  140. top += 115;
  141. }
  142. }
  143. //返回最后调用的图标的位置
  144. return [top, left];
  145. }
  146. /**
  147. * 桌面点击事件逻辑
  148. *
  149. * @param {element} 桌面元素
  150. * @param {object} 上下相距的距离
  151. * @param {object} 左右相距的距离
  152. * @return {object} 命名空间
  153. */
  154. U.MD.D.click = function (el, obj) {
  155. var _buttonnumber = event.button; //点击的按钮的事件值
  156. U.UF.EV.stopBubble(); //阻止向上冒泡
  157. //onmousedown 包含了左键和右键 这里大于2是为了兼容 所有浏览器的右键处理
  158. if (_buttonnumber < 2) {
  159. //如果是click事件的处理
  160. if (event.type == "click") {
  161. //如果元素在mousemove事件中没有移动则出发click事件
  162. if (!U.MD.D.I.IsDrag) {
  163. //打开应用处理
  164. U.MD.D.I.openApplication(obj.Url, { "userid": US.userInfo.UserId, "directoryid": US.FTPFOLDERID });
  165. }
  166. }
  167. //如果是mouse事件的处理
  168. else {
  169. //拖动处理,添加拖动和拖动结束事件
  170. U.UF.F.drag(el, U.MD.D.iconMove, U.MD.D.iconUp);
  171. }
  172. U.MD.D.I.IsDrag = false;
  173. }
  174. }
  175. /**
  176. * 拖动的处理
  177. *
  178. */
  179. U.MD.D.iconMove = function () {
  180. //如果当前位置点击初始化的位置出现了变化,则设置是否拖动的属性 U.MD.D.I.IsDrag为true
  181. U.MD.D.I.IsDrag = true;
  182. }
  183. /**
  184. * 拖动结束后,这里是定位处理,以网状的形式定位
  185. *
  186. * @param {element} 拖动的元素
  187. * @return {object} 命名空间
  188. */
  189. U.MD.D.iconUp = function (el) {
  190. var _top = 15,
  191. _left = 20,
  192. _margin,
  193. _childs = U.selectEl("#U_MD_D_K").Child(), //桌面所有的图标
  194. _positioninfo = U.UF.EL.getElementInfo(el); //获取拖动结束的元素的位置
  195. if (_positioninfo["OT"] > 15) {
  196. //网状的形式定位,如果差超过了55,那么向下定位,否则向上定位
  197. _margin = ((_positioninfo["OT"] - 15) % 115 > 55 && _positioninfo["OT"] + 115 < US.height) ? 1 : 0;
  198. _top = (Math.floor((_positioninfo["OT"] - 15) / 115) + _margin) * 115 + 15;
  199. }
  200. if (_positioninfo["OL"] > 20) {
  201. //网状的形式定位,如果差超过了90,那么向右定位,否则向左定位
  202. _margin = ((_positioninfo["OL"] - 20) % 90 > 45 && _positioninfo["OL"] + 90 < US.width) ? 1 : 0;
  203. _left = (Math.floor((_positioninfo["OL"] - 20) / 90) + _margin) * 90 + 20
  204. }
  205. //while循环判断么一个重叠的元素
  206. do {
  207. _positioninfo = U.MD.D.iconPostion([el], _top, _left); //给重叠的元素向下定位
  208. _top = _positioninfo[0] + 115; //得到定位后的top
  209. _left = _positioninfo[1]; //得到定位后的left
  210. } while (el = U.MD.D.isOverlap(el, _childs, _positioninfo))
  211. }
  212. /**
  213. * 判断拖动后图标是否重叠
  214. *
  215. * @param {element} 拖动的元素
  216. * @param {element} 桌面所有的元素
  217. * @param {array} 拖动元素的位置
  218. ----------[0] 上 top
  219. ----------[1] 左 left
  220. * @return {object} 命名空间
  221. */
  222. U.MD.D.isOverlap = function (el, childs, postionarray) {
  223. //循环所有的图标
  224. for (var i = 0; i < childs.length; i++) {
  225. //判断有没有和该图标诶子重叠的元素
  226. if (el != childs[i] && (childs[i].offsetTop == postionarray[0] && childs[i].offsetLeft == postionarray[1])) {
  227. return childs[i]; //如果有返回
  228. }
  229. }
  230. }
  231. //#endregion
  232. //#endregion
  233. //#region 桌面应用
  234. /**
  235. * 打开应用
  236. *
  237. * @param {string} 类型
  238. -----------------Disk 网盘系统
  239. -----------------PDisk 学习系统网盘
  240. -----------------Poto 图片
  241. -----------------Video 视频
  242. -----------------Music 音乐
  243. -----------------Word word
  244. -----------------Excel excel
  245. -----------------Txt 记事本
  246. -----------------PB 学习系统
  247. -----------------Blog 朋友圈系统
  248. -----------------FTP ftp系统
  249. -----------------Group 好友群
  250. -----------------SY 首页系统
  251. -----------------Set 个人设置
  252. -----------------XSet 系统设置
  253. -----------------App 我们所有的app
  254. -----------------BC c.1473.cn 平台
  255. -----------------CWeb d.1473.cn 变成平台
  256. -----------------其他的外联系统 我们统一用iframe打开
  257. * @param {array} 类型
  258. 如果第一个参数为"disk",则第二个参数为object,里面包含了用户id和目录id{userid:"",directoryid:""}
  259. 如果第一个参数为"word"或者"excel","txt",则第二个参数为文件信息fileinfo。
  260. 如果第一个参数为"blog"或者"PDisk"。建议删除。
  261. 如果第一个参数为其他,则无第二个参数
  262. * @returns {array}
  263. */
  264. U.MD.D.I.openApplication = function (str, obj, info) {
  265. obj = obj || {};
  266. var _taskbar, //_taskbar 作为任务栏显示的元素,包含图标和名字
  267. _formdiv, //创建任务栏时同时弹出的窗体元素。
  268. _userinfo = US.userInfo, //登录用户信息
  269. _userid = obj.userid || _userinfo.UserId //登录用户id
  270. ;
  271. //选择应用处理
  272. switch (str) {
  273. case "friend": //好友打开
  274. U.MD.D.I.IsDrag = true;
  275. U.MD.F.W.viewFriend(info); //打开好友
  276. // U.MD.N.urlWrite("friend/" + obj.directoryid, "好友"); //好友的url重写
  277. break;
  278. case "domain":
  279. var _iframe = $$('iframe', { src: '//domain.1473.cn/DomainSystem.aspx/?fileId=' + info.fileId + '&type=' + info.type + '&mode=' + info.mode, frameborder: "0", style: { cssText: "width:100%;height:100%;border:0px" } });
  280. _formdiv = new U.UF.UI.form("域名管理", _iframe, { id: "U_MD_DS_DomainShare", style: { "width": "370px", "height": "390px" } }).form;
  281. if (_formdiv) {
  282. //生成任务栏的变量
  283. _taskbar = { "id": str + _formdiv.id, "backgroundPostion": "-15px -296px", "name": "网盘", "forms": _formdiv, "click": function () { U.MD.D.I.openApplication(str, obj, info); } }
  284. }
  285. break;
  286. case "disk": //个人网盘查看
  287. _formdiv = U.MD.DK.initDisk(_userid, obj.directoryid); //根据网盘数据,并加载网盘,里面包含了url重写
  288. if (_formdiv) {
  289. //生成任务栏的变量
  290. _taskbar = { "id": str + _formdiv.id, "backgroundPostion": "-15px -296px", "name": "网盘", "forms": _formdiv, "click": function () { U.MD.D.I.openApplication(str, obj); } }
  291. }
  292. break;
  293. case "word": //Word打开
  294. var _wordinfo = U.MD.O.word(_userinfo, obj, arguments[2]); //初始化word的处理
  295. _formdiv = _wordinfo[0];
  296. if (_formdiv) {
  297. //生成任务栏的变量
  298. _taskbar = { "id": str + _formdiv.id, "backgroundPostion": "-462px -296px", "name": "文档", "forms": _formdiv, "click": function () { U.MD.D.I.openApplication(str, _wordinfo[1]); } }
  299. }
  300. if (obj.UrlType != 'join') {
  301. U.MD.N.urlWrite("word/" + _formdiv.id.substr(-36), "在线文档"); //word的url重写
  302. }
  303. break;
  304. case "excel": //Excel打开
  305. _formdiv = U.MD.O.excel(_userinfo, obj);
  306. if (_formdiv) {
  307. //生成任务栏的变量
  308. _taskbar = { "id": str + _formdiv.id, "backgroundPostion": "-523px -296px", "name": "Excel", "forms": _formdiv, "click": function () { U.MD.D.I.openApplication(str, obj); } }
  309. }
  310. U.MD.N.urlWrite("excel/" + _formdiv.id.substr(-36), "Excel");
  311. break;
  312. case "txt": //Txt打开
  313. _formdiv = U.MD.D.Txt.textCreate();
  314. if (_formdiv) {
  315. //生成任务栏的变量
  316. _taskbar = { "id": str + obj.directoryid, "backgroundPostion": "-267px -413px", "name": "文本", "forms": _formdiv, "click": function () { U.MD.D.I.openApplication(str, obj); } }
  317. }
  318. U.MD.N.urlWrite("txt/" + _formdiv.id.substr(-36), "文本");
  319. break;
  320. case "lookupFriend":
  321. _formdiv = U.MD.F.S.popSearchFriendsOrGroupForm(0);
  322. //生成任务栏的变量
  323. _taskbar = { "id": str + _formdiv.id, "backgroundPostion": "-85px -413px", "name": "查找好友", "forms": _formdiv, "click": function () { U.MD.D.I.openApplication(str, obj); } }
  324. U.MD.N.urlWrite("lookupfriend/" + obj.directoryid.substr(-36), "查找好友"); //查找好友的url重写
  325. break;
  326. case "ftp": //Ftp
  327. _formdiv = U.MD.F.S.popupsSearchFtp();
  328. //生成任务栏的变量
  329. _taskbar = { "id": str + _formdiv.id, "backgroundPostion": "-144px -413px", "name": "FTP", "forms": _formdiv, "click": function () { U.MD.D.I.openApplication(str, obj); } }
  330. break;
  331. case "group": //群组
  332. _formdiv = U.MD.F.S.popupsSearchGroups(0);
  333. //生成任务栏的变量
  334. _taskbar = { "id": str + _formdiv.id, "backgroundPostion": "-85px -413px", "name": "群组", "forms": _formdiv, "click": function () { U.MD.D.I.openApplication(str, obj); } }
  335. break;
  336. case "set": //个人设置
  337. _formdiv = U.MD.U.P.userDataSet();
  338. if (_formdiv) {
  339. //生成任务栏的变量
  340. _taskbar = { "id": str + _formdiv.id, "backgroundPostion": "-400px -296px", "name": "个人设置", "forms": _formdiv, "click": function () { U.MD.D.I.openApplication(str, obj); } }
  341. }
  342. break;
  343. case "systemSet": //系统设置
  344. _formdiv = U.MD.D.B.init();
  345. //生成任务栏的变量
  346. _taskbar = { "id": str + _formdiv.id, "backgroundPostion": "-400px -296px", "name": "系统设置", "forms": _formdiv, "click": function () { U.MD.D.I.openApplication(str, obj); } }
  347. break;
  348. case "boomYun": //BoomYun
  349. _formdiv = U.Boom.I.onload();
  350. //生成任务栏的变量
  351. _taskbar = { "id": str + _formdiv.id, "backgroundPostion": "-844px -419px", "name": "互联办公", "forms": _formdiv, "click": function () { U.MD.D.I.openApplication(str, obj); } }
  352. U.MD.N.urlWrite("boomyun", "互联办公"); //boomyun的url重写
  353. break;
  354. case "xz": //App下载
  355. window.open("http://xz.1473.cn");
  356. break;
  357. case "client": //App下载
  358. window.open("http://client.1473.cn");
  359. break;
  360. case "backEndProgramming": //在线编程平台打开
  361. window.open("http://c.1473.cn");
  362. break;
  363. case "frontEndProgramming": //在线web编程
  364. window.open("http://d.1473.cn");
  365. break;
  366. default: break;
  367. }
  368. //U.MD.D.I.openClick(str);
  369. //如果有任务栏信息
  370. if (_taskbar) {
  371. U.MD.D.T.taskbar(_taskbar); //创建任务处理
  372. }
  373. }
  374. // U.MD.D.I.openClick = function(str){
  375. // var click = '';
  376. // switch(str){
  377. // case 'friend':
  378. // click = '我的好友';
  379. // break;
  380. // case 'domain':
  381. // click = '域名管理';
  382. // break;
  383. // case 'disk':
  384. // click = '我的云盘';
  385. // break;
  386. // case 'word':
  387. // click = 'Word';
  388. // break;
  389. // case 'excel':
  390. // click = 'Execl';
  391. // break;
  392. // case 'txt':
  393. // click = '文本文件';
  394. // break;
  395. // case 'lookupFriend':
  396. // click = '查找好友';
  397. // break;
  398. // case 'ftp':
  399. // click = 'FTP';
  400. // break;
  401. // case 'group':
  402. // click = '群组';
  403. // break;
  404. // case 'set':
  405. // click = '我的设置';
  406. // break;
  407. // case 'systemSet':
  408. // click = '系统设置';
  409. // break;
  410. // case 'boomYun':
  411. // click = '互联办公';
  412. // break;
  413. // case 'xz':
  414. // click = '云端下载';
  415. // break;
  416. // case 'client':
  417. // click = '有思浏览器';
  418. // break;
  419. // case 'backEndProgramming':
  420. // click = '在线后台编程';
  421. // break;
  422. // case 'frontEndProgramming':
  423. // click = '在线前端编程';
  424. // break;
  425. // default: break;
  426. // }
  427. // if(U.MD.D.I.Ip && click){
  428. // var clickUrl = ':12588/useClick.php?name=' + click + '&ip=' + U.MD.D.I.Ip;
  429. // U.MD.D.I.Mysqlrequest(clickUrl,function(data){
  430. // })
  431. // }
  432. // }
  433. /**
  434. *函数作用:ajax简易函数,使用post格式
  435. *@param url {data} 后台地址
  436. *@param data {data} 参数json
  437. *@param fn {data} 回调函数
  438. *
  439. */
  440. // U.MD.D.I.Mysqlrequest = function(url,fn){
  441. // var xhr = new XMLHttpRequest();
  442. // xhr.open("GET",url,true);
  443. // xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  444. // xhr.onreadystatechange = function(){
  445. // if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)){
  446. // fn.call(this,xhr.responseText);
  447. // }
  448. // };
  449. // xhr.send();
  450. // }
  451. /*判断是否是内网IP*/
  452. // U.MD.D.I.isInnerIPFn = function(str){
  453. // var curPageUrl = str;
  454. // var reg1 = /(http|ftp|https|www):\/\//g;//去掉前缀
  455. // curPageUrl =curPageUrl.replace(reg1,'');
  456. // // console.log('curPageUrl-1 '+curPageUrl);
  457. // var reg2 = /\:+/g;//替换冒号为一点
  458. // curPageUrl =curPageUrl.replace(reg2,'.');
  459. // // console.log('curPageUrl-2 '+curPageUrl);
  460. // curPageUrl = curPageUrl.split('.');//通过一点来划分数组
  461. // var ipAddress = curPageUrl[0]+'.'+curPageUrl[1]+'.'+curPageUrl[2]+'.'+curPageUrl[3];
  462. // if(curPageUrl[2] != '16'){
  463. // return ipAddress;
  464. // }else{
  465. // return false;
  466. // }
  467. // }
  468. // U.MD.D.I.getUserIP = function(onNewIP) { // onNewIp - your listener function for new IPs
  469. // //compatibility for firefox and chrome
  470. // var myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
  471. // var pc = new myPeerConnection({
  472. // iceServers: []
  473. // }),
  474. // noop = function() {},
  475. // localIPs = {},
  476. // ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g,
  477. // key;
  478. // function iterateIP(ip) {
  479. // if (!localIPs[ip]) onNewIP(ip);
  480. // localIPs[ip] = true;
  481. // }
  482. // //create a bogus data channel
  483. // pc.createDataChannel("");
  484. // // create offer and set local description
  485. // pc.createOffer().then(function(sdp) {
  486. // sdp.sdp.split('\n').forEach(function(line) {
  487. // if (line.indexOf('candidate') < 0) return;
  488. // line.match(ipRegex).forEach(iterateIP);
  489. // });
  490. // pc.setLocalDescription(sdp, noop, noop);
  491. // }).catch(function(reason) {
  492. // // An error occurred, so handle the failure to connect
  493. // });
  494. // //sten for candidate events
  495. // pc.onicecandidate = function(ice) {
  496. // if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return;
  497. // ice.candidate.candidate.match(ipRegex).forEach(iterateIP);
  498. // };
  499. // }
  500. // U.MD.D.I.getUserIpBool = function(callback){
  501. // U.MD.D.I.getUserIP(function(ip){
  502. // alert("Got IP! :" + ip);
  503. // });
  504. //}
  505. //#endregion