var match_zenkaku = /^[ぁ-んァ-ヶー一-龠ａ-ｚＡ-Ｚ０-９、。　「」々－]+$/;
var match_zenkaku2 = /^[ぁ-んァ-ヶー一-龠ａ-ｚＡ-Ｚ０-９、。　「」々]+$/;
var match_zenkana = /^[ ァ-ン　ー－]*$/
var match_hiragana = /^[ ぁ-ん　ー－]*$/
var match_hankaku = /^[ｰ()｡｢｣､ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ ]+$/;
var match_hankaku2 = /^[ｰ()｡｢｣､ｦｧｨｩｪｫｬｭｮｯｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ ]+$/;
var match_alpha = /^[a-zA-Z]+$/;
var match_alphanum = /^[0-9a-zA-Z]+$/;
var match_alphanumplus = /^([a-zA-Z0-9\.~*\'()?:\@&=+\$,%#!%_-])*$/;
var match_tel = /^[0-9(][0-9,()-]+[0-9]$/;
var match_email = /^([a-zA-Z0-9])+([a-zA-Z0-9\+\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+\.([a-zA-Z0-9\._-]+)+$/;
var match_url = /^(https?)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/;
var match_date = /^([0-9]{4})[\/-]?([0-9]{1,2})[\/-]?([0-9]{1,2})$/;
var match_datehm = /^([0-9]{4}[\/-]?)([0-9]{1,2}[\/-]?)([0-9]{1,2})[ T]([0-9]{1,2}[:-]?)([0-9]{1,2})$/;
var match_time = /^([0-9]{1,2}[:-]?)([0-9]{1,2}[:-]?)([0-9]{1,2})$/;
var match_datetime = /^([0-9]{4}[\/-]?)([0-9]{1,2}[\/-]?)([0-9]{1,2})[ T]([0-9]{1,2}[:-]?)([0-9]{1,2}[:-]?)([0-9]{1,2})$/;
var match_num = /^[0-9]+$/;
var match_postal = /^[0-9]{3}-?[0-9]{4}$/
var match_domain = /^([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+\.([a-zA-Z0-9\._-]+)+$/
var match_password = /^([a-zA-Z0-9\.~*\'()?:\@&=+\$%#!%_-])*$/;
var match_pageid = /^([a-z0-9_-])*$/;
var match_colorcode = /^#([a-fA-F0-9]){6}$/;

function check_param_type_zenkaku(input_val){ var ret=false; if(input_val.match(match_zenkaku)){ ret=true; } return ret; }
function check_param_type_zenkana(input_val){ var ret=false; if(input_val.match(match_zenkana)){ ret=true; } return ret; }
function check_param_type_hiragana(input_val){ var ret=false; if(input_val.match(match_hiragana)){ ret=true; } return ret; }
function check_param_type_num(input_val){ var ret=false; if(input_val.match(match_num)){ ret=true; } return ret; }
function check_param_type_alpha(input_val){ var ret=false; if(input_val.match(match_alpha)){ ret=true; } return ret; }
function check_param_type_alphanum(input_val){ var ret=false; if(input_val.match(match_alphanum)){ ret=true; } return ret; }
function check_param_type_alphanumplus(input_val){ var ret=false; if(input_val.match(match_alphanumplus)){ ret=true; } return ret; }
function check_param_type_tel(input_val){ var ret=false; if(input_val.match(match_tel)){ ret=true; } return ret; }
function check_param_type_email(input_val){ var ret=false; if(input_val.match(match_email)){ ret=true; } return ret; }
function check_param_type_postal(input_val){ var ret=false; if(input_val.match(match_postal)){ ret=true; } return ret; }
function check_param_type_url(input_val){ var ret=false; if(input_val.match(match_url)){ ret=true; } return ret; }
function check_param_type_password(input_val){ var ret=false; if(input_val.match(match_password)){ ret=true; } return ret; }

function check_param_type_url2(input_val){ var ret=false; if(input_val.match(match_url)){ ret=true; }
	var testval = 'https:/'+input_val;if(testval.match(match_url)){ ret=true; } return ret; }

function check_param_type_domain(input_val){ var ret=false; if(input_val.match(match_domain)){ ret=true; } return ret; }
function check_param_type_pageid(input_val){ var ret=false; if(input_val.match(match_pageid)){ ret=true; } return ret; }

function check_param_type_color(input_val){ var ret=false; if(input_val.match(match_colorcode)){ ret=true; } return ret; }

function check_param_length( input_val, min, max ) { var ret=false; if( input_val.length>=min && input_val.length<=max ) { ret=true;} return ret;}

function check_param_byte_max_length( input_val, max ) { var ret=false;
	var byte_length = getByteLength(input_val);
	 if( byte_length<=max ) { ret=true;} return ret;}

function check_param_type_date(input_val){ var ret=false; 
	var date_match = input_val.match(match_date);
	if( date_match ){
		if(ValidDate2(date_match[1],date_match[2],date_match[3])){
			ret=true; 
		}
	}
	return ret;
}
function check_param_type_time(input_val){ var ret=false; 
	var time_match = input_val.match(match_time);
	if( time_match ){
		var hour = Number(time_match[1].substring(0, 2));
		var min = Number(time_match[2].substring(0, 2));
		var sec = Number(time_match[3].substring(0, 2));
	
		if( hour >= 0 && hour <= 23 && min >= 0 && min <= 59 && sec >= 0 && sec <= 59 ){
			ret=true; 
		}
	}
	return ret;
}

function ValidDate2(i_year, i_month, i_day) {
	var ret = false;
	var year = Number(i_year.substring(0, 4));
	var month = Number(i_month.substring(0, 2))-1;
	var day = Number(i_day.substring(0, 2));
	if(year >= 0 && month >= 0 && month <= 11 && day >= 1 && day <= 31){
		var dt = new Date(year, month, day);
		if(isNaN(dt)){
		}else if(dt.getFullYear() == year && dt.getMonth() == month && dt.getDate() == day){
		  ret = true;
		}
	}
	return ret;
}
function check_param_type_datehm(input_val){
	var ret=false; 
	var date_match = input_val.match(match_datehm);
	if( date_match ){
		if(ValidDatehm(date_match[1],date_match[2],date_match[3],date_match[4],date_match[5])){
			ret=true;
		}
	}
	return ret;
}
function ValidDatehm(i_year, i_month, i_day, i_hour, i_min) {
	var ret = false;
	var year = Number(i_year.substring(0, 4));
	var month = Number(i_month.substring(0, 2))-1;
	var day = Number(i_day.substring(0, 2));
	var hour = Number(i_hour.substring(0, 2));
	var min = Number(i_min.substring(0, 2));
	if(year >= 0 && month >= 0 && month <= 11 && day >= 1 && day <= 31 && hour >= 0 && hour <= 23 && min >= 0 && min <= 59 ){
		var dt = new Date(year, month, day, hour, min);
		if(isNaN(dt)){
		}else if(dt.getFullYear() == year && dt.getMonth() == month && dt.getDate() == day && dt.getHours() == hour && dt.getMinutes() == min  ){
		  ret = true;
		}
	}
	return ret;
}
function check_param_type_datetime(input_val){
	var ret=false; 
	var date_match = input_val.match(match_datetime);
	if( date_match ){
		if(ValidDatehm(date_match[1],date_match[2],date_match[3],date_match[4],date_match[5],date_match[6])){
			ret=true;
		}
	}
	return ret;
}
function ValidDatehm(i_year, i_month, i_day, i_hour, i_min, i_sec) {
	var ret = false;
	var year = Number(i_year.substring(0, 4));
	var month = Number(i_month.substring(0, 2))-1;
	var day = Number(i_day.substring(0, 2));
	var hour = Number(i_hour.substring(0, 2));
	var min = Number(i_min.substring(0, 2));
	var sec = Number(i_sec.substring(0, 2));
	if(year >= 0 && month >= 0 && month <= 11 && day >= 1 && day <= 31 && hour >= 0 && hour <= 23 && min >= 0 && min <= 59 && sec >= 0 && sec <= 59 ){
		var dt = new Date(year, month, day, hour, min, sec);
		if(isNaN(dt)){
		}else if(dt.getFullYear() == year && dt.getMonth() == month && dt.getDate() == day && dt.getHours() == hour && dt.getMinutes() == min && dt.getSeconds() == sec ){
		  ret = true;
		}
	}
	return ret;
}

function input_check_param( input_tag, required, type ) {
	var ret = true;
	
	var input_val = $(input_tag).val();
	if( input_val.length > 0 ) {
		// type check
		switch( type ) {
		case 1:
			// 数値のみ
			ret = check_param_type_num( input_val );
			break;
		case 2:
			// email
			ret = check_param_type_email( input_val );
			break;
		case 3:
			// url
			ret = check_param_type_url( input_val );
			break;
		case 4:
			// date
			ret = check_param_type_date( input_val );
			break;
		case 5:
			// 数値+アルファベット
			ret = check_param_type_alphanum( input_val );
			break;
		case 6:
			// 数値+アルファベット+α
			ret = check_param_type_alphanumplus( input_val );
			break;
		default:
			break;
		}
	} else {
		if( required ) {
			ret = false;
		}
	}
	if( !ret ) {
		$(input_tag).addClass('input_error');
	}
	
	return ret;
}

function input_check_param_length( input_tag, required, type, min, max ) {
	var ret = input_check_param( input_tag, required, type );
	
	if( ret ) {
		var input_val = $(input_tag).val();
		if( input_val.length > 0 ) {
			ret = check_param_length( input_val, min, max );
			if( !ret ) {
				$(input_tag).addClass('input_error');
			}
		}
	}
	return ret;
}

function check_between_date(date1,date2){
	var ret=false; 
	var date_1 = date1.match(match_date);
	var date_2 = date2.match(match_date);
	if( date_1 && date_2 ){
		var year1 = Number(date_1[1].substring(0, 4));
		var month1 = Number(date_1[2].substring(0, 2))-1;
		var day1 = Number(date_1[3].substring(0, 2));
		var dt1 = new Date(year1, month1, day1);
		var year2 = Number(date_2[1].substring(0, 4));
		var month2 = Number(date_2[2].substring(0, 2))-1;
		var day2 = Number(date_2[3].substring(0, 2));
		var dt2 = new Date(year2, month2, day2);
		if( dt1 <= dt2 ) {
			ret = true;
		}
	}
	return ret;
}

function check_between_datehm(date1,date2){
	var ret=false; 
	var date_1 = date1.match(match_datehm);
	var date_2 = date2.match(match_datehm);
	if( date_1 && date_2 ){
		var year1 = Number(date_1[1].substring(0, 4));
		var month1 = Number(date_1[2].substring(0, 2))-1;
		var day1 = Number(date_1[3].substring(0, 2));
		var hour1 = Number(date_1[4].substring(0, 2));
		var min1 = Number(date_1[5].substring(0, 2));
		var dt1 = new Date(year1, month1, day1, hour1, min1);
		
		var year2 = Number(date_2[1].substring(0, 4));
		var month2 = Number(date_2[2].substring(0, 2))-1;
		var day2 = Number(date_2[3].substring(0, 2));
		var hour2 = Number(date_2[4].substring(0, 2));
		var min2 = Number(date_2[5].substring(0, 2));
		var dt2 = new Date(year2, month2, day2, hour2, min2 );
		if( dt1 < dt2 ) {
			ret = true;
		}
	}
	return ret;
}

function formatDate( date, format ) {
    format = format.replace(/yyyy/g, date.getFullYear());
    format = format.replace(/mm/g, ('0' + (date.getMonth() + 1)).slice(-2));
    format = format.replace(/dd/g, ('0' + date.getDate()).slice(-2));
    format = format.replace(/hh/g, ('0' + date.getHours()).slice(-2));
    format = format.replace(/ii/g, ('0' + date.getMinutes()).slice(-2));
    format = format.replace(/ss/g, ('0' + date.getSeconds()).slice(-2));
    
    return format;
};

function convertFileSize( filesize )
{
	var size = "B";
	if( filesize > 1024 ) {
		filesize = Math.round(filesize/1024);
		size = "KB";
	}
	if( filesize > 1024 ) {
		filesize = Math.round(filesize/1024);
		size = "MB";
	}
	if( filesize > 1024 ) {
		filesize = Math.round(filesize/1024);
		size = "GB";
	}

	filesize.toString().replace(/([0-9]{1,3})(?=(?:[0-9]{3})+$)/g, '$1,');

	return filesize + size;
}

function getByteLength( input_val ){
	input_val=(input_val == null)?"":input_val;
  return encodeURI(input_val).replace(/%../g, "*").length;
}

var match_image = /^image\/(.)+/;
function check_image_file( mime_type ) {
	var ret  = false;

	if( mime_type.match(match_image) ) {
		 ret=true;
	}

	return ret;
}

function check_pdf_file( mime_type ) {
	var ret  = false;

	if( mime_type == 'application/pdf' ) {
		 ret=true;
	}

	return ret;
}