function serialize_form(ele,getEditorContent,getFromFieldange,joinArr)
{
	ele = $(ele);

	if(!getFromFieldange)
	{
		n = ele.children.length;
	}
	else
	{
		nSelect = ele.getElementsByTagName("SELECT");
		nTextarea = ele.getElementsByTagName("TEXTAREA");
		nInput = ele.getElementsByTagName("INPUT");
		n = nSelect.length + nTextarea.length + nInput.length;
	}
	if(joinArr)
	{
		ele_temp = new Array();
		
		nSelect = ele.getElementsByTagName("SELECT");
		for(x=0;x<nSelect.length;x++)
		{
			ele_temp.push(nSelect[x]);
		}
		
		nTextarea = ele.getElementsByTagName("TEXTAREA");
		for(x=0;x<nTextarea.length;x++)
		{
			ele_temp.push(nTextarea[x]);
		}
		
		nInput = ele.getElementsByTagName("INPUT");
		for(x=0;x<nInput.length;x++)
		{
			ele_temp.push(nInput[x]);
		}

		//alert(ele_temp.length)
		ele = ele_temp;
		n = ele.length;
	}

	str_return = "";

	for(x=0;x<n;x++)
	{
		//alert(ele_temp[x].id)

		if(ele[x]&&!compareExclusion(ele[x],excludeFromSerialization))
		{
			setFormObject(ele[x]);
			
			val = formObj.value;
			//alert(ele[x].type + " /// " + formObj.name+ " // " +formObj.origin  + " // " + formObj.value)
			if(ele[x].type.toUpperCase() == 'CHECKBOX'&&!ele[x].checked)
			{
				val = "N";
			}
			//alert(formObj.name +  " = " + formObj.toValidate + " - " + formObj._type)
			if((formObj.toValidate&&validateForm)||formObj._type=='TN')
			{
				formValidation();
			}
			if(formObj.isNumeric)
			{
				str_return+=formObj.name+"|"+val+"~";
			}
			else
			{
				if(getEditorContent)
				{
					//alert(getEditorContent.toUpperCase() == formObj.name.toUpperCase())
					if(getEditorContent.toUpperCase() == formObj.name.toUpperCase())
					{
						var oEditor = FCKeditorAPI.GetInstance(getEditorContent) ;
						val = oEditor.GetXHTML();
					}
				}
				str_return+=formObj.name+"|'"+replaceCHAR(val)+"'~";
			}
		}
	}
	str_return = (ar_error.length>0)?false:str_return;
	return str_return;
	
}

function deserealize(str)
{
	passRights = false;
	userInfo_n = document.getElementById('userMang');
	userRights_n = document.getElementById('uRight');
	
	str_nodes = str.split("|");
	for(x=0;x<str_nodes.length;x++)
	{
		nodeName = str_nodes[x].split(":")[0].toUpperCase();
		nodeValue = str_nodes[x].split(":")[1];
		
		if(nodeName=="USERID")
		{
			userInfo_n.userId.value=nodeValue;
			userRights_n.userId.value=nodeValue;
		}
		
		if(nodeName=="RIGHTS")
		{
			passRights = nodeValue;
		}
		
		for(z=0;z<userInfo_n.length;z++)
		{
			if(userInfo_n[z])
			{
				str_name = userInfo_n[z].name.split("_")[0];
				trname = str_name.toUpperCase();
				
				if(trname==nodeName)
				{
					if(userInfo_n[z].type.toUpperCase() == "CHECKBOX")
					{
						userInfo_n[z].checked=true;
					}
					else
					{
						userInfo_n[z].value=nodeValue;	
					}
				
				}
				
			}
		}
	}
	
	if(passRights)
	{
		getR = passRights.split(",");
		
		for(z=0;z<userRights_n.length;z++)
		{
			userRights_n[z].checked=false;
		}
		
		for(z=0;z<userRights_n.length;z++)
		{
			for(c=0;c<getR.length;c++)
			{
				if(userRights_n[z].value==getR[c])
				{
					userRights_n[z].checked=true;
				}
			}
		}
	}
	else
	{
		for(z=0;z<userRights_n.length;z++)
		{
			userRights_n[z].checked=false;
		}
	}
	document.getElementById('uRightsButton').onclick = toggleScreens;
	document.getElementById('uRightsButton').style.cursor = "pointer";
}


function formValidation()
{
	if(formObj._type=='TF')
	{
		if(formObj.value.length == 0)
		{
			ar_error.push(formObj.origin); 
		}
		
	}
	
	if(formObj._type=='TN') ///Numeric fields
	{
		if(formObj.value.length == 0||!IsNumber(formObj.value))
		{
			ar_error.push(formObj.origin); 
		}
	}
	
	if(formObj._type=='EM')
	{
		if(formObj.value.length == 0||!test(formObj.value))
		{
			ar_error.push(formObj.origin); 
		}
	}
	if(formObj._type=='SB')
	{
		if(formObj.value == 0 || formObj.value == '00000' || formObj.value.length == 0)
		{
			ar_error.push(formObj.origin); 
		}
	}
	if(formObj._type=='CB')
	{
		if(!formObj.checked)
		{
			ar_error.push(formObj.origin); 
		}
	}
	if(formObj._type=='DT')
	{
		
	}
}

function setFormObject(i)
{
	fn = i.name.split("_");
	formObj = {name:fn[0],toValidate:(fn[1]=='Y')?true:false,_type:fn[2],isNumeric:(fn[3]=='Y')?true:false,value:i.value,origin:i.name};
}

function FieldsNormalState(e)
{
	e = $(e);
	for(z=0;z<e.length;z++)	
	{
		e[z].className = (e[z].tagName.toUpperCase()=='INPUT')?'inp_' + e[z].type:'inp_' + e[z].tagName;	
	}
}

function handle_erros()
{
	for(c=0;c<ar_error.length;c++)
	{
		e = $(ar_error[c]);
		classError = (e.tagName.toUpperCase()=='INPUT')?'inp_' + e.type:'inp_' + e.tagName;
		e.className = classError+'_error';	
	}
	_strMessage = "You are missing some mandatory fields.<br>Please complete them."
	setAlertBox('formError');
	window.setTimeout("killBox('formError')",3000);
}

function flushForm(e)
{
	for(z=0;z<e.length;z++)	
	{
		if(e[z].type.toUpperCase() != "HIDDEN")
		{
			if(e[z].type.toUpperCase() == "CHECKBOX")
			{
				e[z].checked = false;	
			}
			else if(e[z].tagName.toUpperCase() == "SELECT")
			{
				e[z].selectedIndex = 0;	
			}
			else
			{
				e[z].value = '';	
			}
		}
		else
		{
			for(h=0;h<allowFlushHidden.length;h++)
			{
				if(allowFlushHidden[h].toUpperCase() == e[z].name.toUpperCase())
				{
					e[z].value = '';
				}
			}
		}
	}
	if(!byPassFieldsNormalState)
	{
		FieldsNormalState(e);
	}
}


function callEmptyForm(form,show)
{
	form = $(form);
	flushForm(form);
	// PEDRO This function ( hideContentBoxes(); ) is wrong here ...
	// I had to create a emprty function with the same name on wc_jobs.js because of this call
	// wich is for cms management
	hideContentBoxes();
	DWRUtil.showById(show);
}

function SetFormValues(ele,result)
{
	ele = $(ele);
	n = ele.children.length;
	
	for(x=0;x<n;x++)
	{
		if(ele[x])
		{
			objName = optmizeName(ele[x]);
			fieldFullName = (ele[x].id!='')?ele[x].id:ele[x].name;
			
			skipSet = false;
			if(skipSetFormValues)
			{
				if(ele[x].name != '')
				{
					for(h=0;h<skipSetFormValues.length;h++)
					{
						if(skipSetFormValues[h].toUpperCase() == ele[x].name.toUpperCase())
						{
							skipSet = true;
						}
					}
				}
			}
						
			if(!skipSet||result[0][objName])
			{
				if(ele[x].type.toUpperCase() == 'CHECKBOX')
				{
					ele[x].checked = checkBoxState(result[0][objName]);
				}
				else
				{
					// Pedro the problem is here /// user is being reset on content
					setresult = result[0][objName];
					if(fieldFullName.indexOf('_DT')>-1)
					{
						setresult = ODBCDateToString(result[0][objName]);
					}
					ele[x].value = setresult;
				}
			}
		}
	}
}

function optmizeName(ele)
{
	
	str = (ele.name=='')?ele.id:ele.name;
	tryStr = str.split("_");
	
	if(tryStr.length > 0)
	{
		_ret = tryStr[0].toUpperCase();
	}
	else
	{
		_ret = str.toUpperCase();
	}
	return _ret;
}

function compareExclusion(obj,exclude)
{
	objName = (obj.id!='')?obj.id:obj.name;
	exc = exclude.split(",");
	if(exc.length==0)
	{
		return false;	
	}
	else
	{
		for(ex=0;ex<exc.length;ex++)
		{
			if(exc[ex]==objName)
			{
				return true;
			}
		}
	}
	return false;
}