bevInclude.js 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. /**
  2. LazyLoad makes it easy and painless to lazily load one or more external
  3. JavaScript or CSS files on demand either during or after the rendering of a web
  4. page.
  5. Supported browsers include Firefox 2+, IE6+, Safari 3+ (including Mobile
  6. Safari), Google Chrome, and Opera 9+. Other browsers may or may not work and
  7. are not officially supported.
  8. Visit https://github.com/rgrove/lazyload/ for more info.
  9. Copyright (c) 2011 Ryan Grove <ryan@wonko.com>
  10. All rights reserved.
  11. Permission is hereby granted, free of charge, to any person obtaining a copy of
  12. this software and associated documentation files (the 'Software'), to deal in
  13. the Software without restriction, including without limitation the rights to
  14. use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
  15. the Software, and to permit persons to whom the Software is furnished to do so,
  16. subject to the following conditions:
  17. The above copyright notice and this permission notice shall be included in all
  18. copies or substantial portions of the Software.
  19. THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  20. IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
  21. FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
  22. COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
  23. IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  24. CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  25. @module lazyload
  26. @class LazyLoad
  27. @static
  28. @version 2.0.3 (git)
  29. */
  30. LazyLoad=(function(doc){var env,head,pending={},pollCount=0,queue={css:[],js:[]},styleSheets=doc.styleSheets;function createNode(name,attrs){var node=doc.createElement(name),attr;for(attr in attrs){if(attrs.hasOwnProperty(attr)){node.setAttribute(attr,attrs[attr])}};return node};function finish(type){var p=pending[type],callback,urls;if(p){callback=p.callback;urls=p.urls;urls.shift();pollCount=0;if(!urls.length){callback&&callback.call(p.context,p.obj);pending[type]=null;queue[type].length&&load(type)}}};function getEnv(){var ua=navigator.userAgent;env={async:doc.createElement('script').async===true};(env.webkit=/AppleWebKit\//.test(ua))||(env.ie=/MSIE|Trident/.test(ua))||(env.opera=/Opera/.test(ua))||(env.gecko=/Gecko\//.test(ua))||(env.unknown=true)};function load(type,urls,callback,obj,context){var _finish=function(){finish(type)},isCSS=type==='css',nodes=[],i,len,node,p,pendingUrls,url;env||getEnv();if(urls){urls=typeof urls==='string'?[urls]:urls.concat();if(isCSS||env.async||env.gecko||env.opera){queue[type].push({urls:urls,callback:callback,obj:obj,context:context})}else{for(i=0,len=urls.length;i<len;++i){queue[type].push({urls:[urls[i]],callback:i===len-1?callback:null,obj:obj,context:context})}}};if(pending[type]||!(p=pending[type]=queue[type].shift())){return};head||(head=doc.head||doc.getElementsByTagName('head')[0]);pendingUrls=p.urls;for(i=0,len=pendingUrls.length;i<len;++i){url=pendingUrls[i];if(isCSS){node=env.gecko?createNode('style'):createNode('link',{href:url,rel:'stylesheet'})}else{node=createNode('script',{src:url});node.async=false};node.className='lazyload';node.setAttribute('charset','utf-8');if(env.ie&&!isCSS&&'onreadystatechange'in node&&!('draggable'in node)){node.onreadystatechange=function(){if(/loaded|complete/.test(node.readyState)){node.onreadystatechange=null;_finish()}}}else if(isCSS&&(env.gecko||env.webkit)){if(env.webkit){p.urls[i]=node.href;pollWebKit()}else{node.innerHTML='@import "'+url+'";';pollGecko(node)}}else{node.onload=node.onerror=_finish};nodes.push(node)};for(i=0,len=nodes.length;i<len;++i){head.appendChild(nodes[i])}};function pollGecko(node){var hasRules;try{hasRules=!!node.sheet.cssRules}catch(ex){pollCount+=1;if(pollCount<200){setTimeout(function(){pollGecko(node)},50)}else{hasRules&&finish('css')};return};finish('css')};function pollWebKit(){var css=pending.css,i;if(css){i=styleSheets.length;while(--i>=0){if(styleSheets[i].href===css.urls[0]){finish('css');break}};pollCount+=1;if(css){if(pollCount<200){setTimeout(pollWebKit,50)}else{finish('css')}}}};return{css:function(urls,callback,obj,context){load('css',urls,callback,obj,context)},js:function(urls,callback,obj,context){load('js',urls,callback,obj,context)}}})(this.document);
  31. var r = new RegExp("(^|(.*?\\/))(js\/bevInclude\.js)(\\?|$)"),
  32. s = document.getElementsByTagName('script'),
  33. src, m, baseurl = "";
  34. for(var i=0, len=s.length; i<len; i++) {
  35. src = s[i].getAttribute('src');
  36. if(src) {
  37. var m = src.match(r);
  38. if(m) {
  39. baseurl = m[1];
  40. break;
  41. }
  42. }
  43. }
  44. window.Bev = {};
  45. Bev.loader = LazyLoad;
  46. Bev.inputScript = function(inc){
  47. var script = '<' + 'script type="text/javascript" src="' + inc + '"' + '><' + '/script>';
  48. document.writeln(script);
  49. };
  50. //Bev.inputScript("js/controls/theme.js");
  51. /**
  52. * Class: Bev.Theme
  53. * 主题类,设置框架的主题。
  54. */
  55. Bev.Theme = {};
  56. Bev.Theme.themeName = "cupertino";
  57. Bev.Theme.currentTheme="";
  58. /**
  59. * APIMethod: set
  60. * 设置主题
  61. *
  62. * Parameters:
  63. * themeName - {String} 主题名称
  64. *
  65. * Examples:
  66. * (code)
  67. * Bev.Theme.set("base");
  68. * //可以设置的主题如下:
  69. * //cupertino
  70. * //base
  71. * //eggplant
  72. * //flick
  73. * //overcast
  74. * //pepper-grinder
  75. * //redmond
  76. * //smoothness
  77. * //start
  78. * //ui-darkness
  79. * //vader
  80. * (end)
  81. */
  82. Bev.Theme.set = function(themeName){
  83. var path = [];
  84. if(!themeName)themeName = Bev.Theme.themeName;
  85. Bev.Theme.currentTheme=themeName;
  86. path.push(baseurl+"css/icon.css");
  87. Bev.loader.css(path,function(){
  88. Bev.Theme.setStyle(themeName);
  89. Bev.Theme.setFontColor(themeName);
  90. $(window).resize();
  91. });
  92. //Bev.Theme.setIconStyle(themeName);
  93. }
  94. Bev.Theme.setIconStyle = function(themeName){
  95. var path = baseurl+"css/icons/"+themeName+".css";
  96. Bev.loader.css(path);
  97. }
  98. /**
  99. * APIMethod: getCurrentTheme
  100. * 获取当前的主题名
  101. *
  102. * Returns:
  103. * currentTheme - {string}当前的主题名
  104. * */
  105. Bev.Theme.getCurrentTheme=function(){
  106. if(Bev.Theme.currentTheme=="")return Bev.Theme.themeName;
  107. return Bev.Theme.currentTheme;
  108. }
  109. /**
  110. * APIMethod: createStyle
  111. * 动态创建css样式
  112. *
  113. * Parameters:
  114. * css - {String} css样式
  115. */
  116. Bev.Theme.createStyle = function(css){
  117. if(document.all){
  118. window.style=css;
  119. document.createStyleSheet("javascript:style");
  120. }else{
  121. var style = document.createElement('style');
  122. style.type = 'text/css';
  123. style.innerHTML=css;
  124. document.getElementsByTagName('head').item(0).appendChild(style);
  125. }
  126. };
  127. /**
  128. * Method: setFontColor
  129. * 对几个个别的主题的文字颜色做处理
  130. *
  131. * Parameters:
  132. * theme - {String} 主题名称
  133. */
  134. Bev.Theme.setFontColor = function(theme){
  135. var themesArr = "south-street,black-tie,eggplant,excite-bike,flick,pepper-grinder,vader";
  136. var para = {
  137. "black-tie":"#3472AC",
  138. "eggplant":"#3472AC",
  139. "vader":"#3472AC"
  140. };
  141. if(themesArr.indexOf(theme)>=0){
  142. var cssTxt = ".tab_txt,.menu_txt,.dialog_title_txt {" +
  143. "color: "+ (para[theme]||"#0D1314") +
  144. "}";
  145. Bev.Theme.createStyle(cssTxt);
  146. }
  147. }
  148. /**
  149. * Method: setStyle
  150. * 对一些样式做特别处理
  151. */
  152. Bev.Theme.setStyle = function(){
  153. var cssTxt,borderCss;
  154. $("#head").addClass("bev-banner").css({
  155. // "opacity":0.9,
  156. // "filter":"alpha(opacity=90)",
  157. "fontWeight":"normal"
  158. });
  159. $("#left_back").addClass("ui-widget-overlay");
  160. $("#toolbar_back").addClass("ui-widget-overlay");
  161. try{
  162. //var testbtn = document.getElementById("hideBtn");
  163. //var border = this.getStyleProperty(document.getElementById("hideBtn"),"border");//$("#hideBtn").css("border");
  164. $("#bd_left")
  165. .addClass("ui-state-default")
  166. .css({
  167. "border-top":"0px solid",
  168. "border-left":"0px solid",
  169. "border-bottom":"0px solid",
  170. "font-weight":"normal"
  171. // "background":"none repeat scroll 0 0 transparent",
  172. // "color":"transparent"
  173. });
  174. $("#bd_toolbar")
  175. .addClass("ui-state-default")
  176. .css({
  177. "border-top":"0px solid",
  178. "border-left":"0px solid",
  179. "border-right":"0px solid",
  180. "font-weight":"normal"
  181. // "background":"none repeat scroll 0 0 transparent",
  182. // "color":"transparent"
  183. });
  184. // $("#bd_toolbar").css({
  185. // "border-bottom":border
  186. // });
  187. $("#hideBtn").css({
  188. "opacity":0.8,
  189. "filter":"alpha(opacity=80)"
  190. })
  191. }catch(e){}
  192. borderCss = $(".ui-widget-header").css("border");
  193. cssTxt = ".widgetControl {" +
  194. "border: " + borderCss +
  195. "}";
  196. Bev.Theme.createStyle(cssTxt);
  197. }