//**********************************************************//
//***  使用承諾書を必ずお読みください ../../license.txt  ***//
//**********************************************************//
Validation.add('IsEmpty', '', function(v) {
   return  ((v == null) || (v.length == 0)); // || /^\s+$/.test(v));
});

Validation.add('unequal', '\u3054\u5165\u529B\u5185\u5BB9\u306E\u78BA\u8A8D\u304C\u53D6\u308C\u307E\u305B\u3093\u3002', {
   equalToField : 'confirmation'
});

Validation.addAllThese([
   ['required', '\u3053\u306E\u9805\u76EE\u306F\u5FC5\u9808\u4E8B\u9805\u3067\u3059\u3002', function(v) {
      return !Validation.get('IsEmpty').test(v);
   }],

   ['number', '\u3053\u306E\u9805\u76EE\u306F\u201C\u6570\u5B57\u201D\u306E\u307F\u306E\u3054\u5165\u529B\u3068\u306A\u308A\u307E\u3059\u3002', function(v) {
      return Validation.get('IsEmpty').test(v) || /^[\uFF10-\uFF190-9]+$/.test(v)
   }],

   ['number-han', '\u3053\u306E\u9805\u76EE\u306F\u201C\u534A\u89D2\u6570\u5B57\u201D\u306E\u307F\u306E\u3054\u5165\u529B\u3068\u306A\u308A\u307E\u3059\u3002', function(v) {
      return Validation.get('IsEmpty').test(v) || /^[0-9]+$/.test(v)
   }],

   ['digits', '\u3053\u306E\u9805\u76EE\u306F\u201C\u534A\u89D2\u6570\u5B57\u201D\u306E\u307F\u306E\u3054\u5165\u529B\u3068\u306A\u308A\u307E\u3059\u3002', function(v) {
      return Validation.get('IsEmpty').test(v) ||  !/[^\d]/.test(v);
   }],

   ['alpha', '\u3053\u306E\u9805\u76EE\u306F\u201C\u534A\u89D2\u30A2\u30EB\u30D5\u30A1\u30D9\u30C3\u30C8\u201D\u306E\u307F\u306E\u3054\u5165\u529B\u3068\u306A\u308A\u307E\u3059\u3002', function (v) {
      return Validation.get('IsEmpty').test(v) ||  /^[a-zA-Z]+$/.test(v)
   }],

   ['alphanum', '\u3053\u306E\u9805\u76EE\u306F\u201C\u534A\u89D2\u6570\u5B57\u201D\uFF0B\u201C\u534A\u89D2\u30A2\u30EB\u30D5\u30A1\u30D9\u30C3\u30C8\u201D\u306E\u307F\u306E\u3054\u5165\u529B\u3068\u306A\u308A\u307E\u3059\u3002', function(v) {
      return Validation.get('IsEmpty').test(v) ||  !/\W/.test(v)
   }],

   ['email', '\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u306E\u5F62\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002\u4F8B\uFF09abc@example.com', function (v) {
      return Validation.get('IsEmpty').test(v) || /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(v)
   }],

   ['tel', '\u96FB\u8A71\u756A\u53F7\u304C\u6B63\u3057\u304F\u5165\u529B\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002', function (v) {
      return Validation.get('IsEmpty').test(v) || /^0[1-9]-?[2-9]\d{3}-?\d{4}$|^0[1-9]\d{1}-?[2-9]\d{2}-?\d{4}$|^0[1-9]\d{2}-?[2-9]\d{1}-?\d{4}$|^0[1-9]\d{3}-?[2-9]-?\d{4}$|^0[5789]0-?\d{4}-?\d{4}$/.test(v)
   }],

   ['zip', '\u90F5\u4FBF\u756A\u53F7\u306E\u5F62\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002\u4F8B\uFF09123-4567', function (v) {
      return Validation.get('IsEmpty').test(v) || /^\d{3}\-?\d{4}$/.test(v)
   }],

   ['url', 'URL\u306E\u5F62\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002\u4F8B\uFF09http://www.example.com', function (v) {
      return Validation.get('IsEmpty').test(v) || /^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(v)
   }],

   ['date', '\u65E5\u4ED8\u3092\u6B63\u3057\u304F\u3054\u5165\u529B\u304F\u3060\u3055\u3044\u3002\u4F8B\uFF092010\u5E7408\u670824\u65E5', function(v) {
      if(Validation.get('IsEmpty').test(v)) return true;
      var regex = /^(\d{4})\u5E74(\d{2})\u6708(\d{2})\u65E5$/;
      if(!regex.test(v)) return false;
      var d = new Date(v.replace(regex, '$1/$2/$3'));
      return ( parseInt(RegExp.$2, 10) == (1+d.getMonth()) ) && 
      (parseInt(RegExp.$3, 10) == d.getDate()) && 
      (parseInt(RegExp.$1, 10) == d.getFullYear() );
   }],

   ['maney', '\u4FA1\u683C\u306E\u5F62\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002\u4F8B\uFF0912800\u5186 \uFF08\u30AB\u30F3\u30DE\u3042\u308A\u3067\u3082\u53EF 12,800\u5186\uFF09', function(v) {
      return Validation.get('IsEmpty').test(v) ||  /^\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)\u5186$/.test(v)
   }],

   ['check', '\u540C\u610F\u3059\u308B\u5834\u5408\u306F\u30C1\u30A7\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044\u3002', function(v,elm){
      return elm.options ? elm.selectedIndex > 0 : !Validation.get('IsEmpty').test(v);
   }],

   ['one-required', '\u3072\u3068\u3064\u306E\u30C1\u30A7\u30C3\u30AF\u306F\u5FC5\u9808\u3067\u3059\u3002', function (v,elm) {
      var p = elm.parentNode;
      var options = p.getElementsByTagName('INPUT');
      return $A(options).any(function(elm) {
         return $F(elm);
      });
   }],

   ['zenkaku', '\u3053\u306E\u9805\u76EE\u306F\u201C\u5168\u89D2\u6587\u5B57\u201D\u306E\u307F\u306E\u3054\u5165\u529B\u3068\u306A\u308A\u307E\u3059\u3002', function (v) {
      return Validation.get('IsEmpty').test(v) || /^[^ \uFF71-\uFF9D\uFF9E\uFF9F0-9A-Za-z!-/:-@\[-`{-~]+$/.test(v)
   }],

   ['zen-h', '\u3053\u306E\u9805\u76EE\u306F\u201C\u3072\u3089\u304C\u306A\u201D\u306E\u307F\u306E\u3054\u5165\u529B\u3068\u306A\u308A\u307E\u3059\u3002', function (v) {
      return Validation.get('IsEmpty').test(v) || /^[\u3041-\u3093\s\u3000]+$/.test(v)
   }],

   ['zen-k', '\u3053\u306E\u9805\u76EE\u306F\u201C\u5168\u89D2\u30AB\u30BF\u30AB\u30CA\u201D\u306E\u307F\u306E\u3054\u5165\u529B\u3068\u306A\u308A\u307E\u3059\u3002', function (v) {
      return Validation.get('IsEmpty').test(v) || /^[\u30A1-\u30F6\u30FC\s\u3000]+$/.test(v)
   }]

]);

var valid = new Validation(document.forms[0], {immediate : true, useTitles : true});

