/* Convert vertical scrolls to horizontal sliders
-------------------------------------------------------------------------- */

dojo.require("dojo.fx");

var slideOk = true;
	
function initListScroll() {
	dojo.query(".listScroll").forEach(function(listTarget){
											   
		//var listWidth = dojo.coords(listTarget).w;		
                var listWidth = dojo.coords(listTarget).w ? dojo.coords(listTarget).w : 260; // quick fix to solve display:none issue // TODO
		var liNum = dojo.query("li", listTarget).length;
		var holderWidth = Math.ceil(liNum/5)*listWidth;
		var ulHtml = '<ul class="linkList" style="width:'+listWidth+'px">';
		
		var newList = ulHtml;
		dojo.query("li", listTarget).forEach(function(e, index){
			newList += '<li>'+e.innerHTML+'</li>';
			if(index % 5 == 4) newList += '</ul>'+ulHtml;
		});   
		newList += '</ul>';

		var replaceCode = '<div class="listScrollWindow" style="width:'+listWidth+'px">'
		+ '<div class="listScrollUlHolder" style="width:'+holderWidth+'px">'+newList+'</div>';
		
		if(liNum > 5) { // chop org ul to 5 li per ul
			replaceCode += '<a class="scrollPre" onclick="slideIt(this, \'pre\')">Förra</a>'
			+ '<a class="scrollNext" onclick="slideIt(this, \'next\')">Nästa</a>';
		}

		replaceCode += '</div>';
				
		dojo.place(replaceCode, listTarget, "replace");
	});
}

function slideIt(target, direction) {
	var mask = target.parentNode;
	var holder = target.parentNode.childNodes[0];
	var holderCoords = dojo.coords(holder);
	var maskCoords = dojo.coords(mask);
	var scrollPre = dojo.query(mask.childNodes[1]);
	var scrollNext = dojo.query(mask.childNodes[2]);
	var addthis = direction == 'next' ? maskCoords.w*-1 : maskCoords.w;
	var newValue = (holderCoords.l + addthis);
	var slideArgs = {
		node: holder,
		left: newValue,
		unit: "px",
		onEnd: function(){
			slideOk = true; // activate slider
		}
	};
	
	if(slideOk) {
		slideOk = false; // inactivate sliders
		if(newValue >= 0) { scrollPre.style("display","none"); }else{ scrollPre.style("display","block"); }
		if(newValue <= (maskCoords.w - holderCoords.w)) { scrollNext.style("display","none"); }else{ scrollNext.style("display","block"); }
		dojo.fx.slideTo(slideArgs).play();
	}
}

dojo.addOnLoad(initListScroll);

