/* -------------------------------------------------------------------------- */
/**
 *    form
 */
/* -------------------------------------------------------------------------- */


jQuery(document).ready(function(){
//    if (BA.ua.isIE && (BA.ua.isIE40 || BA.ua.isIE45 || BA.ua.isIE50 || BA.ua.isIE55)) {
//         IE 4x,5x
//        return;
//    } else if (BA.ua.isSafari && BA.ua.revision < 412) {
//         Safari 1.x
//        return;
//    }
    //郵便番号検索
    jQuery("#zipsearch").click(function(){
        var zip1 = this.form['zip[zip1]'].value;
        var zip2 = this.form['zip[zip2]'].value;

        if (!zip1.length || !zip2.length) {
            alert("郵便番号を入力してください。");
            return false;
        } else if (!zip1.match(/^[0-9]{3}$/) || !zip2.match(/^[0-9]{4}$/)) {
            alert("郵便番号を正しく入力してください。");
            return false;
        }
        jQuery.ajax({
            type: "GET",
            url: "/shared/api/zip.php/" + zip1 + zip2,
            dataType: "json",
            success: function(addressdata){
                if (!addressdata) {
                    alert("該当する住所が見つかりませんでした。");
                    return false;
                }

                var prefid = jQuery('select[name="prefid"]', this.form);
                var address1 = jQuery('input[name="address1"]', this.form);
                var address2 = jQuery('input[name="address2"]', this.form);
                if (addressdata.prefid) {
                    prefid.val(addressdata.prefid);
                }
                if (addressdata.address1) {
                    address1.val(addressdata.address1);
                }
                var address2data = '';
                if (addressdata.address2) {
                    address2data = addressdata.address2;
                }

                if (document.selection) {
                    // IE only
                    address2.val('');
                    address2.focus();
                    var sel = document.selection.createRange();
                    sel.text = address2data;
                    sel.select();
                } else {
                    address2.val(address2data);
                    address2.focus();
                }
            },
            error: function(msg){
                alert("該当する住所が見つかりませんでした。");
            },
            timeout: 2000
        });
    });
    //色検索
    jQuery("#colorcategorycode").change(function(){
        if(this.value != ''){
            var colorcategorycode = this.value;
            var colorElement = colorlist[colorcategorycode];
            if(colorElement == undefined){
                //選択された色カテゴリーに色コードが一切存在しなければ"--"のみを出力する。valueは存在しない値
                alert("選択されたカラー・カテゴリーにボディーカラーが存在しません。");

                jQuery("#bodycolorcode").children().remove();
                var elm = jQuery("<option>").html('--').attr({value : ''});
                jQuery("#bodycolorcode").append(elm);
            }else{
                jQuery("#bodycolorcode").children().remove();
                if (colorElement.length > 1) {
                    var elm = jQuery("<option>").html('--').attr({value: ''});
                    jQuery("#bodycolorcode").append(elm);
                }
                for(var i=0; i<colorElement.length; i++) {
                    var elm = jQuery("<option>").html(colorlist[colorcategorycode][i].colorname).attr({value: colorlist[colorcategorycode][i].colorcode});
                    jQuery("#bodycolorcode").append(elm);
                }
            }
        }else{
            jQuery("#bodycolorcode").children().remove();
            var elm = jQuery("<option>").html('--').attr({value: ''});
            jQuery("#bodycolorcode").append(elm);
        }
    });
    // 初期状態復帰
    var bodycolorcode = jQuery("#bodycolorcode").val();
    jQuery("#colorcategorycode").change();
    jQuery("#bodycolorcode").val(bodycolorcode);

    //ロード時にディーラーチェックボックスがなしと設定されていた場合にはリストをdisableとする
    if(jQuery("input[@name='dealer']:checked").val() != 'yes'){
        jQuery("#dealerprefid").attr("disabled", "disabled");
        jQuery("#dealerid").attr("disabled", "disabled");
        jQuery("#dealername").attr("disabled", "disabled");
    }

    //ディーラーチェックON/OFFでディーラー選択可能・不可能の切り替え
    jQuery("#dealer_yes").click(function(){
        jQuery("#dealerprefid").removeAttr("disabled");
        jQuery("#dealerid").removeAttr("disabled");
        jQuery("#dealername").removeAttr("disabled");
    });
    jQuery("#dealer_no").click(function(){
        jQuery("#dealerprefid").attr("disabled", "disabled");
        jQuery("#dealerid").attr("disabled", "disabled");
        jQuery("#dealername").attr("disabled", "disabled");
    });

    //ディーラー検索
    jQuery("#dealerprefid").change(function(){
        if(this.value != ''){
            var prefid = this.value;
            var dealerElement = dealerlist[prefid];
            if(dealerElement == undefined){
                //ディーラーが存在しなければ"--"のみを出力する。valueは存在しない値
                alert("選択された都道府県にディーラーが存在しません。");

                jQuery("#dealerid").children().remove();
                var elm = jQuery("<option>").html('--').attr({value :''});
                jQuery("#dealerid").append(elm);
            }else{
                //ディーラーリストを選択された都道府県のもののみに書き換える
                jQuery("#dealerid").children().remove();
                if (dealerElement.length > 1) {
                    var elm = jQuery("<option>").html('--').attr({value: ''});
                    jQuery("#dealerid").append(elm);
                }
                for(var i=0; i<dealerElement.length; i++) {
                    var elm = jQuery("<option>").html(dealerlist[prefid][i].dealername).attr({value: dealerlist[prefid][i].dealerid});
                    jQuery("#dealerid").append(elm);
                }
            }
        } else {
            jQuery("#dealerid").children().remove();
            var elm = jQuery("<option>").html('--').attr({value :''});
            jQuery("#dealerid").append(elm);
        }
    });
    // 初期状態復帰
    var dealerid = jQuery("#dealerid").val();
    jQuery("#dealerprefid").change();
    jQuery("#dealerid").val(dealerid);

    // ヘルパ表示
    jQuery(".formhelper").show();
    jQuery(".formhelper input").removeAttr("disabled");
});
