
var deps = {

  'Core': {

    'Core': {

      'deps': ['Core']

    },

    'Meteora': {

      'deps': ['Core', 'Element.Event', 'Remote.Ajax']

    },

    'Jsonrpc': {

      'deps': ['Core', 'Core.Meteora']

    }

  },

  'Class': {

    'Class': {

      'deps': ['Core']

    },

    'Extras': {

      'deps': ['Core', 'Class.Class', 'Array', 'Function']

    }

  },

  'Native': {

    'Array': {

      'deps': ['Core']

    },

    'String': {

      'deps': ['Core']

    },

    'Function': {

      'deps': ['Core']

    },

    'Number': {

      'deps': ['Core']

    },

    'Element': {

      'deps': ['Array', 'String', 'Function', 'Number', 'Class.Class']

    }

  },

  'Element': {

    'Event': {

      'deps': ['Element']

    },

    'Filters': {

      'deps': ['Element']

    },

    'Selectors': {

      'deps': ['Element.Filters']

    },

    'Form': {

      'deps': ['Element']

    },

    'Dimensions': {

      'deps': ['Element']

    }

  },

  'Window': {

    'DomReady': {

      'deps': ['Element.Event']

    },

    'Size': {

      'deps': ['Element']

    }

  },

  'Fx': {

    'Base': {

      'deps': ['Class.Extras', 'Element']

    },

    'CSS': {

      'deps': ['Fx.Base']

    },

    'Style': {

      'deps': ['Fx.CSS']

    },

    'Styles': {

      'deps': ['Fx.CSS']

    },

    'Elements': {

      'deps': ['Fx.CSS']

    },

    'Scroll': {

      'deps': ['Fx.Base', 'Element.Event', 'Element.Dimensions', 'Window.Size']

    },

    'Slide': {

      'deps': ['Fx.Base']

    },

    'Transitions': {

      'deps': ['Fx.Base']

    },

    'Visual': {

      'deps': ['Fx.Base', 'Fx.Style', 'Element.Dimensions', 

			   'Window.Size', 'Fx.Transitions', 'Fx.Styles']

    }

  },

  'Drag': {

    'Base': {

      'deps': ['Class.Extras', 'Element.Event']

    },

    'Move': {

      'deps': ['Drag.Base', 'Element.Dimensions']

    }

  },

  'Remote': {

    'XHR': {

      'deps': ['Class.Extras', 'String']

    },

    'Ajax': {

      'deps': ['Remote.XHR', 'Element.Form']

    },

    'Cookie': {

      'deps': ['Core', 'Array', 'String', 'Function', 'Number']

    },

    'Json': {

      'deps': ['Core', 'Array', 'String', 'Function', 'Number']

    },

    'Remote': {

      'deps': ['Remote.XHR', 'Json']

    },

    'Assets': {

      'deps': ['Element.Event']

    }

  },

  'Plugin': {

    'Hash': {

      'deps': ['Element']

    },

    'Hash.Cookie': {

      'deps': ['Hash', 'Cookie', 'Json']

    },

    'Color': {

      'deps': ['Element']

    },

    'Scroller': {

      'deps': ['Class.Extras', 'Element.Event', 'Element.Dimensions']

    },

    'Slider': {

      'deps': ['Drag.Base', 'Element.Dimensions']

    },

    'SmoothScroll': {

      'deps': ['Fx.Scroll']

    },

    'Sortables': {

      'deps': ['Class.Extras', 'Element.Event', 'Element.Dimensions']

    },

    'Tips': {

      'deps': ['Class.Extras', 'Element.Event', 'Window.Size']

    },

    'Group': {

      'deps': ['Class.Extras', 'Element']

    },

    'Accordion': {

      'deps': ['Fx.Elements', 'Element.Event']

    }

  },

  'Control': {

    'Calendar': {

      'deps': ['Core.Meteora', 'Control.Toolbox', 'Control.Spinbutton']

    },

    'Toolbox': {

      'deps': ['Core.Meteora', 'Drag.Move']

    },

    'Spinbutton': {

      'deps': ['Core.Meteora']

    },

    'Autocomplete': {

      'deps': ['Core.Meteora', 'Control.Toolbox', 'Element.Dimensions']

    },

    'Datagrid': {

      'deps': ['Core.Meteora']

    },

    'Dialog': {

      'deps': ['Core.Meteora']

    },

    'Editor': {

      'deps': ['Core.Meteora', 'Control.Notebook', 'Window.Size']

    },

    'Notebook': {

      'deps': ['Core.Meteora', 'Plugin.Sortables', 'Fx.Scroll']

    },

    'Form': {

      'deps': ['Core.Meteora', 'Core.Jsonrpc', 'Fx.Visual', 'Control.Toolbox', 'Control.Dialog']

    },

    'Menu': {

      'deps': ['Core.Meteora']

    },

    'Searchlist': {

      'deps': ['Core.Meteora']

    },

    'Selection': {

      'deps': ['Core.Meteora', 'Drag.Move']

    },

    'Popup': {

      'deps': ['Core.Meteora', 'Drag.Move']

    },

    'Panel': {

      'deps': ['Core.Meteora']

    },

    'Filebrowser': {

      'deps': ['Core.Meteora']

    }

  }

}



// Meteora's webroot

var $root = null;



var scripts = document.getElementsByTagName('script');

for (var i = 0; i < scripts.length; i++) {

  if (scripts[i].src.match(/.*meteora.js$/)) {

    var $root = scripts[i].src.replace(/meteora\.js/, '');

  }

}



// Media directory

var $mediaDir = $root+'/media/';



// CSS directory

var $cssDir = $root+'/css/';



// Libraries directory

var $libDir = $root+'/lib/';



var $included = new Array();



document.__scripts = {};



var https_ones = false;



var $lib = function(name, resolve) {

	if( https_ones == true )

		return;

	/*

	if( "https:" == document.location.protocol )

	{

		https_ones = true;

   	     document.write('<script type="text/javascript" src="https://www.bubok.es/usr/webroot/js/compress.php?src=Core.Core,Native.Array,Native.String,Native.Function,Native.Number,Class.Class,Native.Element,Element.Event,Class.Extras,Remote.XHR,Element.Form,Remote.Ajax,Core.Meteora,Fx.Base,Fx.CSS,Fx.Style,Fx.Styles,Element.Dimensions,Fx.Transitions,Fx.Visual,Window.Size"></script>');

		 return;

	}*/



 

  var load = [];



  if (name.match(/\./) == null) {

    if (name == 'Core') {

      name = 'Core.Core';

    } else {

      name = 'Native.'+name;

    }

  }



  if (typeof document.__scripts[name] == 'undefined') {

    var path = name.split('.');



    var script = deps[path[0]][path[1]];

    if (script) {

      document.__scripts[name] = true;

      for (var i = 0; i < script['deps'].length; i++) {

        var dep = script['deps'][i];

        if (typeof document.__scripts[dep] == 'undefined') {

          var depends = $lib(dep, true);

          for (var j = 0; j < depends.length; j++) {

            load.push(depends[j]);

          }

        }

      }

      var name = path[0]+'.'+path[1];

      load.push(name);

    }

  }



  if (resolve == true) {

    return load;

  } else {

	

    if (document.jscompressor) {

      load = load.join(',');

      if (load) {

        document.write('<script type="text/javascript" src="'+document.jscompressor+'?src='+load+'"></script>');

      }

    } else {
		if( "https:" == document.location.protocol )
		{
			$libDir = "https://www.bubok.es/js/lib/";
		}
		
     	 for (var i = 0; i < load.length; i++) {

        	document.write('<script type="text/javascript" src="'+$libDir+load[i].replace('.', '/')+'.js"></script>');

	  	}

    }

  }

}



// Loading Meteora's core.

$lib('Core.Meteora');


