/* ------------------------------------------------------------------------
	s3Slider
	
	Developped By: Boban Karišik -> http://www.serie3.info/
        CSS Help: Mészáros Róbert -> http://www.perspectived.com/
        Heavily modified by Mikkel Petersen, to support latest jQuery release, and added mixed mode support -> http://mikkelp.com
	Version: 2.0
	
	Copyright: Feel free to redistribute the script/modify it, as
			   long as you leave my infos at the top.
------------------------------------------------------------------------- */


(function($) {

    $.fn.s3Slider = function(args) {

        var element = this;
        var timeOut = args.timeout != undefined ? args.timeout : 4000;
        var fadeRatio = args.fadeRatio != undefined ? args.fadeRatio : 6;
        var current = null;
        var timeOutFn = null;
        var faderStat = true;
        var mOver = false;
        var items = new Array();
        var subArray = new Array();
        var hasSpan = false;
        $("#" + element[0].id + "Content ." + element[0].id + "Image").each(function(i) {
            subArray = new Array();
            subArray[0] = this;
            this.getElementsByTagName("span").length > 0 ? hasSpan = true : hasSpan = false;
            if (hasSpan) {
                subArray[1] = this.getElementsByTagName("span")[0];
            }
            else {
                subArray[1] = null;
            }
            items.push(subArray);
        })

        for (var i = 0; i < items.length; i++) {
            $(items[i][0]).mouseover(function() {
                mOver = true;
            });

            $(items[i][0]).mouseout(function() {
                mOver = false;
                fadeElement(true);
            });
        }

        var fadeElement = function(isMouseOut) {
            var thisTimeOut = isMouseOut ? timeOut / 2 : timeOut;
            thisTimeOut = faderStat ? 10 : thisTimeOut;
            if (items.length > 0) {
                timeOutFn = setTimeout(makeSlider, thisTimeOut);
            } else {
                //console.debug("Poof..");
            }
        }

        var inArray = function(current, items, subpos) {
            for (var i = 0; 0 < items.length; i++) {
                if (items[i][subpos] == current) {
                    return i;
                }
            }
            return -1;
        }

        var makeSlider = function() {
            current = current != null ? current : items[items.length - 1][0];
            var currNo = inArray(current, items, 0) + 1;
            currNo = currNo == items.length ? 0 : currNo - 1;
            var newMargin = $(element).width() * currNo;
            if (faderStat == true) {
                if (!mOver) {
                    $(items[currNo][0]).fadeIn(timeOut / fadeRatio, function() {
                        if (items[currNo][1] != null) {
                            if ($(items[currNo][1]).css('bottom') == 0) {
                                $(items[currNo][1]).slideUp(timeOut / fadeRatio, function() {
                                    faderStat = false;
                                    current = items[currNo][0];
                                    if (!mOver) {
                                        fadeElement(false);
                                    }
                                });
                            } else {
                                $(items[currNo][1]).slideDown(timeOut / fadeRatio, function() {
                                    faderStat = false;
                                    current = items[currNo][0];
                                    if (!mOver) {
                                        fadeElement(false);
                                    }
                                });
                            }
                        }
                        else {
                            faderStat = false;
                            current = items[currNo][0];
                            if (!mOver) {
                                fadeElement(false);
                            }
                        }
                    });
                }
            } else {
                if (!mOver) {
                    if (items[currNo][1] != null) {
                        if ($(items[currNo][1]).css('bottom') == 0) {
                            $(items[currNo][1]).slideDown(timeOut / fadeRatio, function() {
                                $(items[currNo][0]).fadeOut(timeOut / fadeRatio, function() {
                                    faderStat = true;
                                    current = items[currNo + 1][0];
                                    if (!mOver) {
                                        fadeElement(false);
                                    }
                                });
                            });
                        } else {
                            $(items[currNo][1]).slideUp(timeOut / fadeRatio, function() {
                                $(items[currNo][0]).fadeOut(timeOut / fadeRatio, function() {
                                    faderStat = true;
                                    current = items[currNo + 1][0];
                                    if (!mOver) {
                                        fadeElement(false);
                                    }
                                });
                            });
                        }
                    }
                    else {
                        $(items[currNo][0]).fadeOut(timeOut / fadeRatio, function() {
                            faderStat = true;
                            current = items[currNo + 1][0];
                            if (!mOver) {
                                fadeElement(false);
                            }
                        });
                    }
                }
            }
        }

        makeSlider();

    };

})(jQuery);  