/*---------------------------------------------------------------

 jQuery.validation.js - ver 1.2
 
 jQuery required (tested on version 1.2.6)
 encoding UTF-8

 Copyright (c) 2008 nori (norimania@gmail.com)
 5509 - http://moto-mono.net
 Licensed under the MIT
 
 Document Archive:
 http://moto-mono.net/2008/08/22/realtimeformvalidation.html

 $Update: 2009-01-09 21:30
 $Date: 2008-08-20 20:00
 
 ----------------------------------------------------------------*/

$.tip={create:function(d,e,i,j,b){var h=document.createElement("div");$(h).addClass("validationTip").attr("id",d+"_tip");var g=$("#"+d).offset();var a={};var f=function(l,k){a.top=l+j+g.top;a.left=k+b+g.left;};switch(i){case"top":f(0,0);break;case"bottom":f($("#"+d).height(),0);break;case"even":f(0,b);break;default:f(0,$("#"+d).width());break;}$(h).append("<div class='tipInner'>"+e+"</div><div class='tipRt'></div><div class='tipRb'></div>").hide().css({position:"absolute",top:a.top,left:a.left});$("body").append(h);},msg:function(b,a){$("#"+b+"_tip .tipInner").html(a);},fadeIn:function(a){$("#"+a+"_tip").fadeIn("normal");},fadeOut:function(a){$("#"+a+"_tip").fadeOut("normal");}};$.dialog={ids:{mat:"dlgmat",me:"dlg",top:"dlgtop",cont:"dlgcont",btm:"dlgbtm",close:"close"},create:function(e){var i=document.createElement("div");var a=document.createElement("div");var b=document.createElement("span");var h=$.dialog.ids;var g=function(){$(a).fadeTo(1,0).hide();$(i).fadeTo(1,0).hide();$("select:hidden,object:hidden").css("visibility","visible");};$("body").keyup(function(d){if(d.keyCode==27){g();}});$(i).attr("id",h.mat).hide().fadeTo(1,0).click(function(){g();});$(b).attr("id",h.close).click(function(){g();}).hover(function(){$(this).addClass("hover");},function(){$(this).removeClass("hover");});$(a).append("<div id='"+h.top+"'></div><div id='"+h.cont+"'><div><span></span></div></div><div id='"+h.btm+"'></div>");$("body").append(i).append(a);var f={width:$(a).width(),height:$(a).height()};$(a).attr("id",h.me).append(b);$("div span","#"+h.cont).html(e);$(a).css("display","inline");$("div",a).css("display","inline");$("div","#"+h.cont).css("display","block");if(typeof document.body.style.maxHeight=="undefined"){$(a).width($(a).width());}$(a).hide().fadeTo(1,0);},fadeIn:function(e,a){var b=$.extend({duration:"fast",matOpacity:0.6,dialogOpacity:0.9,closeTitle:"このメッセージを閉じる"},a);var g=$.dialog.ids;$("#"+g.cont+" div span").html(e);$("#"+g.me).show();var f={width:$("#"+g.me).width(),height:$("#"+g.me).height()};$("#"+g.me).css("display","block");$("div","#"+g.me).css("display","block");$("#"+g.close).attr("title",b.closeTitle);$("#"+g.mat).show().fadeTo(b.duration,b.matOpacity);$("#"+g.me).fadeTo(b.duration,b.dialogOpacity).css({"margin-left":"-"+f.width/2+"px"});if(typeof document.body.style.maxHeight!="undefined"){$("#"+g.me).css({"margin-top":"-"+(parseInt(f.height/2))+"px"});if(document.all){$("#"+g.top+",#"+g.btm).css("min-width",f.width);}}else{$("select,object").css("visibility","hidden");}}};$.validate={chk:{hankaku:/^[a-zA-Z0-9@\;\:\[\]\^\=\/\!\*\"\#\$\%\&\'\(\)\,\.\-\_\?\\\s]*$/,email:/^[a-zA-Z0-9_\.\-]+?@[A-Za-z0-9_\.\-]+\.+[A-Za-z\.\-\_]+$/,tel:/^[\d-]*$/,numonly:/^\d*$/,zip:/\d\d\d\-?\d\d\d\d/,check:function(a,b){return $("input:checked",b).length>0;},radio:function(a,b){return $("input:checked",b).length>0;},retype:function(a,e){var g=$("#"+$(e).attr("class").split("retype-")[1].split(/\b/)[0]);if(g.hasClass("group")){var f=$("input",g),a=$("input",e);for(var d=0,b=false;d<f.length;d++){if(f[d].value==a[d].value){b=true;}else{b=false;}}if(b){return true;}}else{return g.val()==a;}},required:function(a,d){if($(d).hasClass("group")){var b=0;$("input,select",d).each(function(){if($(this).val().length>0){b++;}});return a&&b==$("input,select",d).length;}else{return a&&a.length>0;}},min:function(a,b){var d=$(b).attr("class").match(/min(\d+)/)?RegExp.$1:null;if(a.length>0){return a.length>=d;}else{return false;}},max:function(a,b){var d=$(b).attr("class").match(/max(\d+)/)?RegExp.$1:null;if(a.length>0){return a.length<=d;}}},fn:function(h,g){msgs=$.extend({retype:"直前の項目と同じ内容を入力してください。",email:"正しいEメールアドレスを入力してください。",hankaku:"全角文字は使えません。",tel:"電話番号は半角数字で入力してください。",numonly:"数字のみで入力してください。",zip:"正しい郵便番号を入力してください。",min:"文字以上で入力してください。",max:"文字以内で入力してください。",check:"ひとつ以上を選択してください",radio:"いずれかを選択してください。",required:"必須項目です。",submit:"必須項目を正しく入力してください。"},g);var a=$(h).attr("value");var f=$(h).attr("class");if(f.match(/group/)){a="";var e=$("input,select",h);e.each(function(j){a+=$(this).val();if(f.match(/email/)&&j==0&&$(this).val().length>0){a+="@";}});}var d={isError:false,failed:function(i,k){var j=msgs[k];if(k.match(/min/)&&f.match(/min(\d+)/)){j=RegExp.$1+msgs[k];}else{if(k.match(/max/)&&f.match(/max(\d+)/)){j=RegExp.$1+msgs[k];}}$.tip.msg(i.id,j);$.tip.fadeIn(i.id);this.isError=true;}};var b=$.validate.chk;for(c in b){if(f.match(/required|check|radio/)){$("#"+h.id+"_tip").addClass("requiredTip");}if(f.match(c)){if(typeof(b[c])!="function"){if(a&&!a.match(b[c])){d.failed(h,c);break;}}else{if(!b[c](a,h)){d.failed(h,c);break;}}}}if(!d.isError){$.tip.fadeOut(h.id);}}};$.fn.validation=function(b){if($(this).length<1){return false;}var e=this,h=500;if(!b){var b={};}var d=$.extend({position:"left",top:0,left:15,AjaxZip2:false,zip:"zip",zip2:null,pref:"pref",addr1:"addr",addr2:null,addr3:null},b.extension);var a=$("input[type='text'],input[type='password'],textarea,select",e).filter(function(){return this.className.match(/required|retype|email|hankaku|numonly|tel|zip/);});var f=function(i){$.validate.fn(i,b.msgs);};a.each(function(){$.tip.create(this.id,"",d.position,d.top,d.left,h--);f(this);$(this).keyup(function(){f(this);}).blur(function(){f(this);});$(this).filter("select").change(function(){f(this);});});$(".group,.check,.radio").each(function(){var i=this;$.tip.create(this.id,"",d.position,d.top,d.left);f(this);if($(this).hasClass("group")){$("input",this).keyup(function(){f(i);}).blur(function(){f(i);});$("select",this).change(function(){f(i);});}else{$("input",this).click(function(){f(i);});}});$("div.validationTip").each(function(){$(this).css("zIndex",h--);});$.dialog.create(msgs.submit);$("*[type='submit'],input[type='image']",e).click(function(){if($("div.requiredTip:visible").length>0){$.dialog.fadeIn(msgs.submit,b.dialog);return false;}});if(d.AjaxZip2){var g=function(){AjaxZip2.zip2addr(d.zip,d.pref,d.addr1,d.zip2,d.addr2,d.addr3);setTimeout(function(){a.each(function(){f(this);});},10);};$("#"+(d.zip2!=null?d.zip2:d.zip)).keyup(function(){g();}).blur(function(){g();});}};
