//フォーム内容チェック
function validateFormItem(validateItem, compareItem, itemName, validateMethod) {
    var validateValue = "";
    if (validateItem.value) {
        validateValue = validateItem.value.replace(/[ |　|\r|\n]/g, "");
    }

    var validateMethodList = validateMethod.split(",");
    if (validateMethodList.constructor != Array) {
        validateMethodList = new Array(validateMethod);
    }

    var validateMethodCount = validateMethodList.length;
    for (var i = 0; i < validateMethodCount; i++) {
        var checkMethod    = validateMethodList[i].replace(/[ |　]/g, "").toLowerCase();
        var checkParam    = "";

        var paramPos    = checkMethod.indexOf("=");
        if (paramPos >= 0) {
            checkParam    = checkMethod.substring(paramPos + 1);
            checkMethod    = checkMethod.substring(0, paramPos);
        }


        if (checkMethod == "Require".toLowerCase()) {
            if (validateValue.length == 0) {
                alert(itemName + "を入力してください");
                return false;
            }
        }
        else if (validateValue.length > 0) {
            if (checkMethod == "MaxLength".toLowerCase()) {
                if (validateValue.length > checkParam) {
                    alert(itemName + "は" + checkParam + "文字以内で入力してください");
                    return false;
                }
            }
            else if (checkMethod == "MinLength".toLowerCase()) {
                if (validateValue.length < checkParam) {
                    alert(itemName + "は" + checkParam + "文字以上で入力してください");
                    return false;
                }
            }
            else if (checkMethod == "RecommendMaxLength".toLowerCase()) {
                if (validateValue.length > checkParam) {
                    if (!confirm(itemName + "は" + checkParam + "文字以内で設定することをおすすめします。\nこのまま確認を行いますがよろしいですか？")) {
                        return false;
                    }
                }
            }
            else if (checkMethod == "RecommendMinLength".toLowerCase()) {
                if (validateValue.length < checkParam) {
                    if (!confirm(itemName + "は" + checkParam + "文字以上で設定することをおすすめします。\nこのまま確認を行いますがよろしいですか？")) {
                        return false;
                    }
                }
            }
            else if (checkMethod == "Katakana".toLowerCase()) {
                if (validateValue.match(/[^\u30A0-\u30FF\uFF65-\uFF9F\u0020\u3000]+/)) {
                    alert(itemName + "はカタカナで入力してください");
                    return false;
                }
            }
            else if (checkMethod == "Number".toLowerCase()) {
                if (!validateValue.match(/^[1-9][0-9]*/)) {
                    alert(itemName + "は半角数字で入力してください");
                    return false;
                }
            }
            else if (checkMethod == "Numeric".toLowerCase()) {
                if (validateValue.match(/[^0-9]+/)) {
                    alert(itemName + "は半角数値で入力してください");
                    return false;
                }
            }
            else if (checkMethod == "Select".toLowerCase()) {
                if (validateValue == checkParam) {
                    alert(itemName + "を選択して下さい");
                    return false;
                }
            }
            else if (checkMethod == "ZipCode1".toLowerCase()) {
                if (!validateValue.match(/^[0-9]{3}$/)) {
                    alert(itemName + "は３桁の数字で入力して下さい");
                    return false;
                }
            }
            else if (checkMethod == "ZipCode2".toLowerCase()) {
                if (!validateValue.match(/^[0-9]{4}$/)) {
                    alert(itemName + "は４桁の数字で入力して下さい");
                    return false;
                }
            }
            else if (checkMethod == "TelePhone".toLowerCase()) {
                if (validateValue.length < 8 || validateValue.length > 20 || !validateValue.match(/^([0-9]+-)*[0-9]+$/)) {
                    alert(itemName + "を正しく入力して下さい");
                    return false;
                }
            }
            else if (checkMethod == "MailAddress".toLowerCase()) {
                if (!validateValue.match(/^[\-A-Za-z0-9_\.]+@+[\-A-Za-z0-9_]+(\.+[\-a-z0-9_]+)*$/)) {
                    alert(itemName + "を正しく入力して下さい");
                    return false;
                }
            }
            else if (checkMethod == "Password".toLowerCase()) {
                if (validateValue.match(/[^_0-9a-zA-z\-\.]+/)) {
                    alert(itemName + "を正しく設定してください");
                    return false;
                }
            }
            else if (checkMethod == "Check".toLowerCase()) {
                if (!validateItem.checked) {
                    alert(itemName);
                    return false;
                }
            }
/*    デバッグ用」
            else {
                if (true) {
                    alert("比較処理：" + checkMethod + " は、未定義です。\r\n" + "  比較条件：" + checkParam);
                    return false;
                }
            }
*/
        }
    }

    if (compareItem) {
        compareValue = compareItem.value.replace(/[ |　|\r|\n]/g, "");
        if (validateValue != compareValue) {
            alert(itemName + "が一致してません");
            return false;
        }
    }

    return true;
}

//フォー内のINPUTタグの値を空にする
//formにIDを振ってそれを渡す。
//prototype.js使用
function formReset(formId)
{
    if (!confirm("フォームの入力内容を空します。\nよろしいですか？")) {
        return false;
    }
    var formsObj;
    var inputObj;

    formsObj = Form.getElements(formId);
    if (!formsObj) {
        return false;
    }
    $A(formsObj).each(function(obj) {

        //ほかの属性は適宜追加してください。
        switch (obj.type)
        {
            case "password":
            case "text":
                  obj.value="";
                  break;
            case "select-one":
                var tmp_obj = obj.getElementsByTagName('option');
                if (tmp_obj[0]) {
                    tmp_obj[0].selected = true;
                }
                break;
            default:
        }

    });
    return true;

}

//郵便番号検索
function ajaxRequestZipSearch(zip1_obj, zip2_obj, add1_obj, add2_obj, err_obj)
{
    var str = $F(zip1_obj) + $F(zip2_obj);
    str = "zip=" + str;
    $(err_obj).hide();
    new Ajax.Request(
            "/ajax/zip_search/",
            {
                "method": "get",
                parameters: str,
                onSuccess: function(request){
                var json =  eval( '(' + request.responseText + ')' );

                if (!json) {
                    return false;
                }
                if(json.status != "true"){
                    $(err_obj).update("ご指定の郵便番号がみつかりません。");
                    $(err_obj).show();
                    return false;
                }
                if (!$(add1_obj) || !$(add2_obj)) {
                    return false;
                }

                var optionObj = $(add1_obj).getElementsByTagName('option');

                $A(optionObj).each(
                        function(obj) {
                            if (obj.text == json.pref) {
                                obj.selected = true;
                            }
                        }
                );

                $(add2_obj).value = json.add1 + json.add2;
                $(err_obj).update("");
                $(err_obj).hide();
                }
                ,

                onComplete: function(request) {
                },

                onFailure: function(request) {
                    //alert('読み込みに失敗しました');
                },
                onException: function (request) {
                    //alert('読み込み中にエラーが発生しました');
                }
            }
    );

}

function setMessage (id, message)
{
    if (!$(id)) {
        return false;
    }
    $(id).innerHTML = message;
    return true;
}

//表示非表示の切り替え
function changeDisplay(id) {
    if (!$(id)) {
        return false;
    }
    if ($(id).style.display == "") {
        $(id).style.display = "none";
    } else {
        $(id).style.display = "";
    }
    return true;
}

function changeQA(myURI){

  if(myURI !="default"){
    window.document.location.href= myURI;
  }

}

function bbs_change_genre(this_obj)
{
   var trigger;
   if (this_obj.value == 99) {
      trigger = "free";
   } else {
      trigger = "genre";
   }
   var myurl = "/bbs/" + trigger + "?item=" + this_obj.value;
   window.document.location.href = myurl;
}

function InputBbs_cust()
{
   var err = false;

   if(document.forms['bbs'].elements['bbs[name]'].value == ""){
      alert("投稿者名を記入してください。");
      document.forms['bbs'].elements['bbs[name]'].focus();
      return false;
   }
   if(document.forms['bbs'].elements['bbs[mail]'].value == ""){
      alert("メールアドレスを記入してください。");
      document.forms['bbs'].elements['bbs[mail]'].focus();
      return false;
   }
   if(document.forms['bbs'].elements['bbs[content]'].value == ""){
      alert("コメントを記入してください。");
      document.forms['bbs'].elements['bbs[content]'].focus();
      return false;
   }

   if (confirm("投稿しますか？")){
      document.forms['bbs'].submit();
      return true;
   }
   return false;

}

function bbs_cont()
{
   if(document.forms['bbs'].elements['bbs[name]'].value == ""){
      alert("投稿者名を記入してください。");
      document.forms['bbs'].elements['bbs[name]'].focus();
      return false;
   }
   if(document.forms['bbs'].elements['bbs[content]'].value == ""){
      alert("コメントを記入してください");
      document.forms['bbs'].elements['bbs[content]'].focus();
      return false;
   }

   document.forms['bbs'].elements['bbs[check]'].value = "write";
   document.forms['bbs'].submit();
   return true;

}

function Input_bbs()
{
   document.forms['bbs'].elements['bbs[check]'].value = "add";
   document.forms['bbs'].submit();
}

/* アイテムで探すのセレクトボックスが変更された時 */
function change_item_location(this_obj)
{
    if (!this_obj.value) {return;}
    //画面遷移させる
    window.location.href = "/is/" + this_obj.value + "/" + this_obj.options[this_obj.selectedIndex].text;
    return;
}

//画像のポップアップ表示
function popup_img(img, s)
{
    if (s == null) { s = "0";}
    if (!img){ return; }
    //オープン設定
    var str_url = "/pimg/" + s + "/" + img;
    //ウインドウオープン
    var winopen = window.open(str_url, 'POPUP', "location=no,resizable=yes,scrollbars=yes,directories=no,status=no,menubar=no,dependent=yes,titlebar=no");
    if (winopen != null) { winopen.focus(); }
    return;
}

//通常のポップアップ表示用
var popupWindow;
function popup(url, width, height)
{
    if (url == null) { return false; }
    if (width == null) { width = 600; }
    if (height == null) { height = 510; }

    if (popupWindow) {
        if(!popupWindow.closed){
            popupWindow.close();
        }
    }

    //ウインドウオープン
    popupWindow = window.open(url, 'POPUP', "width=" + width + ",height=" + height + ",location=no,resizable=yes,scrollbars=yes,directories=no,status=no,menubar=no,dependent=yes,titlebar=no");

    return false;
}

var newwin;
function winopen(url){
    if(newwin){
        if(!newwin.closed){
            newwin.location.href=url;
            newwin.focus();
        }else{
            newwin=window.open(url,'subWindow','scrollbars');
        }
    }else{
        newwin=window.open(url,'subWindow','scrollbars');
    }
}

/*背景色を変更する*/
function setbgColor(obj_id, color)
{
    var obj = $(obj_id);
    obj.style.background = color;
}

/*ラジオボタンのチェック内容を取得する*/
function getRadioItem(elements_form, elements_name)
{
   var elm = document.forms[elements_form].elements[elements_name];

   if (elm == null) {
      return null;
   }

   var temp;
   var res;

   if(elm.length > 0){
      for(i = 0; i < elm.length; i++){
         if(elm[i].checked){
            res = elm[i].value;
         }
      }
   } else {
      res = elm.value;
   }

   return res;

}

/*ラジオボタンのチェックを全部外す*/
function offRadioItem(elements_form, elements_name){

    var elm = document.forms[elements_form].elements[elements_name];

    if (elm == null) {
        return false;
    }

    if(elm.length > 0){
        for(i = 0; i < elm.length; i++){
            if(elm[i].checked){
                elm[i].checked = false;
            }
        }
    }
    return true;
}


/*ラジオボタンを選択する*/
function setRadioItem(elements_form, elements_name, elelements_value)
{
   var elm = document.forms[elements_form].elements[elements_name];

   if (elm == null) {
      return;
   }

   var temp;

    for(i = 0; i < elm.length; i++){
       if(elm[i].value == elelements_value){
          if(elm[i].disabled == false){
             elm[i].checked = true;
             break;
          }
       }
    }
}

/*ラジオボタンを無効にする*/
function disableRadioItem(elements_form, elements_name, elements_value)
{
    var elm = document.forms[elements_form].elements[elements_name];

    if (elm == null) {
        return;
    }

    for(i = 0; i < elm.length; i++){
        if (elements_value == null || elements_value == elm[i].value) {
            elm[i].disabled = true;
        }
    }
}

/*ラジオボタンを有効にする*/
function enableRadioItem(elements_form, elements_name, elements_value)
{
    var elm = document.forms[elements_form].elements[elements_name];

    if (elm == null) {
        return;
    }

    for(i = 0; i < elm.length; i++){
        if (elements_value == null || elements_value == elm[i].value) {
            elm[i].disabled = false;
        }
    }
}


/*チェックボックスのチェック数を取得する*/
function chkCheckBoxItem(elements_form, elements_name){

    //指定されたチェックボックスオブジェクトのチェック数を取得する
    var objnum = 0;
    var obj    = document.forms[elements_form].elements[elements_name];

    if (obj == null) {
        return 0;
    }

    for(i = 0; i < obj.length; i++){
        if(obj[i].checked && obj[i].disabled != 'disabled'){
            objnum += 1;
        }
    }

    return objnum;

}

/*チェックボックスのチェック数がMAXを超えているか確認する*/
function chkCheckBoxItemMax(elements_form, elements_name, max){
    if (chkCheckBoxItem(elements_form, elements_name) >= max) {
        return false;
    } else {
        return true;
    }
}

/*チェックボックスをチェックする*/
function setCheckBox(elements_form, elements_name, elements_value, elements_max_check){

    var obj = document.forms[elements_form].elements[elements_name];

    if (obj == null) {
        return;
    }

    var temp;
    var objnum = 0;

    //alert('max=' + elements_max_check);
    //alert('chk=' + chkCheckBoxItem(elements_form, elements_name));

    for(i = 0; i < obj.length; i++){
        if(obj[i].value == elements_value){
            if(obj[i].disabled != "disabled"){
                if (obj[i].checked == false){
                    alert('bb');
                    obj[i].checked = true;
                } else {
                    obj[i].checked;
                }
                alert(obj[i].checked);
            }
        }
    }


    if (elements_max_check < chkCheckBoxItem(elements_form, elements_name)) {
        var off_obj_chk = $$('[name^="' + elements_name + '"]');
        off_obj_chk.each(
                function(n){
                    if (n.value == elements_value){
                        if (pass == false){
                            if (n.checked == true) {
                                n.checked = false;
                            }
                            alert('a');
                        } else {
                            n.checked = false;
                        }
                    }
                }
        )
        alert("上限を超えています。");
    }
}


/*
* 現在何個チェックされているか判定する
*/
function chkCheckCount(elm) {

    var elm_name = $(elm).name;

    var elms = $$('[name^="' + elm_name + '"]');
    var count = 0;
    var obj;
    elms.each(
            function(n){
                if (n.checked == true){
                    count += 1;
                }
            }
    );
    return count;
}

/*
 * チェックボックスグループにチェックされている数が、最大チェック数を上回っていないか確認する
 */
function controlCheckMax(elm, max_check) {

    var obj = $(elm);

    if (elm.name == null){
        //画像
        if ($(elm).checked == true){
            setCheck(elm, false);
        } else {
            setCheck(elm, true);
        }
        elm = obj;
    } else {
        //チェックボックス
        var obj = $(elm);
    }
    if (obj.checked == true){
        if (chkCheckCount(elm) > max_check) {
            alert('選択できる色数は' + max_check + '色までです。');
            setCheck(elm, false);
        }
    }
}

/*
* 対象のチェックボックスにチェックする
*/
function setCheck(elm, type)
{
    var obj = $(elm);
    if (type != true) {
        type = false;
    }
    obj.checked = type;
}

/* ブラインド */
function itemInfoListBlind()
{
    $("item_info_list").visualEffect("BlindDown");
    $("pagerHtml2").show();
}

/**
 * サブミットする際の関数
 */
function submit_action(this_obj, form_id, action)
{
    if ($("proccess") && action) {
        $("proccess").value = action;
    }
    //1秒後に戻す
    window.setTimeout(function(){ this_obj.disabled = true; }, 1);
    window.setTimeout(function(){ this_obj.disabled = false; },1000);
    $(form_id).submit();
    return;
}

/**
 * 画面のロード時にinput属性をFocus時に背景色をかえる
 *
 * @example
 * Event.observe(window,"load", function(){new BackColorInput("item_detail_form");});
 */
var BackColorInput = Class.create();
BackColorInput.prototype = {
    this_obj: '',
    initialize : function(form_element) {
        this_obj = this;
        if ($(form_element)) {
            this_obj.setFormFocusBlur($(form_element));
            return;
        }
        var formObjs = $A(document.getElementsByTagName("form"));
        formObjs.each(function(obj){
            this_obj.setFormFocusBlur(obj);
        });
    },
    setFormFocusBlur:function(obj){
        var test = $A(Form.getElements(obj));
        test.each(function(obj2){
            this_obj.setBagColor(obj2);
        });
    },
    setBagColor:function(element) {
        if (element.disabled == true || element.readOnly == true) {
            return;
        }
        switch(element.type){
            case "text":
            case "textarea":
                Event.observe(element, "focus", function(){this.addClassName("form_area_focus")});
                Event.observe(element, "blur",  function(){this.removeClassName("form_area_focus")});
        }
    }
}

/* labelタグにIEもFirefoxなどと同様の動作を行うようにする(全体でまとめて)*/
function allClickLabel(){
    var list = document.getElementsByTagName("label");
    for(var i=0; i<list.length; i++){
        list[i].onclick = function (){
            return clickLabel(this);
        };
    }
}

/* labelタグにIEもFirefoxなどと同様の動作を行うようにする(個別,onclick用)*/
function clickLabel(label){
    //forの指すidのinputタグがあるか探す
    var e = null;
    try{
        e = document.getElementById(label.htmlFor);
    }
    catch(exception){}
    if(e == null){
        //labelタグ以下のinputタグを探す
        var node;
        for(var i=0; i<label.childNodes.length; i++){
            node = label.childNodes.item(i);
            if(node.nodeName == 'INPUT'){
                e = node;
                break;
            }
        }
    }

    if(e != null){
        //inputタグにクリックされたときと同じ動作をさせる
        switch(e.type){
            case 'checkbox':
            case 'radio':
                e.click();
                return false;
            case 'text': case 'password': case 'textarea':
                e.focus();
                return false;
        }
    }
}

function number_format(str) {
    var num = new String(str).replace(/,/g, "");
    while(num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2")));
    return num;
}

