/**
 * @author shom
 */

function logout(){
	MP.doLogout(function(){
		location.reload();
	});
}

function onlogin(){
	// logincheck.jsから呼び出し
	// これとは別に <a href="#cmd..." class="onlogin"></a>も実行されている

	G.setAutoInputSelectAll();
	
	MP.linkClickHandlersExtend("entry",function(orgf,target,args,e,onapply,oncomp){
		var t=target.split("/")[0];
		if(t=="entry"||t=="myentry"){
			G.addClassName(G.$(t+"-box"),"showing");
		}
		orgf(target,args,e,onapply,oncomp);
	});
	
	MP.linkClickHandlersExtend("myentries",function(orgf,target,args,e,onapply,oncomp){
		onapply=(onapply||function(v){return v}).hook(function(orgf,v,vlist,cond){
			G.each(MP.myfeeds.archives,function(v2){
				if(v2.channel_id==v.channel_id){
					v=null;
				}
			});
			if(!v){return null;}
			var c=MP.myfeeds.all[v.channel_id];
			if(c){
				v._className+=" "+c._className;
			}
			return orgf(v,vlist,cond);
		});
		return orgf(target,args,e,onapply,oncomp);
	});
	
	// for mixfeeds
	MP.linkClickHandlersExtend("search",function(orgf,target,args,e,onapply,oncomp){
		onapply=(onapply||function(v){return v}).hook(function(orgf,v,vlist,cond){
			G.each(MP.myfeeds.archives,function(v2){
				if(v2.channel_id==v.channel_id){
					v=null;
				}
			});
			if(!v){return null;}
			var c=MP.myfeeds.all[v.channel_id];
			if(c){
				v._className+=" "+c._className;
			}
			return orgf(v,vlist,cond);
		});
		return orgf(target,args,e,onapply,oncomp);
	});
	
	G.each([document,window],function(target){
		G.addEvent(target,"resize",function(){
			if(MP._resizeTimer){return;}
			MP._resizeTimer=setTimeout(function(){
				fitelements();
				delete MP._resizeTimer;
			},200);
		});
	});
	
	fitelements.later(1000);

	G.addEvent(G.$("myentries"),"mousedown",function ondragstart(ev){
		ev=G.parseEvent(ev);
		var e=G.isClass(ev.target,"template-gen")?ev.target:G.$SA(ev.target,".template-gen");
		if(e){
			MP.Draggable._startlater=function(e,ev){
				MP.Draggable._droptargets=G.$S(".template-gen a",G.$("myfeeds"));
				MP.Draggable.setOnDragging(e,function(ev){
					G.each(MP.Draggable._droptargets,function(e){
						var pos=G.pos(e);
						if(pos.left<=ev.pos.x&&ev.pos.x<=pos.right
							&& pos.top<=ev.pos.y&&ev.pos.y<=pos.bottom){
							G.addClassName(e,"dropready");
							G.addClassName(MP.Draggable.draggingElement,"dropready");
							MP.Draggable._lastdropready=e;
						}else{
							G.removeClassName(e,"dropready");
							G.removeClassName(MP.Draggable.draggingElement,"dropready");
						}
					});
				});
				MP.Draggable.setOnDrop(e,function(ev){
					if(MP.Draggable._lastdropready){
						if(G.isClass(MP.Draggable._lastdropready,"dropready")){
							var sid=(" "+e.className+" ").match(/\sentry(\d+)\s/)[1];
							var scid=(" "+e.className+" ").match(/\sfeed(\d+)\s/)[1];
							var dcid=MP.Draggable._lastdropready.id.split("-").pop();
							if(scid!=dcid){
								copymyentry(sid,scid,dcid);
								//alert([sid,scid,dcid].join(","));
							}
						}
						G.removeClassName(MP.Draggable._lastdropready,"dropready");
						delete MP.Draggable._lastdropready;
					}
				});
				MP.Draggable.dragStart(e,ev);
				MP.Draggable.draggingElement.innerHTML="<div style='height:100%; text-align:center; background:#ccc; opacity:0.5; filter:alpha(opacity=50)'>Copying...<div>";
				delete MP.Draggable._startlater;
			}.later(300,this,e,ev);
			return G.stopBubble(ev,true);
		}
	});
	
	G.addEvent(G.$("myentries"),"click",function(ev){
		ev=G.parseEvent(ev);
		if(MP.Draggable._startlater){
			clearTimeout(MP.Draggable._startlater);
			delete MP.Draggable._startlater;
		}
	});
	
	G.addEvent(G.$("myentries"),"mouseup",function(ev){
		ev=G.parseEvent(ev);
		if(MP.Draggable._startlater){
			clearTimeout(MP.Draggable._startlater);
			delete MP.Draggable._startlater;
		}
	});

	genmyfeeds();
	genmixfeeds();  // for mixfeeds

	(function(){
		MP.pseudoClick(G.$("left-allentries"));
	}).poll(function(){
		return MP.tabs.maintab;
	});
	
	// for itemCopy
	getMyFeeds();
	(function() {genMyFeedsForCopy("myFeedsForSearchCopy","myfeeds_for_search_copy_list","myfeeds_for_search_copy");}.poll(function() {return MP.getMyFeedsInit}));
	(function() {genMyFeedsForCopy("myFeedsForEntryCopy","myfeeds_for_entry_copy_list","myfeeds_for_entry_copy");}.poll(function() {return MP.getMyFeedsInit}));

	setInterval(fitelements,3000);
}

function fitelements(){
	var cs=G.clientSize();
	var fp=G.pos(G.$("foot-area"));
	var mlp=G.pos(G.$("main-left-area"));
	var mh=cs.height-fp.height-mlp.top; // main-area,right-area,left-area
	var margins=7*2+5*2;
	G.each(["main","left","right"],function(v){
		G.$(v+"-area").style.height=mh+"px";
		var deco=MP.decorated[v];
		if(deco){
			var did=deco.id;
			G.$(did+"-cont").style.height=mh-margins+"px";
			if(v!="main"){
				G.$(did+"-cont").style.overflow="auto";
			}
		}
	});

	G.each(["myentries","feeds","editfeedarea","searchresults"],function(v){
		try{
			G.$(v).style.height=Math.max(50,mh-margins-G.$(v).offsetTop)+"px";
		}catch(ex){CONSOLE.error("fitelements:"+v+"\n"+G.dump(ex)+"\n"+margins);}
	});

	try{
		G.$("myentry").style.height=Math.max(50,mh-margins-7*2-G.$("myentry").offsetTop)+"px";
		var scr=G.$S(".scrollable",G.$("myentry"))[0];
		var h=mh-margins-7*2-10-scr.offsetTop;
		h=Math.floor(h/2)*2-2; // for IE6 bug
		scr.style.height=h+"px";
	}catch(ex){CONSOLE.error("fitelements:#myentry .scrollable:\n"+G.dump(ex))}

}

function genmyfeeds(cid){
	if(!MP.tmpl.myfeeds){MP.tmpl.myfeeds=new G.HtmlElementTemplater(G.$("myfeeds"));}
	if(MP.tmpl.myfeeds.busy){
		genmyfeeds.poll(function(){return !MP.tmpl.myfeeds.busy;})
		return;
	}
	MP.tmpl.myfeeds.start();
	//order_key:date(pubdate),title,count
	//channel_group:0:通常,1:prof,2:archive,3:draft
	MP.myfeeds={
		all:{},
		archives:{},
		draft:null,
		auth:{"public":{},"private":{}},
		rsstype:{normal:{},podcast:{}},
		source:{raw:{},rss:{},html:{},mail:{}}
	};

	function getmyfeedsmore(offset,limit,cid){
		MP.doModiphi("channel/getMyChannelList",{offset:offset,limit:limit,order_key:"title"},function(r){
			G.each(r.RESULTS,function(v){
				var className=[];
				G.each(["regist","pub","update","newest_item_pub"],function(p){
					if(v[p+"_date"]){
						try{
							v[p+"_date_local"]=MP.getUserTZDateStr(v[p+"_date"]);
						}catch(ex){
							CONSOLE.error("getmyfeedsmore:getUserTZDateStr:"+p+":"+v[p+"_date"]+G.dump(ex));
							v[p+"_date_local"]=v[p+"_date"];
						}
					}
				});
				if(v.channel_group==2){ // archive
					v._className="archive";
					MP.myfeeds.archives[v.channel_id]=v;
				}else if(v.channel_group==3){ // draft;
					v._className="draft";
					MP.myfeeds.draft=v;
				}else{
					MP.myfeeds.all[v.channel_id]=v;
					if(v.private_flg!=0){
						MP.myfeeds.auth["private"][v.channel_id]=v;
						className.push("auth_private");
					}else{
						MP.myfeeds.auth["public"][v.channel_id]=v;
						className.push("auth_public");
					}
					if(v.channel_type==1){
						MP.myfeeds.rsstype.podcast[v.channel_id]=v;
						className.push("rss_podcast");
					}else{
						MP.myfeeds.rsstype.normal[v.channel_id]=v;
						className.push("rss_normal");
					}
					if(v.n2_flg==1){
						MP.myfeeds.source.html[v.channel_id]=v;
						className.push("source_html");
					}else if(v.n3_flg==1){
						MP.myfeeds.source.rss[v.channel_id]=v;
						className.push("source_rss");
					}else{
						MP.myfeeds.source.raw[v.channel_id]=v;
						className.push("source_raw");
					}
					v._className=className.join(" ");
					v._rsslink={"@href":v.channel_url};
					v._htmllink={"@href":v.link};
					MP.tmpl.myfeeds.apply(v);
				}
			});
			if(r.RESULTS.length!=0){
				getmyfeedsmore.later(50,this,offset+limit,limit,cid);
			}else{
				MP.tmpl.myfeeds.complete();
				if(cid){
					MP.pseudoClick(G.$("left-feed-"+cid));
				}
			}
		},function (err,mode){
			CONSOLE.error("getmyfeeds:"+mode+":"+G.dump(err));
			var msg;
			switch(mode){
				case "resulterr":
					msg="サーバーエラー"; break;
				case "resultng":
					msg="入力が間違っています"; break;
				case "connectionerror":
					msg="サーバー接続エラー"; break;
				default:
					msg="エラー"; break;
			}
			MP.tmpl.myfeeds.abort(function(tmpl){
				var t=G.$S(".for-template-abort",tmpl.e)[0];
				if(t){
					t.innerHTML=msg+"\n"+G.dump(err);
				}else{
					alert(msg+"\n"+G.dump(err));
				}
			});
		},false);
	}
	
	getmyfeedsmore(0,10,cid);
	
}

function doleft(){
	var args=[].slice.apply(arguments);
	var cmd=args.shift();
	MP.linkClickHandlersExec("cursor-set-focused-left@this",this);
	switch(cmd){
		case "myentries": editfeed.apply(this,args); break;
		case "myfeeds": editfeeds.apply(this,args); break;
		
		// for mixfeeds
		case "mixfeeds": showmixfeedsall.apply(this,args); break;
		case "mixfeedsentries": showmixfeedsentries.apply(this,args); break;
	}
}

var FEEDSTYPEDESC={
	"auth-public":"公開フィード",
	"auth-private":"非公開フィード",
	"rsstype-normal":"通常フィード",
	"rsstype-podcast":"ポッドキャスト",
	"source-raw":"エディタで作成したエントリー",
	"source-rss":"RSSから取得したエントリー",
	"source-html":"Webから取得したエントリー",
	"source-mail":"メールから作成したエントリー"
};

function editfeed(){
	var args=[].slice.apply(arguments),cmd=args.shift();
	// exec-doleft-myentries-feed-<channel_id>
	// exec-doleft-myentries-draft
	// exec-doleft-myentries-type-auth-(public|private)
	// exec-doleft-myentries-type-rsstype-(normal|podcast)
	// exec-doleft-myentries-type-source-(raw|rss|html|mail)
	switch(cmd){
		case "feed":
			var cid=args.shift();
			var v=G.clone(MP.myfeeds.all[cid]);
			v.rsslink={_value:v.channel_url,"@href":v.channel_url};
			v.htmllink={_value:v.link,"@href":v.link};
			G.removeClassName(G.$S("#maniptab_entries_cont .haspopup")[0],"popupshow");
			
			G.setElementValues(G.$("maniptab_entries_cont"),v);
			MP.tabs.maniptab.enable(G.$("maniptab_entries"));
			args=["feed",cid];
			break;
		case "draft":
			var v=MP.myfeeds.draft;
			G.setElementValues(G.$("maniptab_draft_cont"),v);
			MP.tabs.maniptab.enable(G.$("maniptab_draft"));
			args=["feed",v.channel_id];
			break;
		case "type":
			var type1=args.shift(),type2=args.shift();
			var feeds=MP.myfeeds[type1][type2];
			var channel_ids=[];
			G.each(feeds,function(v){
				channel_ids.push(v.channel_id);
			});
			var desc=FEEDSTYPEDESC[type1+"-"+type2];
			G.setElementValues(G.$("maniptab_entriesgroup_cont"),{group:desc});
			MP.tabs.maniptab.enable(G.$("maniptab_entriesgroup"));
			if(channel_ids.length==0){
				// no feeds
				if(!MP.tmpl.myentries){MP.tmpl.myentries=new G.HtmlElementTemplater(G.$("myentries"));}
				delete MP.tmpl.myentries.hasnext;
				G.removeClassName(MP.tmpl.myentries.e,"hasnext");
				G.removeClassName(MP.tmpl.myentries.e,"hasprev");
				MP.tmpl.myentries.start();
				MP.tmpl.myentries.complete();
				return;
			}
			args=["feed",channel_ids.join(",")];
			break;
		default:
			MP.tabs.maniptab.enable(G.$("maniptab_entriesall"));
			//args.unshift(cmd);
	}
	args.unshift("myentries"); args.push("0,10@myentries");
	MP.pseudoClick("#"+args.join("-"));
	//MP.pseudoClick("#myentries-"+args.join("-")+"-0,10@myentries");
	MP.tabs.maintab.enable(G.$("maintab_myentries"));
}

function editfeeds(feeds,order){
	feeds=feeds||MP.myfeeds.all;
	order=order||"title";
	
	var url=G.parseUri(MP.API);
	if(!url.hostname){
		url=G.parseUri(location.href);
	}
	url.params={}; delete url.hash; url.path="/mf/m/"+MP.login.member_id+"/";
	
	G.$("myfeeds-html").href=url.toString();
	G.$("myfeeds-opml").href=url.toString()+"opml/";

	MP.tabs.maniptab.enable(G.$("maniptab_feeds"));
	MP.tabs.maintab.enable(G.$("maintab_feeds"));
	if(!MP.tmpl.feeds){MP.tmpl.feeds=new G.HtmlElementTemplater(G.$("feeds"));}
	MP.tmpl.feeds.start();
	G.each(G.sortObj(feeds,order),function(v){MP.tmpl.feeds.apply(v);});
	MP.tmpl.feeds.complete();
}

function deleteentries(){
	var args=[].slice.apply(arguments),v,msg="";
	if(args[0]){
		v={checked:args.shift().split(",")};
	}else{
		msg="チェックした";
		v=G.getElementValues(G.$("myentries"));
	}
	if(!v.checked){alert("削除したいエントリーを指定してください");return;}
	if(!confirm(msg+"エントリーを削除しますか？")){return;}
	if(!v.checked.push){v.checked=[v.checked];}
	
	MP.doModiphi("item/deleteItems",{item_id:v.checked},(function(r){
		G.clearwait();
		genmyfeeds();
		MP.pseudoClick("#myentries-page-0@myentries");
		alert("削除しました\n削除が完了するまでに時間がかかることがあります。");
	}).bindThis(this),(function onerror(err,mode){
		G.clearwait();
		switch(mode){
			case "connectionerror":
				alert("サーバー接続エラー："+err);
				break;
			case "evalerror":
			case "resulterr":
				alert("サーバーエラー："+err);
				break;
			case "resultng":
				alert(G.dump(err));
				break;
		}
	}).bindThis(this),false);
	return;
}

function reload(target){
	MP.pseudoClick("#"+target+"-page-0@"+target)
}

function copymyentry(sid,scid,dcid){
	function onerrorfunc(lap,err,mode){
		CONSOLE.error("copymyentry:"+lap+":"+mode+":"+G.dump(err));
		var msg;
		switch(mode){
			case "resulterr":
				msg="サーバーエラー"; break;
			case "resultng":
				msg="入力が間違っています"; break;
			case "connectionerror":
				msg="サーバー接続エラー"; break;
			default:
				msg="エラー"; break;
		}
		alert(({
			"getsrcitem":"エントリー読み込み",
			"registnewitem":"エントリー書き込み",
			"deletesrcitem":"エントリー削除"
		})[lap]+":"+msg);
		G.clearwait();
	}
	G.setwait();
	MP.doModiphi("item/getMyItem",{item_id:sid},function(r){
		var newentry=r.RESULTS[0];
		newentry.category=newentry.categories.split("\t");
		newentry.channel_id=dcid;
		MP.doModiphi("item/registNewItem",newentry,function(r){
			genmyfeeds();
			MP.pseudoClick("#myentries-reload@myentries")
			alert("コピーしました");
			G.clearwait();
			/*
			MP.doModiphi("item/deleteItem",{item_id:sid},function(r){
				genmyfeeds();
				MP.pseudoClick("#myentries-reload@myentries")
				alert("コピーしました");
				//reload("myentries");
			}, function onerr(err,mode){
				onerrorfunc("deletesrcitem",err,mode);
			});
			*/
		},function onerr(err,mode){
				onerrorfunc("registnewitem",err,mode);
		});
	},function onerr(err,mode){
		onerrorfunc("getsrcitem",err,mode);
	},false);
}

function feedmanip(mode,cid){
	// #exec-feedmanip-(delete[-cid]|edit[-cid]|new[-(rss|html|raw))
	
	if(cid===undefined){
		var v=G.getElementValues(G.$SA(this,"div"));
		cid=v.channel_id;
	}
/*
	if(mode=="delete"){
		alert("TODO");
		if(confirm("フィードに属するエントリーと添付ファイルはすべて削除されます。\n削除しますか？")){
			
		}
		return;
	}
*/

	var ifr=new G.IFrame(G.$("ifr-editfeed"));
	ifr.load("js/dummy.html?"+(new Date().valueOf()));

		MP.tabs.maintab.enable(G.$("maintab_editfeed"));
		var uri=G.parseUri(location.href);
		
		var type;
		if(mode=="new"){
			type=cid;
		}else if(cid&&MP.myfeeds.all[cid]){
			type=MP.myfeeds.all[cid]._className.split(" ");
			G.each(type,function(v){
				if(v=="source_rss"){type="rss";return true;}
				if(v=="source_html"){type="html";return true;}
				if(v=="source_raw"){type="raw";return true;}
			});
		}
		if(type===undefined){alert("invalid feed type");return;}
		
		uri.path=uri.path.replace(/\/[^\/]+$/,"/edit_feed_"+type+".html");
		uri.params._callback="onupdatefeed";
		if(mode!="new"){uri.params.cid=cid;};

		//G.$("ifr-editfeed").src=uri.toString();

	uri.params._d=(new Date()).valueOf;
	ifr.load.later(200,ifr,uri.toString());
}

function deletefeed(){
	var v=G.getElementValues(G.$SA(this,"#maniptab_entries_cont"));
	if(MP.myfeeds.all[v.channel_id].channel_group != "0"){
		//G.removeClassName(G.$SA(this,".haspopup"),"popupshow");
		alert("このフィードは削除できません");
		return;
	}
	G.setwait();
	
	//　確認
	var msg = "フィード全体を削除しますか？\nフィードを削除するとフィードに属するエントリー及び添付ファイルはすべて削除されます。"
	if(!confirm(msg)){G.clearwait();return;}
	
	MP.doModiphi("channel/deleteChannelFull",v,(function(r){
		G.clearwait();
		//G.removeClassName(G.$SA(this,".haspopup"),"popupshow");
		onupdatefeed();
		MP.pseudoClick(G.$("left-allentries"));
		alert("削除しました\n削除が完了するまでに時間がかかることがあります。");
	}).bindThis(this),(function onerror(err,mode){
		G.clearwait();
		switch(mode){
			case "connectionerror":
				alert("サーバー接続エラー："+err);
				G.removeClassName(G.$SA(this,".haspopup"),"popupshow");
				break;
			case "evalerror":
			case "resulterr":
				alert("サーバーエラー："+err);
				G.removeClassName(G.$SA(this,".haspopup"),"popupshow");
				break;
			case "resultng":
				alert(G.dump(err));
				break;
		}
	}).bindThis(this),false);
}

function onupdatefeed(cid){
	genmyfeeds(cid);
}

// #exec-editentry-<id>
// #exec-editentry-new-<cid>
function editentry(id,cid){
	var uri=G.parseUri(location.href);
	uri.path=uri.path.replace(/\/[^\/]+$/,"/edit_entry.html");
	if(id=="new"){
		if(!cid){
			var v=G.getElementValues(G.$SA(this,"div"));
			if(v.channel_id){
				uri.params.cid=v.channel_id;
			}
		}
	} else {
		MP._editing=id;
		uri.params.id=id;
	}
	if(G._DEBUG){
		uri.hash="DEBUG";
		uri.params.api=MP.API;
	}
	uri.params._callback="onupdateentry";
	window.open(uri.toString(),"_blank");
}


//--------------------------------------------------------------
// for mix feeds @author hs 2008/07/28
//--------------------------------------------------------------
function mixfeedmanip(mode,my_id){
	
	// #exec-mixfeedmanip-(delete[-myid]|edit[-myid]|new[-mix])
	
	// my_idを取得する
	if(my_id===undefined){
		var v=G.getElementValues(G.$SA(this,"div"));
		my_id=v.my_id;
	}
	var ifr=new G.IFrame(G.$("ifr-editfeed"));
	ifr.load("js/dummy.html?"+(new Date().valueOf()));

	MP.tabs.maintab.enable(G.$("maintab_editfeed"));
	var uri=G.parseUri(location.href);
		
	// typeはmix固定
	var type = "mix";
	uri.path=uri.path.replace(/\/[^\/]+$/,"/edit_feed_"+type+".html");
	uri.params._callback="onupdatemixfeeds";
	if(mode!="new"){uri.params.my_id=my_id;};

	uri.params._d=(new Date()).valueOf;
	ifr.load.later(200,ifr,uri.toString());
}


function onupdateentry(id,o){
	if(MP.showingEntry&&MP.showingEntry.item_id==id){
		MP.pseudoClick("#entry-"+id+"-myentry@myentry");
		MP.pseudoClick("#entries-reload@myentries");
	}
	genmyfeeds(o.channel_id);
}

/**
 * すべてのmixフィードの情報を表示する
 * @param feeds
 * @param order
 * @return
 */
function showmixfeedsall(feeds,order){
	
	feeds=feeds||MP.mixfeeds.all;
	order=order||"title";

	MP.tabs.maniptab.enable(G.$("maniptab_mixfeedsall"));
	MP.tabs.maintab.enable(G.$("maintab_mixfeedsall"));
	if(!MP.tmpl.mixfeedsall){MP.tmpl.mixfeedsall=new G.HtmlElementTemplater(G.$("mixfeedsall"));}
	MP.tmpl.mixfeedsall.start();
	G.each(G.sortObj(feeds,order),function(v){MP.tmpl.mixfeedsall.apply(v);});
	MP.tmpl.mixfeedsall.complete();
}

/**
 * MixFeedのエントリーを表示する
 * @return
 */
function showmixfeedsentries() {
	
	var args=[].slice.apply(arguments);
	var mid=args.shift();
	var v=G.clone(MP.mixfeeds.all[mid]);
	G.setElementValues(G.$("maniptab_mixfeeds_cont"),v);
	MP.tabs.maniptab.enable(G.$("maniptab_mixfeeds"));
	
	// 検索条件 objectで返却される場合とstringの場合がある
	var q = v.query;
	if(v.query instanceof String) {
		q = G.fromJSON(v.query);
	}
	if(q["channel_id"]) { var channel_ids = q["channel_id"]; }
	if(q["global"])     { var global = q["global"]["query"]; }
	if(q["category"])   { var category = q["category"]["query"]; }
	
	var arg="";
	if(channel_ids){ if(G.isArray(channel_ids)) { arg += "channel_id-" + channel_ids.join(","); } else { arg += "channel_id-"+channel_ids; }}
	if(category)   { if(G.isArray(category))    { arg += "-category-"   + category.join(",");    } else { arg += "category-"+category; }}
	if(global)     { arg += "-global-" + global; }
	MP.tabs.maintab.enable(G.$("maintab_myentries"));
	MP.pseudoClick("#search-"+arg+"-0,10@searchresults");
}

/**
 * 所有するMixFeed一覧を表示する
 * @param mid
 * @return
 */
function genmixfeeds(mid){
	
	if(!MP.tmpl.mixfeeds){MP.tmpl.mixfeeds=new G.HtmlElementTemplater(G.$("mixfeeds"));}
	if(MP.tmpl.mixfeeds.busy){
		genmixfeeds.poll(function(){return !MP.tmpl.mixfeeds.busy;})
		return;
	}
	MP.tmpl.mixfeeds.start();

	// mixfeedsを格納
	MP.mixfeeds={
		all:{},
		auth:{"public":{},"private":{}}
	};

	function genmixfeedsmore(offset,limit,mid){
		MP.doModiphi("mc/getMyChannelList",{offset:offset,limit:limit,order_key:"title"},function(r){
			G.each(r.RESULTS,function(v){
				var className=[];
				
				// 時間のフォーマット変更
				G.each(["regist","pub","update","newest_item_pub"],function(p){
					if(v[p+"_date"]){
						try{
							v[p+"_date_local"]=MP.getUserTZDateStr(v[p+"_date"]);
						}catch(ex){
							CONSOLE.error("getmyfeedsmore:getUserTZDateStr:"+p+":"+v[p+"_date"]+G.dump(ex));
							v[p+"_date_local"]=v[p+"_date"];
						}
					}
				});
				MP.mixfeeds.all[v.my_id]=v;
				if(v.private_flg!=0){
					MP.mixfeeds.auth["private"][v.my_id]=v;
					className.push("auth_private");
				}else{
					MP.mixfeeds.auth["public"][v.my_id]=v;
					className.push("auth_public");
				}
				v._className=className.join(" ");
				
				///mf/m/[member_id]/mc/[my_id]/
				var url=G.parseUri(MP.API);
				if(!url.hostname){
					url=G.parseUri(location.href);
				}
				url.params={}; delete url.hash; url.path="/mf/m/"+MP.login.member_id+"/mc/";
				v.channel_url = url+v.my_id+"/";
				MP.tmpl.mixfeeds.apply(v);
				
			});
			if(r.RESULTS.length!=0){
				genmixfeedsmore.later(50,this,offset+limit,limit,mid);
			}else{
				MP.tmpl.mixfeeds.complete();
				if(mid){
					MP.pseudoClick(G.$("left-allentries"));
					//console.log("left-mixfeedsentries-"+mid)
					//G.clearwait();
					//MP.pseudoClick(G.$("left-mixfeedsentries-"+mid));
					//MP.pseudoClick('#exec-doleft-mixfeedsentries-'+mid);
					//MP.linkClickHandlersExec("cursor-set-focused-left@this",this);
				}
			}
		},function (err,mode){
			CONSOLE.error("genmixfeeds:"+mode+":"+G.dump(err));
			var msg;
			switch(mode){
				case "resulterr":
					msg="サーバーエラー"; break;
				case "resultng":
					msg="入力が間違っています"; break;
				case "connectionerror":
					msg="サーバー接続エラー"; break;
				default:
					msg="エラー"; break;
			}
			MP.tmpl.mixfeeds.abort(function(tmpl){
				var t=G.$S(".for-template-abort",tmpl.e)[0];
				if(t){
					t.innerHTML=msg+"\n"+G.dump(err);
				}else{
					alert(msg+"\n"+G.dump(err));
				}
			});
		},false);
	}
	
	genmixfeedsmore(0,10,mid);
	
}

/**
 * mixFeedの削除
 * @return
 */
function deletemixfeeds(){
	
	var v=G.getElementValues(G.$SA(this,"#maniptab_mixfeeds_cont"));
	if(!confirm("Mixしたフィードを削除しますか？")){G.clearwait();return;}
	MP.doModiphi("mc/deleteChannel",{my_id:v.my_id},(function(r){
		G.clearwait();
		onupdatemixfeeds();
		MP.pseudoClick(G.$("left-allentries"));
		alert("削除しました\n削除が完了するまでに時間がかかることがあります。");
	}).bindThis(this),(function onerror(err,mode){
		G.clearwait();
		switch(mode){
			case "connectionerror":
				alert("サーバー接続エラー："+err);
				break;
			case "evalerror":
			case "resulterr":
				alert("サーバーエラー："+err);
				break;
			case "resultng":
				alert(G.dump(err));
				break;
		}
	}).bindThis(this),false);
}

/**
 * MixFeedsの再構築
 * @return
 */
function rebuildemixfeeds(){
	
	var v=G.getElementValues(G.$SA(this,"#maniptab_mixfeeds_cont"));
	var mid=v.my_id;
	var v=G.clone(MP.mixfeeds.all[mid]);
	
	var err=[];
	if (!v.title||v.title.match(/^\s*$/)) {err.push("タイトルがありません");}
	if (!v.description||v.description.match(/^\s*$/)) {err.push("説明がありません");}
	v.query = G.toJSON(v.query);
	
	MP.doModiphi("mc/updateChannel",v,saveMixFeedSuccess,saveMixFeedError,false);
	
	function saveMixFeedSuccess(r) {
		G.clearwait();
		onupdatemixfeeds();
		MP.pseudoClick(G.$("left-allentries"));
		alert("Mixフィードを再構築しました。");
	}
	function saveMixFeedError(err,mode) {
		switch (mode) {
			case "resultng":
				alert("Mixフィードの再構築に失敗しました");
				CONSOLE.error("#:"+G.dump(err));
				alert("エラー\n"+G.dump(err));
				break;
			case "resulterr":
				alert("Mixフィードの再構築に失敗しました");
				CONSOLE.error("#:"+G.dump(err));
				alert("エラー\n"+G.dump(err));
				break;
			default:
				alert("システムエラー");
				CONSOLE.error("#:"+G.dump(err));
				alert("エラー\n"+G.dump(err));
		}
	}
}

/**
 * 左ペインmixFeedの更新
 * @param mid
 * @return
 */
function onupdatemixfeeds(mid){
	genmixfeeds(mid);
}

/**
 * エントリーのコピー
 * @return
 */
function copyentries(){
	
	var args=[].slice.apply(arguments);
	var cmd= args.shift();
	var v,msg,c="";
	if(args[0]){
		v={checked:args.shift().split(",")};
	}else{
		msg="チェックした";
		if(cmd=="entry") {
			v=G.getElementValues(G.$("myentries"));
			c=G.getElementValues(G.$("entry_copy_form"));
			
			c.channel_id = c.channel_id_for_entry_copy;

		}else if(cmd=="search") {
			v=G.getElementValues(G.$("searchresults"));
			c=G.getElementValues(G.$("search_copy_form"));
			
			c.channel_id = c.channel_id_for_search_copy;
		}
	}
	
	if(!v.checked){alert("コピーしたいエントリーを指定してください");return;}
	if(!confirm(msg+"エントリーをコピーしますか？")){return;}
	if(!v.checked.push){v.checked=[v.checked];}
	
	
	MP.doModiphi("item/copyItem",{item_id:v.checked,channel_id:c.channel_id},(function(r){
		G.clearwait();
		genmyfeeds();
		MP.pseudoClick("#myentries-page-0@myentries");
		alert("コピーしました\n削除が完了するまでに時間がかかることがあります。");
		//MP.pseudoClick(G.$("left-allentries"));
	}).bindThis(this),(function onerror(err,mode){
		G.clearwait();
		switch(mode){
			case "connectionerror":
				alert("サーバー接続エラー："+err);
				break;
			case "evalerror":
			case "resulterr":
				alert("サーバーエラー："+err);
				break;
			case "resultng":
				alert(G.dump(err));
				break;
		}
	}).bindThis(this),false);
	return;
}

function getMyFeeds() {

	MP.myFeeds=[];
	
	MP.getMyFeedsInit=false;
	
	function getMyFeedsMore(offset,limit) {
		
		MP.doModiphi("channel/getMyChannelList",{offset:offset,limit:limit},getMyFeedsSuccess,getMyFeedsError,true);
		
		function getMyFeedsSuccess(o) {
			G.each(o.RESULTS,function(o,i) {
				MP.myFeeds[i]=o;
			});
	
			if (o.RESULTS.length != 0) {
				getMyFeedsMore.later(50, this, offset + limit, limit);
			}else {
				MP.getMyFeedsInit=true;
			}
		}
		function getMyFeedsError(err,mode) {
			CONSOLE.error("getmyfeeds:"+mode+":"+G.dump(err));
			var msg;
			switch(mode) {
				case "resulterr":
					msg="サーバーエラー"; break;
				case "resultng":
					msg="入力が間違っています"; break;
				case "connectionerror":
					msg="サーバー接続エラー"; break;
				default:
					msg="エラー"; break;
			}
		}
	}
	getMyFeedsMore(0,50);
}

function genMyFeedsForCopy(tmplName,tmplId1,tmplId2) {

	if (!MP.tmpl[tmplName]) {
		MP.tmpl[tmplName] = new G.HtmlElementTemplater(G.$(tmplId1));
	}
	
	MP.tmpl[tmplName].start();
	
	MP.tmpl[tmplName]._initializing = true;

	var esf = document.createDocumentFragment();
			
	G.each(MP.myFeeds,function(o) {

		var cid = o.channel_id;
		if (o.channel_group == "0" || o.channel_group == "1" || o.channel_group == "3") {
			if(o.private_flg=="0") {
				MP.tmpl[tmplName].apply(o);
				var os = document.createElement("option");
				os.value = o.channel_id;
				os.innerHTML = "&nbsp;" + G.esc(o.title);
				esf.appendChild(os);
			}
		}
	});
			
	G.$(tmplId2).innerHTML = "";
	var os=document.createElement("option");
	os.value="";os.innerHTML="--選択してください--";
	G.$(tmplId2).appendChild(os);
	G.$(tmplId2).appendChild(esf);
	MP.tmpl[tmplName].complete();
	
	delete MP.tmpl[tmplName]._initializing;
}


