var Layout = {	
	addEvent:function(el, event, callback) {
		alert("Delete Layout")
	}
}
var Css = {
	init: function () {
		this.assignDisplay()
		this.align()
	},
	assignDisplay: function () {
		var elements = FindEl.byClass(document.getElementsByTagName('div'), "Display")
		if (elements) {
			for (var i=0; i < elements.length; i++) {
				elements[i].style.display = (elements[i].className.indexOf("DisplayNone") != -1) ? "none" : "block"
			}
		}
	},
	align: function () {
		var elements = FindEl.byClassIndexOf(document.getElementsByTagName('div'), "Align-")
		if (elements) {
			for (var i=0; i < elements.length; i++) {
				var container = document.createElement("div")
				
				var children = elements[i].childNodes
				AppendEl.moveChildrenInto(container, children)
				AppendEl.moveChildInto(elements[i], container)
				container.style.cssFloat = "left"
				container.style.styleFloat = "left"
				container.style.width = container.offsetWidth  + 16+"px"
				container.style.cssFloat = "none"
				container.style.styleFloat = "none"
				 
				if (elements[i].className.split("Align-")[1] == "Left") {
					container.style.margin = "0 auto 0 0"
				} else if (elements[i].className.split("Align-")[1] == "Right") {
					container.style.margin = "0 0 0 auto"
				} else {
					container.style.margin = "0 auto"
				}
			}
		}
	},
	absoluteLayout: function (element, property) {
		var container = element.parentNode
		if (property == "width") {
			var borderWidth = element.offsetWidth - element.clientWidth
			var result = container.clientWidth - borderWidth - (parseInt(Css.getStyle(element, "left")) + parseInt(Css.getStyle(element, "right")))
		} else {
			var borderWidth = element.offsetHeight - element.clientHeight
			var result = container.clientHeight - borderWidth - (parseInt(Css.getStyle(element, "top")) + parseInt(Css.getStyle(element, "bottom")))
		}		
		return result + "px"
	},
	getStyle: function(element, style) {
	   	element = document.getElementById(element);
	    style = style == 'float' ? 'cssFloat' : style.camelize();
	    var value = element.style[style];
	    if (!value) {
	      var css = document.defaultView.getComputedStyle(element, null);
	      value = css ? css[style] : null;
	    }
	    if (style == 'opacity') return value ? parseFloat(value) : 1.0;
	    return value == 'auto' ? null : value;
	}
}

var Button = {
	init: function () {
		if ($("mainMenu")) Menu.init("mainMenu");
		if ($("testMyId")) Menu.init("testMyId");
		var targetEl = FindEl.byClass(document.getElementsByTagName("*"), "CommonButton")	
		var length = targetEl.length;
		var defaultSubmit = false;

		for (var i=0; i < targetEl.length; i++) {
			var target = targetEl[i]
			if (target.className.indexOf("Round") != -1) this.makeRound(target)
			if (target.tagName == "INPUT") {
				var button
				if (target.type == "submit" || target.type == "reset" || target.type == "button") {
					button = document.createElement("a")
					button.href = "#"
					button.innerHTML = target.value
				} else if (target.type == "image") {
					button = document.createElement("img")
					button.alt = target.alt
					button.src = target.src
					button.style.cursor = "pointer"
				}
				if (target.id) button.id = target.id
				if (target.className) button.className = target.className
				button.className += " name-" + target.name
				AppendEl.insertNodeAt(button, target, "after");
				
				if (target.onclick) {
					button.onclick = target.onclick;
				} else {
					if (target.type == "reset") {
						button.onclick = this.parentFormReset
					} else if (target.type == "submit" || target.type == "image") {
						button.onclick = this.parentFormSubmit
					} else if (target.type == "button") {
						button.onclick = function () { return false }
					}
				}
				
				if (!defaultSubmit) {
					if (target.type == "submit") defaultSubmit = true
					var parentForm = FindEl.parentForm(target)
					if (parentForm) {
						AppendEl.moveChildInto(parentForm, target)					
						parentForm.style.width = "100%"							
						parentForm.style.overFlow = "hidden"
						target.style.position = "absolute"
						target.style.top = "-1000px"
						target.className = ""
						target.id = ""
					} else {
						target.parentNode.removeChild(target)
					}
				} else {
					target.parentNode.removeChild(target)
				}
			}
		}
	},
	makeRound: function (target) {
		var container = document.createElement("div")
		container.className = "RoundButton style-" + target.className.split("style-")[1]
		container.innerHTML = '<div class="RI1"><div class="RI2"><div class="RI3"><div class="RI4"></div></div></div></div>'
		var wrap = FindEl.byClass(container.getElementsByTagName('div'), "RI4")[0]
		AppendEl.moveChildInto(target.parentNode, container)
		AppendEl.moveChildInto(wrap, target)
	},
	parentFormSubmit: function () {
		var parentForm = FindEl.parentForm(this);

		if (!parentForm.onsubmit || parentForm.onsubmit() != false) {
			var currentField = FindEl.byClass(parentForm.getElementsByTagName('input'), "scriptField")[0]
			if (currentField) {
				currentField.name = this.className.split("name-")[1]
				currentField.value = this.innerHTML
			} else {
				var hiddenField = document.createElement("input")
				hiddenField.type = "hidden"
				hiddenField.name = this.className.split("name-")[1]
				hiddenField.value = (this.innerHTML) ? this.innerHTML : this.alt
				hiddenField.className = "scriptField"
				AppendEl.moveChildInto(parentForm, hiddenField)
			}
			if (document.createEvent) {
				var e = parentForm;
				var evt = document.createEvent("HTMLEvents");
				evt.initEvent("submit", true, false);
												
				var isSafari = e.dispatchEvent(evt)
				if (isSafari == true) {
					e.submit();
				};
			} else {
				parentForm.fireEvent('onsubmit');
				parentForm.submit();
			}
		}
		return false;
	},
	parentFormReset: function () {
		var parentForm = FindEl.parentForm(this);		
		parentForm.reset()
		return false;
	},
	inputIeHack: function () {
		var input = document.createElement("div")
		input.innerHTML = '<input type="submit" value="ie 18" />'
	}
}
var AppendEl = {
	moveChildInto: function (el, child) {
		el.appendChild(child)
	},
	moveChildrenInto: function (el, children) {		
		while (children.length) {
			this.moveChildInto(el, children[0])
		}
	},
	insertNodeAt: function(node, dest, where) {
		if(where == "before") {
			dest.parentNode.insertBefore(node, dest);
		} else { // "after"
			var next = dest.nextSibling;
			if(next) {
				next.parentNode.insertBefore(node, dest);
			} else {
				dest.parentNode.appendChild(node);
			}
		}
	}
}
var RemoveEl = {
	child: function (child) {
		child.parentNode.removeChild(child)
	},
	children: function (children) {
		for (var i=0; i < children.length; i++) {
			this.child(children[i])
		}
	}	
}
var FindEl = {
	getButtonLikeElementsByClassName: function(element, className) {
		if(element.getElementsByClassName) {
			return element.getElementsByClassName(className);
		} else {
			var anchors = element.getElementsByTagName("a");
			var inputs = element.getElementsByTagName("input");
			var result = [];
			FindEl.byClass(anchors, className, result);
			FindEl.byClass(inputs, className, result);
			return result;
		}
	},
	byClass: function (el, className, array) {
		var elements = array || []
		var pattern = new RegExp("(^|\\s)" + className + "($|\\s)")
		
		for (var i = 0; i < el.length; i++) {
			if (pattern.test(el[i].className)) {
				elements.push(el[i])
			}
		}
		return elements
	},
	byClassIndexOf: function (el, className, array) {
		var elements = array || []
		for (var i = 0; i < el.length; i++) {
			if (el[i].className.indexOf(className) != -1) elements.push(el[i])
		}
		return elements
	},
	byNodeType: function (el, nodeType) {
		var elements = []

		for (var i=0; i < el.length; i++) {
			if (el[i].nodeType == nodeType ) {
				elements.push(el[i])
			}
		}
		return elements
	},
	parentForm: function (el) {
		var tempEl = el
		var parentForm
		do { 
			tempEl = tempEl.parentNode
			if (!tempEl) break
		}
		while (tempEl.tagName != "FORM")
		parentForm = tempEl
		return parentForm
	},
	parentNodeByClass: function (el, className) {
		var tempEl = el
		var parentEl
		do { tempEl = tempEl.parentNode }
		while (tempEl.className.indexOf(className) == -1)
		parentEl = tempEl
		return parentEl
	}
}
var IeSixHack = {
	findWidth: function (container, element) {
		element = $(element)
		var borderWidth = element.offsetWidth - element.clientWidth
		var result = container.clientWidth - borderWidth - (parseInt(element.getStyle("left")) + parseInt(element.getStyle("right")))
		return result + "px"
	},
	findHeight: function (container, element) {
		element = $(element)
		var borderWidth = element.offsetHeight - element.clientHeight
		var result = container.clientHeight - borderWidth - (parseInt(element.getStyle("top")) + parseInt(element.getStyle("bottom")))
		return result + "px"
	}
}


/* label display: none; */
function initInputValueEffect(El) {
	if (document.getElementById(El)) {
		contEL = document.getElementById(El);
		labelEl = contEL.getElementsByTagName("label");
		inputEl = contEL.getElementsByTagName("input");

		for(i = 0; i < inputEl.length; i++) {
			var input = inputEl[i]
			var matchedLabel = findByClassName(labelEl, input.id);
			if(matchedLabel && !input.value) {
				matchedLabel.style.display = "block";
				input.onclick = function () {
					findByClassName(labelEl, this.id).style.display = "none"
				}
				matchedLabel.onclick = function () {
					this.style.display = "none";
				}
				input.onfocus = input.onclick;
			}
		}
	}
}
function findByClassName(labelEl, className) {
	for (i=0;i<labelEl.length;i++) {
		if(labelEl[i].className == className) return labelEl[i]
	}
	return null
}
function inputChange() {
	var emailInput = document.getElementById('user_email')
	var emailValue = document.getElementById('email-value')
	var thisValue

	thisValue = emailInput.value.split("@")[0]
	emailValue.firstChild.nodeValue = thisValue

	if (((emailValue.offsetWidth + 55) / 12) < 17) {
		document.getElementById('email_suggest').style.left = ((emailValue.offsetWidth + 55) / 12) + "em"
	}
}
function insertFirstChild(idOrElement, tag, className) {
	var target = typeof idOrElement == "string" ? document.getElementById(idOrElement) : idOrElement
	//target.innerHTML = "<" + tag + " class='" + className + "'></" + tag + ">" + target.innerHTML
	var newNode = document.createElement(tag)
	newNode.className = className
	target.insertBefore(newNode, target.firstChild)
}
/* creatElement */
function wrapInside(idOrElement, tag, className) {
	var target = typeof idOrElement == "string" ? document.getElementById(idOrElement) : idOrElement
	target.innerHTML = "<" + tag + " class='" + className + "'>" + target.innerHTML + "</" + tag + ">"
}
/* make round*/
function makeRound(selector, rndContainer) {
	var elements = cssQuery(selector);

	for (i = 0; i < elements.length; i++) {
		if (rndContainer) {
			var rndCont = wrapOutside(elements[i], "div", rndContainer);
			insertFirstChild(rndCont, "div", "round4");
			insertFirstChild(rndCont, "div", "round3");
			insertFirstChild(rndCont, "div", "round2");
			insertFirstChild(rndCont, "div", "round1");
		} else {
			insertFirstChild(elements[i], "div", "round4");
			insertFirstChild(elements[i], "div", "round3");
			insertFirstChild(elements[i], "div", "round2");
			insertFirstChild(elements[i], "div", "round1");
		}
	}
}

/**
 * 필드의 값을 확인하며 OpenId 형태를 띄고 있으면,
 * return true, 그렇지 않으면 자동으로 .myid.net 을 붙여서,
 * return false한다. 사용자는 엔터를 한 번 더 눌러야 로그인할 수 있다.
 */
function checkOpenId(field) {
    if (field.value.indexOf(".") >= 0) {
        return true;
    }

    if (field.value.length == 0) {
        // 빈칸일 경우 취소
        document.location.href = '/session/new'
        return false;
    } else {
		// 그외의 경우
		field.value = field.value + ".myid.net";
	}

    return true;
}

/* IE HTML rewrite */

function IE_HtmlRewrite(objParent) {
	if (objParent) {
		if (window.ActiveXObject && objParent) {
			objParent.innerHTML = objParent.innerHTML;
		}
	}
}
var IntroTab = {
	init : function () {
		this.menuEls = document.getElementById("tabMenu").getElementsByTagName("li")
		this.contentEl = FindEl.byClass(document.getElementById("tabContent").getElementsByTagName("div"), "sectionContent")
		for (i=0;i<this.menuEls.length ;i++ ) {
			this.contentEl[i].style.display = "none"
			this.menuEls[i].className = "off"
			this.menuEls[i].getElementsByTagName("span")[0].onmouseover = this.menuEls[i].getElementsByTagName("span")[0].style.cursor = "pointer"
			this.menuEls[i].getElementsByTagName("span")[0].onclick = this.displayContent
		}
		this.contentEl[0].style.display = "block"
		this.menuEls[0].className = "first-child on"
		var article = document.getElementById(String(window.location).split("#")[1]);
		if (article) {
			article.onclick()
		}
	},
	displayContent : function () {
		for (i=0;i<IntroTab.menuEls.length; i++) {
			IntroTab.contentEl[i].style.display = "none"
			IntroTab.menuEls[i].className = IntroTab.menuEls[i].className.replace('on','off')
			if (IntroTab.contentEl[i].className.indexOf(this.id) != -1) {
				IntroTab.contentEl[i].style.display = "block"
				this.parentNode.className = this.parentNode.className.replace('off','on')
			}
		}
	}
}

var TabContent = {
	init: function () {
		this.tabContainer = FindEl.byClass(document.getElementsByTagName('div'), "TabContainer")
		for (var i=0; i < this.tabContainer.length; i++) {
			this.styling(this.tabContainer[i])
			this.eventAssign(this.tabContainer[i])		
		};
	},
	styling: function (tabContainer) {
		var tabContent = FindEl.byClass(tabContainer.getElementsByTagName('div'), "TabContent")[0]
		tabContent.style.overflow = "hidden"
		tabContent.style.position = "relative"
	},
	eventAssign: function (tabContainer) {
		var tabMenu = FindEl.byClass(tabContainer.getElementsByTagName('*'), "TabMenu")[0]
		var tabMenuItem = tabMenu.getElementsByTagName('a')
		for (var i=0; i < tabMenuItem.length; i++) {
			tabMenuItem[i].className += " tab-off"
			tabMenuItem[i].onclick = this.displayTarget
		};
		tabMenuItem[0].onclick()
	},
	displayTarget: function () {
		var tabContainer = FindEl.parentNodeByClass(this, "TabContainer")
		var tabItem = FindEl.byClass(tabContainer.getElementsByTagName('*'), "TabItem")
		var tabContent = FindEl.byClass(tabContainer.getElementsByTagName('div'), "TabContent")[0]
		var targetItem = document.getElementById(this.href.split("#")[1])
		var currentItem = FindEl.byClass(tabContainer.getElementsByTagName('*'), "tab-on")[0]
				
		for (var i=0; i < tabItem.length; i++) {
			tabItem[i].style.overflow = "hidden"
		};		
		if (currentItem && currentItem != this) currentItem.className = currentItem.className.replace("tab-on", "tab-off")
		this.className = this.className.replace("tab-off", "tab-on")
		targetItem.style.overflow = "auto"
		tabContent.style.height = targetItem.offsetHeight + "px"
	}
}

function showTooltip(checkBoxId) {
	var tooltipEl = document.getElementById("tooltip-" + checkBoxId)
	var checkbox = document.getElementById(checkBoxId)
	if (checkbox.checked == true) {
		tooltipEl.style.display = 'block';
	} else {
		tooltipEl.style.display = 'none';
	}
}
var Browser = {
	isIE: navigator.appName == "Microsoft Internet Explorer",
	isIE6: navigator.userAgent.indexOf('MSIE 6') != -1,
	isMac: navigator.userAgent.indexOf('Mac') != -1,
	isUbuntu: navigator.userAgent.indexOf('Ubuntu') != -1,
	isSafari: navigator.userAgent.indexOf('Safari') != -1,

	width: function() {
		return window.innerWidth || document.body.parentNode.clientWidth
	},

	height: function() {
		return window.innerHeight || document.body.parentNode.clientHeight
	},

	scrollY: function() {
		if (this.isIE) {
			return document.body.parentNode.scrollTop
		} else {
			return window.scrollY
		}
	}
}

var EventHandler = {
	addEvent:function(el, event, callback) {
		
		if (!el) {
			return;
		}
		if (el.addEventListener)
			el.addEventListener(event, callback, false);
		else
			el.attachEvent('on'+event, callback);
	},
	removeEvent:function(el, event, callback) {
		if (!el) return;
		if (el.removeEventListener)
			el.removeEventListener(event, callback, false);
		else
			el.detachEvent('on'+event, callback);
	}
}

var headerUtil = {
	divNavMenus:'',
	toggleMynote: function(){
		if($("myNoteLayer")) $("myNoteLayer").style.display = ($("myNoteLayer").style.display != "block")? "block":"none"
	},
	offMynote: function(){
		setTimeout('if($("myNoteLayer") && $("myNoteLayer").style.display!="none") $("myNoteLayer").style.display = "none";',300);
	},
	ieDesignTuning: function() {
		if (document.getElementById('groupnoteList')) {
		var groupnoteListEl = document.getElementById('groupnoteList')
		if (groupnoteListEl.offsetHeight > 192) {
			groupnoteListEl.style.height = 192 + 'px';
			groupnoteListEl.style.overflowY = 'auto';
			groupnoteListEl.style.overflowX = 'hidden';
			}				
		}		
	},
	tweakGnbForIE: function(){
		if (Browser.isIE) {
			var _headerMenuTimer={};
			var _findMenuItem=function(e) {
				var li=e.srcElement;
				while (li && li.parentNode && li.parentNode.id != 'div_nav_menus')
					li=li.parentNode;
				return li;
			};
			EventHandler.addEvent($('div_nav_menus'), 'mouseover', function(e) {
				headerUtil.offMynote();
				var li=_findMenuItem(e);
				if (li) {
					if (!li.id) li.id='TMP_'+Math.round(Math.random()*10000);
					clearTimeout(_headerMenuTimer[li.id]);
				}
				if (li && li.className != 'loginLi firstChild') li.className='selected';
				if (!headerUtil.divNavMenus && li.id == "groupnoteWrapper") {
					headerUtil.ieDesignTuning();
					headerUtil.divNavMenus = "called";
				}
			});
			EventHandler.addEvent($('div_nav_menus'), 'mouseout', function(e) {
				var li=_findMenuItem(e);
				if (li)
					clearTimeout(_headerMenuTimer[li.id]);
				if (li && li.className != 'loginLi firstChild' && li.className == 'selected')
					_headerMenuTimer[li.id]=setTimeout(function() {li.className='';}, 10);
			});
		} else {
			EventHandler.addEvent($('div_nav_menus'), 'mouseover', function(e) {
				headerUtil.offMynote();
				return false;
			});
		}	
	}
}
var Menu = {
	init: function(targetStr) {
		var self = this;
		this.targetEls = document.getElementById(targetStr).getElementsByTagName("A");
		for (var i = 0; i < this.targetEls.length ;i++ ) {
			this.targetEls[i].onmouseover = self.changeImgSrc;
			this.targetEls[i].onmouseout = self.returnImgSrc;
		}
	},
	changeImgSrc: function() {
		if (this.getElementsByTagName("IMG")[0].src.indexOf('_on') + 1) return
		this.getElementsByTagName("IMG")[0].src = this.getElementsByTagName("IMG")[0].src.replace(".gif", "_on.gif");
	},
	returnImgSrc: function() {
		if (this.parentNode.className.indexOf('selected') + 1) return;
		this.getElementsByTagName("IMG")[0].src = this.getElementsByTagName("IMG")[0].src.replace("_on.gif", ".gif");
	}
} 
function completeId(input, login_url) {
	var inputValue = $(input) && $(input).value
	if (!inputValue || inputValue.length == 0) {
		window.location = login_url
		return false
	}

	inputValue = inputValue.split(".")[1];
	if (inputValue == null) {
		document.getElementById(input).value += ".myid.net";
		return false;
	}
	return true;
}
setTimeout(function() {
	if (sabalmyon && sabalmyon.language =="ko" && $("openid") && $("openid").offsetHeight > 0) $("openid").focus();
}, 1000);

// fix IE bug: style background-image cache bug
try {document.execCommand("BackgroundImageCache", false, true)} catch(ignored) {}

function convertDateSpan(name){
	var el = $(name);
	if (!el) return
	var val = parseInt(el.getAttribute('value'))
	time = new Date(val - (new Date().getTimezoneOffset()))
	el.innerHTML= getText.date(time, (el.className && el.className == "dateOnly"))
}



var MoveList = function() {
	var self = this;
	this.targetUl = document.getElementById("listWrapper");
	targetUl.style.left = 0;
	this.currentListLength = 1;
	this.totalListLength = this.targetUl.getElementsByTagName("li").length;
	this.listWidth = this.targetUl.getElementsByTagName("li")[0].offsetWidth;

	this.init = function() {
		document.getElementById("btn_prev").onclick = function() { self.movePrev(); }
		document.getElementById("btn_next").onclick = function() { self.moveNext(); }
	}
	this.movePrev = function() {
		if (this.currentListLength >= 1) {
			this.targetUl.style.left = (parseInt(this.targetUl.style.left) + this.listWidth) + 'px';
			this.currentListLength -= 1;
		}
		if (this.isFirst()) {
			this.targetUl.style.left = - ((this.totalListLength - 1) * this.listWidth) + 'px';
			this.currentListLength = this.totalListLength;
		}
	}
	this.moveNext = function() {
		if (this.currentListLength <= this.totalListLength) {
			this.targetUl.style.left = (parseInt(this.targetUl.style.left) - this.listWidth) + 'px';
			this.currentListLength += 1;
		}
		if (this.isLast()) {
			this.targetUl.style.left = '0px';
			this.currentListLength = 1;
		}
	}
	this.isFirst = function() {
		if (this.currentListLength < 1 ) return true;
	}
	this.isLast = function() {
		if (this.currentListLength > this.totalListLength) return true;
	}
	this.init();
}
function copy_value(inElement) {
  var browserName = navigator.appName;
  var str ='';
  if ( browserName.search("Explorer") > 0 ) {  
	var doc = document.body.createTextRange();   
	doc.moveToElementText(inElement);                            
	doc.execCommand('copy');  
  } else {  
    var flashcopier = 'flashcopier';  
    if(!document.getElementById(flashcopier)) {  
      var divholder = document.createElement('div');    
      divholder.id = flashcopier;  
      document.body.appendChild(divholder);  
    }  
    document.getElementById(flashcopier).innerHTML = '';  
	str = inElement.innerHTML.replace(/&lt;/gi,'<');
	str = str.replace(/&gt;/gi,'>');
	str = str.replace(/&amp;/gi,'&');
	str = str.replace(/&gt;/gi,'>');
	str = str.replace(/&quot;/gi,"'");
    var divinfo = '<embed src="/images/home/_clipboard.swf" FlashVars="clipboard='+encodeURIComponent(str)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
    document.getElementById(flashcopier).innerHTML = divinfo;  
  }  
  alert ("소스가 복사되었습니다.");
}
