var RMS = Class.create();
Object.extend(Object.extend(RMS.prototype,fs_ajax.prototype), {
	_parent:fs_ajax.prototype,
	debugMode:false,
	tabs:"",
	viewMode:"image",
	initialize: function(ajaxUrl,outputId,rmsName,tabsId) {
	    // call the parents initialize with params
 	    this._parent.initialize.call(this,{ajaxUrl:ajaxUrl,outputId:outputId,name:rmsName});
		this.tabs=$(tabsId);
		this.setAjaxPars("mode=rms");
	},
	setViewMode: function(viewMode,tab) {
		this.ajaxPars="mode=rms";
		this.setAjaxPars("view="+viewMode);
		// Because the flash doesn't seem to be interactive when placed in
		// an overflowed div, lets apply a different class to the parent wrapper
		// Note, This is a bit of a kludge...
		if (viewMode=="image"||viewMode=="video") {
			if(!Element.hasClassName("aa_rmBodyWrapper","aa_rmFlashWrapper")) {
				Element.addClassName("aa_rmBodyWrapper","aa_rmFlashWrapper");
			}
		} else {
		    // Remove the kludge for all other non-flash tabs
		    if(Element.hasClassName("aa_rmBodyWrapper","aa_rmFlashWrapper")) {
		        Element.removeClassName("aa_rmBodyWrapper","aa_rmFlashWrapper");
		    }
		}

		// Deactivate pervious tab
		var previousSelected=this.tabs.getElementsByClassName("aa_active","aa_active");
		previousSelected = $A(previousSelected);
		previousSelected.each( function(currentTab) {
			Element.removeClassName(currentTab,"aa_active");
		});
		
		selectedTab=$(tab);
		selectedTab.addClassName("aa_active");
		this.update();
	},
	success: function(formId) {
	    this.animateOut();
		this.activateTooltips();
	},
	animateOut: function() {
		this.debug("animateOut");
		if (this.viewMode=="image"||this.viewMode=="video") {
			this.animateIn();
		} else {
			new Effect.Opacity(this.outputId,{fps:60,duration:0.5,from:1.0,to:0,queue:{position:'end',scope:this.name},afterFinish:this.animateIn.bind(this)});
		}
		// To form a queue for our animation, we use the widgets name
	},
	animateIn: function() {
		this.debug("animateIn");
		if (this.viewMode=="image"||this.viewMode=="video") {
			this.evaluateScripts();
		} else {
			new Effect.Opacity(this.outputId,{fps:60,duration:0.5,from:0,to:1.0,queue:{position:'end',scope:this.name},afterFinish:this.evaluateScripts.bind(this)});
		}
		this._parent.success.call(this);
	},
 	evaluateScripts: function() {
		this.newHtml.evalScripts();
	},
	activateTooltips: function() {
		addFSToolTips();
	}
});
