function getType(obj) {
	name = (obj.nodeName)?obj.nodeName.toLowerCase():obj[0].nodeName.toLowerCase();
	switch (name) {
		case "input":
			ret = (obj.type)?obj.type.toLowerCase():obj[0].type.toLowerCase();
		break;
		default:
			ret = name;
		break;
	}
	return ret;
}

function getValue(obj) {
	if (!obj) return "";
	
	var type = getType(obj);
	var value = new Array();
	
	switch (type) {
		case "button":
		case "text":
		case "textarea":
		case "password":
		case "submit":
		case "hidden":
			value[value.length] = (obj.value) ? obj.value : "";
		break;
		case "checkbox":
		case "radio":
			if( !!obj[0] && !obj.value ){
				// loop through all checkbox elements, and if a checkbox is checked, grab the value
				for (var i=0; i < obj.length; i++) if (obj[i].checked) value[value.length] = obj[i].value;
				// otherwise, store the value of the field (if checkmarked) into the list
			} else if (obj.checked) {
				value[value.length] = obj.value;
			}
		break;
		case "select":
			for( var i=0; i < obj.length; i++ ){
			// if the element is selected, get the selected values (unless it's a dummy container)
				if(obj[i].selected) {
					// append the selected value, if the value property doesn't exist, use the text
					value[value.length] = obj[i].value;
				}
			}
			//value[value.length] = (obj.selectedIndex == -1) ? "" : obj[obj.selectedIndex].value;
		break;
		default:
			value[value.length] = obj.innerHTML;
		break;
	}
	return value.join(",");
}

function setValue(obj,value) {
	if (!obj) return "";
	var type = getType(obj);
	switch (type) {
		case "button":
		case "text":
		case "textarea":
		case "password":
		case "submit":
			obj.value = (typeof(value)=="object" && value.join)?value.join(","):value;
		break;
		case "checkbox":
		case "radio":
		case "select":
			// if more then one checkbox
			var tmpvalue = Array();
			var found_one = false;
			var found_i = Array();
			var property = (type=="select")?"selected":"checked";
			if (typeof(value)=="object") tmpvalue = value;
			else tmpvalue[0] = value;
			for (var tmpi=0; tmpi < tmpvalue.length; tmpi++) {
				value = tmpvalue[tmpi];
				//alert(obj.value);
				if( !!obj[0] && (!obj.value || type=="select")){
					// surround the value by commas for detection						
					value = "," + value + ",";
					// loop through all checkbox elements, and if a checkbox is checked, grab the value
					for( var i=0; i < obj.length; i++ ){
						if( value.indexOf("," + obj[i].value + ",") > -1 ) {
							obj[i][property] = true;
							found_i[i] = true;
						}
						else if (!found_i[i]) {
							obj[i][property] = false;
						}
					}
				// otherwise, store the value of the field (if checkmarked) into the list
				} else if( obj.value == value ) {
					obj[property] = true;
					found_one = true;
				} else if (!found_one) {
					obj[property] = false;
				}
			}
		break;
		default:
			obj.innerHTML = (typeof(value)=="object" && value.join)?value.join(","):value;
		break;
	}
}

function setValueByName(name,value) {
	obj = document.getElementById(name);
	if (obj) this.setValue(obj,value);
}
