window.addEvents({

    'domready' : function() {
   
        new SmoothScroll();
        
        base_ = $('body_').getProperty('rel').split('#');
        base_url = base_[0];
        base_style = base_url + 'static/styles/'+base_[1]+'/';
        
        /* -- HASH -- */
        
        if( location.hash.contains( 'video' ) ) { location.href = location.href.replace( /#/ , '' ); }
        if( location.hash.contains( 'fiction' ) ) { location.href = base_url+'fiction/' }
        
        /* -- LOAD EXTERNAL SCRIPTS -- */

        if( $$('.wysiwyg').length > 0 ) new Asset.javascript(base_url+'static/javascript/libs/ckeditor/ckeditor.js');
        
        /* -- BLACKOUT -- */
        
        $('blackout').addEvent( 'click' , function() {
            this.addClass('hide');
            if( $('canvas') ) {
                $('canvas').empty();
                $('canvas').addClass('hide');
                if( $('pager') ) $('pager').addClass('hide');
            }
        });

        /* -- TEXT SIZE -- */
        
        if( $('text_size') ) {

            access_size_ = $('text_size');
            container_ = $('container');

            textsize_ = "1";
            if( Cookie.read('textsize') ) textsize_ = Cookie.read('textsize');

            switch( textsize_ ) {
                case "2":
                    container_.addClass( 'large' );
                    access_size_.set( 'html' , "Larger Text" );
                break;
                case "3":
                    container_.addClass( 'largest' );
                    access_size_.set( 'html' , "Reset Text" );
                break;
            }
            
            access_size_.addEvents({
        
            'click' : function(e) {
        
                e.stop();

                if( Cookie.read('textsize') ) {
                    textsize_ = Cookie.read('textsize');
                    Cookie.dispose('textsize', {duration:2 , path:'/'});
                }
        
                switch( textsize_ ) {
            
                    case "1":
                        access_size_.set( 'html' , "Larger Text" );
                        container_.addClass( 'large' );
                        Cookie.write( 'textsize', '2' , {duration:1 , path:'/'} );
                    break;
                
                    case "2":
                        access_size_.set( 'html' , "Reset Text" );
                        container_.addClass( 'largest' );
                        Cookie.write( 'textsize', '3', {duration:1 , path:'/'} );
                    break;
                    
                    default:
                        access_size_.set( 'html' , "Large Text" );
                        container_.removeClass('largest');
                        container_.removeClass('large');
                        Cookie.write( 'textsize', '1', {duration:1 , path:'/'} );
                    break;
            
                }
            
            },
            
            'focus' :  function() {  this.blur(); }

        });

        }
        
        /* -- SORT TABLE -- */
        
        sort_ = $$('table.sort');
              
        if( sort_.length > 0 ) {
        
            HtmlTable.Parsers.dater = {
                convert: function() {
                    return new Date().parse(this.get('text'));
                },
                number: false
            };

            sort_.each( function( el , i ) {
                
                parse = [];
                el.getChildren('thead')[0].getChildren('tr')[0].getChildren('th').each( function(elb,ib) {
                    if( elb.get('text') != '' ) { elb.getProperty('rel') ? parse[ib] = elb.getProperty('rel') : parse[ib] = parse[ib] = 'string';  }
                });
         
                new HtmlTable( el , {
                    parsers : parse,
                    classNoSort : 'nosort',
                    classZebra : (el.hasClass('zebra') ? 'light' : ''),
                    classHeadSort : 'sortasc' ,
                    classHeadSortRev: 'sortdesc' , 
                    zebra : (el.hasClass('zebra') ? true : false),
                    sortable : true,
                    sortIndex: null
                });

            });
        
        }
        


        /* -- SUB NAV -- */
        
        subnav_ = $$('.subnav');
        
        if( subnav_.length > 0 ) {
        
            subnav_on_ = $$('.subnav_on');
            
            subnav_.addEvents({
           
                'mouseenter' : function() {
                
                    $$('.subnav_on').removeClass('subnav_on');                
                
                    a_ = this.getChildren('a[class~=subnav_head]');
                    a_.addClass( 'subnav_on' );
                
                    ul_ = this.getChildren('ul');
                    ul_.removeClass('hide');
                    
                    ul_.setStyles({ 'left': this.getPosition().x + 1 , 'top' : $('strip_beta').getCoordinates().bottom , 'min-width' : this.getSize().x , 'width':'auto !important' , 'z-index' : 3000  });
                
                },



                
                'mouseleave' : function() {
                
                    ul_.addClass('hide');
                    
                    a_.removeClass('subnav_on');
                    subnav_on_.addClass('subnav_on');
                }   
           
            });
        
        }
        
        /* -- FORMS -- */

        add_note = function( x , y , txt ) {
        
            if( $('note') ) $('note').destroy();
            
            if( x + 300 > window.getWidth() )   x = window.getWidth() - 300;
            if( y < 0 )                         y = 0;

            $('body_').adopt( new Element( 'div' , { 'id':'note' } ).setStyles({'top':y , 'left':x } ) );
            $('note').adopt( new Element( 'div' , { 'id':'note_inner' , 'html':txt } ) );
            
        }
        
        form_load = function() {
        
            forms_ = $$('form[rel!=nogo]');
        
            forms_.addEvent( 'submit' , function(e) {
 
                e.stop();
                
                $$('#current_form').removeProperty( 'id' );

                current_form_ = this;
                current_form_id = this.getProperty('id');
                current_form_.setProperty( 'id' , 'current_form' );
                
                sub_ = $$('#current_form input[type=submit]')[0];
                sub_.addClass( 'ajax' );
                
                if( $('sub') ) $('sub').destroy();
                current_form_.adopt( new Element( 'input' , { 'id':'sub' , 'type':'hidden' , 'name':sub_.getProperty('name') , 'value': sub_.getProperty('value') } ) );

                $$('#current_form input[type=file]').each( function( el ) {
                    if( $(el.getProperty('name')) ) $(el.getProperty('name')).destroy();
                    current_form_.adopt( new Element( 'input' , { 'id':el.getProperty('name') , 'type':'hidden' , 'name':el.getProperty('name') , 'value': el.getProperty('value') } ) );
                });

                if( $$('#current_form .wysiwyg').length > 0 ) {
                    $$('#current_form .wysiwyg').each( function( el , i ) {
                        if( $('wysiwyg_'+i) ) $('wysiwyg_'+i).destroy();
                        current_form_.adopt( new Element( 'input' , { 'id':'wysiwyg_'+i , 'type':'hidden' , 'name':'ow_'+el.getProperty('name') , 'value': wysiwyg_[i].getData() } ) );
                    });
                }
                
                current_form_.getProperty('name') ? form_name_ = current_form_.getProperty('name') : form_name_ = current_form_.getProperty('rel');
                
                new Request.JSON({url: base_url+"imps/"+form_name_, onComplete: function(response){ if( response ) {
                
                    $$('#current_form input[type=submit]').removeClass( 'ajax' );

                    $$('#current_form b').addClass( 'error' );
                    $$('#current_form input').removeClass( 'error_border' );
                    
                    response.insert ? ri = response.insert : ri = '';
                    
                    input_s = $$('#current_form input[type=submit]');
                    x = input_s[0].getPosition().x
                    y = input_s[0].getPosition().y
                
                    if( response.error ) {
                        $$('#current_form b').removeProperty('id');

                        response.error.each( function( el_name , i ) {
                            $$('#current_form *[name='+el_name+']').addClass( 'error_border' );
                            $$('#current_form *[name='+el_name+'_b]').addClass( 'error_border' );
                            $$('#current_form b[rel='+el_name+']').removeClass('error');
                            if( i == 0 ) $$('#current_form b[rel='+el_name+']')[0].setProperty('id', 'firsterror');
                        });
            
                        error_scroll = new Fx.Scroll(window).toElement('firsterror');
                    
                        if( $('recaptcha_widget_div') ) Recaptcha.reload();
                    }
                
                    if( response.note ) {
                        response.upload ? add_note(x,y-200,response.note + '<div class="ajax">Please wait ...</div>') : add_note(x,y-200,response.note);
                    }
                    
                    if( response.upload ) {
                    
                        if( !$('upload_progress') ) $('body_').adopt( new Element( 'div' , {'id':'upload_progress', 'class':'hide'} ) );
                
                        $('current_form').setProperties({ 'target':'upload_target' , 'enctype':'multipart/form-data' , 'method':'post' , 'action':base_url+'global/upload_file.php'});
                        $('current_form').adopt( new Element( 'input' , { 'name':'file_info', 'id':'file_info', 'type':'hidden' , 'value':response.upload } ) );
                        $('current_form').adopt( new Element( 'iframe' , { 'id':'upload_target', 'name':'upload_target', 'src':base_url+'global/upload_file.php' } ).setStyles({'width':0, 'height':0, 'border':0 }) );
                        $('current_form').submit();
                    
                        new Request.JSON({url: base_url+"global/upload_file.php", onComplete: function(file){ 
    
                            $('upload_target').addEvent( 'load' , function() {
                                
                                txt = $('upload_target').contentDocument.defaultView.document.body.innerHTML;
                                add_note( x,y-200,txt );
                                txt = (txt + '').replace(/<br>/g, '\n');
                                
                                if( !response.forward ) {
                                
                                    $('upload_progress').set( 'html' , txt );
                                    if( $('current_form') ) $('current_form').removeProperties('target', 'enctype', 'action');
                                    $('file_info').destroy();
                                    ( function() { $('upload_target').destroy(); } ).delay(50);  
                                
                                    if( ri != '' )  $(ri['into']).set( 'html' , $(ri['into']).get('html') + ri['item'] );  
                                
                                } else response.forward.contains('#') ? location.href = location.href + response.forward : location.href = response.forward;
                                
                            }); 

                        }}).post();

                    }
                    
                    if( ri != '' )  {
                      
                        $(ri['into']).set( 'html' , ri['item'] + $(ri['into']).get('html') );  
                    }
                    if( response.content ) $('content_beta_inner').set('html',response.content);
                    if( response.display ) {
                        $('display').set('html',response.display);
                        tbl_alternate(); 
                   }
                
                    if( response.cookie ) {
                        response.cookie.each( function( el , i ) {
                            Cookie.dispose( el.name );
                            Cookie.write( el.name , el.info , {duration: el.duration , path:'/'});
                        });
                    }
                    
                    if( response.hidecanvas ) {
                        $('blackout').addClass('hide');
                        $('canvas').addClass('hide');
                        if( $('pager') ) $('pager').addClass('hide');
                    }
                    if( response.refresh == 1 ) location.href = location.href;
 
                    if( response.forward && !response.upload ) response.forward.contains('#') ? location.href = location.href + response.forward : location.href = response.forward;

                    if( response.destroy ) {
                        response.destroy.each( function( el , i ) {
                            $$('*[title='+el+']').destroy();
                        });
                    }
                    
                    if( response.panel ) { panel_switch( response.panel.panel , response.panel.index ); }
                    
                    if( response.data && response.callback ) {
                        toy_montage( response.data , response.journal , response.montage );
                    }
                    
                    $('current_form').setProperty( 'id' , current_form_id );

                } else $('current_form').setProperty( 'id' , current_form_id ); 
                }}).post(current_form_);
                
                
        
            });
        
        }
        
        form_load();
        
        toy_montage_fetch = function(c,journal,montage) {
       
            ( function() {
        
            new Request.JSON({url: base_url+"imps/toys" , onComplete: function(response){ if( response ) {

                if( !response.contains("skip") )  $('montage_image').setProperty( 'src' , response + "?d=" + new Date().getTime() );
                
                $('montage_count').set('html',(c+1) + " of " + data_full.length);
                
                c++;
                
                if( c == data_full.length ) {
                
                    new Request.JSON({url: base_url+"imps/toys" , onComplete: function(response){ if( response ) {

                        $('montage_count').set('html',"Done \\o/ Save it locally if you want it, these images aren't stored!");
                        $('montage_image').setProperty( 'src' , response + "?d=" + new Date().getTime() );
                        
                        $$('input[name=generate_montage]').removeProperty('disabled');
                        
                    }}}).post({ 'act' : "resize_img" , 'width' : $$('input[name=size_w]')[0].getProperty('value') , 'height' : $$('input[name=size_h]')[0].getProperty('value') });

                } else toy_montage_fetch(c,journal,montage);

            }}}).post({ 'act' : "get_img" , 'user' : data_full[c] , 'journal' : journal , 'montage' : montage });
            
            }).delay(1000);
        
        }
        
        toy_montage = function( data , journal , montage ) {
            
            $$('input[name=generate_montage]').setProperty('disabled','disabled');
            $('montage_count').set('html',"Images incoming! If you have a lot of interests or a large friend or reading list, go make a cup of tea." );
            data_full = data;
            toy_montage_fetch( (montage == 0 ? 0 : 1) , journal , montage);
            
        }
        
        /* -- file delete -- */
        
        $$('input[type=file]').each( function(el) {
            if( el.getProperty('rel') && el.getProperty('rel') != '' ) {
                new Element( 'a' , {'href':base_url+'imps/'+el.getProperty('class') , 'name': 'delete_file' , 'rel':el.getProperty('name')+' '+el.getProperty('rel') , 'class':'delete' , 'html':"<img src='"+base_url+"static/styles/1/images/delete.png' title='Delete' />"} ).inject( el , 'after' );
            }
        })
        
        /* -- COL WRAP SIZE -- */
        /*
        $$('.col_wrap').each( function( el ) {
            cols = el.getChildren('div');
            m_height = 0;
            cols.each( function( col ) { if( col.getSize().y > m_height ) m_height = col.getSize().y; });
            cols.setStyle( 'height' , m_height );
        });
        */

        /* -- PANELS -- */
      
        
        if( $$('.panel').length > 0 ) {

            panel_li = [];
            panel_span = [];
            panel_set = [];
            panel_id = 0;
            
            cprog = $('body_').getProperty('class');
            hprog = location.hash.replace(/#/,'');

            function panel_switch( panel, segment ) {

                Cookie.dispose( 'cp'+cprog+panel );
                Cookie.write( 'cp'+cprog+panel , segment );
            
                panel_li[panel].removeClass('on');
                panel_li[panel][segment].addClass('on');
                               
                panel_span[panel].addClass('hide');
                panel_span[panel][segment].removeClass('hide');    
                 

            }
            
            $$('.panel').each( function( el , i ) {
                
                el.getChildren('span').addClass('pspan');
                
                p = -1;
            
                panel_li[i] = el.getChildren('ul')[0].getChildren('li');
                panel_span[i] = el.getChildren('span');

                panel_li[i].setProperty( 'rel' , i );
                panel_id = i;
    
                panel_li[i].each( function( elb, ib ) {
                    elb.addEvent( 'click' , function() { 
                        panel_switch(elb.getProperty('rel'),ib);
                        if( elb.getProperty( 'id' ) ) location.hash = elb.getProperty( 'id' );
                    });
                    if( elb.getProperty( 'id' ) == hprog ) p = ib;
                });

                if( p == -1 ) Cookie.read( 'cp'+cprog+i ) && panel_li[i][Cookie.read( 'cp'+cprog+i )] ? p = Cookie.read( 'cp'+cprog+i ) : p = 0;
          
                panel_switch( i , p );
            
            });
            
        }

        /* -- LOG IN REPLACE -- */
    
        if( $('log-in-form') ) {

            member_form_inp = $$("#member input[type='text']");

            function update_login() {
                 member_form_inp.each( function( el , i ) {
                    if( !el.getProperty( 'value' ) ) {
                        el.addClass( 'overtext' );
                        el.setProperty( 'value' , li_input[el.getProperty('rel')] );
                    }
                });
            }
            
            $('log-in-form-wrapper').setStyles({ 'top' : $('member').getCoordinates().bottom+1 , 'left' : $('member').getCoordinates().left  });
            $('lost-password-form-wrapper').setStyles({ 'top' : $('member').getCoordinates().bottom+1 , 'left' : $('member').getCoordinates().left  });
            
            fx_login = new Fx.Slide( 'log-in-form' , { mode:'vertical' } ).hide();
            fx_password = new Fx.Slide( 'lost-password-form' , { mode:'vertical' } ).hide();

            $('log-in').addEvent( 'click' , function(e) {
                e.stop();
                update_login();
                $('log-in-form-wrapper').removeClass('hide');
                $('lost-password-form-wrapper').addClass('hide');
                fx_password.open ? fx_password.slideOut().chain( function() { fx_login.toggle() } ) : fx_login.toggle();
            });
            
            $('lost-password').addEvent( 'click' , function(e) {
                e.stop();
                update_login();
                $('log-in-form-wrapper').addClass('hide');
                $('lost-password-form-wrapper').removeClass('hide');
                fx_login.open ? fx_login.slideOut().chain( function() { fx_password.toggle() } ) : fx_password.toggle();
            });
            
            li_input = [];
            member_form_inp.each( function( el , i ) {li_input[i] = el.getProperty( 'value' );});

            member_form_inp.addEvents({
                'focus' : function() {
                    update_login();
                    this.setProperty( 'value' , '' );
                    this.removeClass( 'overtext' );
                }
            });
            
        }

        /* -- delete -- */
        
        $$('.delete').addEvent( 'click' , function(e) {
        
            e.stop();
            x = e.client.x - 90;
            y = e.client.y - 193 + getScroll().y;
            
            add_note( x , y , "<p><a href='#' id='delete_confirm'><b>Yes, I definitely want to delete this</b></a></p><p><a href='#' id='delete_remove'>I've changed my mind!</a></p>" );

            cell_curr = this;
                
            $('delete_confirm').addEvent( 'click' , function(e) {
            
                e.stop();

                new Request.JSON({url: cell_curr.getProperty('href') , onComplete: function(response){ if( response ) {
                
                    $('note').destroy();
                    
                    if( response.forward ) {
                
                        location.href = response.forward;
                        
                    } else if( response.success == 1 ) {
                    
                        c = 0;
                        while( !cell_curr.hasClass('deletewrap') && c < 20 ) {
                            cell_curr = cell_curr.getParent();
                            c++;
                        }
                        
                        if( c == 20 && !cell_curr.hasClass('deletewrap') ) {
                            alert( "Please remember to put class 'deletewrap' in element to be deleted!" );
                            return;
                        }
                        
                        if( cell_curr.hasClass( 'show_parent' ) ) $$('rel=['+cell_curr.getProperty('name')+']').destroy();
                        
                        cell_height = cell_curr.getSize().y;
                        cell_curr.setStyle( 'height' , cell_height );

                        fade = new Fx.Morph( cell_curr , {duration: 'short', transition: Fx.Transitions.Sine.easeOut} );
                        fade.start({ opacity:[1,0] }).chain( function() {
                            cell_curr.empty();
                            fade.start({height:[cell_height,0]}).chain(function() {
                                cell_curr.destroy();
                                if( $$('.deletewrap').length == 0 ) location.href = location.href;
                            }); 
                        });
                        
                    } else if( response.success == 2 ) {

                        cell_curr.destroy();
                        
                    } else add_note( x , y , response.error );
                                
                }}}).post({ 'act' : cell_curr.getProperty( 'name' ) , 'id' : cell_curr.getProperty( 'rel' ) });

            });
            
            $('delete_remove').addEvent( 'click' , function(e) {
                e.stop();
                $('note').destroy();
            });
            
        });
             
            
        /* -- parent child -- */
        
        wysiwyg_arr = [];
        
        $$('.show_child').addClass( 'hide' );
        $$('.show_parent').addEvent( 'click' , function(e) {
            e.stop();
            
            $$('*[rel='+this.getProperty('name')+']').toggleClass('hide');
        });
        
        /* -- selectngo -- */

        $$('.selectngo').addEvent( 'change' , function() {
        
            location.href = this.getProperty('rel') + this.getProperty('value');
            return;           
        
        });
        
        /* -- a rel -- */
        
        $$('a[rel=external]').setProperty( 'target' , '_blank' );
        
        
        /* -- img thumbs -- */
        
        $$('.img_thumb p').addEvent( 'click' , function() {
        
            this.toggleClass('on');
            
            if( $('img_delete') ) {
            
                delete_img = [];
                $$('.img_thumb p.on').each( function( el , i ) { delete_img[i] = el.getProperty( 'alt' ) });
                
                $('img_delete').setProperty( 'value' , delete_img.join('|') );
            
            }
            
        });

    /* TABLE ALTERNATES */

        tbl_alternate = function() {

   		    if( $$('table.alternate' ).length > 0 ) {
        	    $$('table.alternate tr:even').addClass( 'light' );
         	    $$('table.alternate tr:odd').addClass( 'dark' );
			    $$('table.alternate tr.tblheader').removeClass('light');
          	    $$('table.alternate tr.tblheader').removeClass('dark');
   		    }
        }
        
        tbl_alternate();

        if( $('accordian') ) {
            var accordion_ = new Fx.Accordion($$('#accordian .togglers'), $$('#accordian .togglees'), { display: 0, alwaysHide: true, initialDisplayFx: false });
        }


/* -- img select -- */


        $$('.img_select').each( function(el) {$$('img[rel='+el.getProperty('name')+']')[0].setProperty( 'src', el.getProperty('value') );});
        $$('.img_select').addEvent( 'change' , function() { $$('img[rel='+this.getProperty('name')+']')[0].setProperty( 'src', this.getProperty('value') ); } );

/* -- tags -- */
        
        $('tag_send').addEvent( 'focus' , function() {
        
            new Request.JSON({url: base_url+"global/tag.php", onComplete: function(response){ if( response ) {
                
                $('tag').set( 'html' , response + $('tag').get('html') );
                                
            }}}).post({ 'tmessage' : $('tag_msg').getProperty('value') , 'tname' : $('tag_name').getProperty('value') });

        });
        
/* -- SEARCH -- */
            
            s = 0;
        
            $$('.search').addEvents({

                'keyup': function() {
                
                    this_search = this;
                    
                    if( this_search.getProperty('value') != '' && s == 0 ) {
                
                        search_delay = ( function() {
                    
                            new Request.JSON({url: base_url+"imps/"+this_search.getProperty('name'), onComplete: function(response){ if( response ) {

                                if( response.display ) {
                                    $('search_display').set( 'html' , response.display ) ; 
                                    tbl_alternate();
                                } else $('search_display').set( 'html' , 'No results found!' );
                                
                                s = 0;
                                
                            }}}).post({ 'act' : 'search' , 'value' : this_search.getProperty('value') });
                        
                        }).delay( 1000 );
                        
                        s = 1;
                    
                    }

                },
                
                'keydown': function() {
                
                    if( s == 1 ) {
                        $clear( search_delay );
                        s = 0;
                    }
                }
            
            });
            
        /* -- content paging -- */
        
        function paging() {
            
            var page_ = $$('.page');
            page_[0].removeClass('hide');
 
            if( $$('.page').length > 1 ) {
                   
                $$('.page').each( function( el , i ) { el.setProperty('rel', i) } );
                    
                for( var i = 1 ; i <= $$('.page').length ; i++ ) $('content_pages').adopt( new Element( "span" , {'html':i , 'rel':i-1 , 'class' : 'page_change' } ) );
                        
                page_change_ = $$('#content_pages span');
                page_change_[0].addClass('page_on');
                        
                $$('.page_change').addEvent( 'click' , function() {
                    page_.addClass('hide');
                    page_change_.removeClass( 'page_on' );
                    this.addClass('page_on');
                    $$('.page[rel='+this.getProperty('rel')+']').removeClass('hide');
                });
                        
            }
        }

        /* -- content display -- */
        
        if( $('content_display') ) {
        
            load_content = function(type) {
            
                var content_display_ = $('content_display').getProperty('rel');
                var show_content = [ $$('.category_on').getProperty('href').join('|').replace( /#/g , '') , $$('.tag_on').getProperty('href').join('|').replace( /#/g , '') ];
                
                $('content_display').set('html','').addClass( 'ajax' );
                $('content_pages').empty();

                new Request.JSON({url: base_url+"imps/"+content_display_ , onComplete: function(response){ if( response ) {
                
                    if( response.hide ) {
                    
                        $('content_display').addClass('hide');
                        $('content_pages').addClass('hide');
                        return;
                    
                    }
            
                    $('content_display').removeClass('hide');
                    $('content_pages').removeClass('hide');
            
                    var html = '';
                    var page = 0;
  
                    response.each( function( el , i ) {
                        
                        if( page == 0 ) html += "<div class='page hide'>";
                        
                        html += el;
                        
                        if( content_display_ == "gallery" ) {
                            if( page == 20 ) html += "</div>";
                            page == 20 ? page = 0 : page++;
                        } else {
                            if( page == 9 ) html += "</div>";
                            page == 9 ? page = 0 : page++;
                        }
                        
                    });
                
                    if( page != 0 ) html += "</div>";
                
                    $('content_display').set('html',html).removeClass('ajax');
                    
                    paging();
                
                }}}).post({ 'act' : "content_display" , 'show' :  show_content , 'type' : type  });
                
            }
            
            $$('.category').addEvent( 'click' , function(e) {
                e.stop();
                this.toggleClass('category_on');
                load_content();
            });

            $$('.tag').addEvent( 'click' , function(e) {
                e.stop();
                this.toggleClass('tag_on');
                load_content();
            });
            
            load_content(1);
            
        }
        
            
            
    },
    
    'load': function() {

        doc_size = $(document.body).getSize();
        doc_scroll_size = $(document.body).getScrollSize();
        doc_scroll = $(document.body).getScroll();
        
        $('body_').addEvent( 'click' , function() {
            if( $('note') )     $('note').destroy();
            if( $('map') )      $('map').destroy();
        });
        
        ( function() {
        
        wysiwyg_ = [];
        
        $$('.wysiwyg').each( function( el , i ) {
            if( el.getProperty('rel') == "advanced" ) wysiwyg_[i] = CKEDITOR.replace( el , { 
                uiColor : '#AAAAAA',
                toolbar : [
                    ['Source','Templates','Maximize','-','Undo','Redo'],
                    ['ShowBlocks'],
                    ['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar'],
                    ['Link','Unlink','Anchor'],
                    ['TextColor','BGColor'],
                    '/',
                    ['Bold','Italic','Underline','Strike'],
                    ['NumberedList','BulletedList'],
                    ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
                    ['Format','Font','FontSize']
                ]
            });
            else if( el.getProperty('rel') == "toy" ) wysiwyg_[i] = CKEDITOR.replace( el , { 
                uiColor : '#AAAAAA',
                toolbar : [
                    ['Source','Maximize'],
                    ['Bold','Italic','Underline','Strike','JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock','HorizontalRule','Format','Font','FontSize','TextColor']
                ]
            });
            else if( el.getProperty('rel') == "forum" || el.getProperty('rel') == "blog" ) wysiwyg_[i] = CKEDITOR.replace( el , { uiColor : '#AAAAAA' , toolbar : [ [ 'Bold', 'Italic', 'Strike' , 'Underline', '-', 'TextColor' , 'FontSize', 'Font' ,'-' , 'NumberedList','BulletedList', '-', 'Subscript','Superscript' , '-', 'Link','Unlink' , '-' , 'Image','Flash' ,  '-' , 'Smiley']] });     
            else wysiwyg_[i] = CKEDITOR.replace( el , { uiColor : '#AAAAAA' , toolbar : [ [ 'Bold', 'Italic', 'Strike' , 'Underline', '-', 'TextColor' , 'FontSize', 'Font' , '-' , 'Smiley']] });                

            if( el.getProperty('rel') != "advanced" )   CKEDITOR.config.forcePasteAsPlainText = true;

            CKEDITOR.config.height = el.getStyle('height');
            CKEDITOR.config.resize_enabled = 0;
            CKEDITOR.config.removePlugins = 'elementspath,save';
            CKEDITOR.config.pasteFromWordRemoveStyle = false; 
            CKEDITOR.config.disableNativeSpellChecker = false;
            CKEDITOR.on( 'instanceReady' , function(e) { e.editor.dataProcessor.writer.lineBreakChars = ''; });

        });  
        
        } ).delay(100);

        $$('.code').addEvent( 'keydown' , function(e) {
            if( e.key == 'tab' ) {
                e.stop();
                this.insertAtCursor("    ");
                this.setCaretPosition(this.getCaretPosition()+4);
            }
        });
        
        /* -- toys -- */
        
        if( $('tipjar') ) {
            $$('.tipjar').addEvent( 'click' , function(e) {
                e.stop();
                $('tipjar').submit();
            });
        }
        
        if( $('load_fiction') && $('load_toys_url') ) {
        
            $('load_fiction').addEvent( 'click' , function() {
            
                journal_name = $$('input[name=journal_name]')[0].getProperty('value');
                journal_password = $$('input[name=journal_password]')[0].getProperty('value');
            
                new Request.JSON({url: base_url+"imps/toys" , onComplete: function(response){ if( response ) {
            
                    CKEDITOR.instances.cchapter.setData( response );

                }}}).post({ 'act' : "load_fiction" , 'url' : $('load_toys_url').getProperty('value') , 'journal_name' : journal_name , 'journal_password' : journal_password });
            
            })
        }

        if( $('load_toys_image') ) {
        
            $('load_toys_image').addEvent( 'change' , function() {
            
                form_ = $$('form[name=toys]')[0];
                
                form_.setProperties({ 'target':'upload_target' , 'enctype':'multipart/form-data' , 'method':'post' , 'action':base_url+'imps/toys'});
                form_.adopt( new Element( 'input' , { 'name':'act', 'id':'act', 'type':'hidden' , 'value':'upload_cover' } ) );
                form_.adopt( new Element( 'iframe' , { 'id':'upload_target', 'name':'upload_target', 'src':base_url+'imps/toys' } ).setStyles({'width':0, 'height':0, 'border':0 }) );
                form_.submit();
                
                $('story_cover').set('html','');
                $('story_cover').addClass( 'ajax' );

                $('upload_target').addEvent( 'load' , function() {
                    
                    txt = $('upload_target').contentDocument.defaultView.document.body.innerHTML;
                    $('story_cover').removeClass( 'ajax' );
                    if( txt != '' ) {
                        $('story_cover').set('html', "<img src='"+txt+"?d=" + new Date().getTime() + "' />" );
                        $('scover_img').setProperty('value',txt);
                    } else $('story_cover').set('html', "<strong style='background:#C00000 ; color:#FFF ; padding:4px 6px'>Invalid file format!</strong>" );
                                
                    form_.removeProperties('target', 'enctype', 'action');
                    $('act').destroy();
                    ( function() { $('upload_target').destroy(); } ).delay(50);  
                                
                }); 
    
            });
            
        }

        if( $('load_toys_text') ) {
        
            $('load_toys_text').addEvent( 'change' , function() {
            
                form_ = $$('form[name=toys]')[0];
                
                form_.setProperties({ 'target':'upload_target' , 'enctype':'multipart/form-data' , 'method':'post' , 'action':base_url+'imps/fiction'});
                form_.adopt( new Element( 'input' , { 'name':'act', 'id':'act', 'type':'hidden' , 'value':'upload_chapter' } ) );
                form_.adopt( new Element( 'iframe' , { 'id':'upload_target', 'name':'upload_target', 'src':base_url+'imps/fiction' } ).setStyles({'width':0, 'height':0, 'border':0 }) );
                form_.submit();

                $('upload_target').addEvent( 'load' , function() {
                    
                    txt = $('upload_target').contentDocument.defaultView.document.body.innerHTML;
                    CKEDITOR.instances.cchapter.setData(txt );
                                
                    form_.removeProperties('target', 'enctype', 'action');
                    $('act').destroy();
                    ( function() { $('upload_target').destroy(); } ).delay(50);  
                                
                }); 
    
            });
            
        }
        
        
        /* -- fiction -- */
        
        if( $('load_fiction') && $('load_fiction_url') ) {
        
            $('load_fiction').addEvent( 'click' , function() {
            
                new Request.JSON({url: base_url+"imps/fiction" , onComplete: function(response){ if( response ) {
            
                    CKEDITOR.instances.cchapter.setData( response );

                }}}).post({ 'act' : "load_fiction" , 'url' : $('load_fiction_url').getProperty('value') });
            
            })
        }

        if( $('load_fiction_chapter') ) {
        
            $('load_fiction_chapter').addEvent( 'change' , function() {
            
                form_ = this.getParent().getParent().getParent();
                
                form_.setProperties({ 'target':'upload_target' , 'enctype':'multipart/form-data' , 'method':'post' , 'action':base_url+'imps/fiction'});
                form_.adopt( new Element( 'input' , { 'name':'act', 'id':'act', 'type':'hidden' , 'value':'upload_chapter' } ) );
                form_.adopt( new Element( 'iframe' , { 'id':'upload_target', 'name':'upload_target', 'src':base_url+'imps/fiction' } ).setStyles({'width':0, 'height':0, 'border':0 }) );
                form_.submit();

                $('upload_target').addEvent( 'load' , function() {
                    
                    txt = $('upload_target').contentDocument.defaultView.document.body.innerHTML;
                    CKEDITOR.instances.cchapter.setData(txt );
                                
                    form_.removeProperties('target', 'enctype', 'action');
                    $('act').destroy();
                    ( function() { $('upload_target').destroy(); } ).delay(50);  
                                
                }); 
    
            });
            
        }

        /* -- gallery -- */
        
        if( $('delete_pictures') ) { 
            $('delete_pictures').addEvent( 'click' , function() {
                var delete_pics = $$('input[name^=pid]:checked').getProperty('value').join("|");
                if( delete_pics.length > 0 ) {
                    new Request.JSON({url: base_url+"imps/gallery" , onComplete: function(response){ if( response ) { location.href = location.href; }}}).post({ 'act' : "delete_pictures" , 'imgs' : delete_pics });
                }
            });
        }
        
        if( $('upload_images') ) {
        
            function toggle_images() {
            
                $$('.upl_img_wrap').addEvent( 'click' , function() {
                
                    this.toggleClass( 'upl_img_wrap_on' );
                    
                    $('sel_pictures').setProperty( 'value' , $$('.upl_img_wrap_on').getProperty( 'rel' ).join('|') );
                
                });
            
            }
            
            function load_delete() {
                
                $$('.upl_img_wrap img').addEvent( 'click' , function(e) {
                
                    e.stop();
                    
                    var image = this.getParent();
                
                    new Request.JSON({url: base_url+"imps/gallery" , onComplete: function(response){ if( response ) {
            
                        image.destroy();
                        
                        if( $$('.upl_img_wrap').length == 0 ) $('upload_options').addClass('hide');
                
                    }}}).post({ 'act' : "delete_picture" , 'img' : image.getProperty('rel') });
                
                });
            
            }
        
            $('upload_images').addEvent( 'change' , function() {
            
                form_ = this.getParent().getParent().getParent();
                
                form_.setProperties({ 'target':'upload_target' , 'enctype':'multipart/form-data' , 'method':'post' , 'action':base_url+'imps/gallery'});
                form_.adopt( new Element( 'input' , { 'name':'act', 'id':'act', 'type':'hidden' , 'value':'upload_images' } ) );
                form_.adopt( new Element( 'iframe' , { 'id':'upload_target', 'name':'upload_target', 'src':base_url+'imps/gallery' } ).setStyles({'width':0, 'height':0, 'border':0 }) );
                form_.submit();
                
                $('display').addClass( 'ajax' );

                $('upload_target').addEvent( 'load' , function() {
                    
                    var txt = $('upload_target').contentDocument.defaultView.document.body.innerHTML;
                    
                    $('display').removeClass( 'ajax' );
                    
                    if( txt != "" ) {
                    
                        var images = JSON.decode( txt );
                    
                        $('display').set('html', $('display').get('html').replace(/Your upload could not be processed!/,'') + "<div class='upl_img_wrap' rel='"+images[0]+"' style='background-image:url("+images[0]+")' /><img src='"+base_url+"static/styles/1/images/delete.png' /></div>" );
                    
                        if( images.length > 1 ) {
                    
                            var stagger_count = 1;
                    
                            var stagger = ( function() {
                    
                                $('display').set('html', $('display').get('html') + "<div class='upl_img_wrap' rel='"+images[stagger_count]+"' style='background-image:url("+images[stagger_count]+")' /><img src='"+base_url+"static/styles/1/images/delete.png' /></div>" );
                        
                                stagger_count++;
                       
                                if( stagger_count == images.length ) {
                                    $clear(stagger);
                                    $('upload_options').removeClass('hide');
                                    toggle_images();
                                    load_delete();
                                }
                                
                            }).periodical( 1000 );
                    
                        } else {
                            $('upload_options').removeClass('hide');
                            toggle_images();
                            load_delete();
                        }
                        
                    } else {
                        
                        $('display').set( 'html', "Your upload could not be processed!" );
                        $('upload_options').addClass('hide');
                        
                    }
                    
                    form_.removeProperties('target', 'enctype', 'action');
                    $('act').destroy();
                    ( function() { $('upload_target').destroy(); } ).delay(50);  
                                
                }); 
    
            });
            
        }
        
    }, 
    
    'unload': function() {
    },
    
    'resize': function() {
    }
    
});
