{"version":3,"sources":["doT.js","base.js","loadHtml5.js","util.js","template_dot.js","template_v2.js","scroll.js","placeholder.js","tooltip.js","modal.js","modalless.js","miniProfile_v2.js","noName.js","button.js","writeShort.js","friendList_v2.js","like.js","emoticonData.js","msgPreview.js","stickerData.js","emoticonLayer.js","timeline.js","character.js"],"names":[],"mappings":"kCAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC11BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC35EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"np_v4.js","sourcesContent":["/**\r\n * doT.js\r\n * 2011, Laura Doktorova, https://github.com/olado/doT\r\n * doT.js is an open source component of http://bebedo.com\r\n * Licensed under the MIT license.\r\n */\r\n(function() {\r\n\t\"use strict\";\r\n\r\n\tvar doT = {\r\n\t\tversion: '0.2.0',\r\n\t\ttemplateSettings: {\r\n\t\t\tevaluate: /\\#\\{([\\s\\S]+?)\\}\\#/g,\r\n\t\t\tinterpolate: /\\#\\{=([\\s\\S]+?)\\}\\#/g,\r\n\t\t\tencode: /\\#\\{!([\\s\\S]+?)\\}\\#/g,\r\n\t\t\tuse: /\\#\\{#([\\s\\S]+?)\\}\\#/g,\r\n\t\t\tdefine: /\\#\\{##\\s*([\\w\\.$]+)\\s*(\\:|=)([\\s\\S]+?)#\\}\\#/g,\r\n\t\t\tconditional: /\\#\\{\\?(\\?)?\\s*([\\s\\S]*?)\\s*\\}\\#/g,\r\n\t\t\titerate: /\\#\\{~\\s*(?:\\}\\#|([\\s\\S]+?)\\s*\\:\\s*([\\w$]+)\\s*(?:\\:\\s*([\\w$]+))?\\s*\\}\\#)/g,\r\n\t\t\tvarname: 'it',\r\n\t\t\tstrip: true,\r\n\t\t\tappend: true,\r\n\t\t\tselfcontained: false\r\n\t\t},\r\n\t\ttemplate: undefined, //fn, compile template\r\n\t\tcompile: undefined //fn, for express\r\n\t};\r\n\r\n\tvar global = (function(){ return this || (0,eval)('this'); }());\r\n\r\n\tif (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = doT;\r\n\t} else if (typeof define === 'function' && define.amd) {\r\n\t\tdefine(function(){return doT;});\r\n\t} else {\r\n\t\tglobal.doT = doT;\r\n\t}\r\n\r\n\tfunction encodeHTMLSource() {\r\n\t\tvar encodeHTMLRules = { \"&\": \"&\", \"<\": \"<\", \">\": \">\", '\"': '"', \"'\": ''', \"/\": '/' },\r\n\t\t\tmatchHTML = /&(?!#?\\w+;)|<|>|\"|'|\\//g;\r\n\t\treturn function(code) {\r\n\t\t\treturn code ? code.toString().replace(matchHTML, function(m) {return encodeHTMLRules[m] || m;}) : code;\r\n\t\t};\r\n\t}\r\n\tglobal.encodeHTML = encodeHTMLSource();\r\n\r\n\tvar startend = {\r\n\t\tappend: { start: \"'+(\", end: \")+'\", startencode: \"'+encodeHTML(\" },\r\n\t\tsplit: { start: \"';out+=(\", end: \");out+='\", startencode: \"';out+=encodeHTML(\"}\r\n\t}, skip = /$^/;\r\n\r\n\tfunction resolveDefs(c, block, def) {\r\n\t\treturn ((typeof block === 'string') ? block : block.toString())\r\n\t\t.replace(c.define || skip, function(m, code, assign, value) {\r\n\t\t\tif (code.indexOf('def.') === 0) {\r\n\t\t\t\tcode = code.substring(4);\r\n\t\t\t}\r\n\t\t\tif (!(code in def)) {\r\n\t\t\t\tif (assign === ':') {\r\n\t\t\t\t\tdef[code]= value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\teval(\"def['\"+code+\"']=\" + value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn '';\r\n\t\t})\r\n\t\t.replace(c.use || skip, function(m, code) {\r\n\t\t\tvar v = eval(code);\r\n\t\t\treturn v ? resolveDefs(c, v, def) : v;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction unescape(code) {\r\n\t\treturn code.replace(/\\\\('|\\\\)/g, \"$1\").replace(/[\\r\\t\\n]/g, ' ');\r\n\t}\r\n\r\n\tdoT.template = function(tmpl, c, def) {\r\n\t\tc = c || doT.templateSettings;\r\n\t\tvar cse = c.append ? startend.append : startend.split, str, needhtmlencode, sid=0, indv;\r\n\r\n\t\tif (c.use || c.define) {\r\n\t\t\tvar olddef = global.def; global.def = def || {}; // workaround minifiers\r\n\t\t\tstr = resolveDefs(c, tmpl, global.def);\r\n\t\t\tglobal.def = olddef;\r\n\t\t} else str = tmpl;\r\n\r\n\t\tstr = (\"var out='\" + (c.strip ? str.replace(/(^|\\r|\\n)\\t* +| +\\t*(\\r|\\n|$)/g,' ')\r\n\t\t\t\t\t.replace(/\\r|\\n|\\t|\\/\\*[\\s\\S]*?\\*\\//g,''): str)\r\n\t\t\t.replace(/'|\\\\/g, '\\\\$&')\r\n\t\t\t.replace(c.interpolate || skip, function(m, code) {\r\n\t\t\t\treturn cse.start + unescape(code) + cse.end;\r\n\t\t\t})\r\n\t\t\t.replace(c.encode || skip, function(m, code) {\r\n\t\t\t\tneedhtmlencode = true;\r\n\t\t\t\treturn cse.startencode + unescape(code) + cse.end;\r\n\t\t\t})\r\n\t\t\t.replace(c.conditional || skip, function(m, elsecase, code) {\r\n\t\t\t\treturn elsecase ?\r\n\t\t\t\t\t(code ? \"';}else if(\" + unescape(code) + \"){out+='\" : \"';}else{out+='\") :\r\n\t\t\t\t\t(code ? \"';if(\" + unescape(code) + \"){out+='\" : \"';}out+='\");\r\n\t\t\t})\r\n\t\t\t.replace(c.iterate || skip, function(m, iterate, vname, iname) {\r\n\t\t\t\tif (!iterate) return \"';} } out+='\";\r\n\t\t\t\tsid+=1; indv=iname || \"i\"+sid; iterate=unescape(iterate);\r\n\t\t\t\treturn \"';var arr\"+sid+\"=\"+iterate+\";if(arr\"+sid+\"){var \"+vname+\",\"+indv+\"=-1,l\"+sid+\"=arr\"+sid+\".length-1;while(\"+indv+\"/g, '>' ).replace( /<br \\/>/g, '
' );\r\n\t};\r\n\r\n\tutil.getTemplate = function( template ){\r\n\t\treturn doT.template( template );\r\n\t};\r\n\r\n\tutil.hbParser = function( a, b ){\r\n\t\tif( !handlebar ){ alert('undefined handlebar');}\r\n\t\tvar template = Handlebars.compile( a );\r\n\t\treturn template( b );\r\n\t};\r\n\r\n\tutil.getCaretPosition = function( $input ){\r\n\t\tvar input = $input.get( 0 );\r\n\t\tif( !input ) return 0;\r\n\r\n\t\tif( 'selectionStart' in input ){\r\n\t\t\treturn input.selectionStart;\r\n\t\t}else if( document.selection ){\r\n\t\t\tvar sel = document.selection.createRange();\r\n\t\t\tvar len = document.selection.createRange().text.length;\r\n\t\t\tsel.moveStart( 'character', -input.value.length );\r\n\t\t\treturn sel.text.length - len;\r\n\t\t}\r\n\t};\r\n\r\n\t// 템플릿 compiler\r\n util.compile = function( _target ) {\r\n for ( var property in _target ) {\r\n if ( typeof _target[ property ] === 'object' ) {\r\n this.compile( _target[ property ] );\r\n } else if ( _target.hasOwnProperty( property ) ) {\r\n _target[ property ] = doT.template( _target[ property ] );\r\n }\r\n }\r\n };\r\n\r\n\t// Template Parser\r\n\tutil.tplParser = function( a, b ) {\r\n\t\treturn a;\r\n\r\n//\t\treturn function( c, d ) {\r\n//\t\t\treturn a.replace( /@{([^}]*)}/g, function( a, e ) {\r\n//\t\t\t\treturn Function( \"x\", \"with( x ) return \" + e ).call( c, d || b || {} )\r\n//\t\t\t} );\r\n//\t\t};\r\n\t};\r\n\r\n\t// Align Center\r\n\tutil.setCenter = function( o ) {\r\n\t\tvar w = $( window ),\r\n\t\t\twH = w.height(), wW = w.width(),\r\n\t\t\tsT = w.scrollTop(), sL = w.scrollLeft();\r\n\r\n\t\t$( o ).each(function() {\r\n\t\t\tvar el = $( this ),\r\n\t\t\t\toH = el.outerHeight(),\r\n\t\t\t\toW = el.outerWidth();\r\n\r\n\t\t\tel.css({\r\n\t\t\t\ttop : wH >= oH ? ( wH - oH ) / 2 + sT : !sT ? 0 : sT,\r\n\t\t\t\tleft : wW >= oW ? ( wW - oW ) / 2 + sL : sL\r\n\t\t\t});\r\n\t\t});\r\n\t};\r\n\r\n\t// Stack\r\n\tutil.stack = function( target, value ) {\r\n\t\tvar isRep = !1,\r\n\t\t\ti = target.length;\r\n\r\n\t\twhile ( i-- ) {\r\n\t\t\tif ( target[ i ][ 0 ] === value ) {\r\n\t\t\t\ttarget.splice( i, 1 );\r\n\t\t\t\tisRep = !0;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\ttarget.push( $( value ) );\r\n\r\n\t\treturn isRep;\r\n\t};\r\n\r\n\t// Count Text\r\n\tutil.count = function( text ) {\r\n\t\tvar len = text.length,\r\n\t\t\tret = 0;\r\n\r\n\t\twhile ( len-- ) {\r\n\t\t\tif ( text.charCodeAt( len ) < 0 || text.charCodeAt( len ) > 127 ) {\r\n\t\t\t\tret += 2;\r\n\t\t\t} else {\r\n\t\t\t\tret++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ret;\r\n\t};\r\n\r\n\t// 조사 붙이기\r\n\tutil.josa = function( text, josa, str ) {\r\n\t\tvar code = text.charCodeAt( text.length - 1 ) - 44032,\r\n\t\t\tstr = str || '',\r\n\t\t\tjosa = [\r\n\t\t\t\t[ '를', '을' ],\r\n\t\t\t\t[ '로', '으로' ],\r\n\t\t\t\t[ '라', '이라' ]\r\n\t\t\t][ josa ];\r\n\r\n\t\t// 한글이 아닐 경우\r\n\t\tif ( ( code >= 0x3130 && code <= 0x318F ) || code >= 0xAC00 && code <= 0xD7A3 ) {\r\n\t\t\treturn text;\r\n\t\t}\r\n\r\n\t\ttext = text + str;\r\n\r\n\t\tif ( code % 28 === 0 ) { // 받침 없음\r\n\t\t\treturn text + josa[ 0 ];\r\n\t\t} else { // 받침 있음\r\n\t\t\treturn text + josa[ 1 ];\r\n\t\t}\r\n\t};\r\n\r\n\t// ellipsis\r\n\tutil.ellipsis = function( text, limit ) {\r\n\t\ttext = text.replace( //g, '>' );\r\n\t\tif ( text.length > limit ) {\r\n\t\t\t//return ( text.replace( '
', '\\n' ).substr( 0, limit - 3 ) ).replace( '\\n', '
' ) + '...';\r\n\t\t\treturn ( text.replace( /
/g, '\\n' ).substr( 0, limit - 3 ) ).replace( /\\n/g, '
' ) + '...';\r\n\t\t}\r\n\r\n\t\treturn ( text.replace( '
', '\\n' ).substr( 0, limit - 3 ) ).replace( '\\n', '
' );\r\n\t};\r\n\r\n\t// Get URL Parameter\r\n\tutil.getParam = function( paramName ) {\r\n\t\tvar _ret = '',\r\n\t\t\thref = location.href,\r\n\t\t\tfound = !1,\r\n\t\t\tcompareString = paramName + '=',\r\n\t\t\tcompareLength = compareString.length;\r\n\r\n\t\tif ( href.indexOf( '?' ) > -1 ) {\r\n\t\t\tvar strQueryString = href.substr( href.indexOf( '?' ) + 1 ),\r\n\t\t\t\taQueryString = strQueryString.split( '&' ),\r\n\t\t\t\ti = 0,\r\n\t\t\t\tstr;\r\n\r\n\t\t\tfor ( ; str = aQueryString[ i ]; i += 1 ) {\r\n\t\t\t\tif ( str.substr( 0, compareLength ) === compareString ) {\r\n\t\t\t\t\tvar aParam = str.split( '=' );\r\n\r\n\t\t\t\t\t_ret = parseInt( aParam[ 1 ], 10 );\r\n\t\t\t\t\tfound = !0;\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( !found ) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\treturn _ret;\r\n\t};\r\n\r\n\tutil.getGUID = function() {\r\n\t\treturn location.pathname.split( '/' )[ 1 ] || '';\r\n\t};\r\n\r\n\tutil.isGUID = function( id ){\r\n//\t\tif( id.length > 20 ) return true;\r\n//\t\treturn false;\r\n\t\treturn !!( /\\w{8}-\\w{4}-\\w{4}-\\w{4}-\\w{12}/.test( id ) );\r\n\t};\r\n\r\n util.stripTags = function( text, allowTags ) {\r\n\t\treturn text.replace( new RegExp( !( allowTags && allowTags.length ) ? '<\\/?[^>]+>' : '<\\\\/?(?!(' + allowTags.join( '|' ) + '))\\\\b[^>]+>', 'gi' ), '' );\r\n\t};\r\n\r\n\tutil.isSandbox = function(){\r\n\t\treturn ( location.href.indexOf( 'sandbox.plaync.com' ) !== -1 )? true: false;\r\n\r\n\t};\r\n\r\n\treturn util;\r\n}( window, jQuery ));\r\n\r\n// Random\r\nNP.random = (function() {\r\n\tvar saved = 0;\r\n\r\n\treturn {\r\n\t\tget : function( max ) {\r\n\t\t\tif ( !max ) return;\r\n\r\n\t\t\tvar random = parseInt( Math.random() * max );\r\n\t\t\twhile ( saved === random ) {\r\n\t\t\t\trandom = parseInt( Math.random() * max );\r\n\t\t\t}\r\n\r\n\t\t\treturn saved = random;\r\n\t\t}\r\n\t};\r\n}());\r\n\r\n// Auto Link\r\nNP.AutoLink = function( text ) {\r\n\tvar sticker = '';\r\n\tif( /{{.+}}$/.test( text ) ){\r\n\t\tsticker = /{{.+}}$/.exec( text );\r\n\t\tsticker = sticker[ 0 ];\r\n\t\ttext = text.replace( sticker, '' );\r\n\t}\r\n\r\n\t//text = text.replace( /
/g, '
' ).replace( /(\\s?(?:https?:\\/\\/|www)+[-\\S.]+\\s?)/ig, \" $1 \" ).replace( \"' ).replace( /(\\s?)(?:https?:\\/\\/|www)+[-\\S.]+(\\s?)/ig, function( a, b, c, d ) {\r\n\t\ta = a.replace( /\\s/g, '' );\r\n\r\n\t\treturn b + \"\" + a + \"\" + c;\r\n\t});\r\n\r\n\tif( sticker ) text = text + sticker;\r\n\r\n\treturn text;\r\n};\r\n\r\nNP.isRc = (location.href.indexOf( 'rc.' ) !== -1 )? 'rc.': '';\r\n\r\nNP.getCharThumb = function( id, serverId ){\r\n\tif( !id ) return '';\r\n\r\n if(NP.isRc){\r\n return 'https://rc-profileimg.plaync.com/game_profile_images/aion/images?charKey='+id+'&gameServerKey='+serverId;\r\n }else{\r\n return 'https://profileimg.plaync.com/game_profile_images/aion/images?charKey='+id+'&gameServerKey='+serverId;\r\n }\r\n\r\n\t// var _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\r\n\r\n\t// function encode64(input) {\r\n\t// var output = \"\";\r\n\t// var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\r\n\t// var i = 0;\r\n\t// input = utf8_encode(input);\r\n\t// while (i < input.length) {\r\n\t// chr1 = input.charCodeAt(i++);\r\n\t// chr2 = input.charCodeAt(i++);\r\n\t// chr3 = input.charCodeAt(i++);\r\n\t// enc1 = chr1 >> 2;\r\n\t// enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\r\n\t// enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\r\n\t// enc4 = chr3 & 63;\r\n\t// if (isNaN(chr2)) {\r\n\t// enc3 = enc4 = 64;\r\n\t// } else if (isNaN(chr3)) {\r\n\t// enc4 = 64;\r\n\t// }\r\n\t// output = output +\r\n\t// _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +\r\n\t// _keyStr.charAt(enc3) + _keyStr.charAt(enc4);\r\n\t// }\r\n\t// return output;\r\n\t// }\r\n\r\n\t// function utf8_encode(string) {\r\n\t// string = string.replace(/\\r\\n/g, \"\\n\");\r\n\t// var utftext = \"\";\r\n\t// for (var n = 0; n < string.length; n++) {\r\n\t// var c = string.charCodeAt(n);\r\n\t// if (c < 128) {\r\n\t// utftext += String.fromCharCode(c);\r\n\t// }else if ((c > 127) && (c < 2048)) {\r\n\t// utftext += String.fromCharCode((c >> 6) | 192);\r\n\t// utftext += String.fromCharCode((c & 63) | 128);\r\n\t// } else {\r\n\t// utftext += String.fromCharCode((c >> 12) | 224);\r\n\t// utftext += String.fromCharCode(((c >> 6) & 63) | 128);\r\n\t// utftext += String.fromCharCode((c & 63) | 128);\r\n\t// }\r\n\t// }\r\n\t// return utftext;\r\n\t// }\r\n\r\n\t// var url = 'http://' + NP.isRc + NP.gamePicUrl +'/images/0301',\r\n\t// \tbase64 = encode64( id ),\r\n\t// \tsBase64 = base64.substring( base64.length - 4 );\r\n\r\n\t// url += '/' + serverId;\r\n\r\n\t// return url + '/' + sBase64 + '/' + base64 + '.jpg';\r\n};\r\n\r\n// Get Profile URI\r\nNP.prflUri = function( id ) {\r\n\treturn 'https://' + ( /rc\\-/.test( location.host )?'rc-':'' ) + NP.sandboxUrl + '/' + id;\r\n\t//return '/' + id + '/bns/timeline/wall';\r\n\t//return '/' + id + '/bns/timeline/wall?sub_template=profile';\r\n};\r\n\r\nNP.getPostLocation = function( id ){\r\n\r\n\tvar s = '';\r\n\tswitch( id ){\r\n\t\tcase 143:\r\n\t\t\t//s = '공통';\r\n\t\t\tbreak;\r\n\t\tcase 144:\r\n\t\t\t//s = 'NP SNS';\r\n\t\t\tbreak;\r\n\t\tcase 145:\r\n\t\t\ts = '블소';\r\n\t\t\tbreak;\r\n\t\tcase 146:\r\n\t\t\ts = '아이온';\r\n\t\t\tbreak;\r\n\t\tcase 925:\r\n\t\t\t//s = 'NP SNS';\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\r\n\treturn s;\r\n};\r\n\r\nNP.articleInfoOpen = function( data ){\r\n\tvar s = '';\r\n\tif ( data.post.postTxtOpenClfSeq === 118 ) { // 전체공개\r\n\t\ts += '전체공개';\r\n\t} else if ( data.post.postTxtOpenClfSeq === 119 ) { // 친구공개\r\n\t\ts += '친구공개';\r\n\t} else if ( data.post.postTxtOpenClfSeq === 120 ) { // 그룹공개\r\n\t\tvar gNm = NP.getPostLocation( data.post.postTxtServClfSeq );\r\n\r\n\t\tgNm = ( gNm === '아이온')? '레기온': '문파원';\r\n\r\n\t\ts += '' + data.post.postTxtTorgNm + '의 ' + gNm + '공개';\r\n\t}\r\n\r\n\treturn s;\r\n};\r\n\r\nNP.articleToInfo = function( data, crrDttm, postNm, postUrl ){\r\n\tvar s = '',\r\n\t\tbar = ' | ',\r\n\t\tloc = NP.getPostLocation( data.post.postTxtServClfSeq ),\r\n\t\tnm = ( data.postTorg == 'CHARACTER_GUESTBOOK' )? data.post.postTxtTorgChrtNm: postNm,\r\n\t\turl = postUrl,\r\n\t\tgCont = data.post.gameContClfSeq,\r\n\t\tgContArr = [ 1211, 1212, 1213, 1214, 1215, 1216, 1311 ],\r\n\t\tgContNm = data.post.postTxtTorgNm;\r\n\r\n\ts += '' + bar;\r\n\t//s += ' ';\r\n\r\n\tif( loc ){\r\n\t\ts += '' + loc + '' + bar;\r\n\t}\r\n\t//TODO postUrl로 링크값을 변경해야함\r\n\tif( nm ){\r\n\t\ts += ''+nm+'' + bar;\r\n\t}\r\n\r\n\tif( gCont && NP.dt.page !== 'group' ){\r\n\t\tvar i = 0;\r\n\t\tfor( var len = gContArr.length; len > i; i++){\r\n\t\t\tif( gCont == gContArr[ i ]){\r\n\t\t\t\ts += '' + gContNm + '문파제작공방' + bar;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tif( data.post.wrtLocClfSeq == 124 ){\r\n\t\ts += '모바일에서' + bar;\r\n\t}else if( data.post.wrtLocClfSeq == 123 ){\r\n\t\ts += 'PC웹에서' + bar;\r\n\t}else if( data.post.wrtLocClfSeq == 125 ){\r\n\t\ts += '게임에서' + bar;\r\n\t}\r\n\r\n\ts += NP.articleInfoOpen( data );\r\n\r\n\treturn s;\r\n};\r\n\r\nNP.articleInfo = function( data, crrDttm, postNm ){\r\n\tvar s = '',\r\n\t\tbar = ' | ',\r\n\t\tloc = NP.getPostLocation( data.post.postTxtServClfSeq ),\r\n\t\tnm = ( data.postTorg == 'CHARACTER_GUESTBOOK' )? data.post.postTxtTorgChrtNm: postNm,\r\n\t\tgCont = data.post.gameContClfSeq;\r\n\t\t\r\n\t\t\r\n\r\n\ts += '' + bar;\r\n\t//s += ' ';\r\n\r\n\tif( loc ){\r\n\t\ts += '' + loc + '' + bar;\r\n\t}\r\n\r\n\tif( nm && nm != '0' ){\r\n\t\t//페이지가 그룹이 아닐때 출처 노출\r\n\t\tif( ( NP.dt.page !== 'group' && NP.dt.page !== 'groupdonate' ) && ( data.post.postTxtTorgClfSeq == 153 ) ){\r\n\t\t\tif( data.post.postTxtServClfSeq === 145 || data.post.postTxtTorgGameId === 102 ){\r\n\t\t\t\tif( (/1294|1295|1296|1297|1298/i.test( gCont ) ) ){\r\n\t\t\t\t\t//s += '' + nm + ' 문파제작공방' + bar;\r\n\t\t\t\t}else{\r\n\t\t\t\t\ts += '' + nm + ' 문파방명록' + bar;\r\n\t\t\t\t}\r\n\t\t\t}else if( data.post.postTxtServClfSeq === 146 || data.post.postTxtTorgGameId === 101 ){\r\n\t\t\t\ts += '' + nm + ' 레기온방명록' + bar;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif( data.post.gameContYn == 'Y' && !(/1294|1295|1296|1297|1298|1211|1212|1213|1214|1215|1216|1311/i.test( gCont ) ) ){\r\n\t\t\ts += ''+ nm +'' + bar;\r\n\t\t}\r\n\r\n\t\t//페이지가 캐릭터방명록이 아닐때 출처 노출\r\n\t\tif( NP.dt.page !== 'characterguestbook' && data.postTorg == 'CHARACTER_GUESTBOOK'){\r\n\t\t\tif( data.post.postTxtServClfSeq === 145 || data.post.postTxtTorgGameId === 102 ){\r\n\t\t\t\ts += ''+ nm +' 캐릭터방명록' + bar;\r\n\t\t\t}else if( data.post.postTxtServClfSeq === 146 || data.post.postTxtTorgGameId === 101 ){\r\n\t\t\t\ts += ''+ nm +' 캐릭터방명록' + bar;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//그룹글일 경우 처리\r\n\t\tif( ( NP.dt.page !== 'group' && NP.dt.page !== 'groupdonate' && NP.dt.page !== 'groupreceive' && NP.dt.page !== 'groupsign' ) \r\n\t\t\t&& ( data.postTorg == 'GROUP' || data.postTorg == 'GROUP_DONATE' || data.postTorg == 'GROUP_RECEIVE' || data.postTorg == 'GROUP_SIGN' ) ){\r\n\t\t\tvar torg = '',\r\n\t\t\t\tsite = ( data.post.postTxtServClfSeq == 146 || data.post.postTxtTorgGameId == 101 )?\r\n\t\t\t\t\t\t'aion': ( data.post.postTxtServClfSeq == 145 || data.post.postTxtTorgGameId == 102 )?\r\n\t\t\t\t\t\t'bns': '';\r\n\r\n\t\t\tif( gCont && data.post.gameContYn == 'Y' && ( /1211|1212|1213|1214|1215|1216|1311/i.test( gCont ) ) ){\r\n\t\t\t\ts += '' + nm + ' 문파제작공방' + bar;\r\n\t\t\t}else if( /1294|1295|1296|1297|1298/i.test( gCont ) ){\r\n\t\t\t\ts += '' + nm + ' 문파제작공방' + bar;\r\n\t\t\t}else if( /1294|1295|1296|1297|1298/i.test( gCont ) ){\r\n\t\t\t}else{\r\n\t\t\t\tif( site == 'aion' ) torg = ' 레기온 이야기';\r\n\r\n\t\t\t\tif( site ){\r\n\r\n\t\t\t\t\tvar homeurl = 'https://sandbox.plaync.com/';\r\n\t\t\t\t\tif ( /rc\\.|rc\\-/.test( location.host ) ) {\r\n\t\t\t\t\t\thomeurl = 'https://rc-sandbox.plaync.com/';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ts += '' + ( nm + torg ) + '' + bar;\r\n\t\t\t\t}else{\r\n\t\t\t\t\ts += '' + nm + '' + bar;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//if( post.actClfSeq == 127 && data.post.wrtLocClfSeq == 124 ){\r\n\tif( data.post.wrtLocClfSeq == 124 ){\r\n\t\ts += '모바일에서' + bar;\r\n\t}else if( data.post.wrtLocClfSeq == 123 ){\r\n\t\ts += 'PC웹에서' + bar;\r\n\t}else if( data.post.wrtLocClfSeq == 125 ){\r\n\t\ts += '게임에서' + bar;\r\n\t}\r\n\r\n\ts += NP.articleInfoOpen( data );\r\n\r\n\treturn s;\r\n};\r\n\r\nNP.bnsPrflUri = function( nm, serverId, serverType ) {\r\n\tif( !nm ) return '';\r\n\t// var serverTxt = '';\r\n\t// if( serverId ) serverTxt = '?s=' + serverId;\r\n\t// return 'http://' + NP.isRc + NP.bnsUrl +'/bs/character/guestbook/' + nm + serverTxt;\r\n\t// return 'http://' + NP.isRc + NP.bnsUrl +'/bs /character/profile/' + nm;\r\n\treturn 'https://' + (NP.isRc?'rc-': '') + NP.bnsUrl +'/world/character/' + serverType + '/' + serverId + '/' + nm;\r\n};\r\n\r\nNP.aionPrflUri = function( id, servId ) {\r\n\tif( !id ) return '';\r\n\treturn 'http://' + NP.isRc + NP.aionUrl +'/characters/' + servId + '/' + id + '/go';\r\n};\r\n\r\nNP.aionGroupGuestbookUri = function(id, servId){\r\n\treturn 'http://' + NP.isRc + NP.aionUrl + '/legions/' + servId + '/' + id + '/go';\r\n};\r\n\r\nNP.replyThumb = function( data ){\r\n\r\n\tvar s = '', thumb = 'cThumb';\r\n\r\n\tif( !NP.isHideNick( data ) ){\r\n\t\ts = '\"'+';\r\n\t}else{\r\n\t\tif( data.wrtGameId === '101' && data.wrtChrtId && data.wrtChrtNm ){\r\n\t\t\tvar t = NP.getCharThumb( data.wrtChrtId, data.wrtSvrId );\r\n\t\t\ts = '\"'+';\r\n\t\t}else if( data.wrtGameId === '102' && data.wrtChrtId && data.wrtChrtNm ){\r\n\t\t\ts = '\"'+';\r\n\t\t}\r\n\t}\r\n\r\n\treturn s;\r\n};\r\n\r\nNP.articleLikeThumb = function( data, isReply ){\r\n\r\n\tvar s = '', thumb = 'thumb';\r\n\r\n\tif( !data.orgWrtPlayncAcctId ) data.orgWrtPlayncAcctId = data.orgWrtPlayncAccId;\r\n\tif( !data.orgWrtPlayncAcctNm ) data.orgWrtPlayncAcctNm = data.orgWrtPlayncAccNm;\r\n\r\n\tif( isReply ) thumb = 'cThumb';\r\n\tif( !NP.isHideNick( data ) ){\r\n\t\ts = '\"'+';\r\n\t}else{\r\n\t\tif( data.orgWrtGameId == '101' && data.orgWrtChrtId ){\r\n\t\t\tvar t = NP.getCharThumb( data.orgWrtChrtId, data.orgWrtSvrId );\r\n\t\t\ts = '\"'+';\r\n\t\t}else{\r\n\t\t\ts = '\"'+';\r\n\t\t}\r\n\t}\r\n\r\n\treturn s;\r\n};\r\n\r\nNP.articleThumb = function( data, isReply ){\r\n\tvar s = '', thumb = 'thumb';\r\n\r\n\tif( !data.post ){\r\n\t\tdata.post = {};\r\n\t\tdata.post.wrtPlayncAcctId = data.wrtPlayncAcctId;\r\n\t\tdata.post.wrtPlayncAcctNm = data.wrtPlayncAcctNm;\r\n\t}\r\n\r\n\tif( isReply ) thumb = 'cThumb';\r\n\tif( !NP.isHideNick( data ) ){\r\n\t\ts = '\"'+';\r\n\t}else{\r\n\t\tif( data.post.wrtGameId == '101' && data.post.wrtChrtId ){//aion\r\n\t\t\tvar t = NP.getCharThumb( data.post.wrtChrtId, data.post.wrtSvrId );\r\n\t\t\ts = '\"'+';\r\n\t\t};\r\n\r\n\t\tif( data.post.wrtGameId == '102' && data.post.wrtChrtId ){//bns\r\n\t\t\ts = '\"'+';\r\n\r\n\t\t};\r\n\r\n\t\tif( !data.post.wrtChrtId && data.post.postTxtTorgGameId == '101' && data.postTorg == 'CHARACTER_GUESTBOOK' ){\r\n\t\t\ts = '\"캐릭터명확인불가\"';\r\n\t\t};\r\n\t}\r\n\r\n\treturn s;\r\n};\r\n\r\nNP.isNeedCharacterBns = function( data ){\r\n\tvar sId = data.postTxtServClfSeq,\r\n\t\tgId = data.postTxtTorgGameId;\r\n\r\n\tif( sId == '145' || gId == '102' ){\r\n\t\tif( data.postTorg === 'CHARACTER_GUESTBOOK' || data.postTorg === 'GROUP_GUESTBOOK' || data.postTorg === 'GROUP' )\r\n\t\t\treturn true;\r\n\t}\r\n\r\n\treturn false;\r\n};\r\n\r\nNP.isNeedCharacter = function( data ){\r\n\tvar sId = data.postTxtServClfSeq,\r\n\t\tgId = data.postTxtTorgGameId;\r\n\r\n\tif( sId == '146' || gId == '101' ){\r\n\t\tif( data.postTorg === 'CHARACTER_GUESTBOOK' || data.postTorg === 'GROUP_GUESTBOOK' || data.postTorg === 'GROUP' )\r\n\t\t\treturn true;\r\n\t}\r\n\r\n\treturn false;\r\n};\r\n\r\nNP.isHideNick = function( data ){\r\n\r\n\tif( data.postTxtTorgGameId == 101 ) return true;\r\n\r\n\tif( data.post && data.post.postTxtTorgGameId == 101 ) return true;\r\n\r\n\tvar gId = data.postTxtTorgGameId || ( data.post && data.post.postTxtTorgGameId );\r\n\tvar gSId = data.postTxtServClfSeq || ( data.post && data.post.postTxtServClfSeq );\r\n\r\n\tif( gId == '101' || gSId == '146' ){\r\n\t\tif( data.postTorg === 'CHARACTER_GUESTBOOK' || data.postTorg === 'CHARACTER_GUESTBOOK' ||\r\n\t\t\t data.postTorg === 'CHARACTER_GUESTBOOK' )\r\n\t\t\treturn true;\r\n\t}\r\n\r\n\tif( NP.dt.st === 'aion' ){\r\n\t\tif( NP.dt.page === 'characterguestbook' || NP.dt.page === 'groupguestbook' ||\r\n\t\t\tNP.dt.page === 'group' ){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\treturn false;\r\n};\r\n\r\nNP.replyNick = function( data ){\r\n\r\n\tvar s = '';\r\n\r\n\tif( !NP.isHideNick( data ) ){\r\n\t\ts = NP.setNick({\r\n\t\t\tpostTxtTorgId: data.wrtPlayncAcctId,\r\n\t\t\tpostTxtTorgNm: data.wrtPlayncAcctNm\r\n\t\t});\r\n\t};\r\n\r\n\tif( data.wrtChrtId && data.wrtGameId == \"102\" ){\r\n\t\ts += '[' + data.wrtChrtNm + '] ';\r\n\t};\r\n\r\n\tif( data.wrtChrtId && data.wrtGameId == \"101\" ){\r\n\t\ts += '[' + data.wrtChrtNm + '] ';\r\n\t};\r\n\r\n\treturn s;\r\n};\r\n\r\nNP.openCharacterGuestbook = function( data ){\r\n\tvar s = '';\r\n\tif( data.st === 'aion' ){\r\n\t\tvar t = NP.getCharThumb( data.characterId, data.serverId );\r\n\r\n\t\ts = '
';\r\n\t\ts += '\"'';\r\n\t\ts += '
[' + data.oNm + ']님의 방명록이 열렸습니다.
';\r\n\t}else if( data.st === 'bns' ){\r\n\t\ts = '
\"'+';\r\n\t\ts += '
';\r\n\t\ts +='
\\[' + data.oNm + ']님의 방명록이 열렸습니다.
';\r\n\t};\r\n\r\n\treturn s;\r\n};\r\n\r\nNP.openGroupGuestbook = function( data ){\r\n\tvar s = '';\r\n\ts = '
\"\"
['+data.gNm+'] 방명록에 한마디 남겨주세요.
';\r\n\treturn s;\r\n};\r\n\r\nNP.articleNick = function( data ){\r\n\tvar s = '';\r\n\r\n\tif( !NP.isHideNick( data ) ){\r\n\t\ts = NP.setNick({\r\n\t\t\tpostTxtTorgId: data.post.wrtPlayncAcctId,\r\n\t\t\tpostTxtTorgNm: data.post.wrtPlayncAcctNm\r\n\t\t});\r\n\t};\r\n\r\n\tif( data.post.wrtChrtId && data.post.wrtChrtNm && data.post.wrtGameId == \"102\" ){\r\n\t\ts += '[' + data.post.wrtChrtNm + ']';\r\n\t\t// s += '[' + data.post.wrtChrtNm + ']';\r\n\t\t// s += '[' + data.post.wrtChrtNm + ']';\r\n\t};\r\n\r\n\tif( data.post.wrtChrtId && data.post.wrtChrtNm && data.post.wrtGameId == \"101\" ){\r\n\t\ts += '[' + data.post.wrtChrtNm + ']';\r\n\t};\r\n\r\n\tif( !data.post.wrtChrtId && data.post.postTxtTorgGameId == '101' && data.postTorg == 'CHARACTER_GUESTBOOK' ){\r\n\t\ts = '[캐릭터명확인불가]';\r\n\t};\r\n\r\n\treturn s;\r\n\r\n};\r\n\r\nNP.articleLikeNick = function( data ){\r\n\tconsole.log('--', data)\r\n\tvar s = '';\r\n\r\n\tif( !NP.isHideNick( data ) ){\r\n\t\ts = NP.setNick({\r\n\t\t\tpostTxtTorgId: ( data.orgWrtPlayncAcctId || data.orgWrtPlayncAccId ),\r\n\t\t\tpostTxtTorgNm: ( data.orgWrtPlayncAcctNm || data.orgWrtPlayncAccNm )\r\n\t\t});\r\n\t}\r\n\r\n\tif( data.orgWrtChrtId && data.orgWrtChrtNm && data.orgWrtGameId == \"102\" ){\r\n\t\ts += '[' + data.orgWrtChrtNm + ']';\r\n\t\t//s += '[' + data.orgWrtChrtNm + ']';\r\n\t}\r\n\r\n\tif( data.orgWrtChrtId && data.orgWrtChrtNm && data.orgWrtGameId == \"101\" ){\r\n\t\ts += '[' + data.orgWrtChrtNm + ']';\r\n\t}\r\n\r\n\treturn s;\r\n\r\n};\r\n\r\nNP.setNick = function( data ){\r\n\tvar postTxtTorgId = data.postTxtTorgId,\r\n\t\tpostTxtTorgNm = data.postTxtTorgNm,\r\n\t\tpostTxtTorgChrtId = data.postTxtTorgChrtId || '',\r\n\t\tpostTxtTorgSvrId = data.postTxtTorgSvrId || '';\r\n\r\n\r\n\tif( !postTxtTorgId || !postTxtTorgNm ) return '';\r\n\r\n\tvar link = '';\r\n\r\n\tif( NP.Util.isGUID( postTxtTorgId ) ){\r\n\t\tlink = NP.prflUri( postTxtTorgId );\r\n\t\treturn ''+postTxtTorgNm+'';\r\n\t}else{\r\n\t\tlink = '/!!/bns/timeline?c=' + postTxtTorgChrtId + '&s=' + postTxtTorgSvrId;\r\n\t\treturn ''+postTxtTorgNm+'';\r\n\t};\r\n};\r\n\r\nNP.articleTo = function( data ){\r\n\tvar s = '';\r\n\tif( data.postTorg === \"GROUP_GUESTBOOK\"){\r\n\t\tif( data.post.postTxtServClfSeq == 145 || data.post.postTxtTorgGameId == 102 ){\r\n\t\t\ts = \" \"+data.post.postTxtTorgNm+\"방명록에\";\r\n\t\t}else{\r\n\t\t\ts = \" \"+data.post.postTxtTorgNm+\"방명록에\";\r\n\t\t}\r\n\r\n\t}else if( data.postTorg === \"PROGILE\"){\r\n\t}else if( data.postTorg === \"GROUP_RECEIVE\"){\r\n\t}else{\r\n\t\tif( data.post.postTxtTorgGameId == \"101\" )\r\n\t\t\ts = \" [\"+data.post.postTxtTorgNm+\"]님에게\";\r\n\t\tif( data.post.postTxtTorgGameId == \"102\" || data.post.postTxtTorgGameId == \"0\" ){\r\n\t\t\ts = NP.setNick({\r\n\t\t\t\tpostTxtTorgId: data.post.postTxtTorgId,\r\n\t\t\t\tpostTxtTorgNm: data.post.postTxtTorgNm,\r\n\t\t\t\tpostTxtTorgChrtId: data.post.postTxtTorgChrtId,\r\n\t\t\t\tpostTxtTorgSvrId: data.post.postTxtTorgSvrId\r\n\t\t\t});\r\n\r\n\t\t\tif( data.postTorg === 'CHARACTER_GUESTBOOK' && ( data.post.postTxtTorgChrtId && data.post.postTxtTorgChrtNm && data.post.postTxtTorgGameId == \"102\" ) ){\r\n\t\t\t\ts += '[' + data.post.postTxtTorgChrtNm + ']';\r\n\t\t\t};\r\n\r\n\t\t\ts += '님에게';\r\n\t\t}\r\n\t}\r\n\r\n\treturn s;\r\n};\r\n\r\n// Get sfile URI\r\nNP.sfile = function( id, type ) {\r\n\t//return NP.SFILE_URL + 'data/' + id + '/profile?type=' + ( type || 'small' );\r\n\treturn NP.SFILE_URL + 'account_profile_images/' + id + '?imageSize=' + ( type || 'medium' );\r\n};\r\n\r\nNP.likeByArticle = function( html, data ){\r\n\tif( !html || !data ) return html;\r\n\tif( !data.post ) return html;\r\n\tif( !data.orgActType ) return html;\r\n\tif( data.orgPostTxtServClfSeq == 146 || data.orgPostTxtTorgGameId == 101 ) return html;\r\n\r\n\tvar s = '
',\r\n\t\te = '
',\r\n\t\tthumb = NP.articleLikeThumb( data, false ),\r\n\t\tnick = NP.articleLikeNick( data ),\r\n\t\tcontent = '
' + nick + '님이 이 글을 좋아합니다.
',\r\n\t\tmenu = '
이 글 메뉴
';\r\n\r\n\thtml = s + thumb + content + menu + html + e;\r\n\r\n\treturn html;\r\n};\r\n\r\nNP.likeBy = function( data ){\r\n\tvar s = '';\r\n\tif( data.orgActType ){\r\n\t\tif( data.orgPostTxtServClfSeq == 146 || data.postTxtTorgGameId == 146 ){\r\n\t\t\t//s = '

좋아요 by ' + data.wrtChrtNm + '

';\r\n\t\t}else{\r\n\t\t\ts = '

좋아요 by ' + data.orgWrtPlayncAccNm + '

';\r\n\t\t}\r\n\t}\r\n\r\n\treturn s;\r\n};\r\n\r\n// Type Conversion\r\nNP.conv = function( value ) {\r\n\tvalue = value.split( '-' );\r\n\t//value = value[ 0 ] + '년 ' + value[ 1 ] + '월 ' + value[ 2 ] + '일';\r\n\tvalue = value[ 1 ] + '월 ' + value[ 2 ] + '일';\r\n\r\n\treturn value;\r\n};\r\n\r\n// Control z-index\r\nNP.zIndex = (function( $ ) {\r\n\t// Base z-index\r\n\tvar z = 5000,\r\n\t\t// z-index term\r\n\t\tt = 20;\r\n\r\n\treturn {\r\n\t\tget : function() {\r\n\t\t\treturn z;\r\n\t\t},\r\n\t\t'+' : function( ctx ) {\r\n\t\t\tz = z + t;\r\n\t\t\tctx && ctx.css( 'zIndex', z );\r\n\t\t},\r\n\t\t'-' : function( ctx ) {\r\n\t\t\tz = z - t;\r\n\t\t\tctx && ctx.css( 'zIndex', '' );\r\n\t\t}\r\n\t};\r\n}( jQuery ));\r\n\r\n// Animate fadeIn\r\nNP.fadeIn = function( target ) {\r\n\ttarget.animate({\r\n\t\topacity : 1\r\n\t}, 300, function() {\r\n\t\tjQuery( this ).css( 'opacity', '' );\r\n\t});\r\n};\r\n\r\n// Animate fadeOut\r\nNP.fadeOut = function( target ) {\r\n\ttarget.fadeOut( 300, function() {\r\n\t\tjQuery( this ).remove();\r\n\t});\r\n};\r\n","// Template\r\nNP.tmpl = {\r\n\t// 서비스 시작vServerId : '15',vCharId : '40185',\r\n\r\n\topenGuestbook : '#{=NP.openCharacterGuestbook(it)}#',\r\n\topenGroupGuestbook: '#{=NP.openGroupGuestbook(it)}#',\r\n\topen : '
\\\r\n\\\r\n\"#{=it.oNm}#\"
\\\r\n#{=it.oNm}#님의 Sandbox가 열렸습니다.
',\r\n\topenGroup : '
\"\"\\\r\n
[#{=NP.dt.gNm}#] 샌드박스가 열렸습니다. 앞으로 즐거운 이야기를 나누어 보세요.
',\r\n\tsystemErr : '
죄송합니다. 에러가 발생했습니다. 잠시 후 다시 접속해주시기 바랍니다.
',\r\n\tclosedGroup : '
[#{=it.gNm || it.oNm}#]
레기온 방명록은 비공개 입니다.
\\\r\n비공개 설정 해제
',\r\n\tclosedCharacter : '
[#{=it.oNm}#]님의 캐릭터 방명록은 비공개 입니다.
\\\r\n비공개 설정 해제
',\r\n\tclosedFrdCharacter : '
[#{=it.oNm}#]님은 캐릭터 방명록을 친구에게만 공개하고 있습니다.
\\\r\n[#{=it.oNm}#]님과 친구가 되어보세요.
',\r\n\tarticle : '
\\\r\n#{=NP.articleThumb(it)}#\\\r\n
\\\r\n#{=NP.articleNick(it)}#\\\r\n
\\\r\n#{=( !it.orgActType )? \"\": \"\"}#\\\r\n
#{=it.post.postTxtLongCont}# \\\r\n
\\\r\n#{=NP.articleInfo(it, it.post.creDttm, it.post.postTxtTorgNm)}#\\\r\n
\\\r\n
\\\r\n#{= ( it.post.siempre ) ? \"

... 더 보기\" + it.post.siempre + \"

\" : \"\"}#\\\r\n#{= ( it.photoList !== null && it.photoList && it.photoList.length ) ? NP.Image.setUI( it.photoList ) : \"\"}#\\\r\n\\\r\n#{=NP.Button.setUI( it )}#\\\r\n#{=NP.Reply.setUI( it )}#
',\r\n\tarticleExt : '
\\\r\n#{=NP.articleThumb(it)}#\\\r\n
\\\r\n#{=NP.articleNick(it)}#\\\r\n
\\\r\n#{=( !it.orgActType )? \"\": \"\"}#\\\r\n
\\\r\n\\\r\n#{=it.post.postTxtLongCont}# \\\r\n
\\\r\n#{=NP.articleToInfo(it, it.post.creDttm, it.post.extPostTxtTorgServNm, it.post.postTxtTorgUrl.replace(\"http://\", \"https://\"))}#\\\r\n
\\\r\n
\\\r\n#{=( it.photoList !== null && it.photoList && it.photoList.length ) ? NP.Image.setUI( it.photoList ) : \"\"}#\\\r\n\\\r\n#{=NP.Button.setUI( it )}#\\\r\n#{=NP.Reply.setUI( it )}#
',\r\n\t// 타인의 이야기에 글을 쓴 경우\r\n\tarticleTo : '
\\\r\n#{=NP.articleThumb(it)}#\\\r\n
\\\r\n#{=NP.articleNick(it)}#\\\r\n님이 \\\r\n#{=NP.articleTo(it)}#\\\r\n
\\\r\n
#{=it.post.postTxtLongCont}# \\\r\n
\\\r\n#{=NP.articleInfo(it, it.post.creDttm, it.post.postTxtTorgNm)}#\\\r\n
\\\r\n
\\\r\n#{=it.post.siempre ? \"

... 더 보기\" + it.post.siempre + \"

\" : \"\"}#\\\r\n#{=( !it.orgActType )? \"\": \"\"}#\\\r\n#{=( it.photoList !== null && it.photoList && it.photoList.length ) ? NP.Image.setUI( it.photoList ) : \"\"}#\\\r\n\\\r\n#{=NP.Button.setUI( it )}#\\\r\n#{=NP.Reply.setUI( it )}#
',\r\n\tactivity : '
\\\r\n#{=NP.articleThumb(it)}#\\\r\n
\\\r\n이 글 메뉴\\\r\n\\\r\n
\\\r\n
#{=it.post.postTxtLongCont}# \\\r\n\\\r\n
\\\r\n#{=NP.Article.setUI( it )}#\\\r\n#{=NP.Button.setUI( it )}#\\\r\n#{=NP.Reply.setUI( it )}#
',\r\n\tdeleteArticle : '
삭제된 글입니다.',\r\n\thideArticle : '
해당글이 더 이상 표시되지 않습니다.',\r\n\tblockArticle : '#{=NP.articleThumb(it)}#\\\r\n
\\\r\n#{=it.wrtPlayncAcctNm}#님을 차단했습니다. 차단해제\\\r\n
',\r\n\r\n\tactType : { \r\n\t\t// 추후 추가 예정\r\n\t\t'PHOTO_REPLY' : ' ',\r\n\t\t'EDIT_GROUP_INTRO' : ' ',\r\n\t\t'EDIT_GROUP_REPR_PHOTO' : ' ',\r\n\t\t'FRIEND' : '\"\"\\\r\n#{=it.post.postTxtTorgNm}##{= (it.post.wrtChrtNm !== \"\" && it.post.wrtChrtNm !== null ) ? \"[\" + it.post.wrtChrtNm + \"]\" : \"\"}#님이 \\\r\n#{=it.post.actTorgNm}##{=it.data && it.data.length && it.data[ 3 ] ? \"[\" + it.data[ 3 ] + \"]\" : \"\"}#님과 친구가 되었습니다.', // 7일\r\n\t\t'ADD_PHOTO' : ' ',\r\n\r\n\t\t//타인의 프로필에 글 작성\r\n\t\t'PROFILE_POST' : '#{=it.post.wrtPlayncAcctNm}#님이 \\\r\n#{=it.post.actTorgNm}#님의 프로필에 \\\r\n\\\r\n#{=!it.refTimeline.post.postTxtLongCont.length ? \"\" : \""\" + NP.Util.ellipsis( it.refTimeline.post.postTxtLongCont, 500 ) + \""\"}# 글을 남겼습니다.',\r\n\r\n\t\t// 댓글 작성\r\n\t\t'REPLY' : '\\\r\n#{=it.post.actTorgNm}#님의 글에 \\\r\n\"#{=NP.Util.ellipsis( it.refData, 500 )}#\" 댓글을 작성했습니다.',\r\n\r\n\t\t// 구독\r\n\t\t'FOLLOW' : '#{=it.post.wrtPlayncAcctNm}#님이 \\\r\n#{=it.post.actTorgNm}#님을 구독 했습니다.',\r\n\r\n\t\t// 프로필 정보 추가\r\n\t\t'ADD_PROFILE_INFO' : '#{=it.post.wrtPlayncAcctNm}#님이 \\\r\n#{=it.data[ 0 ]}#에 \\\r\n\"#{=NP.Util.josa( NP.Util.validate( ( it.data[ 0 ] === \"생일\" ? NP.conv( it.data[ 1 ] ) : it.data[ 1 ] ) ), 0, \\'\"\\' )}# 추가했습니다.',\r\n\r\n\t\t// 프로필 정보 변경\r\n\t\t'EDIT_PROFILE_INFO' : '#{=it.post.wrtPlayncAcctNm}#님이 \\\r\n#{=NP.Util.josa( it.data[ 0 ], 0 )}# \"\\\r\n#{=it.data[ 0 ] !== \"생일\" ? NP.Util.josa( NP.Util.validate( it.data[ 1 ] ), 1, \\'\"\\' ) : NP.conv( it.data[ 1 ] ) + \""로\"}# 변경했습니다.',\r\n\r\n\t\t// 프로필 사진 변경\r\n\t\t'EDIT_PROFILE_PHOTO' : '#{=it.post.wrtPlayncAcctNm}#님이 프로필 사진을 변경했습니다.',\r\n\r\n\t\t// 닉네임변경\r\n\t\t'CHANGE_NICK' : '#{=it.data[ 0 ]}#님이 닉네임을 변경했습니다. \\\r\n이제부터 #{=NP.Util.josa( NP.Util.validate( it.data[ 1 ] ), 2, \\'\\' )}#고 불러주세요.',\r\n\r\n\t\t// 상태 좋아요\r\n\t\t'LIKE_STATUS' : '#{=it.post.wrtPlayncAcctNm}#님이 #{=it.post.actTorgNm}#님의 \\\r\n상태를 좋아합니다.'\r\n\t},\r\n\treplyWrap : '
    ',\r\n\treply : '
  • \\\r\n#{=NP.replyThumb(it)}#\\\r\n#{=NP.replyNick(it)}#\\\r\n #{=it.rplyTxtCont}#\\\r\n

    \\\r\n#{=it.deletable === \"Y\" ? \"삭제\" : \"\"}# \\\r\n#{=NP.dt.v !== it.wrtPlayncAcctId ? \"신고

    \" : \"\"}#\\\r\n

    \\\r\n | \\\r\n#{=it.liked ? \"좋아요 취소\" : \"좋아요\"}# \\\r\n#{=it.likeCnt ? \"\" + it.likeCnt + \"명\" : \"\"}#\\\r\n

    \\\r\n
  • ',\r\n\treplyForm : '
    \\\r\n#{=NP.Character.setUI( it )}#\\\r\n\\\r\n
    ',\r\ncommentBox : '
    \\\r\n#{=it.post.rplyTxtCnt > 2 ? \"이전 댓글 보기처음부터 보기

    \" : \"\"}#
    ',\r\nlikeBox : '
    \\\r\n#{=it.post.rplyTxtCnt > 2 ? it.post.rplyTxtCnt > 10 ? \"

    이전 댓글 보기\\\r\n처음부터 보기

    \" : \"

    \" + it.post.rplyTxtCnt + \"개의 댓글 모두보기

    \" : \"\"}#
    ',\r\ncontextMenu : { // key 는 className 과 일치해야함\r\n\t\tMODIFY : '
  • 수정
  • ',\r\n\t\tDEL_POST : '
  • 삭제
  • ',\r\n\t\tDEL_ACTIVITY : '
  • 삭제
  • ',\r\n\t\tLINK : '
  • 이 글의 링크
  • ',\r\n\t\tREPORT : '
  • 신고
  • ',\r\n\t\tHIDE : '
  • 무시
  • ',\r\n\t\tFRD_BLOCK : '
  • 차단
  • ',\r\n\t\tUNFOLLOW : '
  • 구독취소
  • '\r\n\t},\r\n\tbutton : '
    \\\r\n
    = 1? \" on\": \"\"}#\">\\\r\n
    \\\r\n
    = 1? \" on\": \"\"}# #{=it.post.liked ? \" unLike\" : \"\"}#\">\\\r\n\\\r\n
    \\\r\n
    ',\r\n\twrapImage : '
    ',\r\n\timageFrame : '
    삭제',\r\n\tmessage : {\r\n\t\tnotAllowed : '#{=NP.dt.oNm}#님은 친구에게만 글 작성을 허용하고 있습니다.
    #{=NP.dt.oNm}#님과 친구가 되어보세요.',\r\n\t\trestrict : '회원님께서는 제재로 인해 서비스 이용이 중지되었습니다.
    고객센터 바로가기'\r\n\t},\r\n\tselectSetOpen: '
    전체공개
      \\\r\n
    ',\r\n\tselectSetChar: '#{=NP.Character.setSelectSetChar( it )}#',\r\n\tmodalGroupSetting: '
    \\\r\n\t
    \\\r\n\t\t
    \\\r\n\t\t\t레기온 방명록 공개 설정\\\r\n\t\t\t닫기\\\r\n\t\t
    \\\r\n\t\t
    \\\r\n\t\t\t
    \\\r\n\t\t\t
      \\\r\n\t\t\t\t
    • \\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\t누구나 글을 보고 작성할 수 있습니다.\\\r\n\t\t\t\t
    • \\\r\n\t\t\t\t
    • \\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\t아무도 방명록에 접근할 수 없습니다.\\\r\n\t\t\t\t
    • \\\r\n\t\t\t
    \\\r\n\t\t\t
    \\\r\n\t\t\t

    공개 설정 변경 시 이전에 작성된 모든 글들의 공개 설정도 변경됩니다.

    \\\r\n\t\t
    \\\r\n\t\t
    \\\r\n\t\t\t적용\\\r\n\t\t\t취소\\\r\n\t\t
    \\\r\n\t
    \\\r\n
    ',\r\n\tmodalCharSetting: '
    \\\r\n\t
    \\\r\n\t\t
    \\\r\n\t\t\t캐릭터 방명록 공개 설정\\\r\n\t\t\t닫기\\\r\n\t\t
    \\\r\n\t\t
    \\\r\n\t\t\t
    \\\r\n\t\t\t
      \\\r\n\t\t\t\t
    • \\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\t누구나 글을 보고 작성할 수 있습니다.\\\r\n\t\t\t\t
    • \\\r\n\t\t\t\t
    • \\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\tNC친구만 글을 보고, 작성 할 수 있습니다.\\\r\n\t\t\t\t
    • \\\r\n\t\t\t\t
    • \\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\t아무도 방명록에 접근할 수 없습니다.\\\r\n\t\t\t\t
    • \\\r\n\t\t\t
    \\\r\n\t\t\t
    \\\r\n\t\t\t

    공개 설정 변경 시 이전에 작성된 모든 글들의 공개 설정도 변경됩니다.

    \\\r\n\t\t
    \\\r\n\t\t
    \\\r\n\t\t\t적용\\\r\n\t\t\t취소\\\r\n\t\t
    \\\r\n\t
    \\\r\n
    ',\r\n\tmodalBlockFriend : '
    \\\r\n\t\t
    \\\r\n\t\t 닫기\\\r\n\t\t
    \\\r\n\t\t \t

    차단하면 차단한 친구가 보내는 대화 또는 글을

    \\\r\n\t\t \t

    받을 수 없으며, 서로의 접속 상태를 확인할 수 없습니다.

    \\\r\n\t\t \t

    친구가 아닌 경우 친구요청을 받을 수 없습니다.

    \\\r\n\t\t \t

    (차단 여부는 상대방이 알 수 없습니다.)

    \\\r\n\t\t
    \\\r\n\t\t
    \\\r\n\t\t 차단\\\r\n\t\t 취소\\\r\n\t\t
    \\\r\n\t\t
    \\\r\n\t\t
    ',\t\r\n\tmodalDeclareArticle : '
    \\\r\n\t\t
    \\\r\n\t\t\t
    신고하기
    \\\r\n\t\t\t닫기\\\r\n\t\t\t

    - 게시물 신고는 하루에 20회까지 가능합니다.

    \\\r\n\t\t\t\\\r\n\t\t\t\t\\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\\\r\n\t\t\t\t\\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\\\r\n\t\t\t\t\\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\\\r\n\t\t\t\t\\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\\\r\n\t\t\t\t\\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\t\\\r\n\t\t\t\t\\\r\n\t\t\t
    남은신고횟수
    신고자
    신고일시
    신고대상자
    신고사유
    \\\r\n\t\t\t
    \\\r\n\t\t\t\t신고\\\r\n\t\t\t\t취소\\\r\n\t\t\t
    \\\r\n\t\t
    \\\r\n\t\t
    ',\r\n\twriteShort : '
    \\\r\n
    \\\r\n\\\r\n
    \\\r\n

    오늘은 어떤 이야기를 나누실래요?

    \\\r\n올리기 취소\\\r\n\\\r\n\\\r\n
  • \\\r\n
    \\\r\n사진\\\r\n
    \\\r\n
  • \\\r\n
    \\\r\n
    \\\r\n
    \\\r\n
    ',\r\n\tnoneData: '
    아직 게시물이 없습니다.
    #{=it.gNm}# 문파 활동에 문파원들과 참여해 보세요
    '\r\n};\r\nNP.Util.compile( NP.tmpl );","// Template\r\nNP.template = {\r\n\t// 외부 요청 친구 상태 return\r\n\tex_btnFriend : function( data ){\r\n\t\tvar markup = \"\";\r\n\r\n\t\tswitch ( data ){\r\n\t\t\tcase 'sentProposals' : markup = 'NC친구신청중'; break;\r\n\t\t\tcase 'friend' : markup = 'NC친구'; break;\r\n\t\t}\r\n\r\n\t\treturn markup;\r\n\t},\r\n\r\n\t// 외부 요청 구독 상태 return\r\n\tex_btnFollow : function( data ){\r\n\t\tvar markup = \"\";\r\n\t\tswitch ( data ){\r\n\t\t\tcase 'following' : markup = '구독중'; break;\r\n\t\t}\r\n\r\n\t\treturn markup;\r\n\t},\r\n\r\n\r\n\t// 함께 아는 친구 layer outline\r\n\twithFriendLayer : function( data ){\r\n\t\tvar markup = '';\r\n\r\n\t\tmarkup += '
    ';\r\n\t\tmarkup += '
    ';\r\n\t\tmarkup += '
    ';\r\n\r\n\t\treturn markup;\r\n\t},\r\n\r\n\t// 함께 아는 친구 layer content\r\n\twithFriendLayerCont : function( data ){\r\n\t\tvar markup = '';\r\n\r\n\t\tmarkup += '
    ' + data.userName + '님과 함께 아는 친구 ' + data.withFriend.length + '명
    닫기
    ';\r\n\t\tmarkup += '
    ';\r\n\r\n\t\treturn markup;\r\n\t},\r\n\r\n\t// 미니프로필 layer outline\r\n\tminiProfileLayer : function( data ){\r\n\t\tvar markup = '';\r\n\r\n\t\tmarkup += '
    ';\r\n\t\tmarkup += '
    ';\r\n\t\tmarkup += '
    \"로딩중
    ';\r\n\t\tmarkup += '
    ';\r\n\r\n\t\treturn markup;\r\n\t},\r\n\r\n\t// 미니프로필 layer content\r\n\tminiProfileLayerCont : function( data ){\r\n\t\t/*\r\n\t\tdata = {\r\n\t\t\tall : ,\r\n\t\t\tplayncAcctId : text,\r\n\t\t\tuserName : text,\r\n\t\t\tmobileUser : boolean,\r\n\t\t\tbirthday : text,\r\n\t\t\tsex : text,\r\n\t\t\tintro : text,\r\n\t\t\twithFriendCount : number,\r\n\t\t\twithFriend : [\r\n\t\t\t\t{\r\n\t\t\t\t\tplayncAcctId : text,\r\n\t\t\t\t\tuserName : text\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tfriendCount : number,\r\n\t\t\tfriendRelation : sentProposals | friend\r\n\t\t\tfollowRelation : following | followee\r\n\t\t}\r\n\t\t*/\r\n\t\tvar markup = '';\r\n\r\n\t\tmarkup += '
    ';\r\n\t\tmarkup += '
    ' + data.userName + ' ';\r\n\r\n\t\tif( NP.Util.isSandbox() && data.mobileUser ){\r\n\t\t\tmarkup += 'NC메신저 이용 중';\r\n\t\t}\r\n\r\n\t\tmarkup += '
    \"\"

    ' + data.birthday + ' ' + data.sex + '

    ';\r\n\t\tif( data.intro ) markup += '
    ' + data.intro + '
    ';\r\n\t\tif( 0 < data.withFriendCount ) {\r\n\t\t\tmarkup += '
    ';\r\n\t\t\tfor( i=0 ; i\"\" ';\r\n\t\t\t}\r\n\t\t\tmarkup += '
    ';\r\n\t\t}\r\n\r\n\t\tif ( data.withFriendCount!='' || data.friendCount!='' ) {\r\n\t\t\tmarkup += '
    ';\r\n\t\t\tif( 0 < data.withFriendCount ) markup += '함께 아는 친구 ' + data.withFriendCount + '명';\r\n\t\t\tif( 0';\r\n\t\t} else {\r\n\t\t\tif( NP.dt.v !== '' && NP.dt.v === data.playncAcctId ){\r\n\t\t\t\tmarkup += '';\r\n\t\t\t} else if( NP.template.ex_btnFriend( data.friendRelation )!=\"\" || NP.template.ex_btnFollow( data.followRelation )!=\"\" ){\r\n\t\t\t\tmarkup += '

    ';\r\n\t\t\t\tmarkup += NP.template.ex_btnFriend( data.friendRelation );\r\n\t\t\t\tif( NP.template.ex_btnFriend( data.friendRelation )!=\"\" && NP.template.ex_btnFollow( data.followRelation )!=\"\" ) {\r\n\t\t\t\t\tmarkup += ' | ';\r\n\t\t\t\t}\r\n\t\t\t\tmarkup += NP.template.ex_btnFollow( data.followRelation );\r\n\t\t\t\tmarkup += '

    ';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tmarkup += '
    ';\r\n\r\n\t\treturn markup;\r\n\t}\r\n\r\n}","// Scroll\r\nNP.Scroll = (function( $ ) {\r\n\tfunction Scroll( pane ) {\r\n\t\tthis.onEnd = $.Callbacks();\r\n\t\tthis.pane = $( pane );\r\n\t\tthis.evtBind();\r\n\t}\r\n\r\n\tScroll.prototype.evtBind = function() {\r\n\t\tvar that = this,\r\n\t\t\ttimer,\r\n\t\t\tscrollHandler = NP.win[ 0 ] === this.pane[ 0 ] ? function() {\r\n\t\t\t\tif ( NP.doc.height() - NP.win.height() <= NP.win.scrollTop() ) {\r\n\t\t\t\t\tthat.onEnd.fire();\r\n\t\t\t\t}\r\n\t\t\t} : function() {\r\n\t\t\t\tif ( that.pane[ 0 ].scrollHeight - that.pane.innerHeight() <= that.pane.scrollTop() ) {\r\n\t\t\t\t\tthat.onEnd.fire();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tthis.pane.scroll(function() {\r\n\t\t\tif ( timer ) {\r\n\t\t\t\tclearTimeout( timer );\r\n\t\t\t\ttimer = null;\r\n\t\t\t}\r\n\r\n\t\t\ttimer = setTimeout( scrollHandler, 200 );\r\n\t\t});\r\n\t};\r\n\r\n\treturn Scroll;\r\n}( jQuery ));\r\n\r\n// ScrollToLoad\r\nNP.ScrollToLoad = function() {\r\n\tvar tplParser = NP.ns( 'Util.tplParser' ),\r\n\t\thbParser = NP.ns( 'Util.hbParser' ),\r\n\t\ttimer;\r\n\r\n\tfunction IEScrollClear(){\r\n\t\tjQuery( '.moreArticle' ).remove();\r\n\t\tjQuery( window ).unbind( '.toLoad' );\r\n\t}\r\n\r\n\tNP.ScrollToLoad.pane = jQuery( 'body' );\r\n\tNP.ScrollToLoad.target = jQuery( '.moreArticle' );\r\n\t\r\n\tif ( !NP.ScrollToLoad.pane.length || !NP.ScrollToLoad.target.length ) {\r\n\t\treturn;\r\n\t}\r\n\t\r\n\tNP.onAfterTimelineLoad.add(function() {\r\n\t\t//alert('로딩중입니다...')\r\n\t\tclearTimeout( timer );\r\n\t\ttimer = setTimeout(function() {\r\n\r\n\t\t\tif ( NP.ScrollToLoad.pane[ 0 ].scrollHeight >= jQuery( window ).height() || NP.isLast ) {\r\n\t\t\t\tif ( NP.isLast === undefined || NP.isLast ) {\r\n\r\n\t\t\t\t\tif ( !NP.Util.getParam( 'postTxtSeq' ) ) {\r\n\t\t\t\t\t\tif ( NP.dt.loc === 'group' ) {\r\n\t\t\t\t\t\t\tif( !jQuery( '.openServiceGroupInfo' ).length ) NP.timeline.append( tplParser( NP.tmpl.openGroup )( NP.dt ) );\r\n\t\t\t\t\t\t} else if( NP.dt.loc === 'characterguestbook' ){\r\n\t\t\t\t\t\t\tif( !jQuery( '.openServiceInfo' ).length ) NP.timeline.append( tplParser( NP.tmpl.openGuestbook )( NP.dt ) );\r\n\t\t\t\t\t\t}else if( NP.dt.loc === 'groupguestbook' ){\r\n\t\t\t\t\t\t\tif( !jQuery( '.openServiceGroupInfo' ).length ) NP.timeline.append( tplParser( NP.tmpl.openGroupGuestbook )( NP.dt ) );\r\n\t\t\t\t\t\t}else if( NP.dt.loc === 'groupdonate' || NP.dt.loc === 'groupsign' || NP.dt.loc == 'groupreceive' ){\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif( !jQuery( '.openServiceInfo' ).length ) \r\n\t\t\t\t\t\t\t\tNP.timeline.append( tplParser( NP.tmpl.open )( NP.dt ) );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tNP.ScrollToLoad.clear();\r\n\t\t\t\t}else if( NP.isLast ){\r\n\t\t\t\t\tNP.ScrollToLoad.clear();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif( screen.height > jQuery( '#contents' ).height() ){\r\n\t\t\t\tNP.ScrollToLoad.onViewport.fire();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif( jQuery( 'body' ).scrollTop() !== 0 ) jQuery( 'body' ).scrollTop( jQuery( 'body' ).scrollTop() - 1 );\r\n\t\t\tif( jQuery( 'html' ).scrollTop() !== 0 ) jQuery( 'html' ).scrollTop( jQuery( 'html' ).scrollTop() - 1 );\r\n\r\n\t\t}, 500);\r\n\r\n\r\n\t});\r\n\r\n\tjQuery( window ).bind( 'scroll.toLoad', function() {\r\n\t\tif ( NP.isEnded || ( !NP.isLoading && NP.ScrollToLoad.target.offset().top < ( jQuery( 'body' ).scrollTop() || jQuery( 'html' ).scrollTop() ) + jQuery( window ).height() ) ) {\r\n\t\t\tif ( NP.isLast ) {\r\n\t\t\t\tif ( NP.dt.loc === 'group' ) {\r\n\t\t\t\t\tif( !jQuery( '.openServiceGroupInfo' ).length ) \r\n\t\t\t\t\t\tNP.timeline.append( tplParser( NP.tmpl.openGroup )( NP.dt ) );\r\n\t\t\t\t} else if( NP.dt.loc === 'characterguestbook' ){\r\n\t\t\t\t\tif( !jQuery( '.openServiceInfo' ).length ) \r\n\t\t\t\t\t\tNP.timeline.append( tplParser( NP.tmpl.openGuestbook )( NP.dt ) );\r\n\t\t\t\t}else if( NP.dt.loc === 'groupguestbook' ){\r\n\t\t\t\t\tif( !jQuery( '.openServiceGroupInfo' ).length ) \r\n\t\t\t\t\t\tNP.timeline.append( tplParser( NP.tmpl.openGroupGuestbook )( NP.dt ) );\r\n\t\t\t\t}else if( NP.dt.loc === 'groupdonate' || NP.dt.loc === 'groupsign' || NP.dt.loc == 'groupreceive'){\r\n\t\t\t\t\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif( !jQuery( '.openServiceInfo' ).length ) \r\n\t\t\t\t\t\tNP.timeline.append( tplParser( NP.tmpl.open )( NP.dt ) );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tNP.ScrollToLoad.clear();\r\n\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tNP.ScrollToLoad.onViewport.fire();\r\n\t\t}\t\t\r\n\t});\r\n};\r\nNP.ScrollToLoad.clear = function() {\r\n\r\n\tNP.ScrollToLoad.target.remove();\r\n\tNP.ScrollToLoad.onViewport.empty();\r\n\tjQuery( window ).unbind( '.toLoad' );\r\n};\r\nif ( !NP.Util.getParam( 'postTxtSeq' ) ) {\r\n\tNP.ScrollToLoad();\r\n} else {\r\n\tjQuery( '.moreArticle' ).remove();\r\n}\r\nNP.ScrollToLoad.onViewport = jQuery.Callbacks();\r\nNP.ScrollToLoad.onViewport.add(function() {\r\n\tNP.Timeline.get( NP.Timeline.getLastNum() );\r\n});\r\n","// Placeholder\r\nNP.Placeholder = (function( $ ) {\r\n\tvar isSupport = 'placeholder' in document.createElement( 'input' );\r\n\r\n\tfunction set( pane ) {\r\n\t\tif ( !isSupport ) {\r\n\t\t\tpane.find( '[placeholder]' ).addClass( 'placeholder' ).each(function() {\r\n\t\t\t\tvar el = $( this );\r\n\t\t\t\tel.val( el.attr( 'placeholder' ) );\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tif ( !isSupport ) {\r\n\t\tNP.body.on( 'focusin', '[placeholder]', function() {\r\n\t\t\tvar el = $( this ).addClass( 'focus' );\r\n\r\n\t\t\tif ( el.attr( 'placeholder' ) === el.val() ) {\r\n\t\t\t\tel.val( '' );\r\n\t\t\t\tel.removeClass( 'placeholder' );\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tNP.body.on( 'focusout', '[placeholder]', function() {\r\n\t\t\tvar el = $( this ).removeClass( 'focus' );\r\n\r\n\t\t\tif ( !el.val().length ) {\r\n\t\t\t\tel.addClass( 'placeholder' );\r\n\t\t\t\tel.val( el.attr( 'placeholder' ) );\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tNP.onProcessing.add( set );\r\n\t\tset( NP.body );\r\n\t}\r\n\r\n\treturn {\r\n\t\tisSupport : isSupport,\r\n\t\tset : set\r\n\t};\r\n}( jQuery ));\r\n","// Tooltip Layer\r\nNP.Tooltip = (function( $ ) {\r\n\tvar timer;\r\n\r\n\tfunction Tooltip( optAll ) {\r\n\t\tif ( !optAll ) optAll = {};\r\n\r\n\t\tthis.els = $( optAll.elClass );\r\n\t\t//this._flyout = $( optAll.id );\r\n\t\tthis._flyout = $('
    ', {\r\n\t\t\t'class' : 'ly_tooltip'\r\n\t\t}).appendTo('body');\r\n\r\n\t\t//if ( !this.els[0] || !this._flyout[0] ) return;\r\n\r\n\t\tthis.isOn = !1;\r\n\t\tthis.options = $.extend( {\r\n\t\t\tdelay : 200,\r\n\t\t\tduration : 100,\r\n\t\t\tgap : 1,\r\n\t\t\thalfImg : 5\r\n\t\t}, optAll || {} );\r\n\r\n\t\tthis.onBeforeShow = $.Callbacks();\r\n\t\tthis.onHide = $.Callbacks();\r\n\r\n\t\tTooltip.evtBind.call( this );\r\n\t}\r\n\r\n\tTooltip.evtBind = function() {\r\n\t\tNP.contents.on( 'mouseover', this.options.elClass, this, function( e ) {\r\n\t\t\tif ( !$( this ).data( 'tooltip' ) ) return;\r\n\r\n\t\t\te.data.show( $( this ) );\r\n\t\t}).on( 'mouseout', this.options.elClass, this, function( e ) {\r\n\t\t\te.data.hide();\r\n\t\t});\r\n\t};\r\n\r\n\tTooltip.prototype.show = function( el ) {\r\n\t\tvar me = this;\r\n\r\n\t\ttimer = setTimeout(function() {\r\n\t\t\tif ( !me.isOn ) return;\r\n\t\t\tclearTimeout( timer );\r\n\r\n\t\t\tme._flyout.css( 'width', '' ).html( '' + el.data( 'tooltip' ) + '' );\r\n\r\n\t\t\tvar win = $( window ),\r\n\t\t\t\tfHeight = me._flyout.outerHeight(),\r\n\t\t\t\tfWidth = me._flyout.outerWidth(),\r\n\t\t\t\toffset = el.offset(),\r\n\t\t\t\tt = win.scrollTop() <= offset.top - me.options.gap - fHeight;\r\n\r\n\t\t\tme.onBeforeShow.fire( me._flyout );\r\n\r\n\t\t\tme._flyout.css({\r\n\t\t\t\tposition : 'absolute',\r\n\t\t\t\ttop : t ? offset.top - fHeight - me.options.gap : offset.top + el.outerHeight() + me.options.gap,\r\n\t\t\t\tleft : offset.left - ( fWidth / 3 ) + ( el.outerWidth() / 2 ),\r\n\t\t\t\twidth : fWidth,\r\n\t\t\t\tbackgroundPosition : ( fWidth / 3 ) - me.options.halfImg + 'px ' + ( t ? 'bottom' : 'top' )\r\n\t\t\t}).appendTo('body').fadeIn( me.options.duration );\r\n\r\n\t\t\t/*var oH = me._flyout.outerHeight(),\r\n\t\t\t\toW = me._flyout.outerWidth(),\r\n\t\t\t\tw = $( window ),\r\n\t\t\t\tsL = w.scrollLeft(),\r\n\t\t\t\to = el.offset(),\r\n\t\t\t\tt = w.scrollTop() < o.top - oH - me.options.gap,\r\n\t\t\t\tm = oW / 3,\r\n\t\t\t\tn = ( oW - el.width() ) / 3,\r\n\t\t\t\tl = o.left - m - sL >= 0;\r\n\r\n\t\t\tme.onBeforeShow.fire( me._flyout );\r\n\r\n\t\t\tme._flyout.css({\r\n\t\t\t\tposition : 'absolute',\r\n\t\t\t\ttop : parseInt( o.top + ( t ? -oH - me.options.gap : el.height() + me.options.gap ) ),\r\n\t\t\t\tleft : parseInt( l ? o.left - n : sL ),\r\n\t\t\t\tbackgroundPosition : parseInt( ( l ? m : m + o.left - n - sL >= 0 ? m + o.left - n - sL : 0 ) ) + 'px ' + ( t ? 'bottom' : 'top' )\r\n\t\t\t}).appendTo('body').fadeIn( me.options.duration );*/\r\n\r\n\t\t\tme.isOn = !0;\r\n\t\t}, me.options.delay);\r\n\r\n\t\tme.isOn = !0;\r\n\t};\r\n\r\n\tTooltip.prototype.hide = function() {\r\n\t\tclearTimeout( timer );\r\n\t\tthis._flyout.hide();\r\n\r\n\t\tthis.onHide.fire( this._flyout );\r\n\t\tthis.isOn = !1;\r\n\t};\r\n\r\n\treturn Tooltip;\r\n}( jQuery ));\r\n\r\nvar tooltip = new NP.Tooltip({\r\n\telClass : '.js_tooltip',\r\n\tid : '#flyoutTooltip'\r\n});\r\ntooltip.onBeforeShow.add( NP.zIndex['+'] );\r\ntooltip.onHide.add( NP.zIndex['-'] );\r\n","// Modal Layer\r\nNP.Modal = (function( $ ) {\r\n\tvar setCenter = NP.ns( 'Util.setCenter' ),\r\n\t\tstack = NP.ns( 'Util.stack' ),\r\n\t\tinstance;\r\n\r\n\tfunction Modal( optAll ) {\r\n\t\tthis.zIndexTerm = 20;\r\n\t\tthis.duration = 200;\r\n\t\tthis.isShow = !1;\r\n\t\tthis.ctx = [];\r\n\t\tthis.optAll = Modal.setup( optAll );\r\n\r\n\t\tthis._modal = $('
    ', {\r\n\t\t\tid : 'modalNP',\r\n\t\t\tstyle : 'display:none'\r\n\t\t}).css( this.optAll ).appendTo( 'body' ).click(function() {\r\n\t\t\tinstance.hide();\r\n\t\t});\r\n\r\n\t\tthis._dialog = $('
    ', {\r\n\t\t\t'class' : 'ly_modal',\r\n\t\t\tid : 'modalDialog',\r\n\t\t\tstyle : 'display:none;position:absolute;'\r\n\t\t}).appendTo( 'body' );\r\n\r\n\t\tthis.onBeforeShow = $.Callbacks();\r\n\t\tthis.onShow = $.Callbacks();\r\n\t\tthis.onHide = $.Callbacks();\r\n\t}\r\n\r\n\tModal.setup = function( optAll ) {\r\n\t\treturn $.extend({\r\n\t\t\tposition : 'absolute',\r\n\t\t\ttop : 0, left : 0,\r\n\t\t\twidth : '100%',\r\n\t\t\tminWidth : 970,\r\n\t\t\topacity : 0.5,\r\n\t\t\tzIndex : 100,\r\n\t\t\tbackgroundColor : '#000'\r\n\t\t}, optAll || {});\r\n\t};\r\n\r\n\tModal.setCenter = function() {\r\n\t\tsetCenter( instance.ctx );\r\n\t};\r\n\r\n\tModal.onKeydown = function( e ) {\r\n\t\tif ( e.keyCode === 27 ) {\r\n\t\t\tinstance.hide();\r\n\t\t}\r\n\t};\r\n\r\n\tModal.prototype.show = function( ctx ) {\r\n\t\tif ( !ctx ) return;\r\n\r\n\t\tthis.onBeforeShow.fire();\r\n\r\n\t\tvar me = this;\r\n\t\tif ( ctx.txt ) { // dialog modal show\r\n\t\t\tvar btns = $( this.tmpl.button );\r\n\t\t\tif ( ctx.button && ctx.button.length ) {\r\n\t\t\t\tfor ( var i = 0, l = ctx.button.length; i < l; i++ ) {\r\n\t\t\t\t\tif ( this.tmpl[ ctx.button[ i ][ 0 ] ] ) {\r\n\t\t\t\t\t\tbtns.append( $( this.tmpl[ ctx.button[ i ][ 0 ] ] ).data( 'click', ( ctx.button[ i ][ 1 ] || function() { me.hide(); } ) ).click(function() {\r\n\t\t\t\t\t\t\t$( this ).data( 'click' ).call( me );\r\n\t\t\t\t\t\t}) );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else { // button 이 없을 경우 confirm 버튼 노출\r\n\t\t\t\tbtns.append( $( this.tmpl['confirm'] ).click(function() {\r\n\t\t\t\t\tme.hide();\r\n\t\t\t\t}) );\r\n\t\t\t}\r\n\r\n\t\t\tbtns.find( 'a' ).eq( 0 ).addClass( 'emphasis' );\r\n\r\n\t\t\tctx = this._dialog.html('').append( $( this.tmpl.dialogLayout( ( NP.Util.getTemplate( ctx.txt ) )( ctx.data ) ) ).append( btns ) );\r\n\t\t} else {\r\n\t\t\tctx.css('position', 'absolute');\r\n\t\t}\r\n\r\n\t\tif ( !this.ctx.length ) {\r\n\t\t\tthis.savedZIndex = this.optAll.zIndex + this.zIndexTerm;\r\n\t\t} else {\r\n\t\t\tthis._modal.css( 'zIndex', this.savedZIndex + this.zIndexTerm / 2 );\r\n\t\t\tthis.savedZIndex = this.savedZIndex + this.zIndexTerm;\r\n\t\t}\r\n\t\tthis.showModal();\r\n\r\n\t\tvar isRep = stack( this.ctx, ctx.css( 'zIndex', this.savedZIndex )[0] );\r\n\r\n\t\tsetCenter( this.ctx );\r\n\t\tctx.fadeIn( this.duration );\r\n\r\n\t\t!isRep && ctx.find('.js_close').click(function() {\r\n\t\t\tinstance.hide();\r\n\t\t});\r\n\r\n\t\t!this.isShow && NP.win.bind({\r\n\t\t\tresize : Modal.setCenter,\r\n\t\t\tkeydown : Modal.onKeydown\r\n\t\t});\r\n\r\n\t\tthis.onShow.fire();\r\n\r\n\t\tthis.isShow = !0;\r\n\t};\r\n\r\n\tModal.prototype.hide = function() {\r\n\t\tif ( this.ctx.length <= 1 ) {\r\n\t\t\tthis.clear();\r\n\t\t} else {\r\n\t\t\tthis.ctx.pop().hide().css( 'zIndex', '' ).find('.js_close').unbind();\r\n\t\t\tthis._modal.css( 'zIndex', this.savedZIndex = this.savedZIndex - ( this.zIndexTerm * 1.5 ) );\r\n\t\t}\r\n\r\n\t\tthis.onHide.fire();\r\n\t};\r\n\r\n\tModal.prototype.clear = function() {\r\n\t\t$( this.ctx ).each(function() {\r\n\t\t\tinstance.ctx.pop().hide().css( 'zIndex', '' ).find('.js_close').unbind();\r\n\t\t});\r\n\t\tthis._modal.hide().css( 'zIndex', this.optAll.zIndex );\r\n\r\n\t\tNP.win.unbind({\r\n\t\t\tresize : Modal.setCenter,\r\n\t\t\tkeydown : Modal.onKeydown\r\n\t\t});\r\n\r\n\t\tthis.isShow = !1;\r\n\t};\r\n\r\n\tModal.prototype.showModal = function() {\r\n\t\tthis._modal.css({\r\n\t\t\theight : $( document ).height()\r\n\t\t}).fadeIn( this.duration );\r\n\t};\r\n\r\n\tModal.prototype.tmpl = {\r\n\t\tdialogLayout : function( ctx ) {\r\n\t\t\treturn '
    닫기

    ' + ctx + '

    ';\r\n\t\t},\r\n\t\tbutton : '
    ',\r\n\t\tuse : '사용하기',\r\n\t\tconfirm : '확인',\r\n\t\thide : '숨기기',\r\n\t\tblocked : '차단하기',\r\n\t\tcancel : '취소',\r\n\t\t'delete' : '삭제',\r\n\t\tyes : '',\r\n\t\tno : '아니오'\r\n\t};\r\n\r\n\treturn {\r\n\t\tgetInstance : function( optAll ) {\r\n\t\t\tif ( !instance ) {\r\n\t\t\t\tinstance = new Modal( optAll );\r\n\t\t\t\tinstance.constructor = null;\r\n\t\t\t}\r\n\t\t\treturn instance;\r\n\t\t}\r\n\t};\r\n}( jQuery ));\r\n\r\nvar modal = NP.Modal.getInstance();\r\nmodal.onBeforeShow.add(function() {\r\n\tmProfile.isOn && mProfile.hide();\r\n\tmodal._modal.css( 'zIndex', modal.optAll.zIndex = modal.savedZIndex = NP.zIndex.get() );\r\n\tNP.zIndex['+']();\r\n});\r\nmodal.onHide.add( NP.zIndex['-'] );","// Modalless Layer\r\nNP.Modalless = (function( $ ) {\r\n\tvar setCenter = NP.ns( 'Util.setCenter' ),\r\n\t\tstack = NP.ns( 'Util.stack' ),\r\n\t\tinstance = 0;\r\n\r\n\tfunction Modalless() {\r\n\t\tthis.ctx = [];\r\n\t\tthis.isOn = !1;\r\n\r\n\t\tthis.onBeforeShow = $.Callbacks();\r\n\t\tthis.onShow = $.Callbacks();\r\n\t\tthis.onHide = $.Callbacks();\r\n\r\n\t\tModalless.evtBind.call( this );\r\n\t}\r\n\r\n\tModalless.evtBind = function() {\r\n\t\t$('.js_modalless').on('click', function( e ) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tvar layer = $( this ).data('layer');\r\n\t\t\tif ( !layer ) return;\r\n\r\n\t\t\tinstance.show( $( layer ) );\r\n\t\t});\r\n\t};\r\n\r\n\tModalless.setCenter = function() {\r\n\t\tsetCenter( instance.ctx );\r\n\t};\r\n\r\n\tModalless.prototype.show = function( ctx, isNotCenter ) {\r\n\t\tif ( !ctx || !ctx.length ) return;\r\n\r\n\t\tthis.onBeforeShow.fire( ctx );\r\n\r\n\t\tstack( this.ctx, ctx );\r\n\r\n\t\tctx.css({\r\n\t\t\tdisplay : 'none',\r\n\t\t\tright: 'auto',\r\n\t\t\tposition : 'absolute'\r\n\t\t}).appendTo('body').show().find('.js_close').bind('click', function() {\r\n\t\t\t$( this ).unbind();\r\n\t\t\tinstance.hide();\r\n\t\t});\r\n\r\n\t\tif( !isNotCenter ){ \r\n\t\t\tsetCenter( this.ctx );\r\n\r\n\t\t\t!this.isOn && $( window ).bind({\r\n\t\t\t\tresize : Modalless.setCenter\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tthis.onShow.fire();\r\n\t\tthis.isOn = !0;\r\n\t};\r\n\r\n\tModalless.prototype.hide = function() {\r\n\t\tvar ctx = this.ctx.pop().hide();\r\n\r\n\t\t$( window ).unbind({\r\n\t\t\tresize : Modalless.setCenter\r\n\t\t});\r\n\r\n\t\tthis.onHide.fire( ctx );\r\n\t\tthis.isOn = !1;\r\n\t};\r\n\r\n\treturn {\r\n\t\tgetInstance : function() {\r\n\t\t\tif ( !instance ) {\r\n\t\t\t\tinstance = new Modalless();\r\n\t\t\t\tinstance.constructor = null;\r\n\t\t\t}\r\n\t\t\treturn instance;\r\n\t\t}\r\n\t};\r\n}( jQuery ));\r\n\r\nvar modalless = NP.Modalless.getInstance();\r\nmodalless.onShow.add(function() {\r\n\tmProfile.isOn && mProfile.hide();\r\n});\r\nmodalless.onBeforeShow.add(function() {\r\n\tmodalless.isOn && modalless.hide();\r\n});\r\nmodalless.onBeforeShow.add( NP.zIndex['+'] );\r\nmodalless.onHide.add( NP.zIndex['-'] );\r\nmodalless.onHide.add(function() {\r\n\tNP.Like.resetLastNum();\r\n\tjQuery( '#modallessLikeList' ).remove();\r\n});\r\n","\r\n// 미니프로필 레이어\r\nNP.miniProfile = (function( $ ) {\r\n\tvar instance;\r\n\r\n\tfunction miniProfile( optAll ) {\r\n\t\tthis.optAll = $.extend({\r\n\t\t\ttime : 200,\r\n\t\t\tdelay : 300,\r\n\t\t\tduration : 80,\r\n\t\t\tgap : 3\r\n\t\t}, optAll || {});\r\n\r\n\t\t// layer outline 생성\r\n\t\t$( 'body' ).append( NP.template.miniProfileLayer( this.optAll.id.replace('#', '') ) );\r\n\r\n\t\tthis.isOn = this.onOver = false;\r\n\t\tthis.els = $( this.optAll.elClass );\r\n\t\tthis._flyout = $( this.optAll.id );\r\n\r\n\t\t// 마우스오버 영역 event binding\r\n\t\t$( 'body' ).on( 'mouseover', this.optAll.elClass, function() {\r\n\t\t\tinstance.show( $( this ) );\r\n\t\t}).on( 'mouseout', this.optAll.elClass, function() {\r\n\t\t\tinstance.hide( $( this ) );\r\n\t\t});\r\n\r\n\t\t// 미니프로필 영역 event binding\r\n\t\tthis._flyout.on( 'mouseenter', function() {\r\n\t\t\tclearTimeout( instance.ct );\r\n\t\t\tinstance.onOver = true;\r\n\t\t}).on ( 'mouseleave' , function() {\r\n\t\t\tinstance.hide();\r\n\t\t});\r\n\t}\r\n\r\n\tminiProfile.prototype.show = function( el ) {\r\n\t\tclearTimeout( instance.ct );\r\n\r\n\t\tinstance.ct = setTimeout(function() {\r\n\t\t\tif ( !instance.onOver ) return;\r\n\r\n\t\t\tclearTimeout( instance.ct );\r\n\t\t\tinstance.data( el );\r\n\r\n\t\t\tvar oH = instance._flyout.height(),\r\n\t\t\t\toW = instance._flyout.width(),\r\n\t\t\t\tw = $( window ),\r\n\t\t\t\to = el.offset(),\r\n\t\t\t\tt = w.scrollTop() + w.height() >= o.top + el.height() + oH + instance.optAll.gap;\r\n\r\n\t\t\tinstance._flyout.css({\r\n\t\t\t\tposition : 'absolute',\r\n\t\t\t\ttop : parseInt( o.top + ( t ? el.height() + instance.optAll.gap : -oH - instance.optAll.gap ) ),\r\n\t\t\t\tleft : parseInt( o.left )\r\n\t\t\t}).appendTo('body');\r\n\r\n\t\t\tinstance.isOn = true;\r\n\t\t}, instance.optAll.delay);\r\n\r\n\t\tinstance.onOver = true;\r\n\t};\r\n\r\n\tminiProfile.prototype.hide = function() {\r\n\t\tclearTimeout( instance.ct );\r\n\r\n\t\tinstance.ct = setTimeout(function() {\r\n\t\t\tif ( instance.isOn ) {\r\n\t\t\t\tinstance._flyout.hide();\r\n\t\t\t\tinstance.isOn = false;\r\n\t\t\t}\r\n\t\t}, instance.optAll.time);\r\n\r\n\t\tinstance.onOver = false;\r\n\t};\r\n\r\n\r\n\tminiProfile.prototype.data = function( el ) {\r\n\t\tvar data = el.data( 'np' );\r\n\r\n\t\tif ( !data ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfunction msg( code ) {\r\n\t\t\tvar txt;\r\n\t\t\tif ( code === '302' ) {\r\n\t\t\t\ttxt = '죄송합니다.
    로그인 후 다시 이용해 주세요.';\r\n\t\t\t} else {\r\n\t\t\t\ttxt = '에러가 발생하였습니다.
    잠시 후 이용해 주세요.';\r\n\t\t\t}\r\n\r\n\t\t\tinstance._flyout.find('.loading').fadeOut();\r\n\t\t\tinstance._flyout.find('.txt_error').html( txt ).show();\r\n\t\t}\r\n\r\n\t\tjQuery.ajax({\r\n\t\t\ttype : 'get',\r\n\t\t\turl : NP.prflUri( data.id ) + '/my/profile/miniProfile.jsonp',\r\n\t\t\tdataType : 'jsonp',\r\n\t\t\tbeforeSend : function() {\r\n\t\t\t\tNP.zIndex['+']( instance._flyout );\r\n\t\t\t\tinstance._flyout.find('.txt_error').hide();\r\n\t\t\t\tinstance._flyout.find('.loading').show();\r\n\t\t\t\tinstance._flyout.show();\r\n\t\t\t},\r\n\t\t\tsuccess : function( data, status ) {\r\n\t\t\t\tif ( data.systemException ) {\r\n\t\t\t\t\tmsg();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( data.miniProfile ) {\r\n\t\t\t\t\tvar layer = instance._flyout;\r\n\t\t\t\t\tlayer.find('.loading').fadeOut();\r\n\r\n\t\t\t\t\tlayer.find('.ly_miniProfile').remove();\r\n\r\n\t\t\t\t\t//생일\r\n\t\t\t\t\tvar birth = '';\r\n\t\t\t\t\tif ( data.miniProfile.profile.birthday ) {\r\n\t\t\t\t\t\tbirth = data.miniProfile.profile.birthday.split( '-' );\r\n\t\t\t\t\t\tbirth = birth[ 1 ].replace( /^0/, '' ) + '.' + birth[ 2 ].replace( /^0/, '' );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// 성별\r\n\t\t\t\t\tvar sex = '';\r\n\t\t\t\t\tif ( data.miniProfile.profile.sexOpenYn === 'Y' && data.miniProfile.profile.sexClfSeq !== 0 ) {\r\n\t\t\t\t\t\tif ( data.miniProfile.profile.sexClfSeq === 2 ) {\r\n\t\t\t\t\t\t\tsex = '(남)';\r\n\t\t\t\t\t\t} else if ( data.miniProfile.profile.sexClfSeq === 3 ) {\r\n\t\t\t\t\t\t\tsex = '(여)';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// 함께아는친구\r\n\t\t\t\t\tvar withFriendCount = 0,\r\n\t\t\t\t\t\twithFriend = [];\r\n\t\t\t\t\tif ( data.withFriend!=undefined ) {\r\n\t\t\t\t\t\twithFriendCount = data.withFriend.count;\r\n\t\t\t\t\t\twithFriend = data.withFriend.list.slice(0, 8);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// 친구 관계\r\n\t\t\t\t\tvar friendRelation = false;\r\n\t\t\t\t\tif ( data.miniProfile.friendReference && data.miniProfile.friendReference.receivedProposals[ 0 ] ) { // 받은 친구 신청\r\n\t\t\t\t\t\tfriendRelation = \"friendAccept\";\r\n\t\t\t\t\t} else if ( data.miniProfile.friendReference && data.miniProfile.friendReference.sentProposals[ 0 ] ) { // 보낸 친구 신청\r\n\t\t\t\t\t\tfriendRelation = \"sentProposals\";\r\n\t\t\t\t\t} else if ( data.miniProfile.friendReference.friendRelation === 'FRIEND' || data.miniProfile.friendReference.friendRelation === 'BLOCKED' || data.miniProfile.friendReference.friendRelation === 'BLOCKING' ) { // 친구\r\n\t\t\t\t\t\tfriendRelation = \"friend\";\r\n\t\t\t\t\t} else { // 친구신청\r\n\t\t\t\t\t\tfriendRelation = \"none\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// 구독 관계\r\n\t\t\t\t\tvar followRelation = false;\r\n\t\t\t\t\tif ( data.miniProfile.friendReference.followRelation === 'FOLLOWEE' || data.miniProfile.friendReference.followRelation === 'FOLLOWEE_FOLLOWER' ) {\r\n\t\t\t\t\t\tfollowRelation = \"following\";\r\n\t\t\t\t\t} else { // 친구신청\r\n\t\t\t\t\t\tfollowRelation = \"follow\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlayer.find('.loading').before(\r\n\t\t\t\t\t\tNP.template.miniProfileLayerCont({\r\n\t\t\t\t\t\t\tall : data,\r\n\t\t\t\t\t\t\tplayncAcctId : data.miniProfile.profile.playncAcctId,\r\n\t\t\t\t\t\t\tuserName : data.miniProfile.profile.userName,\r\n\t\t\t\t\t\t\tmobileUser : data.miniProfile.mobileUser,\r\n\t\t\t\t\t\t\tbirthday : birth,\r\n\t\t\t\t\t\t\tsex : sex,\r\n\t\t\t\t\t\t\tintro : data.miniProfile.profile.prflIntroTxt,\r\n\t\t\t\t\t\t\twithFriendCount : withFriendCount,\r\n\t\t\t\t\t\t\twithFriend : withFriend,\r\n\t\t\t\t\t\t\tfriendCount : data.miniProfile.friendCount,\r\n\t\t\t\t\t\t\tfriendRelation : friendRelation,\r\n\t\t\t\t\t\t\tfollowRelation : followRelation\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tlayer.fadeIn( instance.optAll.duration );\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn '';\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\terror : function() {\r\n\t\t\t\tmsg();\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\treturn {\r\n\t\tgetInstance : function( optAll ) {\r\n\t\t\tif ( !instance ) {\r\n\t\t\t\tinstance = new miniProfile( optAll );\r\n\t\t\t}\r\n\t\t\treturn instance;\r\n\t\t}\r\n\t};\r\n}( jQuery ));\r\n\r\n\r\nvar mProfile = NP.miniProfile.getInstance({\r\n\telClass : '.js_mProfile',\r\n\tid : '#flyoutMProfile'\r\n});","// 프로필 이미지 변경\r\njQuery( '.profilePhoto .btn_changePhoto, .thumb .btn_changePhoto, .wrap_intro .btn_changePhoto' ).click(function() {\r\n\r\n\tif( !NP.dt.v ){\r\n\t\talert( '로그인 해주시기 바랍니다.');\r\n\t\treturn;\r\n\t};\r\n\r\n\tif ( !profileImgUploadG ) {\r\n\t\tprofileImgUploadG = new nc.playinG.ImageUpload( document.body, {\r\n\t\t\tchannel: 'ProfileImage',\r\n\t\t\ttokenUrl: ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.v + '/' + ( !NP.isIntro ? NP.dt.st + '/photo' : 'bns/intro' ) + '/createToken.json',\r\n\t\t\tfileInfo: ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.v + '/' + ( !NP.isIntro ? NP.dt.st + '/photo' : '/bns/intro' ) + '/tokenfileinfo.json',\r\n\t\t\tremoveFileInfo: ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.v + '/' + ( !NP.isIntro ? NP.dt.st + '/photo' : '/bns/intro' ) + '/deleteFile.json',\r\n\t\t\tiframe: '/resources/jsp/editor/btnFileUpload.html',\r\n\t\t\teditFrame: '/resources/jsp/editor/FileModify.html',\r\n\t\t\tfilterImageUrl: '/resources/jsp/editor/symbol/',\r\n\t\t\t//thumbnailUrl: NP.FILESVR_URL + 'download_thumblarge/',\r\n\t\t\t//thumbnailUrl: NP.FILESVR_URL + 'download/',\r\n\t\t\tthumbnailUrl: NP.FILESVR_PROFILE_URL + 'download',\r\n\t\t\tmaxImages: 1,\r\n\t\t\tobjectName : 'profileImgUploadG',\r\n\t\t\tisUrlUpload: false,\r\n\t\t\tisProfileUpload: true,\r\n\t\t\tlocalFileEnable : true,\r\n\t\t\tonComplete : function() {\r\n\t\t\t\tvar images = profileImgUploadG.getImages()[ 0 ],\r\n\t\t\t\t\tdata = {\r\n\t\t\t\t\t\timgIds : [''],\r\n\t\t\t\t\t\timgUrl : images.fileUrl,\r\n\t\t\t\t\t\tchannel: 'ProfileImage',\r\n\t\t\t\t\t\tfileId: images.id,\r\n\t\t\t\t\t\ttoken : profileImgUploadG.getToken(),\r\n\t\t\t\t\t\tisProfileAlbum : !0\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tif ( NP.isIntro ) {\r\n\t\t\t\t\tjQuery( '#profilePhoto' ).attr( 'src', images.fileUrl );\r\n\t\t\t\t\tjQuery( '#profilePhoto' ).attr( 'data-file-id', images.id );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tjQuery.ajax({\r\n\t\t\t\t\t\ttype : 'post',\r\n\t\t\t\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.o + '/SNS/photo',\r\n\t\t\t\t\t\tdataType : 'json',\r\n\t\t\t\t\t\tdata : data,\r\n\t\t\t\t\t\t/*data : {\r\n\t\t\t\t\t\t\timgIds : !NP.isIntro ? '' : images.id ? [ images.id ] : [ images.fileUrl ], // intro 에서는 안넘기자\r\n\t\t\t\t\t\t\t//imgUrl : images.id ? '' : images.fileUrl,\r\n\t\t\t\t\t\t\timgUrl : images.fileUrl,\r\n\t\t\t\t\t\t\ttoken : profileImgUploadG.getToken(),\r\n\t\t\t\t\t\t\tisProfileAlbum : !0\r\n\t\t\t\t\t\t},*/\r\n\t\t\t\t\t\tsuccess : function( data ) {\r\n\t\t\t\t\t\t\twindow.location.reload();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\tprofileImgUploadG.init();\r\n\t\tprofileImgUploadG.showNewToken();\r\n\t}\r\n\treturn false;\r\n});\r\n\r\n// SelectBox\r\nfunction selectbox( pane ){\r\n\tjQuery((pane?pane:\"\") + ' .js_select').not('.done').each(function(){\r\n\t\tjQuery(this).addClass('done');\r\n\t\tvar options = {\r\n\t\t\tjsSelect\t:\tjQuery(this),\r\n\t\t\tjsSelected\t:\tjQuery(this).find('.js_selected:not(.notSelected)',0),\r\n\t\t\tjsSelector\t:\tjQuery(this).find('.js_selector',0),\r\n\t\t\tchkInput\t:\tjQuery(this).find(':radio:checked'),\r\n\t\t\tchkLabel\t:\tjQuery(this).find(':radio:checked').parent()\r\n\t\t};\r\n\r\n\t\t//box viewer\r\n\t\toptions.jsSelected.bind('click', function(){\r\n\t\t\tlayerManaged.toggle(jQuery(this), options.jsSelector);\r\n\t\t\tNP.zIndex['+'](options.jsSelect);\r\n\t\t});\r\n\r\n\t\t//onchange && click\r\n\t\toptions.jsSelector.find(':radio').bind('click', function(e){\r\n\t\t\toptions.chkInput = jQuery(e.target);\r\n\t\t\toptions.chkLabel = jQuery(e.target).parent();\r\n\t\t\tdoSelect();\r\n\t\t});\r\n\r\n\t\t//선택했을때\r\n\t\tvar doSelect = function(){\r\n\t\t\toptions.jsSelect.find('label').removeClass('checked');\r\n\t\t\t//label에 text가 있으면 jsSelected에 넣어줌\r\n\t\t\tif(options.chkInput.html()!=null){\r\n\t\t\t\toptions.chkLabel.addClass('checked');\r\n\t\t\t\toptions.jsSelected.html( options.chkLabel.html() ).find('input').remove();\r\n\t\t\t}\r\n\t\t\toptions.jsSelector.hide();\r\n\t\t}\r\n\r\n\t\t//checked된 input이 없을 경우 첫번째 input에 checked\r\n\t\tif(!options.chkInput.is(':checked')){\r\n\t\t\toptions.chkInput = options.jsSelector.find(':radio').eq(0);\r\n\t\t\toptions.chkLabel = options.chkInput.parent();\r\n\t\t}\r\n\t\tdoSelect();\r\n\t});\r\n}\r\nselectbox();\r\n\r\nfunction selectedBox( pane, charId, serverId, isOne, isGroup ){\r\n\r\n\tvar idx = 0;\r\n\tjQuery((pane? pane: '' ) + ' .js_select').each(function(){\r\n\t\tif( !jQuery(this).hasClass( 'selectSetChar' ) || isOne ){\r\n\t\t\tvar options = {\r\n\t\t\t\tjsSelect\t:\tjQuery(this),\r\n\t\t\t\tjsSelected\t:\tjQuery(this).find('.js_selected',0),\r\n\t\t\t\tjsSelector\t:\tjQuery(this).find('.js_selector',0),\r\n\t\t\t\tchkInput\t:\tjQuery(this).find(':radio:checked'),\r\n\t\t\t\tchkLabel\t:\tjQuery(this).find(':radio:checked').parent()\r\n\t\t\t};\r\n\r\n\t\t\tif( !isGroup ){\r\n\t\t\t\toptions.chkInput = jQuery( 'input[data-chrtid=' + charId + '][data-svrid=' + serverId + ']' );\r\n\t\t\t\t//options.chkInput = options.jsSelect.find( 'input[data-chrtid=' + charId + '][data-svrid=' + serverId + ']' );\r\n\t\t\t}else{\r\n\t\t\t\toptions.chkInput = options.jsSelect.find( 'input[value!=0]' ).eq(0);\r\n\t\t\t}\r\n\r\n\t\t\tif( options.chkInput ){\r\n\r\n\t\t\t\tjQuery(this).find( ':radio:checked' ).prop( 'checked', false );\r\n\r\n\t\t\t\toptions.chkInput.prop( 'checked', true );\r\n\t\t\t\toptions.chkLabel = options.chkInput.parent();\r\n\r\n\t\t\t\toptions.chkLabel.addClass('checked');\r\n\t\t\t\toptions.jsSelected.html( options.chkLabel.html() ).find('input').remove();\r\n\r\n\t\t\t\tif( !options.chkInput.is(':checked') ){\r\n\t\t\t\t\toptions.chkInput = options.jsSelector.find(':radio').eq(0);\r\n\t\t\t\t\toptions.chkLabel = options.chkInput.parent();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tvar selectSetChar = jQuery( '#writeShort .selectSetChar' ),\r\n\t\tchkInput = selectSetChar.find( 'input[value!=0]' ),\r\n\t\tchkLabel, selectedTxt = selectSetChar.find( '.js_selected' );\r\n\r\n\tif( chkInput.length == 1 ){\r\n\t\tchkLabel = chkInput.parent();\r\n\t\tselectSetChar.find( ':radio:checked' ).prop( 'checked', false );\r\n\t\tchkInput.prop( 'checked', true );\r\n\t\tchkLabel.addClass( 'checked' );\r\n\t\tselectedTxt.html( chkLabel.html() ).find( 'input' ).remove();\r\n\t}\r\n};\r\n\r\nfunction changeConnectButton( me, state ) {\r\n\tjQuery( me ).removeClass( 'ing cancel complete confirm gray1 gray2 gray3 bluish1 bluish2 bluish3' );\r\n\tif ( state === '친구신청' ) {\r\n\t\tjQuery( me ).addClass( 'bluish1' ).attr( 'data-current', '0' );\r\n\t} else if ( state === '친구신청중' ) {\r\n\t\tjQuery( me ).addClass( 'gray2' ).attr( 'data-current', '1' );\r\n\t} else if ( state === '신청취소' ) {\r\n\t\tjQuery( me ).addClass( 'bluish3' );\r\n\t} else if ( state === '친구신청수락' ) {\r\n\t\tjQuery( me ).addClass( 'bluish3' );\r\n\t} else if ( state === '친구' ) {\r\n\t\tjQuery( me ).addClass( 'bluish2' ).attr( 'data-current', '2' );\r\n\t} else if ( state === '구독' ) {\r\n\t\tjQuery( me ).attr( 'data-current', '0' );\r\n\t} else if ( state === '구독취소' ) {\r\n\t\tjQuery( me ).addClass( 'cancel' );\r\n\t} else if ( state === '구독중' ) {\r\n\t\tjQuery( me ).addClass( 'complete' ).attr( 'data-current', '1' );\r\n\t}\r\n\tjQuery( me ).text( state );\r\n}\r\nNP.body.on( 'mouseover', '.js_btnFollow', function() {\r\n\tif ( jQuery( this ).attr( 'data-current' ) === '1' ) {\r\n\t\tchangeConnectButton( this, '구독취소' );\r\n\t}\r\n}).on( 'mouseout', '.js_btnFollow', function() {\r\n\tif ( jQuery( this ).attr( 'data-current' ) === '1' && !jQuery( this ).hasClass( 'unfollow' ) ) {\r\n\t\tchangeConnectButton( this, '구독중' );\r\n\t}\r\n}).on( 'mouseover', '.js_btnFriend', function() {\r\n\tif ( jQuery( this ).attr( 'data-current' ) === '1' ) {\r\n\t\tchangeConnectButton( this, '신청취소' );\r\n\t}\r\n}).on( 'mouseout', '.js_btnFriend', function() {\r\n\tif( jQuery( this ).attr( 'data-current' ) === '1' ) {\r\n\t\tchangeConnectButton( this, '친구신청중' );\r\n\t}\r\n});\r\n/* function changeConnectButton( me, state ) {\r\n\t$( me ).removeClass( 'ing cancel complete confirm gray1 gray2 gray3 bluish1 bluish2 bluish3' );\r\n\tif ( state === '친구신청' ) {\r\n\t\t$( me ).addClass( 'bluish1' ).attr( 'data-current', '0' );\r\n\t} else if ( state === '친구신청중' ) {\r\n\t\t$( me ).addClass( 'gray2' ).attr( 'data-current', '1' );\r\n\t} else if ( state === '친구신청취소' ) {\r\n\t\t$( me ).addClass( 'bluish3' );\r\n\t} else if ( state === '친구신청수락' ) {\r\n\t\t$( me ).addClass( 'bluish3' );\r\n\t} else if ( state === '친구' ) {\r\n\t\t$( me ).addClass( 'bluish2' ).attr( 'data-current', '2' );\r\n\t} else if ( state === '팔로우' ) {\r\n\t\t$( me ).attr( 'data-current', '0' );\r\n\t} else if ( state === '팔로우 취소' ) {\r\n\t\t$( me ).addClass( 'cancel' );\r\n\t} else if ( state === '팔로잉' ) {\r\n\t\t$( me ).addClass( 'complete' ).attr( 'data-current', '1' );\r\n\t}\r\n\t$( me ).text( state );\r\n}\r\nNP.body.on( 'mouseover', '.js_btnFollow', function() {\r\n\tif ( $( this ).attr( 'data-current' ) === '1' ) {\r\n\t\tchangeConnectButton( this, '팔로우 취소' );\r\n\t}\r\n}).on( 'mouseout', '.js_btnFollow', function() {\r\n\tif ( $( this ).attr( 'data-current' ) === '1' && !$( this ).hasClass( 'unfollow' ) ) {\r\n\t\tchangeConnectButton( this, '팔로잉' );\r\n\t}\r\n}).on( 'mouseover', '.js_btnFriend', function() {\r\n\tif ( $( this ).attr( 'data-current' ) === '1' ) {\r\n\t\tchangeConnectButton( this, '친구신청취소' );\r\n\t}\r\n}).on( 'mouseout', '.js_btnFriend', function() {\r\n\tif( $( this ).attr( 'data-current' ) === '1' ) {\r\n\t\tchangeConnectButton( this, '친구신청중' );\r\n\t}\r\n}); */\r\n\r\n\r\n//Left 친구/구독중/구독\r\nvar myConnectList = (function($){\r\n\tvar _h2 = $('#myConnectList h2');\r\n\tvar _ul = $('#myConnectList ul');\r\n\r\n\t_h2.find('a').mouseenter(function(){\r\n\t\t_show( this );\r\n\t});\r\n\t$('#myConnectList').mouseleave(function(){\r\n\t\t_show( _h2.find('a.on')[0] );\r\n\t});\r\n\r\n\tfunction _show( showing ){\r\n\t\tif( !showing ) showing = _h2.find('a')[0];\r\n\r\n\t\tif( !$(showing).hasClass('hover') ){\r\n\t\t\t_h2.find('a').removeClass('hover');\r\n\t\t\t_ul.hide();\r\n\r\n\t\t\t$(showing).addClass('hover');\r\n\t\t\t$(showing).parent().next().show();\r\n\t\t}\r\n\t}\r\n\r\n\t_show( _h2.find('a.on')[0] );\r\n}(jQuery));\r\n\r\n\r\n// 랜덤 프로필\r\njQuery(function() {\r\n\tvar photo = jQuery( '#profilePhoto' ),\r\n\t\tbackup = photo.attr( 'src' );\r\n\r\n\tjQuery( 'button.setting' ).click(function() {\r\n\t\tvar v = randomProfileData[ NP.random.get( randomProfileData.length ) ];\r\n\t\tphoto.attr({ src : NP.RESOURCE_URL + v.url, alt : v.alt });\r\n\t\t$( '#prflIntroTxt' ).val('').attr( 'placeholder', v.intro );\r\n\t\tNP.Placeholder.set( $('#inputProfile') );\r\n\t});\r\n\tjQuery( '.chooseThumb button.reload' ).click(function() {\r\n\t\tvar v = randomProfileData[ NP.random.get( randomProfileData.length ) ];\r\n\t\tphoto.attr({ src : NP.RESOURCE_URL + v.url, alt : v.alt });\r\n\t});\r\n\r\n\tjQuery( '.chooseThumb button.back' ).click(function() {\r\n\t\tphoto.attr({ src : backup, alt : '' });\r\n\t});\r\n\tjQuery( '#inputProfile dd .random' ).click(function() {\r\n\t\tjQuery( '#prflIntroTxt' ).val('').attr( 'placeholder', randomProfileData[ NP.random.get( randomProfileData.length ) ].intro );\r\n\t\tNP.Placeholder.set( jQuery('#inputProfile') );\r\n\t});\r\n});\r\n\r\n\r\n\r\nvar layerManaged = (function($){\r\n\tvar _ShowLayers = '';\r\n\r\n\t$(document).click(function(e){\r\n\t\tif( $(e.target).is(_ShowLayers[0]) ) return;\r\n\t\tif( $(_ShowLayers[0]).has($(e.target)).length ) return;\r\n\t\tif( $(_ShowLayers[1]).has($(e.target)).length ) return;\r\n\t\tlayerManaged.hide();\r\n\t});\r\n\r\n\treturn {\r\n\t\ttoggle : function(button, layer){\r\n\t\t\tif( layer.css('display')!='none' && button.is(_ShowLayers[0]) ) layerManaged.hide();\r\n\t\t\telse layerManaged.show(button, layer);\r\n\t\t},\r\n\t\tshow : function(button, layer){\r\n\t\t\tif( !button.is(_ShowLayers[0]) ) layerManaged.hide();\r\n\t\t\t_ShowLayers = [button, layer];\r\n\t\t\tNP.zIndex['+'](layer);\r\n\t\t\tbutton.addClass('on');\r\n\t\t\tlayer.show();\r\n\t\t},\r\n\t\thide : function() {\r\n\t\t\tif(_ShowLayers){\r\n\t\t\t\tNP.zIndex['-'](_ShowLayers[1]);\r\n\t\t\t\tNP.zIndex['-'](_ShowLayers[1].parent()); //IE7처리\r\n\t\t\t\t_ShowLayers[0].removeClass('on');\r\n\t\t\t\t_ShowLayers[1].hide();\r\n\t\t\t\t_ShowLayers = '';\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}(jQuery));\r\n\r\nvar layerManagedV2 = (function($){\r\n\tvar _ShowLayers = '';\r\n\r\n\t$(document).click(function(e){\r\n\t\tif( $(e.target).is(_ShowLayers[0]) ) return;\r\n\t\tif( $(_ShowLayers[0]).has($(e.target)).length ) return;\r\n\t\tif( $(_ShowLayers[1]).has($(e.target)).length ) return;\r\n\t\tlayerManagedV2.hide();\r\n\t});\r\n\r\n\treturn {\r\n\t\ttoggle : function(button, layer, fn){\r\n\t\t\tif( layer.css('display')!='none' && button.is(_ShowLayers[0]) ) layerManagedV2.hide();\r\n\t\t\telse layerManagedV2.show(button, layer, fn);\r\n\t\t},\r\n\t\tshow : function(button, layer, fn){\r\n\t\t\tif( !button.is(_ShowLayers[0]) ) layerManagedV2.hide();\r\n\t\t\t_ShowLayers = [button, layer, fn];\r\n\r\n\t\t\tif( layer.parent() != $('body') ){\r\n\t\t\t\tlayer.css('display', 'block');\r\n\t\t\t\tvar width = layer.width();\r\n\t\t\t\tvar o = layer.offset();\r\n\t\t\t\tlayer.css({\r\n\t\t\t\t\t'position' : 'absolute',\r\n\t\t\t\t\t'left' : o.left,\r\n\t\t\t\t\t'top' : o.top,\r\n\t\t\t\t\t'width' : width\r\n\t\t\t\t}).appendTo( $('body') );\r\n\t\t\t}\r\n\t\t\tNP.zIndex['+'](layer);\r\n\t\t\t//layer.slideDown();\r\n\t\t\tbutton.addClass('on');\r\n\t\t\tlayer.show();\r\n\r\n\t\t\tif ( fn ) {\r\n\t\t\t\tfn(button, layer);\r\n\t\t\t}\r\n\t\t},\r\n\t\thide : function() {\r\n\t\t\tif(_ShowLayers){\r\n\t\t\t\tNP.zIndex['-'](_ShowLayers[1]);\r\n\t\t\t\t_ShowLayers[0].removeClass('on');\r\n\t\t\t\t_ShowLayers[1].hide();\r\n\t\t\t\t//_ShowLayers[1].slideUp();\r\n\r\n\t\t\t\tif ( _ShowLayers[2] ) {\r\n\t\t\t\t\t_ShowLayers[2](_ShowLayers[0], _ShowLayers[1]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t_ShowLayers = '';\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}(jQuery));\r\n\r\n//추천 친구 관계 더보기\r\njQuery('#container').on('click', '.js_moreConnect', function() {\r\n\tif( !jQuery(this).data('ctrled') ) {\r\n\t\tjQuery(this).data('ctrled', jQuery(this).next() );\r\n\t}\r\n\r\n\tlayerManagedV2.toggle( jQuery(this) , jQuery(this).data('ctrled') );\r\n});\r\n\r\nvar tagInputCtrl = (function($) {\r\n\tfunction tagInputCtrl(options){\r\n\t\tthis.options = options;\r\n\t\tthis.hiddenWrapperData = [];//현재 hidden값\r\n\t\tthis.load();\r\n\t\tthis.evtBind();\r\n\t}\r\n\r\n\r\n\ttagInputCtrl.prototype.load = function() {\r\n\t\tvar i=0;\r\n\r\n\t\twhile(this.hidden(i).length){\r\n\t\t\tthis.hiddenWrapperData[i] = this.hidden(i);\r\n\t\t\ti++;\r\n\t\t};\r\n\t\tthis.output();\r\n\t};\r\n\t//현재 hidden값을 배열로 돌려줌\r\n\ttagInputCtrl.prototype.hidden = function(index) {\r\n\t\tfor(var j=0, c=[], l=this.options.hiddenInput.length; j삭제';\r\n\r\n\t\t\tfor(var i=0, l=this.options.hiddenInput.length; i';\r\n\t\t\t}\r\n\t\t}\r\n\t\tviewWrapperDom.append( viewWrapperDomHtml );\r\n\t\tthis.options.hiddenWrapper.append( hiddenWrapperHtml );\r\n\t};\r\n\ttagInputCtrl.prototype.add = function(seq, keyword, input) {\r\n\t\tif(!seq) seq = 0;\r\n\r\n\t\tvar v = $.trim(input.val());\r\n\t\t//빈값chk\r\n\t\tif(!v.length) {\r\n\t\t\tinput.blur();\r\n\t\t\tmodal.show({\r\n\t\t\t\ttxt : '값을 입력해 주세요.',\r\n\t\t\t\tbutton : [[ 'confirm', function() {\r\n\t\t\t\t\tthis.hide();\r\n\t\t\t\t\tinput.focus();\r\n\t\t\t\t}]]\r\n\t\t\t});\r\n\t\t\tinput.val('');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//중복chk\r\n\t\tfor(var i=0 ; i' +( suggestion ? data[ 0 ].replace( suggestion, '' + suggestion + '' ) : data[ 0 ] ) + '';\r\n// \t\treturn '\"'+suggestion+'\"' +( suggestion ? data[ 0 ].replace( suggestion, '' + suggestion + '' ) : data[ 0 ] );\r\n// \t},\r\n// \tparam : { // Parameter\r\n// \t\tsite : 'sandbox' // siteFlag\r\n// \t\t//display : 10, // 검색 결과 수( 전방/중간/후방 각각 ) Default : 10\r\n// \t}\r\n// });\r\n// }\r\n\r\nfunction guideBalloon( no ) {\r\n\tif( getCookie('sandboxGuide')=='0' || NP.dt.st=='my' || NP.dt.loc!='wall' ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar balloon, o;\r\n\tno = ( !no && getCookie('sandboxGuide') ) ? getCookie('sandboxGuide') : '1';\r\n\tshow( no );\r\n\r\n\tfunction show( no ) {\r\n\t\tif( !no ) return;\r\n\t\tif( no=='1' && jQuery('.wrap_whoami .edit').length ) {\r\n\t\t\tballoon = jQuery('').css({\r\n\t\t\t\t'position' : 'absolute',\r\n\t\t\t\t'top' : '15px',\r\n\t\t\t\t'left' : '-8px'\r\n\t\t\t}).appendTo( jQuery('.wrap_whoami .edit').eq(0) );\r\n\t\t} else if ( no=='2' && jQuery('.menu_navigation').length ) {\r\n\t\t\tballoon = jQuery('').css({\r\n\t\t\t\t'position' : 'absolute',\r\n\t\t\t\t'top' : '51px',\r\n\t\t\t\t'left' : '20px'\r\n\t\t\t}).appendTo( jQuery('.menu_navigation').eq(0) );\r\n\t\t} else if ( no=='3' && jQuery('.wrap_editorShort .textarea').length ) {\r\n\t\t\tballoon = jQuery('').css({\r\n\t\t\t\t'position' : 'absolute',\r\n\t\t\t\t'top' : '35px',\r\n\t\t\t\t'left' : '522px'\r\n\t\t\t}).appendTo( jQuery('.wrap_editorShort .textarea').eq(0) );\r\n\r\n\t\t\tjQuery('.wrap_editorShort .textarea').eq(0).click(function(e){\r\n\t\t\t\thide();\r\n\t\t\t});\r\n\t\t} else if ( no=='4' && jQuery('.wrap_doYouKnow > ul > li').length ) {\r\n\t\t\tballoon = jQuery('').css({\r\n\t\t\t\t'position' : 'absolute',\r\n\t\t\t\t'top' : '47px',\r\n\t\t\t\t'left' : '2px'\r\n\t\t\t}).appendTo( jQuery('.wrap_doYouKnow > ul > li:last') );\r\n\t\t} else {\r\n\t\t\tsetCookie( 'sandboxGuide', '0', 1000);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetCookie( 'sandboxGuide', no, 1000);\r\n\r\n\t\to = balloon.offset();\r\n\t\tNP.zIndex['+'](balloon);\r\n\r\n\t\tballoon.css({\r\n\t\t\t'position' : 'absolute',\r\n\t\t\t'left' : o.left,\r\n\t\t\t'top' : o.top + 15,\r\n\t\t\t'opacity' : '0.25'\r\n\t\t}).prependTo( jQuery('body') ).animate({\r\n\t\t\t'top' : o.top,\r\n\t\t\t'opacity' : 1\r\n\t\t}, 400);\r\n\r\n\r\n\t\tballoon.find('a').click(function() {\r\n\t\t\thide();\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tshow( Number(no)+1 );\r\n\t\t\t}, 650);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction hide() {\r\n\t\tballoon.animate({\r\n\t\t\t'top' : o.top + 20,\r\n\t\t\t'opacity' : 0\r\n\t\t}, 600, function() {\r\n\t\t\tballoon.remove();\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getCookie( name ){\r\n\t\tvar nameOfCookie = name + \"=\";\r\n\t\tvar endOfCookie, y, x = 0;\r\n\t\twhile ( x <= document.cookie.length ) {\r\n\t\t\ty = (x+nameOfCookie.length);\r\n\t\t\tif ( document.cookie.substring( x, y ) == nameOfCookie ) {\r\n\t\t\t\tif ( (endOfCookie=document.cookie.indexOf( \";\", y )) == -1 )\r\n\t\t\t\t\tendOfCookie = document.cookie.length;\r\n\t\t\t\t\treturn unescape( document.cookie.substring( y, endOfCookie ) );\r\n\t\t\t}\r\n\t\t\tx = document.cookie.indexOf( \" \", x ) + 1;\r\n\t\t\tif ( x == 0 )\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tfunction setCookie( name, value, expiredays ){\r\n\t\tvar todayDate = new Date();\r\n\t\ttodayDate.setDate( todayDate.getDate() + expiredays );\r\n\t\tdocument.cookie = name + \"=\" + escape( value ) + \"; path=/; expires=\" + todayDate.toGMTString() + \";\"\r\n\t }\r\n}\r\n\r\n// After DOM Loaded\r\njQuery(function() {\r\n\tNP.isIntro = NP.dt.page === '' && NP.dt.loc === '' && location.href.indexOf( '/intro' ) > 0 ? !0 : !1;\r\n\tNP.onDomLoad.fire();\r\n\tNP.WriteForm && NP.WriteForm.textarea.length && guideBalloon();\r\n});\r\n\r\n// Position Fixed\r\n(function() {\r\n\tvar aside = jQuery( '.wrap_right' );\r\n\r\n\tif ( aside.length ) {\r\n\t\tvar offset = $('#contents').offset(),\r\n\t\t\ttop = offset.top;\r\n\r\n\t\tjQuery( window ).scroll(function() {\r\n\t\t\tif( top < jQuery( this ).scrollTop() ) {\r\n\t\t\t\taside.addClass('js_posFixed');\r\n\t\t\t} else {\r\n\t\t\t\taside.removeClass('js_posFixed');\r\n\t\t\t}\r\n\t\t\t/*\r\n\t\t\tif( top < jQuery( this ).scrollTop() ) {\r\n\t\t\t\taside.css({\r\n\t\t\t\t\t'position' : 'fixed',\r\n\t\t\t\t\t'top' : '0',\r\n\t\t\t\t\t'left' : '50%',\r\n\t\t\t\t\t'marginLeft' : '330px'\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\taside.css({\r\n\t\t\t\t\t'position' : 'static',\r\n\t\t\t\t\t'marginLeft' : ''\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t*/\r\n\t\t});\r\n\t}\r\n\r\n\tvar sTop = jQuery( '.scrollTop' );\r\n\r\n\tif ( sTop.length ) {\r\n\r\n\t\tfunction scrollTop(){\r\n\t\t\tif( jQuery(window).scrollTop() > jQuery('body').outerHeight() - jQuery(window).height() - jQuery('#footer, .footerWrap, footer.footer').outerHeight() ){\r\n\t\t\t\tjQuery('.scrollTop').addClass('sTopAbsolute' );\r\n\t\t\t} else {\r\n\t\t\t\tjQuery('.scrollTop').removeClass('sTopAbsolute');\r\n\t\t\t}\r\n\t\t}\r\n\t\tscrollTop();\r\n\r\n\t\tjQuery( window ).scroll(function() {\r\n\t\t\tscrollTop();\r\n\t\t});\r\n\t}\r\n\r\n}());\r\nNP.contents.find( '.list_friends' ).on( 'mouseleave', 'li', function() {\r\n\tjQuery(this).find('.context').hide();\r\n});","// Like/Reply Button\r\nNP.Button = (function( $ ) {\r\n\tvar tplParser = NP.ns( 'Util.tplParser' );\r\n\r\n\tNP.timeline.on( 'mouseenter', '.wrap_feed li', function() {\r\n\t\t$( this ).find( 'a' ).show();\r\n\t});\r\n\tNP.timeline.on( 'mouseleave', '.wrap_feed li', function() {\r\n\t\t$( this ).find( 'a' ).hide();\r\n\t});\r\n\r\n\treturn {\r\n\t\tsetUI : function( article ) {\r\n\t\t\tif ( article.orgActType === 'LIKE_POST' || ( article.hasLike === 'Y' && article.hasReply === 'Y' ) ) {\r\n\t\t\t\treturn ( tplParser( NP.tmpl.button ) )( article );\r\n\t\t\t}\r\n\r\n\t\t\treturn '';\r\n\t\t},\r\n\t\tmProfile : function( data ) {\r\n\t\t\tvar data = data.miniProfile;\r\n\t\t\tvar html = '';\r\n\r\n\t\t\tif ( NP.dt.v !== '' && NP.dt.v === data.profile.playncAcctId ) {\r\n\t\t\t\t// REPAIR - 20150812. '/$!/my/profile/modify' -> '/my/profile/modify'\r\n\t\t\t\thtml = '프로필 수정';\r\n\t\t\t} else {\r\n\t\t\t\tif ( data.friendReference && data.friendReference.receivedProposals[ 0 ] ) { // 받은 NC친구 신청\r\n\t\t\t\t\tvar _data = data.friendReference.receivedProposals[ 0 ];\r\n\t\t\t\t\tif (_data.privacy_relationship == \"deny\" || _data.privacy_relationship == \"denyby\" || _data.privacy_relationship == \"deny,denyby\") {\r\n\t\t\t\t\t\thtml += 'NC친구신청수락 ';\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\thtml += 'NC친구신청수락 ';\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if ( data.friendReference && data.friendReference.sentProposals[ 0 ] ) { // 보낸 NC친구 신청\r\n\t\t\t\t\thtml += 'NC친구신청중 ';\r\n\t\t\t\t} else if ( data.friendReference.friendRelation === 'FRIEND' || data.friendReference.friendRelation === 'BLOCKED' || data.friendReference.friendRelation === 'BLOCKING' ) { // NC친구\r\n\t\t\t\t\thtml += 'NC친구 ';\r\n\t\t\t\t} else { // NC친구신청\r\n\t\t\t\t\tif (data.friendReference.privacyRelationship == \"deny\") {\r\n\t\t\t\t\t\thtml += 'NC친구신청 ';\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\thtml += 'NC친구신청 ';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( data.friendReference.followRelation === 'FOLLOWEE' || data.friendReference.followRelation === 'FOLLOWEE_FOLLOWER' ) {\r\n\t\t\t\t\thtml += '구독중';\r\n\t\t\t\t} else {\r\n\t\t\t\t\thtml += '구독';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn html;\r\n\t\t}\r\n\t};\r\n}( jQuery ));\r\n","NP.WriteShort = (function( $ ) {\r\n\tvar writeShort = {},\r\n\t\twriteWrap = $( '#writeShort' ),\r\n\t\teditorShort = writeWrap.find( '.wrap_editorShort' ),\r\n\t\twelcome = editorShort.find( '.welcome span' );\r\n\r\n\tif( !writeWrap.length ){\r\n\t\treturn;\r\n\t};\r\n\t\r\n\tvar setPlaceHolderTxt = function(){\r\n\t\tvar s = '';\r\n\r\n\t\tif( NP.dt.page === 'group' ){\r\n\t\t\ts = '우리들만의 이야기를 나눠보세요.';\r\n\t\t}else if( NP.dt.page === 'groupguestbook' ){\r\n\t\t\t//s = '[' + NP.dt.gNm + '] 레기온에 반가운 이야기를 남겨보세요.';\r\n\t\t\ts = '반가운 이야기를 남겨보세요.';\r\n\t\t}else if( NP.dt.page === 'characterguestbook' ){\r\n\t\t\t//s = '[' + NP.dt.oNm + ']님에게 반가운 이야기를 남겨보세요.';\r\n\t\t\ts = '반가운 이야기를 남겨보세요.';\r\n\t\t}else if( NP.dt.page === 'wall' ){\r\n\t\t\ts = '반가운 이야기를 남겨보세요.';\r\n\t\t}else if( NP.dt.page === 'timeline' ){\r\n\t\t\ts = '오늘은 어떤 이야기를 나누실래요?';\r\n\t\t}\r\n\r\n\t\treturn s;\r\n\t};\r\n\t\r\n\tvar setPlaceHolder = function(){\r\n\t\t$( '#writeShort' ).find( '.welcome span' ).html( setPlaceHolderTxt() );\r\n\t};\r\n\t\r\n\tNP.onAfterTimelineLoad.add(function() {\r\n\t\tsetPlaceHolder();\r\n\t});\t\r\n\t\r\n\t\r\n\t//이미 editor가 붙어 있는 경우\r\n\tif( writeWrap.find( '.wrap_editorShort' ).length ){\r\n\t\treturn;\r\n\t};\r\n\t\r\n\twelcome.html( '' );\r\n\twriteWrap.append( NP.tmpl.writeShort );\r\n\r\n\treturn writeShort;\r\n}( jQuery ));","// Friend List\r\nNP.Friend = (function( $ ) {\r\n\r\n\t// layer outline 생성\r\n\tvar layer = $(NP.template.withFriendLayer()).appendTo( 'body' );\r\n\r\n\tNP.body.on( 'click', '#flyoutMProfile .count a, .list_friends dd.together .count a, .wrap_listFriend h5 a[data-np], #rightAside .connect a[data-np]', function() {\r\n\t\tvar elData = $( this ).data( 'np' );\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype : 'get',\r\n\t\t\turl : NP.prflUri( NP.dt.v ) + '/my/friend/' + elData.id + '/list/withfriend.jsonp',\r\n\t\t\tdataType : 'jsonp',\r\n\t\t\tsuccess : function( data ) {\r\n\t\t\t\tif ( data.result ) {\r\n\t\t\t\t\t// 닉네임 전달\r\n\t\t\t\t\tvar nickname = (elData.nm.length <= 6) ? elData.nm : elData.nm.substring(0, 6) + '...';\r\n\r\n\t\t\t\t\tlayer.find( '.wrap_together' ).html(\r\n\t\t\t\t\t\tNP.template.withFriendLayerCont({\r\n\t\t\t\t\t\t\tuserName : nickname,\r\n\t\t\t\t\t\t\twithFriend : data.result\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tmodalless.show( layer );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn false;\r\n\t});\r\n}( jQuery ));\r\n","// Like Button\r\nNP.Like = (function( $ ) {\r\n\tvar getParam = NP.ns( 'Util.getParam' ),\r\n\t\tgetGUID = NP.ns( 'Util.getGUID' ),\r\n\t\tlastNum,\r\n\t\ttargetData,\r\n\t\ttargetType,\r\n\t\tscroll;\r\n\r\n// TODO tmpl 에 옮겨야지\r\n\t\tvar template = '
    \\\r\n
    좋아요 한 사람들 (#{=it.selector.totalCnt}#명)
    닫기
    \\\r\n
      ';\r\n\t\tvar templateInner = '
    • \\\r\n\"#{=it.crePlayncAcctNm}#\" \\\r\n#{=it.crePlayncAcctNm}#
    • ';\r\n\t\tvar templateInnerAcctChar = '
    • \\\r\n\"#{=it.crePlayncAcctNm}#\" \\\r\n#{=it.crePlayncAcctNm}# \\\r\n#{if( it.wrtChrtId ){}#\\\r\n[#{=it.wrtChrtNm}#]\\\r\n#{}}#
    • ';\r\n\t\tvar templateInnerChar = '
    • \\\r\n\"#{=it.wrtChrtNm}#\" \\\r\n[#{=it.wrtChrtNm}#]
    • ';\r\n\t\t\r\n\tfunction getList( postTorg, posttxtServclfseq, postTxtTorgGameId, clickNode ) {\r\n\t\tvar articlePosttorg = postTorg || '',\r\n\t\t\tarticlePosttxtservclfseq = posttxtServclfseq || '' ;\r\n\t\t\tarticlePostTxtTorgGameId = postTxtTorgGameId || '' ;\r\n\t\t\r\n\t\tif ( !( NP.dt.v || getGUID() ) ) {\r\n\t\t\tmodal.show({\r\n\t\t\t\ttxt : '로그인이 필요합니다.',\r\n\t\t\t\tbutton : [['confirm']]\r\n\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\t$.ajax({\r\n\t\t\ttype : 'get',\r\n\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + ( NP.dt.v || getGUID() ) + '/' + NP.dt.st + '/timeline/' + NP.dt.loc + '/like.jsonp',\r\n\t\t\tdataType : 'json',\r\n\t\t\tdata : {\r\n\t\t\t\tlikeTrgtId : targetData,\r\n\t\t\t\tlikeType : targetType,\r\n\t\t\t\tlastNum : lastNum || 0,\r\n\t\t\t\ttrgtId : getParam( 'trgtId' )\r\n\t\t\t},\r\n\t\t\tsuccess : function( data ) {\r\n\t\t\t\tvar list = data.likeList;\r\n\t\t\t\tlastNum = data.selector.lastNum;\r\n\r\n\t\t\t\tif ( !list && !list.length ) {\r\n\t\t\t\t\tlastNum = 0;\r\n\t\t\t\t\tscroll.onEnd.empty();\r\n\t\t\t\t\tscroll = null;\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif ( !$('#modallessLikeList' ).length ) {\r\n\t\t\t\t\tvar layer = $( ( NP.Util.getTemplate( template ) )( data ) ),\r\n\t\t\t\t\t\ti = 0,\r\n\t\t\t\t\t\titem,\r\n\t\t\t\t\t\thtml = '';\r\n\r\n\t\t\t\t\tfor ( ; item = list[ i ]; i += 1 ) {\r\n\t\t\t\t\t\tif( NP.isNeedCharacter( { postTorg: articlePosttorg, postTxtServClfSeq: articlePosttxtservclfseq, postTxtTorgGameId: articlePostTxtTorgGameId } ) ){\r\n\t\t\t\t\t\t\t//캐릭터 좋아요 리스트\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif( !item.wrtChrtId ){\r\n\t\t\t\t\t\t\t\titem.wrtSvrId = '';\r\n\t\t\t\t\t\t\t\titem.wrtGameId = '';\r\n\t\t\t\t\t\t\t\titem.wrtChrtId = '';\r\n\t\t\t\t\t\t\t\titem.wrtChrtNm = '정보를 가져올 수 없습니다.';\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\thtml += ( NP.Util.getTemplate( templateInnerChar ) )( item );\r\n\t\t\t\t\t\t}else if( ( articlePosttorg === 'CHARACTER_GUESTBOOK' && ( articlePosttxtservclfseq == '145' || articlePostTxtTorgGameId == '102' ) ) ){\r\n\t\t\t\t\t\t\tif( !item.wrtChrtId ){\r\n\t\t\t\t\t\t\t\titem.wrtSvrId = '';\r\n\t\t\t\t\t\t\t\titem.wrtGameId = '';\r\n\t\t\t\t\t\t\t\titem.wrtChrtId = '';\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\thtml += ( NP.Util.getTemplate( templateInnerAcctChar ) )( item );\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\thtml += ( NP.Util.getTemplate( templateInner ) )( item );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlayer.find( '.ul_list ul' ).html( html );\r\n\t\t\t\t\t\r\n\t\t\t\t\tif( clickNode ){\r\n\t\t\t\t\t\tvar t = clickNode.offset().top,\r\n\t\t\t\t\t\t\tl = clickNode.offset().left;\r\n\t\t\t\t\t\tlayer.css({top:( t + 25 ) + 'px', left: ( l - 230 ) + 'px'});\r\n\t\t\t\t\t\tmodalless.show( layer, true );\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tmodalless.show( layer );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar i = 0,\r\n\t\t\t\t\t\titem,\r\n\t\t\t\t\t\thtml = '';\r\n\r\n\t\t\t\t\tfor ( ; item = list[ i ]; i += 1 ) {\r\n\t\t\t\t\t\thtml += ( NP.Util.getTemplate( templateInner ) )( item );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$('#modallessLikeList .ul_list ul' ).append( html );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( !scroll ) {\r\n\t\t\t\t\tscroll = new NP.Scroll( '#modallessLikeList .ul_list ul' );\r\n\t\t\t\t\tscroll.onEnd.add( getList );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// Like Article\r\n\tNP.timeline.on( 'click', '.wrap_feed2 .wrapBtnLike .btnLike', function( e ) {\r\n\t\tif ( !mustLoginIfHasNoSession() ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( NP.Reply.setIsLoading() ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tvar button = $( this ).parent(),\r\n\t\t\ttext = button.find( '.btnCount .count' ),\r\n\t\t\tlikeValue = button.find( '.btnLike .value' ),\r\n\t\t\tisLike = button.hasClass( 'unLike' ),\r\n\t\t\tarticle = button.parents( 'article:last' ),\r\n\t\t\tarticleData = $.data( article[ 0 ] ),\r\n\t\t\treply = article.find( '.wrap_comment' ),\r\n\t\t\tlikeBox = reply.find( '.wrap_feedinfo' ),\r\n\t\t\tlike = likeBox.find( '.like' ),\r\n\t\t\tarticlePosttorg = article.attr( 'data-posttorg' ),\r\n\t\t\tarticlePosttxtservclfseq = article.attr( 'data-posttxtservclfseq' ),\r\n\t\t\tarticlePostTxtTorgGameId = article.attr( 'data-postTxtTorgGameId' ),\r\n\t\t\tcount;\r\n\t\t\r\n//\t\tif ( !( e.target === text[ 0 ] ) ) { // Prevent Abuse\r\n//\t\t\treturn;\r\n//\t\t}\r\n\t\t\r\n\t\tif ( !NP.dt.v ) {\r\n\t\t\tmodal.show({\r\n\t\t\t\ttxt : '로그인이 필요합니다.',\r\n\t\t\t\tbutton : [[\t'confirm']]\r\n\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tvar wrtGameNm = '',\r\n\t\t\twrtSvrId ='',\r\n\t\t\twrtCharId = '',\r\n\t\t\twrtCharNm = '';\r\n\r\n\t\tif( NP.isNeedCharacter( { postTorg: articlePosttorg, postTxtServClfSeq: articlePosttxtservclfseq, postTxtTorgGameId: articlePostTxtTorgGameId } ) ){\r\n\t\t\twrtCharId = NP.dt.vCharId;\r\n\t\t\twrtGameNm = 'aion';\r\n\t\t\twrtSvrId = NP.dt.vServerId;\r\n\t\t\twrtCharNm = NP.dt.vCharNm || NP.dt.vCharaNm;\r\n\t\t\t\r\n\t\t\tif( !wrtCharId ){\r\n\t\t\t\talert( '대표캐릭터를 선택해주세요');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t};\r\n\t\t\r\n\t\tif( ( articlePosttorg === 'CHARACTER_GUESTBOOK' && ( articlePosttxtservclfseq == '145' || articlePostTxtTorgGameId == '102' ) ) ){\r\n\t\t\twrtCharId = NP.dt.vCharId;\r\n\t\t\twrtGameNm = 'bns';\r\n\t\t\twrtSvrId = NP.dt.vServerId;\r\n\t\t\twrtCharNm = NP.dt.vCharNm || NP.dt.vCharaNm;\r\n\t\t\t\r\n\t\t\tif( !wrtCharId ){\r\n\t\t\t\talert( '대표캐릭터를 선택해주세요');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype : 'post',\r\n\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.v + '/' + NP.dt.st + '/timeline/' + NP.dt.loc + '/like.jsonp',\r\n\t\t\tdataType : 'json',\r\n\t\t\tdata : {\r\n\t\t\t\tlikeTrgtId : articleData.orgPostTxtSeq || articleData.postTxtSeq,\r\n\t\t\t\tlikeType : articleData.orgActType || articleData.actType,\r\n\t\t\t\ttrgtId : getParam( 'trgtId' ),\r\n\t\t\t\twrtSvrId: wrtSvrId || '',\r\n\t\t\t\twrtCharId: wrtCharId || '',\r\n\t\t\t\twrtGameNm: wrtGameNm || '',\r\n\t\t\t\twrtCharNm: wrtCharNm || '',\r\n\t\t\t\t'_method' : !isLike ? 'PUT' : 'DELETE'\r\n\t\t\t},\r\n\t\t\tbeforeSend : function() {\r\n\t\t\t\tNP.Reply.setIsLoading( true );\r\n\t\t\t},\r\n\t\t\tsuccess : function( data ) {\r\n\t\t\t\tbutton.trigger( 'mouseleave' );\r\n\t\t\t\t\r\n\r\n\t\t\t\tif ( !isLike ) { // 좋아요\r\n\t\t\t\t\tbutton.addClass( 'unLike' );\r\n\t\t\t\t\tbutton.addClass( 'on' );\r\n\t\t\t\t\t\r\n\t\t\t\t\tcount = NP.Like.setCount( article, '+' );\r\n\r\n//\t\t\t\t\tif ( !reply.length ) {\r\n//\t\t\t\t\t\tarticle.append( NP.Reply.setUI({\r\n//\t\t\t\t\t\t\tpost : {\r\n//\t\t\t\t\t\t\t\tlikeCnt : 0,\r\n//\t\t\t\t\t\t\t\trplyTxtCnt : 0\r\n//\t\t\t\t\t\t\t},\r\n//\t\t\t\t\t\t\tpostLikeCount : 1,\r\n//\t\t\t\t\t\t\treplyList : []\r\n//\t\t\t\t\t\t}, true) );\r\n//\r\n//\t\t\t\t\t\tNP.Placeholder.set( article.find( '.wrap_comment' ) );\r\n//\t\t\t\t\t} else {\r\n//\t\t\t\t\t\t\r\n//\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\ttext.text( count );\r\n\t\t\t\t\tlikeValue.text( '취소' );\r\n\t\t\t\t\t\r\n\t\t\t\t} else { // 좋아요 취소\r\n\t\t\t\t\tbutton.removeClass( 'unLike' );\r\n\t\t\t\t\t\r\n\t\t\t\t\tcount = NP.Like.setCount( article, '-' );\r\n\t\t\t\t\t\r\n\t\t\t\t\tlikeValue.text( '좋아요' );\r\n\r\n\t\t\t\t\tif ( count ) {\r\n\t\t\t\t\t\ttext.text( count );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tbutton.removeClass( 'on' );\r\n\t\t\t\t\t\ttext.text( 0 );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tcomplete : function() {\r\n\t\t\t\tNP.Reply.setIsLoading( false );\r\n\t\t\t\t\r\n\t\t\t\tselectbox( '.wrap_form' );\r\n\t\t\t\tNP.Character.getCache() && NP.Character.set();\r\n\t\t\t\t\r\n\t\t\t},\r\n\t\t\tstatusCode : {\r\n\t\t\t\t400 : function( data ) {\r\n\t\t\t\t\tdata = $.parseJSON( data.responseText );\r\n\r\n\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\ttxt : data.message,\r\n\t\t\t\t\t\tbutton : [[ 'confirm' ]]\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t});\t\r\n\r\n\t// Like Reply\r\n\tNP.timeline.on( 'click', '.list_comment .cFeed .like', function( e ) {\r\n\t\tif ( !mustLoginIfHasNoSession() ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif ( !NP.dt.v ) {\r\n\t\t\tmodal.show({\r\n\t\t\t\ttxt : '로그인이 필요합니다.',\r\n\t\t\t\tbutton : [[\t'confirm' ]]\r\n\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tvar el = $( this ),\r\n\t\t\tisLike = el.hasClass( 'on' ),\r\n\t\t\treply = el.parents( 'li' ),\r\n\t\t\tarticle = el.parents( 'article:last' ),\r\n\t\t\tarticlePosttorg = article.attr( 'data-posttorg' ),\r\n\t\t\tarticlePosttxtservclfseq = article.attr( 'data-posttxtservclfseq' ),\r\n\t\t\tarticlePostTxtTorgGameId = article.attr( 'data-postTxtTorgGameId' ),\r\n\t\t\tvary;\r\n\t\t\r\n\t\tvar wrtGameNm = '',\r\n\t\t\twrtSvrId ='',\r\n\t\t\twrtCharId = '',\r\n\t\t\twrtCharNm = '';\r\n\t\t\r\n\t\tif( NP.isNeedCharacter( { postTorg: articlePosttorg, postTxtServClfSeq: articlePosttxtservclfseq, postTxtTorgGameId: articlePostTxtTorgGameId } ) ){\r\n\t\t\twrtCharId = NP.dt.vCharId;\r\n\t\t\twrtGameNm = 'aion';\r\n\t\t\twrtSvrId = NP.dt.vServerId;\r\n\t\t\twrtCharNm = NP.dt.vCharNm || NP.dt.vCharaNm;\r\n\t\t\t\r\n\t\t\tif( !wrtCharId ){\r\n\t\t\t\talert( '대표캐릭터를 선택해주세요' );\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\tif( ( articlePosttorg === 'CHARACTER_GUESTBOOK' && ( articlePosttxtservclfseq == '145' || articlePostTxtTorgGameId == '102' ) ) ){\r\n\t\t\twrtCharId = NP.dt.vCharId;\r\n\t\t\twrtGameNm = 'bns';\r\n\t\t\twrtSvrId = NP.dt.vServerId;\r\n\t\t\twrtCharNm = NP.dt.vCharNm || NP.dt.vCharaNm;\r\n\t\t\t\r\n\t\t\tif( !wrtCharId ){\r\n\t\t\t\talert( '대표캐릭터를 선택해주세요');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype : 'post',\r\n\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.v + '/' + NP.dt.st + '/timeline/' + NP.dt.loc + '/like.jsonp',\r\n\t\t\tdataType : 'json',\r\n\t\t\tdata : {\r\n\t\t\t\tlikeTrgtId : $.data( reply[ 0 ] ).rplyTxtSeq,\r\n\t\t\t\tlikeType : 'REPLY',\r\n\t\t\t\ttrgtId : getParam( 'trgtId' ),\r\n\t\t\t\twrtSvrId: wrtSvrId || '',\r\n\t\t\t\twrtCharId: wrtCharId || '',\r\n\t\t\t\twrtGameNm: wrtGameNm || '',\r\n\t\t\t\twrtCharNm: wrtCharNm || '',\r\n\t\t\t\t'_method' : !isLike ? 'PUT' : 'DELETE'\r\n\t\t\t},\r\n\t\t\tsuccess : function( data ) {\r\n\t\t\t\tif ( !isLike ) { // 댓글 좋아요\r\n\t\t\t\t\tel.addClass( 'on' ).text( '좋아요 취소' );\r\n\t\t\t\t\tvary = '+';\r\n\t\t\t\t} else { // 댓글 좋아요 취소\r\n\t\t\t\t\tel.removeClass( 'on' ).text( '좋아요' );\r\n\t\t\t\t\tvary = '-';\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tNP.Reply.setLikeCount( reply, vary );\r\n\t\t\t\t\r\n\t\t\t\tselectbox( '.wrap_form' );\r\n\t\t\t\tNP.Character.getCache() && NP.Character.set();\r\n\t\t\t},\r\n\t\t\tstatusCode : {\r\n\t\t\t\t400 : function( data ) {\r\n\t\t\t\t\tdata = $.parseJSON( data.responseText );\r\n\r\n\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\ttxt : data.message,\r\n\t\t\t\t\t\tbutton : [[ 'confirm' ]]\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\t// Like List\r\n\tNP.timeline.on( 'click', '.wrap_feedinfo .like, .list_comment .cFeed .count, .wrap_feed2 .btnCount', function( evt ) {\r\n\r\n\t\tvar el = $( this );\r\n\t\t\r\n\t\tvar article = el.parents( 'article:last' ),\r\n\t\t\tarticlePosttorg = article.attr( 'data-posttorg'),\r\n\t\t\tarticlePosttxtservclfseq = article.attr( 'data-posttxtservclfseq'),\r\n\t\t\tarticlePostTxtTorgGameId = article.attr( 'data-postTxtTorgGameId');\r\n\t\t\t\r\n\t\tif ( !parseInt( el.text() ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif ( $( '#modallessLikeList' ).length ) {\r\n\t\t\tmodalless.hide();\r\n\t\t}\r\n\r\n\t\tif ( el.hasClass( 'like' ) || el.hasClass( 'btnCount' ) ) { // 글 좋아요\r\n\t\t\tvar articleData = $.data( el.parents( 'article:last' )[ 0 ] );\r\n\r\n\t\t\ttargetData = articleData.orgPostTxtSeq || articleData.postTxtSeq;\r\n\t\t\ttargetType = articleData.orgActType || articleData.actType;\r\n\t\t} else { // 댓글 좋아요\r\n\t\t\ttargetData = $.data( el.parents( 'li' )[ 0 ] ).rplyTxtSeq;\r\n\t\t\ttargetType = 'REPLY';\r\n\t\t}\r\n\t\tscroll = null;\r\n\t\tgetList( articlePosttorg, articlePosttxtservclfseq, articlePostTxtTorgGameId, $( this ) );\r\n\t});\r\n\r\n\treturn {\r\n\t\t/*setCount : function( article, vary ) {\r\n\t\t\tvar count = article.find( '.like strong span' ),\r\n\t\t\t\tvalue = vary || parseInt( count.text() );\r\n\r\n\t\t\tif ( vary === '+' ) {\r\n\t\t\t\tvalue = parseInt( count.text() ) + 1;\r\n\t\t\t} else if ( vary === '-' ) {\r\n\t\t\t\tvalue = parseInt( count.text() ) - 1;\r\n\t\t\t} else {\r\n\t\t\t\tvalue = vary;\r\n\t\t\t}\r\n\r\n\t\t\tcount.text( value );\r\n\r\n\t\t\treturn parseInt( count.text() );\r\n\t\t},*/\r\n\t\tsetCount : function( article, vary ) {\r\n\t\t\tvar count = article.find( '.btnCount .count' ),\r\n\t\t\t\tvalue = vary || parseInt( count.text() );\r\n\r\n\t\t\tif ( vary === '+' ) {\r\n\t\t\t\tvalue = parseInt( count.text() ) + 1;\r\n\t\t\t} else if ( vary === '-' ) {\r\n\t\t\t\tvalue = parseInt( count.text() ) - 1;\r\n\t\t\t} else {\r\n\t\t\t\tvalue = vary;\r\n\t\t\t}\r\n\r\n\t\t\tcount.text( value );\r\n\r\n\t\t\treturn parseInt( count.text() );\r\n\t\t},\t\t\r\n\t\tresetLastNum : function() {\r\n\t\t\tlastNum = 0;\r\n\t\t},\r\n\t\tgetLastNum : function() {\r\n\t\t\treturn lastNum;\r\n\t\t}\r\n\t}\r\n}( jQuery ));\r\n","NP.EmoticonData = [\r\n\t\t{ name : [ '웃음' ], url : 'emo_smile' },\r\n { name : [ '하하' ], url : 'emo_laugh' },\r\n { name : [ '윙크' ], url : 'emo_wink' },\r\n { name : [ '헤헤' ], url : 'emo_hehe' },\r\n { name : [ '부끄' ], url : 'emo_shy' },\r\n { name : [ '메롱' ], url : 'emo_p' },\r\n { name : [ '브이' ], url : 'emo_v' },\r\n { name : [ '반짝' ], url : 'emo_twinkle' },\r\n { name : [ '반함' ], url : 'emo_love' },\r\n { name : [ '뽀뽀' ], url : 'emo_kiss' },\r\n { name : [ '도도' ], url : 'emo_proud' },\r\n { name : [ '느끼' ], url : 'emo_oily' },\r\n { name : [ '화남' ], url : 'emo_angry' },\r\n { name : [ '쳇', '찌릿' ], url : 'emo_askance' },\r\n { name : [ '활활' ], url : 'emo_fire' },\r\n { name : [ '멘붕' ], url : 'emo_mental' },\r\n { name : [ '발끈' ], url : 'emo_huffy' },\r\n { name : [ '한숨' ], url : 'emo_phew' },\r\n { name : [ '소심' ], url : 'emo_timid' },\r\n { name : [ '실망', '난처' ], url : 'emo_disappoint' },\r\n { name : [ '흑흑' ], url : 'emo_tear' },\r\n { name : [ '엉엉' ], url : 'emo_cry' },\r\n { name : [ '아픔' ], url : 'emo_sick' },\r\n { name : [ '천사' ], url : 'emo_angel' },\r\n { name : [ '악마' ], url : 'cha_devil' },\r\n { name : [ '딴청' ], url : 'emo_pretend' },\r\n { name : [ '쉿' ], url : 'emo_sh' },\r\n { name : [ '안보여' ], url : 'emo_blind' },\r\n { name : [ '멋쟁이' ], url : 'emo_style' },\r\n { name : [ '코피' ], url : 'emo_nosebleed' },\r\n { name : [ '풉' ], url : 'emo_poop' },\r\n { name : [ '삐침' ], url : 'emo_sulk' },\r\n { name : [ 'ㄷㄷ' ], url : 'emo_tremble' },\r\n { name : [ '썩소' ], url : 'emo_sneer' },\r\n { name : [ '깜짝' ], url : 'emo_surprise' },\r\n { name : [ '도둑' ], url : 'emo_thief' },\r\n { name : [ '으흣', '음흉' ], url : 'emo_wicked' },\r\n { name : [ '궁금' ], url : 'emo_wonder' },\r\n { name : [ '안경' ], url : 'emo_smart' },\r\n { name : [ '무관심' ], url : 'emo_indifference' },\r\n { name : [ '어질' ], url : 'emo_dizzy' },\r\n { name : [ '거품' ], url : 'emo_bubble' },\r\n { name : [ '우웩' ], url : 'emo_vomit' },\r\n { name : [ '피곤' ], url : 'emo_tired' },\r\n { name : [ '졸림' ], url : 'emo_sleepy' },\r\n { name : [ '당황' ], url : 'emo_embarrass' },\r\n { name : [ '묵', '주먹', '바위' ], url : 'obj_muk' },\r\n { name : [ '찌', '가위' ], url : 'obj_ji' },\r\n { name : [ '빠', '보' ], url : 'obj_pa' },\r\n { name : [ '좋아요', '최고' ], url : 'obj_like' },\r\n { name : [ '싫어요', '최악' ], url : 'obj_dislike' },\r\n { name : [ '경고' ], url : 'obj_ycard' },\r\n { name : [ '퇴장' ], url : 'obj_rcard' },\r\n { name : [ '입술' ], url : 'obj_lip' },\r\n { name : [ '눈알' ], url : 'obj_eye' },\r\n { name : [ '사랑', '하트' ], url : 'obj_heart' },\r\n { name : [ '이별' ], url : 'obj_brokenheart' },\r\n { name : [ '강아지' ], url : 'cha_dog' },\r\n { name : [ '고양이' ], url : 'cha_cat' },\r\n { name : [ '닭' ], url : 'cha_chicken' },\r\n { name : [ '돼지' ], url : 'cha_pig' },\r\n { name : [ '햄버거' ], url : 'food_burger' },\r\n { name : [ '피자' ], url : 'food_pizza' },\r\n { name : [ '치킨' ], url : 'food_chicken' },\r\n { name : [ '초밥' ], url : 'food_sushi' },\r\n { name : [ '라면' ], url : 'food_ramen' },\r\n { name : [ '짜장면' ], url : 'food_jajangmyeon' },\r\n { name : [ '도시락' ], url : 'food_lunch' },\r\n { name : [ '밥' ], url : 'food_rice' },\r\n { name : [ '계란' ], url : 'food_egg' },\r\n { name : [ '빵' ], url : 'food_bread' },\r\n { name : [ '붕어빵' ], url : 'food_bungeobbang' },\r\n { name : [ '핫도그1' ], url : 'food_hotdog1' },\r\n { name : [ '핫도그2' ], url : 'food_hotdog2' },\r\n { name : [ '도넛' ], url : 'food_donut' },\r\n { name : [ '케익' ], url : 'food_cake' },\r\n { name : [ '사탕' ], url : 'food_candy' },\r\n { name : [ '쿠키' ], url : 'food_cookie' },\r\n { name : [ '초콜렛' ], url : 'food_chocolate' },\r\n { name : [ '아이스크림' ], url : 'food_icecream' },\r\n { name : [ '사과' ], url : 'food_apple' },\r\n { name : [ '바나나' ], url : 'food_banana' },\r\n { name : [ '수박' ], url : 'food_watermelon' },\r\n { name : [ '레몬' ], url : 'food_lemon' },\r\n { name : [ '딸기' ], url : 'food_strawberry' },\r\n { name : [ '우유' ], url : 'food_milk' },\r\n { name : [ '커피' ], url : 'food_coffee' },\r\n { name : [ '칵테일' ], url : 'food_cocktail' },\r\n { name : [ '와인' ], url : 'food_wine' },\r\n { name : [ '맥주' ], url : 'food_beer' },\r\n { name : [ '소주' ], url : 'food_soju' },\r\n { name : [ '해' ], url : 'wea_sunny' },\r\n { name : [ '흐림', '구름' ], url : 'wea_cloudy' },\r\n { name : [ '무지개' ], url : 'wea_rainbow' },\r\n { name : [ '비' ], url : 'wea_rain' },\r\n { name : [ '눈', '눈사람' ], url : 'wea_snowman' },\r\n { name : [ '번개' ], url : 'aion_lightning' },\r\n { name : [ '트리' ], url : 'obj_tree' },\r\n { name : [ '유령' ], url : 'cha_ghost' },\r\n { name : [ '복' ], url : 'obj_bok' },\r\n { name : [ '돈' ], url : 'obj_money' },\r\n { name : [ '황금' ], url : 'obj_gold' },\r\n { name : [ '장미' ], url : 'obj_rose' },\r\n { name : [ '꽃다발' ], url : 'obj_flower' },\r\n { name : [ '선물' ], url : 'obj_gift' },\r\n { name : [ '폭죽' ], url : 'obj_firework' },\r\n { name : [ '초' ], url : 'obj_candle' },\r\n { name : [ '리본' ], url : 'obj_ribbon' },\r\n { name : [ '반지' ], url : 'obj_ring' },\r\n { name : [ '보석' ], url : 'obj_jewel' },\r\n { name : [ '왕관' ], url : 'obj_crown' },\r\n { name : [ '행운' ], url : 'obj_clover' },\r\n { name : [ '벌레' ], url : 'obj_bug' },\r\n { name : [ '부적' ], url : 'obj_talisman' },\r\n { name : [ '알약' ], url : 'obj_pill' },\r\n { name : [ '똥' ], url : 'obj_dung' },\r\n { name : [ '아이디어' ], url : 'obj_idea' },\r\n { name : [ '느낌표' ], url : 'obj_exclamation' },\r\n { name : [ '물음표' ], url : 'obj_question' },\r\n { name : [ '자전거' ], url : 'obj_bike' },\r\n { name : [ '자동차' ], url : 'obj_car' },\r\n { name : [ '비행기' ], url : 'obj_plane' },\r\n { name : [ '여권' ], url : 'obj_passport' },\r\n { name : [ '여행가방' ], url : 'obj_travel' },\r\n { name : [ '영화' ], url : 'obj_movie' },\r\n { name : [ '휴대폰' ], url : 'obj_cellphone' },\r\n { name : [ '카메라' ], url : 'obj_camera' },\r\n { name : [ '편지' ], url : 'obj_letter' },\r\n { name : [ '연필' ], url : 'obj_pencil' },\r\n { name : [ '축구' ], url : 'obj_soccer' },\r\n { name : [ '야구' ], url : 'obj_baseball' },\r\n { name : [ '경보' ], url : 'obj_siren' },\r\n { name : [ '주의' ], url : 'obj_caution' },\r\n { name : [ '19금' ], url : 'obj_19' },\r\n { name : [ '화살표' ], url : 'aion_arrow' },\r\n { name : [ '화살표_위' ], url : 'obj_arrow_up' },\r\n { name : [ '미션' ], url : 'aion_mission' },\r\n { name : [ '퀘스트' ], url : 'aion_quest' },\r\n { name : [ '슈고' ], url : 'aion_shugo' },\r\n { name : [ '강화석' ], url : 'aion_reinforce' },\r\n { name : [ '소금' ], url : 'aion_reinforce_w' },\r\n { name : [ '부활석' ], url : 'aion_revival' },\r\n { name : [ '수면' ], url : 'aion_zzz' },\r\n { name : [ '별' ], url : 'aion_star' },\r\n { name : [ '폭탄' ], url : 'aion_bomb' },\r\n { name : [ '해골' ], url : 'aion_skull' },\r\n { name : [ '차단' ], url : 'aion_block' },\r\n { name : [ '주문서' ], url : 'obj_scroll' },\r\n { name : [ '마법사' ], url : 'obj_magic' },\r\n { name : [ '빨간물약' ], url : 'aion_lpotion' },\r\n { name : [ '파란물약' ], url : 'aion_mpotion' },\r\n { name : [ '보라물약' ], url : 'aion_ppotion' },\r\n { name : [ '노란물약' ], url : 'aion_hpotion' },\r\n { name : [ '검사' ], url : 'bns_blademaster' },\r\n { name : [ '역사' ], url : 'bns_destroyer' },\r\n { name : [ '권사' ], url : 'bns_kungfufighter' },\r\n { name : [ '암살자' ], url : 'bns_assassin' },\r\n { name : [ '기공사' ], url : 'bns_forcemaster' },\r\n { name : [ '소환사' ], url : 'bns_summoner' },\r\n { name : [ '금' ], url : 'bns_gold' },\r\n { name : [ '은' ], url : 'bns_silver' },\r\n { name : [ '동' ], url : 'bns_bronze' },\r\n { name : [ '보패' ], url : 'bns_bope' },\r\n { name : [ '1단계' ], url : 'obj_lv1' },\r\n { name : [ '2단계' ], url : 'obj_lv2' },\r\n { name : [ '3단계' ], url : 'obj_lv3' },\r\n { name : [ '4단계' ], url : 'obj_lv4' }\r\n\t];\r\n","NP.MsgPreview = ( function( $ ) {\r\n\tvar $el = $( '
      ' ),\r\n\t\t$msg = $( '
      ' ),\r\n\t\t$wrap = $( '
      ' ),\r\n\t\t$deleteButton = $( '삭제' ),\r\n\t\t_msg = '';\r\n\r\n\t// 초기화\r\n\tfunction init() {\r\n\t\teventBinding();\r\n\t}\r\n\r\n\t// 마크업 생성\r\n\tfunction render( data ) {\r\n\r\n\t\tvar $sticker = $( '\"{{'' );\r\n\t\t\r\n\t\t_msg = data.name;\r\n\t\t\r\n\t\t$wrap.html( $deleteButton ).append( $sticker );\r\n\t\t$msg.append( $wrap );\r\n\t\t$el.append( $msg );\r\n\t\t$el.show();\r\n\t\treturn $el;\r\n\t}\r\n\r\n\t// 이벤트 바인딩\r\n\tfunction eventBinding() {\r\n\t\t// 스티커 미리보기 삭제\r\n\t\t$el.on( 'click', '.btnDelete', function( e ) {\r\n\t\t\te.stopPropagation();\r\n\t\t\thide();\r\n\t\t});\r\n\t}\r\n\r\n\t// 메시지 미리보기 감추기\r\n\tfunction hide() {\r\n\t\t$el.hide();\r\n\t}\r\n\t\r\n\t// 메시지 미리보기 보이기\r\n\tfunction show() {\r\n\t\t$el.show();\r\n\t}\r\n\t\r\n\t// 데이터 리턴\r\n\tfunction getSticker() {\r\n\t\treturn ( $el.is( ':visible' ) )? _msg: '';\r\n\t}\r\n\r\n\t// API\r\n\treturn {\r\n\t\tinit : init,\r\n\t\trender : render,\r\n\t\thide : hide,\r\n\t\tshow : show,\r\n\t\tgetSticker: getSticker\r\n\t};\r\n}( jQuery ));\r\n","NP.StickerData = [\r\n //gid 1------------------------------------------------\r\n[ {\"sid\": 100, \"name\": \"남소유_공포\" },\r\n { \"sid\": 101, \"name\": \"남소유_슬픔\" },\r\n { \"sid\": 102, \"name\": \"남소유_행복\" },\r\n { \"sid\": 103, \"name\": \"진서연_거절\" },\r\n { \"sid\": 104, \"name\": \"진서연_깔깔\" },\r\n { \"sid\": 105, \"name\": \"진서연_썩소\" },\r\n { \"sid\": 106, \"name\": \"홍석근_딴청\" },\r\n { \"sid\": 107, \"name\": \"홍석근_아픔\" },\r\n { \"sid\": 108, \"name\": \"홍석근_힘내\" },\r\n { \"sid\": 109, \"name\": \"홍석근_분노\" },\r\n { \"sid\": 110, \"name\": \"남소유_갈망\" },\r\n { \"sid\": 111, \"name\": \"남소유_감사\" },\r\n { \"sid\": 112, \"name\": \"남소유_더위\" },\r\n { \"sid\": 113, \"name\": \"남소유_부탁\" },\r\n { \"sid\": 114, \"name\": \"남소유_슬픔2\" },\r\n { \"sid\": 115, \"name\": \"남소유_슬픔3\" },\r\n { \"sid\": 116, \"name\": \"남소유_애교\" },\r\n { \"sid\": 117, \"name\": \"남소유_애교2\" },\r\n { \"sid\": 118, \"name\": \"남소유_인사\" },\r\n { \"sid\": 119, \"name\": \"남소유_자신감\" },\r\n { \"sid\": 120, \"name\": \"남소유_즐거움\" },\r\n { \"sid\": 121, \"name\": \"남소유_최고\" },\r\n { \"sid\": 122, \"name\": \"남소유_납치\" },\r\n { \"sid\": 123, \"name\": \"남소유_수면\" },\r\n { \"sid\": 124, \"name\": \"진서연_감시\" },\r\n { \"sid\": 125, \"name\": \"진서연_미안\" },\r\n { \"sid\": 126, \"name\": \"진서연_슬픔\" },\r\n { \"sid\": 127, \"name\": \"진서연_슬픔2\" },\r\n { \"sid\": 128, \"name\": \"진서연_여유\" },\r\n { \"sid\": 129, \"name\": \"진서연_웃음\" },\r\n { \"sid\": 130, \"name\": \"진서연_행복\" },\r\n { \"sid\": 131, \"name\": \"홍석근_게임중\" },\r\n { \"sid\": 132, \"name\": \"홍석근_깜짝\" },\r\n { \"sid\": 133, \"name\": \"홍석근_슬픔\" },\r\n { \"sid\": 134, \"name\": \"홍석근_식사\" },\r\n { \"sid\": 135, \"name\": \"홍석근_여유\" },\r\n { \"sid\": 136, \"name\": \"홍석근_홍작별\" },\r\n { \"sid\": 137, \"name\": \"홍석근_찌뿌둥\" },\r\n { \"sid\": 138, \"name\": \"홍석근_괴롭힘\" },\r\n { \"sid\": 139, \"name\": \"홍석근_야단\" }],\r\n\r\n //gid 2------------------------------------------------\r\n[ {\"sid\": 200, \"name\": \"GrGr_ㅇㅇ\" },\r\n { \"sid\": 201, \"name\": \"GrGr_ㄴㄴ\" },\r\n { \"sid\": 202, \"name\": \"GrGr_아잉\" },\r\n { \"sid\": 203, \"name\": \"GrGr_풉\" },\r\n { \"sid\": 204, \"name\": \"GrGr_질러라\" },\r\n { \"sid\": 205, \"name\": \"GrGr_감격\" },\r\n { \"sid\": 206, \"name\": \"GrGr_무서운아이\" },\r\n { \"sid\": 207, \"name\": \"GrGr_절규\" },\r\n { \"sid\": 208, \"name\": \"GrGr_축하\" },\r\n { \"sid\": 209, \"name\": \"GrGr_ㅋㅋ\" },\r\n { \"sid\": 210, \"name\": \"GrGr_딴청\" },\r\n { \"sid\": 211, \"name\": \"GrGr_미안\" },\r\n { \"sid\": 212, \"name\": \"GrGr_탕탕\" },\r\n { \"sid\": 213, \"name\": \"GrGr_쥬금\" },\r\n { \"sid\": 214, \"name\": \"GrGr_짜증\" },\r\n { \"sid\": 215, \"name\": \"GrGr_한숨\" },\r\n { \"sid\": 216, \"name\": \"GrGr_거지\" },\r\n { \"sid\": 217, \"name\": \"GrGr_굽신\" },\r\n { \"sid\": 218, \"name\": \"GrGr_짱머겅\" },\r\n { \"sid\": 219, \"name\": \"GrGr_두번머겅\" },\r\n { \"sid\": 220, \"name\": \"GrGr_파티모집\" },\r\n { \"sid\": 221, \"name\": \"GrGr_파티지원\" },\r\n { \"sid\": 222, \"name\": \"GrGr_은신\" },\r\n { \"sid\": 223, \"name\": \"GrGr_투시\" },\r\n { \"sid\": 224, \"name\": \"GrGr_반사\" },\r\n { \"sid\": 225, \"name\": \"GrGr_힐힐\" }],\r\n\r\n //gid 3------------------------------------------------\r\n[ {\"sid\": 300, \"name\": \"대충말해_하이YO\" },\r\n { \"sid\": 301, \"name\": \"대충말해_그립구만YO\" },\r\n { \"sid\": 302, \"name\": \"대충말해_기역시옷YO\" },\r\n { \"sid\": 303, \"name\": \"대충말해_노노YO\" },\r\n { \"sid\": 304, \"name\": \"대충말해_그래YO\" },\r\n { \"sid\": 305, \"name\": \"대충말해_엉엉YO\" },\r\n { \"sid\": 306, \"name\": \"대충말해_뭘까YO\" },\r\n { \"sid\": 307, \"name\": \"대충말해_함께싸워YO\" },\r\n { \"sid\": 308, \"name\": \"대충말해_아디YO스\" },\r\n { \"sid\": 309, \"name\": \"대충말해_풋풋해YO\" },\r\n { \"sid\": 310, \"name\": \"대충말해_지쳐YO\" },\r\n { \"sid\": 311, \"name\": \"대충말해_추카YO\" },\r\n { \"sid\": 312, \"name\": \"대충말해_귓방맹이YO\" },\r\n { \"sid\": 313, \"name\": \"대충말해_엄마왔어YO\" },\r\n { \"sid\": 314, \"name\": \"대충말해_각오해YO\" },\r\n { \"sid\": 315, \"name\": \"대충말해_YO\" },\r\n { \"sid\": 316, \"name\": \"대충말해_아이러브YO\" },\r\n { \"sid\": 317, \"name\": \"대충말해_입술줘YO\" },\r\n { \"sid\": 318, \"name\": \"대충말해_웃겨YO\" },\r\n { \"sid\": 319, \"name\": \"대충말해_화나YO\" },\r\n { \"sid\": 320, \"name\": \"대충말해_잠수타YO\" },\r\n { \"sid\": 321, \"name\": \"대충말해_내가껌이YO\" },\r\n { \"sid\": 322, \"name\": \"대충말해_내포라말라YO\" },\r\n { \"sid\": 323, \"name\": \"대충말해_뽀찌줘YO\" }],\r\n\r\n //gid 4------------------------------------------------\r\n[ {\"sid\": 400, \"name\": \"좌충우돌_안녕\" },\r\n { \"sid\": 401, \"name\": \"좌충우돌_뭬야\" },\r\n { \"sid\": 402, \"name\": \"좌충우돌_축하축하\" },\r\n { \"sid\": 403, \"name\": \"좌충우돌_애드\" },\r\n { \"sid\": 404, \"name\": \"좌충우돌_잘난척\" },\r\n { \"sid\": 405, \"name\": \"좌충우돌_뿌잉뿌잉\" },\r\n { \"sid\": 406, \"name\": \"좌충우돌_파티모집\" },\r\n { \"sid\": 407, \"name\": \"좌충우돌_슬퍼\" },\r\n { \"sid\": 408, \"name\": \"좌충우돌_흥칫뿌\" },\r\n { \"sid\": 409, \"name\": \"좌충우돌_오마이갓\" },\r\n { \"sid\": 410, \"name\": \"좌충우돌_굳잡\" },\r\n { \"sid\": 411, \"name\": \"좌충우돌_생각중\" },\r\n { \"sid\": 412, \"name\": \"좌충우돌_멘탈붕괴\" },\r\n { \"sid\": 413, \"name\": \"좌충우돌_힐링\" },\r\n { \"sid\": 414, \"name\": \"좌충우돌_감사감사\" },\r\n { \"sid\": 415, \"name\": \"좌충우돌_해탈\" },\r\n { \"sid\": 416, \"name\": \"좌충우돌_은신\" },\r\n { \"sid\": 417, \"name\": \"좌충우돌_미안해\" },\r\n { \"sid\": 418, \"name\": \"좌충우돌_화르륵\" },\r\n { \"sid\": 419, \"name\": \"좌충우돌_와락\" },\r\n { \"sid\": 420, \"name\": \"좌충우돌_피곤\" },\r\n { \"sid\": 421, \"name\": \"좌충우돌_멱살\" },\r\n { \"sid\": 422, \"name\": \"좌충우돌_파이팅\" },\r\n { \"sid\": 423, \"name\": \"좌충우돌_스윽\" }],\r\n\r\n //gid 5------------------------------------------------\r\n[ {\"sid\": 500, \"name\": \"행동지침서_각성\" },\r\n { \"sid\": 501, \"name\": \"행동지침서_헉\" },\r\n { \"sid\": 502, \"name\": \"행동지침서_오잉\" },\r\n { \"sid\": 503, \"name\": \"행동지침서_미안\" },\r\n { \"sid\": 504, \"name\": \"행동지침서_분노\" },\r\n { \"sid\": 505, \"name\": \"행동지침서_좋아\" },\r\n { \"sid\": 506, \"name\": \"행동지침서_하악\" },\r\n { \"sid\": 507, \"name\": \"행동지침서_똥망\" },\r\n { \"sid\": 508, \"name\": \"행동지침서_하이\" },\r\n { \"sid\": 509, \"name\": \"행동지침서_행복\" },\r\n { \"sid\": 510, \"name\": \"행동지침서_가자\" },\r\n { \"sid\": 511, \"name\": \"행동지침서_하하\" },\r\n { \"sid\": 512, \"name\": \"행동지침서_힐좀\" },\r\n { \"sid\": 513, \"name\": \"행동지침서_긁적\" },\r\n { \"sid\": 514, \"name\": \"행동지침서_끙\" },\r\n { \"sid\": 515, \"name\": \"행동지침서_바이\" },\r\n { \"sid\": 516, \"name\": \"행동지침서_엉엉\" },\r\n { \"sid\": 517, \"name\": \"행동지침서_제시\" },\r\n { \"sid\": 518, \"name\": \"행동지침서_도전\" },\r\n { \"sid\": 519, \"name\": \"행동지침서_메디테이션\" },\r\n { \"sid\": 520, \"name\": \"행동지침서_덜덜\" },\r\n { \"sid\": 521, \"name\": \"행동지침서_크크\" },\r\n { \"sid\": 522, \"name\": \"행동지침서_최고\" },\r\n { \"sid\": 523, \"name\": \"행동지침서_피스\" }],\r\n\r\n //gid 6------------------------------------------------\r\n[ {\"sid\": 600, \"name\": \"플러스_충격\" },\r\n { \"sid\": 601, \"name\": \"플러스_심심해\" },\r\n { \"sid\": 602, \"name\": \"플러스_감동\" },\r\n { \"sid\": 603, \"name\": \"플러스_화장실\" },\r\n { \"sid\": 604, \"name\": \"플러스_심봤다\" },\r\n { \"sid\": 605, \"name\": \"플러스_FAIL\" },\r\n { \"sid\": 606, \"name\": \"플러스_헐\" },\r\n { \"sid\": 607, \"name\": \"플러스_헬프미\" },\r\n { \"sid\": 608, \"name\": \"플러스_안녕\" },\r\n { \"sid\": 609, \"name\": \"플러스_협박\" },\r\n { \"sid\": 610, \"name\": \"플러스_접속해\" },\r\n { \"sid\": 611, \"name\": \"플러스_안돼\" },\r\n { \"sid\": 612, \"name\": \"플러스_비웃음\" },\r\n { \"sid\": 613, \"name\": \"플러스_잘난척\" },\r\n { \"sid\": 614, \"name\": \"플러스_삐짐\" },\r\n { \"sid\": 615, \"name\": \"플러스_ㅋㅋㅋ\" },\r\n { \"sid\": 616, \"name\": \"플러스_미안\" },\r\n { \"sid\": 617, \"name\": \"플러스_내가최고\" },\r\n { \"sid\": 618, \"name\": \"플러스_옛생각\" },\r\n { \"sid\": 619, \"name\": \"플러스_저랩훈계\" },\r\n { \"sid\": 620, \"name\": \"플러스_밤샜어\" },\r\n { \"sid\": 621, \"name\": \"플러스_나를따르라\" }],\r\n\r\n //gid 7------------------------------------------------\r\n[ {\"sid\": 700, \"name\": \"친절돋는_큰절\" },\r\n { \"sid\": 701, \"name\": \"친절돋는_go\" },\r\n { \"sid\": 702, \"name\": \"친절돋는_식겁\" },\r\n { \"sid\": 703, \"name\": \"친절돋는_궁금\" },\r\n { \"sid\": 704, \"name\": \"친절돋는_오키\" },\r\n { \"sid\": 705, \"name\": \"친절돋는_꽃\" },\r\n { \"sid\": 706, \"name\": \"친절돋는_헐\" },\r\n { \"sid\": 707, \"name\": \"친절돋는_아니\" },\r\n { \"sid\": 708, \"name\": \"친절돋는_흥\" },\r\n { \"sid\": 709, \"name\": \"친절돋는_즐거워\" },\r\n { \"sid\": 710, \"name\": \"친절돋는_지름\" },\r\n { \"sid\": 711, \"name\": \"친절돋는_하이\" },\r\n { \"sid\": 712, \"name\": \"친절돋는_절망\" },\r\n { \"sid\": 713, \"name\": \"친절돋는_대답바람\" },\r\n { \"sid\": 714, \"name\": \"친절돋는_뒷목\" },\r\n { \"sid\": 715, \"name\": \"친절돋는_분노\" },\r\n { \"sid\": 716, \"name\": \"친절돋는_죄송\" },\r\n { \"sid\": 717, \"name\": \"친절돋는_삽질중\" },\r\n { \"sid\": 718, \"name\": \"친절돋는_선물\" },\r\n { \"sid\": 719, \"name\": \"친절돋는_신난다\" },\r\n { \"sid\": 720, \"name\": \"친절돋는_사랑해\" },\r\n { \"sid\": 721, \"name\": \"친절돋는_잘가\" }],\r\n\r\n //gid 8------------------------------------------------\r\n[ {\"sid\": 800, \"name\": \"빈유_안녕\" },\r\n { \"sid\": 801, \"name\": \"빈유_뭐해\" },\r\n { \"sid\": 802, \"name\": \"빈유_최고\" },\r\n { \"sid\": 803, \"name\": \"빈유_운기조식\" },\r\n { \"sid\": 804, \"name\": \"빈유_한판붙자\" },\r\n { \"sid\": 805, \"name\": \"빈유_샤방샤방\" },\r\n { \"sid\": 806, \"name\": \"빈유_혈압\" },\r\n { \"sid\": 807, \"name\": \"빈유_태장금나무토막\" },\r\n { \"sid\": 808, \"name\": \"빈유_졸려\" },\r\n { \"sid\": 809, \"name\": \"빈유_zzz\" },\r\n { \"sid\": 810, \"name\": \"빈유_바뻐\" },\r\n { \"sid\": 811, \"name\": \"빈유_됐고\" },\r\n { \"sid\": 812, \"name\": \"빈유_충격\" },\r\n { \"sid\": 813, \"name\": \"빈유_근성\" },\r\n { \"sid\": 814, \"name\": \"빈유_거절\" },\r\n { \"sid\": 815, \"name\": \"빈유_일어나시게\" },\r\n { \"sid\": 816, \"name\": \"빈유_흥분\" },\r\n { \"sid\": 817, \"name\": \"빈유_눈물\" },\r\n { \"sid\": 818, \"name\": \"빈유_짝짝짝\" },\r\n { \"sid\": 819, \"name\": \"빈유_반성중\" },\r\n { \"sid\": 820, \"name\": \"빈유_키스\" },\r\n { \"sid\": 821, \"name\": \"빈유_반함\" }],\r\n\r\n //gid 9------------------------------------------------\r\n[ {\"sid\": 900, \"name\": \"빠가뇽_완전신나\" },\r\n { \"sid\": 901, \"name\": \"빠가뇽_폭풍애드\" },\r\n { \"sid\": 902, \"name\": \"빠가뇽_살아있냐\" },\r\n { \"sid\": 903, \"name\": \"빠가뇽_두두두\" },\r\n { \"sid\": 904, \"name\": \"빠가뇽_물어\" },\r\n { \"sid\": 905, \"name\": \"빠가뇽_뒹굴\" },\r\n { \"sid\": 906, \"name\": \"빠가뇽_배고파\" },\r\n { \"sid\": 907, \"name\": \"빠가뇽_장미꽃\" },\r\n { \"sid\": 908, \"name\": \"빠가뇽_닭쳐\" },\r\n { \"sid\": 909, \"name\": \"빠가뇽_토닥\" },\r\n { \"sid\": 910, \"name\": \"빠가뇽_후다닥\" },\r\n { \"sid\": 911, \"name\": \"빠가뇽_풉\" },\r\n { \"sid\": 912, \"name\": \"빠가뇽_관심좀\" },\r\n { \"sid\": 913, \"name\": \"빠가뇽_이놈의인기\" },\r\n { \"sid\": 914, \"name\": \"빠가뇽_놀아줘\" },\r\n { \"sid\": 915, \"name\": \"빠가뇽_Good\" },\r\n { \"sid\": 916, \"name\": \"빠가뇽_이쁜짓\" },\r\n { \"sid\": 917, \"name\": \"빠가뇽_춤\" },\r\n { \"sid\": 918, \"name\": \"빠가뇽_부끄\" },\r\n { \"sid\": 919, \"name\": \"빠가뇽_고독\" },\r\n { \"sid\": 920, \"name\": \"빠가뇽_약속\" },\r\n { \"sid\": 921, \"name\": \"빠가뇽_굿밤\" },\r\n { \"sid\": 922, \"name\": \"빠가뇽_bye\" },\r\n { \"sid\": 923, \"name\": \"빠가뇽_진상\" }],\r\n\r\n //gid 10------------------------------------------------\r\n[ {\"sid\": 1000, \"name\": \"k_짱\" },\r\n { \"sid\": 1001, \"name\": \"k_쫌\" },\r\n { \"sid\": 1002, \"name\": \"k_콜\" },\r\n { \"sid\": 1003, \"name\": \"k_쉿\" },\r\n { \"sid\": 1004, \"name\": \"k_흥\" },\r\n { \"sid\": 1005, \"name\": \"k_뿅\" },\r\n { \"sid\": 1006, \"name\": \"k_힘내\" },\r\n { \"sid\": 1007, \"name\": \"k_니가\" },\r\n { \"sid\": 1008, \"name\": \"k_움찔\" },\r\n { \"sid\": 1009, \"name\": \"k_오호\" },\r\n { \"sid\": 1010, \"name\": \"k_어때\" },\r\n { \"sid\": 1011, \"name\": \"k_외롭다옹\" },\r\n { \"sid\": 1012, \"name\": \"k_뚝뚝\" },\r\n { \"sid\": 1013, \"name\": \"k_뿡\" },\r\n { \"sid\": 1014, \"name\": \"k_버럭\" },\r\n { \"sid\": 1015, \"name\": \"k_두근두근\" },\r\n { \"sid\": 1016, \"name\": \"k_토닥토닥\" },\r\n { \"sid\": 1017, \"name\": \"k_짝짝짝\" },\r\n { \"sid\": 1018, \"name\": \"k_불금\" },\r\n { \"sid\": 1019, \"name\": \"k_그저웃지요\" },\r\n { \"sid\": 1020, \"name\": \"k_지켜보고있다\" },\r\n { \"sid\": 1021, \"name\": \"k_미안하다사랑한다\" },\r\n { \"sid\": 1022, \"name\": \"k_참잘했어요\" },\r\n { \"sid\": 1023, \"name\": \"k_참잘났어요\" }],\r\n\r\n //gid 11------------------------------------------------\r\n[ {\"sid\": 1100, \"name\": \"e_Hi\" },\r\n { \"sid\": 1101, \"name\": \"e_Bye\" },\r\n { \"sid\": 1102, \"name\": \"e_Smile\" },\r\n { \"sid\": 1103, \"name\": \"e_Good\" },\r\n { \"sid\": 1104, \"name\": \"e_Bad\" },\r\n { \"sid\": 1105, \"name\": \"e_Have a nice day\" },\r\n { \"sid\": 1106, \"name\": \"e_Good morning\" },\r\n { \"sid\": 1107, \"name\": \"e_Good night\" },\r\n { \"sid\": 1108, \"name\": \"e_Rainy day\" },\r\n { \"sid\": 1109, \"name\": \"e_Sorry\" },\r\n { \"sid\": 1110, \"name\": \"e_Thank you\" },\r\n { \"sid\": 1111, \"name\": \"e_OMG\" },\r\n { \"sid\": 1112, \"name\": \"e_OTL\" },\r\n { \"sid\": 1113, \"name\": \"e_Diet\" },\r\n { \"sid\": 1114, \"name\": \"e_Tea time\" },\r\n { \"sid\": 1115, \"name\": \"e_Wow\" },\r\n { \"sid\": 1116, \"name\": \"e_Oops\" },\r\n { \"sid\": 1117, \"name\": \"e_Yeah\" },\r\n { \"sid\": 1118, \"name\": \"e_Thinking of you\" },\r\n { \"sid\": 1119, \"name\": \"e_Just do it\" },\r\n { \"sid\": 1120, \"name\": \"e_Reset\" },\r\n { \"sid\": 1121, \"name\": \"e_Happy birthday\" },\r\n { \"sid\": 1122, \"name\": \"e_Congrats\" },\r\n { \"sid\": 1123, \"name\": \"e_Happy new year\" },\r\n { \"sid\": 1124, \"name\": \"e_Halloween\" },\r\n { \"sid\": 1125, \"name\": \"e_Christmas\" },\r\n { \"sid\": 1126, \"name\": \"e_1225\" },\r\n { \"sid\": 1127, \"name\": \"e_0214\" },\r\n { \"sid\": 1128, \"name\": \"e_0314\" },\r\n { \"sid\": 1129, \"name\": \"e_1111\" }],\r\n\r\n //gid 12------------------------------------------------\r\n[ {\"sid\": 1200, \"name\": \"기르타스_거만\" },\r\n { \"sid\": 1201, \"name\": \"기르타스_당황\" },\r\n { \"sid\": 1202, \"name\": \"기르타스_화남\" },\r\n { \"sid\": 1203, \"name\": \"기르타스_슬픔\" },\r\n { \"sid\": 1204, \"name\": \"기르타스_깜찍\" },\r\n { \"sid\": 1205, \"name\": \"기르타스_놀람\" },\r\n { \"sid\": 1206, \"name\": \"기르타스_침묵\" },\r\n { \"sid\": 1207, \"name\": \"기르타스_샤방\" },\r\n { \"sid\": 1208, \"name\": \"기르타스_답답\" },\r\n { \"sid\": 1209, \"name\": \"기르타스_행복\" },\r\n { \"sid\": 1210, \"name\": \"기르타스_뻘쭘\" },\r\n { \"sid\": 1211, \"name\": \"기르타스_심각\" }],\r\n\r\n //gid 13------------------------------------------------\r\n[ {\"sid\": 1300, \"name\": \"시크_love\" },\r\n { \"sid\": 1301, \"name\": \"시크_나잡아봐라\" },\r\n { \"sid\": 1302, \"name\": \"시크_넌내가지킨다\" },\r\n { \"sid\": 1303, \"name\": \"시크_반함\" },\r\n { \"sid\": 1304, \"name\": \"시크_완전반함\" },\r\n { \"sid\": 1305, \"name\": \"시크_뽀뽀\" },\r\n { \"sid\": 1306, \"name\": \"시크_바람\" },\r\n { \"sid\": 1307, \"name\": \"시크_선물\" },\r\n { \"sid\": 1308, \"name\": \"시크_movie\" },\r\n { \"sid\": 1309, \"name\": \"시크_뭐먹지\" },\r\n { \"sid\": 1310, \"name\": \"시크_teatime\" },\r\n { \"sid\": 1311, \"name\": \"시크_연인\" },\r\n { \"sid\": 1312, \"name\": \"시크_어장관리\" },\r\n { \"sid\": 1313, \"name\": \"시크_기대\" },\r\n { \"sid\": 1314, \"name\": \"시크_쵝오\" },\r\n { \"sid\": 1315, \"name\": \"시크_여행\" },\r\n { \"sid\": 1316, \"name\": \"시크_훗\" },\r\n { \"sid\": 1317, \"name\": \"시크_웃겨\" },\r\n { \"sid\": 1318, \"name\": \"시크_후릅\" },\r\n { \"sid\": 1319, \"name\": \"시크_몰라잉\" },\r\n { \"sid\": 1320, \"name\": \"시크_의기소침\" },\r\n { \"sid\": 1321, \"name\": \"시크_흑흑\" },\r\n { \"sid\": 1322, \"name\": \"시크_눈물\" },\r\n { \"sid\": 1323, \"name\": \"시크_잔소리\" },\r\n { \"sid\": 1324, \"name\": \"시크_퍽\" },\r\n { \"sid\": 1325, \"name\": \"시크_메롱\" },\r\n { \"sid\": 1326, \"name\": \"시크_분노\" },\r\n { \"sid\": 1327, \"name\": \"시크_공포\" },\r\n { \"sid\": 1328, \"name\": \"시크_째려보기\" },\r\n { \"sid\": 1329, \"name\": \"시크_당황\" },\r\n { \"sid\": 1330, \"name\": \"시크_휑\" }]\r\n];\r\n\r\nNP.StickerData.list = [\r\n {\r\n cls : 'emoticon',\r\n tit : '이모티콘',\r\n gid : 0\r\n },\r\n {\r\n cls : 'bns',\r\n tit : '블레이드 & 소울',\r\n gid : 1\r\n },\r\n {\r\n cls : 'grgr',\r\n tit : '가렛의 GrGr 아이온',\r\n gid : 2\r\n },\r\n {\r\n cls : 'sayyo',\r\n tit : '치싫의 대충말해 YO',\r\n gid : 3\r\n },\r\n {\r\n cls : 'noisy',\r\n tit : '배동의 좌충우돌 스티커',\r\n gid : 4\r\n },\r\n {\r\n cls : 'lineageguide',\r\n tit : '이레이의 리니지 행동 지침서',\r\n gid : 5\r\n },\r\n {\r\n cls : 'plus',\r\n tit : '하얀가루의 PLUS+',\r\n gid : 6\r\n },\r\n {\r\n cls : 'lovebeat',\r\n tit : '제3의 물결의 친절돋는 스티커',\r\n gid : 7\r\n }, \r\n {\r\n cls : 'astalos',\r\n tit : '빈유 충각단의 포화란',\r\n gid : 8\r\n },\r\n {\r\n cls : 'bgn',\r\n tit : '빠가뇽의 우당탕탕 블소',\r\n gid : 9\r\n },\r\n {\r\n cls : 'text_k',\r\n tit : 'Oops! 영어로 말해 Yo',\r\n gid : 10\r\n },\r\n {\r\n cls : 'text_e',\r\n tit : '뿅! 흥! 쉿! 재치있는 한글',\r\n gid : 11\r\n },\r\n {\r\n cls : 'kirtas',\r\n tit : '지배자의 부활 기르타스',\r\n gid : 12\r\n },\r\n {\r\n cls : 'chicover',\r\n tit : '시크 발랄한 연인들',\r\n gid : 13\r\n }\r\n];\r\n","// TODO 이모티콘 메뉴 배경 이미지 미리 불러오기\r\nNP.emoticonLayer = ( function( $, util, MsgPreview, EmoticonData, StickerData ) {\r\n\r\n\tvar menuTemplate = util.getTemplate( '
    • #{= it.name }#
    • ' ),\r\n\t\ttopNaviTimer = null,\r\n\t\t$el = null,\r\n\t\t$closeButton = null,\r\n\t\t$pane = null,\r\n\t\t$emoticonList = null,\r\n\t\t$stickerList = null,\r\n\t\t$topNavi = null,\r\n\t\t$bottomNaviWrap = null,\r\n\t\t$overflow = null,\r\n\t\t$bottomNavi = null,\r\n\t\t$buttonWrap = null,\r\n\t\t$prevButton = null,\r\n\t\t$nextButton = null,\r\n\r\n\t\tselectedMenu = null,\r\n\t\tbottomNaviWidth = null,\r\n\t\tbottomNaviListWidth = null,\r\n\t\tbuttonPrevWidth = null,\r\n\t\tbuttonNextWidth = null,\r\n\r\n\t\temoticonPageSize = 27,\r\n\t\tstickerPageSize = 10,\r\n\t\tMsgForm = null,\r\n\t\tcaretPosition = 0,\r\n\t\tlist = [];\r\n\r\n\tfor( var i = 0; NP.StickerData.list[ i ]; i += 1 ){\r\n\t\tvar group = NP.StickerData.list[ i ];\r\n\t\tvar menu = $( menuTemplate({\r\n\t\t\tcName : group.cls,\r\n\t\t\tname : group.tit,\r\n\t\t\tgroupId : group.gid\r\n\t\t}));\r\n\t\t\r\n\t\tlist.push( menu );\r\n\t};\r\n\t\r\n\t// 초기화\r\n\tfunction init( parentNode ) {\r\n\t\tcaretPosition = 0;\r\n\t\t\r\n\t\tif( MsgForm ){\r\n\t\t\thide();\r\n\t\t\tMsgForm = null;\r\n\t\t};\r\n\t\t\r\n\t\tMsgForm = parentNode;\r\n\t\t\r\n\t\t//메시지 입력시 커서 위치 저장\r\n\t\tMsgForm && MsgForm.find( '.comment input' ).on( 'keyup', function(){\r\n\t\t\tif( !MsgForm ) caretPosition = 0;\r\n\t\t\tvar pane = MsgForm.find( '.comment input' );\r\n\t\t\tcaretPosition = NP.Util.getCaretPosition( pane );\r\n\t\t});\r\n\t\t\r\n\t\tif ( $el ) {\r\n\t\t\tparentNode.append( $el );\r\n\t\t\tMsgPreview && MsgPreview.hide();\r\n\t\t\tshow();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\trender();\r\n\t\teventBinding();\r\n\t\tMsgPreview.init();\r\n\t\tshow();\r\n\t}\r\n\t\r\n\t// 마크업 생성\r\n\tfunction render() {\r\n\t\t$el = $( '
      ' );\r\n\t\t$closeButton = $( '닫기' );\r\n\t\t$pane = $( '
      ' );\r\n\t\t$emoticonList = $( '
        ' );\r\n\t\t$stickerList = $( '
          ' );\r\n\t\t$topNavi = $( '' );\r\n\t\t$bottomNaviWrap = $( '
          ' );\r\n\t\t$overflow = $( '
          ' );\r\n\t\t$bottomNavi = $( '
            ' );\r\n\t\t$buttonWrap = $( '' );\r\n\t\t$prevButton = $( '이전목록' );\r\n\t\t$nextButton = $( '다음목록' );\r\n\r\n\t\t$overflow.append( $bottomNavi );\r\n\t\t$pane.append( $emoticonList, $stickerList );\r\n\t\t$buttonWrap.append( $prevButton, $nextButton );\r\n\t\t$bottomNaviWrap.append( $overflow, $buttonWrap );\r\n\t\t$el.append( $topNavi, $pane, $bottomNaviWrap, $closeButton );\r\n\t\tMsgForm.append( $el );\r\n\t\t\r\n\t\t$( list ).each(function() {\r\n\t\t\t$bottomNavi.append( $( this ) );\r\n\t\t});\t\t\r\n\t\t\r\n\t}\r\n\r\n\t// 이벤트 바인딩\r\n\tfunction eventBinding() {\r\n\t\t// 이모티콘 레이어 닫기\r\n\t\t$closeButton.click(function() {\r\n\t\t\thide();\r\n\t\t});\r\n\r\n\t\t// 이전 버튼 클릭 시 스크롤\r\n\t\t$prevButton.click(function() {\r\n\t\t\t$bottomNavi.animate({\r\n\t\t\t\tleft : 0\r\n\t\t\t}, 200);\r\n\t\t});\r\n\t\t\r\n\t\t// 다음 버튼 클릭 시 스크롤\r\n\t\t$nextButton.click(function() {\r\n\t\t\tvar scrollTerm = $bottomNavi.width() - $el.width() - $prevButton.width() / 2;\r\n\t\t\t$bottomNavi.animate({\r\n\t\t\t\tleft : -scrollTerm\r\n\t\t\t}, 200);\r\n\t\t});\r\n\r\n\t\t//커서 위치 저장\r\n\t\t$( 'body' ).on( 'click', function(){\r\n\t\t\tif( !MsgForm ) caretPosition = 0;\r\n\t\t\tvar pane = MsgForm.find( '.comment input' );\r\n\t\t\tcaretPosition = NP.Util.getCaretPosition( pane );\r\n\t\t});\r\n\r\n\t\t// 바닥 네비 선택\r\n\t\t$( list ).each(function() {\r\n\t\t\t$( this ).click(function( e ) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tvar $clicked = $( this );\r\n\r\n\t\t\t\t// 같은 메뉴 반복 클릭 시 무시\r\n\t\t\t\tif ( selectedMenu === this ) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tselectedMenu = this;\r\n\r\n\t\t\t\t$clicked.siblings().removeClass( 'on' );\r\n\t\t\t\t$clicked.siblings().find( 'a' ).removeClass( 'on' );\r\n\t\t\t\t\r\n\t\t\t\t$clicked.addClass( 'on' );\r\n\t\t\t\t$clicked.find( 'a' ).addClass( 'on' );\r\n\r\n\t\t\t\t$pane.empty();\r\n\r\n\t\t\t\tif ( $clicked.hasClass( 'emoticon' ) ) { // 이모티콘\r\n\t\t\t\t\tsetNavi( Math.ceil( EmoticonData.length / emoticonPageSize ) );\r\n\t\t\t\t\t$topNavi.removeClass( 'sticker' ).addClass( 'emoticon' );\r\n\t\t\t\t\ttopNaviSelect( $topNavi.find( 'a:first' ) );\r\n\t\t\t\t} else { // 스티커\r\n\t\t\t\t\tsetNavi( Math.ceil( \r\n\t\t\t\t\t\tStickerData[ $clicked.data( 'gid' ) - 1 ].length / stickerPageSize ), true );\r\n\t\t\t\t\t$topNavi.removeClass( 'emoticon' ).addClass( 'sticker' );\r\n\t\t\t\t\ttopNaviSelect( $topNavi.find( 'a:first' ), true );\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t// 상단 네비 선택\r\n\t\tfunction topNaviSelect( context ) {\r\n\t\t\tvar $clicked = $( context ),\r\n\t\t\t\t$parent = $clicked.parent();\r\n\r\n\t\t\t$parent.find( 'a' ).removeClass( 'on' );\r\n\t\t\t$clicked.addClass( 'on' );\r\n\t\t\t$pane.find( '.emoticon-list' ).remove();\r\n\t\t\t\r\n\t\t\t$pane.append( setPage( $clicked.data( 'page' ) ) );\r\n\t\t};\r\n\t\t\r\n\t\t$el.on( 'click mouseenter', '.navList a', function( e ) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tvar context = this;\r\n\r\n\t\t\tif ( e.type === 'mouseenter' ) {\r\n\t\t\t\tclearTimeout( topNaviTimer );\r\n\t\t\t\ttopNaviTimer = setTimeout(function() {\r\n\t\t\t\t\ttopNaviSelect( context );\r\n\t\t\t\t}, 100);\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\ttopNaviSelect( context );\r\n\t\t});\r\n\t\t$el.on( 'mouseleave', '.navList a', function() {\r\n\t\t\tclearTimeout( topNaviTimer );\r\n\t\t});\r\n\r\n\t\t// 이모티콘 선택\r\n\t\t$pane.on( 'click', '.emoticon-list li.emoticon a', function( e ) {\r\n\t\t\te.preventDefault();\r\n\t\t\t\r\n\t\t\tvar input = MsgForm.find( '.comment input' );\r\n\t\t\tvar\timg = $( this ).find( 'img' ).attr( 'alt' );\r\n\t\t\tvar\tcaret = caretPosition;\r\n\t\t\t\r\n\t\t\tinput.focus();\r\n\t\t\tif( caret ){\r\n\t\t\t\tvar pre = input.val().substring( 0, caret ),\r\n\t\t\t\t\tend = input.val().substring( caret );\r\n\t\t\t\tinput.val( pre + img + end );\r\n\t\t\t\tcaretPosition = caret + img.length;\r\n\t\t\t}else{\r\n\t\t\t\tvar value = input.val();\r\n\t\t\t\tinput.val( value + img );\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\t// 스티커 선택\r\n\t\t$pane.on( 'click', '.emoticon-list li.sticker a', function( e ) {\r\n\t\t\te.preventDefault();\r\n\t\t\tvar img = $( this ).find( 'img' );\r\n\t\t\t$el.prev( '.wrap_form' ).append( MsgPreview.render( {'animation': img.attr( 'src' ), 'name': img.attr( 'alt' )} ) );\r\n\t\t\tMsgPreview.show();\r\n\t\t\tMsgForm.find( '.comment input' ).focus();\r\n\t\t});\r\n\t};\r\n\r\n\t// 상단 네비 세팅\r\n\tfunction setNavi( pageCount ) {\r\n\t\t$topNavi.empty();\r\n\t\t\r\n\t\tfor ( var i = 0; i < pageCount; i += 1 ) {\r\n\t\t\t$topNavi.append( '' + i + '' );\r\n\t\t}\r\n\t};\r\n\r\n\t// 페이징 세팅\r\n\tfunction setPage( page ) {\r\n\t\tif( $topNavi.hasClass( 'sticker' ) ){//스티커 페이징\r\n\t\t\tvar cache = $stickerList.clone(),\r\n\t\t\t\tgid = $( selectedMenu ).data( 'gid' ),\r\n\t\t\t\tgName = $( selectedMenu ).data( 'gname' );\r\n\t\t\t\r\n\t\t\tfor ( var i = page * stickerPageSize, len = page * stickerPageSize + stickerPageSize ; i < len; i += 1 ) {\r\n\t\t\t\tvar sticker = StickerData[ gid - 1 ][ i ];\r\n\t\t\t\t\r\n\t\t\t\tif( !sticker ) break;\r\n\t\t\t\t\r\n\t\t\t\tvar\tname = sticker.name,\r\n\t\t\t\t\tsid = ( sticker.sid + 1 ),\r\n\t\t\t\t\twidth = sticker.width,\r\n\t\t\t\t\theight = sticker.height,\r\n\t\t\t\t\tuseSid = ( sid + '' ).slice( ( sid + '' ).length - 2 );\r\n\r\n\t\t\t\tcache.append( '
          • \"{{'
          • ' );\r\n\t\t\t}\t\t\t\r\n\t\t}else{//이모티콘 페이징\r\n\t\t\tvar cache = $emoticonList.clone();\r\n\t\t\t\r\n\t\t\tfor ( var i = page * emoticonPageSize, len = page * emoticonPageSize + emoticonPageSize ; i < len; i += 1 ) {\r\n\t\t\t\tvar emoticon = EmoticonData[ i ];\r\n\t\t\t\t\r\n\t\t\t\tif( !emoticon ) break;\r\n\t\t\t\t\r\n\t\t\t\tcache.append( '
          • \"('
          • ' );\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn cache;\r\n\t}\r\n\r\n\t// 이모티콘 레이어 보이기\r\n\tfunction show() {\r\n\t\t$el.addClass( 'fadeIn' ).show();\r\n\r\n\t\tsetTimeout(function() {\r\n\t\t\t!selectedMenu && $bottomNavi.children().first().trigger( 'click' ); // 최초에는 이모티콘 선택\r\n\t\t\t$bottomNavi.find( '.on' ).find( 'a' ).focus();\r\n\t\t}, 1 );\r\n\t}\r\n\r\n\t// 이모티콘 레이어 감추기\r\n\tfunction hide() {\r\n\t\tif ( !$el || ( $el && !$el.is( ':visible' ) ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tcaretPosition = 0;\r\n\t\t$el.hide().removeClass( 'fadeIn' );\r\n\t\tMsgPreview.hide();\r\n\t}\r\n\r\n\t//뷰에 이모티콘 변환 노출\r\n\tfunction renderEmoticion( text, forceSmallType ) {\r\n\t\t\r\n\t\ttext = renderSticker( text );\r\n\t\t\r\n\t\tif ( !text.match( /\\(.+\\)/g ) ) {\r\n\t\t\treturn text\r\n\t\t}\r\n\r\n\t\tfor( var item = 0, len = EmoticonData.length; len > item; item += 1 ){\r\n\t\t\tvar name = EmoticonData[ item ].name[ 0 ],\r\n\t\t\t\turl = EmoticonData[ item ].url;\r\n\t\t\t\r\n\t\t\tvar text = text.replace( new RegExp( '\\\\((' + name + ')\\\\)', 'g' ), function( match ) {\r\n\t\t\t\treturn '\"'';\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn text;\r\n\t};\r\n\t\r\n\t//뷰에 스티커 변환 노출\r\n\tfunction renderSticker( text ) {\r\n\t\tif ( !text.match( /\\{\\{.+\\}\\}/g ) ) {\r\n\t\t\treturn text;\r\n\t\t}\r\n\r\n\t\tvar list = NP.StickerData.list;\r\n\t\tfor( var i = 1, len = StickerData.length; len >= i; i += 1 ){\r\n\t\t\tfor( var j = 0, jlen = StickerData[ i - 1 ].length; jlen > j; j += 1 ){\r\n\t\t\t\tvar sticker = StickerData[ i - 1 ][ j ],\r\n\t\t\t\t\tname = sticker.name,\r\n\t\t\t\t\tgroupName = list[ i ].cls,\r\n\t\t\t\t\tsid = ( sticker.sid + 1 ),\r\n\t\t\t\t\tuseSid = ( sid + '' ).slice( ( sid + '' ).length - 2 );\t\r\n\r\n\t\t\t\t\r\n\t\t\t\tvar text = text.replace( new RegExp('\\{\\{' + name + '\\}\\}', 'g') , function( match ) {\r\n\t\t\t\t\tvar img = '\"{{'';\r\n\t\t\t\t\treturn '
            '+ img +'
            ';\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn text;\r\n\t};\t\t\r\n\r\n\t// API\r\n\treturn {\r\n\t\trenderEmoticion: renderEmoticion,\r\n\t\trenderSticker: renderSticker,\r\n\t\tinit : init,\r\n\t\thide :hide\r\n\t};\r\n}( jQuery, NP.Util, NP.MsgPreview, NP.EmoticonData, NP.StickerData ));\r\n","// 타임라인이 있을 경우\r\nif ( NP.timeline.length ) {\r\n\r\nNP.isEnded = false;\r\nNP.contentCount = 0;\r\n\r\n// Get Time\r\nNP.Time = function( time ) {\r\n\t/*\r\n\t\t- 0~60초\t\t: 예) 지금 막\r\n\t\t- 1~60분\t\t: 각 분단위로 표시 예) 1분 전\r\n\t\t- 1시간~24시간\t: 시간단위로 표시 예) 약 1시간 전\r\n\t\t- 1일이상\t\t: 날짜 및 시간으로 표시 예) 2011.05.23 11:10:10\r\n\r\n\t\t- 60000 = 60초\r\n\t\t- 3600000 = 60분\r\n\t\t- 86400000 = 24시간\r\n\t*/\r\n\r\n\tvar diff = ( NP.now - time ) / 1000,\r\n\t\tpast = new Date( time ),\r\n\t\tleadingZeros = function( n, digits ) {\r\n\t\t\tvar zero = '',\r\n\t\t\t\tlen = n.toString().length,\r\n\t\t\t\ti = 0;\r\n\r\n\t\t\tif ( len < digits ) {\r\n\t\t\t\tfor ( ; i < digits - len; i += 1 ) {\r\n\t\t\t\t\tzero += '0';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn zero + n;\r\n\t\t};\r\n\r\n\tif ( diff < 60 ) {\r\n\t\ttime = '지금 막';\r\n\t} else if ( diff >= 60 && diff < 3600 ) {\r\n\t\ttime = parseInt( diff / 60 ) + '분 전';\r\n\t} else if ( diff >= 3600 && diff < 86400 ) {\r\n\t\ttime = '약 ' + parseInt( diff / ( 60 * 60 ) ) + '시간 전';\r\n\t} else if ( diff >= 86400 ) {\r\n\t\ttime = leadingZeros( past.getFullYear(), 4 ) + '.' + leadingZeros( past.getMonth() + 1, 2 ) + '.' + leadingZeros( past.getDate(), 2 ) + ' ' + leadingZeros( past.getHours(), 2 ) + ':' + leadingZeros( past.getMinutes(), 2 ) + ':' + leadingZeros( past.getSeconds(), 2 );\r\n\t}\r\n\r\n\treturn time;\r\n};\r\nNP.Time.term = 60000; // 1분\r\nNP.Time.set = function() {\r\n\tvar timeEl = NP.body.find( 'time' ),\r\n\t\ttime,\r\n\t\tsave,\r\n\t\tel;\r\n\r\n\tNP.now = NP.now + NP.Time.term;\r\n\r\n\tjQuery.each( timeEl, function( index ) {\r\n\t\tel = jQuery( this );\r\n\t\ttime = jQuery.data( el[ 0 ] ).time;\r\n\t\tsave = NP.Time( time );\r\n\r\n\t\tif ( time && el.text() !== save ) {\r\n\t\t\tNP.fadeIn( el.text( save ).css( 'opacity', 0.2 ) );\r\n\t\t}\r\n\t});\r\n\r\n\tsetTimeout( NP.Time.set, NP.Time.term );\r\n};\r\n\r\nNP.charInfo = {};\r\n// Timeline\r\nNP.Timeline = (function( $ ) {\r\n\tvar tplParser = NP.ns( 'Util.tplParser' ),\r\n\t\tellipsis = NP.ns( 'Util.ellipsis' ),\r\n\t\tgetParam = NP.ns( 'Util.getParam' ),\r\n\t\tvalidate = NP.ns( 'Util.validate' ),\r\n\t\tsaveLastNum,\r\n\t\tlimitLength = 500,\r\n\t\twritable = 0, // 0 : 글쓰기 권한 없음, 1 : 글쓰기 권한 있음, 2 : 제재된 계정(권한없음)\r\n\t\tloading = $( '

            ' ),\r\n\t\tisLoaded = false;\r\n\r\n\tvar feedReplace = function( data, postData ){\r\n\t\tvar limitLength = 500;\r\n\t\tvar contents = data;\r\n\t\tvar feedContents = '';\r\n\t\tvar _prefix = '';\r\n\t\t\r\n\t\t//공방 제작 추가\r\n\t\t_prefix = data.match( /^\\[.+\\]<\\/em>|\\[.+\\]<\\/em>/ );\r\n\r\n\t\tif ( _prefix && _prefix[ 0 ] ) {\r\n\t\t\tdata = data.substr( _prefix[ 0 ].length );\r\n\t\t}else{\r\n\t\t\t_prefix = '';\r\n\t\t}\r\n\t\t\r\n\t\tif( /isGameFeed|
            limitLength ) {\r\n\t\t\tpostData.siempre = contents;\r\n\t\t\tcontents = ellipsis( contents, limitLength );\r\n\t\t}\r\n\r\n\t\tcontents = NP.AutoLink( validate( contents.replace( /\\n/g, '
            ' ) ) );\r\n\r\n\t\treturn _prefix + contents + feedContents;\r\n\t}\r\n\r\n\t// Set Data\r\n\tNP.onProcessing.add(function( article, datum ) {\r\n\t\t\r\n\t\ttry {\r\n\t\t\t$.each( article, function( index ) {\r\n\r\n\t\t\t\tvar item = $( this ),\r\n\t\t\t\t\treply,\r\n\t\t\t\t\taData = datum[ index ] || datum;\r\n\r\n\t\t\t\titem.attr( 'id', 'article_' + ( aData.postTxtSeq || aData.post.postTxtSeq) );\r\n\t\t\t\t\r\n\t\t\t\tif ( aData.actType === \"LIKE_POST\" ) {\r\n\t\t\t\t\t$.data( item[ 0 ], {\r\n\t\t\t\t\t\torgPostTxtSeq : aData.refTimeline && aData.refTimeline.post.postTxtSeq,\r\n\t\t\t\t\t\torgActType : aData.refTimeline && aData.refTimeline.actType,\r\n\t\t\t\t\t\torgWrtPlayncAcctId : aData.refTimeline && aData.refTimeline.post.wrtPlayncAcctId,\r\n\t\t\t\t\t\torgWrtPlayncAcctNm : aData.refTimeline && aData.refTimeline.post.wrtPlayncAcctNm\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// 글\r\n\t\t\t\t$.data( item[ 0 ], {\r\n\t\t\t\t\tpostTxtSeq : aData.postTxtSeq || aData.post.postTxtSeq, // 글 번호\r\n\t\t\t\t\tpostTorg: aData.postTorg,\r\n\t\t\t\t\tactType : aData.actType, // Activity 종류\r\n\t\t\t\t\twrtPlayncAcctId : aData.post.wrtPlayncAcctId, // 작성자 GUID\r\n\t\t\t\t\twrtPlayncAcctNm : aData.post.wrtPlayncAcctNm, // 작성자 닉네임\r\n\t\t\t\t\tpostTxtTorgId : aData.post.postTxtTorgId, // 글주인 GUID\r\n\t\t\t\t\tpostTxtOpenClfSeq : aData.post.postTxtOpenClfSeq // 글 공개 구분\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// 댓글\r\n\t\t\t\tif ( aData.refTimeline && aData.refTimeline.replyList && aData.refTimeline.replyList.length ) { // 좋아요 한 글일 경우\r\n\t\t\t\t\treply = item.find( '.list_comment li' );\r\n\t\t\t\t\tNP.onProcessingReply.fire( reply, aData.refTimeline.replyList );\r\n\t\t\t\t} else {\r\n\t\t\t\t\treply = item.find( '.list_comment li' );\r\n\t\t\t\t\tNP.onProcessingReply.fire( reply, ( aData.replyList ) );\r\n\t\t\t\t}\r\n\t\t\t\t/*if ( ( aData.refTimeline && aData.refTimeline.replyList.length ) || ( aData.replyList && aData.replyList.length ) ) {\r\n\t\t\t\t\treply = item.find( '.list_comment li' );\r\n\t\t\t\t\tNP.onProcessingReply.fire( reply, ( aData.refTimeline.replyList || aData.replyList ) );\r\n\t\t\t\t}*/\r\n\r\n\t\t\t\t// 글 시간\r\n\t\t\t\tif ( item = item.find( 'time' )[ 0 ] ) {\r\n\t\t\t\t\t$.data( item, {\r\n\t\t\t\t\t\ttime : aData.post.creDttm\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} catch( e ) {}\r\n\t});\r\n\r\n\t// 글 조회\r\n\tNP.timeline.length && NP.onDomLoad.add(function() {\r\n\t\tvar postTxtSeq = getParam( 'postTxtSeq' );\r\n\r\n\t\tNP.onBeforeGetTimeline.fire(function() {\r\n\t\t\tif ( !parseInt( postTxtSeq ) ) { // 타임라인 글 조회\r\n\t\t\t\tNP.Timeline.get();\r\n\t\t\t} else { // 글 하나 조회\r\n\t\t\t\tNP.Timeline.getOne( postTxtSeq );\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t/* if ( !parseInt( postTxtSeq ) ) { // 타임라인 글 조회\r\n\t\t\tNP.Timeline.get();\r\n\t\t} else { // 글 하나 조회\r\n\t\t\tNP.Timeline.getOne( postTxtSeq );\r\n\t\t} */\r\n\t});\r\n\r\n\t// 더보기\r\n\tNP.timeline.on( 'click', 'article .viewOrigin a', function() {\r\n\t\tvar button = $( this ),\r\n\t\t\twrap = button.parent(),\r\n\t\t\torigin = button.next().eq( 0 ),\r\n\t\t\tcontent = wrap.prev( '.content' ),\r\n\t\t\t//infoTxt = content.find( '.info' ).clone().wrapAll( '
            ').parent().html();\r\n\t\t\tinfoTxt = content.find( '.info' ).html();\r\n\t\t\r\n\t\tinfoTxt = '
            ' + infoTxt + '
            ';\r\n\r\n\t\tcontent.replaceWith( origin.html().replace(/\\n/gi, '
            ') + infoTxt );\r\n\t\torigin.remove();\r\n\t\twrap.remove();\r\n\t});\r\n\r\n\t// 시간 갱신\r\n\tfunction timeRefresh() {\r\n\t\tsetTimeout( NP.Time.set, NP.Time.term );\r\n\t\tNP.onAfterTimelineLoad.remove( timeRefresh );\r\n\t}\r\n\tNP.onAfterTimelineLoad.add( timeRefresh );\r\n\r\n\t/* 디버깅용 코드 */\r\n\t/* NP.Debug && NP.timeline.on( 'click', 'article, article .list_comment li, article time', function() {\r\n\t\tconsole.log( $.data( $( this )[ 0 ] ) );\r\n\t}); */\r\n\r\n\treturn {\r\n\t\t// 글 목록 조회\r\n\t\tget : function( lastNum ) {\r\n\t\t\tif( NP.isLoading ) return;\r\n\t\t\t\r\n\t\t\tif( !NP.dt ) return;\r\n\r\n\t\t\tvar ownerGuid = ( !NP.dt.o && NP.dt.st == 'aion' && ( NP.dt.loc == 'characterguestbook' || NP.dt.loc == 'groupguestbook' ) )? \r\n\t\t\t\t\t'!!': NP.dt.o; \r\n\t\t\t$.ajax({\r\n\t\t\t\ttype : 'get',\r\n\t\t\t\tdataType : 'jsonp',\r\n\t\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + ownerGuid + '/' + NP.dt.st + '/timeline/more.jsonp?' + $.param({\r\n\t\t\t\t\tlastNum : lastNum || 0, // 글 목록 호출 시에는 0, 더보기 시에는 X번째\r\n\t\t\t\t\tpage : NP.dt.page, // timeline | wall\r\n\t\t\t\t\ttrgtId : getParam( 'trgtId' ),\r\n\t\t\t\t\tpostTxtSeq : 0,\r\n\t\t\t\t\tguildId: NP.dt.guildId || '',\r\n\t\t\t\t\tcharacterId: NP.dt.characterId || '',\r\n\t\t\t\t\tserverId: NP.dt.serverId || ''\r\n\t\t\t\t}),\r\n\t\t\t\tbeforeSend : function() {\r\n\t\t\t\t\tNP.isLoading = !0;\r\n\t\t\t\t\tNP.timeline.prepend( loading );\r\n\t\t\t\t},\r\n\t\t\t\tcomplete : function() {\r\n\t\t\t\t\tNP.isLoading = !1;\r\n\t\t\t\t\tNP.fadeOut( loading );\r\n\t\t\t\t},\r\n\t\t\t\tsuccess : function( data ) {\r\n\t\t\t\t\tNP.Timeline.set( data, false, lastNum );\r\n\t\t\t\t},\r\n\t\t\t\terror: function( data ){\r\n\t\t\t\t\tvar html = tplParser( NP.tmpl.systemErr )({}),\r\n\t\t\t\t\t\twriteWrap = $( '#writeShort' );\r\n\t\t\t\t\t\r\n\t\t\t\t\tNP.timeline.append( html );\r\n\t\t\t\t\twriteWrap.hide();\r\n\t\t\t\t\tNP.ScrollToLoad.clear();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\tgetOne : function( postTxtSeq ) {\r\n\t\t\tvar ownerGuid = ( !NP.dt.o && NP.dt.st == 'aion' && ( NP.dt.loc == 'characterguestbook' || NP.dt.loc == 'groupguestbook' ) )? \r\n\t\t\t\t\t'!!': NP.dt.o; \r\n\t\t\t$.ajax({\r\n\t\t\t\ttype : 'get',\r\n\t\t\t\tdataType : 'jsonp',\r\n\t\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + ownerGuid + '/' + NP.dt.st + '/timeline/more.jsonp?' + $.param({\r\n\t\t\t\t\tlastNum : 0, // 글 목록 호출 시에는 0, 더보기 시에는 X번째\r\n\t\t\t\t\tpage :NP.dt.page,\r\n\t\t\t\t\ttrgtId : getParam( 'trgtId' ),\r\n\t\t\t\t\tpostTxtSeq : postTxtSeq,\r\n\t\t\t\t\tguildId: NP.dt.guildId || '',\r\n\t\t\t\t\tcharacterId: NP.dt.characterId || '',\r\n\t\t\t\t\tserverId: NP.dt.serverId || ''\r\n\t\t\t\t}),\r\n\t\t\t\tsuccess : function( data ) {\r\n\t\t\t\t\tif ( !data.timeline ) { // TODO 없는 글을 조회했을 때 처리는?\r\n\t\t\t\t\t\tNP.timeline.append( '존재하지 않는 게시글입니다.' );\r\n\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//NP.Timeline.setOne( data );\r\n\t\t\t\t\tNP.Timeline.set( data, true );\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\tset : function( data, one, callLastNum ) { // one이 true 면 글 하나 조회\r\n\t\t\tvar tplParser = NP.ns( 'Util.tplParser' ),\r\n\t\t\t\thtml = '',\r\n\t\t\t\ttemplate,\r\n\t\t\t\tarticle,\r\n\t\t\t\tcount = 0,\r\n\t\t\t\ti = 0;\r\n\r\n\t\t\tvar writeWrap = $( '#writeShort' );\r\n\t\t\t\r\n\t\t\tif ( data.systemException ) {\r\n\r\n\t\t\t\thtml = tplParser( NP.tmpl.systemErr )({});\r\n\t\t\t\tNP.timeline.append( html );\r\n\t\t\t\twriteWrap.hide();\r\n\t\t\t\tNP.ScrollToLoad.clear();\r\n\t\t\t\treturn;\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\t// 글쓰기 권한 저장\r\n\t\t\twritable = data.writable;\r\n\t\t\t// 타임라인 마지막 flag\r\n\t\t\tNP.isLast = data.isLast;\r\n\t\t\t\r\n\t\t\topenClfSeq = 118;\r\n\t\t\tguestbookOpenClfSeq = 118;\r\n\t\t\tisMyCharacter = data.isMyCharacter;\r\n\t\t\t\r\n\t\t\tif( data.guestbook ) guestbookOpenClfSeq = data.guestbook.openClfSeq;\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t// 타임라인 갱신 시 글쓰기 권한이 사라지면 글쓰기 form 초기화\r\n\t\t\tif ( writable === 0 || writable === 2 ) {\r\n\t\t\t\tNP.WriteForm.reset();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif( data.isMyCharacter || data.isFriend || data.isFrind ){\r\n\t\t\t\topenClfSeq = 118;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif( data.guestbook ){\r\n\t\t\t\t//비공개\r\n\t\t\t\tif( data.guestbook.openClfSeq == 121 ){\r\n\t\t\t\t\topenClfSeq = 121;\r\n\t\t\t\t\tNP.ScrollToLoad.clear();\r\n\t\t\t\t\thtml = tplParser( ( NP.dt.page == 'groupguestbook' )? NP.tmpl.closedGroup: NP.tmpl.closedCharacter )( NP.dt );\r\n\t\t\t\t\tNP.timeline.append( html );\r\n\t\t\t\t\twriteWrap.hide();\r\n\t\t\t\t\t\r\n\t\t\t\t\t//방명록 공개설정\r\n\t\t\t\t\tNP.Timeline.setOpen();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t//친구공개\r\n\t\t\t\tif( data.guestbook.openClfSeq == 119 ){\r\n\t\t\t\t\tif( data.isMyCharacter || data.isFriend || data.isFrind ){\r\n\t\t\t\t\t\topenClfSeq = 118;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\topenClfSeq = 119;\r\n\t\t\t\t\t\tNP.ScrollToLoad.clear();\r\n\t\t\t\t\t\thtml = tplParser( NP.tmpl.closedFrdCharacter )( NP.dt );\r\n\t\t\t\t\t\tNP.timeline.append( html );\r\n\t\t\t\t\t\twriteWrap.hide();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t//방명록 공개설정\r\n\t\t\t\t\t\tNP.Timeline.setOpen();\r\n\t\t\t\t\t\treturn;\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif( data.guestbook.openClfSeq == 118 ){\r\n\t\t\t\t\t//전체공개\r\n\t\t\t\t\topenClfSeq = 118;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//제작공방, 기부/승인 모아보기 시 글쓰기 hide\r\n\t\t\tif( NP.dt.st == 'bns' && ( NP.dt.loc == 'groupdonate' || NP.dt.loc == 'groupsign' || NP.dt.loc == 'groupreceive' ) ){\r\n\t\t\t\twriteWrap.hide();\r\n\t\t\t\tif( !isLoaded && data.timeline.length < 5 ){\r\n\t\t\t\t\tjQuery( '.moreArticle' ).hide();NP.onAfterTimelineLoad.fire();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tif ( data.selector && !data.selector.totalCnt && !data.timeline.length ) { // 글이 없는 경우 = NP 서비스가 열림 | 문파 시작\r\n\t\t\t\t//if ( !data.timeline.length ) {\r\n\t\t\t\t\t\r\n\t\t\t\tif ( NP.dt.loc !== 'group' && NP.dt.loc !== 'characterguestbook' && NP.dt.loc !== 'groupguestbook' \r\n\t\t\t\t\t&& NP.dt.loc !== 'groupdonate' && NP.dt.loc !== 'groupsign' && NP.dt.loc !== 'groupreceive' ) {\r\n\t\t\t\t\t\tif( !callLastNum ) NP.timeline.find( '.wrap_recommendBns' ).show();\r\n\r\n\t\t\t\t\tNP.onAfterTimelineLoad.fire();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif( !isLoaded && NP.dt.st == 'bns' && ( NP.dt.loc == 'groupdonate' || NP.dt.loc == 'groupsign' || NP.dt.loc == 'groupreceive' ) ){\r\n\t\t\t\t\tNP.timeline.append( tplParser( NP.tmpl.noneData )( NP.dt ) );\r\n\t\t\t\t\tNP.onAfterTimelineLoad.fire();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif( !isLoaded && data.timeline.length < 5 ){\r\n\t\t\t\t\tif ( !NP.Util.getParam( 'postTxtSeq' ) ) {\r\n\t\t\t\t\t\tif ( NP.dt.loc === 'group' ) {\r\n\t\t\t\t\t\t\tif( !jQuery( '.openServiceGroupInfo' ).length ) \r\n\t\t\t\t\t\t\t\tNP.timeline.append( tplParser( NP.tmpl.openGroup )( NP.dt ) );\r\n\t\t\t\t\t\t} else if( NP.dt.loc === 'characterguestbook' ){\r\n\t\t\t\t\t\t\tif( !jQuery( '.openServiceInfo' ).length ) \r\n\t\t\t\t\t\t\t\tNP.timeline.append( tplParser( NP.tmpl.openGuestbook )( NP.dt ) );\r\n\t\t\t\t\t\t}else if( NP.dt.loc === 'groupguestbook' ){\r\n\t\t\t\t\t\t\tif( !jQuery( '.openServiceGroupInfo' ).length ) \r\n\t\t\t\t\t\t\t\tNP.timeline.append( tplParser( NP.tmpl.openGroupGuestbook )( NP.dt ) );\r\n\t\t\t\t\t\t}else if( NP.dt.loc === 'groupdonate' || NP.dt.loc === 'groupsign' || NP.dt.loc == 'groupreceive' ){\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif( !jQuery( '.openServiceInfo' ).length ) \r\n\t\t\t\t\t\t\t\tNP.timeline.append( tplParser( NP.tmpl.open )( NP.dt ) );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tNP.onAfterTimelineLoad.fire();\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\t\t\t\t\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\r\n\r\n\r\n\t\t\tNP.now = data.now || +new Date(); // 서버로부터 받은 현재 시간\r\n\t\t\tsaveLastNum = data.selector && data.selector.lastNum; // 로드된 마지막 글 번호\r\n\r\n\t\t\tfor ( ; article = data.timeline[ i ]; i += 1 ) {\r\n\t\t\t\tif ( ( article.refTimeline && article.refTimeline.post.delYn === 'Y' ) || article.post.delYn === 'Y' ) {\r\n\t\t\t\t\tcount++;\r\n\t\t\t\t\thtml += '
            삭제된 글입니다.
            ';\r\n\r\n\t\t\t\t\tif ( count == 15 ) {\r\n\t\t\t\t\t\tNP.Timeline.get( saveLastNum );\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if ( ( article.refTimeline && article.refTimeline.post.virtTxtYn === 'Y' ) || article.post.virtTxtYn === 'Y' ) { // 가상글일 경우( 외부글로 인해 발생한 )\r\n\t\t\t\t\tcount++;\r\n\t\t\t\t\thtml += '
            존재하지 않는 글입니다.
            ';\r\n\t\t\t\t\t\r\n\t\t\t\t\tif ( count == 15 ) {\r\n\t\t\t\t\t\tNP.Timeline.get( saveLastNum );\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t *article.post.postTxtTorgClfSeq\r\n\t\t\t\t\t *114 그룹 일반\r\n\t\t\t\t\t *155 그룹 기능\r\n\t\t\t\t\t *156 그룹 승인\r\n\t\t\t\t\t */\r\n\r\n\t\t\t\t\tif ( article.actType === 'POST' ) { // 글\r\n\t\t\t\t\t\ttemplate = NP.tmpl.article; // 내 공간에 쓴 글\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t//TODO\r\n\t\t\t\t\t\tif( article.post && article.post.wrtChrtNm ){\r\n\t\t\t\t\t\t\tarticle.post.wrtChrtNm = article.post.wrtChrtNm.replace( //g, '>' );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//article.postTorg !== \"GROUP\" && article.postTorg !== \"GROUP_DONATE\"\r\n\t\t\t\t\t\tif ( NP.dt.loc === 'wall' && \r\n\t\t\t\t\t\t\tarticle.post.postTxtTorgClfSeq !== 114 && article.post.postTxtTorgClfSeq !== 155 && article.post.postTxtTorgClfSeq !== 156 && \r\n\t\t\t\t\t\t\tarticle.post.postTxtTorgId !== article.post.wrtPlayncAcctId ) { // 다른 공간에 쓴 글, 그룹글은 제외\r\n\t\t\t\t\t\t\t\ttemplate = NP.tmpl.articleTo;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif ( article.post.extPostTxtId ) { // 외부글\r\n\t\t\t\t\t\t\ttemplate = NP.tmpl.articleExt;\r\n\t\t\t\t\t\t\tarticle.post.postTxtLongCont = $.trim( article.post.postTxtLongCont );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tarticle.post.postTxtLongCont = feedReplace( article.post.postTxtLongCont, article.post );\r\n\t\t\t\t\t} else if ( article.actType === 'LIKE_POST' ) {\r\n\t\t\t\t\t\t//template = NP.tmpl.actType[ article.actType ];\r\n\t\t\t\t\t\ttemplate = NP.tmpl.article; // 내 공간에 쓴 글\r\n\r\n\t\t\t\t\t\t// Data Manipulation\r\n\t\t\t\t\t\tarticle.refTimeline.orgActType = article.actType;\r\n\t\t\t\t\t\tarticle.refTimeline.orgPostTxtServClfSeq = article.post.postTxtServClfSeq;\r\n\t\t\t\t\t\tarticle.refTimeline.orgPostTxtTorgGameId = article.post.postTxtTorgGameId;\r\n\t\t\t\t\t\tarticle.refTimeline.postTxtTorgGameId = article.post.postTxtTorgGameId;\r\n\t\t\t\t\t\tarticle.refTimeline.orgWrtPlayncAccId = article.post.wrtPlayncAcctId;\r\n\t\t\t\t\t\tarticle.refTimeline.orgWrtPlayncAccNm = article.post.wrtPlayncAcctNm;\r\n\t\t\t\t\t\tarticle.refTimeline.orgWrtChrtNm = article.post.wrtChrtNm;\r\n\t\t\t\t\t\tarticle.refTimeline.orgWrtSvrId = article.post.wrtSvrId;\r\n\t\t\t\t\t\tarticle.refTimeline.orgWrtChrtId = article.post.wrtChrtId;\r\n\t\t\t\t\t\tarticle.refTimeline.orgWrtGameId = article.post.wrtGameId;\r\n\t\t\t\t\t\tarticle.refTimeline.orgCreDttm = article.post.creDttm;\r\n\t\t\t\t\t\tarticle = article.refTimeline;\r\n\r\n\t\t\t\t\t\tif ( article.post.postTxtTorgId !== article.post.wrtPlayncAcctId ) { // 다른 공간에 쓴 글\r\n\t\t\t\t\t\t\ttemplate = NP.tmpl.articleTo;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif ( article.post.extPostTxtId ) { // 외부글\r\n\t\t\t\t\t\t\ttemplate = NP.tmpl.articleExt;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tarticle.post.postTxtLongCont = feedReplace( article.post.postTxtLongCont, article.post );\r\n\t\t\t\t\t} else if ( NP.tmpl.actType[ article.actType ] ) { // Activity 글\r\n\t\t\t\t\t\t//\r\n\t\t\t\t\t\ttemplate = NP.tmpl.activity;\r\n\r\n\t\t\t\t\t\tif ( article.data ) { // 닉네임 변경, 프로필 정보 변경, 프로필 사진 변경\r\n\t\t\t\t\t\t\tarticle.data = article.data.split( '$!' ); // 개발팀에서 분기를 위해 찍어주는 특수문자\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tarticle.post.postTxtLongCont = ( tplParser( NP.tmpl.actType[ article.actType ] )( article ) );\r\n\t\t\t\t\t};\r\n\t\t\t\t\t\r\n\t\t\t\t\thtml += NP.likeByArticle( tplParser( template )( article ), article );\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\r\n\t\t\t\tNP.charInfo.wrtChrtNm = article.post.postTxtTorgNm;\r\n\t\t\t\tNP.charInfo.wrtSvrId = article.post.postTxtTorgSvrId;\r\n\t\t\t\tNP.charInfo.wrtChrtId = article.post.postTxtTorgChrtId;\r\n\t\t\t\tNP.charInfo.wrtGameId = article.post.postTxtTorgGameId;\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\tcount = 0;\r\n\r\n\t\t\thtml = $( html );\r\n\r\n\t\t\tNP.onProcessing.fire( html, data.timeline );\r\n\t\t\tNP.timeline.append( html );\r\n\t\t\tNP.onAfterTimelineLoad.fire();\r\n\r\n\t\t\tisLoaded = true;\r\n\r\n\t\t},\r\n\t\tgetLastNum : function() {\r\n\t\t\treturn saveLastNum;\r\n\t\t},\r\n\t\twritable : function() {\r\n\t\t\treturn writable;\r\n\t\t},\r\n\t\topenClfSeq : function(){\r\n\t\t\treturn openClfSeq;\r\n\t\t},\r\n\t\tguestbookOpenClfSeq: function(){\r\n\t\t\treturn guestbookOpenClfSeq;\r\n\t\t},\r\n\t\tisMyCharacter: function(){\r\n\t\t\treturn !!isMyCharacter;\r\n\t\t},\r\n\t\tsetOpen: function(){\r\n\t\t\tif( ( NP.dt.page == 'characterguestbook' && isMyCharacter ) || ( NP.dt.page == 'groupguestbook' && NP.dt.isGuildMaster == 'true' ) ){\r\n\t\t\t\t\r\n\t\t\t\tvar guestbookBtn = $( '#guestbookOpenSetting' ),\r\n\t\t\t\t\tmodalCharSetting = $( '#modalCharSetting' ),\r\n\t\t\t\t\tmodalGroupSetting = $( '#modalGroupSetting'),\r\n\t\t\t\t\tlayer = '',\r\n\t\t\t\t\topenValue = function( seq ){\r\n\t\t\t\t\t\tvar txt = 'all';\r\n\t\t\t\t\t\tswitch( seq ){\r\n\t\t\t\t\t\tcase 118:\r\n\t\t\t\t\t\t\ttxt = 'all';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 119:\r\n\t\t\t\t\t\t\ttxt = 'npfriend';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 121:\r\n\t\t\t\t\t\t\ttxt = 'private';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\treturn txt;\r\n\t\t\t\t\t\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbtnTxt = function( seq ){\r\n\t\t\t\t\t\tvar txt = '전체공개';\r\n\t\t\t\t\t\tswitch( seq ){\r\n\t\t\t\t\t\tcase 118:\r\n\t\t\t\t\t\t\ttxt = '전체공개';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 119:\r\n\t\t\t\t\t\t\ttxt = 'NC친구공개';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 121:\r\n\t\t\t\t\t\t\ttxt = '비공개';\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\treturn txt;\t\t\t\t\t\t\r\n\t\t\t\t\t};\r\n\t\t\t\t\t\r\n\t\t\t\tguestbookBtn.show();\r\n\r\n\t\t\t\tif( guestbookBtn.length ){\r\n\t\t\t\t\tif( NP.dt.page === 'characterguestbook'){\r\n\t\t\t\t\t\tif( !modalCharSetting.length ){\r\n\t\t\t\t\t\t\tguestbookBtn.parent().append( tplParser( NP.tmpl.modalCharSetting )() );\r\n\t\t\t\t\t\t}\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tlayer = $( '#modalCharSetting' );\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif( !modalGroupSetting.length )\r\n\t\t\t\t\t\t\tguestbookBtn.parent().append( tplParser( NP.tmpl.modalGroupSetting )() );\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tlayer = $( '#modalGroupSetting' );\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\t$( '#guestbookOpenBtn' ).show();\r\n\t\t\t\t\t\r\n\t\t\t\t\t$( '#guestbookOpenBtn' ).on( 'click', function( e ){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tlayer.find( 'input:radio[value=\"'+ openValue( NP.Timeline.guestbookOpenClfSeq() ) +'\"]').prop( 'checked', true );\r\n\t\t\t\t\t\tlayer.show();\t\t\t\t\t\t\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tguestbookBtn.off().on( 'click', function( e ){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tlayer.find( 'input:radio[value=\"'+ openValue( NP.Timeline.guestbookOpenClfSeq() ) +'\"]').prop( 'checked', true );\r\n\t\t\t\t\t\tlayer.show();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tguestbookBtn.attr( 'class', 'btn_option js_tooltip' );\r\n\t\t\t\t\tguestbookBtn.attr( 'data-tooltip', '캐릭터방명록 공개설정' );\r\n\t\t\t\t\tguestbookBtn.text( btnTxt( NP.Timeline.guestbookOpenClfSeq() ) );\t\r\n\t\t\t\t};\r\n\t\t\t\t\r\n\t\t\t\tif( layer ){\r\n\t\t\t\t\t\r\n\t\t\t\t\tlayer.find( '.apply' ).on( 'click', function(){\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif( !NP.dt.o ){\r\n\t\t\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\t\t\ttxt : '로그인이 필요합니다.'\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\treturn;\t\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvar type = 'character',\r\n\t\t\t\t\t\t\tdata = {\r\n\t\t\t\t\t\t\t\tc: NP.dt.characterId || NP.dt.vCharId,\r\n\t\t\t\t\t\t\t\ts: NP.dt.serverId || NP.dt.vServerId,\r\n\t\t\t\t\t\t\t\tp: layer.find( 'input:radio[checked]' ).val() || 'all'\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif( NP.dt.page === 'groupguestbook' ){\r\n\t\t\t\t\t\t\ttype = 'group';\r\n\t\t\t\t\t\t\tdata = {\r\n\t\t\t\t\t\t\t\tg: NP.dt.guildId,\r\n\t\t\t\t\t\t\t\ts: NP.dt.serverId || NP.dt.vServerId,\r\n\t\t\t\t\t\t\t\tp: layer.find( 'input:radio[checked]' ).val() || 'all'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t$.ajax({\r\n\t\t\t\t\t\t\ttype : 'get',\r\n\t\t\t\t\t\t\tdataType : 'jsonp',\r\n\t\t\t\t\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/'+ NP.dt.o +'/'+ NP.dt.st +'/guestbook/'+ type +'/permission.jsonp',\r\n\t\t\t\t\t\t\tdata : data,\r\n\t\t\t\t\t\t\tsuccess : function( data ) {\r\n\t\t\t\t\t\t\t\tif( data.result == 'SUCCESS'){\r\n\t\t\t\t\t\t\t\t\tlocation.reload();\r\n\t\t\t\t\t\t\t\t\t//layer.hide();\r\n\t\t\t\t\t\t\t\t}else if( data.result == 'NOT_HOST_MINE'){\r\n\t\t\t\t\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\t\t\t\t\ttxt : '권한이 없습니다.'\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\terror : function() {\r\n//\t\t\t\t\t\t\t\tmodal.show({\r\n//\t\t\t\t\t\t\t\t\ttxt : '작업이 지연되고 있습니다. 잠시 후 이용 해 주세요.'\r\n//\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tlayer.find( '.cancel' ).on( 'click', function(){\r\n\t\t\t\t\t\tlayer.hide();\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tlayer.find( '.btnCloseLayer' ).on( 'click', function(){\r\n\t\t\t\t\t\tlayer.hide();\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\t\t\t\r\n\t\t}\r\n\t};\r\n}( jQuery ));\r\n\r\n\r\n// Write Form\r\nNP.WriteForm = (function( $ ) {\r\n\tvar timer, fake = $( '
            ' ),\r\n\t\twriteShort = $( '#writeShort' ),\r\n\t\tbuttonWrite = writeShort.find( '.btn_write' ),\r\n\t\tbuttonWriteCancel = writeShort.find( '.btn_cancel' ),\r\n\t\ttextarea = writeShort.find( '.textarea textarea' ).val( '' ),\r\n\t\tvalidate = NP.ns( 'Util.validate' ),\r\n\t\tgetParam = NP.ns( 'Util.getParam' ),\r\n\t\ttplParser = NP.ns( 'Util.tplParser' ),\r\n\t\tisIE = !!navigator.userAgent.toLowerCase().match( /msie|trident/ ),\r\n\t\tfakeHtml = '',\r\n\t\tdefHeight = 54;\r\n\r\n\tfunction check() {\r\n\t\tclearTimeout( timer );\r\n\r\n\t\tvar height;\r\n\r\n\t\tif ( !textarea.val().replace( /\\s/g, '' ).length ) {\r\n\t\t\theight = defHeight;\r\n\t\t} else {\r\n\t\t\tfake.html( validate( textarea.val() ).replace( /\\n/g, '
            ' ) );\r\n\t\t\t//fake.html( textarea.val() );\r\n\r\n\t\t\tvar fakeHeight = fake.height();\r\n\r\n\t\t\tif( fake.html() == fakeHtml ) return;\r\n\t\t\t\r\n\t\t\tif ( !( /\\$/.test( fake.html() ) ) ) {\r\n\t\t\t\theight = fakeHeight <= defHeight ? defHeight : fakeHeight;\r\n\t\t\t\ttextarea.height( height );\r\n\t\t\t} else {\r\n\t\t\t\theight = textarea[ 0 ].scrollHeight;\r\n\t\t\t\t//textarea.height( height );\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tfakeHtml = fake.html();\r\n\t\t}\r\n\r\n\t\tif ( !isIE ) {\r\n\t\t\ttimer = setTimeout( check, 100 );\r\n\t\t}\r\n\t}\r\n\r\n\twriteShort.find( '.welcome' ).click(function() {\r\n\t\tmustLoginIfHasNoSession() && NP.WriteForm.check(function() {\r\n\t\t\ttextarea.focus();\r\n\t\t});\t\t\r\n\t\t\r\n\t\t/*var writable = writable();\r\n\r\n\t\tif ( writable === 1 ) {\r\n\t\t\t//textarea.focusin().focus();\r\n\t\t\ttextarea.focus();\r\n\t\t} else if ( writable === 0 ) {\r\n\t\t\tmodal.show({\r\n\t\t\t\ttxt : '' + NP.dt.oNm + '님은 친구에게만 글 작성을 허용하고 있습니다.
            ' + NP.dt.oNm + '님과 친구가 되어보세요.'\r\n\t\t\t});\r\n\t\t} else if ( writable === 2 ) {\r\n\t\t\tmodal.show({\r\n\t\t\t\ttxt : '' + NP.dt.oNm + '님은 글쓰기가 제재된 계정입니다.'\r\n\t\t\t});\r\n\t\t}*/\r\n\t});\r\n\r\n\ttextarea.bind({\r\n\t\tkeydown : function() {\r\n\t\t\ttimer = setTimeout( check, 100 );\r\n\t\t},\r\n\t\tfocusin : function( e ) {\r\n\t\t\tfake.width( textarea.width() ).insertAfter( textarea );\r\n\t\t\twriteShort.addClass( 'activeEditor' );\r\n\t\t},\r\n\t\tfocusout : function() {\r\n\t\t\tclearTimeout( timer );\r\n\t\t}\r\n\t});\r\n\r\n\t// 글쓰기 완료\r\n\tbuttonWrite.click(function() {\r\n\t\tvar button = $( this ),\r\n\t\t\ttimer,\r\n\t\t\tvalue = $.trim( textarea.val() ),\r\n\t\t\tpostOpenSeq = writeShort.find( '.selectSetOpen label.checked' ).parent().index(),\r\n\t\t\tselectedCharacter = writeShort.find( '.selectSetChar .checked input' );\r\n\r\n\t\tif ( button.hasClass( 'ing' ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( !value.length && !NP.Image.getImages().length ) {\r\n\t\t\tmodal.show({\r\n\t\t\t\ttxt : '글 내용을 입력해주세요.',\r\n\t\t\t\tbutton : [[\r\n\t\t\t\t\t'confirm', function() {\r\n\t\t\t\t\t\tthis.hide();\r\n\t\t\t\t\t\ttextarea.focus();\r\n\t\t\t\t\t}\r\n\t\t\t\t]]\r\n\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif ( !NP.dt.v ) {\r\n\t\t\tmodal.show({\r\n\t\t\t\ttxt : '로그인이 필요합니다.',\r\n\t\t\t\tbutton : [[\r\n\t\t\t\t\t'confirm', function() {\r\n\t\t\t\t\t\tthis.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t]]\r\n\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif( NP.dt.st === 'aion' && ( NP.dt.page === 'groupguestbook' || NP.dt.page === 'characterguestbook' || NP.dt.page === 'group' ) ){\r\n\t\t\t\r\n\t\t\tif( selectedCharacter.length && !selectedCharacter.attr( 'data-chrtnm' ) ){ \r\n\t\t\t\talert('캐릭터를 선택해주세요');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif( selectedCharacter.attr( 'data-writergamename' ) != 'aion' ){\r\n\t\t\t\talert('아이온 캐릭터만 글을 작성 하실 수 있습니다.');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\tif( NP.dt.st === 'bns' && NP.dt.page === 'characterguestbook' ){\r\n\t\t\t/*\r\n\t\t\tif( selectedCharacter.length && !selectedCharacter.attr( 'data-chrtnm' ) ){ \r\n\t\t\t\talert('캐릭터를 선택해주세요');\r\n\t\t\t\treturn;\r\n\t\t\t};\r\n\t\t\t*/\r\n\t\t\t\r\n\t\t\tif( selectedCharacter.val() != '0' && selectedCharacter.attr( 'data-writergamename' ) != 'bns' ){\r\n\t\t\t\talert('블소 캐릭터만 글을 작성 하실 수 있습니다.');\r\n\t\t\t\treturn;\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\t\r\n\t\t$.ajax({\r\n\t\t\ttype : 'post',\r\n\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.o + '/' + NP.dt.st + '/timeline/' + NP.dt.loc + '/post.jsonp',\r\n\t\t\tdataType : 'json',\r\n\t\t\tdata : {\r\n\t\t\t\tpage: NP.dt.page,\r\n\t\t\t\tcharacterId: NP.dt.characterId,\r\n\t\t\t\tguildId: NP.dt.guildId,\r\n\t\t\t\tserverId: NP.dt.serverId,\r\n\t\t\t\tpostTxtLongCont : validate( value ).replace( /\\n/g, '
            ' ),\r\n\t\t\t\tlongContYn : 'N', // 단문 : 'N' | 장문 : 'Y'\r\n\t\t\t\tpostOpenSeq : postOpenSeq + 1, // 1 : 전체공개, 2 : 친구공개\r\n\t\t\t\ttrgtId : getParam( 'trgtId' ),\r\n\t\t\t\timgIds : NP.Image.getImages().length ? NP.Image.getImages() : '',\r\n\t\t\t\ttoken : ( imgUploadG && NP.Image.getImages().length ) ? imgUploadG.getToken() : '',\r\n\t\t\t\twrtChrtId : selectedCharacter.length ? selectedCharacter.attr( 'data-chrtid' ) : '',\r\n\t\t\t\twrtChrtNm : selectedCharacter.length ? selectedCharacter.attr( 'data-chrtnm' ) : '',\r\n\t\t\t\twrtSvrId : selectedCharacter.length ? selectedCharacter.attr( 'data-svrid' ) : '',\r\n\t\t\t\twriterGameName : selectedCharacter.length ? selectedCharacter.attr( 'data-writerGamename' ) : '',\r\n\t\t\t\twrtGameSvrType : selectedCharacter.length ? selectedCharacter.attr( 'data-location' ) : '',\r\n\t\t\t\t'_method' : 'PUT'\r\n\t\t\t},\r\n\t\t\tbeforeSend : function() {\r\n\t\t\t\tbutton.addClass( 'ing' );\r\n\t\t\t\tclearTimeout( timer );\r\n\t\t\t\ttimer = setTimeout(function() {\r\n\t\t\t\t\tbutton.removeClass( 'ing' );\r\n\t\t\t\t}, 10000);\r\n\t\t\t},\r\n\t\t\tcomplete : function() {\r\n\t\t\t\tbutton.removeClass( 'ing' );\r\n\t\t\t\tclearTimeout( timer );\r\n\t\t\t},\r\n\t\t\tsuccess : NP.Article.add,\r\n\t\t\tstatusCode : {\r\n\t\t\t\t400 : function( data ) {\r\n\t\t\t\t\tvar message;\r\n\t\t\t\t\tdata = $.parseJSON( data.responseText );\r\n\r\n\t\t\t\t\tif ( data.code === 'profilePost.notfriend' ) {\r\n\t\t\t\t\t\tmessage = ( tplParser( NP.tmpl.message.notAllowed ) )( {} );\r\n\t\t\t\t\t} else if ( data.code === 'wrtPlayncAcctId.restrict' || data.code === 'crePlayncAcctId.restrict' ) {\r\n\t\t\t\t\t\tmessage = tplParser( NP.tmpl.message.restrict )();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tmessage = data.message;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\ttxt : message,\r\n\t\t\t\t\t\tbutton : [[ 'confirm', function() {\r\n\t\t\t\t\t\t\tthis.hide();\r\n\t\t\t\t\t\t\ttextarea.focus();\r\n\t\t\t\t\t\t}]]\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\t// 글쓰기 취소\r\n\tbuttonWriteCancel.click(function() {\r\n\t\tNP.WriteForm.reset();\r\n\t});\r\n\r\n\treturn {\r\n\t\twriteShort : writeShort,\r\n\t\ttextarea : textarea,\r\n\t\treset : function() {\r\n\t\t\tfake.html( '' );\r\n\t\t\tNP.Image.resetImages();\r\n\t\t\tNP.WriteForm.writeShort.find( '.wrap_willAddPhoto' ).remove();\r\n\t\t\tNP.WriteForm.writeShort.removeClass( 'activeEditor' );\r\n\t\t\ttextarea.css( 'height', '' ).val( '' );\r\n\t\t},\r\n\t\tcheck : function( callback ) {\r\n\t\t\tif ( !NP.isLoading ) {\r\n\t\t\t\tvar writable = NP.Timeline.writable(),\r\n\t\t\t\t\topenClfSeq = NP.Timeline.openClfSeq();\r\n\t\t\t\t\r\n\t\t\t\tif ( openClfSeq == '121' ){\r\n\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\ttxt : NP.dt.gNm + '방명록은 비공개 입니다.'\r\n\t\t\t\t\t});\r\n\t\t\t\t\t return;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( writable === 1 ) {\r\n\t\t\t\t\tcallback();\r\n\t\t\t\t} else if ( writable === 0 ) {\r\n\t\t\t\t\tif( !NP.dt.v ){\r\n\t\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\t\ttxt : '로그인이 필요합니다.',\r\n\t\t\t\t\t\t\tbutton : [[\r\n\t\t\t\t\t\t\t\t'confirm', function() {\r\n\t\t\t\t\t\t\t\t\tthis.hide();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]]\r\n\t\t\t\t\t\t});\r\n\t\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\ttxt : tplParser( NP.tmpl.message.notAllowed )()\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if ( writable === 2 ) {\r\n\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\ttxt : tplParser( NP.tmpl.message.restrict )()\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if ( writable === 3 ) {\r\n\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\ttxt : '글쓰기 권한이 없습니다.'\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcallback();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}( jQuery ));\r\n\r\n\r\n// Article\r\nNP.Article = (function( $ ) {\r\n\tvar tplParser = NP.ns( 'Util.tplParser' ),\r\n\t\tgetParam = NP.ns( 'Util.getParam' ),\r\n\t\tdefOpacity = 0.2,\r\n\t\thtml,\r\n\t\tcachedArticle;\r\n\r\n\t/*\r\n\t// 좋아요 UI가 바뀌었으니.. 필요없을 듯\r\n\tNP.timeline.on( 'click', 'article .content .callSubArticle', function() {\r\n\t\tvar el = $( this ),\r\n\t\t\tarticle = el.parents( 'article' ),\r\n\t\t\tsubArticle = article.find( '.article.like' );\r\n\r\n\t\tif ( subArticle.length ) {\r\n\t\t\tsubArticle.remove();\r\n\t\t\t//NP.fadeOut( subArticle );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t$.ajax({\r\n\t\t\tdataType : 'jsonp',\r\n\t\t\turl : '/' + NP.dt.v + '/' + NP.dt.st + '/timeline/more.jsonp?' + $.param({\r\n\t\t\t\tlastNum : 0, // 글 목록 호출 시에는 0, 더보기 시에는 X번째\r\n\t\t\t\tpage : 'wall', // timeline | wall\r\n\t\t\t\ttrgtId : '',\r\n\t\t\t\tpostTxtSeq : el.data( 'np' ).postTxtSeq\r\n\t\t\t}),\r\n\t\t\tsuccess : function( data ) {\r\n\t\t\t\tNP.Timeline.setOne( data, el );\r\n\t\t\t}\r\n\t\t});\r\n\t});*/\r\n\r\n\t// 차단해제\r\n\tNP.timeline.on( 'click', 'article .revert', function() {\r\n\t\tif ( !cachedArticle ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar article = $( this ).parents( 'article:last' ),\r\n\t\t\tarticleData = $.data( article[ 0 ] );\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype : 'get',\r\n\t\t\tdataType : 'json',\r\n\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/$!/'+ NP.dt.st +'/friend/' + articleData.wrtPlayncAcctId + '/propose/allow.jsonp',\r\n\t\t\tsuccess : function( data ) {\r\n\t\t\t\tif ( data.result === 'SUCCESS' ) {\r\n\t\t\t\t\tarticle.html( cachedArticle.html() );\r\n\r\n\t\t\t\t\tcachedArticle = null;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\ttxt : '작업이 지연되고 있습니다. 잠시 후 이용 해 주세요.'\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\terror : function() {\r\n\t\t\t\tmodal.show({\r\n\t\t\t\t\ttxt : '작업이 지연되고 있습니다. 잠시 후 이용 해 주세요.'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\treturn {\r\n\t\tsetUI : function( data ) {\r\n\t\t\tif ( data.actType === 'EDIT_PROFILE_PHOTO' ) {\r\n\t\t\t\treturn '
            \"'
            ';\r\n\t\t\t}\r\n\r\n\t\t\treturn '';\r\n\t\t},\r\n\t\tsetFrom : function( data ) {\r\n\t\t\tvar html = '| ';\r\n\r\n\t\t\t/* if ( data.postTorg === 'GROUP' ) {\r\n\t\t\t\thtml += '' + data.post.postTxtTorgNm + ' ';\r\n\t\t\t} */\r\n\r\n\t\t\tif ( data.post.postTxtOpenClfSeq === 118 ) { // 전체공개\r\n\t\t\t\thtml += '전체공개';\r\n\t\t\t} else if ( data.post.postTxtOpenClfSeq === 119 ) { // 친구공개\r\n\t\t\t\thtml += '' + data.post.wrtPlayncAcctNm + '님의 친구공개';\r\n\t\t\t} else if ( data.post.postTxtOpenClfSeq === 120 ) { // 그룹공개\r\n\t\t\t\thtml += '' + data.post.postTxtTorgNm + ' ' + data.post.postTxtTorgNm + '의 문파원공개';\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif ( data.post.wrtLocClfSeq === 124 ) { // 모바일에서 작성한 글\r\n\t\t\t\thtml += '모바일에서';\r\n\t\t\t}\r\n\r\n\t\t\treturn html;\r\n\t\t},\r\n\t\tadd : function( data ) {\r\n\t\t\tNP.now = data.now || +new Date(); // 서버로부터 받은 현재 시간\r\n\r\n\t\t\tdata.timeline.post.postTxtLongCont = NP.AutoLink( data.timeline.post.postTxtLongCont );\r\n\r\n\t\t\tif ( NP.dt.loc === 'wall' && data.timeline.post.postTxtTorgId !== data.timeline.post.wrtPlayncAcctId && data.timeline.postTorg !== \"GROUP\" && data.timeline.postTorg !== \"GROUP_RECEIVE\" ) { // 다른 공간에 쓴 글, 그룹글은 제외\r\n\t\t\t\tdata.timeline.postTorg = data.postTorg || data.timeline.postTorg;\r\n\t\t\t\thtml = $( tplParser( NP.tmpl.articleTo )( data.timeline ) );\r\n\t\t\t} else {\r\n\t\t\t\tdata.timeline.postTorg = data.postTorg || data.timeline.postTorg;\r\n\t\t\t\thtml = $( tplParser( NP.tmpl.article )( data.timeline ) );\r\n\t\t\t}\r\n\r\n\t\t\tNP.onProcessing.fire( html, data.timeline );\r\n\t\t\tNP.timeline.prepend( html.css( 'opacity', defOpacity ) );\r\n\t\t\tNP.fadeIn( html );\r\n\t\t\tNP.WriteForm.reset();\r\n\t\t},\r\n\t\t'delete' : function( article ) { // 글 삭제\r\n\t\t\tvar articleData = $.data( article[ 0 ] );\r\n var isDeleteCall = false;\r\n\r\n\t\t\tmodal.show({\r\n\t\t\t\ttxt : '이 글을 완전히 삭제하겠습니까?',\r\n\t\t\t\tbutton : [\r\n\t\t\t\t\t[ 'delete', function() {\r\n\t\t\t\t\t\tvar me = this;\r\n\r\n\t\t\t\t\t\tif(isDeleteCall) return;\r\n\r\n\t\t\t\t\t\tisDeleteCall = true;\r\n\r\n\t\t\t\t\t\t$.ajax({\r\n\t\t\t\t\t\t\ttype : 'post',\r\n\t\t\t\t\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.v + '/' + NP.dt.st + '/timeline/' + NP.dt.loc + '/post.jsonp',\r\n\t\t\t\t\t\t\tdataType : 'json',\r\n\t\t\t\t\t\t\tdata : {\r\n\t\t\t\t\t\t\t\tpage: NP.dt.page,\r\n\t\t\t\t\t\t\t\tcharacterId: NP.dt.characterId,\r\n\t\t\t\t\t\t\t\tguildId: NP.dt.guildId,\r\n\t\t\t\t\t\t\t\tserverId: NP.dt.serverId,\r\n\t\t\t\t\t\t\t\tpostTxtSeq : articleData.postTxtSeq,\r\n\t\t\t\t\t\t\t\ttrgtId : getParam( 'trgtId' ),\r\n\t\t\t\t\t\t\t\t'_method' : 'DELETE'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tsuccess : function( data ) {\r\n\t\t\t\t\t\t\t\tdata = data.result;\r\n\r\n\t\t\t\t\t\t\t\tif ( data === 'SUCCESS' ) {\r\n\t\t\t\t\t\t\t\t\tvar html = $( tplParser( NP.tmpl.deleteArticle )() );\r\n\r\n\t\t\t\t\t\t\t\t\tarticle.replaceWith( html.css( 'opacity', defOpacity ) );\r\n\r\n\t\t\t\t\t\t\t\t\t// REPAIR 20150807 - IE8 textnode opacity error\r\n\t\t\t\t\t\t\t\t\tvar tmpHtml = html.get(0);\r\n\t\t\t\t\t\t\t\t\tif(tmpHtml.nodeType === 3) {\r\n\t\t\t\t\t\t\t\t\t\thtml.css('opacity', 1).css('opacity', '');\r\n\t\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\t\tNP.fadeIn( html );\t\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t// NP.fadeIn( html );\r\n\r\n\t\t\t\t\t\t\t\t\tme.hide();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}],\r\n\t\t\t\t\t[ 'cancel' ]\r\n\t\t\t\t]\r\n\t\t\t});\r\n\t\t},\r\n\t\tlink : function( article ) { // 이 글의 링크\r\n\t\t\t//window.open( NP.prflUri( NP.dt.o ) + '?postTxtSeq=' + $.data( article[ 0 ] ).postTxtSeq, '_blank' );\r\n\t\t},\r\n\t\treport : function( article ) { // 글 신고\r\n\t\t\tmustLoginIfHasNoSession() && NP.Report.getList( article );\r\n\t\t},\r\n\t\thide : function( article ) { // 글 무시\r\n\t\t\tvar articleData = $.data( article[ 0 ] );\r\n\t\t\thtml = $( tplParser( NP.tmpl.hideArticle )() );\r\n\r\n\t\t\t$.ajax({\r\n\t\t\t\ttype : 'post',\r\n\t\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.v + '/' + NP.dt.st + '/timeline/' + NP.dt.loc + '/post/hide.jsonp',\r\n\t\t\t\tdataType : 'json',\r\n\t\t\t\tdata : {\r\n\t\t\t\t\tpostTxtSeq : articleData.postTxtSeq,\r\n\t\t\t\t\ttrgtId : getParam( 'trgtId' )\r\n\t\t\t\t},\r\n\t\t\t\tsuccess : function( data ) {\r\n\t\t\t\t\tdata = data.result;\r\n\r\n\t\t\t\t\tif ( data === 'SUCCESS' ) {\r\n\t\t\t\t\t\tarticle.replaceWith( html.css( 'opacity', defOpacity ) );\r\n\t\t\t\t\t\tNP.fadeIn( html );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\tblock : function( article ) { // 글 차단\r\n\t\t\t\r\n\t\t\tif( ! $( '#modalBlockFriend' ).length ){\r\n\t\t\t\tvar layer = tplParser( NP.tmpl.modalBlockFriend )();\r\n\t\t\t\t\tlayer = $( layer );\r\n\t\t\t\t\tNP.body.append( layer );\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tvar articleData = $.data( article[ 0 ] ),\r\n\t\t\t\thtml = $( tplParser( NP.tmpl.blockArticle )( articleData ) ),\r\n\t\t\t\tlayer = $( '#modalBlockFriend' ),\r\n\t\t\t\tbutton = layer.find( '.wrap_button a' ).eq( 0 );\r\n\r\n\t\t\tlayer.find( 'dt em' ).text( articleData.wrtPlayncAcctNm );\r\n\t\t\tbutton.unbind( 'click.block' );\r\n\t\t\tbutton.one( 'click.block', function( e ) {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tmodal.hide();\r\n\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\ttype : 'get',\r\n\t\t\t\t\tdataType : 'json',\r\n\t\t\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/$!/'+ NP.dt.st +'/friend/' + articleData.wrtPlayncAcctId + '/propose/deny.jsonp',\r\n\t\t\t\t\tsuccess : function( data ) {\r\n\t\t\t\t\t\tif ( data.result === 'SUCCESS' ) {\r\n\t\t\t\t\t\t\tlayerManaged.hide();\r\n\t\t\t\t\t\t\tcachedArticle = article.clone();\r\n\r\n\t\t\t\t\t\t\tarticle.html( html.css( 'opacity', defOpacity ) );\r\n\t\t\t\t\t\t\tNP.fadeIn( html );\r\n\t\t\t\t\t\t}else if( data.result === 'ALREADY_DENY'){\r\n\t\t\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\t\t\ttxt : '이미 차단한 친구입니다.'\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\t\t\ttxt : '작업이 지연되고 있습니다. 잠시 후 이용 해 주세요.'\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\terror : function() {\r\n\t\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\t\ttxt : '작업이 지연되고 있습니다. 잠시 후 이용 해 주세요.'\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tmodal.show( layer );\r\n\t\t},\r\n\t\tunfollow : function( article, menu ) { // 구독 취소\r\n\t\t\tmenu.remove();\r\n\t\t}\r\n\t};\r\n}( jQuery ));\r\n\r\n\r\n// Reply\r\nNP.Reply = (function( $ ) {\r\n\tvar tplParser = NP.ns( 'Util.tplParser' ),\r\n\t\tvalidate = NP.ns( 'Util.validate' ),\r\n\t\tgetParam = NP.ns( 'Util.getParam' ),\r\n\t\tgetGUID = NP.ns( 'Util.getGUID' ),\r\n\t\tisLoading = false,\r\n\t\tloading = $( '\"로딩중\"' ),\r\n\t\tloading2 = $( '\"로딩중\"' ),\r\n\t\treplyMaximum = 1000,\r\n\t\tdefOpacity = 0.2,\r\n\t\ttimer;\r\n\r\n\t// Set Data\r\n\tNP.onProcessingReply.add(function( reply, data ) {\r\n\t\tvar item;\r\n\t\t$.each( reply, function( index ) {\r\n\t\t\treply = $( this );\r\n\t\t\titem = data[ index ] || data;\r\n\t\t\t\r\n\t\t\treply.attr( 'id', 'comment_' + item.rplyTxtSeq );\r\n\r\n\t\t\t$.data( reply[ 0 ], {\r\n\t\t\t\trplyTxtSeq : item.rplyTxtSeq,\r\n\t\t\t\twrtPlayncAcctId : item.wrtPlayncAcctId,\r\n\t\t\t\twrtPlayncAcctNm : item.wrtPlayncAcctNm\r\n\t\t\t});\r\n\r\n\t\t\t// 댓글 시간\r\n\t\t\t$.each( reply, function( i ) {\r\n\t\t\t\t$.data( reply.eq( i ).find( 'time' )[ 0 ], {\r\n\t\t\t\t\ttime : item.creDttm\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n\r\n\tNP.onAfterTimelineLoad.add(function() {\r\n\t\tselectbox( '.wrap_form' );\r\n\t\tNP.Character.getCache() && NP.Character.set();\r\n\t\t\r\n\t\tNP.Character.setSelectOpen();\r\n\t\tNP.Character.hideSelectOpen();\r\n\t\tNP.Character.setSelectChar( tplParser( NP.tmpl.selectSetChar )( NP.Character.data ) );\r\n\r\n\t\tif( NP.dt.page == 'group' ){\r\n\t\t\t//레기온 가입 캐릭터 선택\r\n\t\t\tNP.Character.setLegionCharacter();\r\n\t\t}else{\r\n\t\t\t//대표캐릭터 선택\r\n\t\t\t//if( NP.dt.page != 'characterguestbook' )\r\n\t\t\t\tNP.Character.setMajorCharacter();\r\n\t\t}\r\n\r\n\t\tvar postTxtSeq = getParam( 'postTxtSeq' ),\r\n\t\t\tisFocus = getParam( 'isFocus' );\r\n\t\t\r\n\t\t//글 작성 캐릭터 선택\r\n\t\tif( postTxtSeq ){\r\n\t\t\tNP.Character.setMyCharacter();\r\n\t\t}\r\n\t\t\r\n\t\tif( isFocus == '1' )\r\n\t\t\tNP.WriteForm.textarea.focus();\r\n\t\t\r\n\t\tNP.Timeline.setOpen();\r\n\r\n\t});\r\n\t\r\n\t// 댓글 쓰기\r\n\tNP.timeline.on( 'keydown', '.wrap_comment .comment input', function( e ) {\r\n\t\tif ( e.keyCode === 13 ) { // Enter\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tvar input = $( this ),\r\n\t\t\t\t\r\n\t\t\t\treply = input.blur(),\r\n\t\t\t\tarticle = reply.parents( 'article:last' ),\r\n\t\t\t\tarticleData = $.data( article[ 0 ] ),\r\n\t\t\t\twrap = article.find( '.wrap_comment' ),\r\n\t\t\t\treplyList = wrap.find( '.list_comment' ),\r\n\t\t\t\tcomment = wrap.find( '.comment' ),\r\n\t\t\t\tselectedCharacter = wrap.find( '.selectSetChar .checked input' ),\r\n\t\t\t\tarticlePosttorg = article.attr( 'data-posttorg'),\r\n\t\t\t\tarticlePosttxtservclfseq = article.attr( 'data-posttxtservclfseq' ),\r\n\t\t\t\tarticlePostTxtTorgGameId = article.attr( 'data-postTxtTorgGameId' ),\r\n\t\t\t\thtml;\r\n\t\t\t\r\n\t\t\treply.focus();\r\n\t\t\t//IE에서 focus시 placeholer 제거 \r\n\t\t\tvar cache = $.trim( input.val() ), \r\n\t\t\t\tvalue = $.trim( reply.val() );\r\n\t\t\t\r\n\t\t\tif ( !cache.length || !value.length ) {\r\n\t\t\t\t//스티커 선택\t\t\t\t\r\n\t\t\t\tif( !$( '.stickerPreview' ).is( ':visible' ) ){\t\r\n\t\t\t\t\treturn;\r\n\t\t\t\t};\r\n\t\t\t};\r\n\r\n\t\t\tif ( value.length > replyMaximum ) {\r\n\t\t\t\tmodal.show({\r\n\t\t\t\t\ttxt : replyMaximum + '자 이상 입력하실 수 없습니다.',\r\n\t\t\t\t\tbutton : [[ 'confirm', function() {\r\n\t\t\t\t\t\treply.val( value.slice( 0, replyMaximum ) ).focus();\r\n\t\t\t\t\t\tthis.hide();\r\n\t\t\t\t\t}]]\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn;\r\n\t\t\t};\r\n\r\n\t\t\tif( NP.isNeedCharacter( {postTorg: articlePosttorg, postTxtServClfSeq: articlePosttxtservclfseq, postTxtTorgGameId: articlePostTxtTorgGameId} ) ){\r\n\t\t\t\tif( !selectedCharacter.attr( 'data-chrtid' ) ){\r\n\t\t\t\t\talert('캐릭터를 선택해주세요');\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif( selectedCharacter.attr( 'data-writergamename' ) != 'aion' ){\r\n\t\t\t\t\talert('아이온 캐릭터만 댓글을 작성 하실 수 있습니다.');\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tif( NP.isNeedCharacterBns( {postTorg: articlePosttorg, postTxtServClfSeq: articlePosttxtservclfseq, postTxtTorgGameId: articlePostTxtTorgGameId} ) ){\r\n\t\t\t\t/*\r\n\t\t\t\tif( !selectedCharacter.attr( 'data-chrtid' ) ){\r\n\t\t\t\t\talert('캐릭터를 선택해주세요');\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t*/\r\n\t\t\t\t\r\n\t\t\t\tif( selectedCharacter.val() != 0 && selectedCharacter.attr( 'data-writergamename' ) != 'bns' ){\r\n\t\t\t\t\talert('블소 캐릭터만 댓글을 작성 하실 수 있습니다.');\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\t//문파방명록 글일 때의 댓글 처리\r\n\t\t\tif( articlePosttorg == 'GROUP_GUESTBOOK' && articlePosttxtservclfseq == '145' && articlePostTxtTorgGameId == '102' ){\r\n\t\t\t\tif( selectedCharacter.attr( 'data-writergamename' ) == 'aion' ){\r\n\t\t\t\t\talert('블소 캐릭터만 댓글을 작성 하실 수 있습니다.');\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tvalue = value + NP.MsgPreview.getSticker();\r\n\r\n\t\t\t$.ajax({\r\n\t\t\t\ttype : 'post',\r\n\t\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.v + '/' + NP.dt.st + '/timeline/' + NP.dt.loc + '/reply.jsonp',\r\n\t\t\t\tdataType : 'json',\r\n\t\t\t\tdata : {\r\n\t\t\t\t\tpostTxtSeq : articleData.orgPostTxtSeq || articleData.postTxtSeq,\r\n\t\t\t\t\trplyTxtCont : validate( value ),\r\n\t\t\t\t\twrtGameId : '',\r\n\t\t\t\t\twrtChrtId : selectedCharacter.length ? selectedCharacter.attr( 'data-chrtid' ) : '',\r\n\t\t\t\t\twrtChrtNm : selectedCharacter.length ? selectedCharacter.attr( 'data-chrtnm' ) : '',\r\n\t\t\t\t\twrtSvrId : selectedCharacter.length ? selectedCharacter.attr( 'data-svrid' ) : '',\r\n\t\t\t\t\twriterGameName : selectedCharacter.length ? selectedCharacter.attr( 'data-writerGamename' ) : '',\r\n\t\t\t\t\twrtGameSvrType : selectedCharacter.length ? selectedCharacter.attr( 'data-location' ) : '',\r\n\t\t\t\t\ttrgtId : getParam( 'trgtId' ),\r\n\t\t\t\t\t'_method' : 'PUT'\r\n\t\t\t\t},\r\n\t\t\t\tbeforeSend : function() {\r\n\t\t\t\t\tcomment.prepend( loading );\r\n\r\n\t\t\t\t\tclearTimeout( timer );\r\n\t\t\t\t\ttimer = setTimeout(function() {\r\n\t\t\t\t\t\tloading.remove();\r\n\t\t\t\t\t}, 10000);\r\n\t\t\t\t},\r\n\t\t\t\tcomplete : function() {\r\n\t\t\t\t\tloading.remove();\r\n\t\t\t\t\tclearTimeout( timer );\r\n\t\t\t\t},\r\n\t\t\t\tsuccess : function( data ) {\r\n\t\t\t\t\tdata = data.reply;\r\n\r\n\t\t\t\t\thtml = $( ( tplParser( NP.tmpl.reply ) )( {\r\n\t\t\t\t\t\twrtPlayncAcctId : data.wrtPlayncAcctId,\r\n\t\t\t\t\t\twrtPlayncAcctNm : data.wrtPlayncAcctNm,\r\n\t\t\t\t\t\twrtChrtId : data.wrtChrtId,\r\n\t\t\t\t\t\twrtGameId: data.wrtGameId,\r\n\t\t\t\t\t\twrtChrtNm : data.wrtChrtNm,\r\n\t\t\t\t\t\twrtSvrId : data.wrtSvrId,\r\n\t\t\t\t\t\trplyTxtCont : NP.emoticonLayer.renderEmoticion( NP.AutoLink( validate( data.rplyTxtCont ) ) ),\r\n\t\t\t\t\t\tcreDttm : data.creDttm,\r\n\t\t\t\t\t\tlikeCnt : data.likeCnt,\r\n\t\t\t\t\t\tpostTorg: articlePosttorg,\r\n\t\t\t\t\t\tpostTxtServClfSeq: articlePosttxtservclfseq,\r\n\t\t\t\t\t\tpostTxtTorgGameId: articlePostTxtTorgGameId,\r\n\t\t\t\t\t\tdeletable : 'Y'\r\n\t\t\t\t\t} ) );\r\n\r\n\t\t\t\t\tNP.onProcessingReply.fire( html, data );\r\n\r\n\t\t\t\t\tif ( !replyList.length ) {\r\n\t\t\t\t\t\treplyList = $( tplParser( NP.tmpl.replyWrap )() );\r\n\t\t\t\t\t\treplyList.append( html.css( 'opacity', defOpacity ) );\r\n\t\t\t\t\t\twrap.find( '.wrap_feedinfo' ).after( replyList );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treplyList.append( html.css( 'opacity', defOpacity ) );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tNP.fadeIn( html );\r\n\r\n\t\t\t\t\tNP.Reply.setCount( article, '+' );\r\n\t\t\t\t\treply.val( '' ).focus();\r\n\t\t\t\t\t\r\n\t\t\t\t\tNP.emoticonLayer.hide();\r\n\t\t\t\t\t\r\n\t\t\t\t},\r\n\t\t\t\tstatusCode : {\r\n\t\t\t\t\t400 : function( data ) {\r\n\t\t\t\t\t\tdata = $.parseJSON( data.responseText );\r\n\r\n\t\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\t\ttxt : data.message,\r\n\t\t\t\t\t\t\tbutton : [[ 'confirm', function() {\r\n\t\t\t\t\t\t\t\tthis.hide();\r\n\t\t\t\t\t\t\t\treply.focus();\r\n\t\t\t\t\t\t\t}]]\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn;\r\n\t});\r\n\t\r\n\t// Focus Reply Input\r\n\tNP.timeline.on( 'focus', '.wrap_comment .comment input', function( e ) {\r\n\t\tif ( !mustLoginIfHasNoSession() ) {\r\n\t\t\treturn;\r\n\t\t};\r\n\r\n\t\tif ( !mustLoginIfHasNoSession() ) {\r\n\t\t\tvar input = $( this );\r\n\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tinput.blur();\r\n\t\t\t}, 50);\r\n\t\t}\r\n\t\t\r\n\t\tif ( !NP.dt.v ) {\r\n\t\t\tmodal.show({\r\n\t\t\t\ttxt : '로그인이 필요합니다.',\r\n\t\t\t\tbutton : [[\r\n\t\t\t\t\t'confirm', function() {\r\n\t\t\t\t\t\tthis.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t]]\r\n\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\t\t\r\n\t});\r\n\r\n\t// Reply Button\r\n\tNP.timeline.on( 'click', '.wrap_feed li.comment, .wrap_feed2 .wrapBtnComment', function() {\r\n\t\tif ( !mustLoginIfHasNoSession() ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif ( isLoading ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( !NP.dt.v ) {\r\n\t\t\tmodal.show({\r\n\t\t\t\ttxt : '로그인이 필요합니다.',\r\n\t\t\t\tbutton : [[\r\n\t\t\t\t\t'confirm', function() {\r\n\t\t\t\t\t\tthis.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t]]\r\n\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\t\t\r\n\t\t\r\n\t\tvar button = $( this ),\r\n\t\t\tarticle = button.parents( 'article:last' ),\r\n\t\t\tarticleData = $.data( article[ 0 ] ),\r\n\t\t\treply = article.find( '.wrap_comment' );\r\n\r\n\t\tif ( !reply.is( ':visible' ) ) {\r\n\t\t\t$.ajax({\r\n\t\t\t\ttype : 'get',\r\n\t\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + ( NP.dt.v || getGUID() ) + '/' + NP.dt.st + '/timeline/' + NP.dt.loc + '/reply.jsonp',\r\n\t\t\t\tdataType : 'json',\r\n\t\t\t\tdata : {\r\n\t\t\t\t\tpostTxtSeq : articleData.postTxtSeq,\r\n\t\t\t\t\todr : 'desc', // 끝에서부터 보기\r\n\t\t\t\t\tlastNum : 0,\r\n\t\t\t\t\ttrgtId : getParam( 'trgtId' ),\r\n\t\t\t\t\tcurrPage : '1'\r\n\t\t\t\t},\r\n\t\t\t\tbeforeSend : function() {\r\n\t\t\t\t\tisLoading = true;\r\n\t\t\t\t},\r\n\t\t\t\tsuccess : function( data ) {\r\n\t\t\t\t\tvar replyCount = data.selector.totalCnt;\r\n\t\t\t\t\t\r\n\t\t\t\t\t//좋아요 한 글일 경우 해당글의 댓글을 단다\r\n\t\t\t\t\tif( article.hasClass( 'likeby' ) ){\r\n\t\t\t\t\t\tarticle = article.find( 'article' );\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tarticle.append( NP.Reply.setUI( data, true ) );\r\n\t\t\t\t\tNP.Reply.setCount( article, replyCount );\r\n\t\t\t\t\t// 댓글 호출 시 좋아요 카운트를 갱신해야하나....\r\n\t\t\t\t\t//NP.Like.setCount( article, data.postLikeCount );\r\n\r\n\t\t\t\t\tselectbox( '.wrap_form' );\r\n\t\t\t\t\tNP.Character.getCache() && NP.Character.set();\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar postTxtSeq = getParam( 'postTxtSeq' );\r\n\t\t\t\t\t\r\n\t\t\t\t\tif( postTxtSeq ){\r\n\t\t\t\t\t\tNP.Character.setMyCharacter();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( !replyCount ) { // 댓글이 없을 때 댓글 입력 박스에 focus\r\n\t\t\t\t\t\tarticle.find( '.wrap_comment .comment input[type=\"text\"]' ).focus();\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tcomplete : function() {\r\n\t\t\t\t\tisLoading = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\treply.find( '.comment input' ).focus();\r\n\t\t}\r\n\t});\r\n\r\n\t// asc/desc Reply\r\n\tNP.timeline.on( 'click', '.wrap_feedinfo .sort', function() {\r\n\t\tvar button = $( this ),\r\n\t\t\tcomment = button.parents( '.wrap_comment' ),\r\n\t\t\tlist = comment.find( '.list_comment' ),\r\n\t\t\tarticle = button.parents( 'article:last' ),\r\n\t\t\tarticleData = $.data( article[ 0 ] ),\r\n\t\t\torder = button.hasClass( 'asc' ) ? 'asc' : 'desc',\r\n\t\t\tarticlePosttorg = article.attr( 'data-posttorg'),\r\n\t\t\tarticlePosttxtservclfseq = article.attr( 'data-posttxtservclfseq'),\r\n\t\t\tarticlePostTxtTorgGameId = article.attr( 'data-postTxtTorgGameId');\r\n\t\t\t\t\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype : 'get',\r\n\t\t\t//url : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.v + '/' + NP.dt.st + '/timeline/' + NP.dt.loc + '/reply.jsonp',\r\n\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.o + '/' + NP.dt.st + '/timeline/' + NP.dt.loc + '/reply.jsonp',\r\n\t\t\tdataType : 'json',\r\n\t\t\tdata : {\r\n\t\t\t\tpostTxtSeq : articleData.orgPostTxtSeq || articleData.postTxtSeq,\r\n\t\t\t\todr : order,\r\n\t\t\t\tlastNum : 0,\r\n\t\t\t\ttrgtId : getParam( 'trgtId' ),\r\n\t\t\t\tcurrPage : 1\r\n\t\t\t},\r\n\t\t\tbeforeSend : function() {\r\n\t\t\t\tbutton.after( loading2 );\r\n\r\n\t\t\t\tclearTimeout( timer );\r\n\t\t\t\ttimer = setTimeout(function() {\r\n\t\t\t\t\tloading2.remove();\r\n\t\t\t\t}, 10000);\r\n\t\t\t},\r\n\t\t\tcomplete : function() {\r\n\t\t\t\tloading2.remove();\r\n\t\t\t\tclearTimeout( timer );\r\n\t\t\t},\r\n\t\t\tsuccess : function( data ) {\r\n\t\t\t\tvar replyCount = data.selector.totalCnt,\r\n\t\t\t\t\thtml = '',\r\n\t\t\t\t\tfeed,\r\n\t\t\t\t\titem,\r\n\t\t\t\t\ti = 0;\r\n\t\t\t\t\r\n\t\t\t\tfor ( ; item = data.replyList[ i ]; i += 1 ) {\r\n\t\t\t\t\titem.postTorg = articlePosttorg;\r\n\t\t\t\t\titem.postTxtServClfSeq = articlePosttxtservclfseq;\r\n\t\t\t\t\titem.postTxtTorgGameId = articlePostTxtTorgGameId;\r\n\t\t\t\t\titem.rplyTxtCont = NP.AutoLink( NP.Util.validate( item.rplyTxtCont ) );\r\n\t\t\t\t\thtml += NP.emoticonLayer.renderEmoticion( ( tplParser( NP.tmpl.reply ) )( item ) );\r\n\t\t\t\t}\r\n\r\n\t\t\t\thtml = $( html );\r\n\r\n\t\t\t\tNP.onProcessingReply.fire( html, data.replyList );\r\n\r\n\t\t\t\tlist.html( html );\r\n\t\t\t\tcomment.find( '.wrap_feedinfo .nav' ).remove();\r\n\r\n\t\t\t\tNP.Reply.setCount( article, replyCount );\r\n\t\t\t\tNP.Like.setCount( article, data.postLikeCount );\r\n\r\n\t\t\t\t// 이전/다음 댓글 보기를 위한 lastNum 값 삽입\r\n\t\t\t\t$.data( comment[ 0 ], {\r\n\t\t\t\t\tlastNum : data.selector.lastNum || 0,\r\n\t\t\t\t\tcurrPage : 2\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif ( replyCount > data.replyList.length ) {\r\n\t\t\t\t\tfeed = comment.find( '.wrap_feedinfo' );\r\n\r\n\t\t\t\t\tif ( order === 'asc' ) {\r\n\t\t\t\t\t\tfeed = feed.eq( 1 );\r\n\r\n\t\t\t\t\t\tif ( feed.length ) {\r\n\t\t\t\t\t\t\tfeed.append( '

            다음 댓글 보기끝에서부터 보기

            ' );\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tlist.after( '' );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tfeed = feed.eq( 0 );\r\n\r\n\t\t\t\t\t\tif ( feed.length ) {\r\n\t\t\t\t\t\t\tfeed.append( '

            댓이전 글 보기처음부터 보기

            ' );\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tlist.before( '' );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\t// Next/Prev Reply\r\n\tNP.timeline.on( 'click', '.wrap_feedinfo .next, .wrap_feedinfo .prev', function() {\r\n\t\tvar button = $( this ),\r\n\t\t\tcomment = button.parents( '.wrap_comment' ),\r\n\t\t\tcommentData = $.data( comment[ 0 ] ),\r\n\t\t\tlist = comment.find( '.list_comment' ),\r\n\t\t\tarticle = button.parents( 'article:last' ),\r\n\t\t\tarticleData = $.data( article[ 0 ] ),\r\n\t\t\tlastNum = commentData.lastNum || 0,\r\n\t\t\tarticlePosttorg = article.attr( 'data-posttorg'),\r\n\t\t\tarticlePosttxtservclfseq = article.attr( 'data-posttxtservclfseq'),\r\n\t\t\tarticlePostTxtTorgGameId = article.attr( 'data-postTxtTorgGameId'),\r\n\t\t\torder,\r\n\t\t\twhere;\r\n\r\n\t\tif ( button.hasClass( 'prev' ) ) {\r\n\t\t\torder = 'desc';\r\n\t\t\twhere = 'prepend';\r\n\t\t} else {\r\n\t\t\torder = 'asc';\r\n\t\t\twhere = 'append';\r\n\t\t}\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype : 'get',\r\n\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + ( NP.dt.o || '!!' ) + '/' + NP.dt.st + '/timeline/' + NP.dt.loc + '/reply.jsonp',\r\n\t\t\tdataType : 'json',\r\n\t\t\tdata : {\r\n\t\t\t\tpostTxtSeq : articleData.orgPostTxtSeq || articleData.postTxtSeq,\r\n\t\t\t\todr : order,\r\n\t\t\t\tlastNum : lastNum,\r\n\t\t\t\ttrgtId : getParam( 'trgtId' ),\r\n\t\t\t\tcurrPage : commentData.currPage || 1\r\n\t\t\t},\r\n\t\t\tbeforeSend : function() {\r\n\t\t\t\tbutton.after( loading );\r\n\r\n\t\t\t\tclearTimeout( timer );\r\n\t\t\t\ttimer = setTimeout(function() {\r\n\t\t\t\t\tloading.remove();\r\n\t\t\t\t}, 10000);\r\n\t\t\t},\r\n\t\t\tcomplete : function() {\r\n\t\t\t\tloading.remove();\r\n\t\t\t\tclearTimeout( timer );\r\n\t\t\t},\r\n\t\t\tsuccess : function( data ) {\r\n\t\t\t\tvar replyCount = data.selector.totalCnt,\r\n\t\t\t\t\thtml = '',\r\n\t\t\t\t\titem,\r\n\t\t\t\t\ti = 0;\r\n\r\n\t\t\t\tfor ( ; item = data.replyList[ i ]; i += 1 ) {\r\n\t\t\t\t\titem.postTorg = articlePosttorg;\r\n\t\t\t\t\titem.postTxtServClfSeq = articlePosttxtservclfseq;\r\n\t\t\t\t\titem.postTxtTorgGameId = articlePostTxtTorgGameId;\r\n\t\t\t\t\titem.rplyTxtCont = NP.AutoLink( NP.Util.validate( item.rplyTxtCont ) );\r\n\t\t\t\t\thtml += NP.emoticonLayer.renderEmoticion( ( tplParser( NP.tmpl.reply ) )( item ) );\r\n\t\t\t\t}\r\n\r\n\t\t\t\thtml = $( html );\r\n\r\n\t\t\t\tNP.onProcessingReply.fire( html, data.replyList );\r\n\r\n\t\t\t\tif ( lastNum ) {\r\n\t\t\t\t\tlist[ where ]( html );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlist.html( html );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( data.isLastPage ) {\r\n\t\t\t\t\tcomment.find( '.wrap_feedinfo .nav' ).remove();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tNP.Reply.setCount( article, replyCount );\r\n\t\t\t\tNP.Like.setCount( article, data.postLikeCount );\r\n\r\n\t\t\t\t// 이전/다음 댓글 보기를 위한 lastNum 값 삽입\r\n\t\t\t\t$.data( comment[ 0 ], {\r\n\t\t\t\t\tlastNum : data.selector.lastNum || 0,\r\n\t\t\t\t\tcurrPage : ( commentData.currPage || 1 ) + 1\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\t// Delete Reply\r\n\tNP.timeline.on( 'click', '.list_comment .delete', function() {\r\n\t\tvar reply = $( this ).parents( 'li' ),\r\n\t\t\tarticle = reply.parents( 'article:last' ),\r\n\t\t\tarticleData = $.data( article[ 0 ] );\r\n\r\n\t\tmodal.show({\r\n\t\t\ttxt : '이 댓글을 완전히 삭제하겠습니까?',\r\n\t\t\tbutton : [\r\n\t\t\t\t[ 'delete', function() {\r\n\t\t\t\t\tthis.hide();\r\n\r\n\t\t\t\t\t$.ajax({\r\n\t\t\t\t\t\ttype : 'post',\r\n\t\t\t\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.v + '/' + NP.dt.st + '/timeline/' + NP.dt.loc + '/reply.jsonp',\r\n\t\t\t\t\t\tdataType : 'json',\r\n\t\t\t\t\t\tdata : {\r\n\t\t\t\t\t\t\tpostTxtSeq : articleData.orgPostTxtSeq || articleData.postTxtSeq,\r\n\t\t\t\t\t\t\trplyTxtSeq : $.data( reply[ 0 ] ).rplyTxtSeq,\r\n\t\t\t\t\t\t\ttrgtId : getParam( 'trgtId' ),\r\n\t\t\t\t\t\t\t'_method' : 'DELETE'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsuccess : function( data ) {\r\n\t\t\t\t\t\t\treply.slideUp( 200, function() {\r\n\t\t\t\t\t\t\t\t$( this ).remove();\r\n\t\t\t\t\t\t\t\tNP.Reply.setCount( article, '-' );\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}],\r\n\t\t\t\t[ 'cancel' ]\r\n\t\t\t]\r\n\t\t});\r\n\t});\r\n\r\n\t// Report Reply\r\n\tNP.timeline.on( 'click', '.list_comment .declare', function() {\r\n\t\t\r\n\t\tif ( !NP.dt.v ) {\r\n\t\t\tmodal.show({\r\n\t\t\t\ttxt : '로그인이 필요합니다.',\r\n\t\t\t\tbutton : [['confirm']]\r\n\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\t\t\r\n\t\t\r\n\t\tmustLoginIfHasNoSession() && NP.Report.getList( $( this ).parents( 'li' ) );\r\n\t});\r\n\t\r\n\t// emoticon \r\n\tNP.timeline.on( 'click', '.btnEmoticon', function() {\r\n\t\tvar parentNode = $( this ).parents( '.wrap_comment' );\r\n\t\tNP.emoticonLayer.init( parentNode );\r\n\t});\r\n\t\r\n\t\r\n\tNP.timeline.on( 'click', '.wrapSticker .sticker img', function( e ){\r\n\t\te.preventDefault();\r\n\t\t$( this )[ 0 ].src = $( this ).attr( 'src' );\r\n\t});\r\n\r\n\treturn {\r\n\t\tsetIsLoading : function( flag ) {\r\n\t\t\tisLoading = flag;\r\n\t\t},\r\n\t\tgetIsLoading : function() {\r\n\t\t\treturn isLoading;\r\n\t\t},\r\n\t\t//REPLY\r\n\t\tsetUI : function( article, ignore ) {\r\n//\t\t\tif ( !ignore && !article.post.likeCnt && ( !article.replyList || !article.replyList.length ) ) { // 글 좋아요 카운트와 댓글이 없을 경우\r\n//\t\t\t\treturn '';\r\n//\t\t\t}\r\n\t\t\t\r\n\t\t\tif ( !ignore && ( !article.replyList || !article.replyList.length ) ) { // 글 좋아요 카운트와 댓글이 없을 경우\r\n\t\t\t\treturn '';\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tvar html = '
            ',\r\n\t\t\t\titem,\r\n\t\t\t\ti = 0;\r\n\r\n\t\t\tif ( !ignore ) {\r\n\t\t\t\thtml += ( tplParser( NP.tmpl.likeBox ) )( article );\r\n\t\t\t} else {\r\n\t\t\t\thtml += ( tplParser( NP.tmpl.commentBox ) )( article );\r\n\t\t\t}\r\n\t\t\thtml += '
              ';\r\n\r\n\t\t\tfor ( ; item = article.replyList[ i ]; i += 1 ) {\r\n\t\t\t\titem.rplyTxtCont = NP.AutoLink( NP.Util.validate( item.rplyTxtCont ) );\r\n\t\t\t\titem.postTorg = article.postTorg;\r\n\t\t\t\titem.postTxtServClfSeq = article.post.postTxtServClfSeq;\r\n\t\t\t\titem.postTxtTorgGameId = article.post.postTxtTorgGameId;\r\n\t\t\t\thtml += NP.emoticonLayer.renderEmoticion( ( tplParser( NP.tmpl.reply ) )( item ) );\r\n\t\t\t}\r\n\r\n\t\t\thtml += '
            ';\r\n\r\n\t\t\thtml += ( tplParser( NP.tmpl.replyForm ))( NP.Character.data );\r\n\r\n\t\t\treturn html + '
            ';\r\n\t\t},\r\n\t\t/*setCount : function( article, vary ) {\r\n\t\t\tvar count = article.find( '.comment strong span' ),\r\n\t\t\t\tvalue = vary || count.text();\r\n\r\n\t\t\tif ( vary === '+' ) {\r\n\t\t\t\tvalue = parseInt( count.text() ) + 1;\r\n\t\t\t} else if ( vary === '-' ) {\r\n\t\t\t\tvalue = parseInt( count.text() ) - 1;\r\n\t\t\t} else {\r\n\t\t\t\tvalue = vary;\r\n\t\t\t}\r\n\r\n\t\t\tcount.text( value );\r\n\r\n\t\t\treturn parseInt( count.text() );\r\n\t\t},*/\r\n\t\tsetCount : function( article, vary ) {\r\n\t\t\tvar countParent = article.find( '.wrapBtnComment' ), \r\n\t\t\t\tcount = article.find( '.wrapBtnComment .btnComment .count' ),\r\n\t\t\t\tvalue = vary || count.text();\r\n\r\n\t\t\tif ( vary === '+' ) {\r\n\t\t\t\tvalue = parseInt( count.text() ) + 1;\r\n\t\t\t} else if ( vary === '-' ) {\r\n\t\t\t\tvalue = parseInt( count.text() ) - 1;\r\n\t\t\t} else {\r\n\t\t\t\tvalue = vary;\r\n\t\t\t}\r\n\r\n\t\t\t( value >= 1 )? countParent.addClass( 'on' ): countParent.removeClass( 'on' );\r\n\t\t\t\r\n\t\t\tcount.text( value );\r\n\r\n\t\t\treturn parseInt( count.text() );\r\n\t\t},\t\t\r\n\t\tsetLikeCount : function( reply, vary ) {\r\n\t\t\tvar count = reply.find( '.cFeed .count' ),\r\n\t\t\t\tvalue = vary || parseInt( count.text() );\r\n\r\n\t\t\tif ( vary === '+' ) {\r\n\t\t\t\tvalue = parseInt( count.text() ) + 1;\r\n\t\t\t} else if ( vary === '-' ) {\r\n\t\t\t\tvalue = parseInt( count.text() ) - 1;\r\n\t\t\t} else {\r\n\t\t\t\tvalue = vary;\r\n\t\t\t}\r\n\r\n\t\t\tif ( count.length ) {\r\n\t\t\t\tif ( value ) {\r\n\t\t\t\t\tcount.text( value + '명' );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcount.remove();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcount = reply.find( '.cFeed .like' ).after( ' 1명' );\r\n\t\t\t}\r\n\r\n\t\t\treturn parseInt( count.text() );\r\n\t\t}\r\n\t};\r\n}( jQuery ));\r\n\r\n\r\n// Context Menu\r\nNP.ContextMenu = (function( $ ) {\r\n\tvar tplParser = NP.ns( 'Util.tplParser' );\r\n\r\n\t// Get Menu\r\n\tNP.timeline.on( 'click', '.wrap_menu .btn', function() {\r\n\t\t\r\n\t\tif ( !mustLoginIfHasNoSession() ) {\r\n\t\t\treturn;\r\n\t\t};\r\n\t\t\r\n\t\tif ( !NP.dt.v ) {\r\n\t\t\tmodal.show({\r\n\t\t\t\ttxt : '로그인이 필요합니다.',\r\n\t\t\t\tbutton : [[\r\n\t\t\t\t\t'confirm', function() {\r\n\t\t\t\t\t\tthis.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t]]\r\n\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar button = $( this ),\r\n\t\t\tmenu = button.next(),\r\n\t\t\tarticleData = $.data( button.parents( 'article:last' )[ 0 ] ),\r\n\t\t\ti = 0,\r\n\t\t\titem,\r\n\t\t\thtml = '';\r\n\t\t\r\n\t\tvar curl = location.href;\r\n\t\t\r\n\t\tcurl = curl.replace( /[?||&]postTxtSeq=\\d*/g.exec( curl ), '' );\r\n\t\tcurl = ( curl.indexOf( '?' ) !== -1 )?\r\n\t\t\tcurl + '&': curl + '?';\r\n\r\n\t\tarticleData.currUrl = curl;\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype : 'get',\r\n\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.o + '/' + NP.dt.st + '/timeline/menu.jsonp',\r\n\t\t\tdataType : 'json',\r\n\t\t\tdata : {\r\n\t\t\t\twrt : articleData.wrtPlayncAcctId,\r\n\t\t\t\town : articleData.postTxtTorgId,\r\n\t\t\t\tactType : articleData.actType,\r\n\t\t\t\tpage : NP.dt.page,\r\n\t\t\t\tpostTorg : articleData.postTorg,\r\n\t\t\t\tpostOpen : articleData.postTxtOpenClfSeq\r\n\t\t\t},\r\n\t\t\tsuccess : function( data ) {\r\n\t\t\t\tif ( data.menu ) {\r\n\t\t\t\t\tdata = data.menu;\r\n\r\n\t\t\t\t\tfor ( ; item = data[ i ]; i += 1 ) {\r\n\t\t\t\t\t\titem = ( tplParser( NP.tmpl.contextMenu[ item ] ) )( articleData );\r\n\r\n\t\t\t\t\t\tif ( item ) {\r\n\t\t\t\t\t\t\thtml += item;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlayerManaged.toggle( button, menu.html( html ) );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\t// Click Menu\r\n\tNP.timeline.on( 'click', '.wrap_menu .context a', function() {\r\n\t\tvar menu = $( this ),\r\n\t\t\tjunc = menu[ 0 ].className.split( ' ' )[ 0 ],\r\n\t\t\tarticle = menu.parents( 'article:last' );\r\n\r\n\t\tNP.Article[ junc ] && NP.Article[ junc ]( article, menu );\r\n\t});\r\n\r\n\t// Hide Menu\r\n\tNP.timeline.on( 'mouseleave', '.article', function() {\r\n\t\tlayerManaged.hide();\r\n\t});\r\n}( jQuery ));\r\n\r\n\r\n// Report\r\nNP.Report = (function( $ ) {\r\n\tvar tplParser = NP.ns( 'Util.tplParser' ),\r\n\t\tlayer = $( '#modalDeclareArticle' ) ,\r\n\t\tbutton = layer.find( '.wrap_button a' ).eq( 0 ),\r\n\t\tcurrent;\r\n\t\r\n\t\r\n\r\n\treturn {\r\n\t\tgetList : function( target ) {\r\n\t\t\t\r\n\t\t\tif( !layer.length ){\r\n\t\t\t\tlayer = tplParser( NP.tmpl.modalDeclareArticle )();\r\n\t\t\t\t\r\n\t\t\t\tlayer = $( layer );\r\n\t\t\t\t\r\n\t\t\t\tbutton = layer.find( '.wrap_button a' ).eq( 0 );\r\n\t\t\t\t\r\n\t\t\t\tNP.body.append( layer );\r\n\t\t\t};\t\r\n\r\n\t\t\tvar targetData = $.data( target[ 0 ] );\r\n\t\t\tvar articlePosttorg = target.attr( 'data-posttorg' ),\r\n\t\t\t\tarticlePosttxtservclfseq = target.attr( 'data-posttxtservclfseq' ),\r\n\t\t\t\tarticlePostTxtTorgGameId = target.attr( 'data-postTxtTorgGameId' );\r\n\r\n\t\t\tvar rprtTrgtPlayncAcctNm = targetData.orgWrtPlayncAcctNm || targetData.wrtPlayncAcctNm;\r\n\r\n\t\t\tif( NP.isNeedCharacter( { postTorg: articlePosttorg, postTxtServClfSeq: articlePosttxtservclfseq, postTxtTorgGameId: articlePostTxtTorgGameId } ) ){\r\n\t\t\t\trprtTrgtPlayncAcctNm = target.find( '.identity .game' ).text().replace(/^\\[/, '').replace(/\\]$/, '');\r\n\r\n\t\t\t}\r\n\r\n\t\t\tcurrent = {\r\n\t\t\t\trprtTrgtClfTxt : targetData.postTxtSeq ? 'posttxt' : 'rplytxt',\r\n\t\t\t\trprtTrgtSeq : ( targetData.orgPostTxtSeq || targetData.postTxtSeq ) || targetData.rplyTxtSeq,\r\n\t\t\t\trprtClfSeq : '',\r\n\t\t\t\trprtTrgtPlayncAcctId : targetData.orgWrtPlayncAcctId || targetData.wrtPlayncAcctId,\r\n\t\t\t\trprtTrgtPlayncAcctNm : rprtTrgtPlayncAcctNm\r\n\t\t\t};\r\n\r\n\t\t\t$.ajax({\r\n\t\t\t\ttype : 'get',\r\n\t\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.v + '/' + NP.dt.st + '/reportInfo.jsonp',\r\n\t\t\t\tdataType : 'jsonp',\r\n\t\t\t\tsuccess : function( data ) {\r\n\t\t\t\t\tvar html = '',\r\n\t\t\t\t\t\titem,\r\n\t\t\t\t\t\ti = 0;\r\n\r\n\t\t\t\t\t// 남은신고횟수\r\n\t\t\t\t\tlayer.find( '.count' ).text( data.rprtNum );\r\n\r\n\t\t\t\t\t// 신고자\r\n\t\t\t\t\tlayer.find( '.reporter' ).text( NP.dt.vNm );\r\n\r\n\t\t\t\t\t// 신고일시\r\n\t\t\t\t\tlayer.find( '.date' ).text( data.rprtDate );\r\n\r\n\t\t\t\t\t// 신고대상자\r\n\t\t\t\t\tlayer.find( '.target' ).text( current.rprtTrgtPlayncAcctNm );\r\n\r\n\t\t\t\t\t// 신고사유\r\n\t\t\t\t\tfor ( ; item = data.rprtType[ i ]; i += 1 ) {\r\n\t\t\t\t\t\thtml += ' ' + item.cdNm + '
            ';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlayer.find( '.list' ).html( html );\r\n\r\n\t\t\t\t\tbutton.bind( 'click', NP.Report.it );\r\n\t\t\t\t\tmodal.show( layer );\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\tit : function() {\r\n\t\t\tbutton.unbind( 'click', NP.Report.it );\r\n\t\t\tcurrent.rprtClfSeq = layer.find( ':checked' ).val();\r\n\r\n\t\t\tif ( !current.rprtClfSeq ) {\r\n\t\t\t\tmodal.hide();\r\n\t\t\t\tmodal.show({\r\n\t\t\t\t\ttxt : '신고사유를 선택해주세요.'\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t$.ajax({\r\n\t\t\t\ttype : 'get',\r\n\t\t\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.v + '/' + NP.dt.st + '/report.jsonp',\r\n\t\t\t\tdataType : 'jsonp',\r\n\t\t\t\tdata : current,\r\n\t\t\t\tsuccess : function( data ) {\r\n\t\t\t\t\tmodal.hide();\r\n\r\n\t\t\t\t\tif ( data.reportResult === 'SUCCESS' ) {\r\n\t\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\t\ttxt : '신고 처리 되었습니다.'\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tcurrent = null;\r\n\t\t\t\t\t} else if ( data.reportResult === 'DUPLICATION' ) { // 중복 신고\r\n\t\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\t\ttxt : '이미 신고처리 되었습니다.'\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else if ( data.reportResult === 'EXPIRE' ) { // 신고횟수 초과\r\n\t\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\t\ttxt : '게시물 신고는 하루에 20회까지 가능합니다.'\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n}( jQuery ));\r\n\r\n\r\n// Image\r\nNP.Image = (function( $ ) {\r\n\tvar tplParser = NP.ns( 'Util.tplParser' ),\r\n\t\ttempImages = [],\r\n\t\tmaxImages = 5,\r\n\t\twidth,\r\n\t\theight;\r\n\r\n\tfunction focusOn( pane, index ) {\r\n\t\tvar navi = pane.find( 'nav a' ),\r\n\t\t\tlist = pane.find( 'ul li' );\r\n\r\n\t\tnavi.removeClass( 'on' ).eq( index ).addClass( 'on' );\r\n\t\tlist.css( 'zIndex', 1 ).eq( index ).css( 'zIndex', 3 );\r\n\t}\r\n\r\n\t// Thumbnail Image resizing\r\n\tNP.onProcessing.add(function( article ) {\r\n\t\tvar images = article.find( '.wrap_addedPhoto li img' ).css( 'opacity', 0.8 );\r\n\r\n\t\timages.load(function() {\r\n\t\t\tvar image = $( this ),\r\n\t\t\t\twidth = image[ 0 ].width,\r\n\t\t\t\tframeWidth = image.parents( 'ul' ).width(),\r\n\t\t\t\tli = image.parents( 'li' ),\r\n\t\t\t\twrap = image.parents( '.wrap_addedPhoto' );\r\n\r\n\t\t\tif ( !li.siblings().length ) {\r\n\t\t\t\twrap.addClass( 'wrap_addedPhotoOpen' ).removeClass( 'wrap_addedPhoto' );\r\n\t\t\t}\r\n\r\n\t\t\tif ( width > frameWidth ) {\r\n\t\t\t\tli.addClass( 'overWidth' );\r\n\t\t\t}\r\n\r\n\t\t\tNP.fadeIn( image );\r\n\t\t\tfocusOn( wrap, 0 );\r\n\t\t});\r\n\t});\r\n\r\n\t// Thumbnail viewer\r\n\tNP.timeline.on( 'mouseenter', '.wrap_addedPhoto nav a', function() {\r\n\t\tvar navi = $( this ),\r\n\t\t\tpane = navi.parents( '.wrap_addedPhoto' );\r\n\r\n\t\tfocusOn( pane, navi.index() );\r\n\t});\r\n\tNP.timeline.on( 'click', '.wrap_addedPhoto .open', function() {\r\n\t\tvar button = $( this ),\r\n\t\t\tpane = button.parents( '.wrap_addedPhoto' );\r\n\r\n\t\tpane.addClass( 'wrap_addedPhotoOpen' ).removeClass( 'wrap_addedPhoto' );\r\n\t});\r\n\r\n\t// Thumbnail Image viewer\r\n\tNP.timeline.on( 'click', '.wrap_addedPhoto li img, .wrap_addedPhotoOpen li img', function() {\r\n\t\tvar i = 0,\r\n\t\t\timage,\r\n\t\t\tlist = [],\r\n\t\t\tme = $( this ),\r\n\t\t\tsrc = me.attr( 'src' ),\r\n\t\t\timages = me.parents( 'ul' ).find( 'img' );\r\n\r\n\t\tif ( !Viewer ) {\r\n\t\t\tViewer = new nc.playinG.ImageViewer( NP.body[ 0 ], {\r\n\t\t\t\tisComment: false,\r\n\t\t\t\tchannel: 'SNS'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tViewer.onLoaded.removeAll();\r\n\t\tViewer.onLoaded.add(function() {\r\n\t\t\tvar i = 0,\r\n\t\t\t\timage,\r\n\t\t\t\timageIdx;\r\n\r\n\t\t\tfor( ; image = images[ i ]; i += 1) {\r\n\t\t\t\tif ( src === images.eq( i ).attr( 'src' ) ) {\r\n\t\t\t\t\timageIdx = i;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif( imageIdx ) {\r\n\t\t\t\tViewer.setSelectImageByIndex( imageIdx );\r\n\t\t\t}\r\n\r\n\t\t\tViewer.show();\r\n\t\t}, NP.win[ 0 ]);\r\n\r\n\t\tfor ( ; image = images[ i ]; i += 1 ) {\r\n\t\t\tlist.push( image.src.replace( /\\/download_?\\w*\\//, '/download/' ) );\r\n\t\t}\r\n\r\n\t\tViewer.setImages([{\r\n\t\t\tid : '',\r\n\t\t\tlength : list.length,\r\n\t\t\talbumNm : '',\r\n\t\t\talbumUrl : '',\r\n\t\t\tlist : list\r\n\t\t}]);\r\n\t});\r\n\r\n\t//문파 의상실 재료\r\n\tNP.onAfterTimelineLoad.add(function() {\r\n\t\t$( '.gf_groupUniform .wrapThumb' ).css( {'cursor':'pointer'} );\r\n\t\t$( '.gf_groupUniform .itemShortage' ).css( {'cursor':'pointer'} );\r\n\t});\r\n\r\n\tvar gotoPowerbook = function( node ){\r\n\t\tvar _$this = $( node );\r\n\t\tvar title = _$this.attr( 'title' );\r\n\t\tvar rcTxt = /rc./.test( location.host ) ? 'rc.' : '';\r\n\t\tvar powerbookUrl = 'https://bns.power.plaync.com/wiki/';\r\n\r\n\t\tif( _$this.parents( 'article' ).attr( 'data-gameid' ) === '102' ){\r\n\t\t\tlocation.href = powerbookUrl + title;\r\n\t\t};\t\r\n\t};\r\n\r\n\tNP.timeline.on( 'click', '.gf_groupUniform .wrapThumb', function() {\r\n\t\tgotoPowerbook( this );\t\r\n\t});\r\n\r\n\tNP.timeline.on( 'click', '.gf_groupUniform .itemShortage', function() {\r\n\t\tgotoPowerbook( this );\t\r\n\t});\r\n\r\n\t// Image Attach\r\n\t$('.addData .photo').click(function() {\r\n\t\t\r\n\t\tif ( !NP.dt.v ) {\r\n\t\t\tmodal.show({\r\n\t\t\t\ttxt : '로그인이 필요합니다.',\r\n\t\t\t\tbutton : [[\t'confirm' ]]\r\n\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tmustLoginIfHasNoSession() && NP.WriteForm.check(function() {\r\n\t\t\tif ( !imgUploadG ) {\r\n\t\t\t\t\r\n\t\t\t\tvar ImgUploadGData = {\r\n\t\t\t\t\t\tchannel: 'SNS',\r\n\t\t\t\t\t\ttokenUrl: ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.v + '/SNS/photo/createToken.json',\r\n\t\t\t\t\t\tfileInfo: ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.v + '/SNS/photo/tokenfileinfo.json',\r\n\t\t\t\t\t\tremoveFileInfo: ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.v + '/SNS/photo/deleteFile.json',\r\n\t\t\t\t\t\tiframe: NP.dt.imgUploadFrame || '/resources/jsp/editor/btnFileUpload.html',\r\n\t\t\t\t\t\teditFrame: NP.dt.imgUploadEditFrame || '/resources/jsp/editor/FileModify.html',\r\n\t\t\t\t\t\tfilterImageUrl: NP.dt.imgUploadEditFrame || '/resources/jsp/editor/symbol/',\r\n\t\t\t\t\t\t//thumbnailUrl: NP.FILESVR_URL + 'download_thumblarge/',\r\n\t\t\t\t\t\tthumbnailUrl: NP.FILESVR_URL + 'download/',\r\n\t\t\t\t\t\tvalidateTokenInfo: ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.v + '/SNS/photo/validateToken',\r\n\t\t\t\t\t\tmaxImages: maxImages,\r\n\t\t\t\t\t\tobjectName : 'imgUploadG',\r\n\t\t\t\t\t\tonComplete : NP.Image.add,\r\n\t\t\t\t\t\tisUrlUpload: false,\r\n\t\t\t\t\t\tlocalFileEnable : true\r\n\t\t\t\t\t};\r\n\t\t\t\t\r\n\t\t\t\timgUploadG = new nc.playinG.ImageUpload( document.body, ImgUploadGData );\r\n\t\t\t} else {\r\n\t\t\t\timgUploadG.setMaxImages( maxImages - tempImages.length );\r\n\r\n\t\t\t\tif ( tempImages.length >= maxImages ) {\r\n\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\ttxt : '등록하실 수 있는 최대 파일갯수를 초과하였습니다.'\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\timgUploadG.init();\r\n\r\n\t\t\t\tif ( tempImages.length == 0 ) {\r\n\t\t\t\t\timgUploadG.showNewToken();\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\timgUploadG.show();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn false;\r\n\t});\r\n\r\n\t// Delete Uploaded Image\r\n\tNP.WriteForm.writeShort.on( 'click', '.wrap_willAddPhoto .delete', function() {\r\n\t\tNP.Image.remove( $( this ).parent() );\r\n\t});\r\n\r\n\treturn {\r\n\t\tsetUI : function( images ) {\r\n\t\t\tif ( !images[ 0 ] && images[ 0 ] == null ) {\r\n\t\t\t\treturn '';\r\n\t\t\t}\r\n\r\n\t\t\tvar image,\r\n\t\t\t\tlen = images.length > 1,\r\n\t\t\t\t//html = '
            ',\r\n\t\t\t\thtml = '
            ',\r\n\t\t\t\ti = 0,\r\n\t\t\t\tj = 0;\r\n\r\n\t\t\tif ( len ) {\r\n\t\t\t\thtml += '';\r\n\t\t\t}\r\n\r\n\t\t\thtml += '
              ';\r\n\t\t\tvar imgfilesvr = 'https://imgfiles-cdn.plaync.com/'\r\n\t\t\tif ( /rc\\.|rc\\-/.test( location.host ) ) {\r\n\t\t\t\timgfilesvr = 'https://rc-imgfiles.plaync.com/'\r\n\t\t\t}\r\n\t\t\tfor ( ; image = images[ j ]; j += 1 ) {\r\n\t\t\t\t//html += '
            • \"\"
            • ';\r\n\t\t\t\thtml += '
            • \"\"
            • ';\r\n\t\t\t}\r\n\t\t\thtml += '
            ';\r\n\r\n\t\t\tif ( len ) {\r\n\t\t\t\thtml += '펼치기';\r\n\t\t\t}\r\n\r\n\t\t\treturn html + '
            ';\r\n\t\t},\r\n\t\tgetImages : function() {\r\n\t\t\treturn tempImages;\r\n\t\t},\r\n\t\tresetImages : function() {\r\n\t\t\ttempImages = [];\r\n\t\t},\r\n\t\tadd : function( images ) {\r\n\t\t\tif ( !images.length ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tNP.WriteForm.textarea.focus();\r\n\r\n\t\t\tif ( !NP.WriteForm.writeShort.find( '.wrap_willAddPhoto' ).length ) {\r\n\t\t\t\tNP.WriteForm.writeShort.find( '.wrap_button' ).before( tplParser( NP.tmpl.wrapImage )() );\r\n\t\t\t}\r\n\r\n\t\t\tvar image,\r\n\t\t\t\ti = 0, j = 0;\r\n\r\n\t\t\tvar li = NP.WriteForm.writeShort.find( '.wrap_willAddPhoto li' ),\r\n\t\t\t\tframeWidth = li.width(),\r\n\t\t\t\tframeHeight = li.height(),\r\n\t\t\t\twidth, height;\r\n\r\n\t\t\tfor ( ; image = images[ i ]; i += 1 ) {\r\n\t\t\t\timage.fileUrl = image.fileUrl.replace( /\\/download_?\\w*\\//, '/download_thumbmedium' );\r\n\r\n\t\t\t\tvar curLi = li.eq( tempImages.length );\r\n\t\t\t\tcurLi.html( tplParser( NP.tmpl.imageFrame )() );\r\n\t\t\t\tcurLi.attr('file-id', image.id);\r\n\r\n\r\n\t\t\t\tvar tmpImage = new Image();\r\n\t\t\t\ttmpImage.timer = setTimeout(function() {\r\n\t\t\t\t\tNP.Image.remove( curLi );\r\n\t\t\t\t\tmodal.show({\r\n\t\t\t\t\t\ttxt : '이미지 업로드에 실패 하였습니다.
            다시 시도 해 주세요.'\r\n\t\t\t\t\t});\r\n\t\t\t\t}, 10000);\r\n\t\t\t\t$(tmpImage).attr( 'src', image.fileUrl ).load(function() {\r\n\t\t\t\t\tclearTimeout( this.timer );\r\n\t\t\t\t\tvar _this = $( this );\r\n\r\n\t\t\t\t\twidth = _this[0].width;\r\n\t\t\t\t\theight = _this[0].height;\r\n\r\n\t\t\t\t\tif ( (height*frameWidth) < (width*frameHeight) && frameWidth < width ) {\r\n\t\t\t\t\t\t_this.css({\r\n\t\t\t\t\t\t\twidth : frameWidth,\r\n\t\t\t\t\t\t\theight : 'auto'\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else if ( frameHeight < height ) {\r\n\t\t\t\t\t\t_this.css({\r\n\t\t\t\t\t\t\twidth : 'auto',\r\n\t\t\t\t\t\t\theight : frameHeight\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t_this.prev().remove();\r\n\t\t\t\t\t_this.css('display', 'inline');\r\n\r\n\t\t\t\t});\r\n\t\t\t\tcurLi.find('img').after( $(tmpImage).hide() );\r\n\r\n\t\t\t\ttempImages.push( image.id || image.fileUrl );\r\n\t\t\t}\r\n\t\t},\r\n\t\tremove : function( cur ) {\r\n\t\t\t$(cur).parent().append( '
          • ' );\r\n\t\t\tvar tmpWillAddPhoto = [];\r\n\t\t\tfor( var i=0 ; i k; k++ ){\r\n\t\t\tvar sort = characters.sort[ k ],\r\n\t\t\t\tchars = characters[ sort ],\r\n\t\t\t\tj = 0;\r\n\t\t\t\r\n\t\t\tfor ( ; chars[ j ]; j += 1 ) {\r\n\t\t\t\thtml += '
          • ';\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif( NP.dt.page != 'characterguestbook' )\r\n\t\t\thtml += '
          • ';\r\n\t\t\r\n\t\thtml += '
          ';\r\n\r\n\t\treturn html;\r\n\t};\r\n\t\r\n\tcharacter.setUI = function( data ) {\r\n\t\tif( !data ) return '';\r\n\t\tif ( !data.characters ) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\tvar charList = data.characters, \r\n\t\tcharacters = {\r\n\t\t\taion: ( charList.AION )? charList.AION: [],\r\n\t\t\tbns: ( charList.BNS )? charList.BNS: [],\r\n\t\t\tsort: ['bns', 'aion']\r\n\t\t};\r\n\r\n\t\tif( NP.dt.st === 'aion' ) characters.sort.reverse();\t\t\r\n\t\t\r\n\t\t//아이온 캐릭터 방명록, 그룹 방명록, 그룹\r\n\t\tif( NP.dt.st === 'aion' && ( NP.dt.page === 'characterguestbook' || NP.dt.page === 'groupguestbook' || NP.dt.page === 'group' ) ){\r\n\t\t\tcharacters.sort = ['aion'];\r\n\t\t};\t\t\r\n\t\t\r\n\t\t//블소 캐릭터 방명록\r\n\t\tif( NP.dt.st === 'bns' && ( NP.dt.page === 'characterguestbook' ) ){\r\n\t\t\tcharacters.sort = ['bns'];\r\n\t\t};\r\n\t\t\t\r\n\t\tvar html = '
          선택 안함
            ',\r\n\t\ti = 0;\r\n\t\r\n\t\r\n\t\tfor ( var k = 0, l = characters.sort.length; l > k; k++ ){\r\n\t\t\tvar sort = characters.sort[ k ],\r\n\t\t\t\tchars = characters[ sort ],\r\n\t\t\t\tj = 0;\r\n\t\t\t\r\n\t\t\tfor ( ; chars[ j ]; j += 1 ) {\r\n\t\t\t\thtml += '
          • ';\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\t\t}\t\r\n\r\n\t\tif( NP.dt.page != 'characterguestbook' )\r\n\t\t\thtml += '
          • ';\t\t\r\n\r\n\t\thtml += '
          ';\r\n\t\t\r\n\t\treturn html;\r\n\t};\r\n\t\r\n\tcharacter.set = function( index ) {\r\n\t\tif ( typeof index == 'undefined' ) {\r\n\t\t\tif ( cache ) {\r\n\t\t\t\tindex = cache;\r\n\t\t\t} else {\r\n\t\t\t\tindex = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t$( '.selectSetChar' ).each(function() {\r\n\t\t\tvar el = $( this );\r\n\r\n\t\t\tel.find( 'label' ).removeClass( 'checked' ).eq( index ).addClass( 'checked' );\r\n\t\t\t//el.find( '.js_selected' ).text( el.find( 'label' ).removeClass( 'checked' ).eq( index ).addClass( 'checked' ).text() );\r\n\t\t\tel.find( '.js_selected' ).text( el.find( 'label' ).removeClass( 'checked' ).eq( index ).addClass( 'checked' ).text() );\r\n\t\t\tel.find( 'label input' ).eq( index ).attr( 'checked', 'checked' );\r\n\t\t\t\r\n\t\t\t//selectbox가 1개일 경우 notSelected class 추가\r\n\t\t\tif( el.find( '.js_selector ul li' ).length == 1 )\r\n\t\t\t\tel.find( '.js_selected' ).addClass( 'notSelected' );\r\n\t\t\t\r\n\t\t});\r\n\t\t/* options.jsSelect.find('label').removeClass('checked');\r\n\t\t\t//label에 text가 있으면 jsSelected에 넣어줌\r\n\t\t\tif(options.chkInput.html()!=null){\r\n\t\t\t\toptions.chkLabel.addClass('checked');\r\n\t\t\t\toptions.jsSelected.html( options.chkLabel.html() ).find('input').remove();\r\n\t\t\t}\r\n\t\t\toptions.jsSelector.hide(); */\r\n\t\tcache = index;\r\n\t};\r\n\r\n\tcharacter.getCache = function() {\r\n\t\treturn cache;\r\n\t};\r\n\r\n\treturn character;\r\n}( jQuery, NP.body ));\r\n\r\n// 캐릭터 목록 가져오기( 로그인 시에만 )\r\nNP.onBeforeGetTimeline.add(function( callbacks ) {\r\n\tif ( typeof callbacks !== 'function' ) {\r\n\t\treturn;\r\n\t}\r\n\t\r\n\tif ( !NP.dt.v ) { // 비로그인 시\r\n\t\t// 호출한 GUID를 visitor id 로 대입\r\n\t\t//NP.dt.v = NP.Util.getGUID();\r\n\r\n\t\tcallbacks();\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tjQuery.ajax({\r\n\t\tdataType : 'json',\r\n\t\turl : ( ( NP.dt.prefixUrl )? NP.dt.prefixUrl: '' ) + '/' + NP.dt.v + '/my/character.json?trgtId=' + NP.Util.getParam( 'trgtId' ),\r\n\t\tsuccess : function( data ) {\r\n\t\t\tif ( !data.characters ) {\r\n\t\t\t\tcallbacks();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tNP.Character.data = data;\r\n\t\t\tcallbacks();\r\n\t\t}\r\n\t});\r\n});\r\n"]}