/* -----------------------------------------------------------------------*/
function AddEvent(targetObj, eventName, eventHandler) { 
    if (! targetObj){ return; }
    if (document.addEventListener){ 
        targetObj.addEventListener(eventName, eventHandler, false); 
        return; 
    } 
    if (document.attachEvent){ 
        targetObj.attachEvent("on"+eventName, eventHandler); 
    } 
} 
/* -----------------------------------------------------------------------*/ 
document.getElementsByClassName = function (className) { 
    var i, j, eltClass; 
    var AllObj = document.getElementsByTagName ? document.getElementsByTagName("*") : document.all; 
    var ClassObj = new Array(); 
    for (i = 0; i < AllObj.length; i++) { 
        eltClass = AllObj[i].className.split(/\s+/); 
        for (j = 0; j < eltClass.length; j++) { 
            if (eltClass[j] == className) { 
                ClassObj.push(AllObj[i]); 
                break; 
            } 
        } 
    } 
    return ClassObj; 
}
AddEvent(window, "load", function() {

    AddEvent($('name'), "blur", function(){
        jsInputCheckStr('name', 40, _msg_name_error, _msg_name_length_error);
    });
    AddEvent($('kana'), "blur", function(){
        jsInputCheckStr('kana', 40, _msg_kana_error, _msg_kana_length_error);
    });
    AddEvent($('sex1'), "click", function(){
        jsInputCheckRadio('sex', 'sex_error', _msg_sex_error);
    });
    AddEvent($('sex2'), "click", function(){
        jsInputCheckRadio('sex', 'sex_error', _msg_sex_error);
    });
    AddEvent($('age'), "blur", function(){
        jsInputCheckNum('age', _msg_age_error, _msg_age_format_error , _msg_age_length_error );
    });
    AddEvent($('pref'), "blur", function(){
        jsInputCheckPref('pref', _msg_pref_error );
    });
    AddEvent($('tel'), "blur", function(){
        jsInputCheckTels('tel', 'tel_mobile', _msg_tel_error, _msg_tel_format_error , 40 , _msg_tel_length_error );
        jsInputCheckSelectTel('tel', 'tel_mobile', _msg_select_tel_value_error);
    });
    AddEvent($('tel_mobile'), "blur", function(){
        jsInputCheckTels('tel_mobile', 'tel', _msg_tel_error, _msg_tel_format_error , 40 , _msg_tel_length_error );
        jsInputCheckSelectTel('tel', 'tel_mobile', _msg_select_tel_value_error);
    });
    AddEvent($('email'), "blur", function(){
        jsInputCheckMails('email', 'email_mobile', _msg_mail_error, _msg_mail_format_error, 80 , _msg_mail_length_error );
    });
    AddEvent($('email_mobile'), "blur", function(){
        jsInputCheckMails('email_mobile', 'email', _msg_mail_error, _msg_mail_format_error, 80 , _msg_mail_length_error);
    });
    AddEvent($('select_tel1'), "click", function(){
        jsInputCheckRadio('select_tel', 'select_tel_error', _msg_select_tel_error);
        jsInputCheckTels('tel', 'tel_mobile', _msg_tel_error, _msg_tel_format_error , 40 , _msg_tel_length_error );
        jsInputCheckTels('tel_mobile', 'tel', _msg_tel_error, _msg_tel_format_error , 40 , _msg_tel_length_error );
        jsInputCheckSelectTel('tel', 'tel_mobile', _msg_select_tel_value_error);
    });
    AddEvent($('select_tel2'), "click", function(){
        jsInputCheckRadio('select_tel', 'select_tel_error', _msg_select_tel_error);
        jsInputCheckTels('tel', 'tel_mobile', _msg_tel_error, _msg_tel_format_error , 40 , _msg_tel_length_error );
        jsInputCheckTels('tel_mobile', 'tel', _msg_tel_error, _msg_tel_format_error , 40 , _msg_tel_length_error );
        jsInputCheckSelectTel('tel', 'tel_mobile', _msg_select_tel_value_error);
    });
    AddEvent($('comment'), "blur", function(){
        jsInputCheckStrLength('comment', 1000, _msg_comment_length_error);
    });
});

function jsSubmitCheck(form_name) {

    var _result_flg = true;
    var _hash = "";

    if (! jsInputCheckStr('name', 40, _msg_name_error, _msg_name_length_error)){
        if (_hash == "") _hash = "name";
        _result_flg = false;
    }
    if (! jsInputCheckStr('kana', 40, _msg_kana_error, _msg_kana_length_error)){
        if (_hash == "") _hash = "kana";
        _result_flg = false;
    }
    if (! jsInputCheckRadio('sex', 'sex_error', _msg_sex_error)){
        if (_hash == "") _hash = "sex1";
        _result_flg = false;
    }
    if (! jsInputCheckNum('age', _msg_age_error, _msg_age_format_error , _msg_age_length_error)){
        if (_hash == "") _hash = "age";
        _result_flg = false;
    }
    if (! jsInputCheckPref('pref', _msg_pref_error )){
        if (_hash == "") _hash = "pref";
        _result_flg = false;
    }
    if (! jsInputCheckTels('tel', 'tel_mobile', _msg_tel_error, _msg_tel_format_error , 40 , _msg_tel_length_error)){
        if (_hash == "") _hash = "tel";
        _result_flg = false;
    }
    if (! jsInputCheckTels('tel_mobile', 'tel', _msg_tel_error, _msg_tel_format_error , 40 , _msg_tel_length_error)){
        if (_hash == "") _hash = "tel_mobile";
        _result_flg = false;
    }
    if (! jsInputCheckMails('email', 'email_mobile', _msg_mail_error, _msg_mail_format_error , 80 , _msg_mail_length_error)){
        if (_hash == "") _hash = "email";
        _result_flg = false;
    }
    if (! jsInputCheckMails('email_mobile', 'email', _msg_mail_error, _msg_mail_format_error , 80 , _msg_mail_length_error)){
        if (_hash == "") _hash = "email_mobile";
        _result_flg = false;
    }
    if (! jsInputCheckRadio('select_tel', 'select_tel_error', _msg_select_tel_error)){
        if (_hash == "") _hash = "select_tel1";
        _result_flg = false;
    }
    if (! jsInputCheckSelectTel('tel', 'tel_mobile', _msg_select_tel_value_error)){
        if (_hash == "") _hash = "tel";
        _result_flg = false;
    }
    if (! jsInputCheckStrLength('comment', 1000, _msg_comment_length_error )){
       if (_hash == "") _hash = "comment";
        _result_flg = false;
    }
    if (_hash != ""){
        window.location.hash = _hash;
    }

    return _result_flg;
}


function jsInputCheckRadio(obj_name, error_name, error_msg1) {

    var ErrorObj = $(error_name);
    var ActiveObj = document.getElementsByName(obj_name);
    if ((! ErrorObj) || (! ActiveObj)){
        return false;
    }
    if (! get_radio_select_val(obj_name)){
        Element.update(error_name, error_msg1);
        jsErrotClassChange(error_name, true);
        return false;
    }else{
        jsErrotClassChange(error_name, false);
        return true;
    }
}

function byteLength( str ){

    var tbl = [ 0, 1, 1, 1, 2, 3, 2, 3, 4, 3 ];
    var len = 0;
    for (i = 0; i < str.length; i++) {
        len += tbl [encodeURIComponent(str.charAt(i)).length];
    }
    return len;
}


function jsInputCheckStr(obj_name, max_length, error_msg1, error_msg2) {
    var ActiveObj = $(obj_name);
    var err_obj_name = obj_name + '_error';
    var ErrorObj = $(err_obj_name);

    if ((! ActiveObj) || (! ErrorObj)){
        return false;
    }

    if (ActiveObj.value.length == 0){
        jsInputClassChange(obj_name, true);
        Element.update(err_obj_name, error_msg1);
        jsErrotClassChange(err_obj_name, true);
        return false;
    }else{
        if (max_length > 0){
            if ( byteLength( ActiveObj.value ) > max_length){
                jsInputClassChange(obj_name, true);
                Element.update(err_obj_name, error_msg2);
                jsErrotClassChange(err_obj_name, true);
                return false;
            }else{
                jsInputClassChange(obj_name, false);
                jsErrotClassChange(err_obj_name, false);
            }
        }else{
            jsInputClassChange(obj_name, false);
            jsErrotClassChange(err_obj_name, false);
        }
    }
    return true;
}

function jsInputCheckStrLength(obj_name, max_length, error_msg ) {
    var ActiveObj = $(obj_name);
    var err_obj_name = obj_name + '_error';
    var ErrorObj = $(err_obj_name);

    if ((! ActiveObj) || (! ErrorObj)){
        return false;
    }

    if (ActiveObj.value.length == 0){
        return true;
    }else{
        if (max_length > 0){
            if ( byteLength( ActiveObj.value ) > max_length){
                jsInputClassChange(obj_name, true);
                Element.update(err_obj_name, error_msg);
                jsErrotClassChange(err_obj_name, true);
                return false;
            }else{
                jsInputClassChange(obj_name, false);
                jsErrotClassChange(err_obj_name, false);
            }
        }else{
            jsInputClassChange(obj_name, false);
            jsErrotClassChange(err_obj_name, false);
        }
    }
    return true;
}

function chkCode(id) {
  work='';
  for (lp=0;lp<id.value.length;lp++) {
    unicode=id.value.charCodeAt(lp);
    if ((0xff0c<unicode) && (unicode<0xff1b)) {
      work+=String.fromCharCode(unicode-0xfee0);
    } else if ((0xff1f<unicode) && (unicode<0xff3b)) {
      work+=String.fromCharCode(unicode-0xfee0);
    } else if ( ((0xff40<unicode) && (unicode<0xff5b)) || (unicode == 0xff3f) ) {
      work+=String.fromCharCode(unicode-0xfee0);
    } else {
      work+=String.fromCharCode(unicode);
    }
  }
  id.value=work;
}

function jsInputCheckPref(obj_name, error_msg1) {
    var ActiveObj = $(obj_name);
    var err_obj_name = obj_name + '_error';
    var ErrorObj = $(err_obj_name);

    if ((! ActiveObj) || (! ErrorObj)){
        return false;
    }
    if (ActiveObj.value  == 0){
        jsInputClassChange(obj_name, true);
        Element.update(err_obj_name, error_msg1);
        jsErrotClassChange(err_obj_name, true);
        return false;
    }else{
        jsInputClassChange(obj_name, false);
        jsErrotClassChange(err_obj_name, false);
    }
    return true;
}


function jsInputCheckNum(obj_name, error_msg1, error_msg2 , error_msg3 ) {
    var ActiveObj = $(obj_name);
    var err_obj_name = obj_name + '_error';
    var ErrorObj = $(err_obj_name);

    if ((! ActiveObj) || (! ErrorObj)){
        return false;
    }

    chkCode( ActiveObj );

    if (ActiveObj.value.length == 0){
        jsInputClassChange(obj_name, true);
        Element.update(err_obj_name, error_msg1);
        jsErrotClassChange(err_obj_name, true);
        return false;
    }else{
        if (! is_Numeric(ActiveObj.value)){
            jsInputClassChange(obj_name, true);
            Element.update(err_obj_name, error_msg2);
            jsErrotClassChange(err_obj_name, true);
            return false;
        }else{
            if(ActiveObj.value < 15 || ActiveObj.value > 99 ){
                jsInputClassChange(obj_name, true);
                Element.update(err_obj_name, error_msg3);
                jsErrotClassChange(err_obj_name, true);
                return false;
            }
            jsInputClassChange(obj_name, false);
            jsErrotClassChange(err_obj_name, false);
        }
    }
    return true;
}
function jsInputClassChange(obj_name, error_flg) {
    if (error_flg){
        Element.removeClassName(obj_name, 'validation-passed');
        Element.addClassName(obj_name, 'validation-failed');
    }else{
        Element.removeClassName(obj_name, 'validation-failed');
        Element.addClassName(obj_name, 'validation-passed');
    }
}
function jsErrotClassChange(obj_name, error_flg) {
    if (error_flg){
        if (! Element.hasClassName(obj_name, 'display')){
            Element.addClassName(obj_name, 'display');
            Effect.Fade($(obj_name),{ from:0, to:1 }); 
        }
    }else{
        Element.removeClassName(obj_name, 'display');
    }
}

function jsInputCheckTels(obj_name1, obj_name2, error_msg1, error_msg2 , max_length , error_msg3 ) {
    var err_obj_name = 'tel_error';
    var ErrorObj = $(err_obj_name);

    var tel_1 = $(obj_name1);
    var tel_2 = $(obj_name2);

    if (tel_1){
        chkCode( tel_1 );
    }
    if (tel_2){
        chkCode( tel_2 );
    }

    if ((! tel_1) || (! tel_2) || (! ErrorObj)){
        return false;
    }
    var error_flg = false;
    var error_msg = "";
    if ((tel_1.value.length == 0) && (tel_2.value.length == 0)){
        if (tel_1.value.length == 0){
            error_flg = true;
        }
        error_msg = error_msg1;
    }

    if(max_length > 0){
       if( byteLength( tel_1.value ) > max_length || byteLength( tel_2.value ) > max_length ){
            error_flg = true;
            error_msg = error_msg3;
       }
    }

    if (! is_Tel(tel_1.value)){
        error_flg = true;
        error_msg = error_msg2;
    }else{
        if (! is_Tel(tel_2.value)){
            error_msg = error_msg2;
        }
    }
    jsInputClassChange(obj_name1, error_flg);

    if (! error_msg == ""){
        Element.update(err_obj_name, error_msg);
        jsErrotClassChange(err_obj_name, true);
        return false;
    }else{
        jsInputClassChange(obj_name2, false);
        jsErrotClassChange(err_obj_name, false);
        return true;
    }
}

function jsInputCheckSelectTel(obj_name1, obj_name2, error_msg) {
    var err_obj_name = 'tel_error';
    var ErrorObj = $(err_obj_name);

    var tel_1 = $(obj_name1);
    var tel_2 = $(obj_name2);
    var _val = get_radio_select_val('select_tel');

    if ((! tel_1) || (! tel_2) || (! _val) || (! ErrorObj)){
        return false;
    }
    if (_val == 1){
        if (tel_1.value.length == 0){
            jsInputClassChange(obj_name1, true);
            Element.update(err_obj_name, error_msg);
            jsErrotClassChange(err_obj_name, true);
            return false;
        }
    }
    if (_val == 2){
        if (tel_2.value.length == 0){
            jsInputClassChange(obj_name2, true);
            Element.update(err_obj_name, error_msg);
            jsErrotClassChange(err_obj_name, true);
            return false;
        }
    }
    return true;
}


function jsInputCheckMails(obj_name1, obj_name2, error_msg1, error_msg2 , max_length , error_msg3 ) {
    var err_obj_name = 'mail_error';
    var ErrorObj = $(err_obj_name);
    var obj_1 = $(obj_name1);
    var obj_2 = $(obj_name2);

    if (obj_1){
        chkCode( obj_1 );
    }
    if (obj_2){
        chkCode( obj_1 );
    }

    if ((! obj_1) || (! obj_2) || (! ErrorObj)){
        return false;
    }
    var error_flg = false;
    var error_msg = "";
    if ((obj_1.value.length == 0) && (obj_2.value.length == 0)){
        if (obj_1.value.length == 0){
            error_flg = true;
        }
        error_msg = error_msg1;
    }

    if(max_length > 0){
       if( byteLength( obj_1.value ) > max_length || byteLength( obj_1.value ) > max_length ){
            error_flg = true;
            error_msg = error_msg3;
       }
    }

    if (! is_Email(obj_1.value)){
        error_flg = true;
        error_msg = error_msg2;
    }else{
        if (! is_Email(obj_2.value)){
            error_msg = error_msg2;
        }
    }
    jsInputClassChange(obj_name1, error_flg);

    if (! error_msg == ""){
        Element.update(err_obj_name, error_msg);
        jsErrotClassChange(err_obj_name, true);
        return false;
    }else{
        jsInputClassChange(obj_name2, false);
        jsErrotClassChange(err_obj_name, false);
        return true;
    }
}


function is_Numeric(num){
    if (num.match(/[^0-9]/g)) {
        return false;
    }
    return true;
}

function is_Tel(tel) {
    if (tel.match(/[^0-9\-]/g)) {
        return false;
    }
    return true;
}

function is_Email(mail){
    if(mail.match(/[0-9a-zA-Z\.\_\-]+@[0-9a-zA-Z\.\_\-]+\.[0-9a-zA-Z\.\_\-]+$/) || (! mail)){
        return true;
    }
    return false;
}

function get_radio_select_val(name){
    var ActiveObj = document.getElementsByName(name);
    if (! ActiveObj) return false;

    var _value = false;
    for(i = 0; i < ActiveObj.length; i++) {
        if (ActiveObj[i].checked){
            _value = ActiveObj[i].value;
            break;
        }
    }
    return _value;
}


