
/*
 * subscript (shikoku-tradition)
 *
 * Copyright (c) 2007 TOMOKITI 
 */

/*　改行コード指定。*/ 
CR = String.fromCharCode(13);

/* マップ用テンプレ変数 */
map_head = "divm 地図情報 ][sidemapc][script]\n[sidemapb ";
map_feed = " ]\n[/script]\n[/div";


/* テキストエリア操作 
getAreaRange(obj)…テキストエリアの選択部を抽出
obj=オブジェクト指定 */
function getAreaRange(obj) {
var pos = new Object();
    
if (isIE) {
    obj.focus();
    var r = document.selection.createRange();
	var len = r.text.length;

	var br = document.body.createTextRange();
	br.moveToElementText(obj);
    var all_len = br.text.length;

	br.setEndPoint( "StartToStart", r );
	
	pos.start = all_len - br.text.length;
	pos.end = pos.start + len;
	
    }
else if(window.getSelection()) {
    pos.start = obj.selectionStart;
    pos.end = obj.selectionEnd;
    }
    
return pos;
//	alert(pos.start + "," + pos.end);
}

var isIE = (navigator.appName.toLowerCase().indexOf('internet explorer')+1?1:0);

/*
surroundHTML
htag=先挿入値 ftag=後挿入値 obj=オブジェクト */
function surroundHTML(htag, ftag, obj) {
var target = document.getElementById(obj);
var pos = getAreaRange(target);

var val = target.value;
var range = val.slice(pos.start, pos.end);
var beforeNode = val.slice(0, pos.start);
var afterNode = val.slice(pos.end);
var insertNode;

if (range || pos.start != pos.end) {
    insertNode =  htag  + range  + ftag;
    target.value = beforeNode + insertNode + afterNode;
    }
else if (pos.start == pos.end) {
    insertNode = htag  + ftag ;
    target.value = beforeNode + insertNode + afterNode;
    }
}

/*
surroundHTMLd
htag=先挿入値 ftag=後挿入値 obj=オブジェクト */
function surroundHTMLd(htag, ftag, obj) {
var target = document.getElementById(obj);
var pos = getAreaRange(target);

var val = target.value;
var range = val.slice(pos.start, pos.end);
var beforeNode = val.slice(0, pos.start);
var afterNode = val.slice(pos.end);
var insertNode;

range = DeleteLineFeed(range);

if (range || pos.start != pos.end) {
    insertNode =  htag  + range  + ftag;
    target.value = beforeNode + insertNode + afterNode;
    }
else if (pos.start == pos.end) {
    insertNode = htag  + ftag ;
    target.value = beforeNode + insertNode + afterNode;
    }
}


/*
changeHTML
ctext=変換文字 obj=オブジェクト */
function chengeHTML(ctext, obj) {
var target = document.getElementById(obj);
var pos = getAreaRange(target);

var val = target.value;
var range = val.slice(pos.start, pos.end);
var beforeNode = val.slice(0, pos.start);
var afterNode = val.slice(pos.end);
var insertNode;

if (range || pos.start != pos.end) {
    insertNode =  ctext ;
    target.value = beforeNode + insertNode + afterNode;
    }
else if (pos.start == pos.end) {
    insertNode = ctext ;
    target.value = beforeNode + insertNode + afterNode;
    }
}

/*
tag･･･指定されたタグを挿入[基本 追加1 挿入 追加2 ]。
out=出力先 cmnd=基本タグ ent1=追加入力1 ent2=追加入力2
*/
function tag(out, cmnd, ent1, ent2) {
     /* 追加入力1が無いなら基本タグのみ記述*/
     var sv = ent1 ? '[' + cmnd + ' ' + ent1 + ' '  : '[' + cmnd + ' ';
     /* 追加入力2が無いなら空白を挿入。 */
     var sc = ent2 ? ' ' + ent2 + ' ]': ' ]';
     surroundHTML(sv, sc, out);
}

/*
tag2･･･指定されたタグを挿入[基本 追加1 挿入 追加2]。
out=出力先 cmnd=基本タグ ent1=追加入力1 ent2=追加入力2
*/
function tag2(out, cmnd, ent1, ent2) {
     /* 追加入力1が無いなら基本タグのみ記述*/
     var sv = ent1 ? '[' + cmnd + ' ' + ent1 + ' ' : '[' + cmnd + ' ' ;
     /* 追加入力2が無いなら空白を挿入。 */
     var sc = ent2 ? ' ' + ent2  + ']': ']';
     surroundHTML(sv, sc, out);
}

/*
tag3･･･指定されたタグを挿入[基本]。
out=出力先 cmnd=基本タグ
*/
function tag3(out, cmnd) {
     var sv = '[' + cmnd;
     var sc = ']';
     surroundHTML(sv, sc, out);
}

/*
datatag･･･指定されたタグを挿入[基本 追加1 挿入 追加2 ]。
out=出力先 cmnd=基本タグ ent1=追加入力1 ent2=追加入力2
*/
function datatag(out, cmnd, ent1, ent2) {
     /* 追加入力1が無いなら基本タグのみ記述*/
     var sv = ent1 ? '[' + cmnd + ' ' + ent1 + ' '  : '[' + cmnd + ' ';
     /* 追加入力2が無いなら空白を挿入。 */
     var sc = ent2 ? ' ' + ent2 + ' ]': ' ]';
     surroundHTMLd(sv, sc, out);
}


/*
Linktag･･･リンク先の指定 cmnd=link
out=出力先 ck1=分岐1 
*/
function Linktag(out,ck1) {
    /* 基本タグ指定 */
    var cmnd = "link";
    var tar = "";
    var link = prompt("URLを入力してください: ", '');    
    /* 分岐 */
    if(ck1 == 1){
      tar = "b";
    }
    tag2(out, cmnd, link, tar);
}

/*
Imagetag･･･画像の指定 cmnd=img
out=出力先 ck1=分岐1 
*/
function Imagetag(out,ck1) {
    /* 基本タグ指定 */
    var cmnd = "img";
    var tar = "";
/*    var imgno = $('#sp').contents().find('radio[@name=imageno]:checked').val(); */
    var imgno = $('#imgevent iframe').contents().find('input[name=imageno]:checked').val();
    /*var imgno = prompt("画像名（名前のみ）を入力して下さい: ", '');*/
    /* 分岐 */
    if(ck1 == 1) {var tar = "r"; }
    else if(ck1 == 2) {var tar = "r2"; }
    else if(ck1 == 3) {var tar = "r3"; }
    if(tar == ""){
      tag(out, cmnd, imgno, tar);
    }else{
      tag2(out, cmnd, imgno, tar);
    }
}

/*
Sidetag･･･サイドの指定 cmnd=img
out=出力先 ck1=分岐1 
*/
function Sidetag(out,ck1) {
    /* 基本タグ指定 */
    var tar = "\[\/div";    
    /* 分岐 */
    if(ck1 == 1) {
    var cmnd = "divm";
    var title = prompt("タイトルを入力して下さい: ", '');
    var ent = title + " ]";
    }
    else if(ck1 == 2) {
    var cmnd = "divct";
    var ent = "]";
    }
    else if(ck1 == 3) {
    var cmnd = "divct";
    var ent = "c]";
    }
    else if(ck1 == 4) {
    var cmnd = "divct";
    var h = prompt("高さを入力して下さい: ", '');
    var ent = h + " ]";
    }
    tag2(out, cmnd, ent, tar);
}

/*
Acrtag･･･説明文の挿入 cmnd=acr
out=出力先
*/
function Acrtag(out) {
    /* 基本タグ指定 */
    var cmnd = "acr";
    var acr = prompt("説明文を入力して下さい: ", '');
    acr = allReplace(acr," ","");
    tag(out, cmnd, "", acr);
}

/*
Newbltag･･･新着情報データの出力
out=出力先
*/
function Newbltag(out){
    var nfile = document.make.file.value;
    var ntitle = document.make.title.value;
    var nrubi = document.make.trubi.value;
    if(nrubi != ""){ ntitle = ntitle + '(' + nrubi + ')';}
    var ncate = document.make.cates.options[document.make.cates.selectedIndex].value;
    var nimg = prompt("表示画像noを入力して下さい。 ", '');
    var ndate = prompt("取材年月（例:２００８・１２）を入力して下さい。 ", '');
    var npoint = prompt("取材県（例：愛媛）を入力して下さい。", '');
    var ntext1 = ncate + ' ' + ntitle + ' ' + nfile + ' ' + nimg;
    var ntext2 = ' ' + ndate + ' ' + npoint ;
    datatag(out, "newblock", ntext1, ntext2);
}  

/*
Mapbstag…マップデータの出力
out=出力先
*/
function Mapbstag(out){
    var map_main = $("#clat").val() + ' ' + $("#clng").val() + ' ' + $("#mapzm").val();
    var map_cmd = map_head + map_main + map_feed ;
    tag3(out, map_cmd);
}
  
/*
Mapmctag…マップデータの出力
out=出力先
*/
function Mapmctag(out){
    var mc_name = prompt("地名（建造物名や開催名等）を入力して下さい", '');
    var mc_cmd = 'sidemapmc ' + mc_name + ' ' + $("#mlat").val() + ' ' + $("#mlng").val() + ' 1 ';
    tag3(out, mc_cmd);
}  

   
/*
write_exp･･･説明文出力フォーム。
obj=出力先
text1=単語
text2=意味
*/
function write_exp(obj,text1,text2){ 
    if(text2){
    /*text2 = "<span class='exp_2'>(" + text2 + ")</span>";*/
    text2 = "･･･" + text2 ;
    obj.innerHTML = text1 + text2; 
    }
    else{
    obj.innerHTML = text1;
    }
}

/* お気に入り追加　*/
function addBookmark(title,url) { 
    if (window.sidebar) { 
        window.sidebar.addPanel(title, url,""); 
    } else if( document.all ) { 
        window.external.AddFavorite( url, title); 
    } else if( window.opera && window.print ) { 
        return true; 
    } 
} 

/* 置き換え処理 */
function allReplace(text, sText, rText) {
                   /* 全置換する関数。（textの、sTextをrTextに置換）*/
    while (true) { /* 無限ループ。*/
     dummy = text;
     text = dummy.replace(sText, rText); // 置換。
     if (text == dummy) {
      break;       /* 置換しても変化しなければループを抜ける。*/
     }
    }
    return text;   /* 置換後の文字列を返して終了。*/
}

/* タイトル挿入 */
function intitle(out){
    var ntitle = document.make.title.value;
    var nrubi = document.make.trubi.value;
    if(nrubi != ""){ ntitle = ntitle + '(' + nrubi + ')';}
    chengeHTML(ntitle, out);
}

/****************************************************************
* 機　能： 改行コードの削除
* 引　数： 文言
* 戻り値： 改行コードなしの文言
****************************************************************/
function DeleteLineFeed(myLen) {
    var newLen = '';
    myLen = allReplace(myLen," ","　");
    myLen = allReplace(myLen,"\n　","[n]");
    myLen = allReplace(myLen,"\r　","[n]");
    
   for(var i=0; i<myLen.length; i++){
        text = escape(myLen.substring(i, i+1));
        if(text != "%0D" && text != "%0A"){
            newLen += myLen.substring(i, i+1);
        }
    }
    return(newLen);
}

/****************************************************************
* 機　能： 改行コードの削除
* 引　数： 文言
* 戻り値： 改行コードなしの文言
****************************************************************/

function setdaylast(obj){
    obj = obj.form;
	var years = parseInt($('#dmy option:selected').val());
	var months = parseInt($('#dmm option:selected').val());
	var lastday = monthday(years,months);
	var itemnum = obj.dmd.length;
	if (lastday - 1 < obj.dmd.selectedIndex) {
		obj.dmd.selectedIndex = lastday - 1;
	}
	obj.dmd.length = lastday;
	for (cnt = itemnum + 1;cnt <= lastday;cnt++) {
		obj.dmd.options[cnt - 1].text = cnt;
	}
}
function monthday(years,months){
	var lastday = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	if (((years % 4 == 0) && (years % 100 != 0)) || (years % 400 == 0)){
		lastday[1] = 29;
	}
	return lastday[months - 1];
}
