﻿var DanBolig = DanBolig || {};

DanBolig.Grids = {};
DanBolig.Grids.Common = (function() {
	var grids = null;
	function findGrids() {
		grids = $$("table.grid");
	}
    
	return {
		init: function() {
			if (grids === null) findGrids();
			this.initHover();
			this.initDoubleRowedReferenceList();
			//this.initGridLinks(); not used any longer
		},
		initHover: function() {
			if (YAHOO.env.ua.ie > 0 && YAHOO.env.ua.ie <= 6) {
				if (grids === null) findGrids();
				var tGrids = YAHOO.util.Selector.filter(grids, ":not(.no-hover)");
				for (var i=0; i<tGrids.length; i++) {
					var trs = $$("tbody tr", tGrids[i]);
					Valtech.util.suckerfish(trs);
				}
			}
		},
		initGridLinks: function() {
			var links = $$("table.grid tbody td.grid-row-link a");           
			for (var i=0; i<links.length; i++) {
				var node = links[i];
				var url = node.href;
				while (node && node.nodeName.toLowerCase() != "tr") node = node.parentNode;
				node.style.cursor = "pointer";
				node.linkURL = url;
				$E.on(node, "click", function() {
					document.location = this.linkURL;
				});
			}
		},
		initDoubleRowedReferenceList: function() {
			$D.addClass($$('table.grid.double-rowed-references tbody tr td:not(:first-child)'), "no-divider");
		}
	};
})();

DanBolig.Grids.Collapsable = (function() {
	function setupGrid(root) {
		var animbtns = $$("#textarea span.animbtn");//$D.getElementsByClassName('animbtn','span','textarea');
		var anim;
		for(var i=0; i<animbtns.length; i++) {
			animbtns[i].animatee =  $D.getPreviousSibling(animbtns[i].parentNode);
			animbtns[i].animateeheight = animbtns[i].animatee.offsetHeight;
        
			var tbody = $D.getLastChild($D.getFirstChild(animbtns[i].animatee))
			var tr = $D.getFirstChild(tbody);
			animbtns[i].animateeminheight = animbtns[i].animateeheight - tbody.offsetHeight + tr.offsetHeight + (YAHOO.env.ua.ie?1:0);
			animbtns[i].animateeimgs = $$("img", animbtns[i].animatee);
			animbtns[i].animateeimgs.shift();

			anim = new YAHOO.util.Anim(animbtns[i].animatee,{height: { to: animbtns[i].animateeminheight }});
			animbtns[i].animateeisopen = false;
			animbtns[i].innerHTML='Se alle';
			anim.duration = 0;
			if(YAHOO.env.ua.ie) {
				for(var j=0; j<animbtns[i].animateeimgs.length; j++) {
					$D.setStyle(animbtns[i].animateeimgs[j], "display", "none");
				}
			}
			anim.animate();

			$E.addListener(
				animbtns[i],
				'click',      
				function(e,btn) {
					var anim = new YAHOO.util.Anim(btn.animatee,{height: { to: btn.animateeisopen?btn.animateeminheight:btn.animateeheight }});
					btn.innerHTML=btn.animateeisopen?'Se alle':'Luk';
					anim.duration = 0.1;
					if(YAHOO.env.ua.ie) {
						for(var i=0; i<btn.animateeimgs.length; i++) {
							$D.setStyle(btn.animateeimgs[i], "display", btn.animateeisopen?'none':'');
						}
					}
					anim.animate();
					btn.animateeisopen=!btn.animateeisopen;
				},
				animbtns[i]
			);
		}
	}
    
	return {
		init: function() {
			var roots = $D.getElementsByClassName('collapsable-grid', 'div','textarea');
			if (!roots || roots.length == 0)
				return;
            
			var func = setupGrid;
			setTimeout(func, 10);
			/*if (YAHOO.env.ua.gecko)
				setTimeout(func, 10);
			else
				func();*/
		}
	}
})();

$E.onDOMReady(function() {
	DanBolig.Grids.Common.init();
});
$E.on(window, "load", DanBolig.Grids.Collapsable.init);
