//////////////////////////////////////////////////////////////////
//		etc.js
//			ver.1.01:メール日付変換(2010/03/05)
//			ver.1.02:セクションコード取得(2010/05/24)
//			ver.1.03:today()の引数設定(2010/06/19)
//			ver.1.04:today()の引数追加(2010/07/05)
//			ver.1.05:setZero()の補完しないモード(2010/07/11)
//			ver.1.06:日付のセパレータにドット'.'追加(2010/07/20)
//			ver.1.07:年月日の和表示(2010/08/05)
//			ver.1.08:画像拡張子の検査(2010/10/27)
//			ver.1.09:画像サイズ取得(2011/02/08)
//			ver.1.10:画像リサイズ(2011/04/02)
//			ver.1.11:キーコード取得(2011/10/11)
//			ver.1.12:コンバート機能拡張(2011/10/13)
//
//不適文字の置換
function changeAllStr(){
	var i;
	for (i = 0; i < document.userForm.elements.length; i++) {
		if ((document.userForm.elements[i].type == 'text') || (document.userForm.elements[i].type == 'textarea')){
			document.userForm.elements[i].value = changeTag(changeStr(document.userForm.elements[i].value));
		}
	}
}
//3桁カンマ区切り
function addFigure(str) {
　var num = new String(str).replace(/,/g, "");
　while(num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2")));
　return num;
}
//
function changeTag(str){
//	var sStr = new Array('&','<','>','"',' ');
	var sStr = new Array('&','<','>','"','\'');
//	var dStr = new Array('&amp;','&lt;','&gt;','&quot;','&nbsp;');
	var dStr = new Array('&amp;','&lt;','&gt;','&quot;','’');
	var i;
	for (i = 0; i < sStr.length; i++){
		while (str.indexOf(sStr[i]) >= 0){
			str = str.replace(sStr[i], dStr[i]);
		}
	}
	return str;
}
//'－'→'ー'
function changeStr(str){
//	var sStr = new Array('－','～','\\','|','"','･','&','\'');
//	var dStr = new Array('ー','〜','￥','｜','”','・','＆','’');
	var sStr = new Array('－','～','\\','|','"','･','\'');
	var dStr = new Array('ー','〜','￥','｜','”','・','’');
	var i;
	for (i = 0; i < sStr.length; i++){
		while (str.indexOf(sStr[i]) >= 0){
			str = str.replace(sStr[i], dStr[i]);
		}
	}
	return str;
}
//記号チェック
function checkStr1(str){
	var checkCh = "'| ";
	var i;
	for (i=0; i<str.length; i++){
		if (checkCh.indexOf(str.charAt(i),0) >= 0){
			return true;
		}
	}
	return false;
}
//大文字→小文字
function toSmall(oldstr){
	var big = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var small = "abcdefghijklmnopqrstuvwxyz";
	var str = "";
	var i, c, n;
	for (i=0; i<oldstr.length; i++){
		c = oldstr.charAt(i);
		n = big.indexOf(c,0);
		if (n >= 0){
			c = small.charAt(n);
		}
		str += c;
	}
	return str;
}
//小文字→大文字
function toBig(oldstr){
	var big = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var small = "abcdefghijklmnopqrstuvwxyz";
	var str = "";
	var i, c, n;
	for (i=0; i<oldstr.length; i++){
		c = oldstr.charAt(i);
		n = small.indexOf(c,0);
		if (n >= 0){
			c = big.charAt(n);
		}
		str += c;
	}
	return str;
}
//半角→全角
function toZen(str){
	var sStr = new Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','@','.','-','_');
	var dStr = new Array('０','１','２','３','４','５','６','７','８','９','ａ','ｂ','ｃ','ｄ','ｅ','ｆ','ｇ','ｈ','ｉ','ｊ','ｋ','ｌ','ｍ','ｎ','ｏ','ｐ','ｑ','ｒ','ｓ','ｔ','ｕ','ｖ','ｗ','ｘ','ｙ','ｚ','Ａ','Ｂ','Ｃ','Ｄ','Ｅ','Ｆ','Ｇ','Ｈ','Ｉ','Ｊ','Ｋ','Ｌ','Ｍ','Ｎ','Ｏ','Ｐ','Ｑ','Ｒ','Ｓ','Ｔ','Ｕ','Ｖ','Ｗ','Ｘ','Ｙ','Ｚ','＠','．','－','＿');
	var i;
	for (i = 0; i < sStr.length; i++){
		while (str.indexOf(sStr[i]) >= 0){
			str = str.replace(sStr[i], dStr[i]);
		}
	}
	return str;
}
//全角→半角
function toHan(str){
	var sStr = new Array('０','１','２','３','４','５','６','７','８','９','ａ','ｂ','ｃ','ｄ','ｅ','ｆ','ｇ','ｈ','ｉ','ｊ','ｋ','ｌ','ｍ','ｎ','ｏ','ｐ','ｑ','ｒ','ｓ','ｔ','ｕ','ｖ','ｗ','ｘ','ｙ','ｚ','Ａ','Ｂ','Ｃ','Ｄ','Ｅ','Ｆ','Ｇ','Ｈ','Ｉ','Ｊ','Ｋ','Ｌ','Ｍ','Ｎ','Ｏ','Ｐ','Ｑ','Ｒ','Ｓ','Ｔ','Ｕ','Ｖ','Ｗ','Ｘ','Ｙ','Ｚ','＠','．','－','＿');
	var dStr = new Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','@','.','-','_');
	var i;
	for (i = 0; i < sStr.length; i++){
		while (str.indexOf(sStr[i]) >= 0){
			str = str.replace(sStr[i], dStr[i]);
		}
	}
	return str;
}
//全角→半角(数字と一部記号のみ)
//mode==0（変換できる文字だけ変換、できない文字はそのまま）
//mode==1（変換できる文字だけ変換、できない文字削除）
//mode==2（変換できない文字がある場合何もしない）
//mode==3（変換できない文字がある場合全削除）
function toHankaku(oldstr, mode){
	var han = "0123456789--+.,()";
	var zen = "０１２３４５６７８９－ー＋．，（）";
	var str = "";
	var i, c, n;
	for (i=0; i<oldstr.length; i++){
		c = oldstr.charAt(i);
		if (han.indexOf(c,0) < 0){
			n = zen.indexOf(c,0);
			if (n >= 0){
				c = han.charAt(n);
			} else if (mode > 0){
				if (mode == 1){
					c = '';
				} else {
					alert('半角にできない文字があります');
					if (mode == 2){
						return oldstr;
					} else {
						return '';
					}
				}
			}
		}
		str += c;
	}
	return str;
}
//mode==0（半角カタカナ、全角ひらがな→全角カタカナ）
//mode==1（半角カタカナ、全角カタカナ→全角ひらがな）
//mode==2（全角ひらがな、全角カタカナ→半角カタカナ）
//mode==3（半角カタカナ→全角カタカナ）
//mode==4（全角カタカナ→半角カタカナ）
function tokana(str, mode){
	var Index = 0, j;
	var i, ch, newstr = '', hList, sList, dList;
	var dum = new Array();
	var hanList = new Array('ｱ','ｲ','ｳ','ｴ','ｵ',
													'ｧ','ｨ','ｩ','ｪ','ｫ',
													'ｶﾞ','ｷﾞ','ｸﾞ','ｹﾞ','ｺﾞ',
													'ｶ','ｷ','ｸ','ｹ','ｺ',
													'ｻﾞ','ｼﾞ','ｽﾞ','ｾﾞ','ｿﾞ',
													'ｻ','ｼ','ｽ','ｾ','ｿ',
													'ﾀﾞ','ﾁﾞ','ﾂﾞ','ﾃﾞ','ﾄﾞ',
													'ﾀ','ﾁ','ﾂ','ﾃ','ﾄ',
													'ｯ',
													'ﾅ','ﾆ','ﾇ','ﾈ','ﾉ',
													'ﾊﾞ','ﾋﾞ','ﾌﾞ','ﾍﾞ','ﾎﾞ',
													'ﾊﾟ','ﾋﾟ','ﾌﾟ','ﾍﾟ','ﾎﾟ',
													'ﾊ','ﾋ','ﾌ','ﾍ','ﾎ',
													'ﾏ','ﾐ','ﾑ','ﾒ','ﾓ',
													'ﾔ','ﾕ','ﾖ',
													'ｬ','ｭ','ｮ',
													'ﾗ','ﾘ','ﾙ','ﾚ','ﾛ',
													'ﾜ','ｦ','ﾝ','､','｡',
													'ｰ','-','_',' ','･');
	var hiraList = new Array('あ','い','う','え','お',
													'ぁ','ぃ','ぅ','ぇ','ぉ',
													'が','ぎ','ぐ','げ','ご',
													'か','き','く','け','こ',
													'ざ','じ','ず','ぜ','ぞ',
													'さ','し','す','せ','そ',
													'だ','ぢ','づ','で','ど',
													'た','ち','つ','て','と',
													'っ',
													'な','に','ぬ','ね','の',
													'ば','び','ぶ','べ','ぼ',
													'ぱ','ぴ','ぷ','ぺ','ぽ',
													'は','ひ','ふ','へ','ほ',
													'ま','み','む','め','も',
													'や','ゆ','よ',
													'ゃ','ゅ','ょ',
													'ら','り','る','れ','ろ',
													'わ','を','ん','、','。',
													'ー','－','＿','　','・');
	var kanaList = new Array('ア','イ','ウ','エ','オ',
													'ァ','ィ','ゥ','ェ','ォ',
													'ガ','ギ','グ','ゲ','ゴ',
													'カ','キ','ク','ケ','コ',
													'ザ','ジ','ズ','ゼ','ゾ',
													'サ','シ','ス','セ','ソ',
													'ダ','ヂ','ヅ','デ','ド',
													'タ','チ','ツ','テ','ト',
													'ッ',
													'ナ','ニ','ヌ','ネ','ノ',
													'バ','ビ','ブ','ベ','ボ',
													'パ','ピ','プ','ペ','ポ',
													'ハ','ヒ','フ','ヘ','ホ',
													'マ','ミ','ム','メ','モ',
													'ヤ','ユ','ヨ',
													'ャ','ュ','ョ',
													'ラ','リ','ル','レ','ロ',
													'ワ','ヲ','ン','、','。',
													'ー','－','＿','　','・');
	switch (mode){
		case 0:
			hList = hanList;
			sList = hiraList;
			dList = kanaList;
			break;
		case 1:
			hList = hanList;
			sList = kanaList;
			dList = hiraList;
			break;
		case 2:
			hList = kanaList;
			sList = hiraList;
			dList = hanList;
			break;
		case 3:
			hList = hanList;
			sList = dum;
			dList = kanaList;
			break;
		case 4:
			hList = kanaList;
			sList = dum;
			dList = hanList;
			break;
		default:
			hList = dum;
			sList = dum;
			dList = dum;
	}
	while (Index < str.length){
		j = -1;
		ch = '';
		for (i = 0; i < hList.length; i++){
			if (str.indexOf(hList[i], Index) == Index){
				ch = hList[i];
				j = i;
				break;
			}
		}
		if (j == -1){
			for (i = 0; i < sList.length; i++){
				if (str.indexOf(sList[i], Index) == Index){
					ch = sList[i];
					j = i;
					break;
				}
			}
		}
		if (j == -1){
			ch = str.substr(Index, 1);
			newstr += ch;
		} else {
			newstr += dList[j];
		}
		Index += ch.length;
	}
	return newstr;
}
//今日の日付を返す
//in セパレータ
function setToday(sep){
	var YY,MM,DD;
	var NDate = new Date();
	YY = NDate.getYear();
	MM = NDate.getMonth() + 1;
	DD = NDate.getDate();
	if (YY < 1900) YY += 1900;
	return setZero(YY, '0000') + sep + setZero(MM, '00') + sep + setZero(DD, '00');
}
//日付を0補完する
//in 文字列(セパレータ[-|/])
function reGappi(str){
	var sep = '/';
	if (str.indexOf(sep) == -1){
		sep = '-';
	}
	var sStr = str.split(sep);
	return setZero(sStr[0], '0000') + sep + setZero(sStr[1], '00') + sep + setZero(sStr[2], '00');
}
//年月日の和表示
function jGappi(str){
	if (str.indexOf('.') > 0){
		var sep = '.';
	} else if (str.indexOf('-') > 0){
		var sep = '-';
	} else {
		var sep = '/';
	}
	var sStr = str.split(sep);
	return (sStr[0] * 1) + '年' + (sStr[1] * 1) + '月' + (sStr[2] * 1) + '日';
}
//日付の計算
//in 文字列(セパレータ[-|/|.])
function addGappi(str, ofsYear, ofsMonth, ofsDay){
	if (str.indexOf('.') > 0){
		var sep = '.';
	} else if (str.indexOf('-') > 0){
		var sep = '-';
	} else {
		var sep = '/';
	}
	var sStr = str.split(sep);
	sStr[2] = sStr[2] - 0 + Number(ofsDay);
	while (sStr[2] > getMatubi(sStr[0], sStr[1])){
		if(++sStr[1] > 12){
			++sStr[0];
			sStr[1] = 0;
		}
		sStr[2] -= getMatubi(sStr[0], sStr[1]);
		
	}
	while ((sStr[2] < 1)){
		if(--sStr[1] < 1){
			--sStr[0];
			sStr[1] = 12;
		}
		sStr[2] += getMatubi(sStr[0], sStr[1]);
	}
	sStr[1] = sStr[1] - 0 + Number(ofsMonth);
	while (sStr[1] > 12){
		++sStr[0];
		sStr[1] -= 12;
	}
	while (sStr[1] < 1){
		--sStr[0];
		sStr[1] += 12;
	}
	sStr[0] = sStr[0] - 0 + Number(ofsYear);
	return sStr[0] + sep + sStr[1] + sep + sStr[2];
}
//末日の計算
function getMatubi(year, month){
	var matubi = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if (month == 2){
		if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
			return 29;
		} else {
			return 28;
		}
	} else {
		return matubi[month - 1];
	}
}
//左詰
function setZero(str, ptr){
	if(ptr != ''){
		return (ptr + str).slice(-(ptr.length));
	} else {
		return str;
	}
}
//数字のチェック
function isnan(obj){
	if ((obj.value == '') || isNaN(obj.value)){
		alert('数字を入力してください');
		obj.value = '0';
	}
}
//メルアドのチェック
function ismailurl(str){
	var pattern = "^[a-zA-Z0-9\-_.]+@[a-z\-]+\.*(\.[a-z\-]+)*\.[a-z]*$";
	return str.match(pattern);
}
//URLのリンク
function AutoLink(str, target) {
	var regexp_url = /((h?)(ttps?:\/\/[a-zA-Z0-9.\-_@:/~?%&;=+#',*!]+))/g; // ']))/;

	var regexp_makeLink = function(all, url, h, href) {
		return '<a href="h' + href + '" target="' + target + '">' + url + '</a>';
	}
	return str.replace(regexp_url, regexp_makeLink);
}

//フォームを閉じる
function formClose(){
	(window.open('','_top').opener=top).close();
}
//今日の文字列
function today(sep, Zero){
	var YY,MM,DD;
	var NDate = new Date();
	YY = NDate.getYear();
	MM = NDate.getMonth() + 1;
	DD = NDate.getDate();
	if (YY < 1900) YY += 1900;
	if (!sep){
		sep = '/';
	}
	if (Zero){
		return YY + sep + setZero(MM, Zero) + sep + setZero(DD, Zero);
	} else {
		return YY + sep + MM + sep + DD;
	}
}
//DB日付の変換
function fromDBDate(DBdate){
	if ((DBdate == '') || (DBdate == '01/01/01')){
		return '';
	} else {
		var newDate = DBdate.match(/([0-9]+)\/([0-9]+)\/([0-9]+)/);
		return '20' + RegExp.$3 + '/' + RegExp.$1 + '/' + RegExp.$2;
	}
}
//メール日付の変換
function fromMailDate(Maildate){
	var newDate = Maildate.match(/(.+), ([0-9]+) (.+) ([0-9]+) ([0-9]+):([0-9]+):.*/);
	return RegExp.$4 + '/' + setZero(toAmonth(RegExp.$3), '00') + '/' + setZero(RegExp.$2, '00') + ' ' + RegExp.$5 + ':' + RegExp.$6;
}
function toAmonth(str){
	var week = new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
	var month = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
	var i;
	for (i = 0; i < month.length; i++){
		if (month[i] == str){
			return (i+1);
		}
	}
	return 0;
}
function getseccode(len){
	var list = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
	var i, str = '';
	for (i = 0; i < len; i++){
		str += list.substr(Math.floor(Math.random() * list.length), 1);
	}
	return str;
}
//画像拡張子の検査
function isImage(str){
	var atr = new Array('.gif','.jpg','.png');
	var i;
	for (i = 0; i < atr.length; i++){
		if (str.match(RegExp(atr[i], "i")) == atr[i]){
			return true;
		}
	}
	return false;
}
function getActualDimension(image) {
  var run, mem, w, h, key = "actual";

  // for Firefox, Safari, Google Chrome
  if ("naturalWidth" in image) {
    return { width:  image.naturalWidth,
             height: image.naturalHeight };
  }

  if ("src" in image) { // HTMLImageElement
    if (image[key] && image[key].src === image.src) {
      return image[key];
    }
    if (document.uniqueID) { // for IE
      run = image.runtimeStyle;
      mem = { w: run.width, h: run.height }; // keep runtimeStyle
      run.width  = "auto"; // override
      run.height = "auto";
      w = image.width;
      h = image.height;
      run.width  = mem.w; // restore
      run.height = mem.h;
    } else { // for Opera and Other
/*
      function fn() {
        w = image.width;
        h = image.height;
      }
      mem = { w: image.width, h: image.height }; // keep current style
      image.removeAttribute("width");
      image.addEventListener("DOMAttrModified", fn, false);
      image.removeAttribute("height");
      // call fn
      image.removeEventListener("DOMAttrModified", fn, false);
      image.width  = mem.w; // restore
      image.height = mem.h;
 */
      mem = { w: image.width, h: image.height }; // keep current style
      image.removeAttribute("width");
      image.removeAttribute("height");
      w = image.width;
      h = image.height;
      image.width  = mem.w; // restore
      image.height = mem.h;
    }
    return image[key] = { width: w, height: h, src: image.src }; // bond
  }
  // HTMLCanvasElement
  return { width: image.width, height: image.height };
}
function imageResize(ID, maxSize){
	var actual = getActualDimension(document.getElementById(ID));
	if ((actual.width > (maxSize)) || (actual.height > (maxSize))){
		if (actual.width < actual.height){
			document.getElementById(ID).width = actual.width * (maxSize) / actual.height;
		} else {
			document.getElementById(ID).height = actual.height * (maxSize) / actual.width;
		}
	} else {
		document.getElementById(ID).width = actual.width;
		document.getElementById(ID).height = actual.height;
	}
}
//キーコード取得
function keyCode(evt){
	if (evt){
		return evt.keyCode;
	} else {
		return event.keyCode;
	}
}
//if ( confirm("削除しますか？")){};
//prompt("日本の首都は？","東京");
