function populateForm(form,data) {
	data.each( function(temp) {
		var field = $(form).elements[temp.key];
		if (field) {
			switch (field.type) {
			  case 'input':
			  case 'password':
			  case 'text':
			  case 'hidden':
				field.value = temp.value;
				break;
			  case 'select-one':
				for (i=0; i<field.length; i++) {
					if (field.options[i].value == temp.value) {
						field.selectedIndex = i;
						break;
					}
				}
				break;
			  case 'checkbox':
				if (field.value == temp.value) {
					field.checked = true;
				}
				break;
			}
		}
	});
}


function addErrorMessage(el, msg, elp) {
	msg = msg || 'Required';
	msg = msg.strip();
	elp = elp || el.parentNode;	// the surrounding <label> or whatever is specified
	if (elp) {
		Element.addClassName( elp, 'error' );
		if (msg) {
			new Insertion.Bottom( elp, '<em class="error_msg">'+msg+'</em>' );
		}
	}
}

function removeErrorMessage(el, elp) {
	elp = elp || el.parentNode;	// the surrounding <label>
	if (elp) {
		Element.removeClassName( elp, 'error' );
		temp = elp.getElementsByTagName('em');
		if (temp && temp[0]) {
			Element.remove( temp[0] );
		}
	}
}

function hasFileExtension( str, exts ) {
	i = str.lastIndexOf('.');
	if (i==-1) return false;
	ext = str.substr(i+1).toLowerCase();
	return exts.any( function(temp) {
		return ext==temp.toLowerCase();
	});
}
