softgames-1.1.js 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. var SG_Lang = 'en';
  2. var SG = {
  3. loaded : false,
  4. debug : false,
  5. lang : 'en',
  6. gameJS : [],
  7. d : document,
  8. loadScrnTimer : 10,
  9. boot : function(){
  10. SG.initLangs(window.gameLangs);
  11. if( sg_exists() ){
  12. window.softgames.gameInitCallback = SG.startGame;
  13. window.softgames.getReady();
  14. }
  15. else{
  16. SG.startGame();
  17. }
  18. },
  19. startGame : function(){
  20. if( SG.loaded ) return;
  21. SG.loaded = true;
  22. SG.showSpinner();
  23. if(typeof window.gamePreLoader == "function"){
  24. window.gamePreLoader();
  25. }
  26. SG.loadJsFiles(window.gameJS, function(){
  27. SG.hideLoadScrn();
  28. if(window.gameOnLoadScript){
  29. eval(window.gameOnLoadScript); // dear future me, i am deeply sorry!
  30. }
  31. });
  32. },
  33. showSpinner : function(){
  34. //SG.d.getElementById('sg-spinner').setAttribute('class','');
  35. },
  36. showLoadingBar : function(){
  37. return (SG.getUrlParameters()['disableLoadingBar'] === undefined || SG.getUrlParameters()['disableLoadingBar'] !== "true")
  38. },
  39. showLoadScrn : function(){
  40. var loadScrn = SG.d.createElement('div');
  41. loadScrn.setAttribute('id', 'sg-loadscrn');
  42. if(SG.showLoadingBar()){
  43. var spin = SG.d.createElement('div');
  44. spin.setAttribute('id', 'sg-spinner');
  45. loadScrn.appendChild(spin);
  46. }
  47. if(window.location.href.indexOf("adultcontent") != -1){
  48. var text = SG.d.createElement('div');
  49. text.setAttribute('id', 'sg-loadtext');
  50. text.innerHTML = 'One moment please...<br>Your site is almost loaded!';
  51. loadScrn.appendChild(text);
  52. }
  53. var displayLoadScrn = function(){
  54. var body = SG.d.getElementsByTagName('body')[0];
  55. if( typeof body != "undefined" ){
  56. if( SG.d.getElementById('sg-loadscrn') == null ){
  57. SG.debug && console.log('show load-screen: complete');
  58. body.appendChild(loadScrn);
  59. }
  60. SG.loadVoyager();
  61. }
  62. else{
  63. if(SG.debug) console.log('show load-screen: body-tag not ready. retrying in '+SG.loadScrnTimer+'ms');
  64. setTimeout(displayLoadScrn,SG.loadScrnTimer);
  65. }
  66. };
  67. displayLoadScrn();
  68. },
  69. hideLoadScrn : function(){
  70. var loadscrn = SG.d.getElementById('sg-loadscrn');
  71. if( loadscrn )
  72. loadscrn.parentNode.removeChild(loadscrn);
  73. },
  74. loadJsFiles : function(files, callback){
  75. var head = SG.d.getElementsByTagName('head')[0] || document.documentElement,
  76. loaded = [],
  77. callbacksUntilFinish = files.length;
  78. if( files.length > 0 ){
  79. var script = document.createElement('script'), loaded = false;
  80. script.type = 'text/javascript';
  81. script.src = files[0];
  82. files.shift();
  83. var done = false;
  84. script.onreadystatechange = script.onload = function() {
  85. if (!done && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete")) {
  86. done = true;
  87. // Handle memory leak in IE
  88. script.onload = script.onreadystatechange = null;
  89. if (head && script.parentNode) {
  90. head.removeChild(script);
  91. }
  92. SG.loadJsFiles(files, callback);
  93. }
  94. };
  95. head.insertBefore(script, head.firstChild);
  96. if(SG.debug) console.log('loading '+script.src+', '+files.length+' files left.');
  97. }
  98. else if( typeof callback == 'function' ){
  99. if(SG.debug) console.log('calling callback: '+callback);
  100. callback();
  101. }
  102. },
  103. loadCSSFiles : function( files ){
  104. if( files.length == 0 ) return;
  105. var head = SG.d.getElementsByTagName('head')[0] || document.documentElement;
  106. for( var i=0; i<files.length; i++ ){
  107. var css = document.createElement('link');
  108. css.rel = 'stylesheet';
  109. css.type = 'text/css';
  110. css.href = files[i];
  111. head.insertBefore(css, head.firstChild);
  112. }
  113. },
  114. trigger : function( data, callback ){
  115. if( !sg_exists() ) return false;
  116. switch( data.type ){
  117. case 'start' : d = {type: window.softgames.eventStartingGame}; break;
  118. case 'levelUp' : d = {type: window.softgames.eventLevelUp, level: data.level}; break;
  119. case 'gameOver' : d = {type: window.softgames.eventGameOver, score: data.score}; break;
  120. case 'gameCompleted' : d = {type: window.softgames.eventGameCompleted, score: data.score}; break;
  121. case 'gamePause' : d = {type: window.softgames.eventGamePause, state: data.state}; break;
  122. case 'gameRestart' : d = {type: window.softgames.eventGameRestart}; break;
  123. case 'selectLevel' : d = {type: window.softgames.eventSelectLevel, level: data.level}; break;
  124. case 'selectMainMenu' : d = {type: window.softgames.eventSelectMainMenu}; break;
  125. case 'setSound' : d = {type: window.softgames.eventSound, state: data.state}; break;
  126. }
  127. window.softgames.trigger(d, callback);
  128. return true;
  129. },
  130. initLangs : function( supported_languages ){
  131. var tmp_lang = typeof SG_getLang == 'function' ? SG_getLang() : 'en';
  132. var hasLanguages = (Object.prototype.toString.call(supported_languages)).toLowerCase() == "[object array]";
  133. if( hasLanguages && supported_languages.indexOf(tmp_lang) >= 0 )
  134. SG.lang = tmp_lang;
  135. SG_Lang = SG.lang; // support for old versions, that still use SG_Lang
  136. return SG.lang;
  137. },
  138. getLang : function( ){
  139. return SG.lang;
  140. },
  141. setOrientationHandler : function(handler){
  142. if( sg_exists() )
  143. window.softgames.changeScreenOrientation = handler;
  144. // handler();
  145. },
  146. setResizeHandler : function(handler){
  147. if( sg_exists() )
  148. window.softgames.changeScreenSize = handler;
  149. },
  150. // because some games just don't...
  151. hideAddressBar : function(){
  152. setTimeout("window.scrollTo(0, 1)", 10);
  153. },
  154. loadVoyager : function(){
  155. var sgc = document.createElement('script'); sgc.type = 'text/javascript'; sgc.async = true;
  156. var random = Math.floor((Math.random()*100000000)+1);
  157. SG.boot();
  158. var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(sgc, s);
  159. },
  160. redirectToPortal:function(){
  161. // Play68.goHome();
  162. },
  163. detectPortalUrl:function(){
  164. var url=softgames.back_url;
  165. if(typeof url !== "string") url=softgames.subplatform;
  166. if(typeof url !== "string") {
  167. url="http://m.softgames.de";
  168. } else {
  169. if (url.match(/^http:\/\//) == false) {
  170. url="http://"+url;
  171. }
  172. }
  173. SG.portalURL = url;
  174. },
  175. getLogoUrl : function(size){
  176. return "http://d1bjj4kazoovdg.cloudfront.net/assets/sg_ig_logo.png";
  177. },
  178. getUrlParameters : function(){
  179. var vars = [], hash;
  180. var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
  181. for(var i = 0; i < hashes.length; i++)
  182. {
  183. hash = hashes[i].split('=');
  184. vars.push(hash[0]);
  185. vars[hash[0]] = hash[1];
  186. }
  187. return vars;
  188. }
  189. };
  190. function sg_exists(){
  191. return typeof window.softgames != "undefined" && window.softgames != null;
  192. }
  193. /* Support old functions, that are used by games from previous connecting */
  194. function SG_initAPI (supported_languages) { return SG.initLangs( supported_languages ); }
  195. function SG_hideAddressBar() { SG.hideAddressBar(); }
  196. function SG_OrientationHandler(orientationHandler, resizeHandler){
  197. if(typeof orientationHandler != "undefined" && orientationHandler != null)
  198. SG.setOrientationHandler(orientationHandler);
  199. if(typeof resizeHandler != "undefined" && resizeHandler != null)
  200. SG.setResizeHandler(resizeHandler);
  201. }
  202. SG.showLoadScrn();