//---------ブラウザ関係---------//

/*ブラウザがインターネットエクスプローラーx以上だったらtrueを返す
 *<IN>	数値（バージョン数）
 *<OUT>	true/false
 */
function isIE(x)
{
	if(navigator.appVersion.charAt(0) >= x)
	{
		if(navigator.appName.charAt(0) == "M")
		{
			return true;
		}
		return false;
	}
	return false;
}

/*ブラウザがネットスケープx以上だったらtrueを返す
 *<IN>	数値（バージョン数）
 *<OUT>	true/false
 */
function isNS(x)
{
	if(navigator.appVersion.charAt(0) >= x)
	{
		if(navigator.appName.charAt(0) == "N")
		{
			return true;
		}
		return false;
	}
	return false;
}


//---------配列関係---------//

/*２次元配列を作成
 *<IN>	X列数、Y列数
 *<OUT>	true/false
 */
function DIM(dimx,dimy)
{
	var i;
	var myArray = new Array(dimy);
	for (i=0; i<dimy; i++)
	{
		myArray[i] = new Array(dimx);
	}
	return myArray;
}


//---------クッキー関係---------//

/*クッキーを記録する
 *<IN>	クッキー名、内容、[日付(Date)(省略可)]、[パス(省略可)]
 *<OUT>	true/false
 */
function setCookie(theName, theValue, theDay, thePath)
{
	var strexpires;
	var strpath;
	if(theName != null && theName != "") {
		if(theDay != null && theDay != "") {
			expireDate = new Date();
			expireDate.setDate(expireDate.getDate() + theDay);
			expDay = expireDate.toGMTString();
			strexpires = "expires=" + expDay + ";";
		}
		if(thePath != null && thePath != "") {
			strpath = "path=" + thePath + ";";
		}

		document.cookie = theName + "=" + escape(theValue) + ";" + strexpires + strpath;
		return true;
	}
	return false;
}

/*クッキーを取得する
 *<IN>	クッキー名
 *<OUT>	クッキー文字列（アンエスケープ済み）
 */
function getCookie(theName)
{
	if((document.cookie != "") && (theName != null))
	{
		theName += "=";
		theCookie = document.cookie + ";";

		start = theCookie.indexOf(theName);
		if (start != -1)
		{
			end = theCookie.indexOf(";", start);
			return unescape(theCookie.substring(start + theName.length, end));
		}
	}
	return "";
}

/*クッキーを削除する
 *<IN>	クッキー名
 *<OUT>	true/false
 */
function deleteCookie(theName)
{
	if(theName != null) {
		document.cookie = theName + "=;expires=Thu, " + "01-Jan-70 00:00:01 GMT";
		return true;
	}
	return false;
}


//---------テキストフォーマット関係---------//

/*数値を通貨フォーマットにする（桁をカンマで区切る）
 *<IN>	数値
 *<OUT>	桁区切りされた文字列
 */
function moneyFormat(money)
{
	var i;
	var count;
	var c;
	tempStr = new String();
	tempStr = "";
	moneyStr = new String(money);
	c = moneyStr.length;
	count = 0;
	for(i=c-1;i >= 0;i--)
	{
		tempStr = moneyStr.charAt(i) + tempStr;
		count++;
		if (count%3 == 0 && count!=0 && i!=0)
		{
			tempStr = "," + tempStr;
		}
	}
	return tempStr;
}


//---------日付関係---------//


LeapYear = new Array(0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
NormYear = new Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

/*うるう年チェック
 *<IN>	西暦年号
 *<OUT> うるう年: true  平年: false
 */
function leap(year) {

	if (year % 100) {		// 西暦年号が 100 で割り切れない
		if (year % 4) {	// 西暦年号が 4 で割り切れない
			return false;	// 平年
		}
		else {
			return true;	// うるう年
		}
	}
	else {					// 西暦年号が 100 で割り切れる
		if (year % 400) {	// 西暦年号が 400 で割り切れない
			return false;	// 平年
		}
		else {				// 西暦年号が 400 で割り切れる
			if (year % 4000) {	// 西暦年号が 4000 で割り切れない
				return true;	// うるう年
			}
			else {			// 西暦年号が 4000 で割り切れる
				return false;	//平年
			}
		}
	}
}

/*ひと月の合計日数
 *<IN>  年、月
 *<OUT> その月の合計日数
 */
function getDaysOfMonth(year, month) {
	if(leap(year)) {
		return LeapYear[month];
	}
	else {
		return NormYear[month];
	}
}


//---------Eメールアドレス関係---------//

/*Eメールアドレスのフォーマットをチェックする
 *<IN>	メールアドレス
 *<OUT>	true(OK)/false
 */
function validEmail(vemail) {
	var invalidC = " /;,:"
	var badC = ""
	
	if (vemail == "") {
		return true
	}
	for (i=0; i<invalidC.length; i++) {
		badC = invalidC.charAt(i)
		if (vemail.indexOf(badC,0) != -1) {
			return false
		}
	}
	atPos = vemail.indexOf("@",1)
	if (atPos == -1) {
		return false
	}
	if (vemail.indexOf("@",atPos+1) != -1) {
		return false
	}
	periodPos = vemail.indexOf(".",atPos)
	if (periodPos == -1) {
		return false
	}
	if (periodPos+3 > vemail.length) {
		return false
	}
	return true
}


//---------文字チェック関係---------//

/*文字列が半角英数字かチェックする
 *<IN>	文字列
 *<OUT>	true(OK)/false
 */
function alphaNumCheck(str) {
	var i;
	var c;
	if(str == null || str == "") {return true;}
	str = str.toLowerCase();
	for(i=0;i<str.length;i++) {
		c = str.charAt(i);
		if(!((c >= "0") && (c <= "9")) && !((c >= "a") && (c <= "z"))) {
			return false;
		}
	}
	return true;
}

/*文字列が半角数字かチェックする
 *<IN>	文字列
 *<OUT>	true(OK)/false
 */
function numCheck(str) {
	var i;
	var c;
	if(str == null || str == "") {return true;}
	str = str.toLowerCase();
	for(i=0;i<str.length;i++) {
		c = str.charAt(i);
		if(!((c >= "0") && (c <= "9"))) {
			return false;
		}
	}
	return true;
}


/*文字列が半角数字かチェックする
 *<IN>	文字列
 *<OUT>	true(OK)/false
 */
function hNumCheck(str){
	var i;
	var c;

	for (i=0 ; i<str.length ; i++){
    	c = str.charCodeAt(i);
      	if ((48 > c || c > 57)){
			return false;
		}
    }
	return true;
}
 


/*文字列が半角英字かチェックする
 *<IN>	文字列
 *<OUT>	true(OK)/false
 */
function hAlphaCheck(str){
	var i;
	var c;

	for(i=0 ; i<str.length ; i++){
    	c = str.charCodeAt(i);
      	if((65<= c && c <=90) || (97 <= c && c <= 122)){
		}else{
			return false;
		}
    }
	return true;
}	
 
/*文字列が半角英数字かチェックする
 *<IN>	文字列
 *<OUT>	true(OK)/false
 */
function hAlphaNumCheck(str){
	var i;
	var c;

	for (i=0 ; i<str.length ; i++){
    	c = str.charCodeAt(i);
      	if((48<=c && c <=57) || (65<= c && c <=90) || (97 <= c && c <= 122)){
		}else{
			return false;
		}
    }
	return true;
}	


/*文字列が全角カナかチェックする。
 *<IN>	文字列
 *<OUT>	true(OK)/false
 */
function zKanaCheck(str){
	var i;
	var c;

	for (i=0 ; i<str.length ; i++){
    	c = str.charCodeAt(i);
      	if (!(12449<= c && c <= 12542)){
			return false;
		}
    }
	return true;
}	


/*文字列が半角かチェックする
 *<IN>	文字列
 *<OUT>	true(OK)/false
 */
function hankakuCheck(str){
	var i;
	var c;

    for (i=0;i<str.length;i++){
      	c = escape(str.charAt(i));
      	if (c.length < 4){ 
		}else{
			return false;
    	}
	}
	return true;
}

/*文字列が全角かチェックする
 *<IN>	文字列
 *<OUT>	true(OK)/false
 */
function zenkakuCheck(str){
	var i;
	var c;

    for (i=0;i<str.length;i++){
      	c = escape(str.charAt(i));
      	if (c.length > 4){ 
			return false;
    	}
	}
	return true;
}

/*文字列に半角カナが存在するかチェックする。 
 *<IN>	文字列
 *<OUT>	true(OK)/false
 */
function inHKanaCheck(str){
	var i;
	var c;

	if(str == null || str == "") {return true;}
	for (i=0 ; i<str.length ; i++){
    	c = str.charCodeAt(i);
      	if ((65382<= c && c <= 65439)) {
			return true;
		}
    }
	return false;
}


/*文字列に全角カナが存在するかチェックする。
 *<IN>	文字列
 *<OUT>	true(OK)/false
 */
function inZKanaCheck(str){
	var i;
	var c;

	for (i=0 ; i<str.length ; i++){
    	c = str.charCodeAt(i);
      	if ((12449<= c && c <= 12542)){
			return true;
		}
    }
	return false;
}	
 



//---------フォーム関係---------//

//フォームに値をセットする
function setObject( Form, tagName, strValue )
{
	var i,j;
	var selElements = -1;

	//-- エレメントを取得
	for( i= 0; i<Form.length; i++ ){
		if( Form.elements[i].name == tagName ){
			objName = Form.elements[i];
			var strDefValue = objName.value;
			var typObject = objName.type;

			if( typObject == 'select-one' || typObject == 'select-multiple'){
				for( j=0; j<objName.length; j++ ){
					if( objName.options[j].value == strValue ){
						objName.selectedIndex = j;
					}
				}
			}
			
			if( typObject == 'checkbox' || typObject == 'radio'){
				if( strDefValue == strValue ){
					objName.checked = true;
				}
					//alert(Form.elements[i].name + '=' + objName.checked + '=' + objName.value);
			}

			if( typObject == 'text' || typObject == 'textarea' ){
				objName.value = strValue;
			}
		}
	}

}


//フォームの値をクリアする
function setClear( Form, mode )
{
	var i,j;
	var selElements = -1;
	var ojbName;

	//-- エレメントを取得
	for( i= 0; i<Form.length; i++ ){
		objName = Form.elements[i];
		var strDefValue = objName.value;
		var typObject = objName.type;

		if( typObject == 'select-one' || typObject == 'select-multiple'){
			objName.selectedIndex = 0;
		}
		
		if( typObject == 'checkbox' || typObject == 'radio'){
			objName.checked = false;
		}

		if( typObject == 'text' || typObject == 'textarea' ){
			objName.value = "";
		}
		
		if( mode == 'hidden' ) {
			if( typObject == 'hidden' ){
				objName.value = "";
			}
		}
	}

	return true;
}

//特定のフォームエレメントの値を取得する（＊値が指定されている場合は更新する
function getObject( Form, tagName, strValue )
{
	var i,j;
	var targetStr;
	var error_flg = -1;
	var selElements = -1;

	targetStr = ""

	//-- エレメントを取得
	for( i= 0; i<Form.length; i++ ){
		if( Form.elements[i].name == tagName ){
			objName = Form.elements[i];
			var strDefValue = objName.value;
			var typObject = objName.type;

			if( typObject == 'select-one' || typObject == 'select-multiple'){
				targetStr = objName.options[objName.selectedIndex].value;
				if( strValue != "" ) {
					for( j=0; j<objName.length; j++ ){
							if( objName.options[j].value == strValue ){
								objName.selectedIndex = j;
							}
					}
				}
			}
			
			if( typObject == 'checkbox' || typObject == 'radio'){
				if( objName.checked ) {
					targetStr = objName.value;
				}
				if( strValue != "" ) {
					if( strDefValue == strValue ){
						objName.checked = true;
					}
				}
				//alert(Form.elements[i].name + '=' + objName.checked + '=' + objName.value);
			}

			if( typObject == 'text' || typObject == 'textarea' ){
				targetStr = objName.value;
				if( strValue != "" ) {
					objName.value = strValue;
				}
			}
		}
	}
	
	return targetStr;
}


//---------テキスト挿入IE5以上---------//
if(document.all && document.getElementById){
	var n=0,s=0;
	function posText( fde ){
		var r=fde.createTextRange();
		var sel=document.selection.createRange();
		r.moveToPoint(sel.offsetLeft,sel.offsetTop);
		r.moveEnd("character",sel.text.length);
		s=r.text.replace(/\r/g,"").length;
		//s=r.text.replace(/\r/g,"").length;
		r.moveEnd("textedit");
		n=r.text.replace(/\r/g,"").length+(fde.value.match(/(\r\n)*$/),RegExp.$1.length/2);
		//n=r.text.replace(/\r/g,"").length;
		//alert(r.text.length + "=" + n + "=" + s);
	}
	function insertText( fde, a, b ){
		var r = fde.createTextRange();
		r.collapse();
		r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
		//r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
		r.moveEnd("character",s);
		r.text = a + r.text + b;
		r.collapse(false);
		r.select();
		r.parentElement().focus();
		s=0;
		posText(fde);
	}
	function insertURL( fde, a, b ){
		var r = fde.createTextRange();
		var urlstr;
		urlstr = prompt("URLを入力して下さい。","http://")
		if(urlstr == null || urlstr == "http://") {
			urlstr = "";
		} else {
			a = "<a href=\"" + urlstr + "\">";
			b = "</a>";
			r.collapse();
			r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
			//r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
			r.moveEnd("character",s);
			r.text = a + r.text + b;
			r.collapse(false);
			r.select();
			r.parentElement().focus();
			s=0;
			posText(fde);
		}
	}
	function insertURLNewWin( fde, a, b ){
		var r = fde.createTextRange();
		var urlstr;
		urlstr = prompt("URLを入力して下さい。","http://")
		if(urlstr == null || urlstr == "http://") {
			urlstr = "";
		} else {
			a = "<a href=\"" + urlstr + "\" target=\"_blank\">";
			b = "</a>";
			r.collapse();
			r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
			//r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
			r.moveEnd("character",s);
			r.text = a + r.text + b;
			r.collapse(false);
			r.select();
			r.parentElement().focus();
			s=0;
			posText(fde);
		}
	}
	function insertANAME( fde, a, b ){
		var r = fde.createTextRange();
		var namestr;
		namestr = prompt("リンク名を入力して下さい。","")
		if(namestr == null || namestr == "") {
			namestr = "";
		} else {
			a = "<a name=\"" + namestr + "\">";
			b = "</a>";
			r.collapse();
			r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
			//r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
			r.moveEnd("character",s);
			r.text = a + r.text + b;
			r.collapse(false);
			r.select();
			r.parentElement().focus();
			s=0;
			posText(fde);
		}
	}
	function insertMailto( fde, a, b ){
		var r = fde.createTextRange();
		var mailstr;
		mailstr = prompt("メールアドレスを入力して下さい。","")
		if(mailstr == null || mailstr == "") {
			mailstr = "";
		} else {
			a = "<a href=\"mailto:" + mailstr + "\">";
			b = "</a>";
			r.collapse();
			r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
			//r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
			r.moveEnd("character",s);
			r.text = a + r.text + b;
			r.collapse(false);
			r.select();
			r.parentElement().focus();
			s=0;
			posText(fde);
		}
	}
	function insertPageLink( fde, fpl, name, a, b ){
		var r = fde.createTextRange();
		var urlstr;
		var pagestr;
		
		urlstr = "__%" + name + "%__";
		pagestr = fpl.options[fpl.selectedIndex].value;
		a = urlstr + pagestr;
		
		r.collapse();
		r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
		//r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
		r.moveEnd("character",s);
		r.text = a + r.text + b;
		r.collapse(false);
		r.select();
		r.parentElement().focus();
		s=0;
		posText(fde);
	}
	function insertPageLinkTag( fde, fpl, name, a, b ){
		var r = fde.createTextRange();
		var urlstr;
		var pagestr;
		
		urlstr = "__%" + name + "%__";
		pagestr = fpl.options[fpl.selectedIndex].value;
		urlstr = urlstr + pagestr;
		
		a = "<a href=\"" + urlstr + "\">";
		b = "</a>";
		
		r.collapse();
		r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
		//r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
		r.moveEnd("character",s);
		r.text = a + r.text + b;
		r.collapse(false);
		r.select();
		r.parentElement().focus();
		s=0;
		posText(fde);
	}
	function insertDBData( fde, a, b ){
		var r = fde.createTextRange();
		var namestr;
		namestr = prompt("挿入するデータの列名を入力して下さい。","")
		if(namestr == null || namestr == "") {
			namestr = "";
		} else {
			a = "__%" + namestr + "%__";
			b = "";
			r.collapse();
			r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
			//r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
			r.moveEnd("character",s);
			r.text = a + r.text + b;
			r.collapse(false);
			r.select();
			r.parentElement().focus();
			s=0;
			posText(fde);
		}
	}
	function insertIMG( fde, a, b, u ){
		var r = fde.createTextRange();
		var urlstr;
		urlstr = prompt("画像URLを入力して下さい。",u)
		if(urlstr == null || urlstr == u) {
			urlstr = "";
		} else {
			a = "<img src=\"" + urlstr + "\" border=\"0\" alt=\"\">";
			b = "";
			r.collapse();
			r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
			//r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
			r.moveEnd("character",s);
			r.text = a + r.text + b;
			r.collapse(false);
			r.select();
			r.parentElement().focus();
			s=0;
			posText(fde);
		}
	}
	function insertIMGLink( fde, a, b, u ){
		var r = fde.createTextRange();
		var urlstr;
		var imgstr;
		imgstr = prompt(">■画像URLを入力して下さい。\n  □リンク先URLを入力して下さい。",u)
		if(imgstr == null || imgstr == u) {
			imgstr = "";
		} else {
			urlstr = prompt("  □画像URLを入力して下さい。\n>■リンク先URLを入力して下さい。",imgstr)
			if(urlstr == null || urlstr == "http://") {
				urlstr = "";
			} else {
				a = "<a href=\"" + urlstr + "\" target=\"_blank\"><img src=\"" + imgstr + "\" border=\"0\" alt=\"\"></a>";
				b = "";
				r.collapse();
				r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
				//r.moveStart("character",fde.value.replace(/\r/g,"").length - n);
				r.moveEnd("character",s);
				r.text = a + r.text + b;
				r.collapse(false);
				r.select();
				r.parentElement().focus();
				s=0;
				posText(fde);
			}
		}
	}
}


