var description_length = 100;
var div;
var content;
var original_content_html = '';
var right_flag = 0;
var right;
var original_right_html = '';
var button;

function cocolog_archive_extention() {
    div = document.getElementsByTagName('div');
    for ( var i = 0; i < div.length; i ++ ) {
        if ( div[i].className == 'content' ) {
            content = div[i];
            original_content_html = content.innerHTML;
        }
        if ( div[i].id == 'right' ) {
            right_flag = 1;
        }
        if ( div[i].className == 'sidebar' && right_flag == 1 ) {
            right = div[i];
            original_right_html = right.innerHTML;
        }
    }

    right.innerHTML = '<div class="module-typelist module list"><h2 class="module-header">表示モード</h2><div class="module-top"></div><div class="module-content module-body"><ul class="module-list"><li class="module-list-item"><span id="show_changer_button"><a href="javascript:show_title();" style="text-decoration: none;">タイトルのみ</a>/<a href="javascript:show_title( new Boolean(true) )" style="text-decoration: none;">タイトルと概要</a></span></li></ul></div><div class="module-bottom"></div></div>' + right.innerHTML;
	button = document.getElementById('show_changer_button');
    if ( getArgs().type == "title" ) {
        show_title();
    } else if ( getArgs().type == "description" ) {
        show_title( new Boolean(true) );
	}
}

function show_original () {
    content.innerHTML = original_content_html;
    if ( navigator.userAgent.indexOf("Safari") == -1 ) {
        location.hash = 'type=original';
    }
}

function show_title ( with_description, reverse ) {
    show_original();
    var titles = window.document.getElementsByTagName('h3');
    var a_list = document.getElementsByTagName('a');
    var span_list = window.document.getElementsByTagName('span');
    var permalinks = new Array();
    var descriptions = new Array();
    var date = new Array();
    for ( var i = 0; i < a_list.length; i ++ ) {
        if (a_list[i].className  == "permalink") {
            permalinks[permalinks.length] = a_list[i].href;
        }
    }
    for ( var i = 0; i < span_list.length; i ++ ) {
        if ( span_list[i].className == 'post-footers' ) {
            date[date.length] = span_list[i].innerHTML.replace( new RegExp( '<a.*$', 'img'), '' );
        }
    }
    if ( with_description ) {
        for ( var i = 0; i < div.length; i ++ ) {
            if ( div[i].className == 'entry-body-text' ) {
                if ( div[i].innerHTML.replace( new RegExp( '<.*?>', 'img'), '' ).length >= description_length ) {
                    descriptions[descriptions.length] = div[i].innerHTML.replace( new RegExp( '<.*?>', 'img'), '' ).substring( 0, description_length ) + "...";
                } else {
                    descriptions[descriptions.length] = div[i].innerHTML.replace( new RegExp( '<.*?>', 'img'), '' );
                }
            }
        }
    }
    var menu_str;
    var title_str;
	var title_bool_str;
    if (with_description ) {
        title_str = 'タイトルと概要一覧';
		button.innerHTML = '<a href="javascript:show_title(false, '+reverse+');" style="text-decoration: none;">タイトルのみ</a>/タイトルと概要';
		title_bool_str = 'true'
//		title_bool_str = 'new Boolean(false)'
    } else {
        title_str = 'タイトル一覧';
		button.innerHTML = 'タイトルのみ/<a href="javascript:show_title(true, '+reverse+')" style="text-decoration: none;">タイトルと概要</a>';
		title_bool_str = 'false'
//		title_bool_str = 'new Boolean(true)'
    }
	if ( reverse ) {
		title_str += '（新しい順）';
        menu_str = '[<a href="javascript:show_title('+title_bool_str+', false);" style="text-decoration: none;">古い順に表示</a>/新しい順に表示/<a href="javascript:location.replace(\'http://'+location.host+location.pathname+'\');" style="text-decoration: none;">全文表示に戻す</a>]';
	} else {
		title_str += '（古い順）';
        menu_str = '[古い順に表示/<a href="javascript:show_title('+title_bool_str+', true);" style="text-decoration: none;">新しい順に表示</a>/<a href="javascript:location.replace(\'http://'+location.host+location.pathname+'\');" style="text-decoration: none;">全文表示に戻す</a>]';
	}
    var content_html = '<h2>&nbsp;&nbsp;&nbsp;&nbsp;</h2><div class="entry-top"></div><div class="entry"><h3>' + title_str + '</h3><div class="entry-body-top"></div><div class="entry-body"><div id="show_changer_button_top" style="text-align:left; font-size: smaller;">'+menu_str+'</div><div class="entry-body-text"><ol type=1 start=1 style="text-align:left;">';
//    var content_html = '<div id="show_changer_botton"  style="text-align:center; font-size: smaller;">' + menu_str + '</div><h2>&nbsp;&nbsp;&nbsp;&nbsp;</h2><div class="entry-top"></div><div class="entry"><h3>' + title_str + '</h3><div class="entry-body-top"></div><div class="entry-body"><div class="entry-body-text"><ol type=1 start=1 style="text-align:left;">';
    for ( var i = 0; i < titles.length; i ++ ) {
		var index;
		if ( reverse ) {
			index = i;
		} else {
			index = titles.length - i -1;
		}
        if ( with_description ) {
            content_html += '<li><a href="' + permalinks[index] + '">' + titles[index].innerHTML + '</a>&nbsp;&nbsp;' + date[index] + '<br />' + descriptions[index];
        } else {
            content_html += '<li><a href="' + permalinks[index] + '">' + titles[index].innerHTML + '</a>&nbsp;&nbsp;' + date[index];
        }
    }
    content_html += '</ol></div></div><div class="entry-body-bottom"></div><div id="show_changer_button_bottom" style="text-align:left; font-size: smaller;">'+menu_str+'</div><p class="posted" style="text-align:right; font-size: smaller;"><span class="post-footers"></span><span class="separator"></span><span class="bo_so_copyright">powered by <a href="http://java.cocolog-nifty.com/blog/2005/09/javascript_6281.html">cocolog_archive_extention.js</a></span></p></div><div class="entry-bottom"></div><div class="date-footer"></div>';
    content.innerHTML = content_html;
    if ( navigator.userAgent.indexOf("Safari") == -1 ) {
        if ( with_description ) {
            location.hash = 'type=description';                
        } else {
            location.hash = 'type=title';
        }
    }
}
    
function getArgs () {
    var args = new Object();
    var query = location.hash.substring(1);  
    query = decodeURIComponent( query );
    var pairs = query.split("&");
    for ( var i = 0; i < pairs.length; i++ ) {
        var pos = pairs[i].indexOf('=');
        if ( pos == -1 ) continue;
        var argname = pairs[i].substring( 0, pos );
        var value = pairs[i].substring( pos + 1 );
        args[argname] = value;
    }
    return args;
}