/*
 * IdeaValley Innovation
 * FlipSite
 * Maio 2006
 * Luiz Paulo dos Prazeres Júnior
 * 
 * ActionsClass Class
 */
 
var ActionsClass        = Class.create();

ActionsClass.prototype  = {


	initialize: function () {

		this.arrayBefore = new Array();
		this.setAction( Prototype.emptyFunction );
		this.arrayAfter = new Array();

	}, //Method initialize


	setAction: function(functionAction){
	    this.action = functionAction;
    }, //Method setAction


	register: function(object, order){
		(order == "before") ? this.arrayBefore[this.arrayBefore.length] = object : this.arrayAfter[this.arrayAfter.length] = object;
	}, //Method register


	run: function(){

	    var args = arrayToArgs(arguments, 0);
        var args = (args == "") ? "''" : args;

        eval("var df = maybeDeferred(this.doBefore, this, "+args+");");
		eval("df.addCallback(this.doAction, this, "+args+");");
//		eval("df.addCallback(this.doAfter, this, args);");
		df.addErrback(this.error);
		return df;

	}, //Method run


	doBefore: function(){

	    var args = arrayToArgs(arguments, 1);
        eval("arguments[0].doArray(arguments[0].arrayBefore, "+args+");");

	}, //Method doBefore


	doAction: function(){

	    var args = arrayToArgs(arguments, 1, 1);
        eval("arguments[0].action("+args+");");

	}, //Method doAction


	doAfter: function(){

        var args = arrayToArgs(arguments, 1);
		eval("arguments[0].doArray(arguments[0].arrayAfter, "+args+");");

	}, //Method doAfter


	doArray: function(){

        var args = arrayToArgs(arguments, 1);
		for(var i=0; i < arguments[0].length; i++){
			eval("arguments[0][i]("+args+");");
		}
		return true;

	}, //Method doArray


	error: function(objeto){
		alert("Action.Run = Error! \n"+objeto);
	} //Method error

};
