OSDN Git Service

client is versiion 0.5.6, post panel on panel editor.
authoritozyun <itozyun@gmail.com>
Wed, 8 Aug 2012 22:01:23 +0000 (07:01 +0900)
committeritozyun <itozyun@gmail.com>
Wed, 8 Aug 2012 22:01:23 +0000 (07:01 +0900)
.project
Gemfile.lock
app/assets/javascripts/peta.apps.js
app/assets/javascripts/peta.common.js
app/assets/javascripts/system.js
app/views/layouts/test.html.erb

index 04f21bb..18d5dda 100644 (file)
--- a/.project
+++ b/.project
@@ -6,19 +6,13 @@
        </projects>\r
        <buildSpec>\r
                <buildCommand>\r
-                       <name>org.rubypeople.rdt.core.rubybuilder</name>\r
-                       <arguments>\r
-                       </arguments>\r
-               </buildCommand>\r
-               <buildCommand>\r
                        <name>com.aptana.ide.core.unifiedBuilder</name>\r
                        <arguments>\r
                        </arguments>\r
                </buildCommand>\r
        </buildSpec>\r
        <natures>\r
-               <nature>com.aptana.ide.project.nature.web</nature>\r
-               <nature>org.rubypeople.rdt.core.rubynature</nature>\r
                <nature>org.radrails.rails.core.railsnature</nature>\r
+               <nature>com.aptana.ruby.core.rubynature</nature>\r
        </natures>\r
 </projectDescription>\r
index a971c4c..5158c6c 100644 (file)
@@ -165,7 +165,7 @@ GEM
       rack (~> 1.0)
       tilt (~> 1.1, != 1.3.0)
     sqlite3 (1.3.6-x86-mingw32)
-    standard_licenses (0.0.1)
+    standard_licenses (0.0.6)
       rails (~> 3.1.1)
     therubyracer-heroku (0.8.1.pre3)
     thor (0.14.6)
index 304fbf6..e488794 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * pettanR peta.apps.js
- *   version 0.5.5
+ *   version 0.5.6
  *   
  * author:
  *   itozyun
                                                        if( _elm.resource_picture ){
                                                                _elm.resource_picture = buildFileData( _elm.resource_picture, FILE_DATA_PICTURE_ROOT ); // 上記参照切れに備えてここで上書き
                                                        } else {
-                                                               _elm.resource_picture = getResource( RESOURCE_PICTURE_ARRAY, _elm.resource_picture_id );
+                                                               _elm.resource_picture = getResource( RESOURCE_PICTURE_ARRAY, _elm.picture_id );
                                                        };
                                                };
                                        };
@@ -481,7 +481,7 @@ var Cabinet = gOS.registerApplication( function(){
                        '<div id="cabinet-container" class="finder-container"></div>'
                ].join( '' );
                
-               self.fetchCSS( '/assets/peta.apps.css' );
+               self.fetchCSS( pettanr.CONST.URL_PETA_APPS_CSS );
                
                tree   = FileAPI.createTree( FILE_DATA_SERVICE_ROOT );
                
@@ -521,7 +521,7 @@ var Gallery = gOS.registerApplication( function(){
                        '<div id="gallery-container" class="finder-container"></div>'
                ].join( '' );
                
-               self.fetchCSS( '/assets/peta.apps.css' );
+               self.fetchCSS( pettanr.CONST.URL_PETA_APPS_CSS );
                
                tree = FileAPI.createTree( FILE_DATA_PICTURE_ROOT );
                var     _root  = tree.getRootFile(),
@@ -775,7 +775,7 @@ var PremiumSatge = gOS.registerApplication( function(){
                                '<div id="image-group-button" class="button">close</div>'
                        ].join( '' );
                        
-                       self.fetchCSS( '/assets/peta.apps.css' );
+                       self.fetchCSS( pettanr.CONST.URL_PETA_APPS_CSS );
                        
                        tree      = FileAPI.createTree( FILE_DATA_ARTIST_ROOT );
                        rootFile  = tree.getRootFile();
@@ -1069,7 +1069,7 @@ var Reader = gOS.registerApplication( function(){
                        '</div>'
                ].join( '' );
                
-               self.fetchCSS( '/assets/peta.apps.css' );
+               self.fetchCSS( pettanr.CONST.URL_PETA_APPS_CSS );
                
        };
        this.onOpen = function( _w, _h, _file ){
@@ -1520,7 +1520,24 @@ var Editor = gOS.registerApplication( function(){
                
                function quit(){
                        Editor.shutdown();
-               }
+               };
+               function onSave(){
+                       var model = Model.createPanel( {
+                               comicID           : comicID,
+                               panelID           : panelID,
+                               panelTimming      : panelTimming,
+                               panelW            : PANEL_CONTROL.w,
+                               panelH            : PANEL_CONTROL.h,
+                               borderSize        : 2,
+                               panelElementArray : PANEL_ELEMENT_ARRAY
+                       } );
+                       PanelConsole.boot( model.getJsonPostString().replace( /\n/g, '' ) );
+                       model.destroy();
+               };
+               function onSaveQuit(){
+                       // Editor.shutdown();
+                       onSave();
+               };
                function onExport(){
                        OutputConsole.boot(
                                comicID, panelID, panelTimming,
@@ -1528,14 +1545,14 @@ var Editor = gOS.registerApplication( function(){
                                2, // border, BackgroundImage
                                PANEL_ELEMENT_ARRAY
                        );
-               }
+               };
                return {
                        init: function(){
                                delete SAVE_CONTROL.init;
                        },
                        open: function(){
-                               save     = MENU_BAR_CONTROL.QUIT.createOption( 'save', 'ctrl + S', quit, false );
-                               saveQuit = MENU_BAR_CONTROL.QUIT.createOption( 'save & quit', null, quit, false, false, true );
+                               save     = MENU_BAR_CONTROL.QUIT.createOption( 'save', 'ctrl + S', onSave, false );
+                               saveQuit = MENU_BAR_CONTROL.QUIT.createOption( 'save & quit', null, onSaveQuit, false, false, true );
                                eXport   = MENU_BAR_CONTROL.QUIT.createOption( 'export', null, onExport, true, false, true );
                                quit     = MENU_BAR_CONTROL.QUIT.createOption( 'quit', null, quit, true, true );                                
                                
@@ -3966,7 +3983,7 @@ var Editor = gOS.registerApplication( function(){
                        '</div>'
                ].join( '' );
                
-               app.fetchCSS( '/assets/peta.apps.css' );
+               app.fetchCSS( pettanr.CONST.URL_PETA_APPS_CSS );
                
                delete app.onInit;
        };
@@ -4278,7 +4295,7 @@ var ComicConsole = gOS.registerApplication( function(){
                        '</div>'
                ].join( '' );
                
-               instance.fetchCSS( '/assets/peta.apps.css' );
+               instance.fetchCSS( pettanr.CONST.URL_PETA_APPS_CSS );
                
                delete instance.onInit;
        };
@@ -4437,7 +4454,7 @@ var UploadConsole = gOS.registerApplication( function(){
                        '</div>'
                ].join( '' );
                
-               instance.fetchCSS( '/assets/peta.apps.css' );
+               instance.fetchCSS( pettanr.CONST.URL_PETA_APPS_CSS );
                
                delete instance.onInit;
        }
@@ -4474,152 +4491,6 @@ var UploadConsole = gOS.registerApplication( function(){
        }
 }, true, true, 'Upload Console', 'uploadConsole', null, '#01A31C' );
 
-var PanelConsole = gOS.registerApplication( function(){
-       var windowW, windowH,
-               TARGET_FRAME_NAME = 'targetFrameCreateNewPanel',
-               elmContainer, elmProgress,
-               elmScript = null,
-               elmForm = null,
-               elmIframe = null,
-               isUploading = false,
-               instance = this;
-       /*
-        * upload ボタンが押されたらまず iframe をつくる.
-        */
-       function clickOK(){
-               if( !elmForm || !elmIframe || isUploading === true ) return false;
-               elmProgress.innerHTML = 'uploading.';
-               isUploading = true;
-               submit();
-               return false;
-       }
-       /*
-        * form の target に iframe を指定したのち submit();
-        */
-               function submit(){
-                       try {
-                               elmForm.submit();
-                       } catch( e ){
-                               elmProgress.innerHTML = 'submit() err..';
-                               isUploading = false;
-                               instance.addTimer( clickCancel , 3000, true );
-                               return;
-                       }
-                       
-                       if( UA.isIE ){
-                               elmIframe.onreadystatechange = detectIframe;
-                       } else {
-                               elmIframe.onload = onLoad;
-                       }
-                       elmProgress.innerHTML = 'uploading..';
-               }
-       /*
-        * ie の 場合、readyState をチェック.
-        */
-                       function detectIframe(){
-                   if ( elmIframe.readyState === 'complete' ){
-                       elmIframe.onreadystatechange = new Function();
-                       elmIframe.onreadystatechange = null;
-                       onLoad();
-                   };
-                       };
-                               function onLoad(){
-                                       try {
-                                               console.log( ( elmIframe.contentWindow || elmIframe.contentDocument.parentWindow ).document.body.innerHTML );
-                                       } catch(e){
-                                               
-                                       }
-                                       elmIframe.onload = null;
-                                       ( elmIframe.contentWindow || elmIframe.contentDocument.parentWindow ).close();
-                                       elmProgress.innerHTML = 'success!';
-                                       instance.addTimer( clickCancel , 1000, true );
-                                       isUploading = false;
-                               };
-       
-       function detectForm(){
-               elmForm = elmContainer.getElementsByTagName( 'form' )[ 0 ];
-               if( elmForm){
-                       var _inputList = elmForm.getElementsByTagName( 'input' ),
-                               _input;
-                       for( var i = _inputList.length; i; ){
-                               _input = _inputList[ --i ];
-                               if( _input.type === 'submit' ){
-                                       _input.style.display = 'none';
-                               };
-                       };
-                       instance.removeTimer( detectForm );
-                       Util.createIframe( TARGET_FRAME_NAME, onCreateIframe );
-                       elmProgress.innerHTML = 'create iframe';
-               };
-       };
-       function onCreateIframe( _iframe ){
-               elmContainer.appendChild( _iframe );
-               elmIframe = _iframe;
-               elmForm.target = _iframe.name;
-               elmProgress.innerHTML = '';
-               instance.onPaneResize( windowW, windowH );
-       };
-       function clickCancel(){
-               if( isUploading === true) return false;
-               PanelConsole.shutdown();
-               return false;
-       };
-
-       /* grobal method */
-       this.MIN_WIDTH   = 320;
-       this.MIN_HEIGHT  = 320;
-       this.onInit = function(){
-               instance.rootElement.id = 'panel-console-wrapper';
-               instance.rootElement.className = 'console-wrapper';
-               instance.rootElement.innerHTML = [
-                       '<div id="panel-console-header" class="console-header">Create New Panel (dev)</div>',
-                       '<div id="panel-console" class="console-inner">',
-                               '<div id="newpanel"></div>',
-                               '<div class="console-button-container">',
-                                       '<div id="panel-console-post-button" class="button console-submit-button">post</div>',
-                                       '<div id="panel-console-cancel-button" class="button console-cancel-button">cancel</div>',
-                               '</div>',
-                               '<div id="panel-console-progress" class="console-progress">&nbsp;</div>',
-                       '</div>'
-               ].join( '' );
-
-               instance.fetchCSS( '/assets/peta.apps.css' );
-
-               delete instance.onInit;
-       }
-       this.onOpen = function( w, h ){
-               elmContainer = document.getElementById( 'newpanel' );
-               elmProgress  = document.getElementById( 'panel-console-progress' );
-               
-               instance.addMouseEventListener( document.getElementById( 'panel-console-post-button' ), 'click', clickOK );
-               instance.addMouseEventListener( document.getElementById( 'panel-console-cancel-button' ), 'click', clickCancel );
-               /*
-                * ie 6, 7 で fadeIn 中の要素に appendChild すると クラッシュするので、document.body に追加.
-                */                             
-               elmScript = document.createElement( 'script' );
-               document.body.appendChild( elmScript );
-               elmScript.type = 'text\/javascript';
-               elmScript.src  = pettanr.CONST.CREATE_PANEL_JS;
-
-               instance.addTimer( detectForm, 250 );
-               instance.onPaneResize( w, h );
-               
-               elmProgress.innerHTML = 'loading form.';
-       };
-       this.onPaneResize = function( _windowW, _windowH ){
-               windowW = _windowW;
-               windowH = _windowH;
-               instance.rootElement.style.cssText = [
-                       'left:', Math.floor( ( _windowW - instance.rootElement.offsetWidth  ) /2 ), 'px;',
-                       'top:',  Math.floor( ( _windowH - instance.rootElement.offsetHeight ) /2 ), 'px;'
-               ].join( '' );
-       };
-       this.onClose = function(){
-               elmHeader = elmProgress = elmForm  = elmUploader = instance = null;
-               isUploading = false;
-       };
-}, true, true, 'Panel Console', 'panelConsole', null, '#603CBA' );
-
 var ArtistConsole = gOS.registerApplication( function(){
        var windowW, windowH,
                TARGET_FRAME_NAME = 'targetFrameRegisterArtist',
@@ -4724,7 +4595,7 @@ var ArtistConsole = gOS.registerApplication( function(){
                        '</div>'
                ].join( '' );
                
-               instance.fetchCSS( '/assets/peta.apps.css' );
+               instance.fetchCSS( pettanr.CONST.URL_PETA_APPS_CSS );
                
                delete instance.onInit;
        };
@@ -4761,63 +4632,32 @@ var ArtistConsole = gOS.registerApplication( function(){
        };
 }, true, true, 'Artist Console', 'artistConsole', null, '#FFC40D' );
 
-var OutputConsole = gOS.registerApplication( function(){
-       var FORMAT_LIST = [ 'json[POST]', 'json[GET]', 'XML', 'HTML', 'XHTML', 'MT export', 'Blogger ATOM' ];
-       var elmOutputArea,
-               comboboxFormat, inputOption,
-               buttonGenerate, buttonClose,
-               windowW, windowH,
-               timing = 0,
-               comicID, panelID, panelTimming, panelW, panelH, borderSize, panelElementArray,
-               instance = this;
-       //pettanr.key.addKeyDownEvent( ID, 69, false, false, clickOK);
-       
-       function clickOK(){
-               OutputConsole.shutdown();
-       };
-
-       function getPanelElementByTiming(){
-               var i, l = panelElementArray.length;
-               while( timing < l * 2){
-                       for( i=0; i<l; ++i ){
-                               if( timing === panelElementArray[ i ].timing ){
-                                       ++timing;
-                                       return panelElementArray[ i ];
-                               }
-                       }
-                       ++timing;
-               }
-               return null;
-       };
-
-       function getAsHtmlString( isAbsoluteUrl, isXHTML ){
-               timing = 0;
-               
-               var HTML_ARRAY = [],
-                       l = panelElementArray.length,
-                       _panelElement;
 
-               while( HTML_ARRAY.length < l ){
-                       _panelElement = getPanelElementByTiming();
-                       if( _panelElement === null) break;
-                       HTML_ARRAY.push( panelElementToHtml( _panelElement, isAbsoluteUrl, isXHTML ));
+var Model = ( function(){
+       
+       var PanelModelClass = function( panel ){
+               var comicID           = panel.comicID,
+                       panelID           = panel.panelID,
+                       panelTimming      = panel.panelTimming,
+                       panelW            = panel.panelW,
+                       panelH            = panel.panelH,
+                       borderSize        = panel.borderSize,
+                       panelElementArray = panel.panelElementArray,
+                       timing            = 0;
+                       
+               function getPanelElementByTiming(){
+                       var i, l = panelElementArray.length;
+                       while( timing < l * 2){
+                               for( i=0; i<l; ++i ){
+                                       if( timing === panelElementArray[ i ].timing ){
+                                               ++timing;
+                                               return panelElementArray[ i ];
+                                       };
+                               };
+                               ++timing;
+                       };
+                       return null;
                };
-
-               HTML_ARRAY.unshift(
-                       [
-                               '<div class="panel" ',
-                                       'style="',
-                                               'height:', panelH, 'px;',
-                                               'background-color:', ';',
-                                       '"',
-                               '>'
-                       ].join( '')
-               );              
-               HTML_ARRAY.push( '</div>');
-               
-               return HTML_ARRAY.join( pettanr.LINE_FEED_CODE_TEXTAREA);
-       };
-
                function panelElementToHtml( _panelElement, isAbsoluteUrl, isXHTML ){
                        var url;
                        if( _panelElement.type === 0 ){
@@ -4859,42 +4699,6 @@ var OutputConsole = gOS.registerApplication( function(){
                                ].join( '');                            
                        };
                };
-       
-       function getJsonGetString(){
-               timing = 0;
-               
-               var JSON_STRING_ARRAY = [],
-                       ELEMENT_ARRAY     = [],
-                       l                 = panelElementArray.length,
-                       cr                = pettanr.LINE_FEED_CODE_TEXTAREA,
-                       _panelElement;
-
-               while( ELEMENT_ARRAY.length <= l){
-                       _panelElement = getPanelElementByTiming();
-                       if( _panelElement === null ) break;
-                        
-                       ELEMENT_ARRAY.push( _panelElement.type === 0 ? getImageJsonGET( _panelElement ) : balloonToJson( _panelElement ));
-               };
-               return [
-                       '{', cr,
-                               '"panel": {', cr,
-                                       '"id": ',               panelID, ',', cr,
-                                   '"border": ',           borderSize, ',', cr,
-                                   '"comic_id": ',         comicID, ',', cr,
-                                   '"resource_picture_id": 1,', cr,
-                                       '"x": ',                0, ',', cr,
-                                       '"y": ',                0, ',', cr,
-                                       '"z": ',                0, ',', cr,
-                                       panelTimming !== -1 ? ( '"t": ' + panelTimming + ',' + cr ) : '',
-                                   '"width": ',            panelW, ',', cr,
-                                   '"height": ',           panelH, ',', cr,
-                                   '"panel_elements": [', cr,
-                                       ELEMENT_ARRAY.join( ',' + cr ), cr,
-                                   ']', cr,
-                               '}', cr,
-                       '}'
-               ].join( '' );
-       };
                function getImageJsonGET( _imageElement ){
                        var cr = pettanr.LINE_FEED_CODE_TEXTAREA;
                        return [
@@ -4912,58 +4716,17 @@ var OutputConsole = gOS.registerApplication( function(){
                                '}'
                        ].join( '');
                };
-       
-       function getJsonPostString(){
-               timing = 0;
-               
-               var JSON_STRING_ARRAY = [],
-                       IMAGE_ARRAY = [],
-                       BALLOON_ARRAY = [],
-                       l = panelElementArray.length,
-                       _panelElement,
-                       cr = pettanr.LINE_FEED_CODE_TEXTAREA;
-
-               while( IMAGE_ARRAY.length + BALLOON_ARRAY.length <= l){
-                       _panelElement = getPanelElementByTiming();
-                       if( _panelElement === null) break;
-                       _panelElement.type === 0 ? 
-                               IMAGE_ARRAY.push( [ '"new', timing, '": ', imageToJson( _panelElement ) ].join( '' )) :
-                               BALLOON_ARRAY.push( [ '"new', timing, '": ', balloonToJson( _panelElement ) ].join( '' ) );
-               };
-               return [
-                       '{', cr,
-                               '"panel": {', cr,
-                                       '"id": ',               panelID, ',', cr,
-                                   '"border": ',           borderSize, ',', cr,
-                                   '"comic_id": ',         comicID, ',', cr,
-                                   '"resource_picture_id": 1,', cr,
-                                       '"x": ',                0, ',', cr,
-                                       '"y": ',                0, ',', cr,
-                                       '"z": ',                0, ',', cr,
-                                       '"t": ',                                panelTimming, ',', cr,
-                                   '"width": ',            panelW, ',', cr,
-                                   '"height": ',           panelH, ',', cr,
-                                   '"panel_pictures_attributes": {', cr,
-                                       IMAGE_ARRAY.join( ',' + cr ), cr,
-                                   '},', cr,
-                                   '"balloons_attributes": {', cr,
-                                       BALLOON_ARRAY.join( ',' + cr ), cr,
-                                   '}', cr,
-                               '}', cr,
-                       '}'
-               ].join( '' );
-       };
                function imageToJson( _imageElement ){
                        var cr = pettanr.LINE_FEED_CODE_TEXTAREA;
                        return [
                                '{', cr,
-                                       '"resource_picture_id": ', _imageElement.resourcePicture().id, ',', cr,
-                                       '"x": ',                   _imageElement.x, ',', cr,
-                                       '"y": ',                   _imageElement.y, ',', cr,
-                                       '"z": ',                   _imageElement.z, ',', cr,
-                                       '"width": ',               _imageElement.flipH() * _imageElement.w, ',', cr,
-                                       '"height": ',              _imageElement.flipV() * _imageElement.h, ',', cr,
-                                       '"t": ',                   timing, cr,
+                                       '"picture_id": ', _imageElement.resourcePicture().id, ',', cr,
+                                       '"x": ',          _imageElement.x, ',', cr,
+                                       '"y": ',          _imageElement.y, ',', cr,
+                                       '"z": ',          _imageElement.z, ',', cr,
+                                       '"t": ',          timing, ',', cr,
+                                       '"width": ',      _imageElement.flipH() * _imageElement.w, ',', cr,
+                                       '"height": ',     _imageElement.flipV() * _imageElement.h, cr,
                                '}'
                        ].join( '');
                };
@@ -4995,18 +4758,150 @@ var OutputConsole = gOS.registerApplication( function(){
                                '}'
                        ].join( '');
                };
+                       
+               this.getJsonPostString = function(){
+                       timing = 0;
+                       
+                       var JSON_STRING_ARRAY = [],
+                               IMAGE_ARRAY       = [],
+                               BALLOON_ARRAY     = [],
+                               l = panelElementArray.length,
+                               _panelElement,
+                               cr = pettanr.LINE_FEED_CODE_TEXTAREA;
        
-       function clickGenerate(){
+                       while( IMAGE_ARRAY.length + BALLOON_ARRAY.length <= l ){
+                               _panelElement = getPanelElementByTiming();
+                               if( _panelElement === null) break;
+                               _panelElement.type === 0 ? 
+                                       IMAGE_ARRAY.push( [ '"new', timing, '": ', imageToJson( _panelElement ) ].join( '' ) ) :
+                                       BALLOON_ARRAY.push( [ '"new', timing, '": ', balloonToJson( _panelElement ) ].join( '' ) );
+                       };
+                       return [
+                               '{', cr,
+                                       //'"panel": {', cr,
+                                               //'"id": ',               panelID, ',', cr,
+                                           '"width": ',            panelW, ',', cr,
+                                           '"height": ',           panelH, ',', cr,
+                                           '"border": ',           borderSize, ',', cr,
+                                           // '"comic_id": ',         comicID, ',', cr,
+                                           // '"picture_id": 1,', cr,
+                                               '"x": ',                0, ',', cr,
+                                               '"y": ',                0, ',', cr,
+                                               '"z": ',                0, ',', cr,
+                                               // '"t": ',                             panelTimming, ',', cr,
+                                           '"panel_pictures_attributes": {', cr,
+                                               IMAGE_ARRAY.join( ',' + cr ), cr,
+                                           '},', cr,
+                                           '"speech_balloons_attributes": {', cr,
+                                               BALLOON_ARRAY.join( ',' + cr ), cr,
+                                           '}', cr,
+                                       //'}', cr,
+                               '}'
+                       ].join( '' );
+               };
+               this.getJsonGetString = function(){
+                       timing = 0;
+                       
+                       var JSON_STRING_ARRAY = [],
+                               ELEMENT_ARRAY     = [],
+                               l                 = panelElementArray.length,
+                               cr                = pettanr.LINE_FEED_CODE_TEXTAREA,
+                               _panelElement;
+       
+                       while( ELEMENT_ARRAY.length <= l){
+                               _panelElement = getPanelElementByTiming();
+                               if( _panelElement === null ) break;
+                                
+                               ELEMENT_ARRAY.push( _panelElement.type === 0 ? getImageJsonGET( _panelElement ) : balloonToJson( _panelElement ));
+                       };
+                       return [
+                               '{', cr,
+                                       //'"panel": {', cr,
+                                               //'"id": ',               panelID, ',', cr,
+                                           '"border": ',           borderSize, ',', cr,
+                                           // '"comic_id": ',         comicID, ',', cr,
+                                           // '"picture_id": 1,', cr,
+                                               '"x": ',                0, ',', cr,
+                                               '"y": ',                0, ',', cr,
+                                               '"z": ',                0, ',', cr,
+                                               // panelTimming !== -1 ? ( '"t": ' + panelTimming + ',' + cr ) : '',
+                                           '"width": ',            panelW, ',', cr,
+                                           '"height": ',           panelH, ',', cr,
+                                           '"panel_elements": [', cr,
+                                               ELEMENT_ARRAY.join( ',' + cr ), cr,
+                                           ']', cr,
+                                       //'}', cr,
+                               '}'
+                       ].join( '' );
+               };
+               this.getAsHtmlString = function( isAbsoluteUrl, isXHTML ){
+                       timing = 0;
+                       
+                       var HTML_ARRAY = [],
+                               l = panelElementArray.length,
+                               _panelElement;
+       
+                       while( HTML_ARRAY.length < l ){
+                               _panelElement = getPanelElementByTiming();
+                               if( _panelElement === null) break;
+                               HTML_ARRAY.push( panelElementToHtml( _panelElement, isAbsoluteUrl, isXHTML ));
+                       };
+       
+                       HTML_ARRAY.unshift(
+                               [
+                                       '<div class="panel" ',
+                                               'style="',
+                                                       'height:', panelH, 'px;',
+                                                       'background-color:', ';',
+                                               '"',
+                                       '>'
+                               ].join( '')
+                       );              
+                       HTML_ARRAY.push( '</div>');
+                       
+                       return HTML_ARRAY.join( pettanr.LINE_FEED_CODE_TEXTAREA );
+               };
+               this.destroy = function(){
+                       panel = panelElementArray = null;
+               };
+       };
+       
+       return {
+               createPanel: function( panelData ){
+                       return new PanelModelClass( panelData );
+               }
+       };
+} )();
+
+
+var OutputConsole = gOS.registerApplication( function(){
+       var FORMAT_LIST = [ 'json[POST]', 'json[GET]', 'XML', 'HTML', 'XHTML', 'MT export', 'Blogger ATOM' ];
+       var elmOutputArea,
+               comboboxFormat, inputOption,
+               buttonPost, buttonClose,
+               windowW, windowH,
+               timing   = 0,
+               comicID, panelID, panelTimming, panelW, panelH, borderSize, panelElementArray,
+               instance = this,
+               model    = null;
+       
+       function clickOK(){
+               OutputConsole.shutdown();
+       };
+
+       function formatUpdate(){
                var i = comboboxFormat.selectIndex(),
                        text = 'sorry...';
+               // buttonPost.enabled( false );
                if( i === 0 ){
-                       text = getJsonPostString();
+                       text = model.getJsonPostString();
+                       // buttonPost.enabled( true );
                } else
                if( i === 1 ){
-                       text = getJsonGetString();
+                       text = model.getJsonGetString();
                } else
                if( i === 3 ){
-                       text = getAsHtmlString( false, false );
+                       text = model.getAsHtmlString( false, false );
                } else {
                        
                };
@@ -5017,6 +4912,11 @@ var OutputConsole = gOS.registerApplication( function(){
                return false;
        };
        
+       function clickPost(){
+               // PanelConsole.boot( elmOutputArea.value );
+               return false;
+       }
+       
        /* grobal method */
        this.MIN_WIDTH   = 320;
        this.MIN_HEIGHT  = 320;
@@ -5035,14 +4935,14 @@ var OutputConsole = gOS.registerApplication( function(){
                                        '<span id="output-console-option-value" class="output-console-value editable-value">absolute-path</span>',
                                '</div>',
                                '<div id="output-console-button-container" class="clearfix">',
-                                       '<div id="output-console-generate-button" class="button console-submit-button">generate</div>',
+                                       // '<div id="output-console-post-button" class="button console-submit-button">post</div>',
                                        '<div id="output-console-close-button" class="button console-cancel-button">close</div>',
                                '</div>',
                                '<textarea id="output-area" readonly></textarea>',
                        '</div>'
                ].join( '' );
 
-               instance.fetchCSS( '/assets/peta.apps.css' );
+               instance.fetchCSS( pettanr.CONST.URL_PETA_APPS_CSS );
 
                delete instance.onInit;
        };
@@ -5050,25 +4950,27 @@ var OutputConsole = gOS.registerApplication( function(){
                elmOutputArea = document.getElementById( 'output-area' );
                
                var ui = instance.createUIGroup();
-               comboboxFormat = ui.createCombobox( document.getElementById( 'output-console-format' ), clickGenerate );
+               comboboxFormat = ui.createCombobox( document.getElementById( 'output-console-format' ), formatUpdate );
                
                for( var i=0; FORMAT_LIST[ 0 ]; ++i ){
                        comboboxFormat.createOption( FORMAT_LIST.shift(), null, i === 0 );
                };
                inputOption    = ui.createInputText( document.getElementById( 'output-console-option' ), null );
-               buttonGenerate = ui.createButton( document.getElementById( 'output-console-generate-button' ), clickGenerate );
+               // buttonPost     = ui.createButton( document.getElementById( 'output-console-post-button' ), clickPost );
                buttonClose    = ui.createButton( document.getElementById( 'output-console-close-button' ), clickClose );
                instance.onPaneResize( _w, _h );
                
-               comicID           = _comicID;
-               panelID           = _panelID;
-               panelTimming      = _panelTimming;
-               panelW            = _panelW;
-               panelH            = _panelH;
-               borderSize        = _borderSize;
-               panelElementArray = _panelElementArray;
+               model = Model.createPanel( {
+                       comicID           : _comicID,
+                       panelID           : _panelID,
+                       panelTimming      : _panelTimming,
+                       panelW            : _panelW,
+                       panelH            : _panelH,
+                       borderSize        : _borderSize,
+                       panelElementArray : _panelElementArray
+               } );
                
-               clickGenerate();
+               formatUpdate();
        };
        this.onPaneResize = function( _windowW, _windowH ){
                windowW = _windowW;
@@ -5080,8 +4982,163 @@ var OutputConsole = gOS.registerApplication( function(){
        };
        this.onClose = function(){
                elmOutputArea.value = '';
-               elmOutputArea = comboboxFormat = inputOption = buttonGenerate = buttonClose = panelElementArray = instance = null;
+               model.destroy();
+               elmOutputArea = comboboxFormat = inputOption = buttonPost = buttonClose = panelElementArray = instance = model = null;
        };
 }, true, false, 'Output Console', 'outputConsole', null, '#2D89F0' );
 
+
+var PanelConsole = gOS.registerApplication( function(){
+       var windowW, windowH,
+               TARGET_FRAME_NAME = 'targetFrameCreateNewPanel',
+               elmContainer, elmProgress,
+               elmScript = null,
+               elmForm = null,
+               elmIframe = null,
+               isUploading = false,
+               instance = this,
+               json;
+       /*
+        * upload ボタンが押されたらまず iframe をつくる.
+        */
+       function clickOK(){
+               if( !elmForm || !elmIframe || isUploading === true ) return false;
+               elmProgress.innerHTML = 'uploading.';
+               isUploading = true;
+               submit();
+               return false;
+       }
+       /*
+        * form の target に iframe を指定したのち submit();
+        */
+               function submit(){
+                       try {
+                               elmForm.submit();
+                       } catch( e ){
+                               elmProgress.innerHTML = 'submit() err..';
+                               isUploading = false;
+                               instance.addTimer( clickCancel , 3000, true );
+                               return;
+                       }
+                       
+                       if( UA.isIE ){
+                               elmIframe.onreadystatechange = detectIframe;
+                       } else {
+                               elmIframe.onload = onLoad;
+                       }
+                       elmProgress.innerHTML = 'uploading..';
+               }
+       /*
+        * ie の 場合、readyState をチェック.
+        */
+                       function detectIframe(){
+                   if ( elmIframe.readyState === 'complete' ){
+                       elmIframe.onreadystatechange = new Function();
+                       elmIframe.onreadystatechange = null;
+                       onLoad();
+                   };
+                       };
+                               function onLoad(){
+                                       try {
+                                               console.log( ( elmIframe.contentWindow || elmIframe.contentDocument.parentWindow ).document.body.innerHTML );
+                                       } catch(e){
+                                               
+                                       }
+                                       elmIframe.onload = null;
+                                       ( elmIframe.contentWindow || elmIframe.contentDocument.parentWindow ).close();
+                                       elmProgress.innerHTML = 'success!';
+                                       instance.addTimer( clickCancel , 1000, true );
+                                       isUploading = false;
+                               };
+       
+       function detectForm(){
+               elmForm = elmContainer.getElementsByTagName( 'form' )[ 0 ];
+               if( elmForm){
+                       var _inputList = elmForm.getElementsByTagName( 'input' ),
+                               _input;
+                       for( var i = _inputList.length; i; ){
+                               _input = _inputList[ --i ];
+                               if( _input.type === 'submit' ){
+                                       _input.style.display = 'none';
+                               };
+                               if( _input.name === 'json' && Type.isString( json ) === true ){
+                                       _input.value = json;
+                               };
+                       };
+                       instance.removeTimer( detectForm );
+                       Util.createIframe( TARGET_FRAME_NAME, onCreateIframe );
+                       elmProgress.innerHTML = 'create iframe';
+               };
+       };
+       function onCreateIframe( _iframe ){
+               elmContainer.appendChild( _iframe );
+               elmIframe = _iframe;
+               elmForm.target = _iframe.name;
+               elmProgress.innerHTML = '';
+               instance.onPaneResize( windowW, windowH );
+       };
+       function clickCancel(){
+               if( isUploading === true) return false;
+               PanelConsole.shutdown();
+               return false;
+       };
+
+       /* grobal method */
+       this.MIN_WIDTH   = 320;
+       this.MIN_HEIGHT  = 320;
+       this.onInit = function(){
+               instance.rootElement.id = 'panel-console-wrapper';
+               instance.rootElement.className = 'console-wrapper';
+               instance.rootElement.innerHTML = [
+                       '<div id="panel-console-header" class="console-header">Create New Panel (dev)</div>',
+                       '<div id="panel-console" class="console-inner">',
+                               '<div id="newpanel"></div>',
+                               '<div class="console-button-container">',
+                                       '<div id="panel-console-post-button" class="button console-submit-button">post</div>',
+                                       '<div id="panel-console-cancel-button" class="button console-cancel-button">cancel</div>',
+                               '</div>',
+                               '<div id="panel-console-progress" class="console-progress">&nbsp;</div>',
+                       '</div>'
+               ].join( '' );
+
+               instance.fetchCSS( pettanr.CONST.URL_PETA_APPS_CSS );
+
+               delete instance.onInit;
+       }
+       this.onOpen = function( w, h, _json ){
+               elmContainer = document.getElementById( 'newpanel' );
+               elmProgress  = document.getElementById( 'panel-console-progress' );
+               
+               instance.addMouseEventListener( document.getElementById( 'panel-console-post-button' ), 'click', clickOK );
+               instance.addMouseEventListener( document.getElementById( 'panel-console-cancel-button' ), 'click', clickCancel );
+               /*
+                * ie 6, 7 で fadeIn 中の要素に appendChild すると クラッシュするので、document.body に追加.
+                */                             
+               elmScript = document.createElement( 'script' );
+               document.body.appendChild( elmScript );
+               elmScript.type = 'text\/javascript';
+               elmScript.src  = pettanr.CONST.CREATE_PANEL_JS;
+
+               instance.addTimer( detectForm, 250 );
+               instance.onPaneResize( w, h );
+               
+               json = _json;
+               
+               elmProgress.innerHTML = 'loading form.';
+       };
+       this.onPaneResize = function( _windowW, _windowH ){
+               windowW = _windowW;
+               windowH = _windowH;
+               instance.rootElement.style.cssText = [
+                       'left:', Math.floor( ( _windowW - instance.rootElement.offsetWidth  ) /2 ), 'px;',
+                       'top:',  Math.floor( ( _windowH - instance.rootElement.offsetHeight ) /2 ), 'px;'
+               ].join( '' );
+       };
+       this.onClose = function(){
+               elmHeader = elmProgress = elmForm  = elmUploader = instance = null;
+               isUploading = false;
+       };
+}, true, true, 'Panel Console', 'panelConsole', null, '#603CBA' );
+
+
 })( pettanr, gOS, window );
index dc9217b..32a922b 100644 (file)
@@ -1,6 +1,6 @@
 /*\r
  * pettanR peta.common.js\r
- *   version 0.5.4\r
+ *   version 0.5.6\r
  * \r
  *   author:\r
  *     itozyun\r
@@ -67,7 +67,7 @@ pettanr.CONST = ( function(){
                                        return a ? a.href : '';\r
                                }\r
                                return '';\r
-                       }\r
+                       };\r
                        var loc = document.location;\r
                        return [ loc.protocol, '\/\/', loc.host, '\/' ].join( '' );\r
                })(),\r
@@ -79,7 +79,7 @@ pettanr.CONST = ( function(){
                                l    = path.split( '\/' ).length - PETTANR_ROOT_PATH.split( '\/' ).length;\r
                        for( var i=0; i<l; ++i ){\r
                                ret += '..\/';\r
-                       }\r
+                       };\r
                        return ret;\r
                })();\r
                \r
@@ -96,8 +96,8 @@ pettanr.CONST = ( function(){
                CREATE_PANEL_JS:                        SERVER_SUPPORT === false ? 'js\/create_new_panel.js' : PETTANR_ROOT_PATH + 'panels\/new.js',\r
                UPLOAD_PICTURE_JS:                      SERVER_SUPPORT === false ? 'js\/upload_picture.js' : PETTANR_ROOT_PATH + 'original_pictures\/new.js',\r
                REGISTER_ARTIST_JS:                     SERVER_SUPPORT === false ? 'js\/register_artist.js' : PETTANR_ROOT_PATH + 'artists\/new.js',\r
-               JQUERY_URL:                                     SERVER_SUPPORT === false ? 'javascripts\/jquery-1.6.2.min.js' : PETTANR_ROOT_PATH + 'assets\/jquery-162_min.js',\r
-               SERVER_SUPPORT:                         SERVER_SUPPORT\r
+               SERVER_SUPPORT:                         SERVER_SUPPORT,\r
+               URL_PETA_APPS_CSS:                      ( SERVER_SUPPORT === false ? 'stylesheets' : '\/assets' ) + '\/peta.apps.css'\r
        }\r
 })();\r
 \r
@@ -645,29 +645,29 @@ pettanr.bind = ( function(){
                        _ieroot = _quirks ? "body" : "documentElement";\r
                        _root = opt_elmCheck ? opt_elmCheck : ( _ie ? document[_ieroot] : window);\r
 \r
-               function getInnerSize() {\r
+               function getInnerSize(){\r
                        return {\r
                                w: _root.innerWidth  || _root.clientWidth,\r
                                h: _root.innerHeight || _root.clientHeight\r
                        };\r
-               }\r
+               };\r
 \r
-               function loop() {\r
+               function loop(){\r
                        if (!_globalLock++) {\r
                                var size = getInnerSize();\r
                                if (_size.w !== size.w || _size.h !== size.h) { // resized\r
                                        _size = size; // update\r
                                        onResizeFunction( _size );\r
-                               }\r
+                               };\r
                                setTimeout( unlock, 0); // delay unlock\r
-                       }\r
+                       };\r
                        setTimeout(loop, 500);\r
-               }\r
+               };\r
                function unlock(){\r
                        _globalLock = 0;\r
-               }\r
+               };\r
                loop();\r
-       }\r
+       };\r
        \r
        \r
        var ElementBuilderClass = function( elmTarget, noClassnameMode ){\r
@@ -676,7 +676,7 @@ pettanr.bind = ( function(){
                \r
                function buildComicElement(){\r
                        \r
-               }\r
+               };\r
                \r
                function buildPanelElement( json, zoom ){\r
                        var _elmPanel = document.createElement( 'div' ),\r
@@ -723,7 +723,7 @@ pettanr.bind = ( function(){
                                        } else {\r
                                                _elmImg.style.width  = Math.abs( _comicElement.width ) + 'px';\r
                                                _elmImg.style.height = Math.abs( _comicElement.height ) + 'px';\r
-                                       }\r
+                                       };\r
                                        \r
                                        RIMG_ARRAY.push( _rImg );\r
                                } else {\r
@@ -751,24 +751,24 @@ pettanr.bind = ( function(){
                                        if( _speechesAttributes ){\r
                                                for( _key in _speechesAttributes ){\r
                                                        _text += _speechesAttributes[ _key ] && _speechesAttributes[ _key ].content ? _speechesAttributes[ _key ].content : '';\r
-                                               }\r
-                                       }\r
+                                               };\r
+                                       };\r
                                        _elmText.firstChild.appendChild( document.createTextNode( _text ));\r
                                        BALLOON_ARRAY.push( _balloon );\r
-                               }\r
-                       }\r
-               }\r
+                               };\r
+                       };\r
+               };\r
                \r
                function clean(){\r
                        // clean elmTarget\r
                        while( RIMG_ARRAY.length > 0 ){\r
                                RIMG_ARRAY.shift().destroy();\r
-                       }\r
+                       };\r
                        while( BALLOON_ARRAY.length > 0 ){\r
                                BALLOON_ARRAY.shift().destroy();\r
-                       }\r
+                       };\r
                        Util.removeAllChildren( elmTarget );            \r
-               }\r
+               };\r
                \r
                this.build = function( json, zoom ){\r
                        clean();\r
@@ -787,13 +787,13 @@ pettanr.bind = ( function(){
                        } else {\r
                                // invalid json\r
                        };\r
-               }\r
+               };\r
                this.zoom = function(){\r
                        \r
-               }\r
+               };\r
                this.destroy = function(){\r
                        clean();\r
-               }\r
+               };\r
        };\r
        \r
        var BindWorkerClass = function( elmTarget, json, zoomSelfEnabled, noClassnameMode ){\r
@@ -801,36 +801,36 @@ pettanr.bind = ( function(){
                var elmDetectW = ELM_DETECT_WIDTH.cloneNode( false );\r
                var resizer    = null;\r
                \r
-               if( zoomSelfEnabled === true){\r
+               if( zoomSelfEnabled === true ){\r
                        elmTarget.parentNode.insertBefore( elmDetectW, elmTarget );\r
                        resizer = new ResizeAgentClass( onResize, elmDetectW );\r
-               }\r
+               };\r
                function onResize(){\r
                        \r
-               }\r
+               };\r
                json && typeof json === 'object' && builder.build( json );\r
                \r
                this.init = function(){\r
                                \r
-               }\r
+               };\r
                this.zoom = function(){\r
                        builder.zoom();\r
-               }\r
+               };\r
                this.json = function( _json ){\r
                        json = _json;\r
                        builder.build( _json );\r
-               }\r
+               };\r
                this.targetElement = function(){\r
                                \r
-               }\r
+               };\r
                this.layout = function(){\r
                                \r
-               }\r
+               };\r
                this.destroy = function(){\r
                        builder.destroy();\r
                        elmTarget = json = builder = null;\r
-               }\r
-       }\r
+               };\r
+       };\r
        \r
        return {\r
                createBindWorker: function( elmTarget, opt_COMICJSONorPANELJSON, opt_zoomSelfEnabled, opt_noClassnameMode ){\r
index 9799331..b34240a 100644 (file)
@@ -1,6 +1,6 @@
 /*\r
  * pettanR system.js\r
- *   version 0.5.5\r
+ *   version 0.5.6\r
  * \r
  * \r
  * Type\r
                        getChildIndex: function( _parent, _child ){\r
                                var _children = _parent.getElementsByTagName( _child.tagName ),\r
                                        l = _children.length;\r
-                               for(var i=0; i<l; ++i){\r
-                                       if( _children[ i] === _child) return i;\r
-                               }\r
+                               for( var i=0; i<l; ++i ){\r
+                                       if( _children[ i ] === _child ) return i;\r
+                               };\r
                                return -1;\r
                        },\r
-                       hasClassName: function( _elm, _className){\r
-                               var _classes = ( _elm.className || '').split( ' ');\r
-                               for( var i=0, l=_classes.length; i<l; ++i){\r
-                                       if( _classes[ i] === _className) return true;\r
-                               }\r
-                               return false;\r
+                       hasClassName: function( _elm, _className ){\r
+                               return Util.getIndex( ( _elm.className || '' ).split( ' ' ), _className ) !== -1;\r
+                       },\r
+                       addClass: function( _elm, _className ){\r
+                               if( Util.hasClassName( _elm, _className ) === false ){\r
+                                       var sp = ' ';\r
+                                       var _array = ( _elm.className || '' ).replace( /\s+/g, sp ).split( sp );\r
+                                       _array.push( _className );\r
+                                       _elm.className = _array.join( sp );\r
+                               };\r
+                       },\r
+                       removeClass: function( _elm, _className ){\r
+                               var sp     = ' ',\r
+                                       _array = _elm.className.replace( /\s+/g, sp ).split( sp ),\r
+                                       i      = Util.getIndex( _array, _className );\r
+                               if( i !== -1 ){\r
+                                       _array.splice( i, 1 );\r
+                                       _elm.className = _array.join( sp );\r
+                               };\r
+                       },\r
+                       toggleClass: function( _elm, _className ){\r
+                               Util.hasClassName( _elm, _className ) === false ? Util.addClass( _elm, _className ) : Util.removeClass( _elm, _className );\r
                        },\r
                        removeAllChildren: function ( _elm){\r
                                while( _elm.firstChild){\r
                        /*\r
                         * \r
                         */\r
-                       createGlobalFunction: function( _func ){\r
-                               var randomKey = null;\r
-                               while( true) {\r
-                                       randomKey = '_glovalFunction_' + ( '' + Math.random()).replace( /\./,'');\r
-                                       if( eval( 'typeof '+randomKey) === 'undefined') {\r
-                                               break;\r
-                                       }\r
-                               }\r
-                               window[ randomKey ] = _func;\r
-                               return randomKey;\r
-                       },\r
-                       createGlobalFunc: function( func){\r
-                               var randomKey = null;\r
-                               while(true) {\r
-                                       randomKey = 'hogeGlovalFunc_'+(''+Math.random()).replace(/\./,'');\r
-                                       if(eval('typeof '+randomKey) == 'undefined') {\r
-                                               break;\r
-                                       }\r
-                               }\r
-                               eval(randomKey+'='+((typeof func=='string') ? func : func.toString()));\r
-                               return randomKey;\r
-                       },\r
-                       createGlobalVar: function( obj){\r
-                               var randomKey = null;\r
-                               while(true) {\r
-                                       randomKey = 'hogeGlovalVar_'+(''+Math.random()).replace(/\./,'');\r
-                                       if(eval('typeof '+randomKey+'') == 'undefined') {\r
-                                               break;\r
-                                       }\r
-                               }\r
-                               var globalObj = eval(randomKey+'={}');\r
-                               globalObj.value = obj;\r
-                               return randomKey;\r
-                       },\r
                        createGlobalUniqueName: function(){\r
                                var randomKey = null;\r
                                while(true) {\r
@@ -1692,6 +1674,8 @@ var AbstractApplication = function( displayName, appClass, isOverlay ){
                };\r
                \r
                function onOpen(){\r
+                       self.rootElement.style.display = '';\r
+                       \r
                        if( self.MIN_WIDTH > _w || self.MIN_HEIGHT > _h ){\r
                                if( Type.isHTMLElement( self.rootElement ) === true ){\r
                                        // 小さすぎる!、と表示\r
@@ -1881,7 +1865,7 @@ var Application = ( function(){
                        if( currentApplication ){\r
                                if( currentApplication.getUID() === uid ) return null;\r
                                if( isOverlay === false && currentApplication.close() === false ) return null;\r
-                       }\r
+                       };\r
 \r
                        appClass.prototype = new AbstractApplication( displayName, appClass, isOverlay );\r
                        var application = new appClass(); // new は boot で\r
@@ -1894,6 +1878,7 @@ var Application = ( function(){
                                body.style.backgroundColor = application.bgColor;\r
                                \r
                                body.appendChild( application.rootElement );\r
+                               application.rootElement.style.display = 'none';\r
                                application.init();\r
 \r
                                application.addAsyncCall( asyncOpen, arg );\r
@@ -3089,9 +3074,8 @@ var Overlay = ( function(){
                \r
                //body.appendChild( application.rootElement );\r
                elmContainer.insertBefore( application.rootElement, elmCloseButton );\r
+               application.rootElement.style.display = 'none';\r
                application.init();\r
-               \r
-               \r
        };\r
        function asyncOpen( /* arguments */ ){\r
                \r
@@ -3288,11 +3272,10 @@ var UI = ( function(){
        }\r
        \r
        var ButtonClass = function( apiuser, uiGroup, elmWrapper, onUpdate ){\r
-               var className = elmWrapper.className || '',\r
-                       instance = this,\r
-                       focus = false,\r
-                       visible = true,\r
-                       enabled = true;\r
+               var instance  = this,\r
+                       focus     = false,\r
+                       visible   = true,\r
+                       enabled   = true;\r
                MouseEvent.add( apiuser, elmWrapper, 'click', onClick );\r
                \r
                function onClick(){\r
@@ -3302,16 +3285,20 @@ var UI = ( function(){
                };\r
                this.focus = function(){\r
                        focus = true;\r
-                       elmWrapper.className = className + ' button-has-focus';\r
+                       Util.addClass( elmWrapper, 'button-has-focus' );\r
                        start( apiuser, uiGroup, instance );\r
                };\r
                this.blur = function( keyCode ){\r
                        keyCode === 13 && onClick();\r
-                       elmWrapper.className = className;\r
+                       Util.removeClass( elmWrapper, 'button-has-focus' );\r
                        focus = false;\r
                        finish( apiuser, uiGroup, instance );\r
                };\r
-               this.enabled = function(){\r
+               this.enabled = function( _enabled ){\r
+                       if( Type.isBoolean( _enabled ) === true && enabled !== _enabled ){\r
+                               _enabled === true ? Util.removeClass( elmWrapper, 'button-disabled' ) : Util.addClass( elmWrapper, 'button-disabled' );\r
+                               enabled = _enabled;\r
+                       };\r
                        return enabled;\r
                };\r
                this.visible = function( _visible ){\r
index 773cbb1..0c1a06e 100644 (file)
@@ -3,7 +3,6 @@
 <head>\r
   <title>Pettanr</title>\r
   <%= stylesheet_link_tag    "application" %>\r
-  <%= javascript_include_tag "application" %>\r
   <%= csrf_meta_tags %>\r
 </head>\r
 <body>\r