function unlockAllFormFields(form)
{
	for (var i=0;i<form.elements.length;i++)
		if (form.elements[i].disabled == true)
		{
			//alert(form.elements[i].value);
			var input = document.createElement("INPUT");
			input.value = form.elements[i].value;
			input.type="hidden";
			input.name=form.elements[i].name;
			form.appendChild(input);
			//form.elements[i].disabled = false;
		}
}

function lockFields(lockFields)
{
	if (lockFields)
	{
		for (var el in lockFields)
		{
			lockField(el, lockFields[el])	
		}
	}
}

function lockField(fieldName, description)
{
	var field = document.all[fieldName];

	if (field)
	{
		field.disabled = true;
		
		if (description)
			field.title = description
	}
}

function checkRuleRequiredFields(conditions, fields)
{
	var result = "";

	if (fields)
	{
		if (checkRuleRequiredFieldsConditions(conditions))
		{
			for (var i=0;i<fields.length;i++)
			{
				result += checkRuleRequiredField(fields[i]);
			}
		}
	}
	
	return result;
}

function checkRuleRequiredFieldsConditionValue(fieldName, operator, values, macroText)
{
	
	var result = true;
	
	
	var field = document.all[fieldName];
	values = splitValues(values);

	if (field)
	{
		if (operator != "!=")
			result = false;
	
		for (var i=0;i<values.length;i++)
		{
			if (values[i]=='null')
				values[i] = null;
			if (values[i]=='empty')
				values[i] = '';
				
			switch (operator)
			{
				case "=":
				{
					result = result || (values[i] == field.value);
					break;
				}
				case "!=":				
				{
					result = result && (values[i] != field.value);				
					break;
				}
				case ">":				
				{
					result = result || (values[i] > field.value);				
					break;
				}
				case ">=":
				{
					result = result || (values[i] >= field.value);				
					break;
				}
				case "<":				
				{
					result = result || (values[i] < field.value);				
					break;
				}
				case "<=":
				{
					result = result || (values[i] <= field.value);				
					break;
				}
				
			}

			if (operator != "!=")
				if (result)
					return result;
					
		}
	}

	return result;
}

function checkRuleRequiredFieldsCondition(condition)
{
	var result = true;
	if (condition)
	{
		if (condition["FIELD"] && condition["FIELD"] != "")
		{
			
			var value = condition["VALUE"];
			if (value == "" && condition["MACROTEXT"] && condition["MACROTEXT"] != "")
			{
				if (String(condition["MACROTEXT"]).indexOf("value") != 0 )
					condition["MACROTEXT"] = "value=" + condition["MACROTEXT"];
				eval(condition["MACROTEXT"]);
			}
			
			return checkRuleRequiredFieldsConditionValue(condition["FIELD"], condition["OPERATOR"], value);
		}
		else if (condition["MACROTEXT"] && condition["MACROTEXT"] != "")
		{
			eval(condition["MACROTEXT"]);
		}
	}
	
	return result;
}

function checkRuleRequiredFieldsConditions(conditions)
{
	var result = true;
	
	if (conditions)
		for (var i=0;i<conditions.length;i++)
		{
			result = result && checkRuleRequiredFieldsCondition(conditions[i]);

			if (!result)
				return result;
		}
		
	return result;
}

function checkRuleRequiredField(fieldDef)
{
	var result = "";

	if (fieldDef && fieldDef["FIELD"])
	{
		var field = document.all[fieldDef["FIELD"]];
		if (field && field.disabled == false)
		{
			if (fieldDef["REQUIREDMESSAGE"] && fieldDef["REQUIREDMESSAGE"] != "" && (field.value == "" || field.value == null))
				result += " - " + fieldDef["REQUIREDMESSAGE"] + "\r";

			else if (fieldDef["REJECTEDVALUES"] && fieldDef["REJECTEDVALUES"] != "" && fieldDef["REJECTEDMESSAGE"] && fieldDef["REJECTEDMESSAGE"] != "")
			{
				if (isValuesHaveValue(fieldDef["REJECTEDVALUES"], field.value))
					result += " - " + fieldDef["REJECTEDMESSAGE"] + "\r";
			}
			else if (fieldDef["SHOULDBEVALUES"] && fieldDef["SHOULDBEVALUES"] != "" && fieldDef["SHOULDBEMESSAGE"] && fieldDef["SHOULDBEMESSAGE"] != "")
			{
				if (!isValuesHaveValue(fieldDef["SHOULDBEVALUES"], field.value))
					result += " - " + fieldDef["SHOULDBEMESSAGE"] + "\r";
			}
					
				
		}
	
	}
	
	return result;
}

function splitValues(values)
{
	var result = new Array();
	var str = "";
	//result.replace(",", "','");
	//result = "'" + result + "'";
	for (var i=0;i<values.length;i++)
	{
		var s = values.substr(i,1);
		if (s !=',')
			str += s;
		else
			str += "'" + s + "'";		
	}
	str = "'" + str + "'";	
		
	eval("result = new Array(" + str + ")");
	
	return result;
}

function isValuesHaveValue(values, value)
{
	var result = false;
	
	values = splitValues(values);
	
	if (values)
	{
		for (var i=0;i<values.length;i++)
		{
			if (values[i]=='null' && value == null)
				return true;
			else if (values[i]=='empty' && value == '')
				return true;
			else if (values[i] == value)				
				return true;			
		}
		
	}
	
	return result;
}


function postDaqeRecord2(id, el)
{
		var result = false;
		try
		{
			var httpObj = new ActiveXObject("Microsoft.XMLHTTP");
			httpObj.Open("POST","/intranet/preadmit-edit-popup-daqepost.asp?id=" + id, false);
			httpObj.send("dummy");
			if (httpObj.status != 200)
				alertError("Error posting lead to DAQE system.\n\nCode: "+ httpObj.status +" Server response:\n" + httpObj.responseText);
			else
			{
				if (String(httpObj.responseText).indexOf("OK") != 0)
				{
				    var s = httpObj.responseText;
				    
				    var idx = String(s).indexOf("&lt;br&gt;&lt;br&gt;");
				    if (idx > 0 )
				        s = String(s).substring(0, idx);
				    s = String(s).replace("&lt;/b&gt;&lt;br&gt;", " ");
					alert("Error posting lead to DAQE system.\n\n" + s);
			    }
				else
					result = true;
			}
		}
		finally
		{
			//hideScreenCaption();
		}
		
		if (result)
		{
			alert("Lead posted to daqe sucessful. See DAQE posting result for details");
			if (el)
			{
			    //el.onclick = null;
			    var d = new Date();
			    el.parentElement.innerText = (d.getMonth()+1) + "/" + d.getDate() + "/" + d.getFullYear();
			}
		}
		else
			alert("DAQE lead posting failed. See DAQE posting result for details");
			
		return result;

}
