/*
align: (required)
  "v": vertical
  "h": horizontal
direction: (required)
  "b": back
  "f": forward  
speed: (required)
  (int)
speed_step: (required)
  (int)
box_size: (if vertical then box_size:HEIGHT | if horizontal then box_size:WIDTH)
  (int) or (FALSE)
  
mouseover:
  (true or false or stop)
mouseover_speed:
  (int)
mouseover_speed_step:
  (int)
  
animation:
  (true or false)
animation_speed:
  (int)
animation_speed_step:
  (int)
*/
var boxsize = 0;
var intervalID;
var node;
var oldnode;
var offset;
var leftoffset;
var topoffset;
var nodeid;
var node_name;
var node_class;
var sebesseg;
var cserenode;
var alapirany;
var stepsize;
var irany;
var inboxsize;
var enough;
var boxnumber = 1;
var k = 1;
var smallnode;
var bignode;
var node_style;
function porgetv(irany) {
	/* window size check */

	 offset = oldnode.offset();
	 leftoff = offset.left;
	 topoff = offset.top;
	 //console.log(leftoff+' '+leftoffset);
	 if (leftoffset != leftoff) {
		node.css({'left':leftoff+'px'});
		leftoffset = leftoff;
	 } else if (topoffset != topoff) {
		node.css({'top':topoff+'px'});
		topoffset = topoff;
	 }
	 
		kepekszama = boxsize+'px';
		$('#'+nodeid).children('.'+node_class).css('position','absolute');
		if (irany == 'f') {
      
      $('#'+nodeid).children('.'+node_class).animate({top:'-='+stepsize+'px'},0);

  	if (parseInt($('#'+nodeid).children(':eq(0)').css('top')) <= (boxsize-2*boxsize))  {        
  			 clearInterval(intervalID);

  			 $('#'+nodeid).children('.gergo_slider_back').before('<'+node_name+' class="'+node_class+'" style="'+node_style+' position:absolute; height:'+boxsize+'px; top:+'+kepekszama+'">'+$('#'+nodeid).children(':eq(0)').html()+'</'+node_name+'>'); 
  			 $('#'+nodeid).children(':eq(0)').remove();
         $('#'+nodeid).children(':eq(1)').css('z-index','10');
          intervalID = null;
  			 intervalID = setInterval("porgetv('"+irany+"')", sebesseg); 
				    
  		}

  		if ((parseInt($('#'+nodeid).children(':eq(1)').css('top'))) < (0-stepsize))  {      
  			 clearInterval(intervalID);
  			 $('#'+nodeid).children('.gergo_slider_back').before('<'+node_name+' class="'+node_class+'" style="'+node_style+' position:absolute; height:'+boxsize+'px; top:-'+kepekszama+'">'+$('#'+nodeid).children(':eq(0)').html()+'</'+node_name+'>');
  			 $('#'+nodeid).children(':eq(0)').remove();
         $('#'+nodeid).children(':eq(1)').css('z-index','10');
         
         $('#'+nodeid).children(':eq(1)').animate({top:'+'+boxsize+'px'},0); 

          intervalID = null;
  			 intervalID = setInterval("porgetv('"+irany+"')", sebesseg); 
  		}     
    } else if (irany == 'b') {
    
      $('#'+nodeid).children('.'+node_class).animate({top:'+='+stepsize+'px'},0);
  		if (parseInt($('#'+nodeid).children(':eq(0)').css('top')) >= (boxsize))  {      
  			 clearInterval(intervalID);
  			 $('#'+nodeid).children('.gergo_slider_back').before('<'+node_name+' class="'+node_class+'" style="'+node_style+' position:absolute; height:'+boxsize+'px; top:-'+kepekszama+'">'+$('#'+nodeid).children(':eq(0)').html()+'</'+node_name+'>');
  			 $('#'+nodeid).children(':eq(0)').remove();
         $('#'+nodeid).children(':eq(0)').css('z-index','10');
          intervalID = null;
  			 intervalID = setInterval("porgetv('"+irany+"')", sebesseg); 
  		}     

  		if ((parseInt($('#'+nodeid).children(':eq(1)').css('top'))) > (boxsize+stepsize))  {      
  			 clearInterval(intervalID);
  			 $('#'+nodeid).prepend('<'+node_name+' class="'+node_class+'" style="'+node_style+' position:absolute; height:'+boxsize+'px; top:-'+kepekszama+'">'+$('#'+nodeid).children(':eq(0)').html()+'</'+node_name+'>');
  			 $('#'+nodeid).children(':eq(2)').remove();
         $('#'+nodeid).children(':eq(1)').css('z-index','10');
         $('#'+nodeid).children(':eq(0)').animate({top:'-'+boxsize+'px'},0); 
          intervalID = null;
  			 intervalID = setInterval("porgetv('"+irany+"')", sebesseg); 
  		} 
        
    
    }        
}  
function porgeth(irany) {
	 offset = oldnode.offset();
	 leftoff = offset.left;
	 topoff = offset.top;
	 if (leftoffset != leftoff) {
		node.css({'left':leftoff+'px'});
		leftoffset = leftoff;
	 } else if (topoffset != topoff) {
		node.css({'top':topoff+'px'});
		topoffset = topoff;
	 }
    $('#'+nodeid).children('.'+node_class).css('position','absolute');
		kepekszama = boxsize+'px';
		if (irany == 'f') {
      $('#'+nodeid).children('.'+node_class).animate({left:'-='+stepsize+'px'},0);
  		if (parseInt($('#'+nodeid).children(':eq(0)').css('left')) <= (boxsize-2*boxsize))  {  
   
  			 clearInterval(intervalID);
  			 $('#'+nodeid).children('.gergo_slider_back').before('<'+node_name+' class="'+node_class+'" style="'+node_style+' position:absolute; width:'+boxsize+'px; left:+'+kepekszama+'">'+$('#'+nodeid).children(':eq(0)').html()+'</'+node_name+'>'); 
  			 $('#'+nodeid).children(':eq(0)').remove();
         $('#'+nodeid).children(':eq(1)').css('z-index','10');
          intervalID = null;
  			 intervalID = setInterval("porgeth('"+irany+"')", sebesseg); 
  		}

  		if ((parseInt($('#'+nodeid).children(':eq(1)').css('left'))) < 0)  {      
  			 clearInterval(intervalID); 
  			 $('#'+nodeid).children('.gergo_slider_back').before('<'+node_name+' class="'+node_class+'" style="'+node_style+' position:absolute; width:'+boxsize+'px; left:-'+kepekszama+'">'+$('#'+nodeid).children(':eq(0)').html()+'</'+node_name+'>');
  			 $('#'+nodeid).children(':eq(0)').remove();
         $('#'+nodeid).children(':eq(1)').css('z-index','10');
         $('#'+nodeid).children(':eq(1)').animate({left:'+'+boxsize+'px'},0); 
          intervalID = null;
  			 intervalID = setInterval("porgeth('"+irany+"')", sebesseg); 
  		}       
      
    } else if (irany == 'b') {
    
      $('#'+nodeid).children('.'+node_class).animate({left:'+='+stepsize+'px'},0);
  		if (parseInt($('#'+nodeid).children(':eq(0)').css('left')) >= (boxsize))  {      
  			 clearInterval(intervalID);
  			 $('#'+nodeid).children('.gergo_slider_back').before('<'+node_name+' class="'+node_class+'" style="'+node_style+' position:absolute; width:'+boxsize+'px; left:-'+kepekszama+'">'+$('#'+nodeid).children(':eq(0)').html()+'</'+node_name+'>');
  			 $('#'+nodeid).children(':eq(0)').remove();
         $('#'+nodeid).children(':eq(0)').css('z-index','10');
          intervalID = null;
  			 intervalID = setInterval("porgeth('"+irany+"')", sebesseg); 
  		}     

  		if ((parseInt($('#'+nodeid).children(':eq(1)').css('left'))) > boxsize)  {      
  			 clearInterval(intervalID);
  			 $('#'+nodeid).prepend('<'+node_name+' class="'+node_class+'" style="'+node_style+' position:absolute; width:'+boxsize+'px; left:-'+kepekszama+'">'+$('#'+nodeid).children(':eq(0)').html()+'</'+node_name+'>');
  			 $('#'+nodeid).children(':eq(2)').remove();
         $('#'+nodeid).children(':eq(1)').css('z-index','10');
         $('#'+nodeid).children(':eq(0)').animate({left:'-'+boxsize+'px'},0); 
          intervalID = null;
  			 intervalID = setInterval("porgeth('"+irany+"')", sebesseg); 
  		} 
      
    
    }        
}  
(function($){
	 $.fn.gergo_slider = function(alloptions){
	   sebesseg = alloptions.speed;
     stepsize = alloptions.speed_step;
     node = $(this);
     nodeid = $(this).attr('id');
     try {
			node_name = $('#'+nodeid).children()[0].nodeName;
     } catch(o) {
			return false;
     }
     node_class = $('#'+nodeid).children().attr('class');
		 node_style = $('#'+nodeid).children().attr('style');
     alapirany = alloptions.direction;
     irany = alloptions.direction;
		 offset = node.offset();
		 leftoffset = offset.left;
		 topoffset = offset.top;
		
			
		oldnode = node.clone().appendTo(node.parent()).attr('id','').css('visibility','hidden');
		
		
		$('body').append(node);
			
		//$('body').append(node).clone(true);	
		node.css({
			'position' : 'absolute',
			'left' : leftoffset+'px',			
			'top' : topoffset+'px',
			'z-index' : '9999'
		});
		
			
     $('#'+nodeid).append('<div class="gergo_slider_back"></div><div class="gergo_slider_forward"></div>');
			
     if (alloptions.align == 'v') { 
      

				boxsize = $(this)[0].offsetHeight;
		 
				inboxsize = $(this).children(':eq(1)')[0].offsetHeight;
				enough = true;
				while(enough) {
					
						if ((inboxsize * k) < boxsize) {
			
						boxnumber = k;
				
						} else enough = false;
						k++;
				}
      boxsize = inboxsize;
			boxsize = oldnode.children(':eq(1)').height()*1.12;
			//alert();
			/*boxsize = 0;
			for(var l=0; 100; l++) {

					boxsize += oldnode.children(':eq(1)').children(':eq('+l+')').outerHeight(true);
					/*if (oldnode.children(':eq(1)').children(':eq('+l+')').css('margin-top') != undefined)
						boxsize += parseInt(oldnode.children(':eq(1)').children(':eq('+l+')').css('margin-top'));
					if (oldnode.children(':eq(1)').children(':eq('+l+')').css('margin-bottom') != undefined)
						boxsize += parseInt(oldnode.children(':eq(1)').children(':eq('+l+')').css('margin-bottom'));
						
					if (oldnode.children(':eq(1)').children(':eq('+l+')').css('padding-top') != undefined)
						boxsize += parseInt(oldnode.children(':eq(1)').children(':eq('+l+')').css('padding-top'));
					if (oldnode.children(':eq(1)').children(':eq('+l+')').css('padding-bottom') != undefined)
						boxsize += parseInt(oldnode.children(':eq(1)').children(':eq('+l+')').css('padding-bottom'));						
					
				
	
				console.log(boxsize);
				
				
			}
			/*boxsize = 397;
			boxsize = oldnode.children(':eq(1)').outerHeight(true);*/
			//alert(boxsize);
			if (boxnumber > 1) {
				kepekszama = boxsize+'px';				
				smallnode = '<'+node_name+' class="'+node_class+'" style="'+node_style+'">'+$('#'+nodeid).children(':eq(0)').html()+'</'+node_name+'>'; 				
				$('#'+nodeid).children('.'+node_class+'').remove();
				node_name	= 'div';
				node_class = 'gergo_slider_boxes';
				bignode = '<div class="gergo_slider_boxes">';
				for(k = 1; k <= boxnumber; k++) {
					bignode += smallnode;
				}
				bignode += '</div>';
				$('#'+nodeid).children('.gergo_slider_back').before(bignode); 		
				$('#'+nodeid).children('.gergo_slider_back').before(bignode); 			
				
			}
				

      if (alloptions.box_size != undefined) boxsize = alloptions.box_size;   
  		 $(this).children().css({'position':'absolute','height':boxsize+'px'});
  		 
       if (irany == 'f') $(this).children(':eq(1)').animate({top:'+'+boxsize+'px'},0); 
       else if (irany == 'b') {
        $(this).children(':eq(0)').css('z-index','10');
        $(this).children(':eq(1)').animate({top:'-'+boxsize+'px'},0); 
       }

  		 intervalID = setInterval("porgetv('"+irany+"')", sebesseg);			
  		
		} else if (alloptions.align == 'h') {

				boxsize = $(this)[0].offsetWidth;   
				
				inboxsize = $(this).children(':eq(1)')[0].offsetWidth;
				enough = true;
				while(enough) {
					
						if ((inboxsize * k) < boxsize) {
			
						boxnumber = k;
				
						} else enough = false;
						k++;
				} 
				boxsize = inboxsize;
				boxsize = oldnode.children(':eq(1)').width()*1.12;
			if (boxnumber > 1) {
				kepekszama = boxsize+'px';				
				smallnode = '<'+node_name+' class="'+node_class+'" style="'+node_style+'">'+$('#'+nodeid).children(':eq(0)').html()+'</'+node_name+'>'; 				
				$('#'+nodeid).children('.'+node_class+'').remove();
				node_name	= 'div';
				node_class = 'gergo_slider_boxes';
				bignode = '<div class="gergo_slider_boxes">';
				for(k = 1; k <= boxnumber; k++) {
					bignode += smallnode;
				}
				bignode += '</div>';
				$('#'+nodeid).children('.gergo_slider_back').before(bignode); 		
				$('#'+nodeid).children('.gergo_slider_back').before(bignode); 			
				
			}				
				
				
				 
      if (alloptions.box_size != undefined) boxsize = alloptions.box_size;    
       $(this).children().css({'position':'absolute','width':boxsize+'px'});
  		 
       if (irany == 'f') $(this).children(':eq(1)').animate({left:'+'+boxsize+'px'},0); 
       else if (irany == 'b') {
        $(this).children(':eq(0)').css('z-index','10');
        $(this).children(':eq(1)').animate({left:'-'+boxsize+'px'},0); 
       }
       
  		 intervalID = setInterval("porgeth('"+irany+"')", sebesseg);			
					
    
    }
    
    if (alloptions.mouseover == true) {
    
      if (alloptions.mouseover == 'stop') {
        $(this).live('mouseover', function () {
          clearInterval(intervalID);	
        });   
        $(this).live('mouseout', function () {
          clearInterval(intervalID);
          sebesseg = alloptions.speed; 
          if (alloptions.align == 'h') intervalID = setInterval("porgeth('"+irany+"')", sebesseg);	
          else if (alloptions.align == 'v') intervalID = setInterval("porgetv('"+irany+"')", sebesseg);	
        });      
      } else {
        $(this).live('mouseover', function () {
          clearInterval(intervalID);
          sebesseg = alloptions.mouseover_speed; 
          stepsize = alloptions.mouseover_speed_step;
          if (alloptions.align == 'h') intervalID = setInterval("porgeth('"+irany+"')", sebesseg);	
          else if (alloptions.align == 'v') intervalID = setInterval("porgetv('"+irany+"')", sebesseg);	
        });   
        $(this).live('mouseout', function() {
          clearInterval(intervalID);
          sebesseg = alloptions.speed;
          stepsize = alloptions.speed_step;
          if (alloptions.align == 'h') intervalID = setInterval("porgeth('"+irany+"')", sebesseg);	
          else if (alloptions.align == 'v') intervalID = setInterval("porgetv('"+irany+"')", sebesseg);	
        });  
      }        
    }
    
    if (alloptions.animation == true) {
    
      if (alloptions.align == 'v') {     
      
        height = parseFloat($('#'+nodeid).css('height'));
        width = parseFloat($('#'+nodeid).css('width'));
        height = height * 0.2;
        width = width * 0.9;
        topp = $('#'+nodeid).css('height');
        left = 0;  
				
				
        $('.gergo_slider_back').css({
        'position':'absolute',
        'height':height+'px',
        'width':width+'px',
        'left':left+'px',
        'bottom':'0px',
        'font-size':(width/1.5)+'px',
        'z-index':'20',
        'background':'#fff',
        'opacity':'0',
        'filter':'alpha(opacity=0)',
        'text-align':'center'
        }).mouseover(function () {
        
          clearInterval(intervalID);
          intervalID = null;
          sebesseg = alloptions.animation_speed; 
          stepsize = alloptions.animation_speed_step;

		  	intervalID = setInterval("porgetv('b')", sebesseg);

        
        }).mouseout(function () {

          clearInterval(intervalID);
          intervalID = null;
          sebesseg = alloptions.speed; 
          stepsize = alloptions.speed_step;

				 	intervalID = setInterval("porgetv('b')", sebesseg);
				 	
        
        });
        $('.gergo_slider_forward').css({
        'position':'absolute',
        'height':height+'px',
        'width':width+'px',
        'right':left+'px',
        'top':'0px',
        'font-size':(width/1.5)+'px',
        'z-index':'20',    
        'background':'#fff',
        'opacity':'0', 
        'filter':'alpha(opacity=0)',        
        'text-align':'center'        
        }).mouseover(function () {

          clearInterval(intervalID);
          intervalID = null;
          
          sebesseg = alloptions.animation_speed; 
          stepsize = alloptions.animation_speed_step;


				 	intervalID = setInterval("porgetv('f')", sebesseg);

        
        }).mouseout(function () {
        
          clearInterval(intervalID);
          intervalID = null;
          sebesseg = alloptions.speed; 
          stepsize = alloptions.speed_step;


				 	intervalID = setInterval("porgetv('f')", sebesseg);
				 	
        
        });   				
				
				
				
				       

      } else if (alloptions.align == 'h') {
        
        height = parseFloat($('#'+nodeid).css('height'));
        width = parseFloat($('#'+nodeid).css('width'));
        height = height * 0.9;
        width = width * 0.2;
        topp = 0;
        left = 0;  
				
        $('.gergo_slider_back').css({
        'position':'absolute',
        'height':height+'px',
        'width':width+'px',
        'left':left+'px',
        'top':topp+'px',
        'font-size':(width/1.5)+'px',
        'z-index':'20',
        'background':'#fff',
        'opacity':'0',
        'filter':'alpha(opacity=0)',
        'text-align':'center'
        }).mouseover(function () {
        
          clearInterval(intervalID);
          intervalID = null;
          sebesseg = alloptions.animation_speed; 
          stepsize = alloptions.animation_speed_step;

		  	intervalID = setInterval("porgeth('b')", sebesseg);

        
        }).mouseout(function () {

          clearInterval(intervalID);
          intervalID = null;
          sebesseg = alloptions.speed; 
          stepsize = alloptions.speed_step;

				 	intervalID = setInterval("porgeth('b')", sebesseg);
				 	
        
        });
        $('.gergo_slider_forward').css({
        'position':'absolute',
        'height':height+'px',
        'width':width+'px',
        'right':left+'px',
        'top':topp+'px',
        'font-size':(width/1.5)+'px',
        'z-index':'20',    
        'background':'#fff',
        'opacity':'0',
        'filter':'alpha(opacity=0)',        
        'text-align':'center'        
        }).mouseover(function () {
        
          clearInterval(intervalID);
          intervalID = null;
          
          sebesseg = alloptions.animation_speed; 
          stepsize = alloptions.animation_speed_step;


				 	intervalID = setInterval("porgeth('f')", sebesseg);

        
        }).mouseout(function () {
        
          clearInterval(intervalID);
          intervalID = null;
          sebesseg = alloptions.speed; 
          stepsize = alloptions.speed_step;


				 	intervalID = setInterval("porgeth('f')", sebesseg);
				 	
        
        });   				              
      }

        
        

    
    
    
    
    
    }



	 }
})(jQuery);
