2
0

RunPanda3D.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. // This script injects the appropriate syntax into the document to
  2. // embed Panda3D, either for the ActiveX or Mozilla-based plugin.
  3. // It is also possible to write browser-independent code by nesting
  4. // <object> tags, but this causes problems when you need to reference
  5. // the particular object that is actually running (which object is
  6. // it?) for scripting purposes.
  7. // This script writes only a single <object> tag, and it can be
  8. // assigned the id you specify, avoiding this ambiguity.
  9. var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
  10. var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
  11. var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
  12. function P3D_Generateobj(objAttrs, params, embedAttrs, imageAttrs)
  13. {
  14. var str = '';
  15. if (isIE && isWin && !isOpera)
  16. {
  17. str += '<object ';
  18. for (var i in objAttrs)
  19. {
  20. str += i + '="' + objAttrs[i] + '" ';
  21. }
  22. str += '>';
  23. for (var i in params)
  24. {
  25. str += '<param name="' + i + '" value="' + params[i] + '" /> ';
  26. }
  27. }
  28. else
  29. {
  30. str += '<object ';
  31. for (var i in embedAttrs)
  32. {
  33. str += i + '="' + embedAttrs[i] + '" ';
  34. }
  35. str += '> ';
  36. }
  37. if (imageAttrs["src"]) {
  38. if (imageAttrs["href"]) {
  39. str += '<a href="' + imageAttrs["href"] + '">';
  40. }
  41. str += '<img ';
  42. for (var i in imageAttrs) {
  43. if (i != "href") {
  44. str += i + '="' + imageAttrs[i] + '" ';
  45. }
  46. }
  47. str += '>';
  48. if (imageAttrs["href"]) {
  49. str += '</a>';
  50. }
  51. }
  52. str += '</object>';
  53. document.write(str);
  54. }
  55. function P3D_RunContent() {
  56. var ret =
  57. P3D_GetArgs
  58. (arguments, "clsid:924b4927-d3ba-41ea-9f7e-8a89194ab3ac",
  59. "application/x-panda3d");
  60. P3D_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs, ret.imageAttrs);
  61. }
  62. function P3D_GetArgs(args, classid, mimeType){
  63. var ret = new Object();
  64. ret.embedAttrs = new Object();
  65. ret.params = new Object();
  66. ret.objAttrs = new Object();
  67. ret.imageAttrs = new Object();
  68. for (var i = 0; i < args.length; i = i + 2){
  69. var currArg = args[i].toLowerCase();
  70. switch (currArg){
  71. case "src":
  72. case "data":
  73. ret.embedAttrs['data'] = args[i+1];
  74. ret.params['data'] = args[i+1];
  75. break;
  76. case "codebase":
  77. ret.objAttrs['codebase'] = args[i+1];
  78. break;
  79. case "noplugin_img":
  80. ret.imageAttrs["src"] = args[i+1];
  81. ret.imageAttrs["border"] = '0';
  82. break;
  83. case "noplugin_href":
  84. ret.imageAttrs["href"] = args[i+1];
  85. break;
  86. case "splash_img":
  87. ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
  88. if (!ret.imageAttrs["src"]) {
  89. ret.imageAttrs["src"] = args[i+1];
  90. }
  91. break;
  92. case "width":
  93. case "height":
  94. ret.imageAttrs[args[i]] = ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
  95. break;
  96. case "id":
  97. case "align":
  98. case "vspace":
  99. case "hspace":
  100. case "class":
  101. case "title":
  102. case "accesskey":
  103. case "name":
  104. case "tabindex":
  105. ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
  106. break;
  107. default:
  108. ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
  109. }
  110. }
  111. ret.objAttrs["classid"] = classid;
  112. if (mimeType) ret.embedAttrs["type"] = mimeType;
  113. return ret;
  114. }