8 outputID : 'bootstrap-output',
\r
14 ;(function( window, document, options, undefined ){
\r
16 var emptyFunction = new Function();
\r
18 // この script は head の中に書かれているか?
\r
19 var inHead = (function(){
\r
20 var ss = document.getElementsByTagName ? document.getElementsByTagName( 'script' ) :
\r
21 document.all ? document.all.tags( 'script' ) : null,
\r
22 self = ss ? ss[ ss.length - 1 ] : null,
\r
23 parent = self ? ( self.parentNode || self.parentElement ) : null;
\r
24 if( parent && parent.tagName.toUpperCase() === 'HEAD' ) return true;
\r
29 var body = document.body;
\r
31 document.write('<body>');
\r
32 body = document.body;
\r
36 var UA = (function(){
\r
39 var dua = n.userAgent;
\r
40 var dav = n.appVersion;
\r
41 var tv = parseFloat(dav);
\r
42 acme.isOpera = (dua.indexOf("Opera") >= 0) ? tv: undefined;
\r
43 acme.isKhtml = (dav.indexOf("Konqueror") >= 0) ? tv : undefined;
\r
44 acme.isWebKit = parseFloat(dua.split("WebKit\/")[1]) || undefined;
\r
45 acme.isChrome = parseFloat(dua.split("Chrome\/")[1]) || undefined;
\r
46 acme.isGecko = (dua.indexOf("Gecko\/") >= 0) ? parseFloat(dua.split("rv:")[1].replace( /^(\d*\.\d*)\.(\d*)/, '$1$2' )) : undefined;
\r
47 var index = Math.max(dav.indexOf("WebKit"), dav.indexOf("Safari"), 0);
\r
48 if(index && !acme.isChrome){
\r
49 acme.isSafari = parseFloat(dav.split("Version/")[1]);
\r
50 if(!acme.isSafari || parseFloat(dav.substr(index + 7)) <= 419.3){
\r
54 if(document.all && !acme.isOpera){
\r
55 acme.isIE = parseFloat(dav.split("MSIE ")[1]) || undefined;
\r
64 var test = new Function( 'return !!( window.X && X.$ )' ),
\r
78 ( document.getElementsByTagName ? document.getElementsByTagName('head')[0] :
\r
79 document.all ? document.all.tags( 'HEAD' )[0] : document.head )
\r
81 timerID = window.setInterval( function(){
\r
82 if( test() === true ){
\r
83 window.clearInterval( timerID );
\r
85 test = onLibReady = null;
\r
89 while( libs.length ){
\r
91 if( document.getElementById ){
\r
92 script = document.createElement( 'script' );
\r
93 root.appendChild( script );
\r
97 root.insertAdjacentHTML( 'BeforeEnd', '<script src="' + src + '">' );
\r
100 libs = src = script = null;
\r
103 var onLibReady = function(){
\r
104 X.Dom.Event.add( window, 'load', ResponsiveImage.onPageLoad );
\r
111 * http://code.google.com/p/css3-mediaqueries-js/source/browse/trunk/css3-mediaqueries_src.js
\r
113 var nativeSupport = function () {
\r
114 // check support for media queries
\r
115 var id = 'css3-mediaqueries-test';
\r
116 var el = document.createElement('div');
\r
118 var style = cssHelper.addStyle('@media all and (width) { #' + id + ' { width: 1px !important; } }', false);
\r
119 // false means don't parse this temp style
\r
120 body.appendChild(el);
\r
121 var ret = el.offsetWidth === 1;
\r
122 style.parentNode.removeChild(style);
\r
123 el.parentNode.removeChild(el);
\r
124 nativeSupport = new Function('return ' + ret);
\r
131 var ResponsiveImage = {
\r
136 detect : function(){
\r
137 var regW = /.*width=['"]?([0-9]+)['"]?.*/,
\r
138 regH = /.*height=['"]?([0-9]+)['"]?.*/,
\r
139 images = document.images,
\r
140 saved = ResponsiveImage.images,
\r
141 attrs = ResponsiveImage.attrs,
\r
145 for( ; i < l; ++i ){
\r
147 if( saved.indexOf( img ) === -1 ){
\r
148 html = img.outerHTML; // for IE8
\r
149 w = html ? html.replace( regW, '$1' ) : img.getAttribute( 'width' );
\r
150 h = html ? html.replace( regH, '$1' ) : img.getAttribute( 'height' );
\r
151 if( !isFinite( w ) || !isFinite( h ) || !isFinite( w / h ) ){
\r
154 saved[ saved.length ] = img;
\r
155 attrs[ saved.length - 1 ] = {
\r
156 src : img.src, // get Absolute
\r
157 lowsrc : img.lowsrc,
\r
158 getSrc : ResponsiveImage._getResponsiveSrc,
\r
163 img.src = img.lowsrc = '';
\r
166 if( ResponsiveImage._onload === true ){
\r
167 window.clearInterval( ResponsiveImage.timerID );
\r
168 delete ResponsiveImage.timerID;
\r
169 delete ResponsiveImage.detect;
\r
170 delete ResponsiveImage._onload;
\r
172 ResponsiveImage.onResize();
\r
173 X.View.add( ResponsiveImage.onResize );
\r
176 start : function(){
\r
177 ResponsiveImage.timerID = window.setInterval( ResponsiveImage.detect, 0 );
\r
178 delete ResponsiveImage.start;
\r
180 onPageLoad : function(){
\r
181 ResponsiveImage._onload = true;
\r
182 delete ResponsiveImage.onPageLoad;
\r
184 onResize : function( e ){
\r
185 var saved = ResponsiveImage.images,
\r
186 attrs = ResponsiveImage.attrs,
\r
187 id = 'img-area-size',
\r
190 $, img, attr, div, w;
\r
191 for( ; i < l; ++i ){
\r
194 X.$( img ).before( '<div id="' + id + '"></div>' );
\r
195 div = X.Dom.getElementById( id );
\r
196 w = div.offsetWidth;
\r
197 if( attr.width < w ) w = attr.width;
\r
198 img.style.width = w + 'px';
\r
199 img.style.height = attr.ratio * w + 'px';
\r
200 img.src = attr.getSrc( attr.src, w );
\r
201 X.$( div ).remove();
\r
204 _getResponsiveSrc : function( src, width ){
\r
207 url = document.location.href;
\r
208 if( ( url.indexOf( 'file:' ) === 0 || url.indexOf( '://localhost' ) ) && src.indexOf( 'http' ) !== 0 ){
\r
209 attr.getSrc = ResponsiveImage._getSrcLocal;
\r
211 if( src.indexOf( 'bp.bp.blogspot.com/' ) ){
\r
212 attr.getSrc = ResponsiveImage._getSrcBlogger;
\r
214 if( src.indexOf( '.googleusercontent.com/' ) ){
\r
215 attr.getSrc = ResponsiveImage._getSrcPicasa;
\r
217 attr.getSrc = ResponsiveImage._getSrcSenchaIO;
\r
219 return attr.getSrc( src, width );
\r
221 _getSrcLocal : function( src, width ){
\r
224 _getSrcBlogger : function( src, width ){
\r
227 _getSrcPicasa : function( src, width ){
\r
230 _getSrcFlicker : function( src, width ){
\r
233 _getSrcSenchaIO : function( src, width ){
\r
237 ResponsiveImage.start();
\r
241 var BICFixed = false;
\r
242 // bonus: hotfix for IE6 SP1 (bug KB823727)
\r
244 document.execCommand("BackgroundImageCache", false, true);
\r
248 })( window, document, options );