/**
 * @author Sven Kummer
 */
var closeOverlay = true;

    registerNamespace = function(space) {

        var parts = space.split('.');
        var root = window;

        for (var i = 0; i < parts.length; ++i) {

        	if (typeof root[parts[i]] == 'undefined') {
        		root[parts[i]] = new Object();
        	}

            root = root[parts[i]];

        }

        return root;

    }

    var space = registerNamespace('RS');

    space.controller = {

    	layerList: new Array(),
		scriptList: new Array(),
		formList: new Array(),
		phraseList: new Array(),

		scriptAdd: function(key, script) {
			this.scriptList[key] = script;
		},

		scriptGet: function(key) {
			return this.scriptList[key];
		},

        loadTemplate: function(tpl, target, callback, params) {

            var paramsList = new Array();

            if (params != undefined) {

                for (key in params) {
                    paramsList.push(key + '=' + params[key]);
                }

            }

			$.post(this.scriptList['templateLoader'] + '?' + paramsList.join('&'), {template: tpl}, function(data) {

				target.html(data.getElementsByTagName('data1').item(0).firstChild.data);

				if (callback != undefined) {
					callback(data);
				}

			});


        },

        layerOpen: function(ident, width, height, template, params, callback) {
        	if (ident == 'parkrate_signup' || ident == 'parkrate_signup_success' ) {
        		closeOverlay = false;
        	} else {
        		closeOverlay = true;
        	}	
        	
            // build overlay
            var overlay = $('<div>');
                overlay.attr('id', 'overlay');

            $('body').append(overlay);

            $('#overlay').css({
                opacity: 0.8
            }).fadeIn();

            // build layer

			var layer = $('<div>');
				layer.addClass('layer');
				layer.attr('id', 'layer' + ident);
				layer.html('<img src="/images/main/stuff/loader.gif" alt="Loading..." border="0" />');
				layer.css('display', 'none');
				layer.css('z-index', 100);


            var pageSize = RS.graphics.dimensions.getPageSize();
			var pageScroll = RS.graphics.dimensions.getPageScroll();

			var nHeight = parseInt($('#layer' + ident).height(), 10) || pageSize.largestHeight/3;
			//var nTop = pageScroll.yScroll + (pageSize.windowHeight - nHeight) / 2.5;
			
			var nTop  = 0;
			
			if (template == 'parkrate' || template == 'parkrate_login' || template == 'blog_comment_login' || template == 'parkrate_signup' || template == 'parkrate_signup_success' ) {
				var nTop = pageScroll.yScroll;
			}	

			
			layer.css('top', nTop);

			$('body').append(layer);
            layer.show();

			this.layerList[ident] = layer;

			if (template != undefined) {
				this.loadTemplate(template, layer, callback, params);
			}

			$('#overlay').css({
                width:      pageSize.largestWidth,
                height:     pageSize.largestHeight
            });

			
			
        },

        layerClose: function(ident) {

			$('#layer' + ident).fadeOut();
			$('#layer' + ident).remove();
			
			if (closeOverlay == true || ident == 'parkrate_signup' || ident == 'parkrate_signup_success') {
				$('#overlay').fadeOut(function() { $('#overlay').remove(); });
			}
			
			closeOverlay = true;

        },

        layerOnlyClose: function(ident) {

			$('#layer' + ident).fadeOut();
			$('#layer' + ident).remove();

        },

        formClose: function(ident) {
        	this.layerClose(ident);
			this.formRemove(ident);
		},

        formCreate: function(ident) {

			for (key in this.formList) {
				this.formClose(key);
			}

        	this.formList[ident] = new RS.form(ident);
        	return this.formList[ident];

        },

        formRemove: function(ident) {
        	/*
        	if (!this.formList[ident]) {
        		//throw 'Form "' + ident + '" does not exist';
        	}
			*/
        	if (this.formList[ident].onClose != undefined) {
        		this.formList[ident].onClose();
        	}

        	delete(this.formList[ident]);

        },

        phraseGet: function(key) {
            return this.phraseList[key];
        },

        phraseAdd: function(key, phrase) {
            this.phraseList[key] = phrase;
        }





    }

