﻿var isie6 = false;
if (($.browser.msie) && ($.browser.version == "6.0")) isie6 = true;

$(function() {
	$('input[placeholder], textarea[placeholder], input.placeholder, textarea.placeholder').placeholder();
	toggleSitemap();
	selectbox();
	findShopLayer();
	$('#rollingNotice').rollingTxt();
	$('a.popup').click(function() {
		var a = $(this)
			, url = a.attr('href')
			, w = a.attr('data-width')
			, h = a.attr('data-height')
			, option
			, name = a.attr('id')
		;
		option = (a.attr('data-option') == undefined) ? 0 : a.attr('data-option');
		popup(url, w, h, name, option);
		return false;
	});

	$('.goTop a').click(function() {
		window.scrollTo(0, 0);
		$(this).blur();
		return false;
	});

	if ($.browser.msie) {
		$('iframe').attr({ 'allowTransparency': 'true' });
	}

	$('#footer').find('section.family > ul a').each(function() {
		var $self = $(this);
		if (!($self.hasClass('fam3') || $self.hasClass('fam4') || $self.hasClass('fam7') || $self.hasClass('fam8'))) {
			$self.attr('target', '_blank');
		}
	});

	// ie6 optional
	if (isie6) {
		jqPngFix();
	}
});

var boardChk = function() {
	if ($('#content').hasClass('board')) {
		$('#footer').find('.goTop').hide();
	}
}

// set image width ( @ board view )
var setArticleImg = function() {
	$('.boardView .articleBody img').each(function() {
		var img = $(this);
		if (img.width() > 460) {
			img.width(460);
		}
	});
}

// search mart/express/ab/leaflet ( @ master top )
function findShopLayer() {
	var btns = $('#btn_searchMart').add('#btn_searchLeaflet');
	$('.mart input[type=radio]:checked').prev('label').addClass('on');
	$('.mart label').click(function() {
		$(this).parent().parent().find('label').removeClass('on').end().end().end().addClass('on');
	});
	var reset = function() {
		$('.mart:visible').css('z-index', 1).slideUp();
		btns.each(function() {
			$(this).removeClass('on').find('img').imgOff();
		});
	}
	btns.each(function() {
		var btn = $(this)
			, layer = $(btn.attr('href'))
			, close = layer.find('button')
		;
		btn.click(function() {
			reset();
			if (layer.is(':hidden')) {
				layer.css('z-index', 10).slideDown();
				btn.addClass('on').find('img').imgOn();
			}
			return false;
		});
		close.click(reset);
	});
}

var historyScroll = function() {
	var nav = $('#historyNav')
		, tabs = nav.find('a')
		, content = $('#content')
		, scrollA = $('#historyScroll')
		, list = scrollA.find('ol').eq(0)
		, li = list.find('li')
		, bg = $('#bgR_history')
		, tab1h = tabs.eq(0).offset()
		, h1 = tab1h.top
	;

	tabs.each(function(n) {
		var tab = $(this)
			, target = $(tab.attr('href'))
			, offset = target.offset()
			, h = offset.top
			;
		tab.click(function() {
			tabs.find('img').each(function() {
				$(this).imgOff();
			});
			tab.find('img').imgOn();
			li.removeClass('on');
			target.addClass('on');
			list.animate({ 'margin-top': (h - h1) * (-1) + 'px' }, 720, 'swing', function() {
				if (!isie6) bg.height(content.innerHeight());
			});
			return false;
		});
		if (n == 0) {
			tab.find('img').imgOn();
			target.addClass('on');
		}
	});

	scrollA.css('min-height', nav.outerHeight() + 60);
	if (isie6) {
		scrollA.css('height', content.innerHeight());
		bg.height(content.innerHeight());
	}
}

function popup(url, w, h, name, option) {
	var px, py;
	var sw = screen.availWidth;
	var sh = screen.availHeight;
	var scroll = 0;
	if (option == 'scroll') {
		scroll = 1;
	}
	px = (sw - w) / 2;
	py = (sh - h) / 2;
	window.open(url, name, "location=0,status=0,scrollbars=" + scroll + ",resizable=1,width=" + w + ",height=" + h + ",left=" + px + ",top=" + py);
}

function popup_s(url, w, h) {
	var px, py;
	var sw = screen.availWidth;
	var sh = screen.availHeight;
	px = (sw - w) / 2;
	py = (sh - h) / 2;
	window.open(url, "mywindow", "location=0,status=0,scrollbars=1,resizable=1,width=" + w + ",height=" + h + ",left=" + px + ",top=" + py);
}


function jqPngFix() {
	$('img[src$=png]').each(function() {
		var img = $(this);
		img.css({ "width": '1px', "height": '1px', "filter": "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + img.attr("src") + "', sizingMethod='image')" });
		img.attr("src", "/Images/global/blank.gif");
	});
}

function selectbox() {
	var $select = $('div.selectbox')
		, $options = $select.find('ul.selectOption')
	;

	$select.each(function() {
		var $this = $(this)
			, $selected = $this.find('p.selected')
			, $option = $this.find('ul.selectOption')
			, $label = $this.find('label')
			, isopen = false
		;
		function selectOpen() {
			$options.hide();
			$option.show();
			$select.css('zIndex', 1);
			$this.css('zIndex', 1000);
			isopen = true;
		}
		function selectClose() {
			$option.hide();
			$select.css('zIndex', 1);
			isopen = false;
		}
		$this.click(function(event) {
			event.stopPropagation();
			if (!isopen) {
				var setWidth = parseInt($this.width()) - 2;
				$option.css('width', setWidth + 'px');
				selectOpen();
			} else {
				selectClose();
			}
		});
		$label.click(function(event) {
			event.stopPropagation();
			$(this).find('input').attr('checked', 'checked');
			$selected.text($(this).text());
			selectClose();
		});
		if (($.browser.msie) && ($.browser.version == "6.0")) {
			$label.hover(
				function() { $(this).addClass('over'); }
				, function() { $(this).removeClass('over'); }
			);
		}
		$(document.body).click(selectClose);
	});
	return true;
}

function toggleSitemap() {
	var sitemap = $('#sitemap')
		, container = $('#container')
		, wrap = $('#wrap')
		, footer = $('#footer')
		, pb = container.css('padding-bottom')
		, mt = footer.css('margin-top')
		, h = footer.css('height')
		, opened_h = (sitemap.innerHeight() + parseInt(h) - 30)
		, img = $('#sitemapBtn').find('img')
	;
	if (($.browser.msie) && ($.browser.version == "6.0")) {
		opened_h = sitemap.innerHeight();
		h = parseInt(h) - sitemap.innerHeight() + 30;
	}
	var opened_mt = (opened_h + 1) + 'px';
	opened_h = opened_h + 'px';
	sitemap.hide();

	if (footer.css('position') == 'static') {
		wrap.css('z-index', '0');
	}

	$('#sitemapBtn').toggle(
		function() {
			sitemap.show();
			container.css({ 'padding-bottom': opened_mt });
			footer.css({ 'margin-top': '-' + opened_mt, 'height': opened_h });

			// scroll animation start
			var pos = $.extend({}, $(this).offset())
				, requestedY = pos.top
				, maxStep = 150, brakeK = 4
			;

			var set = {
				getWindowHeight: function() {
					if (window.innerHeight) return window.innerHeight;
					if (document.documentElement && document.documentElement.clientHeight) return document.documentElement.clientHeight;
				},
				getDocumentHeight: function() {
					return parseInt($('#wrap').innerHeight()) + parseInt(footer.innerHeight());
				},
				getScrollTop: function() {
					if (document.all) return (document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop;
					else return window.pageYOffset;
				}
			}

			function scrolling() {
				var top = set.getScrollTop();
				if (requestedY > top) {
					var endDistance = Math.round((set.getDocumentHeight() - (top + set.getWindowHeight())) / brakeK);
					endDistance = Math.min(Math.round((requestedY - top) / brakeK), endDistance);
					var offset = Math.max(2, Math.min(((requestedY - top) / brakeK), maxStep));
				} else {
					var offset = -Math.min(Math.abs(Math.round((requestedY - top) / brakeK)), maxStep);
				} window.scrollTo(0, top + offset);
				if (Math.abs(top - requestedY) <= 2 || set.getScrollTop() == top) {
					window.scrollTo(0, requestedY);
				} else setTimeout(scrolling, 40);
			}
			scrolling();
			// scroll animation end
			img.imgOn();
			img.attr('alt', '서비스 전체보기 닫기');
			if (footer.css('position') == 'static') {
				wrap.css('z-index', '');
			}
			return false;
		},
		function() {
			container.animate({ 'padding-bottom': pb }, 400, 'swing');
			footer.animate({ 'margin-top': mt, 'height': h }, 400, 'swing', function() {
				sitemap.hide();
				if (footer.css('position') == 'static') {
					wrap.css('z-index', '0');
				}
			});
			img.imgOff();
			img.attr('alt', '서비스 전체보기 열기');
			return false;
		}
	);
	}


function initTabMenu(tabContainerID, imgOn, openOption) {
	var tabContainer = document.getElementById(tabContainerID);
	var tabAnchor = tabContainer.getElementsByTagName("a");
	var imgOption = imgOn;
	var i = 0, tab = [], tabLength = 0;
	if (!imgOn) imgOption = 'on';
	if (!openOption) openOption = true;

	for (i = 0; i < tabAnchor.length; i++) {
		if (tabAnchor.item(i).className == "tab") {
			t = tabLength;
			thismenu = tab[t] = tabAnchor.item(i);
			tabLength++;
		} else
			continue;

		thismenu.container = tabContainer;
		thismenu.targetEl = tabAnchor.item(i).targetEl = document.getElementById(tabAnchor.item(i).href.split("#")[1]);
		thismenu.targetEl.style.display = "none";
		thismenu.imgEl = thismenu.getElementsByTagName("img").item(0);

		if (!(thismenu.imgEl) || imgOption == 'off') {
			thismenu.onclick = function tabMenuClick() {
				currentmenu = this.container.current;
				if (currentmenu == this)
					return false;

				if (currentmenu) {
					currentmenu.targetEl.style.display = "none";
					currentmenu.parentNode.className = currentmenu.parentNode.className.replace(" on", "");
				}
				this.targetEl.style.display = "";
				this.parentNode.className += " on";
				this.container.current = this;

				return false;
			};
		} else {
			thismenu.onclick = function tabMenuClick() {
				currentmenu = this.container.current;

				function currentReset() {
					currentmenu.targetEl.style.display = "none";
					if (currentmenu.imgEl) {
						currentmenu.imgEl.src = currentmenu.imgEl.src.replace("_on.gif", ".gif");
					} else {
						currentmenu.className = currentmenu.className.replace(" on", "");
					}
					currentmenu.parentNode.className = currentmenu.parentNode.className.replace(" on", "");
				}

				if (currentmenu == this && openOption == 'closed') {
					currentReset();
					this.container.current = '';
					return false;
				} else if (currentmenu == this)
					return false;

				if (currentmenu) currentReset();

				this.targetEl.style.display = "";
				if (this.imgEl) {
					this.imgEl.src = this.imgEl.src.replace(".gif", "_on.gif");
				} else {
					this.className += " on";
				}
				this.parentNode.className += " on";
				this.container.current = this;

				return false;
			}
		}

		if (!thismenu.container.first)
			thismenu.container.first = thismenu;
	}
	if (openOption == 'closed') {
		function closeAllTabs() {
			for (t = 0; t < tabLength; t++) {
				tabA = tab[t];
				tabA.parentNode.className = tabA.parentNode.className.replace(" on", "");
				tabA.imgEl = tabA.getElementsByTagName("img").item(0);
				tabA.imgEl.src = tabA.imgEl.src.replace("_on.gif", ".gif");
				tabA.tergetEl = document.getElementById(tabA.href.split("#")[1]);
				tabA.tergetEl.style.display = 'none';
				currentmenu = '';
			}
		}
		document.body.onclick = closeAllTabs;
		tabContainer.onclick = function(e) {
			var event = window.event || e;
			if (event.preventDefault) { /* event.preventDefault(); */event.stopPropagation(); }
			else { /* event.returnValue = false; */event.cancelBubble = true; }
		}
		return false;
	}
	if (tabContainer.first)
		tabContainer.first.onclick();
}

(function($) {
	$.fn.imgOn = function() {
		var $thisImg = $(this);
		if (!($thisImg.is('img'))) return false;
		var imgurl = $thisImg.attr('src');
		if (imgurl.indexOf("_on.gif") < 0) $thisImg.attr('src', imgurl.replace(".gif", "_on.gif"));
	}
	$.fn.imgOff = function() {
		var $thisImg = $(this);
		if (!($thisImg.is('img'))) return false;
		var imgurl = $thisImg.attr('src');
		if (imgurl.indexOf("_on.gif") > -1) $thisImg.attr('src', imgurl.replace("_on.gif", ".gif"));
	}

	// for navigation
	$.fn.navSet = function(d1, option) {
		var params = jQuery.extend({
			sub: 0
			, changeImg: true
		}, option);
		d1 = d1 - 1;
		var navContainer = $(this)
			, changeImg = params.changeImg
			, subD = params.sub
			, nav = navContainer.find('>li').find('>a')
		;

		nav.each(function(n) {
			var $this = $(this)
				, $li = $this.parent()
				, $thisImg = $this.find('img')
				, hasSub = $li.has('ul').length
			;

			$li.find('ul').hide();
			if (d1 == n) {
				if (changeImg) nav.eq(d1).find('img').imgOn();
				$li.addClass('on').find('ul').show();
				if (hasSub && subD != 0) {
					$li.find('ul').navSet(subD, { changeImg: false });
				}
			}
			if (!($li.is('li.on'))) {
				$this.bind({
					focus: over
					, mouseenter: over
					, blur: function() {
						$this.parent().removeClass('on');
						$this.find('img').imgOff();
					}
				});
				$li.bind({
					mouseleave: out
				});
			}
			$this.click(function() {
				$this.blur();
			});

			function over() {
				$li.addClass('on').find('ul').slideDown(300);
				if (changeImg) $thisImg.imgOn();
			}
			function out() {
				$thisImg.imgOff();
				$li.removeClass('on').find('ul').stop(true, true).slideUp(150);
			}
		});
	}

	$.fn.placeholder = function() {
		$(this).each(function() {
			var $this = $(this)
				, holder = $this.attr('placeholder')
			;
			if ($this.val() == '') {
				$this.val(holder);
			} else {
				$this.removeClass('placeholder');
			}
			function focus() {
				if ($this.val() == holder) {
					$this.val('');
				}
				$this.removeClass('placeholder');
			}
			$this.bind('focus click', focus);
			$this.blur(function() {
				if ($this.val() == '') {
					$this.val(holder).addClass('placeholder');
				}
			});
		});
	}

	$.fn.accordian = function(option) {
		$(this).each(function() {
			var container = $(this)
				, items = container.find('li')
				, questions = items.find('p.q')
				, answers = items.find('div.a')
				, w = 638
				, reset = function() {
					items.removeClass('on');
					answers.hide();
				}
			;
			answers
				.find('button').show().end()
				.find('img').each(function() {
					var img = $(this);
					if (img.width() > w) {
						img.width(w);
					}
				});
			reset();

			questions.css('cursor', 'pointer').each(function() {
				var q = $(this)
					, item = q.parent()
					, a = item.find('div.a')
					, close = function() {
						a.slideUp(300, function() { item.removeClass('on'); });
					}
				;
				q.click(function() {
					if (item.hasClass('on')) {
						close();
					} else {
						reset();
						item.addClass('on');
						a.slideDown(300);
					}
				});
				item.find('button').click(close);
			});
		});
	}

	$.fn.bannerSlide = function(option) {
		var params = jQuery.extend({
			animation: 500
			, random: true
			, nav: true
			, interval: 3000
			, motion: 'horizontal'
			, num: 1
		}, option);

		$(this).each(function() {
			var $container = $(this)
				, $bannerItem = $container.find('.item')
				, w, h
				, amount = $bannerItem.size()
				, motion = (params.animation == false) ? 0 : params.animation
				, randomset = (params.random) ? Math.floor(Math.random() * amount) : 0
				, bannerIndex = randomset
				, action = (params.interval > 0) ? true : false
			;
			w = parseInt($bannerItem.outerWidth());
			h = parseInt($bannerItem.outerHeight());

			if (params.nav) {
				var setbannerNav = $('<div class="bannerNav"></div>');
				setbannerNav.prependTo($container);
				if (amount > 1) {
					for (i = 0; i < amount; i++) {
						$('<button type="button"></button>').appendTo(setbannerNav);
					}
				}
			}

			var $animationController = $container.find('div.banners')
				, $mask = $('<div style="overflow:hidden;position:relative;width:' + w + 'px;height:' + h + 'px" />');
			$animationController.wrap($mask);

			$animationController.css({ 'width': w * amount + 'px' });
			$bannerItem.css('float', 'left');

			if (params.nav) {
				var $bannerNav = $container.find('.bannerNav button');
				$bannerNav.each(function(n) {
					var $thisNum = $(this);
					function bannerShow() {
						bannerMotion(n, motion);
						on($thisNum);
						action = false;
					}
					$thisNum.bind('click', bannerShow);
				});
			}

			function bannerMotion(num, ani) {
				bannerIndex = num;
				if (params.motion == 'horizontal') {
					$animationController.stop().animate({ 'marginLeft': '-' + w * num + 'px' }, ani, 'swing');
				} else {
					$animationController.stop().animate({ 'marginTop': '-' + h * num + 'px' }, ani, 'swing');
				}
				resetNum();
			}

			function on(nObj) { nObj.addClass('on'); }
			function off(nObj) { nObj.removeClass('on'); }
			function resetNum() {
				if (params.nav) { $bannerNav.each(function() { off($(this)); }); }
			}

			function setBanner(setup, ani) {
				bannerMotion(setup, ani);
				on($('.bannerNav button:eq(' + setup + ')', $container));
			}
			function nextBanner() {
				(bannerIndex >= (amount - 1)) ? bannerIndex = 0 : bannerIndex++;
				setBanner(bannerIndex, motion);
			}
			function prevBanner() {
				(bannerIndex <= 0) ? bannerIndex = (amount - 1) : bannerIndex--;
				setBanner(bannerIndex, motion);
			}
			setBanner(bannerIndex, 0);

			$container.find('button.next').click(nextBanner);
			$container.find('button.prev').click(prevBanner);

			function autorun() {
				if (!action) return;
				nextBanner();
			}
			if (action) {
				setInterval(function() { autorun() }, params.interval);
				$container.hover(function() { action = false; }, function() { action = true; });
			}
		});
	}

	$.fn.rollingTxt = function(option) {
		var params = jQuery.extend({
			random: false
			, interval: 2500
		}, option);
		var container = $(this)
			, items = container.find('li')
			, h = items.height()
			, action = (params.interval > 0) ? true : false
			, index = 0
		;
		container.css({ 'height': h + 'px', 'overflow': 'hidden' });

		function next() {
			if (index == items.size() - 1) {
				index = 0;
			} else {
				index++;
			}
			items.eq(0).animate({ 'margin-top': (-1) * h * index + 'px' });
		}
		function autorun() {
			if (!action) return;
			next();
		}
		if (action) {
			setInterval(function() { autorun() }, params.interval);
			container.hover(function() { action = false; }, function() { action = true; });
		}
	}
})(jQuery);
