$(function() {
	$.f_varBanner = {
		defaults: {
			//-------------------------------------------------------//
			objScr: null,	
			objBtn: null, 
			objTimer: null,
			nOrderNo: 999, 
			nOrderNoBtn: -1,

			//-------------------------------------------------------//
			nWidth: 0, 
			nHeight: 0,
			nCount: 0, 
			isActType: "none",

			//-------------------------------------------------------//
			isShuffle: "N", 
			isBtnAct: "mouseover",
			isBtnType: "button",
			nStartUp: 300,
			nDelay: 5000,
			nSpeed: 500, 
			nSpeedFade: 500, 
			isStartFade:"N", 
			isStartDelay:"N",
			isAnimation :"N",
			left : 0,
			isRelative : "N",
			azHTML : null,
			fnName : null
			
		}
	};

	$.fn.jQBanner = function(defaults){

		var config = $.extend({}, $.f_varBanner.defaults, defaults);

		config.objScr = "#"+this.attr("id")+" .layer_content";
		config.objBtn = "#"+this.attr("id")+" .layer_navi";
		config.objPage = config.objBtn +" .layer_page";
		

		jsBanInit(config);

		return this;
	};

	function jsBanInit(config) {
		var nPosFix;
		//-------------------------------------------------------//
		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;
		


		//-------------------------------------------------------//
		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){
			
	            if(config.azHTML != null){
	                if(config.nOrderNo==i){
	                    $(this).html(config.azHTML[i].html);
	                    /*
	                     if(config.fnName != null){
	                        config.fnName(i, false);
	                     }
	                     */
	                }    
	            }
        					
				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);
    				}
			    }
			    /*
			    else{
    				//$(this).css({'position':'absolute','top':nPosFix+'px','left': config.left + 'px'});
			        //$(this).show();
			    }
			    */

				$(this).attr("divno",i);

			});
            $(config.objPage).each(function(i){
                $(this).html("<p class=\"page\"><span>"+(config.nOrderNo+1) +"</span>&frasl;"+config.nCount+"</p>");
            });
			
		}  else if (config.isActType == "keep") {
			$(config.objScr+" div").each(function(i){
				if (config.nOrderNo==i) {
					nPosFix = 0;
					$(this).show();
				} else {
					nPosFix = config.nWidth;
				}
				$(this).css({'position':'absolute','top':'0','left':nPosFix+'px'});
				$(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);
			});
			
		}

		if(config.isBtnType=="span"){
		    config.objBtn = config.objScr;
		}

	    $(config.objBtn+" "+config.isBtnType).each(function(i){ $(this).attr("btnno",i); $(this).css("cursor","hand") });

		jsBanBtnBind(config);
		
		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;

		if(config.objScr == "#maintop_img .layer_content"){
		    if( $("#maintop_list .layer_content").data("orderNo") < 999){
    		    config.nOrderNo = $("#maintop_list .layer_content").data("orderNo");
    		    if($("#maintop_list .layer_content").data("btnStatus")=="P"){
    		        config.nOrderNoBtn = (config.nOrderNo==0 ? config.nCount-1 : config.nOrderNo - 1);
    		    }
    		    else{
    		        config.nOrderNoBtn = ((config.nCount-1)==config.nOrderNo) ? 0 : config.nOrderNo+1;
    		    }
		    }
		    $("#maintop_list .layer_content").data("orderNo", 999);
		}
		
		var nDivNoSel = config.nOrderNo;
		var nOrderNext = (config.nOrderNo+1)%(config.nCount);
		
		//-------------------------------------------------------//
		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(config.azHTML != null){
	            //alert("ÇöÀç:" + nDivNoSel + " ´ÙÀ½:" + nDivNoNext);
                    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','display':'block'});
				    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','display':'block'});
				    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>");
            });
			
		} else if (config.isActType == "none") {
			objSelObj.css({'left':config.nWidth+'px','display':'none'});
			objNextObj.css('left','0');
			objNextObj.fadeIn(nSpeed);
		} else if (config.isActType == "keep") {
			objSelObj.css({'left':config.nWidth+'px','display':'none'});
			objNextObj.css('left','0');
			objNextObj.show();
		}
		
		
	}

	//-------------------------------------------------------//
	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"));
				}
			});
			
		}
	}
	
});
