//addec by mj.chong 2006.12.06
//tag 금칙 문자 (%, &, +, <, >, ?, /, \, ', ", =, \n)
//comma는 별로도 제외하는 로직이 있음
var restrictedTagChars = /[\x25\x26\x2b\x3c\x3e\x3f\x2f\x5c\x27\x22\x3d]|(\x5c\x6e)/g;
function validTag(tagObj, e)
{
var tagVal = tagObj.value;
var commacnt = 0;
var key = window.event ? e.keyCode : e.which;
if(tagVal.charAt(tagVal.length-1) == ',' && (key == 44 || key == 32))
return false;
for(var i=0; i < tagVal.length; i++) {
if(tagVal.charAt(i) == ',') {
commacnt++;
}
if(commacnt >= 9) {
alert("태그는 최대 10개까지 입력할 수 있습니다.");
return false;
}
}
if
(key != 0x2C && (key > 32 && key < 48) || (key
> 57 && key < 65) || (key > 90 && key < 97))
return false;
}
function check_tagvalidate(aEvent, input)
{
var keynum;
if(typeof aEvent=="undefined") aEvent=window.event;
if(IE)
{
keynum = aEvent.keyCode;
}
else
{
keynum = aEvent.which;
}
//edited by mj.chong 20061206
//if(keynum == 188 ) {
// input.value = BlogTag.validateTagString(input.value);
//}
// %, &, +, -, ., /, <, >, ?, \n, \ |
var ret = input.value;
if(ret.match(restrictedTagChars) != null ) {
ret = ret.replace(restrictedTagChars, "");
input.value=ret;
}
//콤마가 연속으로 있으면 하나로 만든다.
re = /[\x2c][\x2c]+/g;
if(ret.match(re) != null ){
ret = ret.replace(re, ",");
input.value=ret;
}
highlightMyTag();
}
function check_tagsvalidate(input)
{
input.value = BlogTag.validateTagString(input.value);
//중복되는 태그 제거
input.value = BlogTag.eliminateDuplicate(input.value);
var tagcount = BlogTag.length(input.value);
highlightMyTag();
//태그 수 제한
if(tagcount > 10)
{
alert("태그는 최대 10개 까지 입력이 가능합니다.");
input.value = BlogTag.absoluteTagString(input.value, 10);
input.focus();
return;
}
//태그의 길이 제한
var bvalidate;
var tagmaxlength = 100;
bvalidate = BlogTag.isValidateTagLength(input.value, tagmaxlength);
if(!bvalidate)
{
alert("태그는 100자 이상 입력할 수 없습니다.");
input.focus();
return;
}
}
var BlogTag =
{
//유효한 태그명인지 확인.
isTagname : function(tagname)
{
return tagname.match(restrictedTagChars)==null;
}
,
//태그 문자열을 유효하게 만든다.( 금지문자 제거, 연속되는 컴마 제거 )
validateTagString : function(tagstring)
{
var ret = tagstring.replace(restrictedTagChars, "");
//콤마가 연속으로 있으면 하나로 만든다.
re = /[\x2c]+/g;
return ret.replace(re, ",");
}
,
absoluteTagString : function(tagstring, maxcnt)
{
var valitags = BlogTag.validateTagString(tagstring);
var arraytag = valitags.split(",");
var tagnames = "";
var absolutecnt = arraytag.length;
if(absolutecnt > maxcnt)
absolutecnt = maxcnt;
for(var i=0; i< absolutecnt; i++)
{
tagnames = tagnames + arraytag[i] + ",";
}
tagnames = BlogTag.validateTagString(tagnames);
tagnames = tagnames.substring(0, tagnames.length-1);
return tagnames;
}
,
//중복되는 태그를 없앤다.
eliminateDuplicate : function(tagstring)
{
var valitags = BlogTag.validateTagString(tagstring);
var arraytag = valitags.split(",");
var tagnames = "";
for(var i=0; i<arraytag.length; i++)
{
for(var j=0; j<i; j++)
{
//이미 존재 하는 태그라면 없앰.
if(arraytag[j]==arraytag[i])
{
arraytag[i]="";
}
}
tagnames = tagnames + arraytag[i] + ",";
}
tagnames = BlogTag.validateTagString(tagnames);
tagnames = tagnames.substring(0, tagnames.length-1);
return tagnames;
}
,
//태그수 를 계산 한다.
length : function(tagstring)
{
var arraytag = tagstring.split(",");
return arraytag.length;
}
,
//각 태그의 길이를 특정 크기 이하로 제한한다.
validateTagLength : function(tagstring, maxlen)
{
var arraytag = tagstring.split(",");
var tagnames = '';
for(var i=0; i<arraytag.length; i++)
{
if(arraytag[i].length > maxlen)
{
arraytag[i] = arraytag[i].substring(0, maxlen);
}
tagnames = tagnames + arraytag[i] + ",";
}
tagnames = tagnames.substring(0, tagnames.length-1);
tagnames = BlogTag.eliminateDuplicate(tagnames);
return tagnames;
}
,
//각 태그의 길이가 유효한지 확인한다.
isValidateTagLength : function(tagstring, maxlen)
{
var arraytag = tagstring.split(",");
for(var i=0; i<arraytag.length; i++)
{
if(arraytag[i].length > maxlen)
{
return false;
}
}
return true;
}
}