/**
 * Copyright 2011, http://com-a-tec.de/
 * @author	Alexander All
 * @package	TYPO3
 * @subpackage	tx_eventdirectory
 * Date: Mon Feb 21 2011
 */
var Loader = {
		
	baseUrl: $('base').attr('href'),
	
	conf: {
		opacity:		'10',
		layerId:		'popup',
		wrapperId:		'containerFrame',
		speed:			'fast',
		imgPath:		'typo3conf/ext/event_directory/Resources/Public/Icons/',
		loaderId:		'loader',
		loaderImg:		'loader.gif',
		loaderWidth:	'32',
		loaderHeight:	'32'
	},
		
	/**
	 * Startet den Ladenvorgang
	 */
	initialization: function() {
		Loader.loadLibrary();
		Loader.loadController();
		Loader.loadModel();
		Loader.startInits();
		Loader._IECornerFix();
	},
	
	/**
	 * Startet die init's der geladenen Klassen
	 */
	startInits: function() {
		Language.loadLL();
		IndexController.initializeAction();
		ProfileController.attachEvents();
		CategoryController.attachEvents();
		PollController.attachEvents();
		FlightController.attachEvents();
		RegistrationController.initializeAction();
		RequestController.attachEvents();
		
	},

	/**
	 * Laden von benötigten JS-Bibliotheken
	 */
	loadLibrary: function() {
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Library/Functions.js');
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Library/eID.js');
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Library/Table.js');
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Library/Language.js');
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Library/jquery/jquery-ui-1.8.10.js');
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Library/jquery/jquery.corner.js');
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Library/tinymce/jquery.tinymce.js');
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Library/jquery/jquery.tipsy.js');
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Library/TemplateParser.js');
	},
	
	/**
	 * Laden von benötigten JS-Controlleren
	 */
	loadController: function() {
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Controller/IndexController.js');
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Controller/ProfileController.js');
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Controller/CategoryController.js');
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Controller/TinymceController.js');
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Controller/PollController.js');
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Controller/FlightController.js');
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Controller/RequestController.js');
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Controller/RegistrationController.js');
	},
	
	/**
	 * Laden von benötigten JS-Models
	 */
	loadModel: function() {
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Model/CompanyModel.js');
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Model/CategoryModel.js');
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Model/PollModel.js');
		Loader.include('typo3conf/ext/event_directory/Resources/Public/Scripts/Model/FlightModel.js');
	},	
		
	/**
	 * Includiert eine JS-Datei
	 * 
	 * @param	String		file
	 */
	include: function (file) {
	    $('head').append($('<script type="text/javascript" src="'+Loader.baseUrl+file+'"></script>'));
	},

	/**
	 * Legt eine transparente DIV-Box über den Screen 
	 */
	showLayer: function(callback) {
		$('body').append($('<div id="'+Loader.conf.layerId+'" style="display: none;"></div>'));
		Div.opacity('#'+Loader.conf.layerId, Loader.conf.opacity).css({"height":  screen.height > $('#'+Loader.conf.wrapperId).height() ? screen.height : $('#'+Loader.conf.wrapperId).height()});
		$('#'+Loader.conf.layerId).fadeIn(Loader.conf.speed, callback);
	},

	/**
	 * Schließt die transparente DIV-Box
	 */
	closeLayer: function() {
		$('#'+Loader.conf.layerId).fadeOut(Loader.conf.speed).remove();
	},

	/**
	 * Zeigt die Loader.gif an
	 */
	showLoader: function(callback) {
		$('body').append($('<img src="'+Loader.baseUrl+Loader.conf.imgPath+Loader.conf.loaderImg+'" width="'+Loader.conf.loaderWidth+'" height="'+Loader.conf.loaderHeight+'" alt="" id="'+Loader.conf.loaderId+'" style="display: none;" />'));
		$('#'+Loader.conf.loaderId).fadeIn(Loader.conf.speed, callback);
	},

	/**
	 * Schließt die Loader.gif
	 */
	closeLoader: function() {
		$('#'+Loader.conf.loaderId).fadeOut(Loader.conf.speed).remove();
	},
	
	/**
	 * IE-Fix für runde Ecken
	 */
	_IECornerFix: function() {
		$('.button').corner("10px");
		$('.tipsy-inner').corner("5px");
	}

}
