$.fn.loFlow = function(options) {
    var defaults = {
        imageWidth: 266,
        imageHeight: 266,
        cycle:true,
        controls: true
    }
        
    options = $.extend(defaults, options);  
    return this.each(function() {
    	$(this).css('display','block'); 
    	Obj = $(this);
    	lis = $(this).find('li');
    	num = lis.length;
    	
    	lis.wrapAll('<div class="gm-slider-container"></div>');
    	$(this).find('.gm-slider-container').append('<div class="canvas"></div>');
    	lis.wrapAll('<div class="wrapper"></div>');
    	lis.wrapAll('<div class="slide-box"></div>');
   
   		imgs = lis.find('img,iframe');
   		
   		//imgs.wrap('<table cellpadding="0" cellspacing="0"></table>');
   		//imgs.wrap('<tr></tr>');
   		//imgs.wrap('<td></td>');
   		
   		lis.addClass('item');
   		
   		slideBox = $(this).find('.slide-box');
   		
   		slideBox.css('width',options.imageWidth*num+'px');
   		
   		if($(lis[0]).children('a').length > 0){
   			Obj.css('cursor','pointer');
   			Obj.click(function(){
   				window.location.href = $(lis[0]).children('a')[0].href;
   			});
   		}
   		
   		if(num > 1){
   		
   		Obj.find('.gm-slider-container').append("<a href='javascript:void(0)' class='arw2next'></a>");
   		Obj.find('.gm-slider-container').append("<a href='javascript:void(0)' class='arw2prev'></a>");
   		
   		}
   		
   		Obj.find('.arw2next').click(function(e){
   			e.stopImmediatePropagation()
   			Obj.slide2next();
   			window.clearInterval(Obj.interval);
   		
   		})
   		
   		Obj.find('.arw2prev').click(function(e){
   			e.stopImmediatePropagation()
   			Obj.slide2prev();
   			window.clearInterval(Obj.interval);
   		
   		})
   		
   		total = 0;
   		
   		Obj.slide2next = function(){
   			if(isInt(parseInt(slideBox.css('marginLeft')) / 266) || slideBox.css('marginLeft') == '0px' || slideBox.css('marginLeft') == 'auto') {
	   			if(total >= num-1){
	   				$(this).find('li:first').appendTo(Obj.find('.slide-box'));
	   				slideBox.animate({marginLeft:'+=266'},0);
	   				total = num-1;
	   			}else{
	   			total++;
	   			}
	   			$($(this).find('li')[total-1]).find('.desc').hide(); 
	   			if(!$.browser.msie){
	   				$($(this).find('li')[total]).find('.desc').hide();   		
	   				$($(this).find('li')[total]).find('.desc').delay(700).fadeIn(500);	
	   			}else{
	   				$($(this).find('li')[total]).find('.desc').delay(700).fadeIn(0);	
	   			}
	   			slideBox.animate({marginLeft:'-=266'},400,'easeInOutCirc');
	   			
	   			if($(Obj.find('li')[total]).children('a').length > 0){
		   			Obj.css('cursor','pointer');
		   			Obj.unbind();
		   			Obj.click(function(){window.location.href = $(Obj.find('li')[total]).children('a')[0].href});
		   		}
		   		else{
			   		Obj.css('cursor','default');
		   			Obj.unbind();
		   		}
	   			
	   			}
   		}
   		
   		Obj.slide2prev = function(){
   			if(isInt(parseInt(slideBox.css('marginLeft')) / 266) || slideBox.css('marginLeft') == '0px' || slideBox.css('marginLeft') == 'auto') {
	   			if(total <= 0){
 
	   				$(this).find('li:last').prependTo(Obj.find('.slide-box'));
	   				slideBox.animate({marginLeft:'-=266'},0);
	   				total = 0;
	   			}else{
	   			total--;
	   			}
	   			$($(this).find('li')[total]).find('.desc').hide();
	   			$($(this).find('li')[total+1]).find('.desc').hide(); 
	   			if(!$.browser.msie){
	   				$($(this).find('li')[total]).find('.desc').delay(700).fadeIn(500);
	   				$($(this).find('li')[total]).find('.desc').hide();	   			   			
	   			}else{
	   				$($(this).find('li')[total]).find('.desc').delay(700).fadeIn(0);	
	   			}	   			slideBox.animate({marginLeft:'+=266'},400,'easeInOutCirc');
	   			
	   			if($(Obj.find('li')[total]).children('a').length > 0){
		   			Obj.css('cursor','pointer');
		   			Obj.unbind();
		   			Obj.click(function(){window.location.href = $(Obj.find('li')[total]).children('a')[0].href});
		   		}
		   		else{
			   		Obj.css('cursor','default');
		   			Obj.unbind();
		   		}
   			}
   		}
   		
   		if(num > 1){
   		Obj.interval = window.setInterval('Obj.slide2next()',3000);
   		}
   		
    });
};

 function isInt(x) {
   var y=parseInt(x);
   if (isNaN(y)) return false;
   return x==y && x.toString()==y.toString();
 }
