var page_counter = 0;
var backnumber_url_list;
var result_content;
var images = new Array();
function cocologAjaxPhotoLoader() {
    archive_file_path = document.getElementsByTagName('h1')[0].getElementsByTagName('a')[0].href + 'archives.html';
    var div_tag = document.getElementsByTagName('div');
    for ( var i = 0; i < div_tag.length; i ++ ) {
        if ( div_tag[i].className == 'content' ) {
            result_content = div_tag[i];
        }
    }
    new Ajax.Request( archive_file_path, {method: 'get', onComplete: function(request){ parse_backnumbers4photo( request ); } } );
}

function parse_backnumbers4photo( request ) {
    var backnumber_page = request.responseText;
    backnumber_page = backnumber_page.replace( new RegExp( '\n', "g"), '' );
    backnumber_page = backnumber_page.replace( new RegExp( '\r', "g"), '' );
    backnumber_page = backnumber_page.replace( new RegExp( '.*(<div class="archive-datebased">.*?<div class="archive-category">).*', "i"), "$1" );
    backnumber_url_list = backnumber_page.match(/http:\/\/.*?html/ig);
    load_backnumber4photo();
}

function load_backnumber4photo() {
    if( page_counter > backnumber_url_list.length - 1 ) {
        show_photo_list();
    } else {
	//        result_content.innerHTML = 'now searching... ' + ( page_counter * 100 )  / backnumber_url_list.length + '%';
        new Ajax.Request( backnumber_url_list[ page_counter ], {method: 'get', onComplete: function(request){ parse_enteries_page4photo( request ); } } );
    }
}

function parse_enteries_page4photo( request ) {
    var entries_page = request.responseText;
    entries_page = entries_page.replace( new RegExp( '\n', "g"), '' );
    entries_page = entries_page.replace( new RegExp( '\r', "g"), '' );
    entry_list = entries_page.match(/<div class="entry">.*?<\/div><div class="entry-bottom"><\/div>/ig);
    for ( var i = 0; i < entry_list.length; i++ ) {
        entry_list[i].match(/.*<h3>(.*?)<\/h3>.*<div class="entry-body-text">(.*?)<div class="entry-body-bottom"><\/div>.*<a class="permalink" href="(.*?)">.*/i);
        var title = RegExp.$1;
        var body = RegExp.$2;
        var link = RegExp.$3;
	image_tags = body.match(/<img.*src=".*?".*?>/i);
	if ( !image_tags ) {
	    continue;
	}
	for ( var j = 0; j < image_tags.length; j++ ) {
	    body.match(/<img.*src="(.*?)".*?>/i);
	    var image_url = RegExp.$1;
	    images.push( {url:image_url, link: link} );
	}
    }
    page_counter++;
    show_photo_list();
    load_backnumber4photo();
}

function show_photo_list() {
    var html = '<div id="preview" style="Z-INDEX: 2;DISPLAY: none;POSITION: absolute;heigth: 210px;width: 210px;"></div>';
    html += '<div id="search_notice"  style="text-align:left; font-size: x-small;">写真をクリックすると、それを投稿した記事へジャンプします。<br />写真にマウスオーバーすると、拡大写真がプレビューできます。</div><div class="entry-top"></div><div class="entry"><h3>結果 (' +  Math.floor( ( page_counter * 100 )  / backnumber_url_list.length )  + '% loaded)</h3><div class="entry-body-top"></div><div class="entry-body"><div class="entry-body-text">';
    html += '<table id="photo_list_result" border="0" cellspacing="0" cellpadding="0">';
    for ( var i= 0; i<images.length; i++ ) {
	if ( i % 3 == 0 ){
	    html += '<tr><td style="vertical-align:top;padding: 0px 10px 10px 0px;margin: 0px;text-align: center;"><div style="width:100px;height:70px;padding:0px;margin:0px;overflow:hidden;"><a href="' + images[i].link + '" target="_blank"><img src="' + images[i].url + '" border="0" style="width:100px;padding:0px;margin:0px 0px 5px;" onMouseMove="show_preview(this, event);" onMouseOut="hide_preview();"></a></div></td>';
	} else {
	    html += '<td style="vertical-align:top;padding: 0px 10px 10px 0px;margin: 0px;text-align: center;"><div style="width:100px;height:70px;padding:0px;margin:0px;overflow:hidden;"><a href="' + images[i].link + '" target="_blank"><img src="' + images[i].url + '" border="0" style="width:100px;padding:0px;margin:0px 0px 5px;" onMouseMove="show_preview(this, event);" onMouseOut="hide_preview();"></a></div></td>';
	}
	if ( i % 3 == 2 ) {
	    html += '</tr>';
	}
    }
    html += '</table>';
    html += '</div></div><div class="entry-body-bottom"></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/2006/07/post_8cd8.html">cocologAjaxPhotoLoader.js</a></span></p></div><div class="entry-bottom"></div><div class="date-footer"></div>';
    result_content.innerHTML =  html;
}

function show_preview (image, e) {
    var preview = document.getElementById('preview');
    if ( preview ) {
        if ( preview.style.display == 'none' ) {
            preview.style.top = '-1000px';
            preview.style.left = '-1000px';
	    preview.innerHTML = '<div style="width:300px;height:300px;padding:0px;margin:0px;overflow:hidden;"><img src="' + image.src + '" border="0" style="width:300px;"></div>';
		//            preview.innerHTML = '<img src="' + image.src + '" width="300">';
            preview.style.display='block';
        }
        preview.style.top = getMouseY( e ) - 230 + 'px';
        preview.style.left = getMouseX( e ) - 310 + 'px';
    }
}

function hide_preview () {
    var preview = document.getElementById('preview');
    if ( preview ) {
        preview.style.display='none';
    }
}

function getMouseX( event ) {
    if ( window.opera ) {
            return event.clientX;
    } else if ( document.all && document.getElementById && (document.compatMode=='CSS1Compat') ) {
        return event.clientX+document.documentElement.scrollLeft;
    } else if ( document.all ) {
        return event.clientX+document.body.scrollLeft;
    } else if ( document.layers || document.getElementById ) {
        return event.pageX;
    }
}

function getMouseY( event ) {
    if ( window.opera ) {
        return event.clientY;
    } else if ( document.all && document.getElementById && (document.compatMode=='CSS1Compat') ) {
        return event.clientY+document.documentElement.scrollTop;
    } else if ( document.all ) {
        return event.clientY+document.body.scrollTop;
    } else if( document.layers || document.getElementById ) {
        return event.pageY;
    }
}
