| /* webfan (C) Till Wehowski, Webfan.de - All rights reserved. */
var Boot = function(scope, require, webfan, global, jQuery){
 	var Scope = scope || global.frdl;
    var main = Scope.main = this;
    
    global.frdl = window.frdl = Scope;
    global.webfan = window.webfan = webfan;
     
 
main.state = new Scope.EventEmitter();
/**
e.g. main.dependency.add('module $frdl.inX loaded');
*/
main.dependency = main.state.required([
      //   'loading',
         'ready',          
         'complete',  
         'load flow',  
         'module $1:libraries/angular/angular loaded' ,
         'module $frdl.UI loaded'
         
 ], function (dataArray) {
 
  try{
  	   frdl.UI.emitter.emit('dependency.resolved', dataArray, main);
  }catch(err){
  	console.error(err);
  }
  
  
                
}, main);    
require.state.on('resolved', function(){
	 main.state.emit('module $'+arguments[0].identifier+' loaded', arguments[0]);
}); 
frdl.require.state.emit('resolved', {
	identifier : 'frdl.main',
	module : frdl.main
});
frdl.require.state.emit('resolved frdl.main', {
	identifier : 'frdl.main',
	module : frdl.main
});
require('common/json2', function(JSON) {
  JSON = JSON;
  if('undefined' === typeof global.JSON || 'undefined' === typeof global.JSON.parse || 'undefined' === typeof global.JSON.stringify)global.JSON=window.JSON=JSON;
});
 
 
 
 
 
 
 frdl.require('url', function(url) {
         Scope.url = global.frdl.url = url;
 }); 
 
 
 
 
   	
 require('1:libraries/angular/angular', function(angular) {
	 
		try
		{
			Object.defineProperty(Scope, 'a',
				{
					'get':function()
					{
						return window.angular;
					}
				});
				
		}catch (e){
			Scope.a = window.angular;
		}	 
  });
   
require('webfan/navigator/WebkitWebfanStorage', function(mod){     
         Scope.$S = mod;
        
          Scope.$DB = new Scope.$S({
  	           prefix : 'frdl://$S/schema.info/',
  	           user :null,
	           crypt : false,
	           pwd :  null
         }, false);  
         
  
  require.state.emit('resolved', {
	  identifier : 'frdl.$DB',
	  module :frdl.$DB
  });
  require.state.emit('resolved frdl.$DB', {
	  identifier : 'frdl.$DB',
	  module : frdl.$DB
  });       
         
         
         
   try{
 	var debugmode = parseInt( frdl.$DB.load('settings/debugmode').toString() );
	if(!debugmode || isNaN(debugmode))debugmode=0;
  } catch(err){
   	  var debugmode = 0;
   }
    frdl.debug.mode(debugmode);  
	
	  	frdl.ready(function(){
		    webfan.$Async(function(){
		    	if(0<frdl.debug.mode()){
   	               if('undefined'!==frdl.alert)frdl.alert.log('DEBUG ENABLED ('+frdl.debug.mode()+')');	
   	            }  
             },3000); 
	  	});
		        
              
});
   
   
require('webfan/navigator/dom-observer', function(DOMObserver){
  Scope.watchFor = new DOMObserver().watchFor;
 
 
 
  frdl.require('1:ui/frdlui', function(){
       webfan.$Async(function(){
         frdl.UI.emitter.once('dependency.resolved', function(){
             if(1<frdl.debug.mode())console.log('dependency.resolved => frdl.main.state.emit');
          });		
       },1); 
			 		
   main.state.emit('load flow', arguments[0]);
 });	
});
 
 
 
	 try
	   {
		   Object.defineProperty(Scope, 'sql',
				{
					'get':function()
					{
						return Scope.require('webfan/ql');
					}
				});
		}catch (e){
			Scope.require('webfan/ql', function(sql){
				Scope.sql =sql; 
			});
		}
	 try
	   {
		   Object.defineProperty(Scope, 'cipher',
				{
					'get':function()
					{
						return Scope.require('sjcl/sjcl');
					}
				});
		}catch (e){
			Scope.require('sjcl/sjcl', function(cipher){
				Scope.cipher =cipher; 
			});
		}	
	
	
	
	 try
	   {
		   Object.defineProperty(Scope, 'util',
				{
					'get':function()
					{
						return Scope.require('util');
					}
				});
		}catch (e){
			Scope.require('util', function(util){
				Scope.util =util; 
			});
		}
	
	
require('webfan/navigator/simpledialog', function(alertify) {
	 Scope.alert = alertify; 
});
require('webfan/navigator/anchor-routing', function(HashHandler) {
     Scope.Hash = HashHandler; 
     
     
   require.state.emit('resolved', {
	  identifier : 'frdl.Hash',
	  module :frdl.Hash
  });
  require.state.emit('resolved frdl.Hash', {
	  identifier : 'frdl.Hash',
	  module : frdl.Hash
  });    
});
webfan.$Async(function(){
 require('5:http://'+frdl.route('HOST_CDN_PUBLIC_FRDL')+'/cdn/frdl/flow/components/locale/jsin/jsin.js', function(Translator) {
	
   Scope.inX = Translator; 
    
   webfan.$Async(function(){
   	 Scope.inX.start();
   },250); 
     
     
  require.state.emit('resolved', {
	  identifier : 'frdl.inX',
	  module :frdl.inX
  });
  require.state.emit('resolved frdl.inX', {
	  identifier : 'frdl.inX',
	  module : frdl.inX
  });
		     
     
 });
},1);
frdl.formatBytes = function(bytes,decimals) {
   if(bytes == 0) return '0 Byte';
  // var k = 1000; // or 1024 for binary
   var k = 1024;
   var dm = decimals + 1 || 3;
   var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
   var i = Math.floor(Math.log(bytes) / Math.log(k));
   return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
};
//deprectaed...
  webfan.plug('$fs --local', function(){
      	  if(!!frdl.nw){
		   	 return require('fs');
		  } 
		   
		   return frdl.fs5.polyfill.getFiler();	
  });
  webfan.plug('$fs --local root', function(){
 		 	 try{
			 	 return webfan['$fs --local']().fs.root.toURL();
			 }catch(err){
			 	 return document.base || window.location.href; 
			 }  
  });
         
  webfan.plug('file://', function(){
		 	 try{
			 	 return webfan['$fs --local']().fs.root.toURL();
			 }catch(err){
			 	 return document.base || window.location.href; 
			 }
  });
  webfan.plug('app://', function(){
      	try{
			if('temp' === arguments[0])return webfan['$fs --local']('temp').fs.root.toURL();
			return webfan['$fs --local']().fs.root.toURL();
		}catch(err){
			return window.location.href;
		}
      	   
   });    
  webfan.plug('path.exec', function(){
		 	 try{
			 	 return webfan['$fs --local']().fs.root.toURL();
			 }catch(err){
			 	 return document.base || window.location.href; 
			 }
  });
        
        
        
        
       webfan.plug('$win open', function(){
      	    return window.open(arguments[0][0]);
      });       
        
        
//buggy ..._
//require('http://'+frdl.route('HOST_CDN_PUBLIC_FRDL')+'/cdn/frdl/flow/components/webfan/workspace/js/win.js', function(){
//	
//});
 return this;
};
	
	
	
	
	
	
	
	
Boot.prototype.ready = function(){
	if(1<frdl.debug.mode())console.log('<boot>.ready()');
	this.state.emit('ready', this);
};
	
Boot.prototype.interactive = function(){
	// if(1<frdl.debug.mode())console.log('<boot>.interactive()');
};
	
Boot.prototype.complete = function(){
	if(1<frdl.debug.mode())console.log('<boot>.complete()');
	this.state.emit('complete', this);
};
    
	
Boot.prototype.loading = function(){
	//if(1<frdl.debug.mode())console.log('<boot>.loading()');
//	this.state.emit('loading', this);
};
    
 
    
    
exports = module.exports = Boot;
 |