function AddChecker( name, type, errmes ) {
    this.type[name] = type;
    this.errmes[name] = errmes;
}

function Checker( ) {
    var at = document[this.id];
    var str;
    var error = "";
    var pat;
    for( var i in this.type ) {
	str = at[i].value;
	if( this.type[i] == "exist" ) {
	    if( str == "" ) {
		error += (this.errmes[i] + "\n");
	    }
	} else {
	    if( this.type[i] == "keyword" ) {
		pat = new RegExp( "^[0-9a-zA-Z]+$" );
	    } else if( this.type[i] == "password" ) {
		pat = new RegExp( "^[!-~]{7,8}$" );
	    } else if( this.type[i] == "zip" ) {
		pat = new RegExp( "^\\d{3}-\\d{4}$" );
	    } else if( this.type[i] == "phone" ) {
		pat = new RegExp( "^[0-9-]+$" );
	    } else if( this.type[i] == "number" ) {
		pat = new RegExp( "^[+-]?\\d+(\.\\d*)?$" );
	    } else if( this.type[i] == "integer" ) {
		pat = new RegExp( "^[+-]?\\d+$" );
	    } else if( this.type[i] == "natural" ) {
		pat = new RegExp( "^\\d+$" );
	    } else {
		pat = new RegExp( this.type[i] ); 
	    }
	    if( ! pat.test( str ) ) {
		error += (this.errmes[i] + "\n");
	    }
	}
    }
    if( error == "" ) {
	return true;
    } else {
	alert( "入力が誤っています。\n\n" + error );
	return false;
    }
}

function FormChecker( id ) {
    this.id = id;
    this.add = AddChecker;
    this.check = Checker;
    this.type = new Object();
    this.errmes = new Object();
}



