
var toggleClassPlut = function () {

    config = {
		element:'',
		class1:'',
		class2:'',
		initialState: '0'				
    }
	
    var init = function (elemid, cl1, cl2, initState)
		{
			 this.config.element = elemid;
			 this.config.class1 = cl1;
			 this.config.class2 = cl2; 
			 this.config.initialState = initState;
			 
			 var viewState; 
		     if (this.config.initialState == '0') {
				 viewState = cl1;
			 } else {
				 viewState = cl2;
			 }
		     elem(elemid).className = viewState;
		}	
 	
		var elem = function(id)	{
			var domElement;
			if (typeof id !== 'string') {
			    domElement = id; 
			} else {
				domElement = document.getElementById(id);
			}	
		    return domElement;
		}

		var getElement = function () {
			return this.config.element;
		}		
		
		var getClass1 = function () {
			return this.config.class1;
		}		

		var getClass2 = function () {
			return this.config.class2;
		}		

		var getInitialState = function () {
			return this.config.initialState;
		}			

		var setElement = function (elem) {
			this.config.element = elem;
			return this.config.element;
		}				
		
			
		var setClass1 = function (cl1) {	
			this.config.class1 = cl1;
			return this.config.class1;
		}		

		var setClass2 = function (cl2) {
			this.config.class2 = cl2;
			return this.config.class2;
		}

		var setInitialState = function (initialState) {
            this.config.initialState = initialState;
			return this.config.initialState;
		}
			

		var currentView = function () {
			var currentView;
			if (elem(this.config.element).className == config.class1) {
				  currentView = '0';
			} else if (elem(this.config.element).className == config.class2) {
				  currentView = '1';
			} else {
				  currentView = 'ERROR';
			}
		    return currentView;
		}	
		

		var toggle = function(toggleTo) {		
				var viewState;
				
				if (toggleTo == null) {
						switch (currentView())
						{
					        case "0":
						        viewState = this.config.class1;
						        break;
					        case "1":
						        viewState = this.config.class2;
						        break;
					        default:
						        if (this.config.initialState == '0') {
								        viewState = this.config.class1;	
						        } else {
								        viewState = this.config.class2;
						        }
						        break;
						}
				} else {
					if (toggleTo == '0')
					{
						viewState = this.config.class1;
					} else {
						viewState = this.config.class2;
					}	
				}
				elem(this.config.element).className = viewState;
				return currentView();
		}
	
    return { 
        init: init,
     	getElement: getElement,
		getClass1: getClass1,
		getClass2: getClass2,
		getInitialState: getInitialState,
     	setElement: setElement,
		setClass1: setClass1,
		setClass2: setClass2,
		setInitialState: setInitialState,
		currentView: currentView,
		toggle: toggle
    }
};

