YAHOO.namespace("BASE.util");

YAHOO.BASE.util.Dom = {
	
	addClass : function(el, className){
		
		if ( this.isValidCollection(el)) {
            for (var i=0,len=el.length; i<len; ++i) {
                YAHOO.util.Dom.addClass(el[i], className);
            }
        } else if (el) {
            YAHOO.util.Dom.addClass(el, className);
        }
		return el;
	},
	
	removeClass : function(el, className){
		
		if ( this.isValidCollection(el)) {
            for (var i=0,len=el.length; i<len; ++i) {
                YAHOO.util.Dom.removeClass(el[i], className);
            }
        } else if (el) {
            YAHOO.util.Dom.removeClass(el, className);
        }
		return el;
	},
	
	toggleClass : function(el, className){
		
		if ( this.isValidCollection(el)) {
            for (var i=0,len=el.length; i<len; ++i) {
				if(YAHOO.util.Dom.hasClass(el[i], className)){
	            	YAHOO.util.Dom.removeClass(el[i], className);
				} else {
					YAHOO.util.Dom.addClass(el[i], className);
				}
            }
        } else if (el) {
			if(YAHOO.util.Dom.hasClass(el, className)){
            	YAHOO.util.Dom.removeClass(el, className);
			} else {
				YAHOO.util.Dom.addClass(el, className);
			}
        }
		return el;
	},

	//from YAHOO.util.Event
	isValidCollection: function(o) {
        try {
            return ( o                    && // o is something
                     o.length             && // o is indexed
                     typeof o != "string" && // o is not a string
                     !o.tagName           && // o is not an HTML element
                     !o.alert             && // o is not a window
                     typeof o[0] != "undefined" );
        } catch(e) {
            return false;
        }

    }
};

YAHOO.namespace("BASE.util.Fields");

YAHOO.BASE.util.Fields = {
	
	disable : function(el){
		this._disableCollection(el, true);
	},
	
	enable : function(el){
		this._disableCollection(el, false);
	},
	
	disableChildFields : function(el){
		this._disableChildFields(el, true);
	},
	
	enableChildFields : function(el){
		this._disableChildFields(el, false);
	},
	
	_disableChildFields : function(el, disable){
		if ( YAHOO.BASE.util.Dom.isValidCollection(el)) {
	        for (var i=0,len=el.length; i<len; ++i) {	
				ele = YAHOO.util.Dom.get(el[i]);
				
				this._disableCollection(ele.getElementsByTagName("input"), disable);
				this._disableCollection(ele.getElementsByTagName("select"), disable);
	        }
	    } else if (el) {
			ele = YAHOO.util.Dom.get(el);
			
			this._disableCollection(ele.getElementsByTagName("input"), disable);
			this._disableCollection(ele.getElementsByTagName("select"), disable);
	    }
	},
	
	_disableCollection : function(el, disable){
		if ( YAHOO.BASE.util.Dom.isValidCollection(el)) {
            for (var i=0,len=el.length; i<len; ++i) {
				var ele = YAHOO.util.Dom.get(el[i]);
                ele.disabled = disable;
            }
        } else if (el) {	
			var ele = YAHOO.util.Dom.get(el);
            ele.disabled = disable;
        }
		return el;
	}
};

