- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
(function() {
	var appBase = function( appId ) {
 		appId = appId || Math.floor( Math.random() * ( 1000 - 1 ) + 1 );
 		this.stack = {
 			methods: [ ],  extends: { },
 			init: function( cfg ) {
 				this.creator( cfg );
				this.bootstrap();
 			},
			bootstrap: function() {
				this.methods.init = null;
				var param = new Object();
 				param.app = this.methods, 
				param.opt = this.setup;
				param.__proto__ = null;
				for( var i in this.setup.inits ) {
					this.methods[ this.setup.inits[i] ].apply( param );
				};	
			},
			creator: function( cfg ) {
				for( var mtd in cfg ) {
 					var flag = cfg[ mtd ].options[ 1 ] || null,
						name = cfg[ mtd ].options[ 0 ] + "",
						func = cfg[ mtd ].func;
					this.methods[ name ] = func;
					this.methods[ name ].name = name;
					if( flag ) {
 					flag = flag.split('|');
						if( flag[0] ) {
							switch( flag[0] ) {
								case 'init': this.setup.inits.push( name ); break;
								case 'defer': 
									this.setup.defer.push( name );
									this.setupTimer( [ flag[ 1 ], name, flag[ 2 ] - 0 ] );
								break;
							};
						};
					};
				};
			},
			setupTimer: function( opt ) {
 				var tf = this.setup.timer[ opt[1] ],
					tt = this.methods[ opt[1] ],
					tm = opt[ 2 ] || 500;
 				switch( opt[0] ) {
					case 'interval': tf = setInterval( tt, tm ); break; 
					case 'timeout':  tf = setTimeout( tt, tm ); break;
				};
 
			},
			flushTimer: function( id ) {
				clearInterval( this.setup.defer[ id ] );
				console.log( 'Interval '+ id +' Stoped!');
			},
			setup: {
				appId: 'BiO Kernel' + appId, param: [ ], inits: [ ], defer: [ ],timer: [ ], flags: { }
			}
		};
		this.stack.__proto__ = null; this.__proto__ = null;
	};
		var application = new appBase();
		var	app = application.stack;
		var cfg = [
			{ 
				func: function() {
					console.log( 'RUN [mtd_1] AT [init stage] => force [mtd_3]' );
					this.app['mtd_3'].apply(this);
				},
				options: [ 'mtd_1' , 'init' ]
			},
			{ 
				func: function() {
					console.log( 'RUN [mtd_2] AT [init stage]' );
				},
				options: [ 'mtd_2' , 'init' ]
			},
			{ 
				func: function() {
 
					console.log( 'RUN [mtd_3] BY [mtd_1] FROM [init stage]' );
				},
				options: [ 'mtd_3' ]
			},
			{ 
				func: function() {
					console.log( 'run defered method #1 in timeout' );
				},
				options: [ 'deferedMethod_1', 'defer|timeout|8500' ]
			},
			{ 
				func: function( ) {
					console.log( 'run defered method #2 in interval' );
				},
				options: [ 'deferedMethod_2', 'defer|interval|500' ]
			},
		];
		app.init( cfg, true ); 
})();
                                     
        
            Съебаться из страны не получилось ): Оно не взламывалось вообще ... лимон так и не дали, а в жопу выебали через кого-то.