if (typeof UMESHU == 'undefined') {
    var UMESHU = {};
}

UMESHU.ua = {};
UMESHU.isCommentChanged = false;

if (navigator.userAgent.match(/AppleWebKit\/\d.+Safari\/\d.+/)) {
    UMESHU.ua.isSafari = true;
}

UMESHU.commentInit = function(el) {
    if (!UMESHU.isCommentChanged) {
        UMESHU.isCommentChanged = true;
        el.val('');
        el.addClass('changed');
    }
}

$(document).ready(function() {
    $('input.comment').val('感想をつけて投稿してみよう！');
    $('input.comment').click(function() {
        UMESHU.commentInit($(this));
    });
    $('input.comment').focus(function() {
        UMESHU.commentInit($(this));
    });
    $('#hotpepper_showcase li').click(function() {
        UMESHU.showOverlay(this.id);
    });
    $('input.blogparts-color').click(function() {
        UMESHU.switchBlogpartsColor(this.value);
    });
});

UMESHU.switchBlogpartsColor = function(value) {
    var code = $('#blogparts-code').text().replace(/color=\d+/, 'color=' + value);
    $('#blogparts-code').text(code);
    $('div.blogparts-preview > div').hide();
    $('#blogparts-preview-' + value).show();
}

UMESHU.addFavoriteBrand = function(brandId) {
    $('#add_favorite_brand_' + brandId).attr('disabled', true);
    var endPoint = '/favorite/brand/create?format=json';
    var data = {
        'brand_id': brandId,
        'one_time_token': $('input[name="one_time_token"]:first').val()
    };
    $.ajax({
        "type": "POST",
        "url": endPoint,
        "data": data,
        "success": function(json) {
            json = eval('(' + json + ')');
            if (json.result) {
                $('#add_favorite_brand_' + json.object_id).hide();
                $('#is_favorite_brand_' + json.object_id).show();
            }
        }
    });
}

UMESHU.addWishBrand = function(brandId) {
    $('#add_wish_brand_' + brandId).attr('disabled', true);
    var endPoint = '/wish/brand/create?format=json';
    var data = {
        'brand_id': brandId,
        'one_time_token': $('input[name="one_time_token"]:first').val()
    };
    $.ajax({
        "type": "POST",
        "url": endPoint,
        "data": data,
        "success": function(json) {
            json = eval('(' + json + ')');
            if (json.result) {
                $('#add_wish_brand_' + json.object_id).hide();
                $('#is_wish_brand_' + json.object_id).show();
            }
        }
    });
}

UMESHU.drinkCreate = function(form) {
    if (!UMESHU.isCommentChanged) {
        form.comment.value = '';
    }
    form.submit();
    return false;
}

// overlay
UMESHU.showOverlay = function(id) {
    // hide select elements
    $('select').hide();

    var height = $('body:first').height();
    var width = document.documentElement.clientWidth;
    $('#overlay').height(height).width(width).show().fadeTo(500, 0.8, function() {
        if (UMESHU.ua.isSafari) {
            var scrollTop = document.body.scrollTop;
        } else {
            var scrollTop = document.documentElement.scrollTop;
        }
        var top = (document.documentElement.clientHeight - $('#layer_info').height()) / 2 + scrollTop;
        var left = ($('html').width() - $('#layer_info').width()) / 2;
        $('#layer_info').css('top', top).css('left', left).show();
        UMESHU.loadHotpepperMap(id);
    });
}
// hotpepper map
UMESHU.loadHotpepperMap = function(id) {
    $.ajax({
        url: 'http://webservice.recruit.co.jp/hotpepper/gourmet/v1/',
        dataType: 'jsonp',
        data: {
            key: '465000843c979890',
            id: id,
            format: 'jsonp'
        },
        success: function(json) {
            var shop = json.results.shop[0];
            $('#layer_info .name a').text(shop.name).attr('href', '/hotpepper/show/' + shop.id);
            $('#layer_info .photo a').append('<img src="' + shop.photo.pc.l + '" />').attr('href', '/hotpepper/show/' + shop.id);
            $('#layer_info .catch').text(shop['catch']);
            var map = new GMap2(document.getElementById('layer_map'))
            UMESHU.lat = shop.lat;
            UMESHU.lng = shop.lng;
            var latLng = new GLatLng(shop.lat, shop.lng);
            map.setCenter(latLng, 16);
            map.disableDoubleClickZoom();
            map.addControl(new GSmallMapControl());
            map.addControl(new GMenuMapTypeControl());
            var marker = new GMarker(latLng);
            map.addOverlay(marker);
        },
        error: function() {
        }
    });
}
// streetview
UMESHU.showStreetView = function() {
    var client = new GStreetviewClient();
    var latLng = new GLatLng(UMESHU.lat, UMESHU.lng);
    client.getNearestPanorama(latLng, function(res) {
        if (res.code != 200) {
        } else {
            $('#layer_map').hide();
            $('#layer_streetview').show();
            panorama = new GStreetviewPanorama(document.getElementById('layer_streetview'), {
                latlng: res.location.latlng,
                pov: res.location.pov
            });
        }
    });
}
UMESHU.showMap = function() {
    $('#layer_map').show();
    $('#layer_streetview').hide();
}
UMESHU.closeLayer = function() {
    $('#overlay').fadeTo(500, 0).hide();
    $('#layer_info').hide();
    $('#layer_map').show();
    $('#layer_streetview').hide();
    $('#layer_info .name a').empty();
    $('#layer_info .photo a').empty();
    $('#layer_info .catch').empty();
    
    // show select elements
    $('select').show();
}

UMESHU.changeServiceArea = function() {
    var code = $('#service_area option:selected').val();
    $.cookie('h_sa', code, { expires: 30 });
    $.ajax({
        url: 'http://webservice.recruit.co.jp/hotpepper/gourmet/v1/',
        dataType: 'jsonp',
        data: {
            key: '465000843c979890',
            keyword: '梅酒',
            service_area: code,
            count: 16,
            format: 'jsonp'
        },
        success: function(json) {
            var shops = json.results.shop;
            $('#hotpepper_showcase').empty();
            for (var i = 0;  i< shops.length; i++) {
                var img = $('<img />').attr('src', shops[i].photo.pc.s);
                var li = $('<li></li>').append(img).addClass('clickable').attr('id', shops[i].id);
                li.click(function() {
                    UMESHU.showOverlay(this.id);
                });
                $('#hotpepper_showcase').append(li);
            }
        }
    });
}

// delete
UMESHU.drinkDeleteStart = function(drink_id) {
    this.removeError();
    if (confirm('削除してよろしいですか？')) {
        var endPoint = '/drink/delete/' + drink_id + '?format=json';
        var data = {
            'one_time_token': $('input[name="one_time_token"]:first').val()
        };
        $.ajax({
            "type": "POST",
            "url": endPoint,
            "data": data,
            "success": function(json) {
                json = eval('(' + json + ')');
                if (!json.errors) {
                    $('#drink_list_' + json.drink_id).fadeOut(1000);
                    $('input[name="one_time_token"]:first').val(json.one_time_token);
                }
            }
        });
    }
}

UMESHU.favoriteDeleteStart = function (id, target) {
    if (confirm('削除してよろしいですか？')) {
        var endPoint = '/favorite/' + target + '/delete/' + id + '?format=json';
        var data = {
            'one_time_token': $('input[name="one_time_token"]:first').val()
        };
        $.ajax({
            "type": "POST",
            "url": endPoint,
            "data": data,
            "success": function(json) {
                json = eval('(' + json + ')');
                if (!json.errors) {
                    $('#favorite_list_' + json.favorite_id).fadeOut(1000);
                    $('input[name="one_time_token"]:first').val(json.one_time_token);
                }
            }
        });
    }
}

UMESHU.wishDeleteStart = function (id, target) {
    if (confirm('削除してよろしいですか？')) {
        var endPoint = '/wish/' + target + '/delete/' + id + '?format=json';
        var data = {
            'one_time_token': $('input[name="one_time_token"]:first').val()
        };
        $.ajax({
            "type": "POST",
            "url": endPoint,
            "data": data,
            "success": function(json) {
                json = eval('(' + json + ')');
                if (!json.errors) {
                    $('#wish_list_' + json.wish_id).fadeOut(1000);
                    $('input[name="one_time_token"]:first').val(json.one_time_token);
                }
            }
        });
    }
}

// edit
UMESHU.drinkEditStart = function(drink_id) {
    this.removeError();
    $('#drink_edit_link_' + drink_id).hide();
    $('#drinked_at_outer_' + drink_id).hide();
    $('#comment_outer_' + drink_id).hide();

    //$('#drinked_at_edit_area_' + drink_id).val($('#drinked_at_' + drink_id).text());
    $('#comment_edit_area_' + drink_id).val($('#comment_' + drink_id).text());

    $('#drinked_at_edit_area_' + drink_id).show();
    $('#comment_edit_area_' + drink_id).show();
    $('#do_drink_edit_' + drink_id).show();
    $('#cancel_drink_edit_' + drink_id).show();
}
UMESHU.doDrinkEdit = function(drink_id) {
    this.removeError();
    var endPoint = '/drink/edit/' + drink_id + '?format=json';
    var data = {
        'drinked_at': $('#drinked_at_edit_area_' + drink_id).val(),
        'comment': $('#comment_edit_area_' + drink_id).val(),
        'one_time_token': $('input[name="one_time_token"]:first').val()
    };
    $('#do_drink_edit_' + drink_id).attr('disabled', true);
    $('#cancel_drink_edit_' + drink_id).attr('disabled', true);
    $.ajax({
        "type": "POST",
        "url": endPoint,
        "data": data,
        "success": function(json) {
            UMESHU.callbackDrinkEdit(eval("(" + json + ")"));
        }
    });
}
UMESHU.callbackDrinkEdit = function(json) {
    if (json.errors) {
        var drink_id = json.drink_id;
        $('#do_drink_edit_' + drink_id).attr('disabled', false);
        $('#cancel_drink_edit_' + drink_id).attr('disabled', false);
        $('<p class="error_message"></p>').text(json.errors['date'] + json.errors.time).appendTo($('#drink_list_' + drink_id));
        $('#drink_list_' + drink_id).addClass('error');
    } else {
        var drink_id = json.drink_id;
        $('#drinked_at_' + drink_id).text(json.drinked_at);
        $('#comment_' + drink_id).text(json.comment);
        $('#drinked_at_outer_' + drink_id).show();
        $('#comment_outer_' + drink_id).show();
        $('#drink_edit_link_' + drink_id).show();
        $('#drinked_at_edit_area_' + drink_id).hide();
        $('#comment_edit_area_' + drink_id).hide();
        $('#do_drink_edit_' + drink_id).attr('disabled', false).hide();
        $('#cancel_drink_edit_' + drink_id).attr('disabled', false).hide();
    }
    $('input[name="one_time_token"]:first').val(json.one_time_token);
}

// cancel edit
UMESHU.cancelDrinkEdit = function(drink_id) {
    this.removeError();
    $('#drinked_at_edit_area_' + drink_id).hide();
    $('#comment_edit_area_' + drink_id).hide();
    $('#do_drink_edit_' + drink_id).hide();
    $('#cancel_drink_edit_' + drink_id).hide();
    $('#drink_edit_link_' + drink_id).show();
    $('#drinked_at_outer_' + drink_id).show();
    $('#comment_outer_' + drink_id).show();
}

// remove error
UMESHU.removeError = function() {
    $('*').removeClass('error');
    $('.error_message').remove();
}
