﻿//
//
//
Class.Mutators.Singleton = function(self,flag){
	if(!flag) return;
	self.constructor.__instance = undefined;
	if($defined(self.initialize) && $type(self.initialize) == 'function') var init = self.initialize;
	self.initialize = function(){
		if(!$defined(this.constructor.__instance)){
			if($defined(init) && $type(init) == 'function') init.apply(this,arguments);
			this.constructor.__instance = this;
		}
		return this.constructor.__instance;
	}
}



//
//
//
Class.Mutators.Privates = function(self,privates){
    self.initalize = (function(){
        for(prop in privates)
             this[prop] = ($type(privates[prop]) == 'function') ? privates[prop].bind(self) : privates[prop];
        return self.initialize;
    })();
    delete self["Privates"];
    for(prop in privates) delete self["Privates"][prop];
}