/*-------------------------------------------------------------------------------*/
/* ファイル名	common.js
/* 機能概要		共通関数
/*   作成日		2008.6.19
/*-------------------------------------------------------------------------------*/


/*-------------------------------------------------------------------------------*/
/* 概要
/*		携帯ドメインチェック
/* param
/* 	string		domainStr	対象文字列
/* return
/*		bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function checkDomain(domainStr){
	if(!checkMail(domainStr)) {
		return false;
	}
	if(domainStr.search(/[@]/)==-1){
		return false;
	} else {
		num = domainStr.search(/[@]/);
		domainStr = domainStr.substring(num+1);
	}
	var errDomain   = new Array("docomo.ne.jp", "ezweb.ne.jp", "d.vodafone.ne.jp", "h.vodafone.ne.jp", "t.vodafone.ne.jp", "c.vodafone.ne.jp", "k.vodafone.ne.jp", "r.vodafone.ne.jp", "n.vodafone.ne.jp", "s.vodafone.ne.jp", "q.vodafone.ne.jp", "softbank.ne.jp", "pdx.ne.jp", "yy.pdx.ne.jp");

	var flg = false;

	for(i=0; i < errDomain.length; i++){
		if(errDomain[i] == domainStr)
			flg = true;
	}
	return flg;
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		日付妥当性チェック
/* param
/* 	string	y			年
/* 	string	m			月
/* 	string	d			日
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function checkDateValid(y, m, d){
	if (y=="" || m=="" || d=="") {
		return false;
	} else {
		y = parseInt(y,10);
		m = parseInt(m,10);
		d = parseInt(d,10);

		var lday = getLastDay(y, m);

		if (y > 9999) {
			return false;
		}
		if (lday == 0 || d < 1 || d > lday) {
			return false;
		}
	}
	return true;
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		月の最終日取得
/* param
/* 	string	y			年
/* 	string	m			月
/* return
/*	string	lday		月の最終日
/*-------------------------------------------------------------------------------*/
var daytbl1 = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var daytbl2 = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
function getLastDay(y, m) {
  var lday = 0;
  if(y >= 1900 && m > 0 && m < 13){
	if((y % 4 == 0 && y % 100 != 0) || y % 400 == 0){
	  lday = daytbl2[m-1];
	}else{
	  lday = daytbl1[m-1];
	}
  }
  return lday;
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		半角英数チェック
/* param
/* 	string	strIn		対象文字列
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function isHanEisu( strIn ){
  if( strIn == null || strIn == "" ) {
	return true ;
  } else if(strIn.search(/[^0-9a-z]/)!=-1) {
	return false;
  }
  return true;
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		メールチェック
/* param
/* 	string	emailStr	対象文字列
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function checkMail(emailStr) {
	//形式パターン
	var emailPat   = /^(.+)@(.+)$/;
	//使用可能な文字列
	var strPat    = /^[a-zA-Z0-9\._-]+$/;
	var eMailArray = emailStr.match(emailPat);
	if (eMailArray == null) {
		return false;
	}
	var user      = eMailArray[1];
	var dom       = eMailArray[2];
	//ユーザ名部分のチェック
	if (user.match(strPat) == null){
		return false;
	}
	//ドメイン部分のチェック
	if (dom.match(strPat) == null|| dom.indexOf('.') == -1){
		return false;
	}
	return true;
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		全角かなチェック
/* param
/* 	string	dstText		対象文字列
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
var zan = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉゃゅょゐゑっ";
function checkIsZenkaku(dstText){
	for(Fjc_idx=0; Fjc_idx<dstText.length; Fjc_idx++) {
		if(zan.indexOf(dstText.charAt(Fjc_idx),0) < 0)
           return false;
	}
	return true;
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		ラジオボタンが選択されているかをチェック
/* param
/* 	string	obj			対象オブジェクト
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function checkRadioSelect(obj){
    IsChecked = false;
    if (obj.length) {
        for (i = 0; i < obj.length; i++) {
            if (obj[i].checked) {
                IsChecked = true;
            }
        }
    } else {
        if (obj.checked) {
            IsChecked = true;
        }
    }
    return IsChecked;
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		必須チェック。空白もNG
/* param
/* 	string	str	対象文字列
/*      string  target  比較文字列
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function checkInput(str, target){
	if( str == null || Trim(str) == "" || (target != undefined && str == target)){
		return false;
	}

	return true;
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		最大文字数チェック
/* param
/* 	string	str			対象文字列
/* 	string	mojisu		文字数
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function chkMaxLength(str, mojisu) {
  if (str.length > mojisu) {
	return false;
  }
  return true;
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		最小文字数チェック
/* param
/* 	string	str			対象文字列
/* 	string	mojisu		文字数
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function chkMinLength(str, mojisu) {
  if (str.length < mojisu) {
	return false;
  }
  return true;
}


/*-------------------------------------------------------------------------------*/
/* 概要
/*		全角カナチェック
/* param
/* 	string	dstText		対象文字列
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
var zanKana = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォャュョッ";
function checkIsZenkakuKana(dstText){
	for(Fjc_idx=0; Fjc_idx<dstText.length; Fjc_idx++) {
		if(zanKana.indexOf(dstText.charAt(Fjc_idx),0) < 0)
           return false;
	}
	return true;
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		右の空白削除
/* param
/* 	string	strTemp		対象文字列
/* return
/*	string	strReturn	編集後文字列
/*-------------------------------------------------------------------------------*/
function RTrim(strTemp) {
    var nLoop = 0;
    var strReturn = strTemp;
    while (nLoop < strTemp.length)
    {
        if ((strReturn.substring(strReturn.length - 1, strReturn.length) == " ") || (strReturn.substring(strReturn.length - 1, strReturn.length) == "　"))
        {
            strReturn = strTemp.substring(0, strTemp.length - (nLoop + 1));
        }
        else
        {
            break;
        }
        nLoop++;
    }
    return strReturn;
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		左の空白削除
/* param
/* 	string	strTemp		対象文字列
/* return
/*	string	strReturn	編集後文字列
/*-------------------------------------------------------------------------------*/
function LTrim(strTemp) {
    var nLoop = 0;
    var strReturn = strTemp;
    while (nLoop < strTemp.length)
    {
        if ((strReturn.substring(0, 1) == " ") || (strReturn.substring(0, 1) == "　"))
        {
            strReturn = strTemp.substring(nLoop + 1, strTemp.length);
        }
        else
        {
            break;
        }
        nLoop++;
    }
    return strReturn;
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		前後の空白削除
/* param
/* 	string	strTemp		対象文字列
/* return
/*	string	strReturn	編集後文字列
/*-------------------------------------------------------------------------------*/
function Trim(strTemp) {
    var strReturn = strTemp;
    strReturn = RTrim(strReturn);
    strReturn = LTrim(strReturn);
    return strReturn;
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		プラスチェック
/* param
/* 	string	strIn		対象数字
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function isPlus( strIn ){
  if( strIn < 0 ) {
	return false ;
  }
  return true;
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		数値の最小チェック
/* param
/* 	string	strIn		対象数字
/* 	string	min			最少値
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function checkNumMin( strIn,min ){
  if( strIn < min ) {
	return false ;
  }
  return true;
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		商のあまりが0のチェック
/* param
/* 	string	strIn		対象数字
/* 	string	mod			最少値
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function checkModZero( strIn,mod ){
  if( strIn % mod != 0 ) {
	return false ;
  }
  return true;
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		日付の大小チェック
/* param
/* 	string	y1			対象年月日1 年
/* 	string	m1			対象年月日1 月
/* 	string	d1			対象年月日1 日
/* 	string	y2			対象年月日2 年
/* 	string	m2			対象年月日2 月
/* 	string	d2			対象年月日2 日
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function isPassed(y1, m1, d1, y2, m2, d2){
	d1 = new Date(y1,m1,d1)
	d2 = new Date(y2,m2,d2)
	if(d1 <= d2){
		return true;
	}else{
		return false;
	}
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		URLチェック
/* param
/* 	string	str			対象文字列
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function checkURL(str){
	if (str.match(/(http|ftp):\/\/[!#-9A-~]+\.+[a-z0-9]/i)) {
		return true;
	}else{
		return false;
	}
}


/*-------------------------------------------------------------------------------*/
/* 概要
/*		URLチェック2
/*			http://		=> OK
/*			文末の/		=> NG
/* param
/* 	string	str			対象文字列
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function checkURL2(str){
	// http://のチェック
	if (str.match(/(http|ftp):\/\/[!#-9A-~]+\.+[a-z0-9]/i)) {
		// 文末の/のチェック
		if (str.substring(str.length - 1, str.length) != "/") {
			return true;
		}

	} else {
		return false;
	}

}


/*-------------------------------------------------------------------------------*/
/* 概要
/*		URLチェック3
/*			http://		=> NG
/*			文頭の/		=> OK
/* param
/* 	string	str			対象文字列
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function checkURL3(str){
	// http://のチェック
	if (str.match(/(http|ftp):\/\/[!#-9A-~]+\.+[a-z0-9]/i)) {
		return false;
	} else {
		// 文当の/チェック
		if (str.substring(0, 1) == "/") {
			return true;
		}
	}

}


/*-------------------------------------------------------------------------------*/
/* 概要
/*		全角チェック
/* param
/* 	string	str			対象文字列
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function checkZenkaku(str){
	for(i=0;i<str.length;i++){
		if(!escape(str.charAt(i)).length>=4){
			return false;
		}
	}
	return true;
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		画像の拡張子チェックjs
/* param
/* 	string	category	対象文字列
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function checkPicture(category){
	if(category.search(/[.]/)==-1){
		return false;
	} else {
		num = category.search(/[.]/);
		categoryStr = category.substring(num+1);
	}
    var categoryArr  = new Array("gif","GIF","jpg","JPG","bmp","BMP","png","PNG");
	var flg = false;
    for(i=0; i < categoryArr.length; i++){
        if(categoryArr[i] == categoryStr) {
            flg = true;
		}
    }
    return flg;
}
/*-------------------------------------------------------------------------------*/
/* 概要
/*		金額チェック
/* param
/* 	string	strIn		対象文字列
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function isPrice( strIn ){
  if( strIn == null || strIn == "" ) {
	return true ;
  } else if(strIn.search(/[^0-9０-９,]/)!=-1) {
	return false;
  }
  return true;
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		クッキー保存
/*		setCookie(クッキー名, クッキーの値,ドメイン);
/* param
/* 	string	strIn		対象文字列
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function setXpidCookie(cookie_name,value,domain){
	var keepTime = 35 * 1000 * 60 * 60 * 24; // 保存期間 35日
	var day      = new Date();

	day.setTime(day.getTime() + keepTime);
	document.cookie = cookie_name + '=' + value + ';expires='+ day.toGMTString() +';domain='+domain+';path=/';


/*	document.cookie = cookie_name + '=' + value + ';expires=0;domain='+domain+';path=/';*/
/*	document.cookie = cookie_name + '=' + escape(value) + ';expires=' + day.toGMTString();*/
/*	document.cookie = cookie_name + '=' + value + ';expires=' + day.toGMTString()+';domain=sf-dev.jp;path=/';*/

}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		初期値を削除
/* param
/* 	string	obj			対象オブジェクト
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function deleteDefaults(elem){
  if(elem.defaultValue == elem.value){
    elem.value = "";
    elem.style.color = "#000000"
  }
}

/*-------------------------------------------------------------------------------*/
/* 概要
/*		値が入力されてなかったら初期値を入力
/* param
/* 	string	obj			対象オブジェクト
/* return
/*	bool	true/false	OK/NG
/*-------------------------------------------------------------------------------*/
function insertDefaults(elem){
  if(elem.value == ""){
    elem.value = elem.defaultValue;
    elem.style.color = "#999999";
  }
}
