/* 伊丹産業情報DB用共通JavaScript */

//テキストに入力された文字数、種類を判断する
// 引数：ctype	文字種類（'z'：全角、'h'：半角、'n'：数値、 'f':ファイル選択）
//		 objtxt	テキストオブジェクト
//		 itemname	項目名
//		 empty	空文字許可（0：許可、1：不許可）
//		 mojinum	入力可能文字数
function CheckMoji(ctype, objtxt, itemname, empty, mojinum) {
	switch(ctype)
	{
		case 'z':
			if(!JudgeKanji(objtxt)){
				alert(itemname + 'は全角で入力してください。');
				return false;
			}
			mojinum2 = mojinum * 2;
			if(textarealen(objtxt.value) > mojinum2){
				alert(itemname + 'は' + mojinum + '文字以内で入力してください。');
				return false;
			}
			break;
		case 'h':
			if(!ZHcheck(objtxt)){
				alert(itemname + 'は半角で入力してください。');
				return false;
			}
			if(textarealen(objtxt.value) > mojinum){
				alert(itemname + 'は' + mojinum + '文字以内で入力してください。');
				return false;
			}
			break;
		case 'n':
			if(!ZHcheck(objtxt) || isNaN(objtxt.value)){
				alert(itemname + 'は半角数値で入力してください。');
				return false;
			}
			if(textarealen(objtxt.value) > mojinum){
				alert(itemname + 'は' + mojinum + '桁以内で入力してください。');
				return false;
			}
			break;
		case 't':
			if(objtxt.value != ''){
				if(!objtxt.value.match(/[0-2][0-9]:[0-5][0-9]/)){
					alert(itemname + 'はhh:mmの24時間形式で入力してください。');
					return false;
				}
			}
			break;
		case 'f':
			var tJpg, tGif;
			plen = objtxt.value.length;
			if(plen == 0) break;
			tJpg = objtxt.value.substr(plen - 5 + 1);
			tGif = objtxt.value.substr(plen -5 + 1);
			if(tJpg.toLowerCase() != '.jpg' && tGif.toLowerCase() != '.gif'){
				alert(itemname + 'はJPGかGIFを指定してください。');
				return false;
			}
			break;
		case 'a':
			if(!Judgehankana_IE(objtxt.value)){
				alert(itemname + 'は半角カナ、シングルクォーテーションは入力しないでください。');
				return false;
			}
			mojinum2 = mojinum * 2;
			if(textarealen(objtxt.value) > mojinum2){
				alert(itemname + 'は' + mojinum + '文字以内で入力してください。');
				return false;
			}
			break;
	}
	
	if(empty == 1 && objtxt.value == ''){
		alert(itemname + 'に入力してください。');
		return false;
	}
	
	return true;
}

//入力バイト数を返す
function GetLength(obj){ 
  var i,cnt = 0;
  for(i=0; i<obj.length; i++)
    if (escape(obj.charAt(i)).length >= 4 ) cnt+=2; else cnt++;
  return cnt;
}

function ZHcheck(obj){
    od = obj.value ;
    if(GetLength(od) > od.length){	//全角
		return false;
    }else{			//半角
    	return true;
    }
}



//TEXTAREAの文字数
function textarealen(val) {
	var len;
	var i=0;
	var escval;
	escval=escape(val);
	len=escval.length;

	for(; (i=escval.indexOf('%', i))>-1; i++) {
	len -= escval.charAt(i+1)=='u' ? 4 : 2; // '%uXXXX'を2バイト、 '%XX'を1バイトとして数える
	}
	return(len);
}


/**********************************************************************
*  処理 :漢字判定のセット                                            *
*      true    : "　"　以上                                          *
**********************************************************************/
function JudgeKanji( Object ){

        var Count ;
        var String ;

        String = Object.value ;

        // Explorerの時、
        if( navigator.appName == "Microsoft Internet Explorer" ){
                return JudgeKanji_IE( String ) ;
        }
        // Netscapeの時、
        else{
                return JudgeKanji_Netscape( String ) ;
        }
}

function JudgeKanji_IE( String ){

        var Count ;
        var Letter ;

        for( Count=0; Count < String.length; Count++ ){
                Letter = String.charAt( Count ) ;
                if( Letter < "　"  && Letter != '\n' && Letter != '\r' )
                        return false ;
        }

        return true ;
}

function JudgeKanji_Netscape( String ){

        var Count ;
        var Letter ;
        var kl ;

        kl = Klength( String ) ;

        for( Count=0; Count < kl; Count++){
               Letter = KcharAt( String,Count );
                if( Letter < "　"  && Letter != '\n' && Letter != '\r' )
                        return false ;
        }

        return true ;
}

function Judgehankana_IE( String ){

        var Count ;
        var Letter ;
		
		if( String.match(/'/) ) {
			return false;
		}

        for( Count=0; Count < String.length; Count++ ){
                Letter = String.charCodeAt( Count ) ;
                if( 65393 <= Letter && Letter <= 65437)
                        return false ;
        }
        return true ;
}

function Klength( String ){

var Count ;
var Length ;
var Letter, LetterBin ;

Length = 0 ;

for( Count=0; Count < String.length; Count++ ){
Letter = escape( String.charAt( Count ) ) ;
LetterBin = eval( "0x"+Letter.charAt( 1 ) ) ;

if ((LetterBin==8) || (LetterBin==9) || (LetterBin==14) || (LetterBin==15) ) Count++ ;

Length++ ;
}

return Length ;
}

// 指定１文字取得(Shift JIS)
function KcharAt( String,Position ){

var Length ;
var Count ;
var CutString ;
var Letter, LetterBin ;

Length = 0 ;

for( Count=0; Count < String.length; Count++ ){
CutString = String.charAt( Count ) ;

Letter = escape( CutString ) ;
LetterBin = eval( "0x"+Letter.charAt( 1 ) ) ;

if( (LetterBin==8) || (LetterBin==9) || (LetterBin==14) || (LetterBin==15) ){
CutString = CutString+String.charAt( Count+1 ) ;
Count++ ;
}

if( Position==Length ) break ;

Length++ ;
}

return CutString ;
}