/* sync.js
(C) 2009 digitalstage inc.
v 20090414

※■100318　id="footer"で何かを制御しているようなので、これを使っていると
IEでエラーが発生する。

--------------------------------------------------------- */
//var SYNC_SERVER = 'http://localhost:8000/';
var SYNC_SERVER = 'https://sync-console.digitalstage.jp/';

jQuery.noConflict();
jQuery.ajaxSetup({scriptCharset:'utf-8'});

var currentBlogId;
var currentYm = null;
var currentPage = 1;
var mainJson = null;
var catList = [];

window.addEvent('domready', function() {		
	syncDig(document);
});

function syncDig(p) {
    var cl = p.childNodes;
	for (var i=0; i<cl.length; i++) {
		var c = cl[i];
		
		var nm = c.nodeName;
		var cls = c.className;
		
		if (nm == '#text') continue;
		else if (nm == 'DIV') {
			if (cls.indexOf('sync') > -1) {
				loadService(cls, c);
			}
		}
		
		if (c.hasChildNodes()) {
			syncDig(c);
		}
	}
}

//■ここが読み込まれるのは最初だけ。
function loadService(cls, c) {
    var ary = cls.split(' ');
	var type = ary[1];
	var did = ary[2];

	//HTMLから価の取得
	//alert(c.innerHTML);
	ary = c.innerHTML.split(',');
	var gid = ary[0];
	var sid = ary[1];
	
	if (type == 'blog') {
		if (did.indexOf('main') > -1) {
		    currentBlogId = sid;
			//100218 max-results変更10→30
			var url = 'http://www.blogger.com/feeds/' + currentBlogId + '/posts/default?redirect=false&max-results=100&alt=json-in-script&callback=?';
			jQuery.getJSON(url, function(json, textStatus) {
			    // TODO: status動かないっぽい。代替見つける

			    //100122　追記　初期読みこみフラグ
			    var first_flag = true;
			    mainJson = json;
			    //100218
			    //var_dump(json);
			    dispBlogMain(c, currentBlogId, json, first_flag);
			    loadCategory();
			});
		} else if (did.indexOf('side') > -1) {
			currentBlogId = sid;
			
			// 先にDIV構造を作ってしまう
			dispBlogSide(c);
			
			// カレンダーの月間のクエリ
			loadCalendar();
			
			// カテゴリーのクエリ
			loadCategory();
		}
		
	} else if (type == 'video') {
		dispVideo(c, sid);
		
	} else if (type == 'form') {
		jQuery.ajax({
			url: SYNC_SERVER + 'sync/form.action',
			type: 'GET',
			dataType: 'jsonp',
			data: {
				's': sid
			},
			success: function(json) {
				dispForm(c, sid, json);
			},
			error: function() {
				alert('JSON取得失敗！');
			}
		});
		
	} else if (type == 'docs') {
		var tv = sid.split(':');
		var type = tv[0];
		var docid = tv[1];
		if (type.indexOf('document') == 0) {
			var url = SYNC_SERVER + 'sync/docs.action?callback=?';
			jQuery.getJSON(url, {'g': gid, 's': sid}, function(json) {
				if (json.csspart && json.csspart.length > 0)
					jQuery('<style type="text/css">' + json.csspart + '</style>').appendTo('head');
				c.innerHTML = json.content;
				jQuery('#report-abuse-button').hide();
				jQuery('a.google-small-link').attr('href', 'http://docs.google.com/');
				jQuery(c).fadeIn(500);
				bdRefresh();
				Bindfooter.set();
			});
			
		} else if (type.indexOf('spreadsheet') == 0) {
			c.innerHTML = '<iframe id="sheet_frame" src="http://spreadsheets.google.com/pub?key=' + docid + '" frameborder="0" width="620" height="560"></iframe>';
			jQuery(c).fadeIn(500);
			bdRefresh();
			Bindfooter.set();
			
		} else if (type.indexOf('presentation') == 0) {
			c.innerHTML = '<iframe src="http://docs.google.com/EmbedSlideshow?docid=' + docid + '&amp;size=m" frameborder="0" width="555" height="451"></iframe>';
			jQuery(c).fadeIn(500);
			bdRefresh();
			Bindfooter.set();
		}
	}
}

// cにアペンドして、mcを返す
function nineSlice(cls, c) {

	var mc = jQuery('<div class="mc"></div>');
	var mm = jQuery('<div class="mm"></div>').append('<div class="ml"></div>').append('<div class="mr"></div>').append(mc);
	var h3 = jQuery('<div class="' + cls + '"></div>')
		.append('<div class="tl"></div>').append('<div class="tr"></div>').append('<div class="tc"></div>').append(mm);
	h3.append('<div class="bl"></div>').append('<div class="br"></div>').append('<div class="bc"></div>').appendTo(c);
	return mc;
}
//エラー
function getSkinClass(c) {
//	return c.parentNode.parentNode.parentNode.parentNode.parentNode.className;
}

/**********
B L O G
********/
//===========================================================================================================
//■関数の実行
//===========================================================================================================
//■46796,4015323456945510852,main01
function dispBlogMain(c, blogId, json, first_flag) {
	//■test
	//alert("a");
	
	c.innerHTML = '';
	
	if (typeof(BlockEdit) == 'undefined')
		SWFAddress.addEventListener(SWFAddressEvent.CHANGE, loadHandler);
	var skin = getSkinClass(c);

	// タイトル
	//■090914
	
	/*
	var h3div = null;
		h3div = jQuery('<div class="h3"/>').appendTo(c);
	
	var h3 = jQuery('<h3/>').appendTo(h3div);
	jQuery('<a href="javascript:;"></a>').append(json.feed.title.$t).bind('click', function(e) {
		SWFAddress.setValue('');
	}).appendTo(h3);
	jQuery('<span id="blog-pwd"></span>').appendTo(h3);
	*/
	
	
	// サブタイトル
	var subt = json.feed.subtitle;
	if (subt && subt.$t.length > 0)
		jQuery('<p class="lead"></p>').text(subt.$t).appendTo(c);
	
	var blogWrapper = jQuery('<div id="blogWrapper"/>').appendTo(c);
	
	// TODO: SWFAddressに統合。BlockEdit時は↓は必要
	if (typeof(BlockEdit) == 'undefined') {
	    var o = { 'path': SWFAddress.getPath(), 'skin': skin };
	    loadHandler(o, first_flag);
	} else
		json.feed.entry.each(function(e) {
			dispDetail(blogId, e, blogWrapper, skin);
		});
	
	jQuery(c).fadeIn(500);
	
	bdRefresh();
}


//===========================================================================================================
//■ロード
//===========================================================================================================
function loadHandler(evt, first_flag) {
    //記事の表示数
    //オプションの読み込み
    var op_text = jQuery('#blog_option').html();
    op_text = DeleteLineFeed(op_text);
    option = jQuery.parseJSON(op_text);

	
	//■test
    //alert(first_flag);
    //■090908追記
    var i = 0;

    var path = evt.path;
    
	if (path == 'page') return;

	//■URLからパラメータを取得
	var args = path.split('/');
	var type = (args.length > 1) ? args[1] : '';
	var param1 = (args.length > 2) ? args[2] : '';
	var param2 = (args.length > 3) ? args[3] : '';

	//■先頭に戻るときのエラー回避
	var pageURI = document.URL;
	var pageURIarr = pageURI.split("#");
	if (pageURIarr.length > 1) {
	    if (pageURIarr[1] == "top") {
	        location.href = pageURIarr[0];
	    }
	}
	
	//■パラメータをページ番号とする
	//ラベルの指定が無いとき
	var connect = "";
	if (type != "label" && type != "detail" && type != "list" && type != "top" && type) {
	    param2 = type;
	} else if (!type) {
	    connect = "#/";
	}
	var blogWrapper = jQuery('#blogWrapper').empty();
	blogWrapper.attr('className', 'loading');

	var skin = null;
	//var skin = blogWrapper[0].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.className;

	// 詳細ページ
	//■詳細ページ出力のときは、こちらをつかう？
	if (type == 'detail') {
		//■ブロッガーからJSON形式でデータを取得
	    var url = 'http://www.blogger.com/feeds/' + currentBlogId + '/posts/default/' + param1 + '?redirect=false&alt=json-in-script&callback=?';
	    // TODO: status動かないっぽい。代替見つける
		jQuery.getJSON(url, function(json, textStatus) {
			blogWrapper.removeAttr('className');
			blogWrapper.css('display', 'none');
			dispDetail(currentBlogId, json.entry, blogWrapper, skin);
			jQuery('#blog-pwd').text('');
			blogWrapper.fadeIn(500);	
		});
		pageTop(0);

	// トップページ、日別、ラベル
    } else {

        if (param2.length == 0) currentPage = 1;
        else currentPage = new Number(param2);

        var guide = option.label_title;
		
		var label = '';
		if (type == 'label') {
			label = '/-/' + param1;
			guide = '「' + decodeURI(param1) + '」';
		}
		
		var dt_condition = '';
		if (type == 'list') {
			var y = param1.substring(0, 4);
			var m = new Number(omitZero(param1.substring(4, 6)));
			var d = omitZero(param1.substring(6));
			var st = new Date(y, m - 1, d);
			var ed = new Date(y, m - 1, d, 23, 59, 59);
			dt_condition = '&published-min=' + formatFeedDate(st) +
						'&published-max=' + formatFeedDate(ed);

			guide = y + '年' + m + '月' + d + '日の記事一覧';
		}

		//■JSONフィード取得設定100119=======================================
		var max_results = option.max_results;


		//ページ目
		//ページ指定がある場合と、ラベルがない場合
		if (param2) {
		    var start_index = param2 * max_results - max_results + 1;
		} else {
	    	var start_index = 1;
	 }
		
		//■日付別リストが表示されないエラーを回避
		/*
		if (type == 'list') {
		    var start_index = 1;
		}
		*/
        //フィードURLの生成
		var url = 'http://www.blogger.com/feeds/' + currentBlogId + '/posts/default' +
			label +
			'?redirect=false&max-results=' + max_results +
		    '&start-index=' + start_index +
			dt_condition +
			'&alt=json-in-script&callback=?';
		
		// TODO: status動かないっぽい。代替見つける
		jQuery.getJSON(url, function(json, textStatus) {
		    blogWrapper.removeAttr('className');
		    blogWrapper.css('display', 'none');

		    if (json.feed.entry) {
		        json.feed.entry.each(function(e) {
		            //■■パラメータなしのリストHTML表示関数はここで実行している■■
		            if (option.disp_type == "detail") {
		                dispDetail(currentBlogId, e, blogWrapper, skin);
		            } else {
		                dispList(currentBlogId, e, blogWrapper, skin, i);
		            }
		            i++;
		        });
		    }

		    //カテゴリリストと、戻るリンク
		    /*
		    var preURL = document.URL.split("#");
		    var topURL = preURL[0];
		    var topLink = '<a href="' + topURL + '">全ての記事一覧へ戻る</a>';
		    alert(topLink);
		    */

		    if (option.label_title!="") {
		        var labelTitle = jQuery('<h3/>').prependTo(blogWrapper).text(guide);
		    }
		    //jQuery('<span class="top_navi" />').appendTo(labelTitle).html(topLink);


		    //■URLからパラメータを取得
		    var args = SWFAddress.getPath().split('/');
		    var type = (args.length > 1) ? args[1] : '';
		    var param1 = (args.length > 2) ? args[2] : '';
		    var param2 = (args.length > 3) ? args[3] : '';

		    //■先頭に戻るときのエラー回避
		    var pageURI = document.URL;
		    var pageURIarr = pageURI.split("#");
		    if (pageURIarr.length > 1) {
		        if (pageURIarr[1] == "top") {
		            location.href = pageURIarr[0];
		        }
		    }

		    //■パラメータをページ番号とする
		    //ラベルの指定が無いとき
		    var connect = "";
		    if (type != "label" && type != "detail" && type != "top" && type) {
		        param2 = type;
		    } else if (!type) {
		        connect = "#/";
		    }


		    //■■ 100122 二重エラー回避=====================

		    //ie6以下の場合
		    var flg_ie6 = navigator.userAgent.indexOf("IE 6");
		    var label_add = true;

		    if (first_flag && flg_ie6 >= 0) {
		        var redirectURL = document.URL;

		        //「戻る」を押した場合のエラー処理=================
		        var flg_param = document.URL.indexOf("#");
		        var flg_label = document.URL.indexOf("label");
		        var urlArr = document.URL.split("#");

		        //ループを避けるため、ページ番号無いものだけをリダイレクト
		        if (flg_label >= 0 && !param2) {
		            redirectURL = document.URL + "/1";
		            location.href = redirectURL;
		        } else if (flg_param <= 0) {
		            redirectURL = document.URL + encodeURI("#/1");
		            location.href = redirectURL;
		        }
		        var label_add = false;
		    }

		    if (first_flag && flg_ie6 <= 0) {
		        var redirectURL = document.URL;

		        //「戻る」を押した場合のエラー処理=================
		        var flg_param = document.URL.indexOf("#");
		        var flg_label = document.URL.indexOf("label");
		        var urlArr = document.URL.split("#");

		        //ラベルが無くて、＃がある場合元のURLにリダイレクト
		        if (flg_param >= 0 && flg_label < 0) {
		            redirectURL = urlArr[0];

		            //ラベルがあって、パラメータ２が無い場合ラベルつきのURLにリダイレクト
		        } else if (flg_label >= 0 && !param2) {
		            redirectURL = document.URL + "/1";

		            //ラベルがあって、パラメータ２がある場合ラベルつき、ページ番号なしのURLにリダイレクト
		        } else if (flg_label >= 0 && param2) {
		            redirectURL = urlArr[0] + encodeURI("#/") + type + "/" + param1;

		        } else {
		            redirectURL = document.URL + encodeURI("#/1");
		        }
		        //リダイレクト
		        location.href = redirectURL;
		        var label_add = false;
		    }
		    var total_results = json.feed.openSearch$totalResults.$t;
		    blogWrapper.fadeIn(500);

		    if (option.next == "on") {
		        pageNation(blogWrapper, path, total_results, max_results, label_add);
		    }
		    pageTop(0);
		});		
	}
}
//===========================================================================================================
//■■100219作成　ページの先頭へ移動
//===========================================================================================================
function pageTop(speed) {
    obj = document.getElementsByTagName('body');
    //obj = document.getElementById('L03');
    //console.debug(obj[0]);
    y = obj.offsetTop;
    scrollTo(speed, y);
}
//===========================================================================================================
//■■100119作成　ページ送り
//===========================================================================================================
function pageNation(blogWrapper, path, total_results, max_results, label_add) {
    var pageURI = document.URL;
    
    if (path == 'page') return;

    //■URLからパラメータを取得
    var args = path.split('/');
    var type = (args.length > 1) ? args[1] : '';
    var param1 = (args.length > 2) ? args[2] : '';
    var param2 = (args.length > 3) ? args[3] : '';
    
    //■パラメータをページ番号とする
    //ラベルの指定が無いとき
    var connect = "";
    if (type != "label" && type != "detail" && type != "list" && type) {
        var pageURIarr = pageURI.split('#');
        param2 = type;        
    } else if (!type) {
        connect = "#/";
    }

    if (param2) {
        var next_page = parseInt(param2) + 1;
        var pre_page = parseInt(param2) - 1;
    } else if (!param2 || param2 == 1) {
        var next_page = 2;
        var pre_page = false;
    }

    //var pageURIarr = pageURI.split("#");
    //alert(pageURIarr.length);
    if (pageURI.indexOf("#", 0) < 1) {  
        connect = "#/";
    }
    
    //元のURLから次のページ番号を作る
    var pageURI_last = pageURI.length - pageURI.lastIndexOf('/');
    var nopageURI = pageURI;
    if (pageURI_last == 1) {
        nopageURI = pageURI;
    } else if (pageURI_last == 2) {
        nopageURI = pageURI.slice(0, pageURI.length - 1);
    } else if (pageURI_last == 3) {
        nopageURI = pageURI.slice(0, pageURI.length - 2);
    } else if (!connect) {
        nopageURI = pageURI + "/";
    }

    //一覧ページでリロードしたときのバグ回避
    if (type == "label") {
        var pageURIarr = pageURI.split('#');
        nopageURI = pageURIarr[0] + "#";
        connect = '/label/' + param1 + '/';
    }
    
    //日付ページでリロードしたときのバグ回避
    if (type == "list") {
        var pageURIarr = pageURI.split('#');
        nopageURI = pageURIarr[0] + "#";
        connect = '/list/' + param1 + '/';
    }
     
    //詳細ページから来たときにバグ回避
    if (pageURI.indexOf('detail') > 0) {
        var pageURIarr = pageURI.split('#');
        nopageURI = pageURIarr[0] + "#";
    }
    
    /*
    //100219 上のページ送り
    var page_nate = jQuery('<div class="pagenate"/>').prependTo(blogWrapper);
    //var page_list = jQuery('<li/>').appendTo(page_nate);
    if (pre_page) {
        page_nate.append('<span class="navi_left"><a href="' + nopageURI + connect + pre_page + '">前のページへ</a></span>');
    }
    if (next_page - 1 < total_results / max_results) {
        page_nate.append('<span class="navi_right"><a href="' + nopageURI + connect + next_page + '">次のページへ</a></span>');
    }
    */
    
    //100219 下のページ送り
    var page_nate_bottom = jQuery('<div class="pagenate"/>').appendTo(blogWrapper);
    //var page_list = jQuery('<li/>').appendTo(page_nate_bottom);
    if (pre_page) {
        page_nate_bottom.append('<span class="navi_left"><a href="' + nopageURI + connect + pre_page + '">前のページへ</a></span>');
    }
    if (next_page - 1 < total_results / max_results) {
        page_nate_bottom.append('<span class="navi_right"><a href="' + nopageURI + connect + next_page + '">次のページへ</a></span>');
    }
    page_nate_bottom.append('<br class="clear">');
}

//===========================================================================================================
//■ブログのリスト表示
//===========================================================================================================
function dispList(blogId, e, blogWrapper, skin, i) {
    
    //オプションの読み込み
    var op_text = jQuery('#blog_option').text();
    op_text = DeleteLineFeed(op_text);
    option = jQuery.parseJSON(op_text);
    
    /*
    if (buf.indexOf('{') > -1 && buf.indexOf('}') > -1) {
    var startidx = buf.indexOf('{');
    var endidx = buf.lastIndexOf('}');
    option = jQuery.parseJSON(buf.substring(startidx, endidx + 1));
    }
    */
    
//価の生成================================================================
    var content = e.content.$t;
    var detail_flg = content.indexOf("<a name='more'>");

    var img_path = content.match(/src\=\"http:\/\/[0-9]+.bp.blogspot.com.*?jpg/g);
    if (img_path) {
        img_path = img_path[0];
        img_path = img_path.replace(/src\=\"/g, "");
    }
    if (e.media$thumbnail && option.img_size && option.img_size != "") {
        var resize = "s" + option.img_size;
        img_path = e.media$thumbnail.url
        img_path = img_path.replace(/s72-c/g, resize);
    }

    if (option.summary == "on") {
        var content = content.replace(/<br>/g, "[br]");
        var content = content.replace(/<br \/>/g, "[br]");
        var content_arr = content.split("<a name='more'>");
        var text = content_arr[0].replace(/<.*?>/g, '');
        var text = text.replace(/\[br\]/g, "<br />");
    }else{
        var text = content.replace(/<.*?>/g, '');
    }

    var date = "";
    if(option.date == "on"){
        //投稿日時をパース　d.year d.month d.day
        var d = parseFeedDate(e.published.$t);
        var date = d.year + '年' + d.month + '月' + d.day + '日  ';
    }

    if (option.summary == "off" && option.summary_limit >= 1) {
        text = text.substr(0, option.summary_limit) + " …" + date;
    }
    if (!img_path) {
        img_path = bindobj.dir + "_userdata/blog_module/sync/images/no_image.gif";
    }
    
    //alert(e.id.$t);   tag:blogger.com,1999:blog-4015323456945510852.post-8906535198852163956
    //alert(eid);   8906535198852163956
    var ary = e.id.$t.split('-');
    var eid = ary[ary.length - 1];
    //alert(document.URL);
    var detail_url = option.url +'#/' + 'detail/' + eid + '?ref=' + location.href;
    var title = e.title.$t;
    if (option.title_limit >= 1) {
        title = title.substr(0, option.title_limit) + " …";
    }
    //詳細ページへリンク
    if (detail_flg >= 0 || option.summary == "off") {
        var a_title = '<a href="' + detail_url + '">' + title + '</a>';
    } else {
        var a_title = title;
    }
    
    /*
    タイトル　title
    タイトル　a_title (リンク付き）
    概要文    text
    画像URL   img_path
    日付      date
    記事URL   detal_url
    */

//タグの作成==============================================================
    
    jQuery(blogWrapper).attr("class",option.disp_type);
    
    //日付と、タイトルのリスト-------------------
    switch (option.disp_type) {
        case "list01":
            //日付と、タイトルのリスト-------------------
            var dl = jQuery('<dl/>').appendTo(blogWrapper);
            var dt = jQuery('<dt>' + date + '</dt>').appendTo(dl);
            var dd = jQuery('<dd>' + a_title + '</dd>').appendTo(dl);
            break;
        case "list02":
            //タイトルと、概要のリスト-------------------
            var dl = jQuery('<dl/>').appendTo(blogWrapper);
            var dt = jQuery('<dt>' + a_title + '</dt>').appendTo(dl);
            var dd = jQuery('<dd>' + text + '</dd>').appendTo(dl);
            break;
        case "list_img01":
            var wrapper = jQuery('<div class="entryWrapperList"/>').appendTo(blogWrapper);
            var img = jQuery('<img/>').attr({ "src": img_path });
            var img_box = jQuery('<div class="imgBox"/>').appendTo(wrapper);
            if (detail_flg >= 0 || option.summary == "off") {
                var a_img = jQuery('<a href="' + detail_url + '"></a>').append(img).appendTo(img_box);
            } else {
                var a_img = jQuery(img).appendTo(img_box);
            }

            var h4 = jQuery('<h4/>').appendTo(wrapper);
            // var dd = jQuery('<dd/>').appendTo(dl);
            // var p = jQuery('<p/>').append(text + "…").append("<br>" + date).appendTo(wrapper);   日付を出力するばあいはこちらを使う
            //var p = jQuery('<p/>').append(text + "…").appendTo(wrapper);
            var p = jQuery('<p/>').append(text).appendTo(wrapper);
            jQuery('<p/>').appendTo(p);
            //var span = jQuery('<span/>').appendTo(p);
            jQuery('<br clear="all">').appendTo(wrapper);

            //詳細ページへリンク
            jQuery(h4).append(a_title);
            break;
        default: break;
    }
    if (i == 0) {
        jQuery(dl).attr("class","first");
    }
}

//===========================================================================================================
//■詳細ページの生成
//===========================================================================================================
//eはjsonデータの"feed":
function dispDetail(blogId, e, blogWrapper, skin) {
	
	//オプションの読み込み
    var op_text = jQuery('#blog_option').text();
    op_text = DeleteLineFeed(op_text);
    option = jQuery.parseJSON(op_text);
    
	var wrapper = jQuery('<div class="entryWrapper"/>').appendTo(blogWrapper);
    var h2 = null;
	
	h2 = jQuery('<h2/>');
    jQuery('<div class="h2"></div>').append(h2).appendTo(wrapper);

	var ary = e.id.$t.split('-');
    var eid = ary[ary.length-1];
	
	//タイトルと詳細ページへのリンク===============================================================================
	
	var a = jQuery('<a href="javascript:;"></a>').append(e.title.$t).bind('click', {blogId: blogId, entryId: eid}, function(e) {
    //詳細ページへのURLをIDを使って作成
    SWFAddress.setValue('detail/' + e.data.entryId);
    }).appendTo(h2);

    if (option.date == "on") {
	    //投稿日時をパース　d.year d.month d.day
        var d = parseFeedDate(e.published.$t);
        //投稿日時のタグを出力
        jQuery('<address class="ar"></address>').append(d.year + '年' + d.month + '月' + d.day + '日  ').appendTo(wrapper);
        //jQuery('<address class="ar"></address>').append(d.year + '年' + d.month + '月' + d.day + '日  ' + d.tm).appendTo(wrapper);
	}
	var content = e.content.$t;

	//console.debug(e);
    switch (option.img_link) {
        case "_blank":
            var content = content.replace(/imageanchor/g, "target='_blank' imageanchor"); e.content.$t;
            break;
        case "off":
            var img_path = content.match(/src\=\"http:\/\/[0-9]+.bp.blogspot.com.*?jpg/g);
		    var a_tag = content.match(/<a.+?href.+?>/g);
            
			//var img_tag = content.match(/<a.+href\=\"http:\/\/[0-9]+.bp.blogspot.com.*?jpg/g);
			if(!a_tag)break;
			for(i=0;i<a_tag.length;i++){			
				if (a_tag[i].match(/href\=\"http:\/\/[0-9]+.bp.blogspot.com.*?jpg/g)) {					
					var span_tag = a_tag[i].replace(/href=\".+?\"/g, "");
					span_tag = span_tag.replace(/<a\s/g, "<span");
					var content = content.replace(a_tag[i], span_tag);
					var content = content.replace(/.jpg".+\/><\/a>/g, ".jpg\"/><\/span>");
					//var content = content.replace(/<a\shref.*?><img/g, "<img");
					//var content = content.replace(/.jpg"\s\/><\/a>/g, ".jpg\"/>");
				}
			}						
            break;
        default:
            break;
    }
	
	if(option.link == "_blank"){
		 var content = content.replace(/<a\s/g, "<a target=\"_blank\""); e.content.$t;
		 var content = content.replace("target='_blank' imageanchor", "imageanchor"); e.content.$t;
	}
       
    //オプションの読み込み
    var op_text = jQuery('#blog_option').text();
    op_text = DeleteLineFeed(op_text);
    option = jQuery.parseJSON(op_text);
    
    if (option.disp_type == "detail") {
        wrapper.append(content + '<br class="clear">');
    } else {
        var geturl = getRequest();    
        if (getRequest() && geturl['ref']) {
            var backurl = geturl['ref'];
        } else {
            var backurl = option.url;
        }
	    backurl = backurl.replace("%23","#");
        wrapper.append(content + '<div class="pagenate"><span class="navi_left"><a href="' + backurl + '">一覧に戻る</a></span></div><br class="clear">');
        //wrapper.append(content + '<div class="pagenate"><span class="navi_right"><a href="#" onClick="history.back(-1); return false;">一覧に戻る</a></span></div><br class="clear">');
    }
}

//===========================================================================================================
//■カレンダー表示
//===========================================================================================================
function dispBlogSide(c) {
	c.innerHTML = '';

	// カレンダー
	/*
	var calWrap = jQuery('<div class="calWrapper"></div>').appendTo(c);
	jQuery('<h3 class="ac" id="blog-calendar-ym"></h3>').appendTo(calWrap);
	var calHdr = jQuery('<div class="calHdr"></div>').appendTo(calWrap);
	jQuery('<a href="javascript:;" class="prevM"><<</a>').appendTo(calHdr).click(function(e) {
		moveMonth(-1);
	});
	jQuery('<a href="javascript:;" class="nextM">>></a>').appendTo(calHdr).click(function(e) {
		moveMonth(1);
	});
	jQuery('<div class="hr clear"></div>').appendTo(calWrap);
	var calArea = jQuery('<div id="blog-calendar-area"></div>').appendTo(calWrap);
	
	jQuery('<div class="hr"></div>').appendTo(c);
	
	*/
	
	// カテゴリー
	/*
	jQuery('<h4>カテゴリー</h4>').appendTo(c);
	jQuery('<p>商品名を選択していただきますと、<br />商品別に過去のレシピが表示されます。</p>').appendTo(c);
	*/
	jQuery('<hr />').appendTo(c);
	var ul = jQuery('<ul id="category-list" class="disc"></ul>').appendTo(c);
	
	jQuery('<div class="hr"></div>').appendTo(c);
	
	jQuery(c).fadeIn(500);
	
	bdRefresh();
}

//======================================================================================
//■ラベル表示
//======================================================================================
function loadCategory() {
	if (mainJson!=null && mainJson.feed.entry) {
		var ul = jQuery('#category-list');
		if (ul.length == 0) return;
		mainJson.feed.entry.each(function(e) {
		    if (e.category) {
		        for (var i = 0; i < e.category.length; i++) {
		            var nm = e.category[i].term;
		            //■■■091013　ラベルが動作しないバグ修正
		            var pageURI = document.URL;
		            //alert(pageURI.indexOf("#"));
		            if (pageURI.indexOf("#") >= 1) {
		                var matches = pageURI.split("#");
		                var baseURI = matches[0];
		                var baseNumber = matches[1];
		            } else {
		                var baseURI = pageURI;
		            }

		            if (jQuery.inArray(nm, catList) == -1) {
		                /*
		                var a = jQuery('<a href="javascript:;"></a>').text(nm).click(function() {
		                SWFAddress.setValue('label/' + nm);
		                });
		                */

		                var a = jQuery('<a href="' + baseURI + '#/label/' + nm + '"></a>').text(nm);

		                jQuery('<li></li>').append(a).appendTo(ul);
		                catList.push(nm);
		            }
		        }
		    }
		});
	}
}



//======================================================================================
function moveMonth(amont) {
	if (currentYm == null) currentYm = getYm();
	currentYm.setMonth(currentYm.getMonth() + amont);
	var ym = String(currentYm.getFullYear()) + zeroPad(String(currentYm.getMonth() + 1));
	loadCalendar(ym);
}

function loadCalendar(ym) {
	var wrap = jQuery('#blog-calendar-area');
	wrap.empty();
	wrap.attr('className', 'loading');
	
	var y, m;
	if (typeof(ym) == 'undefined') {
		var d = new Date();
		y = d.getFullYear();
		m = d.getMonth() + 1;
	} else {
		y = new Number(ym.substring(0, 4));
		sm = ym.substring(4);
		if (sm.substring(0, 1) == '0') sm = sm.substring(1);
		m = new Number(sm);
	}
	
	jQuery('#blog-calendar-ym').text(y + '年 ' + m + '月');
	
	var st = new Date(y, m - 1, 1);
	var ed = new Date(y, m, 0, 23, 59, 59);	//月末
	
	var url = 'http://www.blogger.com/feeds/' + currentBlogId + '/posts/default?redirect=false' +
		'&published-min=' + formatFeedDate(st) +
		'&published-max=' + formatFeedDate(ed) +
		'&alt=json-in-script&callback=?';
	jQuery.getJSON(url, function(json, textStatus) {
		wrap.removeAttr('className');
		
		var list = [];
		if (json.feed.entry) {
			json.feed.entry.each(function(e) {
				var o = {
					title: e.title.$t,
					pubdate: parseFeedDate(e.published.$t)
				};
				list.push(o);
			});
		}
		
		var calTbl = jQuery('<table id="blog-calendar"></table>').appendTo(wrap);
		
		var tr  = jQuery('<tr></tr>').appendTo(calTbl);
		for (var i=0; i<7; i++) {
			var d = '';
			switch (i) {
				case 0: d = '日'; break;
				case 1: d = '月'; break;
				case 2: d = '火'; break;
				case 3: d = '水'; break;
				case 4: d = '木'; break;
				case 5: d = '金'; break;
				case 6: d = '土'; break;
			}
			jQuery('<th>' + d + '</th>').appendTo(tr);
		}
		
		var day = 1;
		var dt = st;
		var stw = dt.getDay();
		var iniMon = dt.getMonth();
		var inCal = false;
		for (var i=0; i<6; i++) {
			tr = jQuery('<tr></tr>').appendTo(calTbl);
			for (var j=0; j<7; j++) {
				if (i==0 && !inCal && j==stw) inCal = true;
				
				if (inCal) {
					//■ポイント
					var e = findEntry(dt, list);
					
					if (e != null) {
						var td = jQuery('<td></td>').appendTo(tr);
						var a = jQuery('<a href="javascript:;"></a>').attr('title', e.title).text(dt.getDate()).appendTo(td).click(function(evt) {
							SWFAddress.setValue('list/' + this.rel);
						});
						a.attr('rel', e.pubdate.ymd);
					} else {
						jQuery('<td></td>').appendTo(tr).text(dt.getDate());
					}
					day++;
					dt.setDate(day);
					if (dt.getMonth() != iniMon) inCal = false;
				} else {
					jQuery('<td></td>').appendTo(tr).html(' ');
				}
			}
			if (i > 1 && inCal == false) break;
		}
		
	});
}

//======================================================================================
function findEntry(dt, list) {
	for (var i=0; i<list.length; i++) {
		var o = list[i];
		var pub = o.pubdate;
		if (dt.getFullYear() == pub.year
			&& dt.getMonth() + 1 == pub.month
			&& dt.getDate() == pub.day) {
			return o;
		}
	}
	return null;
}

//======================================================================================

/*******
 * Utils
 ********/
function getYm() {
	var d = new Date();
	d.setDate(1);
	d.setHours(0);
	d.setMinutes(0);
	d.setSeconds(0);
	d.setMilliseconds(0);
	return d;
}

// feed 日付変換
function formatFeedDate(dt) {
	var y = String(dt.getFullYear());
	var m = zeroPad(String(dt.getMonth() + 1));
	var d = zeroPad(String(dt.getDate()));
	var h = zeroPad(String(dt.getHours()));
	var mi = zeroPad(String(dt.getMinutes()));
	var s = zeroPad(String(dt.getSeconds()));
	return y + '-' + m + '-' + d + 'T' + h + ':' + mi + ':' + s + '%2b09:00';
}

// feed 日付解析
function parseFeedDate(s) {
	var local = s.substring(0, s.length - 6);
	var ary = local.split('T');
	var dary = ary[0].split('-');
	var wk = ary[1].split('.');
	var tary = wk[0].split(':');
	var ms = wk[1];
	var o = {
		year: dary[0],
		month: omitZero(dary[1]),
		day: omitZero(dary[2]),
		hour: omitZero(tary[0]),
		min: omitZero(tary[1]),
		sec: omitZero(tary[2]),
		tm: omitZero(tary[0]) + ':' + tary[1]
	};
	o['ymd'] = o.year + zeroPad(o.month) + zeroPad(o.day);
	return o;
}

function zeroPad(s) {
	if (s.length==1) return '0' + s;
	return s;
}

// ゼロ除去。先頭のみ
function omitZero(s) {
	if (s.substring(0, 1) == '0') return s.substring(1);
	return s;
}

function breakToTag(str) {
	rtn = str.replace(/\r\n/ig, '<br>');
	rtn = rtn.replace(/\n/ig, '<br>');
	rtn = rtn.replace(/\r/ig, '<br>');
	return rtn;
}

function bdRefresh() {
	if (typeof(BlockEdit) != 'undefined') {
		BlockEdit.resize();
	}
}

