/************ tablerowcollapse ****************************/
var tablerowcollapse = {
	iconSelector_ : "td a.collapserow",
	linkSelector_ : "td a.collapserowlink",
	
	populators_ : {},
	
	init : function(elm){
		this.doSelector(this.iconSelector_,elm);
		this.doSelector(this.linkSelector_,elm);
	},
	
	doSelector : function(selector,elm)
	{
			if(!elm)elm = document.body;
			var links = DOM.get(selector,elm);
	    	var anchorPattrn = new RegExp("^.*#(.+)$");
	    	if(links)
	    	{
		    	var i = links.length;
		    	while (i--)
		    	{
		      		var lnk = links[i];
		      		var blockId = lnk.href.replace(anchorPattrn, "$1");
			      	if (!blockId) { continue; }
			      	var blockElm = document.getElementById(blockId);
			      	if (!blockElm) {		      		
			      	 continue; }
			      	var headRow = lnk.parentNode.parentNode;
			      	lnk.childRow = blockElm;
			      	if(DOM.hasClass(headRow,"headrow-closed"))
			      	{
			      		cssU.addClass(lnk.parentNode,"row-closed");
			      		DOM.addClass(blockElm,"hidden_field");
			      	}
			      	else
			      	{
			      		cssU.addClass(lnk.parentNode,"row-open");
			      		DOM.addClass(blockElm,"colornanar1");
			      	}
			      	//lnk.href="#";
		      		addEvent(lnk, "click", this.toggle);
			    	//Finna tÃ¯Â¿Â½fluna og hengja linkana Ã¯Â¿Â½ hana.
					var tElm = domU.getParent(lnk,"TABLE");
					if(!tElm.links) 
					{
						tElm.links = [];
				      	if(cssU.hasClass(tElm,"sortable"))
				      	{
				      		tblSort_.makeSortable(tElm);
				      	}
					}
					tElm.links[tElm.links.length] = lnk;
		      	}
		     }
	},
	
	addTable : function(id)
	{
		var tbl = document.getElementById(id);
		if(tbl)
		{
			var links = tbl.getElementsByTagName("a");
	    	var anchorPattrn = new RegExp("^.+#(.+)$");
			var popperPattrn = new RegExp("\\b(popper)\\b");
	    	var i = links.length;
	    	tbl.links = [];
	    	var j = 0;
	    	while (i--)
	    	{
	      		var lnk = links[i];
	      		if(lnk.className=='collapserow' || lnk.className=='collapserowlink')
	      		{
		      		tbl.links[j] = lnk;
		      		j++;
		      		var blockId = lnk.href.replace(anchorPattrn, "$1");
			      	if (!blockId) { continue; }
			      	var blockElm = document.getElementById(blockId);
			      	if (!blockElm) { continue; }
			      	var headRow = lnk.parentNode.parentNode;
			      	lnk.childRow = blockElm;
			      	if(cssU.hasClass(headRow,"headrow-closed"))
			      	{
			      		cssU.addClass(lnk.parentNode,"row-closed");
			      		cssU.addClass(blockElm,"hidden_field");
			      	}
			      	else
			      	{
			      		cssU.addClass(lnk.parentNode,"row-open");
			      		cssU.addClass(blockElm,"colornanar1");
			      	}
			      	lnk.href="#";
		      		addEvent(lnk, "click", this.toggle);
	      		}
	      		else if(lnk.className.match(popperPattrn))
	      		{
				      var blockId = lnk.href.replace(anchorPattrn, "$1");
				      if (!blockId) { continue; }
				      var blockElm = document.getElementById(blockId);
				      if (!blockElm) { continue; }
				
				      blockPopper.init(lnk);
	      		}
	      	}
	      	if(cssU.hasClass(tbl,"sortable"))
	      	{
	      		tblSort_.makeSortable(tbl);
	      	}
	      }
	},
	
	toggle : function(link)
	{
		if(!link || link.tagName!="A") link = this;
		cssU.toggleClass(link.parentNode.parentNode,"headrow-open","headrow-closed");
		cssU.toggleClass(link.parentNode,"row-open","row-closed");
		cssU.toggleClass(link.childRow,"hidden_field","colornanar1");
		if(!cssU.hasClass(link.childRow,"populated"))
		{
			var tElm = link.childRow.parentNode;
			if(tElm.tagName=="TBODY")tElm = tElm.parentNode;
			if(tablerowcollapse.populators_[tElm.id])
    		{
    			var tdElm = link.childRow.getElementsByTagName("TD")[0];
    			tablerowcollapse.populators_[tElm.id].populate(tdElm);
    		}
    		else
    		{
    			var cList = tElm.className.split(' ');
    			for(var i=0;i<cList.length;i++)
    			{
    				if(tablerowcollapse.populators_[cList[i]])
    				{
		    			var tdElm = link.childRow.getElementsByTagName("TD")[0];
		    			tablerowcollapse.populators_[cList[i]].populate(tdElm);
		    			break;
    				}
    			}
    		}
    		cssU.addClass(link.childRow,"populated");
		}
		return false;
	},
	
	expand : function(link)
	{
		if(!link) link = this;
		if(cssU.hasClass(link.childRow,"hidden_field"))
		{
			tablerowcollapse.toggle(link);
		}
		return false;
	},
	
	collapse : function(link)
	{
		if(!link) link = this;
		if(cssU.hasClass(link.childRow,"colornanar1"))
		{
			tablerowcollapse.toggle(link);
		}
		return false;
	},
	
	expandAll : function(tbl)
	{
		if(tbl.links)
		{
	    	var i = tbl.links.length;
	    	while (i--)
	    	{
	    		tablerowcollapse.expand(tbl.links[i]);
			}
		}
		return false;
	},

	collapseAll : function(tbl)
	{
		if(tbl.links)
		{
	    	var i = tbl.links.length;
	    	while (i--)
	    	{
	    		tablerowcollapse.collapse(tbl.links[i]);
			}
		}
		return false;
	}

};

