// TTML·Î ÀÛ¼ºµÈ ÆÄÀÏÀ» HTML ºä¿¡ »Ñ·ÁÁÖ±â À§ÇØ º¯È¯
editor.ttml2html = function(str)
{
var str = this.textarea.value;
var inHTML = false;
var sb = new StringBuffer();
// [HTML][/HTML] ºí·°À» Á¦¿ÜÇÑ ºÎºÐ¿¡ Áٹٲ޹®ÀÚ¸¦ BR ű׷Π¹Ù²ãÁØ´Ù
while(true)
{
if(inHTML)
{
if((offsetEnd = str.indexOf("[/HTML]")) != -1)
{
sb.append(str.substring(0, offsetEnd));
sb.append("");
str = str.substring(offsetEnd + 7, str.length);
inHTML = false;
}
else
break;
}
else
{
if((offsetStart = str.indexOf("[HTML]")) != -1)
{
sb.append(this.nl2br(str.substring(0, offsetStart)));
sb.append("");
str = str.substring(offsetStart + 6, str.length);
inHTML = true;
}
else
{
sb.append(this.nl2br(str));
break;
}
}
}
str = sb.toString();
var regImage = new RegExp("\\[##_(([1-3][CLR])(\\|[^|]*?)+)_##\\]", "g");
// À̹ÌÁö ġȯÀÚ Ã³¸®
while(result = regImage.exec(str))
{
var search = result[0];
var longDesc = " longdesc=\"" + this.addQuot(this.htmlspecialchars(result[1])) + "\" ";
// Avoid the bug
longDesc = longDesc.replace("<", "<");
longDesc = longDesc.replace(">", ">");
var attributes = result[1].split("|");
var imageType = attributes[0];
if(this.isImageFile(attributes[1]))
{
var imageName = this.propertyFilePath + attributes[1];
var imageAttr = this.parseImageSize(attributes[2], "string");
}
else
{
var imageName = servicePath + "/image/spacer.gif";
var imageAttr = this.fileStyle;
}
switch(imageType)
{
case "1L":
var replace = "";
break;
case "1R":
var replace = "";
break;
case "1C":
var replace = "";
break;
case "2C":
imageAttr = "width=\"200\" height=\"100\"";
var replace = "";
break;
case "3C":
imageAttr = "width=\"300\" height=\"100\"";
var replace = "";
}
str = str.replace(search, replace);
}
// iMazing ó¸®
var regImazing = new RegExp("\\[##_iMazing\\|(.*?)_##\\]", "g");
while(result = regImazing.exec(str))
{
var search = result[0];
var longDesc = " longdesc=\"iMazing|" + this.addQuot(this.htmlspecialchars(result[1])) + "\" ";
// Avoid the bug
longDesc = longDesc.replace("<", "<");
longDesc = longDesc.replace(">", ">");
var imageAttr = this.parseImageSize(result[1], "string");
var replace = "";
str = str.replace(search, replace);
}
// Gallery ó¸®
var regGallery = new RegExp("\\[##_Gallery\\|(.*?)_##\\]", "g");
while(result = regGallery.exec(str))
{
var search = result[0];
var longDesc = " longdesc=\"Gallery|" + this.addQuot(this.htmlspecialchars(result[1])) + "\" ";
// Avoid the bug
longDesc = longDesc.replace("<", "<");
longDesc = longDesc.replace(">", ">");
var imageAttr = this.parseImageSize(result[1], "string");
var replace = "";
str = str.replace(search, replace);
}
// Jukebox ó¸®
var regJukebox = new RegExp("\\[##_Jukebox\\|(.*?)_##\\]", "g");
while(result = regJukebox.exec(str))
{
var search = result[0];
var longDesc = " longdesc=\"Jukebox|" + this.addQuot(this.htmlspecialchars(result[1])) + "\" ";
// Avoid the bug
longDesc = longDesc.replace("<", "<");
longDesc = longDesc.replace(">", ">");
var replace = "";
str = str.replace(search, replace);
}
// ´ÜÀÏ À̹ÌÁö ġȯÀÚ Ã³¸®
var regImage = new RegExp("src=[\"']?(\\[##_ATTACH_PATH_##\\][a-z.0-9/]*)", "gi");
while(result = regImage.exec(str))
str = str.replace(result[0], "class=\"tatterImageFree\" longdesc=\"" + result[1] + "\" src=\"" + this.propertyFilePath.substring(0, this.propertyFilePath.length - 1) + result[1].replace("[##_ATTACH_PATH_##]", ""));
// MORE/LESS ó¸®
while(true)
{
var pos1 = str.indexOf("[#M_");
if(pos1 > -1)
{
var pos2 = str.indexOf("_M#]", pos1);
if(pos2 > -1)
{
var block = str.substring(pos1 + 4, pos2);
while(true)
{
if(block.indexOf("[#M_") == -1)
break;
else
block = block.substring(block.indexOf("[#M_") + 4, block.length);
}
var more = block.substring(0, block.indexOf("|"));
var remain = block.substring(block.indexOf("|") + 1, block.length);
var less = remain.substring(0, remain.indexOf("|"));
remain = remain.substring(remain.indexOf("|"), remain.length);
var body = remain.substring(remain.indexOf("|") + 1, remain.length);
str = str.replace("[#M_" + block + "_M#]", '
' + body + '
');
}
else
break;
}
else
break;
}
// Music ó¸®(J. Parker)
var regMusic = new RegExp("", "gi");
while(result = regMusic.exec(str))
str = str.replace(result[0], "");
// Flash ó¸®
var regEmbed = new RegExp("", "gi");
while(result = regEmbed.exec(str))
str = str.replace(result[0], "");
// Embed ó¸®
var regEmbed = new RegExp("", "gi");
while(result = regEmbed.exec(str))
str = str.replace(result[0], "");
return str;
}
// IFRAME¿¡ ÀÛ¼ºµÈ HTMLÀ» ÅÂÅÍÅøÁî ÅؽºÆ® ¿¡µðÅÍ¿¡¼ º¼ ¼ö ÀÖ´Â TTML·Î Àüȯ
editor.html2ttml = function()
{
var obj = this.contentDocument.body.cloneNode(true);
// MORE/LESS ó¸®
while(true)
{
var divs = obj.getElementsByTagName("div");
if(divs.length > 0)
{
var exist = false;
for(var i=0; i]*)> ", "gi"), "
");
// ¾µ¸ð¾ø´Â Á¦°Å
str = str.replace(new RegExp("([^ ]) ([^ ])", "gi"), "$1 $2");
var inHTML = false;
var sb = new StringBuffer();
// ºí·°À» Á¦¿ÜÇÑ ºÎºÐ¿¡ Áٹٲ޹®ÀÚ¸¦ BR ű׷Π¹Ù²ãÁØ´Ù
while(true)
{
if(inHTML)
{
if((offsetEnd = str.indexOf("")) != -1)
{
sb.append(str.substring(0, offsetEnd));
sb.append("[/HTML]");
str = str.substring(offsetEnd + 35, str.length);
inHTML = false;
}
else
break;
}
else
{
if((offsetStart = str.indexOf("")) != -1)
{
sb.append(str.substring(0, offsetStart).replace(new RegExp("[\r\n]*
[\r\n]*", "gi"), "\r\n"));
sb.append("[HTML]");
str = str.substring(offsetStart + 37, str.length);
inHTML = true;
}
else if(str.indexOf("") != -1)
{
// IEÀÇ °æ¿ì ÁÖ¼®ÀÌ Á¦ÀÏ Ã³À½¿¡ ³ª¿À¸é »ç¶óÁö´Â ¹ö±× ÀÖÀ½
// ½ÃÀÛÀº ¾øÁö¸¸ ³¡ÀÌ ÀÖ´Â °æ¿ì¿£ ½ÃÀÛÀ§Ä¡¸¦ 0À¸·Î °£ÁÖ
sb.append("[HTML]");
inHTML = true;
}
else
{
sb.append(str.replace(new RegExp("[\r\n]*
[\r\n]*", "gi"), "\r\n"));
break;
}
}
}
str = sb.toString();
// À̹ÌÁö ġȯÀÚ Ã³¸®
while(true)
{
var regImage = new RegExp("]*class=[\"']?tatterImage[^>]*>", "gi");
if(result = regImage.exec(str))
{
var body = result[0];
var replace = this.parseAttribute(result[0], "longdesc");
if(replace && replace.indexOf("[##_ATTACH_PATH_##]") == -1)
str = str.replace(body, "[##_" + this.removeQuot(replace).replace(new RegExp("&?", "gi"), "&") + "_##]");
else
str = str.replace(body, "");
}
else
break;
}
// iMazing ó¸®
while(true)
{
var regImaging = new RegExp("]*class=[\"']?tatterImazing[^>]*>", "gi");
if(result = regImaging.exec(str))
{
var body = result[0];
var size = this.parseImageSize(body, "array");
var longdesc = this.parseAttribute(result[0], "longdesc");
longdesc = this.removeQuot(longdesc);
longdesc = longdesc.replace(new RegExp("(width=[\"']?)\\d*", "i"), "$1" + size[0]);
longdesc = longdesc.replace(new RegExp("(height=[\"']?)\\d*", "i"), "$1" + size[1]);
str = str.replace(body, "[##_" + longdesc.replace(new RegExp("&?", "gi"), "&") + "_##]");
}
else
break;
}
// Gallery ó¸®
while(true)
{
var regGallery = new RegExp("]*class=[\"']?tatterGallery[^>]*>", "gi");
if(result = regGallery.exec(str))
{
var body = result[0];
var size = this.parseImageSize(body, "array");
var longdesc = this.parseAttribute(result[0], "longdesc");
longdesc = this.removeQuot(longdesc);
longdesc = longdesc.replace(new RegExp("(width=[\"']?)\\d*", "i"), "$1" + size[0]);
longdesc = longdesc.replace(new RegExp("(height=[\"']?)\\d*", "i"), "$1" + size[1]);
longdesc = longdesc.split("|");
// TT 1.0 alpha ~ 1.0.1±îÁö ¾²´ø Gallery ġȯÀÚ¸¦ À§ÇÑ ÄÚµå
if(longdesc.length % 2 == 1)
longdesc.length--;
var files = "";
for(var i=1; i]*class=[\"']?tatterJukebox[^>]*>", "gi");
if(result = regJukebox.exec(str))
{
var body = result[0];
var size = this.parseImageSize(body, "array");
var longdesc = this.parseAttribute(result[0], "longdesc");
longdesc = this.removeQuot(longdesc);
longdesc = longdesc.replace(new RegExp("(width=[\"']?)\\d*", "i"), "$1" + size[0]);
longdesc = longdesc.replace(new RegExp("(height=[\"']?)\\d*", "i"), "$1" + size[1]);
longdesc = longdesc.split("|");
var files = "";
for(var i=1; i", "gi"), "_M#]");
// Music ó¸®(J. Parker)
while(true)
{
var regMusic = new RegExp("]*class=[\"']?tatterMusic.*?>", "gi");
if(result = regMusic.exec(str))
{
var body = result[0];
var longdesc = this.parseAttribute(body, "longDesc")
longdesc = longdesc.replace(new RegExp("&?", "gi"), "&");
str = str.replace(body, "");
}
break;
}
// Embed ó¸®
while(true)
{
var regEmbed = new RegExp("]*class=[\"']?tatterEmbed.*?>", "gi");
if(result = regEmbed.exec(str))
{
var body = result[0];
str = str.replace(body, "");
}
break;
}
// Flash ó¸®
while(true)
{
var regFlash = new RegExp("]*class=[\"']?tatterFlash.*?>", "gi");
if(result = regFlash.exec(str))
{
var body = result[0];
str = str.replace(body, '');
}
break;
}
if(!this.isSafari)
{
// XHTML 1.0 Á¤±ÔÈ
// -> , -> , -> , ->
str = str.replace(new RegExp("]*)>(.*?)", "gi"), "$2");
str = str.replace(new RegExp("]*)>(.*?)", "gi"), "$2");
str = str.replace(new RegExp("]*)>(.*?)", "gi"), "$2");
str = str.replace(new RegExp("]*)>(.*?)", "gi"), "$2");
var regTag = new RegExp("<([^\\s>]+)\\s*([^>]*)(/?)>", "gi");
while(result = regTag.exec(str))
{
var tagBody = result[0];
var tagStart = "<" + result[1];
var tagFinish = result[3] + ">";
if(tagStart == "