YUI().use('event-custom', 'node', 'json-parse', function(Y) {
	Y.on('domready', function() {
		// set default ID for production sites
		var moduleRevision = 5;
			
		// determine base path
		var jsondata = '',
			basepath = '';
		if (Y.one('#jsondata')) {
			jsondata = Y.JSON.parse(Y.one('#jsondata').get('value'));
			basepath = jsondata.basepath;
			
			// for controlling YUI lazy loading caching
			if (typeof jsondata.environment !== "undefined" && jsondata.environment == "development") {
				// avoid caching
				moduleRevision = Math.floor(Math.random()*100000);
			}
		}
	    Y.log('using basepath: ' + basepath);

		var configObj = {
			insertBefore:'styleoverrides',
			modules: {
				'webkit': {
					fullpath: basepath + 'nm_webkit/libs/webkit.js?wk=' + moduleRevision
				},
				'prototype': {
					fullpath: 'https://ajax.googleapis.com/ajax/libs/prototype/1.7.0/prototype.js?wk=' + moduleRevision
				},
				'scriptaculous': {
					fullpath: 'https://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/effects.js?wk=' + moduleRevision
				},
				'modalbox': {
					requires: ['modalboxcss'],
					fullpath: basepath + 'nm_webkit/libs/modalbox/modalbox.js?wk=' + moduleRevision
				},
				'modalboxcss': {
					fullpath: basepath + 'nm_webkit/libs/modalbox/modalbox.css?wk=' + moduleRevision,
					type: 'css'
				},
				'storenew_css': {
					fullpath: basepath + 'nm_webkit/CSS/store_defaultsnew.css?wk=' + moduleRevision,
					type: 'css'
				},
				'storenew': {
					fullpath: basepath + 'nm_webkit/libs/storenew.js?wk=' + moduleRevision,
					requires: ['storenew_css']
				},
				'storeold_css': {
					fullpath: basepath + 'nm_webkit/CSS/store_defaults.css?wk=' + moduleRevision,
					type: 'css'
				},
				'storeold': {
					fullpath: basepath + 'nm_webkit/libs/store.js?wk=' + moduleRevision,
					requires: ['storeold_css']
				},
				'jplayer': {
					fullpath: basepath + 'nm_webkit/libs/jplayer/jquery.jplayer.min.js?wk=' + moduleRevision,
					requires: ['jquery', 'soundclips-mobile']
				},
				'jquery': {
					fullpath: 'https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js?wk=' + moduleRevision
				},
				'swfobject': {
					fullpath: basepath + 'nm_webkit/libs/swfobject1-5/swfobject.js?wk=' + moduleRevision
				},
				'soundclips-mobile': {
					fullpath: basepath + 'nm_webkit/libs/soundclips.js?wk=' + moduleRevision
				},
				'lightwindow': {
					requires: ['lightwindowcss'],
					fullpath: basepath + 'nm_webkit/libs/lightwindow/javascript/lightwindow.js?wk=' + moduleRevision
				},
				'lightwindowcss': {
					fullpath: basepath + 'nm_webkit/libs/lightwindow/css/lightwindow.css?wk=' + moduleRevision,
					type: 'css'
				},
				'localjs': {
					fullpath: basepath + 'js/main.js?wk=' + moduleRevision
				}
			}
		}
	
		Y.log('start webkit load');
		// subscribe to webkit init event	
		Y.Global.on('webkitevent:init', function() {	
			Y.log('webkit inited');

			YUI(configObj).use('localjs', function(localY) { 
				// all stuff that requires the DOM to be loaded should be invoked locally
				localY.log('localjs loaded');
				webkit.localjsloaded = true;
				webkit.customevent.fire('localjs:init');
			});	
		});
	
		configObj.loadModules = ['prototype', 'scriptaculous', 'webkit', 'modalbox'];
		
		var depends = document.getElementsByName('nmdepend');
		for (i=0; i < depends.length; i++) {
			Y.log('add ' + depends[i].content + ' to webkit core');
			configObj.loadModules.push(depends[i].content);		
		}
	    
		YUI.use.apply(YUI(configObj), configObj.loadModules, function(localY) {
			localY.log('webkit core loaded');
		});
	});	
});
