//=========================================================================
//共通javascript
//=========================================================================

//-------------------------------------------------------------------------
//月変更
//-------------------------------------------------------------------------
function changeMonth(frm, ctrl_from, ctrl_to, m) {
	
//	frm = document.form1;
	from_year = frm.elements[ctrl_from + "[Date_Year]"];
	from_month = frm.elements[ctrl_from + "[Date_Month]"];
	from_day = frm.elements[ctrl_from + "[Date_Day]"];
	to_year = frm.elements[ctrl_to + "[Date_Year]"];
	to_month = frm.elements[ctrl_to + "[Date_Month]"];
	to_day = frm.elements[ctrl_to + "[Date_Day]"];

	switch (m) {
	case 0:
		dt = new Date();
		break;
	case -1:
		//前月
		if (!from_year.value || !from_month.value || !from_day.value) {
			dt = new Date();
			dt = new Date(dt.getYear(), dt.getMonth() - 1, 1);
		} else {
			dt = new Date(from_year.value, from_month.value - 1 - 1, 1);
		}
		break;
	case 1:
		//次月
		if (!from_year.value || !from_month.value || !from_day.value) {
			dt = new Date();
			dt = new Date(dt.getYear(), dt.getMonth() + 1, 1);
		} else {
			dt = new Date(from_year.value, from_month.value - 1 + 1, 1);
		}
		break;
	}
	
	dt1 = new Date(dt.getYear(), dt.getMonth() + 1, 0);
	from_year.value = dt.getYear();
	from_month.value = dt.getMonth() + 1;
	from_day.value = 1;
	to_year.value = dt1.getYear();
	to_month.value = dt1.getMonth() + 1;
	to_day.value = dt1.getDate();
}

//-------------------------------------------------------------------------
//月クリア
//-------------------------------------------------------------------------
function clearMonth(frm, ctrl_from, ctrl_to) {
	
//	frm = document.form1;
	from_year = frm.elements[ctrl_from + "[Date_Year]"];
	from_month = frm.elements[ctrl_from + "[Date_Month]"];
	from_day = frm.elements[ctrl_from + "[Date_Day]"];
	to_year = frm.elements[ctrl_to + "[Date_Year]"];
	to_month = frm.elements[ctrl_to + "[Date_Month]"];
	to_day = frm.elements[ctrl_to + "[Date_Day]"];

	from_year.value = "";
	from_month.value = "";
	from_day.value = "";
	to_year.value = "";
	to_month.value = "";
	to_day.value = "";
}

//-------------------------------------------------------------------------
//trim
//-------------------------------------------------------------------------
function trim(str){
	return str.replace(/^[ ]+|[ ]+$/g, '');
}

//-------------------------------------------------------------------------
//isNumber
//-------------------------------------------------------------------------
function isNumber(x){
	str=String(x);
	str=trim(str);
	r=(!isNaN(str)&&str!="");
	return r;
}

//-------------------------------------------------------------------------
//isEmpty
//-------------------------------------------------------------------------
function isEmpty(x){
	str=String(x);
	str=trim(str);
	r=(str=="");
	return r;
}

//-------------------------------------------------------------------------
//isInt
//-------------------------------------------------------------------------
function isInt(x){
	if(isNumber(x)){
		window.alert(3.3/1);
	}else{
		return false;
	}
}

//-------------------------------------------------------------------------
//
//-------------------------------------------------------------------------
String.prototype.toHankakuCase = function()
{
	var c, i = this.length, a = [];

	while(i--)
	{
		c = a[i] = this.charCodeAt(i);

		switch(true)
		{
			
			case (0xFF01 <= c && c <= 0xFF5E):
				a[i] -= 0xFEE0;
				break;
			
			case (c == 0x3000):
				a[i] = 0x0020;
				break;
		}
	}

	return String.fromCharCode.apply(null, a);
};

//-------------------------------------------------------------------------
//
//-------------------------------------------------------------------------
String.prototype.toHankanaCase = function()
{
	var i, f, c, m, a = [];

	m =
	{
		0x30A1:0xFF67, 0x30A3:0xFF68, 0x30A5:0xFF69, 0x30A7:0xFF6A, 0x30A9:0xFF6B,
		0x30FC:0xFF70, 0x30A2:0xFF71, 0x30A4:0xFF72, 0x30A6:0xFF73, 0x30A8:0xFF74,
		0x30AA:0xFF75, 0x30AB:0xFF76, 0x30AD:0xFF77, 0x30AF:0xFF78, 0x30B1:0xFF79,
		0x30B3:0xFF7A, 0x30B5:0xFF7B, 0x30B7:0xFF7C, 0x30B9:0xFF7D, 0x30BB:0xFF7E,
		0x30BD:0xFF7F, 0x30BF:0xFF80, 0x30C1:0xFF81, 0x30C4:0xFF82, 0x30C6:0xFF83,
		0x30C8:0xFF84, 0x30CA:0xFF85, 0x30CB:0xFF86, 0x30CC:0xFF87, 0x30CD:0xFF88,
		0x30CE:0xFF89, 0x30CF:0xFF8A, 0x30D2:0xFF8B, 0x30D5:0xFF8C, 0x30D8:0xFF8D,
		0x30DB:0xFF8E, 0x30DE:0xFF8F, 0x30DF:0xFF90, 0x30E0:0xFF91, 0x30E1:0xFF92,
		0x30E2:0xFF93, 0x30E4:0xFF94, 0x30E6:0xFF95, 0x30E8:0xFF95, 0x30E9:0xFF97,
		0x30EA:0xFF98, 0x30EB:0xFF99, 0x30EC:0xFF9A, 0x30ED:0xFF9B, 0x30EF:0xFF9C,
		0x30F2:0xFF66, 0x30F3:0xFF9D, 0x30C3:0xFF6F
	};

	for(i=0,f=this.length;i<f;)
	{
		c = this.charCodeAt(i++);
		switch(true)
		{
			case (c in m):
				a.push(m[c]);
				break;
			case (0x30AB <= c && c <= 0x30C9):
				a.push(m[c-1], 0xFF9E);
				break;
			case (0x30CF <= c && c <= 0x30DD):
				a.push(m[c-c%3], [0xFF9E,0xFF9F][c%3-1]);
				break;
			default:
				a.push(c);
				break;
		};
	};

	return String.fromCharCode.apply(null, a);
};

//-------------------------------------------------------------------------
//
//-------------------------------------------------------------------------
String.prototype.toHiraganaCase = function()
{
	var c, i = this.length, a = [];

	while(i--)
	{
		c = this.charCodeAt(i);
		a[i] = (0x30A1 <= c && c <= 0x30F6) ? c - 0x0060 : c;
	};

	return String.fromCharCode.apply(null, a);
};

//-------------------------------------------------------------------------
//
//-------------------------------------------------------------------------
String.prototype.toKatakanaCase = function()
{
	var c, i = this.length, a = [];

	while(i--)
	{
		c = this.charCodeAt(i);
		a[i] = (0x3041 <= c && c <= 0x3096) ? c + 0x0060 : c;
	};

	return String.fromCharCode.apply(null, a);
};


//-------------------------------------------------------------------------
//
//-------------------------------------------------------------------------
String.prototype.toPaddingCase = function()
{
	var i, c, f, a = [];

	for(i=0,f=this.length;i<f;i++)
	{
		c = this.charCodeAt(i);
		switch(true)
		{
			
			case (0x304B <= c && c <= 0x3062 && (c % 2 == 1)):
			
			case (0x30AB <= c && c <= 0x30C2 && (c % 2 == 1)):
			
			case (0x3064 <= c && c <= 0x3069 && (c % 2 == 0)):
			
			case (0x30C4 <= c && c <= 0x30C9 && (c % 2 == 0)):
				a.push(c + ({0x309B:1}[this.charCodeAt(i+1)] || 0));
				if(a[a.length-1] != c){ i++; };
				break;
			
			case (0x306F <= c && c <= 0x307D && (c % 3 == 0)):
			
			case (0x30CF <= c && c <= 0x30DD && (c % 3 == 0)):
				a.push(c + ({0x309B:1,0x309C:2}[this.charCodeAt(i+1)] || 0));
				if(a[a.length-1] != c){ i++; };
				break;
			default:
				a.push(c);
				break;
		};
	};

	return String.fromCharCode.apply(null, a);
};

//-------------------------------------------------------------------------
//
//-------------------------------------------------------------------------
String.prototype.toZenkakuCase = function()
{
	var c, i = this.length, a = [];

	while(i--)
	{
		c = a[i] = this.charCodeAt(i);
		switch(true)
		{
			case (c <= 0x007E && 0x0021 <= c):
				a[i] += 0xFEE0;
				break;
			case (c == 0x0020):
				a[i] = 0x3000;
				break;
		};
	};

	return String.fromCharCode.apply(null, a);
};

//-------------------------------------------------------------------------
//
//-------------------------------------------------------------------------
String.prototype.toZenkanaCase = function()
{
	var i, f, c, m, a = [];

	m =
	{
		0xFF67:0x30A1, 0xFF68:0x30A3, 0xFF69:0x30A5, 0xFF6A:0x30A7, 0xFF6B:0x30A9,
		0xFF70:0x30FC, 0xFF71:0x30A2, 0xFF72:0x30A4, 0xFF73:0x30A6, 0xFF74:0x30A8,
		0xFF75:0x30AA, 0xFF76:0x30AB, 0xFF77:0x30AD, 0xFF78:0x30AF, 0xFF79:0x30B1,
		0xFF7A:0x30B3, 0xFF7B:0x30B5, 0xFF7C:0x30B7, 0xFF7D:0x30B9, 0xFF7E:0x30BB,
		0xFF7F:0x30BD, 0xFF80:0x30BF, 0xFF81:0x30C1, 0xFF82:0x30C4, 0xFF83:0x30C6,
		0xFF84:0x30C8, 0xFF85:0x30CA, 0xFF86:0x30CB, 0xFF87:0x30CC, 0xFF88:0x30CD,
		0xFF89:0x30CE, 0xFF8A:0x30CF, 0xFF8B:0x30D2, 0xFF8C:0x30D5, 0xFF8D:0x30D8,
		0xFF8E:0x30DB, 0xFF8F:0x30DE, 0xFF90:0x30DF, 0xFF91:0x30E0, 0xFF92:0x30E1,
		0xFF93:0x30E2, 0xFF94:0x30E4, 0xFF95:0x30E6, 0xFF95:0x30E8, 0xFF97:0x30E9,
		0xFF98:0x30EA, 0xFF99:0x30EB, 0xFF9A:0x30EC, 0xFF9B:0x30ED, 0xFF9C:0x30EF,
		0xFF9D:0x30F3, 0xFF9E:0x309B, 0xFF9F:0x309C, 0xFF66:0x30F2
	};

	for(i=0,f=this.length;i<f;i++)
	{
		c = this.charCodeAt(i);
		a.push(m[c] || c);
	};

	return String.fromCharCode.apply(null, a);
};


//-------------------------------------------------------------------------
//
//-------------------------------------------------------------------------
String.prototype.isKatakana = function()
{
	var result = this.match(/^[ァ-ヶ]*$/) != null;

	//全てカタカナ文字であったら、カタカナ小文字[ァ-ォ]が含まれていたらエラーとする
	if(result) {
		result = this.match(/[ァィゥェォ]/) != null;
		result = !result;
	}


	return result;
}

//-------------------------------------------------------------------------
//
//-------------------------------------------------------------------------
String.prototype.isAlpha = function()
{

	var result = this.match(/^[a-zA-Z]*$/) != null;
	return result;
}

//-------------------------------------------------------------------------
//
//-------------------------------------------------------------------------
String.prototype.isDigit = function()
{
	var result = this.match(/^[0-9]*$/) != null;
	return result;
}


//-------------------------------------------------------------------------
//電話番号?
//-------------------------------------------------------------------------
String.prototype.isTel = function()
{
	var result = this.match(/^\d{1,4}-\d{1,4}-\d{1,4}$/) != null;
	return result;
}

//-------------------------------------------------------------------------
//郵便番号?
//-------------------------------------------------------------------------
String.prototype.isZipcode = function()
{
	var result = this.match(/^[0-9]{7}$/) != null;
	return result;
}

//-------------------------------------------------------------------------
//メールアドレス?
//-------------------------------------------------------------------------
String.prototype.isMailAddress = function()
{
	var result = this.match(/^\S+@\S+\.\S+$/) != null;
	return result;
}


//-------------------------------------------------------------------------
//チェックされたラジオボタン
//-------------------------------------------------------------------------
function getSelectedRadio(radios) {
	if ($A(radios).length) {
		var r = $A(radios).find(function(v) {
		  return v.checked;
		});
		return r;
	} else {
		if ($(radios).checked) {
			return $(radios);
		}
	}
}

//-------------------------------------------------------------------------
//チェックされたオプション
//-------------------------------------------------------------------------
function getSelectedOption(options) {
	var r = $A(options).find(function(v) {
	  return v.checked;
	});
	return r;
}


