//======================
//====================== limit the number of items displayed in a list,
//====================== and hide and reveal them when 'more' and 'less' buttons are clicked
//====================== the amount of items displayed is defined by the classname in the html
limitList = function() {

    this.listItems = new Array;
    this.controls = new Array;
    var startNode = document.getElementById("page-content");
    var candidates = startNode.getElementsByTagName("ul");

    for (var c = 0; c < candidates.length; c++) {
        if (candidates[c].className == "expander") {
            var listElements = candidates[c].getElementsByTagName("li");
//alert("oi"+" candidates: "+listElements.length);
            for (var i = 0; i < listElements.length; i++) {
                if (listElements[i].className.indexOf("show") != -1) {
                    this.more = listElements[i];
                    this.cName = listElements[i].className;
                } else if (listElements[i].className == "hidden") {
                    this.less = listElements[i];
                } else {
                    this.listItems[this.listItems.length] = listElements[i];
                }
            }
            this.controls[this.controls.length] = new Control(this, this.more, this.cName, this.less, this.listItems);
        }
        this.listItems = null;
        this.listItems = new Array;
    }
}
Control = function (limitList, more, cName, less, listItems) {
    this.limitList = limitList;
    this.more = more;
    this.cName = cName;
    this.less = less;
    this.listItems = listItems;
    this.more.Control = this;
    this.cName.Control = this;
    this.less.Control = this;
    this.listItems.Control = this;
    this.Control = this;
    this.cnArr = cName.split("show");
    this.amount = this.cnArr[1];
    this.Control.hideItems();
    this.more.onclick = function () {this.Control.showItems();return false;};
    this.less.onclick = function () {this.Control.hideItems();return false;};
}
Control.prototype.hideItems = function () {
    for (var c = this.amount; c < this.listItems.length; c++) {
        this.listItems[c].style.display = "none";
        this.more.className = "less-list";
        this.less.className = "hidden";
    }
}

Control.prototype.showItems = function () {
    for (var c = this.amount; c < this.listItems.length; c++) {
        this.listItems[c].style.display = "block";
        this.more.className = "hidden";
        this.less.className = "more-list";
    }
}

function checkAllCheckMarks() {

    var contentArea = document.getElementById('page-content');
    var anchorsNeeded = Lib.getElementsByClassName("select-all", "a", contentArea);
    var checkMarksStatus = "unchecked";
    for (var i = 0; i < anchorsNeeded.length; i++) {
        anchorsNeeded[i].onclick = function() {

            if (checkMarksStatus == "unchecked") {

                var currentFieldset = this.parentNode;
                var checkMarks = currentFieldset.getElementsByTagName('input');

                        for (var k = 0; k < checkMarks.length; k++) {
                            if (checkMarks[k].type == 'checkbox') {
                                checkMarks[k].checked = true;
                                checkMarksStatus = "checked";
                            }
                        }
               // change link
                this.innerHTML = "Deselecteer allemaal";
                //alert("oi");
                return false;

            }
            if (checkMarksStatus == "checked") {

                var currentFieldset = this.parentNode;
                var checkMarks = currentFieldset.getElementsByTagName('input');

                        for (var k = 0; k < checkMarks.length; k++) {
                            if (checkMarks[k].type == 'checkbox') {
                                checkMarks[k].checked = false;
                                checkMarksStatus = "unchecked";
                            }
                        }
               // change link
                this.innerHTML = "Selecteer allemaal";
                //alert("oi");
                return false;

            }


        }
    }
}

/* <documentation about="Lib.addEvent" type="FUNCTION CALL">
	<summary>Calling Lib.addEvent:</summary>
</documentation>*/
Lib.addEvent(window, "load", limitList);
Lib.addEvent(window, "load", checkAllCheckMarks);
//Lib.eventCache.add(window, "load", BW.init, false);
       //limitList();
       //checkAllCheckMarks();

