/* common */
function select_type() {
    var select_val = $("#pet_type").val();
    $.get("/api/kind/list", { type: select_val, format: "json"},
        function(data){
            var json = eval("("+data+")");
            var kinds = json["data"];
            $("#kind").empty().append("<option value=''>--</option>");
            for(var i = 0; i < kinds.length; i++) { 
                var item = kinds[i];
                $("#kind").append(
                    "<option value=" + item["id"] + ">" + item["name"] + "</option>"
                );
            }
        }
    );
}

function confirm_dialog(param) {
    $("<div/>").append("<p>"+param["message"]+"</p>").dialog({
        bgiframe: true,
        resizable: false,
        height: 140,
        modal: true,
        closeText: 'hide',
        overlay: {
           backgroundColor: '#000',
           opacity: 0.5
        },
        buttons : {
            'はい': function() {
                $(this).dialog('close');
                window[param["process"]](param);
            },
            'いいえ': function() {
                $(this).dialog('close');
                return false;
            }
        }
    });
}

function delete_confirm(target) {
    $("<div/>").append("<p>削除してよろしいですか？</p>").dialog({
        bgiframe: true,
        resizable: false,
        height: 140,
        modal: true,
        closeText: 'hide', 
        overlay: {
           backgroundColor: '#000', 
           opacity: 0.5
        },      
        buttons : {
            'いいえ': function() {
                $(this).dialog('close');
                return false;
            },
            'はい': function() {
                $(this).dialog('close');
                document.forms[target].submit();
            }      
        }       
    });
}


function massage_error(param) {
    var errors = param["error"];
    var html = '<ul>'; 
    for (e in errors) {
        html = html + '<li><span>' + errors[e] + '</span></li>';
    }
    html = html + '<ul>';
    $("<div class=\"error\" style=\"border: none;\">").append(html).dialog({
        bgiframe: true,
        height: 140,
        modal: true,
        buttons : {
            '閉じる': function() {
                $(this).dialog('close');
            }
        }
    });
}


function message_dialog(message) {
    $("<div/>").append("<p>"+ message +"</p>").dialog({
        bgiframe: true,
        height: 140,
        buttons : {
            '閉じる': function() {
                $(this).dialog('close');
            }       
        }       
    });
}


function add_action(param) {
    $.ajax({
        type: "POST", 
        url: param['api_url'],
        data: param["query"],
        success: function(data){
            var json = eval("("+data+")");
            if ( json["status"] == "success" ) {
                var item = json["data"];
                var code = param["html"];
                var pallet = param["emoji"];
                for (key in item) {
                    reg = new RegExp(':' + key, 'g');
                    code = code.replace(reg, item[key]);
                    for (index in pallet) {
                        pallet[index][0] = pallet[index][0].replace(reg, item[key]);
                        pallet[index][1] = pallet[index][1].replace(reg, item[key]);
                    }
                }

                if ( param["target"] && $( param["target"] ).size() ) {
                  $( param["target"] ).after( code );
                }
                else {
                  $( param["default_target"] ).prepend( code );
                }
                $("<div/>").append("<p>" + item["message"] + "</p>").dialog({
                    bgiframe: true,
                    height: 140,
                    modal: true,
                    buttons : {
                        '閉じる': function() {
                            $(this).dialog('close');
                        }       
                    }       
                });
                for (input in param["clear"]) $(param["clear"][input]).val('');
                for (index in pallet) {
                    emoji.reset(pallet[index][0], pallet[index][1]);
                }
                if ( param["hide"] ) $(param["hide"]).hide(300); 
                if ( param["toggle"] ) $(param["toggle"]).toggle(300); 
                if ( $('#last_key').size() ) $('#last_key').val(item[param['key_name']]);
            }
            else {
                massage_error(json);
            }
        }
    });
}

function delete_action(param) {
   $.ajax({
        type: "POST",
        url: param['api_url'],
        data: param["query"],
        success: function(data){
            var json = eval("("+data+")");
            if ( json["status"] == "success" ) {
                var item = json["data"];
                $( param["target"] ).hide("slow");
                $("<div/>").append("<p>" + item["message"] + "</p>").dialog({
                    bgiframe: true,
                    height: 140,
                    modal: true,
                    buttons : {
                        '閉じる': function() {
                            $(this).dialog('close');
                        }
                    }
                });
            }
            else {
                massage_error(json);
            }
        }
    });
}

function edit_action(param) {
    $.ajax({
        type: "POST",
        url: param['api_url'],
        data: param["query"],
        success: function(data){
            var json = eval("("+data+")");
            if ( json["status"] == "success" ) {
                var item = json["data"];
                var target = $( param["target"] );
                var code = param["html"];
                var pallet = param["emoji"];
                for (key in item) {
                    reg = new RegExp(':' + key, 'g');
                    code = code.replace(reg, item[key]);
                    for (index in pallet) {
                        pallet[index][0] = pallet[index][0].replace(reg, item[key]);
                        pallet[index][1] = pallet[index][1].replace(reg, item[key]);
                    }
                }
                target.after( code );
                target.remove();
                $("<div/>").append("<p>" + item["message"] + "</p>").dialog({
                    bgiframe: true,
                    height: 140,
                    modal: true,
                    buttons : {
                        '閉じる': function() {
                            $(this).dialog('close');
                        }
                    }
                });
                for (index in pallet) {
                    emoji.reset(pallet[index][0], pallet[index][1]);
                }
                for (input in param["clear"]) $(param["clear"][input]).val('');
                if ( param["hide"] ) $(param["hide"]).hide(300); 
            }
            else {
                massage_error(json);
            }
        }
    });
}

/* favorite report */
function delete_favorite(id, target) {
    confirm_dialog({
        id: id, 
        process: 'delete_action',
        api_url: '/api/internal/favorite/delete',
        query: 'id=' + id + '&target=' + target,
        tlearget: '#favorite_' + id,
        message: 'お気に入りを削除します。よろしいですか？' 
    });
}

/* footprint report */

function delete_footprint(id, pet_id) {
    confirm_dialog({
        id: id,
        process: 'delete_action',
        api_url: '/api/internal/footprint/delete',
        query: 'id=' + id + '&pet_id=' + pet_id,
        target: '#footprint_' + pet_id + '_' + id,
        message: '足あとを削除します。よろしいですか？'
    });
}

/* photo */

function delete_photo(id) {
    confirm_dialog({
        id: id,
        process: 'delete_action',
        api_url: '/api/internal/album/delete',
        query: 'photo_id=' + id,
        target: '#photo_' + id,
        message: '写真を削除します。よろしいですか？'
    });
}

function rotate_photo(id,steps,size) {
    $.ajax({
        type: "POST",
        url: '/api/internal/album/rotate',
        data: 'photo_id=' + id + "&steps=" + steps,
        success: function(data){
            var json = eval("("+data+")");
            if ( json["status"] == "success" ) {
                var item = json["data"];
                $("#photo_" + id + " img").attr("src", item["image_src"][size]);
            }
            else {
                massage_error(json);
            }
        }
    });
}

/* folder */
function add_folder(target) {
    var name = $(target).val();
    var last_key = $('#last_key').val();
    add_action({
        api_url: '/api/internal/folder/edit',
        query: 'name=' + name,
        target: '#folder_' + last_key,
        default_target: '#folderList ul',
        key_id: 'key',
        clear: new Array( target ),
        emoji: [['pb_folder_:id','input_folder_:id']],
        html: '<li id="folder_:id"><div class="folderToggle"><h3 class="folderTitle"><a href="/album/?folder_id=:id">:name</a>[:count枚]</h3><p class="delete">[&nbsp;<a href="#" onclick="edit_folder(:id);return false;">編集</a>&nbsp;]</p><p class="delete">[&nbsp;<a href="#" onclick="delete_folder(:id);return false;">削除</a>&nbsp;]</p></div><div class="folderInput folderToggle" style="display: none;"><img src="/img/pc/btn/icon_emoji.gif" id="pb_folder_:id" style="cursor:pointer;" alt="絵文字" title="クリックすると絵文字パレットを表示します" class="pallet_button" /><input id="input_folder_:id" name="name" type="text" value="' + name + '" /><input onclick="update_folder(:id)" type="button" value="決定" /></div></li>'
    });
}

function edit_folder(id) {
    $("#folder_" + id + " .folderToggle").toggle(300);
}
function update_folder(id) {
    var text = $('#input_folder_' + id ).val();
    edit_action({
        id: id,
        process: 'update_folder',
        api_url: '/api/internal/folder/edit',
        query: 'folder_id=' + id + '&name=' + text,
        target: '#folder_' + id,
        emoji: [['pb_folder_:id','input_folder_:id']],
        html: '<li id="folder_:id"><div class="folderToggle"><h3 class="folderTitle"><a href="/album/?folder_id=:id">:name</a>[:count枚]</h3><p class="delete">[&nbsp;<a href="#" onclick="edit_folder(:id);return false;">編集</a>&nbsp;]</p><p class="delete">[&nbsp;<a href="#" onclick="delete_folder(:id);return false;">削除</a>&nbsp;]</p></div><div class="folderInput folderToggle" style="display: none;"><img src="/img/pc/btn/icon_emoji.gif" id="pb_folder_:id" style="cursor:pointer;" alt="絵文字" title="クリックすると絵文字パレットを表示します" class="pallet_button" /><input id="input_folder_:id" name="name" type="text" value="' + text + '" /><input onclick="update_folder(:id)" type="button" value="決定" /></div></li>'
    });
}

function delete_folder(id) {
    confirm_dialog({
        id: id,
        process: 'delete_action',
        api_url: '/api/internal/folder/delete',
        query: 'folder_id=' + id,
        target: '#folder_' + id,
        message: 'フォルダを削除します。よろしいですか？'
    });
}

/* ??? */

function change_value(loop) { $('#change_' + loop ).val(1); }

/* status message */

function delete_status_message(id) {
    confirm_dialog({
        id: id,
        process: 'delete_action',
        api_url: '/api/internal/status_message/delete',
        query: 'message_id=' + id,
        target: '#message_' + id,
        message: 'ひとことを削除します。よろしいですか？'
    });
}


/* profile */

function profile_add() {
    $("#addForm").show(300);
}
function profile_insert() {
    var name   = $("#new_name").val();
    var value  = $("#new_value").val();
    var pet_id = $('#pet_id').val();
    var last_key = $('#last_key').val();
    add_action({
        api_url: '/api/internal/profile/edit',
        query: 'name=' + name + '&value=' + value + '&pet_id=' + pet_id, 
        target: '#item_' + last_key,
        default_target: '#profileList',
        key_name: 'key',
        hide: '#addForm',
        clear: new Array( '#new_name', '#new_value' ),
        emoji: [['pb_name_:key','name_:key'],['pb_value_:key','value_:key']],
        html: '<div class="profileOuter" id="item_:key"><div class="profile"><h3 class="profileHeadline question">:name</h3><div class="profileToggle"><p class="answer editInput">:value</p><ul class="function editInput"><input class="key" name="key" type="hidden" value=":key" /><li class="edit">[<a href="javascript:profile_edit(\':key\')">編集</a>]</li><li class="delete">[<a href="javascript:profile_delete(\':key\')">削除</a>]</li></ul></div><div class="profileEditForm profileToggle" id="edit_:key" style="display: none"><h3 class="editTitle">質問</h3><img src="/img/pc/btn/icon_emoji.gif" id="pb_name_:key" style="cursor:pointer;" alt="絵文字" title="クリックすると絵文字パレットを表示します" class="pallet_button" /><div class="editInput"><input class="text" id="name_:key" name="name" type="text" value="' + name + '" /></div><h3 class="editTitle">答え</h3><img src="/img/pc/btn/icon_emoji.gif" id="pb_value_:key" style="cursor:pointer;" alt="絵文字" title="クリックすると絵文字パレットを表示します" class="pallet_button" /><div class="editInput"><textarea cols="30" id="value_:key" name="value" rows="3">' + value + '</textarea></div><p class="supplement">※電話番号やメールアドレスなどの個人情報は入力しないでください。</p><div classs="submit"><input class="submit" onclick="profile_change(\':key\')" type="button" value="質問の編集をする" /><input class="submit" onclick="profile_delete(\':key\')" type="button" value="質問を削除する" /></div></div></div>'
    });
    //$("#new_name").val('');
    //$("#new_value").val('');
    //$("#addForm").hide(300);
}

function profile_edit(key) {
    $('#item_' + key + " .profileToggle").toggle(300);
}       

function profile_change(key) {
    var name   = $("#name_" + key).val();
    var value  = $("#value_" + key).val();
    var pet_id = $('#pet_id').val();
    edit_action({
        api_url: '/api/internal/profile/edit',
        query: 'key=' + key + '&name=' + name + '&value=' + value + '&pet_id=' + pet_id, 
        target: '#item_' + key,
        emoji: [['pb_name_:key','name_:key'],['pb_value_:key','value_:key']],
        html: '<div class="profileOuter" id="item_:key"><div class="profile"><h3 class="profileHeadline question">:name</h3><div class="profileToggle"><p class="answer editInput">:value</p><ul class="function editInput"><input class="key" name="key" type="hidden" value=":key" /><li class="edit">[<a href="javascript:profile_edit(\':key\')">編集</a>]</li><li class="delete">[<a href="javascript:profile_delete(\':key\')">削除</a>]</li></ul></div><div class="profileEditForm profileToggle" id="edit_:key" style="display: none"><h3 class="editTitle">質問</h3><img src="/img/pc/btn/icon_emoji.gif" id="pb_name_:key" style="cursor:pointer;" alt="絵文字" title="クリックすると絵文字パレットを表示します" class="pallet_button" /><div class="editInput"><input class="text" id="name_:key" name="name" type="text" value="' + name + '" /></div><h3 class="editTitle">答え</h3><img src="/img/pc/btn/icon_emoji.gif" id="pb_value_:key" style="cursor:pointer;" alt="絵文字" title="クリックすると絵文字パレットを表示します" class="pallet_button" /><div class="editInput"><textarea cols="30" id="value_:key" name="value" rows="3">' + value + '</textarea></div><p class="supplement">※電話番号やメールアドレスなどの個人情報は入力しないでください。</p><div classs="submit"><input class="submit" onclick="profile_change(\':key\')" type="button" value="質問の編集をする" /><input class="submit" onclick="profile_delete(\':key\')" type="button" value="質問を削除する" /></div></div></div>'
    });
    //$('#item_' + key + " .profileToggle").toggle(300);
}       


function profile_delete(key) {
    var pet_id = $('#pet_id').val();
    confirm_dialog({
        id: key,
        process: 'delete_action',
        api_url: '/api/internal/profile/delete',
        query: 'key=' + key + '&pet_id=' + pet_id,
        target: '#item_' + key,
        message: '質問を削除します。よろしいですか？'
    });
}

function profile_sort() {
    var data = [];
    $('.key').each( function(i,v){
        data.push( v.value );
    });
    $('#profile_keys').val( data.toString() );
}


/* link */

function link_add() {
    $("#addForm").show(300);
}
function link_insert() {
    var name        = $("#new_title").val();
    var url         = $("#new_url").val();
    var description = $('#new_description').val() || '';
    var last_key    = $('#last_key').val();
    add_action({
        api_url: '/api/internal/link/edit',
        query: 'link_title=' + name + '&url=' + url + '&description=' + description, 
        target: '#item_' + last_key,
        default_target: '#linkList',
        hide: '#addForm',
        key_name: 'id',
        clear: new Array( '#new_title', '#new_url', "#new_description" ),
        emoji: [['pb_title_:id','title_:id'], ['pb_desc_:id','description_:id']],
        html: '<div class="editInner" id="item_:id"><h3 class="editTitle">:title</h3><p class="editInput">:url</p><p class="editInput">:description</p><ul class="editInput function"><li class="edit">[<a href="javascript:link_edit(:id)">編集</a>]</li><li claass="delete">[<a href="javascript:link_delete(:id)">削除</a>]</li></ul><div class="newLink" style="display: none;"><div class="editInner"><h3 class="editTitle">リンク名</h3><img src="/img/pc/btn/icon_emoji.gif" id="pb_title_:id" style="cursor:pointer;" alt="絵文字" title="クリックすると絵文字パレットを表示します" class="pallet_button" /><p class="editInput"><input class="text" id="title_:id" name="title_:id" type="text" value="' + name + '" /></p></div><div class="editInner"><h3 class="editTitle">URL</h3><p class="editInput"><input class="text" id="url_:id" name="url_:id" type="text" value=":url" /></p></div><div class="editInner"><h3 class="editTitle">リンクの説明</h3><img src="/img/pc/btn/icon_emoji.gif" id="pb_desc_:id" style="cursor:pointer;" alt="絵文字" title="クリックすると絵文字パレットを表示します" class="pallet_button" /><p class="editInput"><textarea cols="20" id="description_:id" name="description_:id" rows="3">' + description + '</textarea></p></div><div class="submit"><input class="submit" onclick="link_change(:id)" type="button" value="変更する" /></div></div></div>'
    });
    $('#linkList .description').hide(300);
}

function link_edit(id) {
    $('#item_' + id + " .newLink").toggle(300);
}       

function link_change(id) {
    var name        = $("#title_" + id ).val();
    var url       = $("#url_" + id ).val();
    var description = $('#description_' + id ).val() || '';
    edit_action({
        api_url: '/api/internal/link/edit',
        query: 'link_id=' + id +'&link_title=' + name + '&url=' + url + '&description=' + description, 
        target: '#item_' + id,
        emoji: [['pb_title_:id','title_:id'], ['pb_desc_:id','description_:id']],
        html: '<div class="editInner" id="item_:id"><h3 class="editTitle">:title</h3><p class="editInput">:url</p><p class="editInput">:description</p><ul class="editInput function"><li class="edit">[<a href="javascript:link_edit(:id)">編集</a>]</li><li claass="delete">[<a href="javascript:link_delete(:id)">削除</a>]</li></ul><div class="newLink" style="display: none;"><div class="editInner"><h3 class="editTitle">リンク名</h3><img src="/img/pc/btn/icon_emoji.gif" id="pb_title_:id" style="cursor:pointer;" alt="絵文字" title="クリックすると絵文字パレットを表示します" class="pallet_button" /><p class="editInput"><input class="text" id="title_:id" name="title_:id" type="text" value="' + name + '" /></p></div><div class="editInner"><h3 class="editTitle">URL</h3><p class="editInput"><input class="text" id="url_:id" name="url_:id" type="text" value=":url" /></p></div><div class="editInner"><h3 class="editTitle">リンクの説明</h3><img src="/img/pc/btn/icon_emoji.gif" id="pb_desc_:id" style="cursor:pointer;" alt="絵文字" title="クリックすると絵文字パレットを表示します" class="pallet_button" /><p class="editInput"><textarea cols="20" id="description_:id" name="description_:id" rows="3">' + description + '</textarea></p></div><div class="submit"><input class="submit" onclick="link_change(:id)" type="button" value="変更する" /></div></div></div>'
    });
    //$('#item_' + id + " .newLink").toggle(300);
}


function link_delete(id) {
    confirm_dialog({
        id: id,
        process: 'delete_action',
        api_url: '/api/internal/link/delete',
        query: 'id=' + id,
        target: '#item_' + id,
        message: 'リンクを削除します。よろしいですか？'
    });
}

/* favorite */
function add_favorite(type,id) {
    $.ajax({
        type: "POST", 
        url: '/api/internal/favorite/' + type,
        data: 'id=' + id,
        success: function(data){
            var json = eval("("+data+")");
            if ( json["status"] == "success" ) {
                var item = json["data"];
                $('.favorite_' + type).hide(30);
                $("<div/>").append("<p>" + item["message"] + "</p>").dialog({
                    bgiframe: true,
                    height: 140,
                    buttons : {
                        '閉じる': function() {
                            $(this).dialog('close');
                        }
                    }
                });
            }       
            else {  
                massage_error(json);
            }       
        }       
    });
}

/* pet */
function release_pet(name) {
    confirm_dialog({
        process: 'do_release_pet',
        message: name + 'のプロフィールを削除してよろしいですか？' 
    });
}
function do_release_pet() {
    $('.releaseForm').submit(); 
}
