

var Bosch = {
    
    noop: function() {},
    
    libraries: [],
    scripts: [],
    
    basePath: '',
    forceWrite: true,
    
    service: null,
    
    addLibraries: function(libraries) {
        var src = libraries;
        if (typeof libraries == 'string') src = libraries.split(',');
        for (var i in src) {
            this.addLibrary(src[i]);
        }
    },
    
    addScripts: function(scripts) {
        var src = scripts;
        if (typeof scripts == 'string') src = scripts.split(',');
        for (var i in src) {
            this.addScript(src[i]);
        }
    },
    
    addLibrary: function(library) {
        this.libraries.push(library);
    },
    
    addScript: function(script) {
        this.scripts.push(script);
    },
    
    createScript: function(uri, callback) {
        callback = callback || this.noop;
        
        var script = document.createElement('script');
        script.type = 'text/javascript';
        
        if (script.readyState) {
            script.onReadyStateChange = function() {
                if (script.readyState == 'loaded' || script.readyState == 'complete') {
                    script.onReadyStateChange = null;
                    callback();
                }
            };
        } else {
            script.onLoad = function() {
                callback();
            }
        }
        
        script.src = uri;
        return script;
    },
    
    init: function(service) {
        
        this.service = service;
        
        for (var n in this.libraries) {
            // ensure that libraries are written by document.write to prevent an uncommon initial loading error sometimes occurs on chrome & ie
            document.write('<script type="text/javascript" src="' + this.libraries[n] + '"></script>');
        }
        
        if (service) {
            this.createScript(this.service + this.scripts.join(','));
            return;
        }
        
        var createdScripts = [], crs;
        for (var i in this.scripts) {
            if (this.forceWrite) {
                document.write('<script type="text/javascript" src="' + this.scripts[i] + '"></script>');
            } else {
                crs = this.createScript(this.scripts[i]);
                createdScripts.push(crs);
            }
        }
        
        if (this.forceWrite) return;
        
        window.onload = function() {
            for (var n in createdScripts) {
                document.getElementsByTagName('head')[0].appendChild(createdScripts[n]);
            }
        }
    }
};
           
//Bosch.addLibraries(['jquery-v142min.js']);
Bosch.addScripts([
// Library
      '/media/_tech_ubk/js_ubk/jquery1_6_1.js',
      '/media/_tech/videoplayer/jquery_player/jqueryui186custommin.js',
// SWF and Videoplayer      
      '/media/_tech/layout/js/swf/swfobject~1.js',
      '/media/_tech/videoplayer/jquery_player/boschvideoplayer.js',
      '/media/_tech/videoplayer/jquery_player/boschvideoplayerlangde.js',
      '/media/_tech/videoplayer/jquery_player/boschplayercaption.js',
      
// Plugin Carousel     
      '/media/_tech/layout/js/jquery/jqueryjcarousel.js',   
// Overlay Gallery and HTML      
      '/media/de/_tech_ubk/js_ubk/thickbox.js', 
// Video anf Flash      
      '/media/_tech/layout/js/swf/swfaddress.js',
// Plugin roundcorner      
      '/media/_tech/layout/js/jquery/jquerycorner.js',
      
      '/media/_tech/layout/js/functions.js',
// Overlay Videoplayer
      '/media/_tech/layout/js/jquery/jqueryfancybox134.js',
// Plugin TagCloud     
   //   '/media/_tech/layout/js/jquery/jquerymousewheelmin.js',
   //   '/media/_tech/layout/js/jquery/jquerytagsphere.js',
// Flyout and Main Menue RO     
      '/media/_tech/layout/js/jquery/hoverintent.js',
      '/media/_tech/layout/js/jquery/jsflyout.js',
// Slider NewsModul
   '/media/_tech_ubk/js_ubk/jquerysliderUBK.js',
// Expandable Box
   '/media/_tech_ubk/js_ubk/copy_expandable.js',
   // Tooltip Plugin
   '/media/_tech/layout/js/jquery/jquerytooltipWCMS.js', 
   // Plugin Stage AutoFade
   '/media/_tech_ubk/js_ubk/jquerystageAutoFade.js',  
// Main Functions and Eventhandling      
      '/media/_tech_ubk/js_ubk/jQFunctions_ubk.js',
// Fixes IE      
      '/media/_tech_ubk/js_ubk/behaviour.js'
      
]);

Bosch.init();
