$(function() {
    var f_nBnrCnt = 0; // jQBanner¸¦ »ç¿ëÇØ¼­ È­¸é¿¡ Ãâ·ÂµÇ´Â º£³Ê¼ö

    $.f_varBanner = {
        defaults: {
            // ³»ºÎÀûÀ¸·Î ¾²ÀÌ´Â º¯¼ö */
            objScr: null,   // ½ºÅ©¸° ¿µ¿ª
            objBtn: null, // ¹öÆ° ¿µ¿ª
            objTimer: null, // Å¸ÀÌ¸Ó
            nOrderNo: 999, // ÇöÀç ¼±ÅÃµÈ ·¹ÀÌ¾î
            nOrderNoBtn: -1, // ¹öÆ° ¼±ÅÃ½Ã ·¹ÀÌ¾î

            // ÃÊ±â¼¼ÆÃÀÌ °¡´ÉÇÑ  ÇÊ¼ö º¯¼ö */
            nWidth: 0, // º£³Ê ½ºÅ©¸° ¿µ¿ª Æø
            nHeight: 0, // º£³Ê ½ºÅ©¸° ¿µ¿ª ³ôÀÌ
            nCount: 0, // º£³Ê ½ºÅ©¸° ¿µ¿ª¿¡ ¼ÓÇØÀÖ´Â ·¹ÀÌ¾îÀÇ ¼ö
            isActType: "none",  // º£³Ê ¾×¼Ç Å¸ÀÔ none,left,right,up,down,fade,page

            // ÃÊ±â¼¼ÆÃÀÌ °¡´ÉÇÑ  ¿É¼Ç º¯¼ö */
            isShuffle: "N", // º£³Ê ·¹ÀÌ¾îµéÀÇ ¼ÅÇÃ ¿©ºÎ Y:¼ÅÇÃ,N:¼øÂ÷Àû
            isBtnAct: "mouseover",  // ¹öÆ° ÀÛµ¿¹æ½Ä mouseover,click
            isBtnType: "img", // ¹öÆ° Å¸ÀÔ img,li           
            nStartUp: 10, // ½ºÅ¸Æ® ½Ã Ã¹ ·¹ÀÌ¾îÀÇ FadeIn ¼Óµµ
            nDelay: 5000, // µô·¹ÀÌ
            nSpeed: 10, // ¾×¼Ç½ÃÀÇ ¼Óµµ
            nSpeedFade: 300, // ÆäÀÌµå °ü·Ã ¾×¼Ç¿¡¼­ ¹öÆ° ÀÛµ¿½Ã ¼ÓµµÀÇ ±³Á¤°ª [µÇµµ·Ï °íÁ¤]
            isStartFade: "Y", // ½ºÅ¸Æ® FadeIn È¿°ú ¿©ºÎ [ÇÁ·Î±×·¥À¸·Î ½ºÅ©¸°À» Display:block Ã³¸®ÇÒ °æ¿ì »ç¿ë]
            isStartDelay: "N" // ½ºÅ¸Æ®½Ã µô·¹ÀÌ¸¦ °¡Áö°í ½ÇÇà [¹«°Å¿î ÆäÀÌÁöÀÇ °æ¿ì µô·¹ÀÌ¸¦ °¡Áö°í ÃÊ±âÈ­]
        }
    };

    $.fn.jQBanner = function(defaults) {
        var config = $.extend({}, $.f_varBanner.defaults, defaults);
        var isIEChk = jsBrowserCheck();

        config.objScr = "#" + this.attr("id") + " .clsBannerScreen";
        config.objBtn = "#" + this.attr("id") + " .clsBannerButton";

        if (config.isStartDelay == "Y" && isIEChk == true) {
            // ½ºÅ¸Æ® µô·¹ÀÌ Ã³¸® */
            if (f_nBnrCnt >= 0 && f_nBnrCnt <= 3) {
                setTimeout(function() { jsBanInit(config) }, f_nBnrCnt * 100);
            } else if (f_nBnrCnt > 3 && f_nBnrCnt <= 6) {
                setTimeout(function() { jsBanInit(config) }, f_nBnrCnt * 200);
            } else if (f_nBnrCnt > 6 && f_nBnrCnt <= 10) {
                setTimeout(function() { jsBanInit(config) }, f_nBnrCnt * 300);
            } else if (f_nBnrCnt > 10) {
                setTimeout(function() { jsBanInit(config) }, 400);
            }
            f_nBnrCnt++;
        } else {
            jsBanInit(config);
        }

        return this;
    };

    function jsBanInit(config) {
        var nPosFix;

        // º£³Ê ½ºÅ©¸° CSS ¼³Á¤ */
        $(config.objScr).css({ 'position': 'relative', 'height': config.nHeight + 'px', 'width': config.nWidth + 'px', 'overflow': 'hidden' });

        // Ã¹ ·¹ÀÌ¾î ¼±ÅÃ */
        config.nOrderNo = (config.nOrderNo == 999) ? Math.floor(Math.random() * config.nCount) : config.nOrderNo - 1;

        // ¾×¼Ç Å¸ÀÔ¿¡ µû¸¥ ÃÊ±â ¼¼ÆÃ */
        if (config.isActType == "left") {
            $(config.objScr + " div").each(function(i) {
                nPosFix = (config.nOrderNo == i) ? 0 : config.nWidth;
                $(this).css({ 'position': 'absolute', 'top': '0', 'left': (-1 * nPosFix) + 'px' });
                if (!(config.nOrderNo == i && config.isStartFade == "N")) {
                    $(this).fadeIn(config.nStartUp);
                }
                $(this).attr("divno", i);
            });
        } else if (config.isActType == "right") {
            $(config.objScr + " div").each(function(i) {
                nPosFix = (config.nOrderNo == i) ? 0 : config.nWidth;
                $(this).css({ 'position': 'absolute', 'top': '0', 'left': nPosFix + 'px' });
                if (!(config.nOrderNo == i && config.isStartFade == "N")) {
                    $(this).fadeIn(config.nStartUp);
                }
                $(this).attr("divno", i);
            });
        } else if (config.isActType == "up") {
            $(config.objScr + " div").each(function(i) {
                nPosFix = (config.nOrderNo == i) ? 0 : config.nHeight;
                $(this).css({ 'position': 'absolute', 'top': (-1 * nPosFix) + 'px', 'left': '0' });
                if (!(config.nOrderNo == i && config.isStartFade == "N")) {
                    $(this).fadeIn(config.nStartUp);
                }
                $(this).attr("divno", i);
            });
        } else if (config.isActType == "down") {
            $(config.objScr + " div").each(function(i) {
                nPosFix = (config.nOrderNo == i) ? 0 : config.nHeight;
                $(this).css({ 'position': 'absolute', 'top': nPosFix + 'px', 'left': '0' });
                if (!(config.nOrderNo == i && config.isStartFade == "N")) {
                    $(this).fadeIn(config.nStartUp);
                }
                $(this).attr("divno", i);
            });
        } else if (config.isActType == "fade") {
            $(config.objScr + " div").each(function(i) {
                if (config.nOrderNo == i) {
                    nPosFix = 0;
                    if (!(config.nOrderNo == i && config.isStartFade == "N")) {
                        $(this).fadeIn(config.nStartUp);
                    }
                } else {
                    nPosFix = config.nWidth;
                }
                $(this).css({ 'position': 'absolute', 'top': '0', 'left': nPosFix + 'px' });
                $(this).attr("divno", i);
            });
        } else if (config.isActType == "page") {
            $(config.objScr + " div").each(function(i) {
                nPosFix = (config.nOrderNo == i) ? 0 : config.nHeight;
                $(this).css({ 'position': 'absolute', 'top': nPosFix + 'px', 'left': '0' });
                if (!(config.nOrderNo == i && config.isStartFade == "N")) {
                    $(this).fadeIn(config.nStartUp);
                }
                $(this).attr("divno", i);
            });
        } else if (config.isActType == "none") {
            $(config.objScr + " div").each(function(i) {
                if (config.nOrderNo == i) {
                    nPosFix = 0;
                    if (!(config.nOrderNo == i && config.isStartFade == "N")) {
                        $(this).fadeIn(config.nStartUp);
                    }
                } else {
                    nPosFix = config.nWidth;
                }
                $(this).css({ 'position': 'absolute', 'top': '0', 'left': nPosFix + 'px' });
                $(this).attr("divno", i);
            });
        }

        // ¹öÆ° ¼ø¹ø ¼³Á¤ */
        $(config.objBtn + " " + config.isBtnType).each(function(i) { $(this).attr("btnno", i); $(this).css("cursor", "hand") });

        // ¹öÆ° ¹ÙÀÎµå */
        jsBanBtnBind(config);

        // ½ºÅ©¸° pause ¹ÙÀÎµå */
        jsScrPauseBind(config);

        // º£³Ê Å¸ÀÌ¸Ó µî·Ï ¹× ¾×¼Ç ½ÃÀÛ!!!! */
        if (config.isActType != "none" && config.isActType != "page") {
            config.objTimer = setTimeout(function() { jsBanTimer(config) }, config.nDelay);
        }
    };

    // ¹è³Ê Å¸ÀÌ¸Ó */
    function jsBanTimer(config) {
        // ¹öÆ° ¾×¼Ç ¼ø¹øÀÇ ÃÊ±âÈ­ */
        config.nOrderNoBtn = -1;

        jsBanAction(config);
        config.objTimer = setTimeout(function() { jsBanTimer(config) }, config.nDelay);
    };

    // ¹è³Ê ¾×¼Ç Ã³¸® */
    function jsBanAction(config) {
        var nPageSel;
        var nSpeed = config.nSpeed;
        var nDivNoSel = config.nOrderNo;
        var nOrderNext = (config.nOrderNo + 1) % (config.nCount);

        // 'page' ¾×¼ÇÀÏ °æ¿ì ¼±ÅÃÆäÀÌÁö ÃßÃâ */
        if (config.isActType == "page") {
            var nOrderMinus = config.nOrderNoBtn - config.nOrderNo;
            nPageSel = (nOrderMinus == 1 || (nOrderMinus == (config.nCount - 1) * -1)) ? 1 : 0;
        }

        if (config.nOrderNoBtn >= 0) {
            config.nOrderNo = config.nOrderNoBtn;
            nOrderNext = config.nOrderNoBtn;
            nSpeed = (config.isActType == "fade" || config.isActType == "page" || config.isActType == "none") ? config.nSpeedFade : 0;
        } else {
            config.nOrderNo = ((config.nCount - 1) == config.nOrderNo) ? nOrderNext : config.nOrderNo + 1;
        }

        var nDivNoNext = nOrderNext;

        var objSelObj = $(config.objScr + " div[divno='" + nDivNoSel + "']");
        var objNextObj = $(config.objScr + " div[divno='" + nDivNoNext + "']");

        // ¾×¼Ç¿¡ ÀÇÇÑ ¹öÆ° ¼±ÅÃ */
        if (config.isActType != "page") {
            jsBanBtnRO(config, nOrderNext);
        }

        // ½ÇÁ¦ ½ºÅ©¸° ·¹ÀÌ¾îµéÀÇ µ¿ÀÛ Ã³¸® */
        if (config.isActType == "left") {
            objNextObj.css('left', (config.nWidth) + 'px');
            objSelObj.animate({ 'left': (-1 * config.nWidth) + 'px' }, nSpeed);
            objNextObj.animate({ 'left': '0' }, nSpeed);
        } else if (config.isActType == "right") {
            objNextObj.css('left', (-1 * config.nWidth) + 'px');
            objSelObj.animate({ 'left': config.nWidth + 'px' }, nSpeed);
            objNextObj.animate({ 'left': '0' }, nSpeed);
        } else if (config.isActType == "up") {
            objNextObj.css('top', config.nHeight + 'px');
            objSelObj.animate({ 'top': (-1 * config.nHeight) + 'px' }, nSpeed);
            objNextObj.animate({ 'top': '0' }, nSpeed);
        } else if (config.isActType == "down") {
            objNextObj.css('top', (-1 * config.nHeight) + 'px');
            objSelObj.animate({ 'top': config.nHeight + 'px' }, nSpeed);
            objNextObj.animate({ 'top': '0' }, nSpeed);
        } else if (config.isActType == "fade") {
            objSelObj.css({ 'left': config.nWidth + 'px', 'display': 'none' });
            objNextObj.css('left', '0');
            objNextObj.fadeIn(nSpeed);
        } else if (config.isActType == "page") {
            if (nPageSel == 0) {
                objNextObj.css({ 'top': '0', 'left': config.nWidth + 'px' });
                objSelObj.animate({ 'left': (-1 * config.nWidth) + 'px' }, nSpeed);
                objNextObj.animate({ 'left': '0' }, nSpeed);
            } else if (nPageSel == 1) {
                objNextObj.css({ 'top': '0', 'left': (-1 * config.nWidth) + 'px' });
                objSelObj.animate({ 'left': config.nWidth + 'px' }, nSpeed);
                objNextObj.animate({ 'left': '0' }, nSpeed);
            }
        } else if (config.isActType == "none") {
            objSelObj.css({ 'left': config.nWidth + 'px', 'display': 'none' });
            objNextObj.css('left', '0');
            objNextObj.fadeIn(nSpeed);
        }
    }

    // ½ºÅ©¸° pause ¹ÙÀÎµå */
    function jsScrPauseBind(config) {
        // ½ºÅ©¸°¿¡ ´ëÇÑ Ã³¸® */
        $(config.objScr).mouseover(function() {
            clearTimeout(config.objTimer);
        });
        $(config.objScr).mouseout(function() {
            if (config.isActType != "none" && config.isActType != "page") {
                config.objTimer = setTimeout(function() { jsBanTimer(config) }, config.nDelay);
            }
        });
    }

    // ¹öÆ° ¹ÙÀÎµå */
    function jsBanBtnBind(config) {
        // ÃÊ±â ¹öÆ° ¼³Á¤ */
        if (config.isActType != "page") {
            jsBanBtnRO(config, config.nOrderNo);
        }

        // ¹öÆ°¿¡ ´ëÇØ ¸¶¿ì½º ¿À¹öÀÏ °æ¿ì Ã³¸® */
        if (config.isBtnAct == "mouseover") {
            // ¹öÆ°¿¡ ´ëÇÑ Ã³¸® */
            $(config.objBtn + " " + config.isBtnType).mouseover(function() {
                var nImgNo = $(this).attr("btnno");

                if (config.isActType != "none" && config.isActType != "page") {
                    clearTimeout(config.objTimer);
                }

                if (config.isActType == "page") {
                    if (nImgNo == 0) {
                        config.nOrderNoBtn = ((config.nOrderNo - 1) < 0) ? config.nCount - 1 : config.nOrderNo - 1;
                    } if (nImgNo == 1) {
                        config.nOrderNoBtn = ((config.nOrderNo + 1) == config.nCount) ? (config.nOrderNo + 1) % config.nCount : config.nOrderNo + 1;
                    }
                    jsBanBtnRO(config, nImgNo);
                } else {
                    config.nOrderNoBtn = parseInt(nImgNo);
                }

                jsBanAction(config);
            });
            $(config.objBtn + " " + config.isBtnType).mouseout(function() {
                if (config.isActType != "none" && config.isActType != "page") {
                    config.objTimer = setTimeout(function() { jsBanTimer(config) }, config.nDelay);
                }
            });

            // ¹öÆ°¿¡ ´ëÇØ Å¬¸¯ÀÏ °æ¿ì Ã³¸® */
        } else if (config.isBtnAct == "click") {
            $(config.objBtn + " " + config.isBtnType).click(function() {
                var nImgNo = $(this).attr("btnno");

                if (config.isActType != "none" && config.isActType != "page") {
                    clearTimeout(config.objTimer);
                }

                if (config.isActType == "page") {
                    if (nImgNo == 0) {
                        config.nOrderNoBtn = ((config.nOrderNo - 1) < 0) ? config.nCount - 1 : config.nOrderNo - 1;
                    } if (nImgNo == 1) {
                        config.nOrderNoBtn = ((config.nOrderNo + 1) == config.nCount) ? (config.nOrderNo + 1) % config.nCount : config.nOrderNo + 1;
                    }
                    jsBanBtnRO(config, nImgNo);
                } else {
                    config.nOrderNoBtn = parseInt(nImgNo);
                }

                jsBanAction(config);

                if (config.isActType != "none" && config.isActType != "page") {
                    config.objTimer = setTimeout(function() { jsBanTimer(config) }, config.nDelay);
                }
            });
        }
    };

    // ¹öÆ° ·Ñ¿À¹ö Ã³¸® */
    function jsBanBtnRO(config, nSel) {
        if (config.isBtnType == "img") {
            $(config.objBtn + " img").each(function(i) {
                if (nSel == i) {
                    $(this).attr("src", $(this).attr("oversrc"));
                } else {
                    $(this).attr("src", $(this).attr("outsrc"));
                }
            });

        } else if (config.isBtnType == "li") {
            $(config.objBtn + " li").each(function(i) {
                if (nSel == i) {
                    $(this).attr("class", $(this).attr("overclass"));
                } else {
                    $(this).attr("class", $(this).attr("outclass"));
                }
            });

        }
    }

    // IE Ã¼Å© */
    function jsBrowserCheck() {
        appname = navigator.appName;
        useragent = navigator.userAgent;

        if (appname == "Microsoft Internet Explorer") appname = "IE";
        IE55 = (useragent.indexOf('MSIE 5.5') > 0);  //5.5 ¹öÀü
        IE6 = (useragent.indexOf('MSIE 6') > 0);     //6.0 ¹öÀü
        IE7 = (useragent.indexOf('MSIE 7') > 0);     //7.0 ¹öÀü
        IE8 = (useragent.indexOf('MSIE 8') > 0);     //8.0 ¹öÀü

        if (appname == "IE" && IE55 || IE6 || IE7 || IE8) {
            return true
        } else {
            return false;
        }
    }
});
