function show(ele) {
    showSearchOption(ele);
}

function showSearchOption(ele)
{
    var srcElement = document.getElementById(ele);
    if(srcElement != null) {
        if(srcElement.style.display == "block") {
            srcElement.style.display= 'none';
        }
        else {
            srcElement.style.display='block';
        }
    }
    return false;
}

/* 絞込み検索 */
function changeRadio(num){
    if (num == 1){
        document.getElementById("price_shiborikomi").checked = true;
    } else {
        document.getElementById("mi_shiborikomi").value = "";
        document.getElementById("ma_shiborikomi").value = "";
    }
}

/**
 * キーワード検索
 *
 * @param form
 */
function execSearchResults(form)
{
    var search_word  = transSpecialSign(form.sk.value);
    var query        = new Array();

    var error_box = '';
    if (form.name == 'search_bar') {
        if (document.getElementById('baby_erroroptionBox')) {
            document.getElementById('baby_erroroptionBox').style.display = 'none';
        }
        error_box = 'baby_errorInfo';
    } else if (form.name == 'search') {
        try {
            document.getElementById('baby_errorBox').style.display = 'none';
            error_box = 'baby_erroroptionBox';
        } catch (e) {
            error_box = 'baby_nodataError';
        }
    }

    if (!checkInput(search_word)) {
        if (error_box == 'baby_nodataError') {
            return outputError(getErrorMessage('sk_nodata'), error_box);
        } else {
            return outputError(getErrorMessage('sk'), error_box);
        }
    }

    if (typeof form.mi != "undefined") {
        var mi = zen2han(form.mi.value);
        if (checkInput(mi) && false == isPrice(mi)) {
            if (error_box == 'baby_nodataError') {
                return outputError(getErrorMessage('price_nodata'), error_box);
            } else {
                return outputError(getErrorMessage('price'), error_box);
            }
        } else if (checkInput(mi)) {
	        query.push("mi=" + mi);
        }
    }

    if (typeof form.ma != "undefined") {
        var ma = zen2han(form.ma.value);
        if (checkInput(ma) && false == isPrice(ma)) {
            if (error_box == 'baby_nodataError') {
                return outputError(getErrorMessage('price_nodata'), error_box);
            } else {
                return outputError(getErrorMessage('price'), error_box);
            }
        } else if (checkInput(ma)) {
	        query.push("ma=" + zen2han(ma));
        }
    }

    if (typeof form.mi != "undefined" && typeof form.ma != "undefined") {
        if (checkInput(form.mi.value) && checkInput(form.ma.value) &&
            parseInt(zen2han(form.mi.value)) > parseInt(zen2han(form.ma.value))) {
            if (error_box == 'baby_nodataError') {
                return outputError(getErrorMessage('price_range_nodata'), error_box);
            } else {
                return outputError(getErrorMessage('price_range'), error_box);
            }
        }
    }

    for (var num = 0; num < form.elements.length; num++) {
        var elem = form.elements[num];
        
        if (elem.type == 'checkbox' || elem.type == 'radio') {
            if (true == elem.checked) {
                query.push(elem.name + '=' + encodeURIComponent(elem.value));
            }
	    } else if (elem.type == 'select') {
	        for (var onum = 0; elem.options.length > onum; onum++) {
		        if (elem.options[onum].selected) {
		            query.push(elem.name + '=' + encodeURIComponent(elem.options[onum].value));
		        }
	        }
        } else {
            if (elem.name != 'sk' &&
		        elem.name != 'dm' &&
		        elem.name != 'mi' &&
		        elem.name != 'ma' &&
		        elem.name != 'price_range' &&
                elem.value != null &&
                elem.name.length > 0 &&
                elem.value.length > 0) {
                query.push(elem.name + '=' +  encodeURIComponent(elem.value));
            }
        }
    }

    var url = 'http://' + document.domain + '/search/' + encodeURIComponent(search_word) + '/index.html';

    if (query.length > 0) {
       url += '?' + query.join('&');
    }

    document.location.href = url;

    return false;
}

/**
 * 店舗内検索
 * 
 * @param form
 */
function execShopItems(form)
{
    var ca     = '';
    var domain = '';
    if (typeof form.ca != 'undefined') {
        ca = form.ca.value;
        if (0 == ca.length || ca.search(new RegExp("^E[0-9]{2}")) != -1) {
	        return execSearchResults(form);
        } else {
            domain = ca;
        }
    } else {
        domain = form.dm.value;
    }
    var query  = new Array();

    var sk = transSpecialSign(form.sk.value);

    var error_box = '';

    if (form.name == 'search_bar') {
        document.getElementById('baby_erroroptionBox').style.display = 'none';
        error_box = 'baby_errorInfo';
    } else if (form.name == 'search') {
        document.getElementById('baby_errorBox').style.display = 'none';
        error_box = 'baby_erroroptionBox';
    }

    if (!checkInput(sk)) {
        return outputError(getErrorMessage('sk'), error_box);
    }

    if (typeof form.mi != "undefined") {
        var mi = zen2han(form.mi.value);
        if (checkInput(mi) && false == isPrice(mi)) {
            return outputError(getErrorMessage('price'), error_box);
        } else if (checkInput(mi)) {
            query.push("mi=" + mi);
        }
    }

    if (typeof form.ma != "undefined") {
        var ma = zen2han(form.ma.value);
        if (checkInput(ma) && false == isPrice(ma)) {
            return outputError(getErrorMessage('price'), error_box);
        } else if (checkInput(ma)) {
	        query.push("ma=" + ma);
        }
    }

    if (typeof form.mi != "undefined" && typeof form.ma != "undefined") {
        if (checkInput(form.mi.value) && checkInput(form.ma.value) &&
	        parseInt(zen2han(form.mi.value)) > parseInt(zen2han(form.ma.value))) {
            return outputError(getErrorMessage('price_range'), error_box);
        }
    }

    for (var num = 0; num < form.elements.length; num++) {
        var elem = form.elements[num];

        if (elem.type == 'checkbox' || elem.type == 'radio') {
            if (true == elem.checked) {
                query.push(elem.name + '=' + encodeURIComponent(elem.value));
            }
        } else {
            if (elem.name != 'ca' &&
		        elem.name != 'sk' &&
		        elem.name != 'mi' &&
		        elem.name != 'ma' &&
		        elem.name != 'price_range' &&
		        elem.value != null &&
		        elem.name.length > 0 && elem.value.length > 0) {
                query.push(elem.name + '=' +  encodeURIComponent(elem.value));
            }
        }
    }

    var url = 'http://' + document.domain + '/shop/' + encodeURIComponent(sk) + '/' + domain + '/index.html';

    if (query.length > 0) {
       url += '?' + query.join('&');
    }

    document.location.href = url;

    return false;
}

/**
 * エラーメッセージ返却
 *
 * @param type
 */
function getErrorMessage(type)
{
    var messages = new Array();
    messages['sk']          = ['<h2>検索ワードが未入力です。</h2>',
                               '<p>検索ワードを入力し、再度検索してください。</p>'].join('');
    messages['price']       = ['<h2>価格入力値が不正です。</h2>',
                               '<p>価格には数字で入力してください。</p>'].join('');

    messages['price_range'] = ['<h2>価格入力値が不正です。</h2>',
                               '<p>価格の範囲指定に誤りがあります。</p>'].join('');

    messages['sk_narrow']     = ['<h2 class="baby_AllerrorGaiyo">絞込み検索 キーワードが未入力です。</h2>',
                                 '<p class="baby_AllerrorShosai">検索ワードを入力し、再度検索してください。</p>'].join('');

    messages['price_narrow']  = ['<h2 class="baby_AllerrorGaiyo">価格入力値が不正です。</h2>',
                                 '<p class="baby_AllerrorShosai">価格には数字で入力してください。</p>'].join('');

    messages['price_range_narrow'] = ['<h2 class="baby_AllerrorGaiyo">価格入力値が不正です。</h2>',
                                      '<p class="baby_AllerrorShosai">価格の範囲指定に誤りがあります。</p>'].join('');

    messages['sk_nodata']     = ['<h4>絞込み検索 キーワードが未入力です。</h4>',
                                 '<p>検索ワードを入力し、再度検索してください。</p>'].join('');

    messages['price_nodata']  = ['<h4>価格入力値が不正です。</h4>',
                                 '<p>価格には数字で入力してください。</p>'].join('');

    messages['price_range_nodata'] = ['<h4>価格入力値が不正です。</h4>',
                                      '<p>価格の範囲指定に誤りがあります。</p>'].join('');

    return messages[type];
}

/**
 * 絞込検索
 *
 * @param form
 * @param action
 */
function execNarrowSearch(form, action)
{
    var query = new Array();
    var pr    = '';
    for (var num = 0; num < form.price_range.length; num++) {
        if (form.price_range[num].checked && form.price_range[num].value.length > 0) {
            query.push('price_range=' + encodeURIComponent(form.price_range[num].value));
            pr = form.price_range[num].value;
        }
    }

    if (form.mi.value.length > 0) {
        if (false == isPrice(form.mi.value)) {
            return outputError(getErrorMessage('price_narrow'), 'baby_AllerrorInfo');
        }
        query.push('mi=' + encodeURIComponent(zen2han(form.mi.value)));
    }

    if (form.ma.value.length > 0) {
        if (false == isPrice(form.ma.value)) {
            return outputError(getErrorMessage('price_narrow'), 'baby_AllerrorInfo');
        }
        query.push('ma=' + encodeURIComponent(zen2han(form.ma.value)));
    }

    if (checkInput(form.mi.value) && checkInput(form.ma.value) && parseInt(zen2han(form.mi.value)) > parseInt(zen2han(form.ma.value))) {
        return outputError(getErrorMessage('price_range_narrow'), 'baby_AllerrorInfo');
    }

    if (pr == 'shiborikomi') {
        if (form.mi.value.length == 0 && form.ma.value.length == 0) {
            return outputError(getErrorMessage('price_range_narrow'), 'baby_AllerrorInfo');
        }
    }

    for (var num = 0; num < form.elements.length; num++) {
        var elem = form.elements[num];
        if (elem.type == 'hidden' && false == /ca|mi|ma|dm|sk/.test(elem.name)) {
            query.push(elem.name + '=' +  encodeURIComponent(elem.value));
        }
    }

    var path = '/' + action;
    if (action == 'shop') {
        if (typeof form.sk != 'undefined' && form.sk.length > 0) { 
            var search_word = transSpecialSign(form.sk.value);
            path += ['/',
                     encodeURIComponent(search_word),
                     '/',
                     encodeURIComponent(form.dm.value),
                     '/index.html'].join('');
        } else {
            path += ['/', encodeURIComponent(form.dm.value), '/index.html'].join('');
        }

        if (typeof form.ca != 'undefined') {
            query.push('ca=' + form.ca.value);
        }

    } else if (action == 'category') {
        var category_dir = form.ca.value.replace(/\-/g, '/');
        if (typeof form.sk != 'undefined' && form.sk.value.length > 0) { 
            var search_word = transSpecialSign(form.sk.value);
            path += ['/',
                     encodeURIComponent(search_word),
                     '/',
                     category_dir,
                     '/index.html'].join('');
        } else {
            path += ['/', category_dir, '/index.html'].join('');
        }
    } else if (action == 'search') {
        var search_word = transSpecialSign(form.sk.value);
        if (!checkInput(form.sk.value)) {
            return outputError(getErrorMessage('sk_narrow'), 'baby_AllerrorInfo');
        }
        path += ['/', encodeURIComponent(search_word), '/index.html'].join('');

        if (typeof form.ca != 'undefined') {
            query.push('ca=' + form.ca.value);
        }
    }

    if (checkInput(form.ek.value)) {
        query.push('ek=' + encodeURIComponent(form.ek.value));
    }

    var ot = '';
    for (var otnum = 0; otnum < form.ot.length; otnum++) {
        if (form.ot[otnum].checked) {
            ot = form.ot[otnum].value;
        }
    }
    query.push('ot=' + ot);

    url = path + '?' + query.join('&');
    document.location.href = url;

    return false;
}

function zen2han(str)
{
    var han = "0123456789";
    var zen = "０１２３４５６７８９";
    var result = "";
    for (var num = 0; num < str.length; num++) {
        var current = str.charAt(num);
        var idx     = zen.indexOf(current, 0);
        if (idx >= 0) {
            current = han.charAt(idx);
        }
        result += current;
    }
    return result; 
}

/**
 * エラー出力
 *
 * @param message
 * @param box
 */
function outputError(message, box)
{
    var error_box = document.getElementById(box);
    error_box.innerHTML = message;
    error_box.style.display = 'block';

    if (box == 'baby_errorInfo') {
        document.getElementById('baby_errorBox').style.display = 'block';
    }

    return false;
}

/**
 * 特殊文字変換処理
 * 
 * @param word
 */
function transSpecialSign(word)
{
    return word.replace(/(#|&|\?|\/|%)/g,
                        function ($0) {
                            return String.fromCharCode($0.charCodeAt(0) + 65248);
                        });
}
