(function($){

$.fn.slide = function(vars){
var element     = this;
var timeOut     = (vars.timeOut != undefined) ? vars.timeOut : 500;
var current     = null;
var timeOutFn   = null;
var faderStat   = true;
var mOver       = false;
var items       = $("#" + element[0].id + "content ." + element[0].id + "image");
var itemsSpan   = $("#" + element[0].id + "content ." + element[0].id + "image span");

items.each(function(i){
$(items[i]).mouseover(function(){
mOver = true;
});

$(items[i]).mouseout(function(){
mOver = false;
fadeElement(true);
});

});

var fadeElement = function(isMouseOut){
var thisTimeOut = (isMouseOut) ? (timeOut/6) : timeOut;
thisTimeOut = (faderStat) ? 6 : thisTimeOut;
if(items.length > 0){
timeOutFn = setTimeout(makeSlider, thisTimeOut);
} else {
console.log("Poof..");
}
}

var makeSlider = function(){
current = (current != null) ? current : items[(items.length-1)];
var currNo = jQuery.inArray(current, items) + 1
currNo = (currNo == items.length) ? 0 : (currNo - 1);
var newMargin = $(element).width() * currNo;
if(faderStat == true){
if(!mOver){
$(items[currNo]).fadeIn((timeOut/3), function(){
if($(itemsSpan[currNo]).css('bottom') == 0){
$(itemsSpan[currNo]).slideUp((timeOut/3), function(){
faderStat = false;
current = items[currNo];
if(!mOver){
fadeElement(false);
}
});

} else {
$(itemsSpan[currNo]).slideDown((timeOut/3), function(){
faderStat = false;
current = items[currNo];
if(!mOver){
fadeElement(false);
}
});
}
});
}

} else {
if(!mOver){
if($(itemsSpan[currNo]).css('bottom') == 0){
$(itemsSpan[currNo]).slideDown((timeOut/3), function(){
$(items[currNo]).fadeOut((timeOut/3), function(){
faderStat = true;
current = items[(currNo+1)];
if(!mOver){
fadeElement(false);
}
});
});

} else {
$(itemsSpan[currNo]).slideUp((timeOut/3), function(){
$(items[currNo]).fadeOut((timeOut/3), function(){
faderStat = true;
current = items[(currNo+1)];
if(!mOver){
fadeElement(false);
}
});
});
}
}
}
}

makeSlider();
};

})(jQuery);
