var TOP = 0;
var BOTTOM = 1;

/**
 *
 * @param list the id of the list to apply a class a selection 
 * @param className The classname to apply to a selection
 * @param limit Show the first or last <limit> elements. This can be <= 0 or null
 * @param trimTo Show the <trimTo> part of the list. <trimTo> can be either TOP, BOTTOM or null
 *
 */
function trimList(list, className, limit, trimTo) {
	var lists = $(list).getElementsByTagName('UL');
	var lBound, uBound, myLimit;
	
	if (lists.length == 1) {
		var listItems = lists[0].getElementsByTagName('LI');
		
		if (parseInt(limit, 10) >= 0) {
			myLimit = parseInt(limit, 10);
		} else {
			myLimit = listItems.length;
		}

		if (parseInt(trimTo, 10) <= TOP) {
		  uBound = myLimit;
		  lBound = 0;
		} else if (parseInt(trimTo, 10) == BOTTOM) {
		  uBound = listItems.length;
		  lBound = listItems.length - myLimit;
		} else {
		  uBound = listItems.length;
		  lBound = 0;
		}

		if (lBound <= uBound) {
			for (var i = 0; i < listItems.length; i++) {
				if (i < lBound || i >= uBound) {
					listItems[i].className = className + " hide";
				} else {
					listItems[i].className = className;
				}
			}
		}
	}
}

function showProps(myObject) {
	var s = "";
	if (typeof myObject != "string") {
		try {
			for (var property in myObject) {
				s = s + ", " + property + " = " + myObject[property];
			}
		} catch(err) {
			s = "There was a problem iterating properties of the object";
			if (myObject.id) { s += " '" + myObject.id + "'"; }
			s += ".";
		}
	}
	alert(s);
}

function getElementsByTagNames(list,obj) {
	if (!obj) { obj = document; }
	var tagNames = list.split(',');
	var resultArray = [];
	for (var i=0;i<tagNames.length;i++) {
		var tags = obj.getElementsByTagName(tagNames[i]);
		for (var j=0;j<tags.length;j++) {
			resultArray.push(tags[j]);
		}
	}
	var testNode = resultArray[0];
	if (!testNode) { return []; }
	if (testNode.sourceIndex) {
		resultArray.sort(function (a,b) {
				return a.sourceIndex - b.sourceIndex;
		});
	}
	else if (testNode.compareDocumentPosition) {
		resultArray.sort(function (a,b) {
				return 3 - (a.compareDocumentPosition(b) & 6);
		});
	}
	return resultArray;
}


function checkRequiredFields(formID) {

    var f = $(formID);
    var elms = getElementsByTagNames('input,select,textarea',f);
    var elemArray = [];
	var ready = 0;
    
    for(var i = 0; i < elms.length; i = i + 1) {
        if (elms[i].parentNode.className.indexOf("required") != -1) {
            elemArray.push(elms[i]);
        }
    }
	
	// tjek alle krævede felter - og tæl, hvor mange, der er
	for(var j = 0; j < elemArray.length; j = j + 1) {
		if (elemArray[j].value.trim() !== "") {
			ready = ready + 1;
		}
	}
	
	// Tænd for knappen, hvis der er indhold i alle krævede felter
	if (ready == elemArray.length) {
        return false;
	} else {
        return true;
	}
}