﻿$(function() {
	var f_nBnrCnt = 0; //  화면에 출력되는 베너수

	$.f_varBanner = {
		defaults: {
			/* 변수 셋팅*/
			objScr: null,	//화면
			objBtn: null, // 버튼
			objTimer: null, // 타이머
			nOrderNo: 999, // 현재 선택된 레이어
			nOrderNoBtn: -1, // 버튼 선택시 레이어

			/* 필수 변수 */
			nWidth: 0, // 베너 스크린 영역 폭
			nHeight: 0, // 베너 스크린 영역 높이
			nCount: 0, // 베너 스크린 영역에 속해있는 레이어의 수

			/* 옵션 변수 */
			szBtnLayer : "",
			isAuto : "N", // Y:자동 이동 , N:버튼 클릭시만 이동
			isShuffle: "N", // Y:랜덤,N:순차적
			isBtnAct: "mouseover",	// 버튼 작동방식 mouseover,click
			isBtnType: "button", // 버튼 타입 		
			nStartUp: 300, // 스타트 시 첫 레이어의 FadeIn 속도
			nDelay: 6000, // 딜레이
			nSpeed: 500, // 액션시의 속도
			nSpeedFade: 500, // 페이드 관련 액션
			isStartFade:"N", // 스타트 FadeIn 효과 여부
			isStartDelay:"N", // 스타트시 딜레이를 가지고 실행
			isAnimation :"N",
			left : 0,
			isRelative : "N",
			azHTML : null // div내의 layer말고 동적으로 html을 생성시
		}
	};

	$.fn.rBanner = function(defaults){

		var config = $.extend({}, $.f_varBanner.defaults, defaults);
		var isIEChk = jsBrowserCheck();

		config.objScr = "#"+this.attr("id") +" .article_wrap";
		config.objBtn = "#"+this.attr("id") + config.szBtnLayer;
		config.objPage = config.objBtn +" .layer_page";
		
		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 설정 */
		if(config.isRelative=="Y"){
		    $(config.objScr).css({'position':'relative','height':config.nHeight+'px','width':config.nWidth+'px','overflow':'hidden'});
		}
		
		/* 첫 레이어 선택 */
		config.nOrderNo = (config.isShuffle=="Y") ? Math.floor(Math.random() * config.nCount):config.nOrderNo-1;
		
		$(config.objScr+" div").each(function(i){

            if(config.azHTML != null){
                if(config.nOrderNo==i){
                    $(this).html(config.azHTML[i].html);
                }    
            }
    					
			nPosFix = (config.nOrderNo==i) ? 0 : config.nHeight;
		    if(config.isAnimation=="Y"){
				$(this).css({'position':'absolute','top':nPosFix+'px','left':'0'});
				if (!(config.nOrderNo==i && config.isStartFade=="N")) {
			         $(this).fadeIn(config.nStartUp);
				}
		    }
			$(this).attr("divno",i);

		});
        $(config.objPage).each(function(i){
            $(this).html("<p class=\"page\"><span>"+(config.nOrderNo+1) +"</span>&frasl;"+config.nCount+"</</p>");
        });

	    $(config.objBtn+" "+config.isBtnType).each(function(i){ $(this).attr("btnno",i); $(this).css("cursor","hand") });

		/* 버튼 바인드 */
		jsBanBtnBind(config);
		
		/* 스크린 pause 바인드 */
		jsScrPauseBind(config);

		/* 베너 타이머 등록 및 액션 시작!!!! */
		if(config.isAuto == "Y"){
		    config.objTimer = setTimeout( function(){jsBanTimer(config)}, config.nDelay);
		}    
	};

	/* 배너 타이머 */
	function jsBanTimer(config) {
		/* 버튼 액션 순번의 초기화 */
		config.nOrderNoBtn = -1;

		jsBanAction(config);
		if(config.isAuto == "Y"){
    		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' 액션일 경우 선택페이지 추출 */
		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.azHTML != null){
            objSelObj.html(config.azHTML[nDivNoSel].html);
            objNextObj.html(config.azHTML[nDivNoNext].html);
            if(config.fnName != null){
                config.fnName(config.nOrderNo, false);
            }                
        }
    						
	    if(config.isAnimation=="Y"){
	        if (nPageSel == 0) {
		        objNextObj.css({'top':'0','left':config.nWidth+'px'});
		        objSelObj.animate({'left':(-1*config.nWidth)+'px'},nSpeed);
		        objNextObj.animate({'top':'0','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({'top':'0','left':'0'},nSpeed);
	        }
	    }
	    else{
	        objSelObj.css({'display':'none'});
	        objNextObj.css({'top':'0'});
	        objNextObj.show();

	    }
	
        $(config.objPage).each(function(i){
            $(this).html("<p class=\"page\"><span>"+(config.nOrderNo+1) +"</span>&frasl;"+config.nCount+"</</p>");
        });
		
	}

	/* 스크린 pause 바인드 */
	function jsScrPauseBind(config) {
		/* 스크린에 대한 처리 */
		$(config.objScr).mouseover(function(){
			clearTimeout(config.objTimer);
		});
		$(config.objScr).mouseout(function(){
       		if(config.isAuto == "Y"){
    			config.objTimer = setTimeout( function(){jsBanTimer(config)}, config.nDelay);
    		}	
		});		
	}
	
	/* 버튼 바인드 */
	function jsBanBtnBind(config) {
		
		/* 버튼에 대해 마우스 오버일 경우 처리 */
		if (config.isBtnAct=="mouseover") {
			/* 버튼에 대한 처리 */
			$(config.objBtn+" "+config.isBtnType).mouseover(function(){
				var nImgNo = $(this).attr("btnno");
				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;
				}

				jsBanAction(config);
			});
			$(config.objBtn+" "+config.isBtnType).mouseout(function(){
					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 (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;
				}

				jsBanAction(config);

			});

		}
		
		
	};

	/* 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; 
		}
	}	
});
