var Container = Class.create();

Container.prototype = {

	_maxH: 2000,
	
	
	initialize: function() {
		gadgets.rpc.register('set_title', this.performSetTitle);
		gadgets.rpc.register('requestNavigateTo', this.performRequestNavigateTo);
		gadgets.rpc.register('resize_iframe', this.performSetIframeHeight);
		gadgets.rpc.register('set_pref', this.performSetPref);
	},
	
	performSetIframeHeight: function(height) {
		if ($(this.f) != undefined) {
			height += height*0,15;
			if (height > gadgets.container._maxH) {
				height = gadgets.container._maxH;
			}
			Element.setStyle($(this.f), {'height':height+'px'});
		}
	},

    _debug: function( obj ) {
        
        var text = '';
        if(obj.length) {
            for( var i = 0 ; i < obj.length ; ++i ) {
                text += obj[i]+", ";
            }
        } else for( var s in obj ) {
            text += s + ":"+obj[s]+", ";
        }

        alert(text);
    },
	
	performSetPref: function( token , name , value ) {
		if ($(this.f) != undefined) {
			var params = gadgets.container._parseUrl($(this.f).src);
            var args = arguments;
            var request = {
                method: 'post',
                parameters: {
                    st: params.st
                }
            };
            if( args.length > 3 ) {
                for( var i = 1 ; i < args.length ; i += 2 ) {
                    request.parameters["up_"+args[i]] = args[i+1];
                }
                
            } else if( args.length == 2 ) {
                var obj = args[1];
                for( var key in obj ) {
                    request.parameters["up_"+key] = obj[key];
                }
            } else {
                request.parameters.name = name;
                request.parameters.value = value;
            }
			new Ajax.Request(_foxosDir()+'/index.php?do=/gadget/prefs/set',request);
		}
	},
	
	performSetTitle: function( title ) {
		var element = $(this.f+'_title');
		if (element != undefined) {
			var value = title.replace(/&/g, '&amp;').replace(/</g, '&lt;');
			element.update(value);
		}
	},
	
	performRequestNavigateTo: function( view , params ) {
		if($(this.f) != undefined) {
			var source = gadgets.container._parseUrl($(this.f).src);
			var url = gadgets.container._getViewUrl( source.aid , source.mid , source.owner , view );
			if( params ) {
				var compiled = Object.toJSON(params);
				if(compiled) {
					url += '/appParams_' + encodeURIComponent(encodeURIComponent(encodeURIComponent(compiled)));
				}
			}
			if(url && document.location.href.indexOf(url) == -1) {
	 			document.location.href = url;
			}
		}
	},
	
	_getViewUrl: function( app , mod , person , view ) {
		switch(view) {
            case 'profile':
                return _foxosDir()+'/index.php?do=/'+person.getDisplayName();
			case 'home':
				return _foxosDir()+'/index.php?do=/gadget/aitocfoxos/';
			case 'canvas':
				return _foxosDir()+'/index.php?do=/gadget/id_'+mod;
			case 'preview':
				return _foxosDir()+'/index.php?do=/preview/'+app;
		}
		return null;
	},
	
	_parseUrl: function(url) {
		var result = new Object();
		var params = url.replace(/#.*$/, '').split('&');
		for (var i = 0 ; i < params.length; i++) {
			var param = params[i];
			var key = param.substr(0, param.indexOf('='));
			result[key] = param.substr(param.indexOf('=') + 1);
		}
		return result;
	}
	
}

gadgets.container = new Container();
