	function validateForm(frm,required_flds)
	{
		//alert("validating");
		flds = new Array();
		
		if(!isArray(required_flds))
			required_flds = required_flds.split(",");
		
		for(i=0;i<required_flds.length;i++)
		{
			fld =  required_flds[i].split("|");
								
			obj = document.getElementById(fld[0]);
			//obj = eval("document.form." + fld[0]);
			if(obj)
			{
				fldname = fld[1];
				//validation = fld.length > 2 ? fld[2] : "";
				validation = "";
				range1=0;
				range2=999999999;
				len1=0;
				len2=obj.type == "text" || obj.type == "textarea" ? obj.value.length : 0;
				required = true;
				
				for(var j=2;j<fld.length;j++)
				{
					if(fld[j].length == 1)
					{
						if(fld[j] == "r" || fld[j] == "o")
							required = fld[j] == "r" ? true : false;
						else
							validation = fld[j];
					}
					else if(fld[j].indexOf("range1") > -1)
						eval(fld[j]);
					else if(fld[j].indexOf("range2") > -1)
						eval(fld[j]);
					else if(fld[j].indexOf("len1") > -1)
						eval(fld[j]);
					else if(fld[j].indexOf("len2") > -1)
						eval(fld[j]);
				}
			}
			/*			
			if(fld.length > 3)
			{
				if(fld[3].length > 1 && eval("document.form."+fld[3]))
				{
					obj3 = eval("document.form."+fld[3]);
					if(obj3.value != "")
						required = true;
					else
						required = false;
				}
				else if(fld[3] == "r")
					required = true;
				else if(fld[3] == "o")
					required = false;
			}
			*/

			//alert("validation(" + fldname + ") = " + validation);
			if(obj && !obj.disabled)
			{
				if(objectValue(obj) == "")
					empty = true; 
				else
					empty = false;

				err_msg = "";
				if(required && empty)
				{
					if(flds.length == 0) obj2 = obj;				
					err_msg = " is required";				
				}				
				else
				{
					if(!empty)
					{
						if(obj.type == "text" && (obj.value.length < len1 || obj.value.length > len2))
						{
							if(len1==len2)
								err_msg = " requires " + len1 + " characters length";
							else
								err_msg = " allows " + len1 + " to " + len2 + " number of characters";
						}
							
						if(validation == "n")
						{
							if(!is_valid("0123456789",obj.value))
								err_msg = (err_msg != "" ? err_msg + "\n" : "") + " must be numeric";
							else if(obj.value < range1 || obj.value > range2)
								err_msg = (err_msg != "" ? err_msg + "\n" : "") + " must be between " + range1 + " to " + range2;
						}
						else if(validation == "m" && !is_valid("0123456789.",obj.value))
							err_msg = (err_msg != "" ? err_msg + "\n" : "") + " must only contain '0123456789.'";
						else if(validation == "y" && (!is_numeric(obj.value) || obj.value < 1900 || obj.value > 2099))
							err_msg = (err_msg != "" ? err_msg + "\n" : "") + " not a valid year";
							
						if(err_msg != "" && flds.length == 0) obj2 = obj;				
					}
				}
	
				if(err_msg != "")
				{
					flds[flds.length] = fld[1] + err_msg;
					if(document.getElementById("l_" + fld[0]))
						document.getElementById("l_" + fld[0]).style.color = "red";
				}
				else
				{
					if(document.getElementById("l_" + fld[0]))
						document.getElementById("l_" + fld[0]).style.color = "#333333";
				}	
				
			}
		}
		
		if(flds.length > 0)
		{
			alert("The following fields must be corrected:\n- "+flds.join("\n- "));
			obj2.focus();
			return false;
		}
		else
			return true;		
	}
	
	function is_valid(rule,val)
	{
		for(var i=0;i<val.length;i++)
		{
			if(rule.indexOf(val.substr(i,1)) == -1)
				return false;
		}
		return true;
	}

	
	function hideFrame(label)
	{
		//obj = document.getElementById(id);
		obj2 = document.getElementById(label);
		if(obj2.style.display == "none")
		{
			obj2.style.display = "block";
			//obj2.innerHTML = "Hide";
		}
		else
		{
			obj2.style.display = "none";
			//obj2.innerHTML = "Show";
		}
			
	}
	
function appendParameter()
{
	var url = arguments[0]; 
	var array1 = new Array();
	var array2 = new Array();
	
	for(var j=1;(j+1) <= arguments.length; j = j + 2)
	{
		array1[array1.length] = arguments[j];
		array2[array2.length] = arguments[j+1];
	}
		
		newUrl = "";
	for(var j=0; j < array1.length; j++)
	{
		thisLink = url.split("?");
		replaced = false;

		newParamName = array1[j].toLowerCase();
		newParamVal = array2[j];
		if(thisLink.length > 1)
		{
			lnk = thisLink[0];
			params = thisLink[1].split("&");
			params2 = new Array();
			for(var i=0; i<params.length; i++)
			{							
				param = params[i].split("=");
				paramName = param[0].toLowerCase();
				
				if(paramName == newParamName)
				{
					replaced = true;
					if(newParamVal != "")
					{
						param[1] = newParamVal;
						params2[params2.length] = param.join("=");							
					}
				}
				else
					params2[params2.length] = param.join("=");							
							
				//params[i] = param.join("=");							
			}
			
			if(!replaced)
			{
				if(newParamName != undefined && newParamVal != "")
					params2[params2.length] = newParamName + "=" + newParamVal;						
			}
			
			thisLink[1] = params2.join("&");
			if(thisLink[1] != "")
				newUrl = thisLink.join("?");
			else
				newUrl = thisLink[0];
		}
		else
		{
			if(newParamName != undefined && newParamVal != "")
				newUrl = url + "?" + newParamName + "=" + newParamVal;
		}
		url = newUrl;
	}
	return newUrl;
}
	
