
function revertDisabledChildren(obj)
{
    if(!obj || !obj.childNodes || 0==obj.childNodes.length)
    {
        return;
    }
    
	for (var i=0; i<obj.childNodes.length; i++)
	{
		var node = obj.childNodes[i];
		if(isDisabledSupport(node)
		    && node.previousDisabled 
			&& node.previousDisabled.length>0)
		{
		    if(node.previousDisabled)
		    {
			    node.disabled = node.previousDisabled.pop();
			}
		}
		revertDisabledChildren(node);
	}
}

function setDisabledChildren(obj, disabled)
{
    if(!obj || !obj.childNodes || 0==obj.childNodes.length)
    {
        return;
    }

	for (var i=0; i<obj.childNodes.length; i++)
	{
		var node = obj.childNodes[i];
		if(isDisabledSupport(node))
		{
	        if (!node.previousDisabled)
	        {
		        node.previousDisabled = new Array();
	        }
	        if(!node.disabled) node.disabled = false;
	        node.previousDisabled.push(node.disabled);
	        node.disabled = disabled;
		}	
		setDisabledChildren(node, disabled);	
	}
}

function isDisabledSupport(obj)
{
    switch(obj.tagName)
	{
	    case 'INPUT':
	    case 'SELECT':
	    case 'TEXTAREA':
	        return true;
	    default:
	        return false;
	}		
}

