//check form
$.validator.setDefaults({
	submitHandler: function(form) { 
		//CKEDITOR instances
		if (typeof(CKEDITOR) == 'undefined') {
			CKEDITOR = false;
		}
		if (CKEDITOR && CKEDITOR.instances)
		{
			for ( instance in CKEDITOR.instances ) {
				CKEDITOR.instances[instance].updateElement();
			}
		}
		
		form.submit();
		return false;
	}
});
$.validator.addMethod("ajax_user_name", function(value, element) { 
  var flag = 0;
  $.ajax({url:"http://dev-s9.shareee.jp/api-v1/?format=json&type=user_check",
          dataType:'json',
          data:{"username":value},
          async:false,
          success:function(data, status) {
            flag = data;
          }
         });
  return flag;
}, "すでに存在するユーザ名です");
$.validator.addMethod("ajax_user_email", function(value, element) { 
  var flag = 0;
  $.ajax({url:"http://dev-s9.shareee.jp/api-v1/?format=json&type=email_check",
          dataType:'json',
          data:{"email":value},
          async:false,
          success:function(data, status) {
            flag = data;
          }
         });
  return flag;
}, "すでに存在するアドレスです");

$.validator.addMethod("check_date", function(value, element) {
  var year = $("#birthday_YY").val();
  var month = $("#birthday_MM").val() - 1;
  var day = $("#birthday_DD").val();
  //alert(year + ":" + month + ":" + day);
  flag = true;
  var obj = new Date(year,month,day);
  if (isNaN(obj)) { flag = false; }
  else if(obj.getFullYear() == year && obj.getMonth() == month && obj.getDate() == day) { flag = true; }
  else { flag = false; }
  return this.optional(element) || flag;
}, "日付が正しくありません");

// JCBカードバリデーション
$.validator.addMethod("jcb_card_format", function(value, element) {
	  return this.optional(element) || /^[3]{1}?[5]{1}?[2-8]{1}?[0-9]{1}?[0-9]{12}$/.test(value);
	},"JCBカードではありません。");
	
//langrage
$.extend($.validator.messages, {
    required: "必須項目です",
//    required: "This field is required.",
	remote: "Please fix this field.",
	email: "正しいメールアドレスを入力してください",
	url: "Please enter a valid URL.",
	date: "Please enter a valid date.",
	dateISO: "Please enter a valid date (ISO).",
	number: "数字のみで入力してください.",
	digits: "数字のみで入力してください.",
	creditcard: "Please enter a valid credit card number.",
	equalTo: "パスワードと確認用パスワードが異なっています",
	accept: "Please enter a value with a valid extension.",
	maxlength: $.validator.format("Please enter no more than {0} characters."),
	minlength: $.validator.format("{0} 桁の半角数字で入力してください"),
	rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
	range: $.validator.format("Please enter a value between {0} and {1}."),
	max: $.validator.format("{0} 文字以内で入力してください"),
	min: $.validator.format("{0} 文字以上で入力してください")
});
$().ready(function() {
	// validate the comment form when it is submitted
	$(".myform").validate();
	$(".h_sub").validate();
	$(".r_sub").validate();
	$(".c_sub").validate();
	$(".sform").validate();
	$(".special_reg").validate(
        {
          groups :{birthday : "birthday_DD birthday_MM birthday_YY"},
          rules: {birthday_DD : "check_date", birthday_MM : "check_date", birthday_YY : "check_date", agree : "required", main_select : "required" },
          errorPlacement : function (error, element) {
            switch(element.attr('name')) {
              case "birthday_DD":
                error.insertAfter($('#birthday_errout'));
              case "birthday_MM":
                error.insertAfter($('#birthday_errout'));
              case "birthday_YY":
                error.insertAfter($('#birthday_errout'));
                break;
              case "agree":
                error.insertAfter($('#agreement'));
                break;
              case "main_select":
                error.insertAfter($('#main_select_err'));
                break;
              default:
                error.insertAfter(element);
            }
          }
        }
	);
});

