function KeyPressCheckInt(txtbox)
{
	if (event.keyCode < 48 || event.keyCode > 57) 
		event.returnValue = false;
}

function CheckIntFormat(textbox)
{
	return true;
	var myReg = /^[-0-9]*$/;
	var bValueNG = !myReg.test(textbox.value);
	if(textbox.value.length >0 && bValueNG )		
	{
		window.alert("半角数字で入力してください。");
		textbox.focus();
		return false;
	}
	return true;		
}
//ID:0000249 changed by han 2007-07-26
//0000249: 仕様変更：日付の月、日は1桁数字で入力できるようにする
/*
function ValidDate(dateStr) 
{
	if (dateStr=="")
		return true;
		
	// Checks for the following valid date formats:
	// YYYY/MM/DD
	var datePat = /^(\d{4})(\/)(\d{2})\2(\d{2})$/;
	var DateArray = dateStr.match(datePat);
	
	if (DateArray == null) 
	{
		return false;
	}
	
	wyear = dateStr.substr(0,4);
	wmonth = eval(dateStr.substr(5,2));
	wday = eval(dateStr.substr(8,2));
	
	if (mon_chk(wmonth))
	{
		
	}
	else
	{
		return false;
	}

	dd = daymonth(wyear,wmonth);
	if (wday > dd)
	{
		return false;
	}
	return true;
	
}
*/

function ValidDate(dateStr) 
{
	if (dateStr=="")
		return true;
		
	// Checks for the following valid date formats:
	// YYYY/MM/DD
	var datePat = /^((((1[6-9]|[2-9]\d)\d{2})\/(0?[13578]|1[02])\/(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})\/(0?[13456789]|1[012])\/(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})\/0?2\/(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))\/0?2\/29))$/;
	//alert("ok");
	var DateArray = dateStr.match(datePat);
	
	if (DateArray == null) 
	{
		return false;
	}
	
	return true;
	
}
//end of changed by han 2007-07-26

//ID:0000248 added by han 2007-07-26
//0000248: 仕様変更：発行年月日は00月又は00日が入力できるようにする 
//月、日は「0」を入力できるようにチェックする
function ValidDate2(dateStr) 
{
	if (dateStr=="")
		return true;
		
	// Checks for the following valid date formats:
	// YYYY/MM/DD
	var datePat = /^((((1[6-9]|[2-9]\d)\d{2})\/(0?[013578]|1[02])\/(0?[0-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})\/(0?[013456789]|1[012])\/(0?[0-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})\/0?2\/(0?[0-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))\/0?2\/29))$/;
	//alert("ok");
	var DateArray = dateStr.match(datePat);
	
	if (DateArray == null) 
	{
		return false;
	}
	
	return true;
	
}

/* 日付の範囲チェック */
function daymonth(year,month)
{
	day = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if(month==2 && leapyear(year)) return 29;
	return day[month-1];
}
/* うるう年のチェック */
function leapyear(year)
{
	return year%4==0 && (year%100!=0 || year%400==0);
}

/* 月の範囲チェック */
function mon_chk(month)
{
	if((month >= 1) && (month <= 12)) return true;
	return false;
}

function IsEmpty(aobj)
{
	var str = document.getElementsByName(aobj).value;
	alert(document.form[0].getElementsByName("Ukeyire_Year").value);
	if (trim(str)=="")
		return true;
	else
		return false;
}

function ComCheckForm(oForm)   
{   
    var els = oForm.elements;   
    for(var i=0;i<els.length;i++)   
    {
      //ID:0000196 changed by han 2007-07-03
      //0000196: firefoxで、図書登録画面の「書誌分類」と「書名」と「書名カナ」を入力ない時、チェックとチェックメッセージは間違います
        //if(els[i].check)   
        if(els[i].getAttribute('check')) 
        {   
        	//ID:0000196 changed by han 2007-07-03
           //0000196: firefoxで、図書登録画面の「書誌分類」と「書名」と「書名カナ」を入力ない時、チェックとチェックメッセージは間違います
            //var sReg = els[i].check;   
            var sReg = els[i].getAttribute('check');
            var sVal = GetValue(els[i]);   
            var reg = new RegExp(sReg,"i");   
            if(!reg.test(sVal))   
            {   
            	//ID:0000196 changed by han 2007-07-03
            	//0000196: firefoxで、図書登録画面の「書誌分類」と「書名」と「書名カナ」を入力ない時、チェックとチェックメッセージは間違います
                //alert(els[i].warning);   
                alert(els[i].getAttribute('warning'));   
                GoBack(els[i]);    
                return false;   
            }     
        }   
    }
    return true;   
}

//ID:0000250 added by han 2007-07-31
//0000250: 仕様変更：特殊文字の入力禁止 
function ComSpecCheck(txtStr)
{
	var str = txtStr.value;
	var s = "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]_`abcdefghijklmnopqrstu∞ｇョх援括窮欠合紫順~";
	for(var i=0;i<str.length;i++)
	{
		if (s.indexOf(str.charAt(i))>=0)
		{
			txtStr.focus();
	    return false;
		}
		
	}
	return true;
}
//end of added by han 2007-07-31
function toZenkaku(motoText){
	txt = "ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｧｨｩｪｫｬｭｮｯ､｡ｰ｢｣ﾞﾟ";
	zen = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ、。ー「」";
	zen+= "　　　　　ガギグゲゴザジズゼゾダヂヅデド　　　　　バビブベボ　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　";
	zen+= "　　　　　　　　　　　　　　　　　　　　　　　　　パピプペポ　　　　　　　　　　　　　　　　　　　　　　　　　　　　　";
	str = "";
	for (i=0; i<motoText.length; i++){
		c = motoText.charAt(i);
		cnext = motoText.charAt(i+1);
		n = txt.indexOf(c,0);
		nnext = txt.indexOf(cnext,0);
		if (n >= 0){
			if (nnext == 60){
				c = zen.charAt(n+60);
				i++;
			}else if (nnext == 61){
				c = zen.charAt(n+120);
				i++;
			}else{
				c = zen.charAt(n);
			}
		}
		if ((n != 60) && (n != 61)){
			str += c;
		}
	}
	return str;
}

function KanaCheck(value)
{
    var value = toZenkaku(value);
    var zen = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポー‐−：（）”“　／・． ./-:\"()0123456789０１２３４５６７８９abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ";
    
    for(var i =0;i<value.length;i++)
    {
        c = value.charAt(i);
        n = zen.indexOf(c,0);    
        if (n<0)
        {
            return false;
        }
    }
    
    return true;
}

//--2007.5.23 add by lu start 
//--空白のみ入力チェック 
function SpaceCheck(txtStr)   
{   
	var flag=0;
	for(var i=0; i<txtStr.length;i++)
	{
		var strNull = txtStr.substr(i,1);	
		if((strNull == " ")||(strNull == "　"))
		{
		 	flag= flag+1;
		}		
	}
	if(flag== txtStr.length)
	{
		return false;
	}
	return true;
}  

//--全角、半角入力チェック  true :全角文字ある;  false: 全角文字なし
function CheckIsZenkaku(value) 
{
	var flag=0;
	for (var i = 0; i < value.length; ++i) 
	{
		var code = value.charCodeAt(i);
		//  半角の時
		if((0 <= code && code <= 255) || (65382 <= code && code <= 65439))
		{ 
			flag= flag+1; 
		}
	}
	//全部半角の場合
	if(flag== value.length)  
	{
		return false;
	}
	return true;
}

//ID:0000129  add by lu start 2007-06-21
//--全角入力チェック  true :半角文字ある;  false: 半角文字なし
function CheckIsHankaku(value) 
{
	var flag=0;
	for (var i = 0; i < value.length; ++i) 
	{
		var code = value.charCodeAt(i);
		//ID:0000203 changed by lu start 2007-07-05
		/*
		//  半角の時
		if((0 <= code && code <= 255) || (65382 <= code && code <= 65439))
		*/
		//  半角の時(Enter健除く)
		if((0 <= code && code <= 255 && code!= 13 && code!= 10) || (65382 <= code && code <= 65439))
		//ID:0000203 changed by lu end 2007-07-05
		{ 
			flag= flag+1; 
		}
	}
	 
	//半角の時
	if(flag== 0)  	
	{
		return false;
	}
	return true;
}		
//ID:0000129  add by lu end 2007-06-21

//--大、小文字アルファベットチェック 
function AlphaCheck(txtStr)   
{
	var flag=0;
	for(var i=0; i<txtStr.length;i++)
	{
		var strNull = txtStr.substr(i,1);	
		if((strNull >= "A")&&(strNull <= "Z"))
		flag= flag+1;		
	}
	if(flag>0)
	return true;

	return false;
}
//--2007.5.23 add by lu end

function GetValue(el)   
{   
    var sType = el.type;   
    switch(sType)   
    {   
        case "text":   
        case "hidden":   
        case "password":   
        case "file":   
        case "textarea": return el.value;   
        case "checkbox":   
        case "radio": return GetValueChoose(el);   
        case "select-one":   
        case "select-multiple": return GetValueSel(el);   
    }   
    
    function GetValueChoose(el)   
    {   
        var sValue = "";   
        var tmpels = document.getElementsByName(el.name);   
        for(var i=0;i<tmpels.length;i++)   
        {   
            if(tmpels[i].checked)   
            {   
                sValue += "0";   
            }   
        }   
        return sValue;   
    }   
    
    function GetValueSel(el)   
    {   
        var sValue = "";   
        for(var i=0;i<el.options.length;i++)   
        {   
            if(el.options[i].selected && el.options[i].value!="")   
            {   
                sValue += "0";   
            }   
        }   
        return sValue;   
    }   
}   
  
function GoBack(el)   
{   
    var sType = el.type;   
    switch(sType)   
    {   
        case "text":   
        case "hidden":   
        case "password":   
        case "file":   
        //ID:0000196 changed by han 2007-07-03
        //0000196: firefoxで、図書登録画面の「書誌分類」と「書名」と「書名カナ」を入力ない時、チェックとチェックメッセージは間違います
        case "textarea": el.focus();//var rng = el.createTextRange(); rng.collapse(false); rng.select();   
        case "checkbox":   
        case "radio": var els = document.getElementsByName(el.name);els[0].focus();   
        case "select-one":   
        case "select-multiple":el.focus();   
    }   
} 

 /* /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
    charset = shift_jis

    +++ UTF8/16 ライブラリ +++


    LastModified : 2006-11/08
    
    Powered by kerry
    http://202.248.69.143/~goma/
    
    動作ブラウザ :: IE4+ , NN4.06+ , Gecko , Opera6+



    * [RFC 2279] UTF-8, a transformation format of ISO 10646
    ftp://ftp.isi.edu/in-notes/rfc2279.txt
    
    * [RFC 1738] Uniform Resource Locators (URL)
    ftp://ftp.isi.edu/in-notes/rfc1738.txt

    /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
    
    Usage:
    
    // 文字列を UTF16 (文字コード) へ
    utf16code_array = utf.unpackUTF16( my_string );

    // 文字列を UTF8 (文字コード) へ
    utf8code_array = utf.unpackUTF8( my_string );
    
    // UTF8 (文字コード) から文字列へ。 utf.unpackUTF8() したものを元に戻す
    my_string = utf.packUTF8( utf8code_array );

    // UTF8/16 (文字コード) を文字列へ
    my_string = utf.packChar( utfCode_array );
    
    // UTF16 (文字コード) から UTF8 (文字コード) へ
    utf8code_array = utf.toUTF8( utf16code_array );
    
    // UTF8 (文字コード) から UTF16 (文字コード) へ
    utf16code_array = utf.toUTF16( utf8code_array );



    // URL 文字列へエンコード
    url_string = utf.URLencode( my_string );

    // URL 文字列からデコード
    my_string = utf.URLdecode( url_string );

    /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ */
utf = new function()
{
    this.unpackUTF16 = function(_str)
    {
        var i, utf16=[];
        for (i=0; i<_str.length; i++) utf16[i] = _str.charCodeAt(i);
        return utf16;
    }
    
    this.unpackChar = function(_str) 
    {
    	var utf16 = this.unpackUTF16(_str);
    	var i,n, tmp = [];
    	for (n=i=0; i<utf16.length; i++) {
    		if (utf16[i]<=0xff) tmp[n++] = utf16[i];
    		else {
    			tmp[n++] = utf16[i] >> 8;
    			tmp[n++] = utf16[i] &  0xff;
    		}	
    	}
    	return tmp;
    }
    
    this.packChar  =
    this.packUTF16 = function(_utf16)
    {
        var i, str = "";
        for (i in _utf16) str += String.fromCharCode(_utf16[i]);
        return str;
    }

    this.unpackUTF8 = function(_str)
    {
       return this.toUTF8( this.unpackUTF16(_str) );
    }

    this.packUTF8 = function(_utf8)
    {
        return this.packUTF16( this.toUTF16(_utf8) );
    }
    
    this.toUTF8 = function(_utf16)
    {
        var utf8 = [];
        var idx = 0;
        var i, j, c;
        for (i=0; i<_utf16.length; i++)
        {
            c = _utf16[i];
            if (c <= 0x7f) utf8[idx++] = c;
            else if (c <= 0x7ff)
            {
                utf8[idx++] = 0xc0 | (c >>> 6 );
                utf8[idx++] = 0x80 | (c & 0x3f);
            }
            else if (c <= 0xffff)
            {
                utf8[idx++] = 0xe0 | (c >>> 12 );
                utf8[idx++] = 0x80 | ((c >>> 6 ) & 0x3f);
                utf8[idx++] = 0x80 | (c & 0x3f);
            }
            else
            {
                j = 4;
                while (c >> (6*j)) j++;
                utf8[idx++] = ((0xff00 >>> j) & 0xff) | (c >>> (6*--j) );
                while (j--) 
                utf8[idx++] = 0x80 | ((c >>> (6*j)) & 0x3f);
            }
        }
        return utf8;
    }
    
    this.toUTF16 = function(_utf8)
    {
        var utf16 = [];
        var idx = 0;
        var i,s;
        for (i=0; i<_utf8.length; i++, idx++)
        {
            if (_utf8[i] <= 0x7f) utf16[idx] = _utf8[i];
            else 
            {
                if ( (_utf8[i]>>5) == 0x6)
                {
                    utf16[idx] = ( (_utf8[i] & 0x1f) << 6 )
                                 | ( _utf8[++i] & 0x3f );
                }
                else if ( (_utf8[i]>>4) == 0xe)
                {
                    utf16[idx] = ( (_utf8[i] & 0xf) << 12 )
                                 | ( (_utf8[++i] & 0x3f) << 6 )
                                 | ( _utf8[++i] & 0x3f );
                }
                else
                {
                    s = 1;
                    while (_utf8[i] & (0x20 >>> s) ) s++;
                    utf16[idx] = _utf8[i] & (0x1f >>> s);
                    while (s-->=0) utf16[idx] = (utf16[idx] << 6) ^ (_utf8[++i] & 0x3f);
                }
            }
        }
        return utf16;
    }
    
    this.URLencode = function(_str)
    {
        return _str.replace(/([^a-zA-Z0-9_\-\.])/g, function(_tmp, _c)
            { 
                if (_c == "\x20") return "+";
                var tmp = utf.toUTF8( [_c.charCodeAt(0)] );
                var c = "";
                for (var i in tmp)
                {
                    i = tmp[i].toString(16);
                    if (i.length == 1) i = "0"+ i;
                    c += "%"+ i;
                }
                return c;
            } );
    }

    this.URLdecode = function(_dat)
    {
        _dat = _dat.replace(/\+/g, "\x20");
        _dat = _dat.replace( /%([a-fA-F0-9][a-fA-F0-9])/g, 
                function(_tmp, _hex){ return String.fromCharCode( parseInt(_hex, 16) ) } );
        return this.packChar( this.toUTF16( this.unpackUTF16(_dat) ) );
    }
}

function CheckInputNum(keys)
{
    var k = keys.keyCode;
    if (!(k==8 || k==9 || k==13 || (k>=37 && k<=40) || k==46 || (k>=48 && k<=57) || (k>=96 && k<=105)))
        return false;
}

