(function(a){

    a.fn.mod_scroll=function(p){
        var p=p||{};

// Get scroll settings
        var ste=p&&p.mod_scrolltransition_effect?p.mod_scrolltransition_effect:"fly";
        var sint=p&&p.mod_scrolltime_interval?p.mod_scrolltime_interval:"2000";
        var sw=p&&p.mod_scrollwindow_width?p.mod_scrollwindow_width:"400";
        var sh=p&&p.mod_scrollwindow_height?p.mod_scrollwindow_height:"400";
        var sp=p&&p.mod_scroll_speed?p.mod_scroll_speed:"600";
        var sal=p&&p.mod_scrollwindow_align?p.mod_scrollwindow_align:"center";
        var sbst=p&&p.mod_scrollborder_style?p.mod_scrollborder_style:"solid";
        var sbs=p&&p.mod_scrollborder_size?p.mod_scrollborder_size:"1";
        var sbc=p&&p.mod_scrollborder_scolor?p.mod_scrollborder_scolor:"#000";
        var sbgc=p&&p.mod_scrollbg_color?p.mod_scrollbg_color:"#FFF";
        var sid=p&&p.mod_scroll_id?p.mod_scroll_id:"1";
        var srow=p&&p.mod_scroll_row?p.mod_scroll_row:"1";
        var scol=p&&p.mod_scroll_col?p.mod_scroll_col:"1";
		
		
// Set scroll settings		
        var v;

        var x=a(this);
        var sitems=x.find("ul:first").children("li").length;
		var scroll_ul = $("ul.scroll_ul_"+sid);
		var mod_scroll = "#mod_scroll_"+sid;

		var stw=sw*scol;
		var sth=sh*srow;
		var saip=scol*srow;
		var sas=Math.ceil(sitems/saip);
		var sti=sas*saip;
		var cslide = new Array();
		var nslide = new Array();
		var curslide = new Array();
		var nexslide = new Array();
        cslide[sid]=1;
		
createslides();
 showvar(); // temp
 init();
$('.scroll_ul_'+sid).css('visibility','visible');
$('.scroll_ul_'+sid).css('display','block');

v=setTimeout(play,sint);


function showvar(){
	$('#test').html("Scroll:"+ste+" ID:"+sid
+"<br>Rows:"+srow
+"<br>Cols:"+scol
+"<br>Width:"+sw
+"<br>Height:"+sh
+"<br>Interval:"+sint
+"<br>Speed:"+sp
+"<br>Aantal:"+sitems
);


$('#test2').html("Scroll:"+ste+" ID:"+sid
+"<br>Rows srow:"+srow
+"<br>Cols scol:"+scol
+"<br>Width stw:"+stw
+"<br>Height sth:"+sth
+"<br>Interval sint:"+sint
+"<br>Speed: sp:"+sp
+"<br>Aantal per slide saip:"+saip
+"<br>Totaal slides sas:"+sas
+"<br>Totaal items sti:"+sti
);	
}

function createslides(){
	box='<div id="slides_box_'+sid+'" class="slides_box_'+sid+'" style="padding: 0px; margin: 0px; overflow: hidden; position: absolute;"></div>'; x.find("ul:first").wrap(box);
	slidediv='<div id="slide_'+sid+'_'; slidedive='</div>';
	rowdiv='<div style="width:'+stw+'px; height:'+sh+'px;">'; rowdive='</div><div style="CLEAR: both"></div>';
	coldiv='<div style="width:'+sw+'px; height:'+sh+'px; float:left; text-align:'+sal+'">';
	if (sal=="center"){coldiv=coldiv+''; coldive='</div>';} else {coldive='</div>'};

	nscroll=""; tli=1; 
	// srow= Aantal rijen sas=Aantal Slides
	// Vul slides
	for (var tas=1; tas<(parseInt(sas)+1); tas++){
		nscroll=nscroll+slidediv+tas+'">';
		for (var tir=1; tir<(parseInt(srow)+1); tir++) {
			nscroll=nscroll+rowdiv;
			for (var tic=1; tic<(parseInt(scol)+1); tic++){sih=scroll_ul.find("li:nth-child("+tli+")").html(); if(tli>sitems){sih="";};nscroll=nscroll+coldiv+sih+coldive;  tli++}
			nscroll=nscroll+rowdive;
		}
	nscroll=nscroll+slidedive;
	}
$(mod_scroll).html(nscroll);
$(mod_scroll).css("width",stw+"px").css("height",sth+"px").css("border-style",sbst).css("border-width",sbs+"px").css("border-scolor",sbc).css("background-color",sbgc).css("overflow","hidden");
}

function init(){
	// hide slides
	for (var stes=1; stes<(parseInt(sas)+1); stes++){
	fadeslide="#slide_"+sid+"_"+(parseInt(stes));
	if (stes>1){x.find(fadeslide).hide();}
	x.find(fadeslide).css("position","absolute");
	}
	x.hover(
		function(){
			stop();
		},
		function(){
			v=setTimeout(play,sint);
		}
	);
}
        
function play(){
	clearTimeout(v); nslide[sid]=cslide[sid]+1; if (cslide[sid]==sas){nslide[sid]=1;}
	curslide[sid]="#slide_"+sid+'_'+cslide[sid];
	nexslide[sid]="#slide_"+sid+'_'+nslide[sid];
	if (sid==1){$('#test4').html("cslide:"+cslide[1]+" ID:"+sid+"cslide:"+curslide[sid]+" nslide:"+nexslide[sid])}
	if (sid==3){$('#test3').html("cslide:"+cslide[3]+" ID:"+sid+"cslide:"+curslide[sid]+" nslide:"+nexslide[sid])}

	if(cslide[sid]<=sas) {
		switch(ste){
			case "fade_in":
				x.find(curslide[sid]).fadeOut("slow",function(){x.find(curslide[sid]).hide(); x.find(nexslide[sid]).fadeIn("slow");});
			break;
			case "scroll_up":
				x.find(curslide[sid]).show().animate({top:-(sth)},{duration: parseInt(sp)});
				x.find(nexslide[sid]).css("top",(sth));
				x.find(nexslide[sid]).show().animate({top:0},{duration: parseInt(sp)});
            break;
			case "scroll_up_fade":
				x.find(curslide[sid]).show().animate({top:-(sth), opacity:0},{duration: parseInt(sp)});
				x.find(nexslide[sid]).css("top",(sth)); x.find(nexslide[sid]).show().animate({opacity:0},{duration: 0});
				x.find(nexslide[sid]).show().animate({top:0, opacity:1},{duration: parseInt(sp)});
            break;
			case "scroll_up_damped":
				x.find(curslide[sid]).show().animate({top:-(sth)},{duration: parseInt(sp)});
				x.find(nexslide[sid]).css("top",(sth));
				x.find(nexslide[sid]).show().animate({top:-10},{duration: parseInt(sp)});
				x.find(nexslide[sid]).show().animate({top:0},{duration: parseInt(sp)});

            break;
			case "scroll_down":
				x.find(curslide[sid]).show().animate({top:sth},{duration: parseInt(sp)});
				x.find(nexslide[sid]).css("top",-(sth));
				x.find(nexslide[sid]).show().animate({top:0},{duration: parseInt(sp)});
            break;
			case "scroll_down_fade":
				x.find(curslide[sid]).show().animate({top:sth, opacity:0},{duration: parseInt(sp)});
				x.find(nexslide[sid]).css("top",-(sth)); x.find(nexslide[sid]).show().animate({opacity:0},{duration: 0});
				x.find(nexslide[sid]).show().animate({top:0, opacity:1},{duration: parseInt(sp)});
            break;
			case "scroll_down_damped":
				x.find(curslide[sid]).show().animate({top:sth},{duration: parseInt(sp)});
				x.find(nexslide[sid]).css("top",-(sth));
				x.find(nexslide[sid]).show().animate({top:10},{duration: parseInt(sp)});
				x.find(nexslide[sid]).show().animate({top:0},{duration: parseInt(sp)});
            break;
			case "scroll_left":
				x.find(curslide[sid]).show().animate({left:-(stw)},{duration: parseInt(sp)});
				x.find(nexslide[sid]).css("left",stw);
				x.find(nexslide[sid]).show().animate({left:0},{duration: parseInt(sp)});
            break;
			case "scroll_left_fade":
				x.find(curslide[sid]).show().animate({left:-(stw), opacity:0},{duration: parseInt(sp)});
				x.find(nexslide[sid]).css("left",stw); x.find(nexslide[sid]).show().animate({opacity:0},{duration: 0});
				x.find(nexslide[sid]).show().animate({left:0, opacity:1},{duration: parseInt(sp)});
            break;
			case "scroll_left_damped":
				x.find(curslide[sid]).show().animate({left:-(stw)},{duration: parseInt(sp)});
				x.find(nexslide[sid]).css("left",stw);
				x.find(nexslide[sid]).show().animate({left:-10},{duration: parseInt(sp)});
				x.find(nexslide[sid]).show().animate({left:0},{duration: parseInt(sp)});
            break;
			case "scroll_right":
				x.find(curslide[sid]).show().animate({left:stw},{duration: parseInt(sp)});
				x.find(nexslide[sid]).css("left",-(stw));
				x.find(nexslide[sid]).show().animate({left:0},{duration: parseInt(sp)});
            break;
			case "scroll_right_damped":
				x.find(curslide[sid]).show().animate({left:stw},{duration: parseInt(sp)});
				x.find(nexslide[sid]).css("left",-(stw));
				x.find(nexslide[sid]).show().animate({left:10},{duration: parseInt(sp)});
				x.find(nexslide[sid]).show().animate({left:0},{duration: parseInt(sp)});
            break;
			case "scroll_right_fade":
				x.find(curslide[sid]).show().animate({left:stw, opacity:0},{duration: parseInt(sp)});
				x.find(nexslide[sid]).css("left",-(stw)); x.find(nexslide[sid]).show().animate({opacity:0},{duration:0})
				x.find(nexslide[sid]).show().animate({left:0, opacity:1},{duration: parseInt(sp)});
            break;
			}

   			cslide[sid]++;
		}
	if (cslide[sid]>sas) {cslide[sid]=1;}
	v=setTimeout(play,sint)
}
	
function stop(){
clearTimeout(v);
}
        
        
}
})(jQuery);
