function DOMUtils()
{
	this.className = 'DOMUtils';
}

DOMUtils.prototype.getFormData = function(formObj)
{
	var str = '';
	var valueArr = null;
	var val = '';
	var cmd = '';

	for (var i = 0; i < formObj.elements.length; i++)
	{
		switch(formObj.elements[i].type)
		{
			case 'text':
				str += formObj.elements[i].name + '=' + escape(formObj.elements[i].value) + '&';
			break;
			case 'password':
				str += formObj.elements[i].name + '=' + escape(formObj.elements[i].value) + '&';
			break;
			case 'hidden':
				str += formObj.elements[i].name + '=' + escape(formObj.elements[i].value) + '&';
			break;
			case 'radio':
				if (formObj.elements[i].checked)
				{
					str += formObj.elements[i].name + '=' + escape(formObj.elements[i].value) + '&';
				}
			break;
			case 'checkbox':
				if (formObj.elements[i].checked)
				{
					str += formObj.elements[i].name + '=' + escape(formObj.elements[i].value) + '&';
				}
				else
				{
					str += formObj.elements[i].name + '=0&';
				}
			break;
			case 'select-one':
				str += formObj.elements[i].name + '=' +  formObj.elements[i].value + '&';
			break;
			case 'textarea':
				str += formObj.elements[i].name + '=' + escape(formObj.elements[i].value) + '&';
			break;	
		}
		
	}
	var fixedStr = str.substr(0, (str.length - 1));
	return fixedStr;
}

DOMUtils.prototype.removeChilds = function(object)
{
	for(;object.firstChild;)
		object.removeChild(object.firstChild);
}

DOMUtils.prototype.getHTTPObject = function()
{
	var xmlhttp;
	/*@cc_on
	@if (@_jscript_version >= 5)
	try 
	{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e)
	{
		try 
		{
        	xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (E)
		{
			xmlhttp = false;
		}
	}
	@else
		xmlhttp = false;
	@end @*/
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
	{
		try {
			xmlhttp = new XMLHttpRequest();
			xmlhttp.overrideMimeType("text/xml"); 
		}
		catch (e)
		{
			xmlhttp = fle; 
		}
	}
	return xmlhttp;
}

DOMUtils.prototype.highlightLine = function(id, mode)
{
	var obj = document.getElementById(id);

	if (obj.getAttribute('selected')!='true')
	{
		if (mode=='on')
		{
			obj.className = 'highlight-line-on';
		}
		else
		{
			obj.className = 'highlight-line-off';
		}
	}
	else
	{
		if (mode=='on')
		{
			obj.className = 'select-line-on';
		}
		else
		{
			obj.className = 'select-line-off';
		}
	}
}

DOMUtils.prototype.selectLine = function(id)
{
	var obj = document.getElementById(id);

	if (obj.getAttribute('selected')!='true')
	{
		obj.setAttribute('selected', 'true');
		obj.style.className = 'select-line-on';
	}
	else
	{
		obj.setAttribute('selected', 'false');
		obj.style.className = 'highlight-line-on';
	}
}

DOMUtils.prototype.isBlank = function(arrayForm)
{
	var msg = "";
	for(var i = 0; i < arrayForm.length;i++)
	{
		blank = document.getElementById(arrayForm[i]);
		if(blank.value=="")
		{
	 		msg += "Campo "+blank.name+" vazio.\n";
	 	}
	}
	
	if(msg!="")
	{
		return msg;
	}
}

// opacity for: CSS3, Firefox(Mozilla), Konqueror(Safari), IE
DOMUtils.prototype.setOpacity = function(obj, value)
{
	obj.style.opacity = value; /* Official CSS3 method */
   	obj.style.MozOpacity = value; /* Firefox, Mozilla */
   	obj.style.KhtmlOpacity = value; /* Konqueror, Safari */
   	
   	/* o value do IE é diferente do Mozilla e etc...aonde seria 0.3 no IE é 30 */
   	value = value*100;
   	
	//obj.style.filter = "alpha(opacity="+value+")";  /*IE */
   	obj.style.filter = "progid:DXImageTransform.Microsoft.Alpha( opacity = "+value+" )"; /* IE2 */
}

DOMUtils.prototype.getIFrameDocument = function(id)
{
	var rv = null; 
	id.toString();
	if(oBrowser.isIE())
	{
		rv = document.getElementsByTagName('iframe')[id]; 
	}
	else
	{
		rv = document.getElementById(id).contentDocument; 
	}
	return rv; 
}


DOMUtils.prototype.checkedUnchecked = function(parentId)
{
	var parentIdObj = document.getElementById(parentId);
	
	if(parentIdObj.firstChild.firstChild.checked == false)
	{
		parentIdObj.firstChild.firstChild.checked = true;
	}
	else if(parentIdObj.firstChild.firstChild.checked == true)
	{
		parentIdObj.firstChild.firstChild.checked = false;
	}
}

DOMUtils.prototype.extractMessage = function(xmlDocument)
{
	var response = xmlDocument.getElementsByTagName('response')[0];

	var messages = response.getElementsByTagName('message');
	var message = messages[0].firstChild.nodeValue;
	
	var errors = response.getElementsByTagName('error');
	var error = errors[0].firstChild.nodeValue;
	
	if (error == '1')
	{
		return 'Error: '+message;
	}
	else
	{
		return message;
	}
}

DOMUtils.prototype.showElement = function(id)
{
	var element = document.getElementById(id);
	var spanElement = document.getElementById("spanElement");
	
	if(element.style.display == "none")
	{
		element.style.display = "";
		if(spanElement)
		{
			this.removeChilds(spanElement);
			spanElement.appendChild(document.createTextNode("Hide"));
		}
	}
	else if(element.style.display == "")
	{
		element.style.display = "none";
		if(spanElement)
		{
			this.removeChilds(spanElement);
			spanElement.appendChild(document.createTextNode("Show"));
		}
	}
}
		
oDOMUtils = new DOMUtils();