function show_add_tag_form() {
    Element.toggle('add_tag_form', 'show_tag_form_link');
    setTimeout(function() {
        try {
            $('input_tag').focus;
        } catch(e) {
        }
    }, 10);
}

function hide_add_tag_form() {
    $('input_tag').value = '';
    Element.toggle('show_tag_form_link', 'add_tag_form');
}

function add_tag(form) {
    $('tag_submit').disable = true;
    var url = '/api/tag/input';
    var params = Form.serialize(form);
    new Ajax.Request(
        url,
        {
            method: 'post',
            parameters: params,
            onComplete: add_tag_finish,
            onFailure: function(req) {
                print_error('busy');
                show_error();
            }
        }
    );
}

function add_tag_finish(req) {
    var json = JSON.parse(req.responseText);
    if(json) {
        if(!json.isSuccess) {
            var title = '以下の項目について確認してください。';
            var body = '';
            for (i=json.messages.length; i>0;i--) {
                body += json.messages[(i-1)] + '<br />';
            }
            show_error({ title : title, body: body });
        } else {
            $('ranking_tags').innerHTML = tag_html(json);
            hide_add_tag_form();
        }
    }
    else {
        print_error('busy');
        show_error();
        req = null;
    }
}

function delete_tag_relation(ranking_id, relation_id) {
    if ( !confirm('削除しますか?') ) return;
    var url = '/api/tag/delete';
    var params = 'ranking_id='   + ranking_id +
                 '&relation_id=' + relation_id;
    new Ajax.Request(
        url,
        {
            method: 'post',
            parameters: params,
            onComplete: delete_tag_relation_finish,
            onFailure: function(req) {
                print_error('busy');
                show_error();
            }
        }
    );
}

function delete_tag_relation_finish(req) {
    var json = JSON.parse(req.responseText);
    if (json) {
        if(!json.isSuccess) {
            var title = '以下の項目について確認してください。';
            var body = '';
            for (i=json.messages.length; i>0;i--) {
                body += json.messages[(i-1)] + '<br />';
            }
            show_error({ title : title, body: body });
        } else {
            //var html = TrimPath.processDOMTemplate('tmpl_tags', json);
            $('ranking_tags').innerHTML = tag_html(json);
        }
    }
    else {
        print_error('busy');
        show_error();
        req = null;
    }
}

function tag_html(json) {
  var tags = json.tags;
  var ranking_id = json.id;
  for (var i=0,len=tags.length, html=[]; i<len; i++) {
    var tag = tags[i];
    html.push([
      '<span>',
      '<a href="' + tag.permalink + '" title="' + tag.tag + '">' + tag.tag + '</a>',
      '<a href="javascript:void(0);" onclick="delete_tag_relation(' + ranking_id + ',' + tag.t2r_id + ');" title="タグを削除"><img src="/img/news/graph/btn_delete.gif" width="15" height="14" alt="削除" /></a>',
      '</span>',
    ].join(""));
  }
  return html.join("");
}
