Indowebster GET Link

(Indowebster) automatically get download link

  1. // ==UserScript==
  2. // @name Indowebster GET Link
  3. // @namespace http://userscripts.org/scripts/show/69049
  4. // @include http://*.indowebster.com/*.html
  5. // @include http://*.indowebster.com/download/*
  6. // @include http://*.indowebster.com/downloads/*
  7. // @exclude http://ads.indowebster.com*
  8. // @version 13060830
  9. // @description (Indowebster) automatically get download link
  10. // @author idx (http://userscripts.org/users/idx)
  11. //
  12. // Indowebster Link Download
  13. //
  14. // Copyright (c) 2009, Idx
  15. // Released under the GPL license
  16. // http://www.gnu.org/copyleft/gpl.html
  17. // --------------------------------------------------------------------
  18. // Mod By: Idx
  19. // ==============
  20. //
  21. // mod.R-30 : 2013-06-08
  22. // recode
  23. //
  24. // mod.R-29 : 2012-11-03
  25. // reindent code
  26. // fix autodownload
  27. //
  28. //
  29. // --------------------------------------------------------------------
  30. // ==/UserScript==
  31. (function() {
  32. function main(){
  33.  
  34. var gvar = function() {};
  35. gvar.vver = "R.30";
  36. gvar.apps_title = 'IDWS GET[Link] - '+gvar.vver;
  37. gvar.apps_src = '//userscripts.org/scripts/show/69049';
  38.  
  39. gvar.__DEBUG__ = !1;
  40. var OPTIONS_BOX = {
  41. IDWS_AUTODOWNLOAD: ['1']
  42. }, KS = 'IDWS_';
  43.  
  44. var GMSTORAGE_PATH = "GM_";
  45. var $D = function(q, root, single) {
  46. if(root && typeof root == "string") {
  47. root = $D(root, null, true);
  48. if(!root) {
  49. return null
  50. }
  51. }
  52. if(!q) {
  53. return false
  54. }
  55. if(typeof q == "object") {
  56. return q
  57. }
  58. root = root || document;
  59. if(q[0] == "#") {
  60. return root.getElementById(q.substr(1))
  61. }else {
  62. if(q[0] == "/" || q[0] == "." && q[1] == "/") {
  63. if(single) {
  64. return document.evaluate(q, root, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue
  65. }
  66. return document.evaluate(q, root, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
  67. }else {
  68. if(q[0] == ".") {
  69. return root.getElementsByClassName(q.substr(1))
  70. }
  71. }
  72. }
  73. return root.getElementsByTagName(q)
  74. };
  75. var GM_addGlobalScript = function (a, b, c) {
  76. var d = createEl("script", { type: "text/javascript"});
  77. if (isDefined(b) && isString(b)) d.setAttribute("id", b);
  78. if (a.match(/^https?:\/\/.+/)) d.setAttribute("src", a);
  79. else d.appendChild(createTextEl(a));
  80. if (isDefined(c) && c) {
  81. document.body.insertBefore(d, document.body.firstChild)
  82. } else {
  83. var e = document.getElementsByTagName("head");
  84. if (isDefined(e[0]) && e[0].nodeName == "HEAD") gvar.$w.setTimeout(function () {
  85. e[0].appendChild(d)
  86. }, 100);
  87. else document.body.insertBefore(d, document.body.firstChild)
  88. }
  89. return d
  90. };
  91. var GM_addGlobalStyle = function (a, b, c) {
  92. var d, e;
  93. if (a.match(/^https?:\/\/.+/)) {
  94. d = createEl("link", { type: "text/css", rel:'stylesheet', href:a });
  95. }else{
  96. d = createEl("style", { type: "text/css" });
  97. d.appendChild(createTextEl(a));
  98. }
  99. if (isDefined(b) && isString(b)) d.setAttribute("id", b);
  100. if (isDefined(c) && c) {
  101. document.body.insertBefore(d, document.body.firstChild)
  102. } else {
  103. e = document.getElementsByTagName("head");
  104. if (isDefined(e[0]) && e[0].nodeName == "HEAD") gvar.$w.setTimeout(function () {
  105. e[0].appendChild(d)
  106. }, 100);
  107. else document.body.insertBefore(d, document.body.firstChild)
  108. }
  109. return d
  110. };
  111. var rSRC = {
  112. getCSS: function(){
  113. return ''
  114. +'.wrap-actions{margin-top:-20px; padding:0; border:1px solid #ccc;}'
  115. +'.wrap-actions .btitle, .wrap-actions .btn_toggle_autodl, .title .btn_toggle_autodl{display:inline-block;}'
  116. +'.wrap-actions .btitle{background:#ddd; border-bottom:1px solid #ccc; padding:8px 0 5px 0; margin-bottom:20px;display:block;}'
  117. +'.wrap-actions .btitle a{font-size:14px; font-weight:bold; line-height:10px; display:inline-block; margin-left:10px;}'
  118. +'.btn_toggle_autodl{float:right;margin:7px 14px 0 0; font-size:11px;}'
  119. +'.btn_toggle_autodl input{width: 13px; height:13px; padding:0; margin:0; position: relative; top:-2px; vertical-align: bottom; *overflow: hidden;}'
  120. +'.btn_toggle_autodl label{display: block; text-indent: -15px;}'
  121. +'.title .btitle{display:inline-block;}'
  122. +'.title .btn_toggle_autodl{margin-top:3px;}'
  123. +'.title .btn_toggle_autodl input{top:-3px;}'
  124. +'.tips{color:#999; padding:5px;}'
  125. +'.hide{display:none}'
  126. +''
  127. ;
  128. },
  129. getSCRIPT: function(){
  130. return ''
  131. +'var gvar = gvar || {};'
  132. +'var $btntarget = ($ && $(".downloadBtn").length ? $(".downloadBtn").first().find("input").first() : null);'
  133. +'var currentTitle = $("title").first().text();'
  134. +''
  135. +'function setTitle(x){$("title").first().text(x)}'
  136. +'function clog(x){console && console.log(x)}'
  137. +'function g(x){return document.getElementById(x)}'
  138. +''
  139. +'function frameloaded(){'
  140. +'$btntarget && $btntarget.val("Please wait.........");'
  141. +'if( $btntarget.hasClass("color_red") )'
  142. +' $btntarget.addClass("color_blue").removeClass("color_red");'
  143. +'}'
  144. +'function sendMessage(msg, cb){'
  145. +'gvar.link = msg;'
  146. +'("function" == typeof cb) && cb();'
  147. +'}'
  148. +'function respondLink(){'
  149. +'$btntarget.parent().attr("href", gvar.link);'
  150. +'var isAudl = $("#btn_autodl").is(":checked");'
  151. +'isAudl && $("#directlink_iframe").attr("src", gvar.link);'
  152. +'setTitle("[R] "+currentTitle);'
  153. +'if( $.browser.webkit )'
  154. +' $(".wrap-actions").find(".tips").removeClass("hide");'
  155. +'}'
  156. +'function timerMessage(msg){'
  157. +'if( msg > 0 )'
  158. +' $btntarget.val("DOWNLOAD ["+msg+"]");'
  159. +'else '
  160. +' $btntarget.val("DOWNLOAD REDE").removeClass("color_blue color_red").addClass("color_green");'
  161. +'setTitle("["+msg+"] "+currentTitle)'
  162. +'}'
  163. },
  164. getSCRIPT_Framed: function(){
  165. return ''
  166. +'var currentTitle = $("title").first().text();'
  167. +'function setTitle(x){$("title").first().text(x)}'
  168. +'function storeLink(e){'
  169. +'var el = e.target||e,'
  170. +' data_link=$(el).attr("data-link"),'
  171. +' data_autodl = $(el).attr("data-autodl"),'
  172. +' data_insideframe = $(el).attr("data-insideframe");'
  173. +'if( data_insideframe )'
  174. +' parent.sendMessage(data_link, parent.respondLink);'
  175. +'else{'
  176. +' data_autodl && $("#directlink_iframe").attr("src", data_link);'
  177. +' setTitle( "[R] "+currentTitle)'
  178. +'}'
  179. +'}'
  180. +'function timerMessage(e){'
  181. +'var el = e.target||e,'
  182. +' data_remain = $(el).attr("data-remain"),'
  183. +' data_autodl = $(el).attr("data-autodl"),'
  184. +' data_insideframe = $(el).attr("data-insideframe");'
  185. +'if( data_insideframe ){'
  186. +' parent.timerMessage(data_remain);'
  187. +'}else{'
  188. +' setTitle( "["+data_remain+"] "+currentTitle)'
  189. +'}'
  190. +'}'
  191. }
  192. };
  193.  
  194.  
  195. //=== mini-functions
  196. // static routine
  197. function isDefined(x) { return !(x == null && x !== null); }
  198. function isUndefined(x) { return x == null && x !== null; }
  199. function isString(x) { return (typeof(x)!='object' && typeof(x)!='function'); }
  200. function trimStr(x) { return (typeof(x)=='string' && x ? x.replace(/^\s+|\s+$/g,"") : '') };
  201. function isLink(x) { return x.match(/((?:http(?:s|)|ftp):\/\/)(?:\w|\W)+(?:\.)(?:\w|\W)+/); }
  202. function dump(x){return ("undefined" != typeof JSON ? JSON.stringify(x) : x)}
  203.  
  204. function createTextEl(a) {
  205. return document.createTextNode(a)
  206. }
  207. function createEl(a, b, c) {
  208. var d = document.createElement(a);
  209. for (var e in b) if (b.hasOwnProperty(e)) d.setAttribute(e, b[e]);
  210. if (c) d.innerHTML = c;
  211. return d
  212. }
  213. function getTag(name, parent) {
  214. if(isUndefined(parent)) {
  215. parent = document
  216. }
  217. return parent.getElementsByTagName(name)
  218. }
  219. function getValue(key, cb) {
  220. var data=OPTIONS_BOX[key];
  221. if( !data ) return;
  222. setTimeout(function(){
  223. var ret = GM_getValue(key,data[0]);
  224. if('function' == typeof cb)
  225. cb(ret);
  226. else if(cb)
  227. cb = ret;
  228. }, 0);
  229. }
  230. function setValue(key, value, cb) {
  231. var data=OPTIONS_BOX[key];
  232. if( !data ) return;
  233. setTimeout(function(){
  234. var ret = GM_setValue(key,value);
  235. if('function' == typeof cb)
  236. cb(ret);
  237. else if(cb)
  238. cb = ret;
  239. }, 1);
  240. }
  241.  
  242.  
  243.  
  244. function ApiBrowserCheck() {
  245. if(typeof unsafeWindow == "undefined") {
  246. unsafeWindow = window
  247. }
  248. if(typeof GM_log == "undefined") {
  249. GM_log = function(msg) {
  250. try {
  251. unsafeWindow.console.log("GM_log: " + msg)
  252. }catch(e) {
  253. }
  254. }
  255. }
  256. var needApiUpgrade = false;
  257. if(window.navigator.appName.match(/^opera/i) && typeof window.opera != "undefined") {
  258. needApiUpgrade = true;
  259. gvar.isOpera = true;
  260. GM_log = window.opera.postError;
  261. show_alert("Opera detected...", 0)
  262. }
  263. if(typeof GM_setValue != "undefined") {
  264. var gsv;
  265. try {
  266. gsv = GM_setValue.toString()
  267. }catch(e) {
  268. gsv = ".staticArgs.FF4.0b"
  269. }
  270. if(gsv.indexOf("staticArgs") > 0) {
  271. gvar.isGreaseMonkey = true;
  272. gvar.isFF4 = false;
  273. show_alert("GreaseMonkey Api detected" + ((gvar.isFF4 = gsv.indexOf("FF4.0b") > 0) ? " on FF4.0b" : "") + "...", 0)
  274. }else {
  275. if(gsv.match(/not\s+supported/)) {
  276. needApiUpgrade = true;
  277. gvar.isBuggedChrome = true;
  278. show_alert("Bugged Chrome GM Api detected...", 0)
  279. }
  280. }
  281. }else {
  282. needApiUpgrade = true;
  283. show_alert("No GM Api detected...", 0)
  284. }
  285. gvar.noCrossDomain = gvar.isOpera || gvar.isBuggedChrome;
  286. if(needApiUpgrade) {
  287. GM_isAddon = true;
  288. show_alert("Try to recreate needed GM Api...", 0);
  289. var ws = null;
  290. try {
  291. ws = typeof unsafeWindow.localStorage
  292. }catch(e) {
  293. ws = null
  294. }
  295. if(ws == "object") {
  296. show_alert("Using localStorage for GM Api.", 0);
  297. GM_getValue = function(name, defValue) {
  298. var value = unsafeWindow.localStorage.getItem(GMSTORAGE_PATH + name);
  299. if(value == null) {
  300. return defValue
  301. }else {
  302. switch(value.substr(0, 2)) {
  303. case "S]":
  304. return value.substr(2);
  305. case "N]":
  306. return parseInt(value.substr(2));
  307. case "B]":
  308. return value.substr(2) == "true"
  309. }
  310. }
  311. return value
  312. };
  313. GM_setValue = function(name, value) {
  314. switch(typeof value) {
  315. case "string":
  316. unsafeWindow.localStorage.setItem(GMSTORAGE_PATH + name, "S]" + value);
  317. break;
  318. case "number":
  319. if(value.toString().indexOf(".") < 0) {
  320. unsafeWindow.localStorage.setItem(GMSTORAGE_PATH + name, "N]" + value)
  321. }
  322. break;
  323. case "boolean":
  324. unsafeWindow.localStorage.setItem(GMSTORAGE_PATH + name, "B]" + value);
  325. break
  326. }
  327. };
  328. GM_deleteValue = function(name) {
  329. unsafeWindow.localStorage.removeItem(GMSTORAGE_PATH + name)
  330. }
  331. }else {
  332. if(!gvar.isOpera || typeof GM_setValue == "undefined") {
  333. show_alert("Using temporarilyStorage for GM Api.", 0);
  334. gvar.temporarilyStorage = new Array;
  335. GM_getValue = function(name, defValue) {
  336. if(typeof gvar.temporarilyStorage[GMSTORAGE_PATH + name] == "undefined") {
  337. return defValue
  338. }else {
  339. return gvar.temporarilyStorage[GMSTORAGE_PATH + name]
  340. }
  341. };
  342. GM_setValue = function(name, value) {
  343. switch(typeof value) {
  344. case "string":
  345. ;
  346. case "boolean":
  347. ;
  348. case "number":
  349. gvar.temporarilyStorage[GMSTORAGE_PATH + name] = value
  350. }
  351. };
  352. GM_deleteValue = function(name) {
  353. delete gvar.temporarilyStorage[GMSTORAGE_PATH + name]
  354. }
  355. }
  356. }
  357. if(typeof GM_openInTab == "undefined") {
  358. GM_openInTab = function(url) {
  359. unsafeWindow.open(url, "")
  360. }
  361. }
  362. if(typeof GM_registerMenuCommand == "undefined") {
  363. GM_registerMenuCommand = function(name, cmd) {
  364. GM_log("Notice: GM_registerMenuCommand is not supported.")
  365. }
  366. }
  367. if(!gvar.isOpera || typeof GM_xmlhttpRequest == "undefined") {
  368. show_alert("Using XMLHttpRequest for GM Api.", 0);
  369. GM_xmlhttpRequest = function(obj) {
  370. var request = new XMLHttpRequest;
  371. request.onreadystatechange = function() {
  372. if(obj.onreadystatechange) {
  373. obj.onreadystatechange(request)
  374. }
  375. if(request.readyState == 4 && obj.onload) {
  376. obj.onload(request)
  377. }
  378. };
  379. request.onerror = function() {
  380. if(obj.onerror) {
  381. obj.onerror(request)
  382. }
  383. };
  384. try {
  385. request.open(obj.method, obj.url, true)
  386. }catch(e) {
  387. if(obj.onerror) {
  388. obj.onerror({readyState:4, responseHeaders:"", responseText:"", responseXML:"", status:403, statusText:"Forbidden"})
  389. }
  390. return
  391. }
  392. if(obj.headers) {
  393. for(name in obj.headers) {
  394. request.setRequestHeader(name, obj.headers[name])
  395. }
  396. }
  397. request.send(obj.data);
  398. return request
  399. }
  400. }
  401. }
  402. GM_getIntValue = function(name, defValue) {
  403. return parseInt(GM_getValue(name, defValue), 10)
  404. }
  405. }
  406. function clog(msg) {
  407. if(!gvar.__DEBUG__) {
  408. return
  409. }
  410. show_alert(msg)
  411. }
  412. function show_alert(msg, force) {
  413. if(!gvar.__DEBUG__) {
  414. return
  415. }
  416. if(arguments.callee.counter) {
  417. arguments.callee.counter++
  418. }else {
  419. arguments.callee.counter = 1
  420. }
  421. GM_log("(" + arguments.callee.counter + ") " + msg);
  422. if(force == 0) {
  423. return
  424. }
  425. }
  426. // end of std-func
  427.  
  428.  
  429.  
  430. function create_trans_iframe(link) {
  431. var $ifrm = $("#fake_iframe"),
  432. styles = gvar.ninja_styles;
  433. if( !$ifrm.length ) {
  434. $('<iframe id="fake_iframe" src="'+link+'" style="'+styles+'" onload="parent.frameloaded()"></iframe>')
  435. .prependTo($('body'));
  436. create_directlink_iframe();
  437. }else {
  438. $ifrm.attr('src', link);
  439. }
  440. }
  441. function create_directlink_iframe() {
  442. var $ifrm = $("#directlink_iframe"),
  443. styles = gvar.ninja_styles;
  444. if( !$ifrm.length ) {
  445. $('<iframe id="directlink_iframe" src="javascript:;" style="'+styles+'"></iframe>')
  446. .prependTo($('body'));
  447. }
  448. }
  449. function is_download_page(){
  450. return /\/download\//.test(location.href);
  451. }
  452.  
  453. function prefetch_download() {
  454. clog('insed prefetch_download');
  455. $.post(gvar.prefetch.prefetchUri, gvar.prefetch.prefetchParams, function(ret){
  456. if( ret ){
  457. $('#btn_timer')
  458. .attr('data-remain', 0)
  459. .trigger('click')
  460. ;
  461. gvar.sTryCounter && clearInterval(gvar.sTryCounter);
  462. $('#btn_storelink')
  463. .attr('data-link', ret)
  464. .trigger('click')
  465. ;
  466. }
  467. })
  468. }
  469.  
  470.  
  471. function start_Main(){
  472. clog('start_Main');
  473.  
  474. var $downloadBtn = $('.downloadBtn'),
  475. is_inside_iframe = ( window !== window.top )
  476. ;
  477. GM_addGlobalStyle(rSRC.getCSS(), 'parent-style', true);
  478.  
  479. if( is_download_page() ){
  480. $downloadBtn.length && (function($el){
  481. // do what and then...
  482. GM_addGlobalScript(rSRC.getSCRIPT(), 'parent-script', true);
  483. $downloadBtn.closest('.block')
  484. .wrap($('<div class="wrap-actions"></div>'));
  485. $('.wrap-actions')
  486. .prepend($('<div class="btitle"><a href="'+gvar.apps_src+'" target="_blank">'+gvar.apps_title+'</a></div>'))
  487. .prepend($('<div class="btn_toggle_autodl"><label for="btn_autodl"><input id="btn_autodl" type="checkbox" '+(gvar.settings.auto_dl ? ' checked="checked"':'')+' />&nbsp;Auto Download<label></div>'))
  488. .append('<div class="tips hide">*When "Download Rede" and download is not working, try it with "Save Link As.."</div>')
  489. ;
  490.  
  491. window.setTimeout(function(){
  492. create_trans_iframe($el.href);
  493. }, 234);
  494. })($downloadBtn[0]);
  495. }
  496. else{
  497. // assumed is page of /downloads/
  498. GM_addGlobalScript(rSRC.getSCRIPT_Framed(), 'iframe-script', true);
  499. var $tgt_title = $('.alpha.omega>h6.title');
  500. $tgt_title.wrapInner('<div class="btitle" />');
  501. $tgt_title.find('.btitle').html('<a href="'+gvar.apps_src+'" target="_blank">'+gvar.apps_title+'</a>');
  502. $tgt_title
  503. .append($('<div class="btn_toggle_autodl"><label for="btn_autodl"><input id="btn_autodl" type="checkbox" '+(gvar.settings.auto_dl ? ' checked="checked"':'')+'/>&nbsp;Auto Download<label></div>'))
  504. ;
  505.  
  506. clog('we are on downloads');
  507. var $bodyContainer = $('#bodyContainer'),
  508. $scripts = getTag('script', $bodyContainer.get(0)),
  509. $targetScript = null
  510. ;
  511.  
  512. for(var i=0; i<$scripts.length; ++i){
  513. if( String($scripts[i].innerHTML).match(/\$\.post\b/) ){
  514. $targetScript = $scripts[i]; break;
  515. }
  516. }
  517. if( $targetScript ){
  518. var re = new RegExp('\\$\\.p'+''/*_^_^V_*/+'o'+'st\\([\\\'\\\"]([^\\\'\\\"]+).(?:\\s+)?,(?:\\s+)?(\\{[^\\}]+.)', "");
  519. if( cucok = re.exec($targetScript.innerHTML) ){
  520. var params_;
  521. try{
  522. params_ = eval('('+cucok[2]+')');
  523. }
  524. catch(e){params_={}}
  525. gvar.prefetch = {
  526. prefetchUri: cucok[1],
  527. prefetchParams: params_
  528. };
  529.  
  530. window.setTimeout(function(){
  531. prefetch_download();
  532. }, 345);
  533.  
  534. window.setTimeout(function(){
  535. $downloadBtn = $('#downloadBtn');
  536. var cucok, remain;
  537. gvar.remain = 25;
  538. if(cucok = /\s\((\d+)s\)/.exec($downloadBtn.val()) ){
  539. remain = cucok[1];
  540. gvar.remain = remain;
  541. }
  542. }, 1);
  543.  
  544. if( !is_inside_iframe )
  545. create_directlink_iframe();
  546. gvar.sTryCounter = setInterval(function(){
  547. var $tgt = $('#btn_timer');
  548. if( gvar.remain > 0 ){
  549. $tgt
  550. .attr('data-remain', gvar.remain)
  551. .trigger('click')
  552. ;
  553. }
  554. else{
  555. clearInterval(gvar.sTryCounter);
  556. }
  557. $tgt.val(gvar.remain);
  558. gvar.remain--;
  559. }, 1000);
  560. }
  561. else{
  562. clog('regex failed');
  563. }
  564. }
  565. else{
  566. clog('targetScript not found');
  567. }
  568.  
  569. $('<input id="btn_storelink" data-autodl="'+(gvar.settings.auto_dl ? '1':'')+'" data-insideframe="'+(is_inside_iframe ? '1':'')+'" data-link="" type="button" onclick="return storeLink(this)" value="StoreLink" />')
  570. .appendTo($bodyContainer);
  571. $('<input id="btn_timer" data-autodl="'+(gvar.settings.auto_dl ? '1':'')+'" data-insideframe="'+(is_inside_iframe ? '1':'')+'" type="button" onclick="return timerMessage(this)" value="tickTimer" />')
  572. .appendTo($bodyContainer);
  573. }
  574.  
  575. // common events
  576. $('#btn_autodl').click(function(){
  577. var isChecked = $(this).is(":checked");
  578. setValue(KS + 'AUTODOWNLOAD', (isChecked ? '1':'0'), function(){
  579. gvar.settings.auto_dl = isChecked;
  580. $('#btn_storelink').attr('data-autodl', isChecked ? '1':'');
  581. $('#btn_timer').attr('data-autodl', isChecked ? '1':'');
  582. });
  583. })
  584. }
  585.  
  586. (function init(){
  587. ApiBrowserCheck();
  588. gvar.settings = {};
  589. gvar.ninja_styles = 'position:absolute!important; overflow:hidden; left:-99999; height:0!important; width:0;';
  590. //gvar.settings.auto_dl = !1;
  591. // getSettings
  592. getValue(KS + 'AUTODOWNLOAD', function(ret){
  593. gvar.settings.auto_dl = (ret && ret=='1' ? true:false);
  594.  
  595. var destination = $('.block>h1.title:first,.alpha.omega>h6.title').offset().top,
  596. scOffset = 30,
  597. delay = 350,
  598. landed = 0
  599. ;
  600. $("html:not(:animated),body:not(:animated)").animate({ scrollTop: (destination-scOffset)}, delay, function() {
  601. if(landed) return;
  602. start_Main();
  603. landed = 1;
  604. });
  605. });
  606. })();
  607. }
  608. // main
  609.  
  610. function addJQuery(callback) {
  611. var script = document.createElement("script");
  612. script.setAttribute("src", location.protocol + "\/\/ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js");
  613. script.addEventListener('load', function() {
  614. var script = document.createElement("script");
  615. script.textContent = "(" + callback.toString() + ")();";
  616. document.body.appendChild(script);
  617. }, false);
  618. document.body.appendChild(script);
  619. }
  620. addJQuery( main );
  621. })();
  622. /* Mod By Idx. */