OSDN Git Service

Version 0.6.133, fix for closure compiler - ADVANCED_OPTIMIZATIONS
[pettanr/clientJs.git] / 0.6.x / js / 02_dom / 06_XNodeCSS.js
index 3f9f250..6a87798 100644 (file)
@@ -86,7 +86,7 @@ _GRNERAL
  */
 X_Node_CSS_VENDER_PREFIX = {},
        
-X_Node_CSS__CLIP_SEPARATOR = X_UA.IE < 8 ? ' ' : ',',
+X_Node_CSS__CLIP_SEPARATOR = X_UA[ 'IE' ] < 8 ? ' ' : ',',
        
 X_Node_CSS__UNIT_RATIO      = {},
 X_Node_CSS__FONT_SIZE_RATIO = {},
@@ -189,12 +189,12 @@ X_Node_CSS_COLOR = {
 function X_Node_CSS_parseColor( x ){
        var rgb, r, g, b;
        
-       if( X.Type.isNumber( x ) ){
+       if( X_Type_isNumber( x ) ){
                return ( 0x0 <= x && x <= 0xFFFFFF ) ? x : undefined;
        } else
-       if( !X.Type.isString( x ) ) return;
+       if( !X_Type_isString( x ) ) return;
        
-       if( X.Type.isNumber( rgb = X_Node_CSS_COLOR[ x.toUpperCase() ] ) && 0x0 <= rgb && rgb <= 0xFFFFFF ){
+       if( X_Type_isNumber( rgb = X_Node_CSS_COLOR[ x.toUpperCase() ] ) && 0x0 <= rgb && rgb <= 0xFFFFFF ){
                return rgb;
        } else
        if( x.charAt( 0 ) === '#' ){
@@ -244,7 +244,7 @@ function X_Node_CSS_parseColor( x ){
        return isFinite( r + b + g ) ? ( r << 16 ) + ( g << 8 ) + b : undefined;
 };
 
-function X_Node_CSS_objToCssText( that ){
+function X_Node_CSS_objToCssText( that, skipFilter ){
        var obj   = that._css,
                plain = X_EMPTY_OBJECT,
                css   = [],
@@ -254,7 +254,7 @@ function X_Node_CSS_objToCssText( that ){
        that._flags &= ~X_Node_State.OLD_CSSTEXT;
        
        if( !obj ){ // Opera7.5 未満?
-               delete that._cssText;+65
+               delete that._cssText;
                return '';
        };
        
@@ -276,10 +276,22 @@ function X_Node_CSS_objToCssText( that ){
                };
        };
        
-       filterFix && ( css[ ++n ] = 'filter:' + X_Node_CSS_objToIEFilterText( that, filterFix ) );
+       if( filterFix ){
+               v = X_Node_CSS_objToIEFilterText( that, filterFix );
+               if( v ) css[ ++n ] = 'filter:' + v;
+               skipFilter = skipFilter && v;
+       } else {
+               skipFilter = false;
+       };
        
        if( 0 <= n ){
-               return that._cssText = css.join( ';' );
+               // cssText には完全なものを控えるが、戻すのは filter を抜いたもの
+               that._cssText = css.join( ';' );
+               if( skipFilter ){
+                       --css.length;
+                       return css.join( ';' );
+               };
+               return that._cssText;
        };
        delete that._cssText;
        return '';
@@ -287,13 +299,14 @@ function X_Node_CSS_objToCssText( that ){
 
 var
 X_Node_CSS_FILTER_FIX_PROPS =
-       X_UA.ActiveX && X_UA.IE < 9 && !X_UA.MacIE ?
+       X_UA[ 'ActiveX' ] && X_UA[ 'IE' ] < 9 && !X_UA[ 'MacIE' ] ?
                {
                        opacity    : 2,
                        boxShadow  : 3,
-                       textShadow : 4
+                       textShadow : 4,
+                       transform  : 5
                } :
-       X_UA.ActiveX && X_UA.IE9 ? // == 9
+       X_UA[ 'ActiveX' ] && X_UA[ 'IE9' ] ? // == 9
                {
                        textShadow : 4
                } :
@@ -392,8 +405,11 @@ function X_Node_CSS_objToIEFilterText( that, opt_css ){
                                //glow(Color=yellow,Strength=10);
                                //どうやらCSSのbackgroundプロパティと同時に使えないようです。 s
                                break;
-                       case 5 : //'backgroundImage' :
+                       case 6 : //'backgroundImage' :
                                //
+                       
+                       case 5 : // transform scale, matrix
+                               
                };
        };
        return filters.join( ' ' );
@@ -436,7 +452,7 @@ X_Node_CSS_UNIT = {
  */
 function X_Node_CSS__splitValueAndUnit( v ){
        var num, _num, u;
-       if( X.Type.isNumber( v ) ) return [ v || 0, '' ];
+       if( X_Type_isNumber( v ) ) return [ v || 0, '' ];
        num = parseFloat( v );
        if( num !== num ) return [ 0, '' ];
        _num = '' + num;
@@ -493,9 +509,9 @@ Node.prototype.css = function( nameOrObj /* orUnitID, valuOrUnitOrName */ ){
        var args = arguments,
                css  = this._css,
                p, name, v, plain, camelize, flags;
-       if( !this._tag ) return this;
+       if( !this._tag || X_Dom_DTD_MOVE_TO_HEAD[ this._tag ] || this._tag === 'SCRIPT' ) return this;
 // setter:object
-       if( X.Type.isObject( nameOrObj ) ){
+       if( X_Type_isObject( nameOrObj ) ){
                if( !css ) css = this._css = {};
                plain    = X_EMPTY_OBJECT;
                camelize = X_Node_CSS_camelize;
@@ -507,7 +523,7 @@ Node.prototype.css = function( nameOrObj /* orUnitID, valuOrUnitOrName */ ){
                        if( css[ name ] === v ) continue;
                        flags = X_Node_CSS_setStyle( css, flags, name, v );
                };
-               this._flags = flags | X_Node_State.DIRTY_CSS | X_Node_State.OLD_CSSTEXT;
+               this._flags |= X_Node_State.DIRTY_CSS | X_Node_State.OLD_CSSTEXT;
                this._flags & X_Node_State.IN_TREE && X_Node_reserveUpdate();
                delete this._cssText;
                return this;
@@ -555,7 +571,8 @@ function X_Node_CSS_setStyle( css, flags, name, newValue ){
                case 'opacity' :
                        // すでに visibility:hidden で invisible
                        if( flags & X_Node_State.STYLE_IS_INVISIBLE && css[ 'visibility' ] === 'hidden' ) return flags;
-                       newValue == 0 ? ( flags |= X_Node_State.STYLE_IS_INVISIBLE ) : ( flags &= ~X_Node_State.STYLE_IS_INVISIBLE );
+                       newValue == 0 ? // 0 or "0"
+                               ( flags |= X_Node_State.STYLE_IS_INVISIBLE ) : ( flags &= ~X_Node_State.STYLE_IS_INVISIBLE );
                        return flags;
                        
                case 'overflow' :
@@ -604,16 +621,15 @@ Node.prototype.cssText = function( v ){
        if( v === '' ){
                delete this._css;
                delete this._cssText;
-               this._flags |= X_Node_State.DIRTY_CSS;
-               this._flags &= ~X_Node_State.OLD_CSSTEXT | ~X_Node_State.DIRTY_IE_FILTER;
-               this._flags &= X_Node_BITMASK_RESET_STYLE;
+               this._flags |= X_Node_State.DIRTY_CSS | X_Node_State.DIRTY_IE_FILTER;
+               this._flags &= ~X_Node_State.OLD_CSSTEXT;
                this._flags & X_Node_State.IN_TREE && X_Node_reserveUpdate();
                return this;
        } else
-       if( X.Type.isString( v ) ){
+       if( X_Type_isString( v ) ){
                delete this._css;
                obj = {};
-               v   = v.split( ';' ); // TODO content ";" などにも対応
+               v   = v.split( ';' ); // TODO content ";" などにも対応 <- 不要 :before :after 疑似要素には触らない
                for( i = 0, l = v.length; i < l; ++i ){
                        attr = v[ i ].split( ':' );
                        ( name = attr[ 0 ] ) && ( obj[ name ] = attr[ 1 ] || true );
@@ -643,7 +659,7 @@ X_Node_CSS_getCharSize =
                        return that._fontSize = parseFloat( X_node_CSS_getComputedStyle( that._rawObject, null ).fontSize );
                }) :
 
-       5.5 <= X_UA.IE ?
+       5 <= X_UA[ 'IE' ] ?
                (function( that ){
                        var font, vu, v, u, _v;
                        X_Node_updateTimerID && X_Node_startUpdate();
@@ -734,7 +750,7 @@ var X_Node_CSS_Support = {},
 
        X_Node_CSS_SPECIAL_FIX_PROP = {
                
-               transitionDuration : X_UA.Android && !X_UA.Chrome && function( v ){ // bad Android
+               transitionDuration : X_UA[ 'Android' ] && !X_UA[ 'Chrome' ] && function( v ){ // bad Android
                                return parseFloat( v ) === 0 ? '0.001s' : v;
                        }
                
@@ -763,7 +779,7 @@ X.CSS = {
  */
 
 (function(){
-       var testStyle = X_UA.IE4 ? {} : ( /*document.documentElement ||*/ document.createElement( 'div' ) ).style,
+       var testStyle = X_UA[ 'IE4' ] ? {} : ( /*document.documentElement ||*/ document.createElement( 'div' ) ).style,
                temp      = testStyle.cssText,
                vendors   = 'webkit,Webkit,Moz,moz,Ms,ms,O,o,khtml,Khtml'.split( ',' ),
                searches  = (