/*!
 * gon_jq_semove.js - Separate Object Movement Control
 *
 * Copyright (c) 2011 Sang-gon Kim
 * http://blog.naver.com/belwort1
 *
 * Licensed under NHN TS
 * http://www.naver.com
 * E-mail : gon@nhn.com
 *
 * Launch  : JUNE 2011
 * Version : 1.0
 * 
 * modified by SoonsuWeb(AU1), background move, fixed LIMIT_CALCULATE_MARGIN, select Navigation
 */

(function($){
	var $els = null;
	var OBJECT_CLASS_1 = "img1";
	var OBJECT_CLASS_2 = "img2";

	var MARGIN_PARAMETER = 0.7;
	var MARGIN_PARAMETER2 = 0.3;
	var BG_POSITION_PARAMETER = .16;
	
	var LIMIT_CALCULATE_MARGIN = -180; //px
	var OVERSIZE_MARGIN = 50; // px

	$.fn.semove = function(opts){
		$els = this;
		setEvent();
		movement();
	};
	
	function setEvent(){
		$(window).scroll(movement);
	}
	
	function movement(){
		var nIndex = 0;
		$els.each(function(){
			var $self = $(this);
			if (isDisplay($self)){
				var nPos;
				var el_top = $self.position().top;
				
				var val1 = el_top - $(window).scrollTop();
				nPos = val1 * MARGIN_PARAMETER - OVERSIZE_MARGIN;
				if(nPos > LIMIT_CALCULATE_MARGIN){
					$self.find("."+OBJECT_CLASS_1).css("margin-top",nPos + "px");
				}
				
				var val2 = el_top - $(window).scrollTop();
				nPos = val2 * MARGIN_PARAMETER2 - OVERSIZE_MARGIN;
				if(nPos > LIMIT_CALCULATE_MARGIN){
					$self.find("."+OBJECT_CLASS_2).css("margin-top", nPos + "px");
				}
				
				if ($self.hasClass("bg")){
					nPos = (-bgPosition($self) * BG_POSITION_PARAMETER);
					$self.css("backgroundPosition", "50% " + nPos + "px");	
				}
				
				if (isActive($self)){
					selectNav(nIndex);
				}
			}
			nIndex++;
		});
	}
	
	function isActive ($el){
		var nMiddle = $(window).scrollTop() + ($(window).height() / 2) - 90;
		var nElementTop = $el.offset().top;
		return(nMiddle >= nElementTop && nMiddle <= nElementTop + $el.height());
	}
	
	function isDisplay ($el){
		return (!aboveScreen($el) && !belowScreen($el));
	}

	function aboveScreen ($el){
			var nTop = $(window).scrollTop();
			return nTop >= $el.offset().top + $el.height();
	}

	function belowScreen ($el){
			var nBottom = $(window).height() + $(window).scrollTop();
			return nBottom <= $el.offset().top;
	}

	function bgPosition ($el){
		var nBottom = $(window).height() + $(window).scrollTop();
        return nBottom - $el.offset().top;
    }
	
	function selectNav (nIndex){
		var arNav = $(".nav li");
		for (var i=0; i<arNav.length; i++){
			$el = $(arNav[i]);
			var sClass = $el.attr("class").split(" ")[0];
			if (nIndex == i){
				$el.addClass(sClass + "_on");
			} else {
				$el.removeClass(sClass + "_on");
			}
		}
		var arNav2 = $(".nav2 li");
		for (var i=0; i<arNav2.length; i++){
			$el = $(arNav2[i]);
			var sClass2 = $el.attr("class").split(" ")[0];
			if (nIndex == i){
				$el.addClass(sClass2 + "_on");
			} else {
				$el.removeClass(sClass2 + "_on");
			}
		}
	}

})(jQuery);

