var nn4 = (document.layers) ? true : false;
var ie  = (document.all) ? true : false;
var dom = (document.getElementById && !document.all) ? true : false;

function addFavorites( favoriteurl, favoritetitle ){
	if (document.all) window.external.AddFavorite(favoriteurl,favoritetitle);
}

function writeMailAddr( emailAddr ){
    mailAddr = emailAddr + "@" + "logger.jp";
    document.write( "<a href=mailto:" + mailAddr +">" + mailAddr + "</a>" );
}

function writeMailAddr2( emailAddr ){
    mailAddr = emailAddr + "@" + "logger.jp";
    document.write( "<a href=mailto:" + mailAddr +">" + mailAddr + "</a>" );
}

function writeMailAddrWhite( emailAddr ){
    mailAddr = emailAddr + "@" + "logger.jp";
    document.write( "<a href='mailto:" + mailAddr +"' class='white'><font color='white'>" + mailAddr + "</font></a>" );
}


// function.inc ・川・・萀 ・・剩・逸从
function writePhone() { document.write( "03-6908-9295" ); }
function writeFax() { document.write( "03-6908-9296" ); }
function writeAddr() { document.write( "東京都新宿区北新宿4丁目31-3" ); }
function writeCompany(){ document.write( "bizSpring" ); }
function writeCopyYear(){ var cDate = new Date(); var currentYear = (document.all)?(cDate.getYear()):(cDate.getFullYear()); document.write( "2002-" + currentYear ); }
//function writeCopyYear(){  document.write( "2002-2005" ); }
function writeZipcode(){ document.write( "169-0074" ); }


// ・ｬ・菩攪 override
function onLoad(){
}

//
function openPop( URL, name, popWidth, popHeight, scroll ) {
		if( popWidth != 0 && popHeight != 0 ) {
			popLeft = screen.width/2 - popWidth/2;
			popTop = screen.height/2 - popHeight/2;
		} else {
			popWidth = screen.width-12;
			popHeight = screen.height-100;
			popLeft = 0;
			popTop = 0;
		}

		//popLeft = 0;
		//popTop = 0;
		option = 'width='+popWidth+',height='+popHeight+',toolbar=0,locationbar=0,status='+scroll+',menubar=0,scrollbars='+scroll+',resizable=1,top='+popTop+',left='+popLeft;
		win = window.open( URL, name, option );
		win.focus();
		//return win;
}

function openPopEncode( URL, name, popWidth, popHeight, scroll ) {
		URL = encodeURI(URL);
		if( popWidth != 0 && popHeight != 0 ) {
			popLeft = screen.width/2 - popWidth/2;
			popTop = screen.height/2 - popHeight/2;
		} else {
			popWidth = screen.width-12;
			popHeight = screen.height-100;
			popLeft = 0;
			popTop = 0;
		}

		//popLeft = 0;
		//popTop = 0;
		option = 'width='+popWidth+',height='+popHeight+',toolbar=0,locationbar=0,status='+scroll+',menubar=0,scrollbars='+scroll+',resizable=1,top='+popTop+',left='+popLeft;
		win = window.open( URL, name, option );
		win.focus();
		//return win;
}

function openPopFix( URL, name, popWidth, popHeight, scroll ) {
		if( popWidth != 0 && popHeight != 0 ) {
			popLeft = screen.width/2 - popWidth/2;
			popTop = screen.height/2 - popHeight/2;
		} else {
            // none minus
			popWidth = screen.width;
			popHeight = screen.height-100;
			popLeft = 0;
			popTop = 0;
		}

		//popLeft = 0;
		//popTop = 0;
		option = 'width='+popWidth+',height='+popHeight+',toolbar=0,locationbar=0,status=0,menubar=0,scrollbars='+scroll+',resizable=0,top='+popTop+',left='+popLeft;
		win = window.open( URL, name, option );
		win.focus();
		//return win;
}

function goURL(URL) {
    if( URL != "" && URL != "#" ) document.location = URL;
}

// validate
// Check Email
function validateEmail( obj ) {  // str or obj

	var str = obj.value.replace(/ /gi, "");
	if(str == "") {
		return false;
	}

	var i = str.indexOf("@");
	if(i < 0) {
		return false;
	}

	i = str.indexOf(".");
	if(i < 0) {
		return false;
	}

	str = str.toUpperCase();
	for(var i=1; i < str.length; i++) {
		if( !( ('A' <= str.charAt(i) && str.charAt(i) <= 'Z') ||
			   ('0' <= str.charAt(i) && str.charAt(i) <= '9') ||
			   (str.charAt(i) == '_') || (str.charAt(i) == '-') || (str.charAt(i) == '.') || (str.charAt(i) == '@') || (str.charAt(i) == ',')
			 )
		  ) {
			return false;
		}
	}
	return true;
}

function isNumber(obj) {
	var str = obj.value;
	if(str.length == 0) {
		return false;
	}

	for(var i=0; i < str.length; i++) {
		if(!('0' <= str.charAt(i) && str.charAt(i) <= '9')) {
			return false;
		}
	}
	return true;
}

function isCodeNumber(obj) {
	var str = obj.value;
	if(str.length == 0) {
		return false;
	}

	for(var i=1; i < str.length; i++) {
		if(!(('A' <= str.charAt(i) && str.charAt(i) <= 'Z') ||
			('0' <= str.charAt(i) && str.charAt(i) <= '9') ||
			(str.charAt(i) == '-'))) {
			return false;
		}
	}
	return true;
}

function isSame(obj1, obj2) {
	var str1 = obj1.value;
	var str2 = obj2.value;
	if(str1.length == 0 || str2.length == 0)
		return false;

	if(str1 == str2)
		return true;
	return false;
}

function isAlphaNumeric(obj) {
	var str = obj.value;
	if(str.length == 0) {
		return false;
	}

	str = str.toUpperCase();
	for(var i=0; i < str.length; i++) {
		if(!(('A' <= str.charAt(i) && str.charAt(i) <= 'Z') ||
			('0' <= str.charAt(i) && str.charAt(i) <= '9') ||
			('_' == str.charAt(i) )) ) {
			return false;
		}
	}
	return true;
}

function makeBizNumFormat( obj ) {
    var str = obj.value;
    str = str.replace(/-/g,"" );
    str = str.substr(0,6) + "-" + str.substr(6,7);
    return str;
}

function makeSSNFormat( obj ) {
    var str = obj.value;
    str = str.replace(/-/g,"" );
    str = str.substr(0,3) + "-" + str.substr(3,2) + "-" + str.substr(5,5);
    return str;
}

function detectNumType( obj ) {
    var str = obj.value;

    if(str.length >= 13 && str.length <= 14 ) {
		return "PRIVATE";
	} else if(str.length >= 10 && str.length <= 12 ) {
	    return "COMPANY";
	} else {
	    return "NULL";
	}
}

function isSSN( obj ) {

    if( !isCodeNumber( obj ) ) {
        return false;
    }

    var str = obj.value;
    str = str.replace(/-/g,"" );

	var birthday = str.substr(0,6);
	var num = str.substr(6,7);

	if(birthday.length != 6) {
		return false;
	}
	if(num.length != 7) {
		return false;
	}
	var hap = 0;
	for(var i=0; i < 6; i++) {
		var temp = birthday.charAt(i) * (i+2);
		hap += temp;
	}

	var n1 = num.charAt(0);
	var n2 = num.charAt(1);
	var n3 = num.charAt(2);
	var n4 = num.charAt(3);
	var n5 = num.charAt(4);
	var n6 = num.charAt(5);
	var n7 = num.charAt(6);

	hap += n1*8+n2*9+n3*2+n4*3+n5*4+n6*5;
	hap %= 11;
	hap = 11 - hap;
	hap %= 10;
	if(hap != n7) {
		return false;
	}
	return true;
}

function isBizNum( obj ) {
    if( !isCodeNumber( obj ) ) {
        return false;
    }
    var str = obj.value;
    str = str.replace(/-/g,"" );

    var nt = 0;
    nt += parseInt( str.charAt(0) ) * 1;
    nt += parseInt( str.charAt(1) ) * 3;
    nt += parseInt( str.charAt(2) ) * 7;
    nt += parseInt( str.charAt(3) ) * 1;
    nt += parseInt( str.charAt(4) ) * 3;
    nt += parseInt( str.charAt(5) ) * 7;
    nt += parseInt( str.charAt(6) ) * 1;
    nt += parseInt( str.charAt(7) ) * 3;
    nt += parseInt( str.charAt(8) ) * 5;
    nt += parseInt( parseInt( str.charAt(8) ) * 5 / 10 );

    var na = nt % 10;
    var ne = parseInt( str.charAt(9) );
    var nc = 0;

    if( na != 0 ) {
        nc = 10 - na;
    } else {
        nc = 0;
    }

    if( nc != ne ) {
        return false;
    } else {
        return true;
    }

}

function isBetween(obj,s,e) {
	var str = obj.value;
	if(str.length >= s && str.length <= e ) {
		return true;
	} else {
	    return false;
	}
}

function makeHidden() {
	document.writeln("<form>");
	for (i=0; i<fMakeHidden.arguments.length; i++) {
		document.writeln("<input type='hidden' name='" + fMakeHidden.arguments[i] + "' value=''>");
	}
	document.writeln("</form>");
}

function setHiddenValue(frm,hname,val) {
	document.forms[frm].elements[hname].value = val;
}

function fNumToStr(num) {
	var v = String(num);
	var l = v.length;
	var str = '';
	var c = 1;
	var tmp = new Array();
	var coma = ',';

	for (i=l;i>-1;i--) {
		c++;
		if ((c%3==0)&&(i!=l-1))
			tmp[i]=v.charAt(i) + coma;
		else
			tmp[i]=v.charAt(i);
	}
	str=tmp.join('');

	return str;
}

function verifyIP (IPvalue) {
    errorString = "";
    theName = "IPaddress";

    var ipPattern = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
    var ipArray = IPvalue.match(ipPattern);

    if (ipArray == null)
        return "";

    if (IPvalue == "0.0.0.0")
        errorString = errorString + '正しいIPアドレスではありません。'; // 孖ｹ・销 IP・ｼ・谀 ・ｴ・・鰀 ・ｬ・ｩ﨑ꀀ・頀 ・・慣・壱共.
    else if (IPvalue == "255.255.255.255")
        errorString = errorString + '特定のIPアドレスですのでご利用できません。'; // 孖ｹ・销 IP・ｼ・谀 ・ｴ・・鰀 ・ｬ・ｩ﨑ꀀ・頀 ・・慣・壱共.
    else {
        for (var i = 0; i < 4; i++) {
            thisSegment = ipArray[i];
            if (thisSegment > 255) {
                errorString = errorString + '正しいIPアドレスではありません。';  // ・倣剳﨑鰀 IP Address・ ・・漁・壱共.
            }
            if ((i == 0) && (thisSegment > 255)) {
                errorString = errorString + '特定のIPアドレスですのでご利用できません。'; // 孖ｹ・销 IP・ｼ・谀 ・ｴ・・鰀 ・ｬ・ｩ﨑ꀀ・頀 ・・慣・壱共.
            }
        }
    }

    if (errorString == "")
      return "valid";
    else
      return errorString;
}

// Validate Domain name
function checkDomain(nname)
{

	// verify whether the given domain is an ip based domain(?) or not
	if (verifyIP(nname) == "valid") {
		return "";
	} else if (verifyIP(nname) != "") {
    return verifyIP(nname);
  }

var arr = new Array(
'.com','.net','.org','.biz','.coop','.info','.museum','.name',
'.pro','.edu','.gov','.int','.mil','.ac','.ad','.ae','.af','.ag',
'.ai','.al','.am','.an','.ao','.aq','.ar','.as','.at','.au','.aw',
'.az','.ba','.bb','.bd','.be','.bf','.bg','.bh','.bi','.bj','.bm',
'.bn','.bo','.br','.bs','.bt','.bv','.bw','.by','.bz','.ca','.cc',
'.cd','.cf','.cg','.ch','.ci','.ck','.cl','.cm','.cn','.co','.cr',
'.cu','.cv','.cx','.cy','.cz','.de','.dj','.dk','.dm','.do','.dz',
'.ec','.ee','.eg','.eh','.er','.es','.et','.fi','.fj','.fk','.fm',
'.fo','.fr','.ga','.gd','.ge','.gf','.gg','.gh','.gi','.gl','.gm',
'.gn','.gp','.gq','.gr','.gs','.gt','.gu','.gv','.gy','.hk','.hm',
'.hn','.hr','.ht','.hu','.id','.ie','.il','.im','.in','.io','.iq',
'.ir','.is','.it','.je','.jm','.jo','.jp','.ke','.kg','.kh','.ki',
'.km','.kn','.kp','.kr','.kw','.ky','.kz','.la','.lb','.lc','.li',
'.lk','.lr','.ls','.lt','.lu','.lv','.ly','.ma','.mc','.md','.mg',
'.mh','.mk','.ml','.mm','.mn','.mo','.mp','.mq','.mr','.ms','.mt',
'.mu','.mv','.mw','.mx','.my','.mz','.na','.nc','.ne','.nf','.ng',
'.ni','.nl','.no','.np','.nr','.nu','.nz','.om','.pa','.pe','.pf',
'.pg','.ph','.pk','.pl','.pm','.pn','.pr','.ps','.pt','.pw','.py',
'.qa','.re','.ro','.rw','.ru','.sa','.sb','.sc','.sd','.se','.sg',
'.sh','.si','.sj','.sk','.sl','.sm','.sn','.so','.sr','.st','.sv',
'.sy','.sz','.tc','.td','.tf','.tg','.th','.tj','.tk','.tm','.tn',
'.to','.tp','.tr','.tt','.tv','.tw','.tz','.ua','.ug','.uk','.um',
'.us','.uy','.uz','.va','.vc','.ve','.vg','.vi','.vn','.vu','.ws',
'.wf','.ye','.yt','.yu','.za','.zm','.zw');

var mai = nname;
var val = true;

var dot = mai.lastIndexOf(".");
var dname = mai.substring(0,dot);
var ext = mai.substring(dot,mai.length);
//alert(ext);

if( nname.replace(/ /g,"") == "" ) { return "- ドメインを入力してください。"; }

if(dot>2 && dot<57)
{
	for(var i=0; i<arr.length; i++)
	{
	  if(ext == arr[i])
	  {
	 	val = true;
		break;
	  }
	  else
	  {
	 	val = false;
	  }
	}
	if(val == false)
	{
	  	 // alert("Your domain extension "+ext+" is not correct");
		 return "ドメイン拡張名は、" + ext + " にすることができません"; // ドメイン拡張名は、．．．にすることができません
	}
	else
	{
		for(var j=0; j<dname.length; j++)
		{
		  var dh = dname.charAt(j);
		  var hh = dh.charCodeAt(0);
		  if((hh > 47 && hh<59) || (hh > 64 && hh<91) || (hh > 96 && hh<123) || hh==45 || hh==46)
		  {
			 if((j==0 || j==dname.length-1) && hh == 45)
		  	 {
		 	  	 // alert("Domain name should not begin are end with '-'");
			      return "ドメイン名の前後に“－（ハイフン）”を付けることはできません。"; // ドメイン名の前後に“－（ハイフン）”を付けることはできません。
		 	 }
		  }
		else	{
		  	 // alert("Your domain name should not have special characters");
			 return "ドメイン名に利用できない特殊文字があります。"; // ドメイン名に利用できない特殊文字があります。
		  }
		}
	}
}
else
{
 // alert("Your Domain name is too short/long");
 return "ドメイン名の長さが長すぎるか短すぎます。"; // ・・ｩ肥攤 ・ｴ・・擽 ・ｸ・ｰ・頀 ・・慣・壱共.
}

return "";
}

function check_add_domains(domains) {
    var arr_domain = domains.split(/;/);

	for (i = 0; i < arr_domain.length; i++) {
	    if (checkDomain(arr_domain[i]) != "" && arr_domain[i] != "") {
	        return checkDomain(arr_domain[i]);
	    }
	}
	return "";
}

function check_add_domains2(domains) {
    var arr_domain = domains.split(/,/);

	for (i = 0; i < arr_domain.length; i++) {
	    if (checkDomain(arr_domain[i]) != "" && arr_domain[i] != "") {
	        return checkDomain(arr_domain[i]);
	    }
	}
	return "";
}


// validate Date
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   }
   return this
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strYear=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strDay=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		// alert("The date format should be : mm/dd/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		// alert("Please enter a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		// alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		// alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		// alert("Please enter a valid date")
		return false
	}
	return true
}

// expire value format is integer date
function setCookie(name,value,expire) {
        var today=new Date();
        today.setDate(today.getDate()+parseInt(expire));
        document.cookie=name+"="+escape(value)+"; path=/; expires="+today.toGMTString()+";";
}

function getCookie(name) {
        var cookieName=name+"=";
        var x=0;
        while(x<=document.cookie.length) {
                var y=(x+cookieName.length);
                if(document.cookie.substring(x,y)==cookieName) {
                        if((endOfCookie=document.cookie.indexOf(";",y))==-1) endOfCookie=document.cookie.length;
                        return unescape(document.cookie.substring(y,endOfCookie));
                }
                x=document.cookie.indexOf(" ",x)+1;
                if(x == 0) break;
        }
        return "";
}


/* Other Layer Object.. */
// DHTML

// for select tag in MSIE
// selectList0 ~ selectList19
function hideSelectList() {
    var obj;
    for( var i=0; i<20; i++ ) {
        obj = document.getElementById( "selectList"+i );
        if( obj ) obj.style.visibility = "hidden";
    }
}

function showSelectList() {
    var obj;
    for( var i=0; i<20; i++ ) {
        obj = document.getElementById( "selectList"+i );
        if( obj ) obj.style.visibility = "visible";
    }
}

function hideTagObj( tagname ) {
    var obj = document.getElementsByTagName(tagname);  // not Elemnt
    if( obj ) {
        for( var i=0; i<obj.length; i++ ) {
            obj[i].style.visibility = "hidden";
        }
    }
}

function showTagObj( tagname ) {
    var obj = document.getElementsByTagName(tagname);  // not Elemnt
    if( obj ) {
        for( var i=0; i<obj.length; i++ ) {
            obj[i].style.visibility = "visible";
        }
    }
}

function showIdObj( idname ) {
	var layerObject = document.getElementById(idname);
	layerObject.style.visibility = "visible";
}

function hideIdObj( idname ) {
	var layerObject = document.getElementById(idname);
	layerObject.style.visibility = "hidden";
}

function toggleHide( objIdName ) {
    var obj = document.getElementById( objIdName );

    if( obj.style.visibility == "hidden" ) {
       showIdObj( objIdName );
    } else {
       hideIdObj( objIdName );
    }
}

function displayOn( idname ) {
	var layerObject = document.getElementById(idname);
	layerObject.style.display = "";
}

function displayOff( idname ) {
	var layerObject = document.getElementById(idname);
	layerObject.style.display = "none";
}

function toggleDisplay( objIdName ) {
    var obj = document.getElementById( objIdName );

    if( obj.style.display == "none" ) {
       displayOn( objIdName );
    } else {
       displayOff( objIdName );
    }
}

function setLayerObjCenter( idname ) {
    var msgLayer = document.getElementById( idname );
    var winWidth = 0, winHeight = 0;
    if( typeof( window.innerWidth ) == 'number' ) {
        //Non-IE
        winWidth = window.innerWidth;
        winHeight = window.innerHeight;
    } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
        //IE winWidth+ in 'standards compliant mode'
        winWidth = document.documentElement.clientWidth;
        winHeight = document.documentElement.clientHeight;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
        //IE 4 compatible
        winWidth = document.body.clientWidth;
        winHeight = document.body.clientHeight;
    }
    //alert( winWidth + ":" + winHeight + ":" + msgLayer.className );
    msgLayer.style.left = ( winWidth/2 - msgLayer.offsetWidth/2 )+ "px";
    msgLayer.style.top = ( winHeight/2 - msgLayer.offsetHeight/2 + (nn4 ? window.pageYOffset : document.body.scrollTop) ) + "px";
}

function blindOff( objIdName ) { blindUp (objIdName); }
function blindOn( objIdName ) { blindDown (objIdName); }
function blindUp( objIdName ) {
    var obj = document.getElementById( objIdName );
    new Effect.BlindUp(objIdName, {duration: 0.4});
}
function blindDown( objIdName ) {
    var obj = document.getElementById( objIdName );
    new Effect.BlindDown(objIdName, {duration: 0.4});
}

function toggleBlind( objIdName ) {
    var obj = document.getElementById( objIdName );

    if( obj.style.display == "none" ) {
       blindDown( objIdName );
    } else {
       blindUp( objIdName );
    }
}
function setObjCSS( objIdName, cssName ) {
    var obj = document.getElementById( objIdName );
    obj.className = cssName;
}
function setFocus( objIdName ) {
    document.getElementById( objIdName ).focus();
}
function setBlur( objIdName ) {
    document.getElementById( objIdName ).blur();
}

// table control
function getNewTr(tableID, idxTR ) {
    var objTBL = document.getElementById(tableID);
    var arTR = objTBL.getElementsByTagName("tr");
    var numTR = arTR.length;

    if( idxTR < numTR ) {
        var newTR   = objTBL.insertRow(idxTR);
    }
    return newTR;
}

function getNewTd( trObj, idxTD, iColSpan ) {
    var newTD = trObj.insertCell(idxTD);
    if( iColSpan > 1 ) {
        newTD.colSpan = iColSpan;
        //newTD.setAttribute( "colspan", colspan );
    }
    return newTD;
}

function getTrIdx( tableID, objID ) {
	var obj = document.getElementById(objID);
    if( obj.tagName != "TR" ) obj = getParentObjByTag( obj, "TR" );
    var objTBL = document.getElementById(tableID);
    var arTR = objTBL.getElementsByTagName("TR");
    var numTR = arTR.length;
	var cnt = 0;
    for( var i=0; i < numTR; i++ ) {
		// if there is a table in main table, it counts all of tr tags in a big table and small table.
		// fixed 2006.5.10
        if( getParentObjByTag(arTR[i],"TABLE")==objTBL ) {
			if( arTR[i]==obj ) return cnt;
			cnt++;
        }
    }
	return 0;
}

function getParentObjByTag( obj, sTagName ) {
    while( obj.tagName != sTagName ) {
        obj = obj.parentNode;
    }
    return obj;
}

function insertTableRowA( tableID,inRowObjID, colSpan, sHtml) {
    inRowObjID = inRowObjID.replace(/ddlink/,'ddimg');
    var rowIdx = getTrIdx(tableID,inRowObjID) + 1; //plus 1, to add a row after the target row
    var newTableRow = getNewTr( tableID, rowIdx );
    var newTd = getNewTd( newTableRow, 0, colSpan  );

	var newText  = document.createTextNode( sHtml )
    newTd.appendChild(newText);

    //newTd.innerHTML = sHtml;
}

function insertTableRowB( tableID, inRowObjID, colSpan, sHtml) {
    inRowObjID = inRowObjID.replace(/ddlink/,'ddimg');
    var rowIdx = getTrIdx(tableID,inRowObjID) + 1; //plus 1, to add a row after the target row
    var newTableRow = getNewTr( tableID, rowIdx );
	newTableRow.style.display="none";
	newTableRow.id="ddrow_"+inRowObjID;
	var newTd, newText;
    newTd = getNewTd( newTableRow, 0, 1 );
	newTd.innerHTML = "<span id='ddmark_"+inRowObjID+"'>&nbsp;</span>";

    newTd = getNewTd( newTableRow, 1, colSpan-1 );
	newTd.innerHTML = sHtml;
	toggleBlind("ddrow_"+inRowObjID);
}

/* start of balloon tip text */
//if(window.addEventListener) window.addEventListener("mousemove",mouseMove,false);
//else if (window.attachEvent) window.attachEvent("onmousemove",mouseMove);
var gLeft = 0;
var gTop = 0;
document.onmousemove = mouseMove;
document.writeln('<div id=\"balloon\" class=\"layerBalloon\"></div>');

function shBalloon( balloonString ){
	var str = '<div style="background-color:#FFFFE0; width: 200px; border: 1px solid; border-color: #000000; padding: 2px 2px 0px 2px;"><table width=100% cellpadding=0 cellspacing=0><tr><td valign=top nowrap bgcolor=#FFFFE0><img src=/images/icon/sinfo_24tip.gif vspace=3 hspace=3>&nbsp;</td><td class=\'layerBalloonIn\'>' ;

	str = str + balloonString + '</span></td></tr></table></div>';
	showBalloonText( 'balloon',str);
}

// tooltip for graph
function shTooltip( balloonString, width, txtcolor, bgcolor ){
    // width can be ommitable
    if( txtcolor == "" ) txtcolor= "#000000";
    if( bgcolor == "" ) bgcolor= "#FFFFE0";

	var str = '<div style="background-color:'+bgcolor+'; border: 1px solid; border-color: #000000; padding: 2px 2px 0px 2px;"><span class=\'layerBalloonIn\'>&nbsp;' ;
	str = str + balloonString + '&nbsp;</span></div>';
	showBalloonText( 'balloon',str);
}

function balloonInnerText( SlayerName, Sstring ){
	var layerObject = document.getElementById(SlayerName);
	layerObject.innerHTML = Sstring;
}

function showBalloonText( SlayerName, Sstring, posX, posY ) {
	var left;
  	var top;
  	var	contentsString;

	switch ( arguments.length ) {
		case 0	:
			return;
		case 1	:
		/*
			contentsString = '';
			left = event.clientX + 20;
			top = event.clientY + document.body.scrollTop;
		*/
			break;
		case 2	:
			// WE USE THIS
			contentsString = Sstring;
			if( window.event ) {
				left = event.clientX +document.body.scrollLeft;
				top = event.clientY + document.body.scrollTop;
			} else {
				left = gLeft;
				top = gTop;
			}
			break;
		case 3	:
		/*
			contentsSTring = Sstring;
			left = posX;
			top = event.clientY + document.body.scrollTop;
		*/
			break;
		case 4	:
		/*
			contentsSTring = Sstring;
			left = posX;
			top = posY;
		*/
			break;
	}
	positionXY(left, top, SlayerName );

	if ( contentsString )
		balloonInnerText( SlayerName, contentsString );

	showBalloon( SlayerName );
}

function showBalloon( SlayerName ) {
    showIdObj( SlayerName );
}

function hideBalloon( ) {
    hideIdObj( 'balloon' );
}


function positionXY(left, top, SlayerName ) {
	var layerObject = document.getElementById(SlayerName);

	// balloon size
	var balWidth = true?layerObject.clientWidth:layerObject.innerWidth ;
	var balHeight = true?layerObject.clientHeight:layerObject.innerHeight ;

	// when mac safari
	if( navigator.userAgent.toLowerCase().indexOf( "safari" ) > 0 ) {
		top = top - document.body.scrollTop;
		left = left - document.body.scrollLeft;
	}

	// direction
	// top,left ・鐀 scorllTop/Left・ ・ｴ・ｸ ・・圸・們来・ｼ・・鰀, 嶹罷ｩｴ・・攪 ・廷愍・鰀 ・誤ꀀ､・鰀 甯尖卿﨑罹共.
	if( (left-document.body.scrollLeft) > (ie?document.body.clientWidth:window.innerWidth) - 130 - (balWidth+20) ) {
		left = left - balWidth - 10 ;
	} else {
		left = left + 10 ;
	}
	if( (top-document.body.scrollTop) > (ie?document.body.clientHeight:window.innerHeight) - (balHeight+20) ) {
		top = top - balHeight - 10 ;
	} else {
		top = top + 10;
	}

	// set position
	layerObject.style.left = left;
	layerObject.style.top = top;
}
function mouseMove(e) {
	var left;
	var top;
	if( !e ) e = window.event;
	left = e.clientX + document.body.scrollLeft;
	top = e.clientY + document.body.scrollTop;
	// copy to global variables for showBalloonText() - not IE
	gLeft = left;
	gTop = top;

	// fixed 2006.4
	if( document.getElementById('balloon').style.visibility == 'visible' )
	   positionXY(left, top, 'balloon' ) ;
}
/* end of balloon text */


/*  Ajax  */
// ajax transaction status
var ajaxOnFlag = false;
var ajaxImgIcon = "";

// core
function getResponse( oj ) {
    var response = decodeURIComponent(oj.responseText);
    //alert(response); //debug
    var ajaxMessage = "";
    var ajaxScript = "";
	// alert( response );  // to debug
	ajaxOnFlag = false;    // ajax transaction status, it was set to true when ajax transaction-
	// [0] = CODE, [1]=MSG, [2]=SCRIPT
	var arrString = response.split( "|" );

	// error - String and Array Object have same length property
	if( arrString.length != 3 && arrString.length != 2 ) { alert( "Response Fomat Error \n\n"+ response );	return;	}
	// set values
	if( arrString.length >= 2 ) {
		ajaxMessage = arrString[1].replace(/\+/g," ");
		ajaxMessage = ajaxMessage.replace(/#VB#/g,"|");
	}
	if( arrString.length >= 3 ) ajaxScript = arrString[2].replace(/\+/g," ");
    var sSuccess = arrString[0].substr(0,1);
    var sRefresh = arrString[0].substr(1,1);
    var sAlert = arrString[0].substr(2,1);
	if( sSuccess == "Y" ) {
		ajaxImgIcon = "<img src=/images/icon/opts_24_orange.gif align=absmiddle>";
	} else if( sSuccess == "N" ) {
		ajaxImgIcon = "<img src=/images/icon/cancl_24_orange.gif align=absmiddle>";
	}

    // another error
	if( sAlert == "Y" ) {
		if( ajaxMessage != "" ) alert( ajaxMessage );
		else alert( "ERR CODE - "+response );
	}
	if( sRefresh == "Y" ) document.location.reload();
	if( ajaxScript != "" ) {
		eval( ajaxScript );
	}

	return ajaxMessage;
}

function showResultMsg( textStr, objIdName, showTime ) {
	if( objIdName == "" ) {
		objIdName = "resultMsg";
	}
	document.getElementById( objIdName+"Value" ).innerHTML = textStr;
	document.getElementById( objIdName ).style.display = "";
	setLayerObjCenter( objIdName );
	showIdObj(objIdName);
	//blindDown( objIdName );
	setTimeout( "hideIdObj('"+objIdName+"');", showTime );

}

// for Simple Editing, param is objIdName
function ajaxResponse(oj, param) {
    var objIdName = param;
    var ajaxMessage = getResponse(oj);
	if( ajaxMessage != "" ) {
		if( objIdName != "" ) {
			showResultMsg(ajaxImgIcon + " " + ajaxMessage, "", 1200)
		}
	}
}

// for Get Contents
function ajaxResponseDrillDown(oj, param) {
    var arParam = param.split("|");
    var tableID = arParam[0];
    var inRowObjID = arParam[1];
    var colSpan = arParam[2];
    inRowObjID = inRowObjID.replace(/ddlink/,'ddimg');

    // message is shown at submit - layerID= resultMsg & resultMsgValue
    var ajaxMessage = getResponse(oj);
	if( ajaxMessage != "" ) {
	    hideIdObj('resultMsg');
        // insert new row
        insertTableRowB( tableID, inRowObjID, colSpan, ajaxMessage);
        document.getElementById(inRowObjID).src="/images/btn/btn_minus_close.gif";
	}
}


function chkAjaBrowser() {
    var a, ua = navigator.userAgent;
    this.bw = {
        safari      : ((a=ua.split('AppleWebKit/')[1])?a.split('(')[0]:0)>=124,
        konqueror   : ((a=ua.split('Konqueror/')[1])?a.split('(')[0]:0)>=3.3,
        mozes       : ((a=ua.split('Gecko/')[1])?a.split('(')[0]:0)>=20011128,
        opera       : (!!window.opera) && ((typeof XMLHttpRequest)=='function'),
        msie        : (!!window.ActiveXObject)?(!!createHttpRequest()):false
    }
    return (this.bw.safari || this.bw.konqueror || this.bw.mozes || this.bw.opera || this.bw.msie);
}

function createHttpRequest() {
    if(window.ActiveXObject) {
        try {
            return new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
            	return new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e2) {
                return null;
            }
        }
    } else if(window.XMLHttpRequest) {
        return new XMLHttpRequest();
    } else {
        return null;
    }
}

// common parameter - param,
function sendRequest(callback, url, param) {
    var oj = createHttpRequest();
    var method = 'GET';
    if(oj == null) return null;
    //alert(url+param);
    var bwoj = new chkAjaBrowser();
    var opera = bwoj.bw.opera;
    var safari = bwoj.bw.safari;
    var konqueror = bwoj.bw.konqueror;
    var mozes = bwoj.bw.mozes;

    if( opera || safari || mozes ) {
        oj.onload = function() { callback(oj, param); }
    } else {
        oj.onreadystatechange = function() {
            if(oj.readyState == 4) {
                callback(oj, param);
            }
        }
    }

    //if(method.toUpperCase() == 'GET') {
    //    url += "?id=" + id + "&value=" + value;
    //}

    oj.open(method, url, true);
    setEncHeader(oj);
    oj.send("");

    function setEncHeader(oj) {
        var contentTypeUrlenc = 'application/x-www-form-urlencoded; charset=UTF-8';
        if(!window.opera) {
            oj.setRequestHeader('Content-Type', contentTypeUrlenc);
        } else {
            if((typeof oj.setRequestHeader) == 'function')
                oj.setRequestHeader('Content-Type', contentTypeUrlenc);
        } return oj
    }

    return oj;
}


/* DHTML Javascript writing */
// JavaScript Inline DHTML Contents
function writeAjaxResultMsg( divId, msgTxtId ) {
    document.write( "<DIV id='"+divId+"' style='width: 100px; position: absolute; visibility: hidden;'>" );
    document.write( "<table cellpadding=0 cellspacing=0><tr><td><img src=/images/msg_rnd_orange_01.gif></td><td align=center valign=middle nowrap bgcolor=#FFDD66><span class='stitle' id='"+msgTxtId+"'></span> </td><td><img src=/images/msg_rnd_orange_02.gif></td></tr></table>");
    document.write( "</DIV>" );
}

// write a default result div container
writeAjaxResultMsg( "resultMsg", "resultMsgValue" );

// flash tag to javascript
function draw_flash(para, width, height){
	var param = encodeURI(para);
	document.write("<OBJECT classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0\" WIDTH=" + width + " HEIGHT=" + height + "><PARAM NAME=movie VALUE=" + param + "> <PARAM NAME=loop VALUE=false> <PARAM NAME=menu VALUE=false> <PARAM NAME=quality VALUE=best> <PARAM NAME=bgcolor VALUE=#FFFFFF> <PARAM NAME=wmode VALUE=Transparent><EMBED src="+param+" loop=false menu=false quality=best bgcolor=#FFFFFF wmode=Transparent  WIDTH=" + width + " HEIGHT=" + height + " TYPE=\"application/x-shockwave-flash\" PLUGINSPAGE=\"https://www.macromedia.com/go/getflashplayer\"></EMBED></OBJECT>");
}


// multi language setup input box
function ajaxSubmitFML( wCode , wordLC , whWord ) {
    if( !ajaxOnFlag ) {
        wordValue = document.getElementById( whWord ).value;
        // if( wordValue.replace(/ /g,"")=="" ) { alert( "ERROR: there is no text..." ); return }
        sendRequest(ajaxResponse, '/inc/langCodePsAjax.tsp?wCode='+wCode+'&wordMLStr='+wordLC+'&wVal='+encodeURIComponent(wordValue), 'resultMsg');
        ajaxOnFlag = true;
    }
    setObjCSS(whWord,'ajaxEditOffFML');
}

function ajaxSetEditOnFML( whWord ) {
    setObjCSS(whWord,"ajaxEditOnFML");
    //hideBalloon();
	//document.getElementById( whWord ).focus();
}

function ajaxSetEditOffFML( whWord ) {
    setObjCSS(whWord,"ajaxEditOffFML");
}
/********************************************************************************************************************************************/
/* 출처  : http://www.beneglo.com/entry/Auto-Resizing-Textarea                                                                              */
/* 작성  : pyh                                                                                                                              */
/* 날짜  : 09.02.26                                                                                                                         */
/* 용도  : textarea 높이조절                                                                                                                */
/* 호환  : IE, FF 모두 정상 작동                                                                                                            */
/* 예제1 : addEvent(window,'load',function(){resizeTextarea('test');});                                                                     */
/* 예제2 : <textarea cols="50" rows="2" id="test" style="overflow:hidden;" onkeydown="javascript:resizeTextarea('test');">테스트</textarea> */
/********************************************************************************************************************************************/
function countLines(strtocount, cols)
{
	var hard_lines = 1;
	var last = 0;
	while (true) {
	    last = strtocount.indexOf("\n", last+1);
	    hard_lines ++;
	    if ( last == -1 ) break;
	}
	var soft_lines = Math.round(strtocount.length / (cols-1));
	var hard = eval("hard_lines  " + unescape("%3e") + "soft_lines;");
	if (hard) soft_lines = hard_lines;
	return soft_lines;
}

function resizeTextarea(id)
{
	var obj = getElementById(id);
	obj.rows = countLines(obj.value,obj.cols) +1;
	setTimeout("resizeTextarea('"+id+"');", 0);
}

function addEvent(e, evt, func, cap)
{
	if(!(e = getElementById(e))) return;
	evt = evt.toLowerCase();
	var eh = 'e.on'+evt+'=func';
	if(e.addEventListener) e.addEventListener(evt,func,cap);
	else if(e.attachEvent) e.attachEvent('on'+evt,func);
	else eval(eh);
}

function getElementById(s)
{
	if(typeof(s) != 'string') return s;
	if(document.getElementById) s = document.getElementById(s);
	else if(document.all) s = document.all(s);
	else s = null;
	return s;
}

