/*
position
relative ¸é¼­ left, top ÀÖ´Â °æ¿ì -> ÇØ´ç ¿¤¸®¸ÕÆ®¸¦ relative top/left·Î
relative ¸é¼­ left, top ¾ø´Â °æ¿ì -> cssÀÇ left, top µû¸§
absolute ¸é¼­ left, top ÀÖ´Â °æ¿ì -> ¹®¼­ ±âÁØ left, top
absolute ¸é¼­ left, top ¾ø´Â °æ¿ì -> °¡¿îµ¥
*/
(function($) {
	$.setLayer = function(options){

		var options = (typeof arguments[0] != 'object') ? {} : arguments[0];
		options = {
			id: (typeof options.id == 'undefined') ? "_layerPopup" : options.id,
			left: (typeof options.left == 'undefined') ? -1 : options.left,
			top: (typeof options.top == 'undefined') ? -1 : options.top,
			opacity: (typeof options.opacity == 'undefined') ? .5 : options.opacity,
			position: (typeof options.position == 'undefined') ? "immune" : options.position,
			bgcolor: (typeof options.bgcolor == 'undefined') ? "white" : options.bgcolor,
			scroll: (typeof options.scroll == 'undefined') ? false : options.scroll,
			overlayId: (typeof options.overlayId == 'undefined') ? "_divOverlay" : options.overlayId,
			closeId: (typeof options.closeId == 'undefined') ? "closeButton" : options.closeId,
			ie6Height: (typeof options.ie6Height == 'undefined') ? 0 : options.ie6Height
		}

		$.setLayer.close = function(){
			if (options.opacity == 0) {
				$("#" + options.id).hide();
			} else {

				$("#" + options.id).hide();
				/*$("#" + options.overlayId).fadeOut(300, function() {
					$(this).remove();
				});*/
				$("#" + options.overlayId).remove();
			}

			if ($.browser.msie) {
				if(parseInt($.browser.version) == 6){
					$("select").show();

					$("div#tempHeight").remove();
				}
			}
		}

		var $sourceLayerOverlay = $("#" + options.overlayId);

		if ($sourceLayerOverlay.length == 1) {
			alert("error: ÀÌ¹Ì opacity¸¦ »ç¿ëÇÏ¿© »ý¼ºµÈ ·¹ÀÌ¾î°¡ Á¸ÀçÇÕ´Ï´Ù.");
			return;
		}

		var $sourceLayer = $("#" + options.id) // ·¹ÀÌ¾îÀÇ id

		if ($sourceLayer.length == 0) {
			alert("ÁöÁ¤µÈ id ¼Ó¼ºÀ» °¡Áø ·¹ÀÌ¾î°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. : " + options.id);
			return;
		}

		var docWidth = $(document).width(); // ½ºÅ©·Ñ ¿©¹éÀ» Æ÷ÇÔ ÇÑ documentÀÇ ³ÐÀÌ
		var docHeight = $(document).height(); // ½ºÅ©·Ñ ¿©¹éÀ» Æ÷ÇÔ ÇÑ documentÀÇ ³ôÀÌ
		var bodyWidth = $("body").width(); // ½ºÅ©·Ñ ¿©¹éÀ» Á¦¿Ü ÇÑ documentÀÇ ³ÐÀÌ
		var bodyHeight = $("body").height(); // ½ºÅ©·Ñ ¿©¹éÀ» Á¦¿Ü ÇÑ documentÀÇ ³ôÀÌ

		var scrollWidth = 0;

		if ($.browser.msie) {
			scrollWidth = 20;
			if(parseInt($.browser.version) == 6){
				$("select").hide();

				var tempHeight = "";
				if($.setLayer.ie6Height == 0){
					tempHeight = "100%";
				}else{
					tempHeight = options.ie6Height + "px";
				}

				$("<div/>", {
					id:"tempHeight",
					css:{
						position:"absolute",
						left:"0px",
						top:"0px",
						width:"1px",
						height:tempHeight,
						zIndex:0
					}
				}).appendTo($("body"));

				if(options.ie6Height == 0){
					options.ie6Height = $("div#tempHeight").height();
					bodyHeight = $("div#tempHeight").height();
				}else{
					bodyHeight = options.ie6Height;
				}
			}
		}

		var docScrollTop = $(document).scrollTop();
		var layerWidth = $sourceLayer.width(); // ·¹ÀÌ¾îÀÇ ³ÐÀÌ
		var layerHeight = $sourceLayer.height(); // ·¹ÀÌ¾îÀÇ ³ôÀÌ

		var positionLeft, positionTop;
		// left À§Ä¡ ÁöÁ¤ ÇÏÁö ¾ÊÀ¸¸é °¡·Î ¼¾ÅÍ Á¤·Ä
		if (options.left == -1) {
			positionLeft = (docWidth - layerWidth) / 2 // °¡·Î °¡¿îµ¥ Á¤·Ä
		} else {
			positionLeft = options.left;
		}

		// top À§Ä¡ ÁöÁ¤ ÇÏÁö ¾ÊÀ¸¸é ¼¼·Î ¼¾ÅÍ Á¤·Ä
		if (options.top == -1) {
			/*if(docScrollTop == 0){
				positionTop = ((bodyHeight - layerHeight) / 2);		// ¼¼·Î °¡¿îµ¥ Á¤·Ä
			}else{*/
				positionTop = ((document.documentElement.clientHeight - layerHeight) / 2) + docScrollTop;
				//alert(document.documentElement.clientHeight);
			//}
		} else {
			positionTop = options.top;
		}

		var $sourceLayerClone = $sourceLayer.clone();
		$sourceLayer.remove();

		$sourceLayerClone.css({
			position: "absolute",
			left: positionLeft + "px",
			top: positionTop + "px",
			zIndex: 10000
		}).appendTo($("body")).show();

		// ´Ý±â¹öÆ°¿¡ ÀÌº¥Æ®
		//alert(options.id);
		//alert(options.closeId);
		//alert("#" + options.id + " #" + options.closeId);
		//alert($("#" + options.id + " #" + options.closeId).length)
		$("#" + options.id + " #" + options.closeId).click(function(e){
			e.preventDefault();
			$.setLayer.close();
		}).mouseover(function(){
			$(this).css("cursor", "hand");
		});

		// ½ºÅ©·Ñ ³ôÀÌ¿¡ µû¶ó ¼¼·Î °¡¿îµ¥ Á¤·Ä
		if (options.scroll) {
			if ($.browser.msie) {
				if(parseInt($.browser.version) == 6){
					$(window).scroll(function(e) {
							$("#" + options.id).css({
							top: (((bodyHeight - layerHeight) / 2) + docScrollTop) + "px"
						});
					});
				}else{
					$("#" + options.id).css("position","fixed");
				}
			}else{
				$("#" + options.id).css("position","fixed");
			}
		}

		// opacity °ªÀ» ¼ÂÆÃ ÇßÀ»¶§¸¸ ¿À¹ö·¹ÀÌ ·¹ÀÌ¾î »ý¼º
		if (options.opacity > 0) {
			$("<div/>", {
				id: options.overlayId,
				css: {
					position: "absolute",
					left: 0,
					top: 0,
					width: docWidth + "px",
					height: docHeight + "px",
					backgroundColor: options.bgcolor,
					display: "none",
					opacity: options.opacity,
					zIndex: 9999
				}
			}).appendTo($("body")).show();//.fadeIn(300);
		}

	}
})(jQuery);
