/* Shortcut key */
function shortcut(event) {
	if(typeof(dontUseShortcut) != "undefined")
		return;
	if(event.srcElement && event.srcElement.tagName == "INPUT")
		return;
	if(event.target && event.target.tagName == "INPUT")
		return;
	if(!event.altKey && !event.ctrlKey) {
		switch(event.keyCode) {
			case 65: //A
				movePage(-1);
				break;
			case 83: //S
				movePage(1);
				break;
		}
	}
}

var isMoving = false;
function movePage(variant) {
	if(!isMoving) {
		try {
			var location = (variant == 1) ? nextPageLink : prevPageLink;
			if(location != "#") {
				window.location = location;
				isMoving = true;
			}
		} catch(e) { }
	}
}

function imagePreloader() {
	for(var i=0; i<arguments.length; i++) {
		var img = new Image();
		img.src = arguments[i];
		img.onload = function() { }
	}
}

/* General functions */
if(!String.prototype.trim) {
	String.prototype.trim = function() {
		return this.replace(new RegExp("(?:^\\s+)|(?:\\s+$)", "g"), "");
	}
}

function setCookie(name, value, days, domain) {
	var expires = "";
	var _domain = '';
	if(days) {
		var date = new Date();
		date.setTime(date.getTime() + (days * 86400000));
		expires = "; expires=" + date.toGMTString();
	}
	if(domain) {
		_domain = 'domain='+domain
	}
	document.cookie = name + "=" + value + expires + "; path=/;"+_domain;
}

function getCookie(name) {
	var cookies = document.cookie.split(";");
	for(var i=0; i<cookies.length; i++) {
		if(cookies[i].indexOf("=") == -1) {
			if(name == cookies[i])
				return "";
		}
		else {
			var crumb = cookies[i].split("=");
			if(name == crumb[0].trim())
				return unescape(crumb[1].trim());
		}
	}
}

function deleteCookie(name) {
	document.cookie = name + "=" + getCookie(name) + "; expires=Fri, 31 Dec 1999 23:59:59 GMT";
}

/* Event define */
STD.addEventListener(document);
document.addEventListener("keydown", shortcut, false);


function showLayer() {
	if(document.getElementById("MessageHelp") && document.getElementById("MessageHelp") ){
		document.getElementById("MessageHelp").style.left = (document.body.offsetWidth / 2 - 382) + "px";
		document.getElementById("MessageHelp").style.display = "block";
	}
}

function copyTrackbackAddress(url) {
	try {
		document.getElementById("MessageHelp").style.display = "none";
		if(window.clipboardData && window.clipboardData.setData) {
			if(window.clipboardData.setData("Text", url))
				alert("트랙백 주소가 복사되었습니다");
		}
	}
	catch(e) {
		// IE7에서 prompt는 기본적으로 차단됨
		// prompt("트랙백 주소를 복사하지 못했습니다\r\n아래 URL을 복사해주세요", url);
	}
}

// createHttp() from TT common.js
function createHttp() {
	try {
		return new XMLHttpRequest();
	}
	catch (e) {
		var objectNames = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
		for (var i = 0; i < objectNames.length; i ++) {
			try {
				return new ActiveXObject(objectNames[i]);
				break;
			}
			catch (e) {
			}
		}
		return null;
	}
}

// requestHttp() from TT common.js
// xmlReader() from blog.naver.com/realpomi/130003600469
// combined into readXML() by laziel : 2006.07.08
function readXML(uri) {
	var nNode;
	var index = -1;

	// get XML file by uri
	var oHttp = createHttp();
	oHttp.open("GET", uri, false);
	oHttp.send("");
	var returnValue = oHttp;
	delete oHttp;
	var xHttp = returnValue;

	// XML structure
	this.xmlDoc = xHttp.responseXML;
	this.setNode = function(nodeName)
	{
		if(nodeName == null || nodeName == "") { // top node not defined
			return false;
		} else {
			nNode = this.xmlDoc.getElementsByTagName(nodeName);
		}
	}

	this.Next = function() {
		nidx = index;
		nidx++;
		if(nidx <= (nNode.length - 1))  index++;
		else return false; // loop : index = 0
		return true;
	}

	this.getValue = function(cNodeName) {
		if(nNode != null) {
			var cnode = nNode[index].getElementsByTagName(cNodeName);
			return cnode[0].firstChild.nodeValue;
		} else { // top node not defined
			return false;
		}
	}
}

var msgCursor = 0;
var msgNames = new Array();
var msgTitles = new Array();
var msgLinks = new Array();
var msgContainer = null;
var msgTimeout = null;
var tempStr  = '';

// getMessages() by laziel
function getMessages(container){
	var uri = "/rss/board/?" + (new Date()).getTime();
	msgContainer = document.getElementById(container);
	var xr = new readXML(uri);
	xr.setNode("item");
	while(xr.Next()) {
		msgNames[msgNames.length] = xr.getValue("author").replace(new RegExp("&", "g"), "&amp;").replace(new RegExp("<", "g"), "&lt;").replace(new RegExp(">", "g"), "&gt;");
		tempStr = (xr.getValue("title").replace(new RegExp("&", "g"), "&amp;").replace(new RegExp("<", "g"), "&lt;").replace(new RegExp(">", "g"), "&gt;"));
		tempStr = (tempStr.length > 21) ? (tempStr.substr(0,21) + '...'):tempStr.substr(0,24);
		msgTitles[msgTitles.length] = tempStr;
		msgLinks[msgLinks.length] = xr.getValue("link").replace(new RegExp("&", "g"), "&amp;").replace(new RegExp("<", "g"), "&lt;").replace(new RegExp(">", "g"), "&gt;");
	}
	rotateMsgs(true);
}

function rotateMsgs(isFirst) {
	if(msgContainer) {

		msgCursorNext = (isFirst || msgCursor == msgNames.length - 1) ? 0 : msgCursor + 1;
		msgContainer.innerHTML =
			'<div id="MessagesInnerDiv" onmouseover="javascript:toggleRotate(0);" onmouseout="javascript:toggleRotate(1);"><a href="' + msgLinks[msgCursor] + '">' + msgTitles[msgCursor] + '</a><a href="' + msgLinks[msgCursor] + '" class="name">| ' + msgNames[msgCursor] + '</a><br/>' +
			'<a href="' + msgLinks[msgCursorNext] + '">' + msgTitles[msgCursorNext] + '</a><a href="' + msgLinks[msgCursorNext] + '" class="name">| ' + msgNames[msgCursorNext] + '</a></div>';
		var msgInnerContainer = document.getElementById("MessagesInnerDiv");
		if(isFirst != true)
			scrollMsgs();
		msgCursor = msgCursorNext;
		msgTimeout = setTimeout("rotateMsgs()", 2300);
	}
}

function toggleRotate(status) {
	if(status==0 || status=='off') {
		clearTimeout(msgTimeout);
	} else if(status==1 || status=='on') {
		msgTimeout = setTimeout("rotateMsgs()", 2300);
	}
}

function scrollMsgs() {
	var msgInnerContainer = document.getElementById("MessagesInnerDiv");
	var top = parseInt(msgInnerContainer.style.top);
	top = isNaN(top) ? 0 : top;
	if(top > -18) {
		msgInnerContainer.style.top = (top - 1) + "px";
		setTimeout("scrollMsgs()", 30);
	}
}

function checkMail(str) {
	try {
		var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if (filter.test(str)) return true;
		else return false;
	} catch(e) {
		return false;
	}
}

function Trim(sInString) {
	sInString = sInString.replace( /^\s+/g, "" );// strip leading
	return sInString.replace( /\s+$/g, "" );// strip trailing
}


function message(msg) {
	try {document.getElementById('loginFailed').style.display = "block";} catch(e) {}
	try {document.getElementById('loginMessage').innerHTML = msg;} catch(e) {}
}
function validate() {
	var id = document.getElementById('loginid').value;
	var pwd = document.getElementById('password').value;

}
function changePwdField() {
	document.getElementById('passwordLabel').style.display='none'
	var pwd = document.getElementById('password');
	pwd.style.display='block';
}

function checkCapsLock( e ) {
	var myKeyCode=0;
	var myShiftKey=false;
	var myMsg='Caps Lock이 켜져있습니다.';

	// Internet Explorer 4+
	if ( document.all ) {
		myKeyCode=e.keyCode;
		myShiftKey=e.shiftKey;

	// Netscape 4
	} else if ( document.layers ) {
		myKeyCode=e.which;
		myShiftKey=( myKeyCode == 16 ) ? true : false;

	// Netscape 6
	} else if ( document.getElementById ) {
		myKeyCode=e.which;
		myShiftKey=( myKeyCode == 16 ) ? true : false;

	}

	// Upper case letters are seen without depressing the Shift key, therefore Caps Lock is on
	if ( ( myKeyCode >= 65 && myKeyCode <= 90 ) && !myShiftKey ) {
		message(myMsg);

	// Lower case letters are seen while depressing the Shift key, therefore Caps Lock is on
	} else if ( ( myKeyCode >= 97 && myKeyCode <= 122 ) && myShiftKey ) {
		message(myMsg);

	}
}

function checkBlogName(name) {
	return name.match(/^[a-z0-9]+(-[a-z0-9]+)*$/i);
}

function openWin(url, target) {
	win = window.open(url, target);
	try {
		win.focus();
	}catch(e) {

	}
}

function looseURIEncode(string) {
	string = string.replace(new RegExp("%", "g"), "%25");
	string = string.replace(new RegExp("\\?", "g"), "%3F");
	string = string.replace(new RegExp("#", "g"), "%23");
	return string;
}

function search(nil) {
	var value = looseURIEncode(document.getElementById("search-keyword").value);

	switch (document.getElementById("selected_cate").innerHTML) {
		case "티스토리":
			window.location = "/search/tistory/" + value + "?" + nil;
			break;
		case "통합검색":
			window.location = "/search/total/" + value + "?" + nil;
			break;
		default:
			window.location = "/search/tistory/" + value + "?" + nil;
			break;

	}

	return false;
}

function altImg(target) {
	if(target.tryError == undefined)
		target.tryError = 0;
	if(target.tryError > arguments.length-2)
		return false;
	target.src = arguments[++target.tryError];
}

function writeCode(str, id) {
	if(id == undefined) document.write(str);
	else document.getElementById(id).innerHTML = str;
}

function writeCode2(str, id) {
	if(id == undefined) document.write(str);
	else document.getElementById(id).innerHTML = str;
}

function thisMovie(movieName) {
	if (navigator.appName.indexOf("Microsoft") != -1) {
		return window[movieName]
	}
	else {
		return document[movieName]
	}
}

function onClipBorad(result) {
	alert(result ? '트랙백 주소가 복사되었습니다' : '트랙백 주소를 복사하지 못했습니다');
}

function setDefaultImage(obj, url) {
	obj.onerror = null;
	obj.src = url;
}

function errorImage(obj) {
	obj.onerror = null;
	obj.parentNode.parentNode.parentNode.parentNode.removeChild(obj.parentNode.parentNode.parentNode);
}

function errorImage2(obj) {
	obj.onerror = null;
	obj.parentNode.parentNode.removeChild(obj.parentNode);
}

/* search box */
var clickAreaCheck = false;
document.onclick = function() {
	if (!clickAreaCheck) {
		divDisplay(old_div, 'none');
		if(old_div == 'rssFeedList') {	// 20090512 mmnmm 주제별새글 rss layer: trigger의 classname을 바꿔야 함
			document.getElementById('rssFeedList-trigger').className = 'show';
		}
	}
	else {
		clickAreaCheck = false;
	}
}

function select_search_cate(curObj, targetObjId){
	var targetObj = document.getElementById(targetObjId);
	targetObj.innerHTML = curObj.innerHTML;
	curObj.parentNode.style.display = 'none';
}

function open_cate(open_cate_id){
	var targetObj = document.getElementById(open_cate_id);
	if(targetObj.style.display == 'none'){
		divDisplay (open_cate_id, 'block', true);
	}
}

function toggleLayer(id) {
	var target = document.getElementById(id);
	var trigger = document.getElementById(id + '-trigger');

	if(target.style.display == 'none'){
		divDisplay (id, 'block', true);
		trigger.className = 'hide';
	} else {
		trigger.className = '';
	}
}

var old_div = '';
function divDisplay(objId, act, check) {
	clickAreaCheck = true;
	if(old_div != '' && document.getElementById(old_div)){
		document.getElementById(old_div).style.display = 'none';
	}
	if (objId != '' && document.getElementById(objId)) {
		document.getElementById(objId).style.display = act;
	}
	if(check == true){
		old_div = objId;
	}
}

/* flash variables */
AC_FL_RunContent = 0;
DetectFlashVer = 0;

/* PunBB JS */
function previewContent(id) {
	var request = new HTTPRequest("POST", "misc.php?action=preview");
	request.onVerify = function() { return true; }
	request.persistent = false;
	request.onSuccess = function() {
		document.getElementById("previewContainer").style.display = "block";
		document.getElementById("previewSpacer").innerHTML = this.getText();
	}
	request.send("content=" + encodeURIComponent(document.getElementById(id).req_message.value));
	return false;
}

function getSelectedRadio(buttonGroup) {
   // returns the array number of the selected radio button or -1 if no button is selected
   if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
	  for (var i=0; i<buttonGroup.length; i++) {
		 if (buttonGroup[i].checked) {
			return i
		 }
	  }
   } else {
	  if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
   }
   // if we get to this point, no radio button is selected
   return -1;
} // Ends the "getSelectedRadio" function
function getSelectedRadioValue(buttonGroup) {
   // returns the value of the selected radio button or "" if no button is selected
   var i = getSelectedRadio(buttonGroup);
   if (i == -1) {
	  return "";
   } else {
	  if (buttonGroup[i]) { // Make sure the button group is an array (not just one button)
		 return buttonGroup[i].value;
	  } else { // The button group is just the one button, and it is checked
		 return buttonGroup.value;
	  }
   }
} // Ends the "getSelectedRadioValue" function

function openPopupResize(width, height, url, name, spec) {
  if (!url) {
	  window.resizeTo(width, height);
  } else {
	  var s = spec ? eval(spec)[0] : {};
	  var name = name || '';
	  var reValue = function(value) {return value ? 'yes' : 'no'};
	  var spacArray = [
	  'toolbar=' + reValue(s.t),
	  'location=' + reValue(s.l),
	  'directories=' + reValue(s.d),
	  'status=' + reValue(s.st),
	  'menubar=' + reValue(s.m),
	  'scrollbars=' + reValue(s.sc),
	  'resizable=' + reValue(s.r),
	  'copyhistory=' + reValue(s.c),
	  'width=' + width,
	  'height=' + height
	];
	  window.open(url, name, spacArray.join(', '));
  }
}

function goMobilePage(url, domain){
	var domain = domain || '';
	setCookie('M_P2M', 'Y', '', domain);
	window.location.href=url;
}

function updateTistoryMailId(tistoryMailId) {
	var tblElem = document.getElementById('tblTistoryMail');
	var mailIdElem = document.getElementById('tistoryMailId');
	if (tblElem && mailIdElem) {
		tblElem.className = 'tblType1';
		mailIdElem.innerHTML = escapeHTML(tistoryMailId) + '@tistory.com';
	}
}

function escapeHTML(s){ //from jigu
	return s.replace(/&/g,'&amp;').replace(/</g,'&lt;')
			.replace(/>/g,'&gt;').replace(/"/g,'&quot;')
			.replace(/'/g,'&#39;');
}
