var Validator={check:function(g,e,b){var c;var f=this.rule;f.field=g;f.value=g.value;f.extra=b;if(!e||!e.match(/^!/)){c=f.input()}if(e&&!c&&f.value!=""){e=e.replace(/^!/,"");var h=e.split(/\s+/);for(var d=0,a;a=h[d];d++){a=a.replace(/([\d\-]+)?$/,"");c=f[a](RegExp.$1);if(c){break}}}if(c){this.baloon.open(g,c)}},submit:function(c){this.allclose(c);var b=new Array;for(var a=0,d;d=c[a];a++){if(d.onblur){d.onblur()}if(d.type=="submit"){b.push(d)}}for(var a=0,d,e;d=c[a];a++){if(d._validbaloon&&d._validbaloon.visible()){while(e=b.shift()){this.baloon.open(e,this.rule.submit())}return false}}return true},allclose:function(b){for(var a=0,c;c=b[a];a++){if(c._validbaloon){c._validbaloon.close()}}}};Validator.baloon={index:0,open:function(d,f){if(!d._validbaloon){var c=new this.element(d);c.create();d._validbaloon=c;if(d.type=="radio"||d.type=="checkbox"){for(var a=0,b;b=d.form[d.name][a];a++){addEvent(b,"focus",function(){c.close()})}}}d._validbaloon.show(f)},element:function(){this.initialize.apply(this,arguments)}};Validator.baloon.element.prototype={initialize:function(a){this.parent=Validator.baloon;this.field=a},create:function(){var i=this.field;var e=document.createElement("div");e.className="baloon";var d=Position.offset(i);var g=d.y-25;var c=d.x-20+i.offsetWidth;e.style.top=g+"px";e.style.left=c+"px";var j=this;addEvent(e,"click",function(){j.toTop()});var f=function(){j.close()};var h=document.createElement("a");h.appendChild(document.createTextNode("X"));h.setAttribute("href","javascript:void(0);");addEvent(h,"click",f);addEvent(i,"focus",f);var b=document.createElement("span");var a=document.createElement("div");a.appendChild(h);a.appendChild(b);e.appendChild(a);document.body.appendChild(e);this.box=e;this.msg=b},show:function(c){var b=this.field;this.msg.innerHTML=c;this.box.style.display="";this.toTop();if(b.type!="radio"&&b.type!="checkbox"){var a=new Array("#FFFF00");window.setTimeout(function(){if(a.length>0){b.style.backgroundColor=a.shift();window.setTimeout(arguments.callee,70)}},10)}},close:function(){this.box.style.display="none";this.field.style.backgroundColor=""},visible:function(){return(this.box.style.display=="")},toTop:function(){this.box.style.zIndex=++this.parent.index}};Validator.rule={msg:null,submit:function(){return this.msg.submit},input:function(){if(this.field.type=="radio"||this.field.type=="checkbox"){for(var a=0,b;b=this.field.form[this.field.name][a];a++){if(b.checked){return}}return this.msg.noselect}else{if(this.value==""){return(this.field.type=="select-one")?this.msg.noselect:this.msg.noinput}}},mail:function(){if(!this.value.match(/^[\x01-\x7F]+@((([-a-z0-9]+\.)*[a-z]+)|(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}))$/)){return this.msg.mail}},equal:function(){if(this.field.form[this.extra].value&&this.value!=this.field.form[this.extra].value){return this.msg.unequal}},alphabet:function(){if(!this.value.match(/^[a-zA-Z\-\d]+$/)){return this.msg.alphabet}},kana:function(){for(var a=0;a<this.value.length;a++){if(this.value.charAt(a)==" "||this.value.charAt(a)=="\u3000"){continue}if(this.value.charAt(a)<"\u30A1"||this.value.charAt(a)>"\u30F6"){return this.msg.kana}}},count:function(a){return this._range(a,this.value.length,this.msg.count)},num:function(a){if(!this.value.match(/^[\d]+$/)){return this.msg.num.nonumber}return this._range(a,parseInt(this.value),this.msg.num)},check:function(a){var c=0;for(var b=0,d;d=this.field.form[this.field.name][b];b++){if(d.checked){c+=1}}return this._range(a,c,this.msg.check)},_range:function(d,f,g){if(!d){return}var b="";var h=(" "+d).split(/\-/);var e=parseInt(h[0])||0;var a=parseInt(h[1])||0;if(f!=e&&/^\d+$/.test(d)){b=g.unequal}else{if(e==0&&f>a){b=g.too_big}else{if(a==0&&f<e){b=g.too_small}else{if(e>0&&a>0&&(f<e||f>a)){b=g.outofrange}}}}return b.replace(/%1/g,e).replace(/%2/g,a)}};Validator.lang={ja:{noselect:"選択して下さい",noinput:"必須入力です",unequal:"入力文字が違います",submit:"入力エラーがあります",mail:"メールアドレスの形式が不正です",alphabet:"アルファベット、数字、- 以外は入力出来ません",kana:"全角カタカナで入力して下さい",count:{unequal:"%1文字で入力して下さい",too_big:"%2文字以内で入力して下さい",too_small:"%1文字以上で入力して下さい",outofrange:"%1から%2文字の間で入力して下さい"},num:{nonumber:"数値で入力して下さい",unequal:"%1で入力して下さい",too_big:"%2以下の数値を入力して下さい",too_small:"%1以上の数値を入力して下さい",outofrange:"%1から%2の間で入力して下さい"},check:{unequal:"チェックは%1個にして下さい",too_big:"チェックは%2個以下にして下さい",too_small:"チェックは%1個以上して下さい",outofrange:"チェックは%1個から%2個の間にして下さい"}}};Validator.rule.msg=Validator.lang.ja;var addEvent=(window.addEventListener)?(function(c,a,b){c.addEventListener(a,b,false)}):(window.attachEvent)?(function(c,a,b){c.attachEvent("on"+a,b)}):(function(c,a,b){c["on"+a]=b});var Position={offset:function(b){var a={};a.x=this.getOffset("Left",b);a.y=this.getOffset("Top",b);return a},getOffset:function(b,a){if(!a.offsetParent||a.offsetParent.tagName.toLowerCase()=="body"){return a["offset"+b]}else{return a["offset"+b]+this.getOffset(b,a.offsetParent)}}};
