/**
 * @author shom
 */

function logout(){
	MP.doLogout(function(){
		location.reload();
	});
}

function onlogin(){
	// logincheck.jsから呼び出し
	// これとは別に <a href="#cmd..." class="onlogin"></a>も実行されている

	G.setAutoInputSelectAll();
		
	G.addEvent(document,"keypress",function(ev){
		ev=G.parseEvent(ev);
		if(ev.target.tagName){
			switch(ev.target.tagName.toLowerCase()){
				case "input": case "textarea": case "select": case "option":
					return;
			}
		}
		if(ev.shiftKey||ev.ctrlKey||ev.altKey){return;}

		var e,b,c;
		if(MP.tabs.maintab){
			
			if(MP.tabs.maintab._enabled.id=="maintab_entries"){
				if(G.isClass(G.$("entry-box"),"showing")){
					b=G.$("entry-box");
					e=G.$S("#entry-box .scrollable")[0];
					c="entries";
				}else{
					return;
				}
			}else if(MP.tabs.maintab._enabled.id=="maintab_myentries"){
				if(G.isClass(G.$("myentry-box"),"showing")){
					b=G.$("myentry-box");
					e=G.$S("#myentry-box .scrollable")[0];
					c="myentries";
				}else{
					return;
				}
			}else{
/*
				G.each(MP.tabs.maintab.contents,function(e){
					if(G.isClass(e,"tabselectedcont")){
						var scr=G.$S(".scrollable",e)[0];
						try{
							(scr||e).focus();
						}catch(ex){}
					}
				});
				return;
*/
				return;
			}
		}
		switch(ev.keyAsc){
			case 38: // UP
				if(false){
					if(MP._autoscrolling){
						clearInterval(MP._autoscrolling);
						delete MP._autoscrolling;
					}else{
						MP._autoscrolling=setInterval((function(e){
							if(!e.offsetHeight){
								clearInterval(MP._autoscrolling);
								delete MP._autoscrolling;
								return;
							}
							e.scrollTop-=2;
						}).bindArgs(e),50);
					}
				}else{
					e.scrollTop-=50;
				}
				return G.stopBubble(ev,true);
				break;
			case 40: // DOWN
				if(false){
					if(MP._autoscrolling){
						clearInterval(MP._autoscrolling);
						delete MP._autoscrolling;
					}else{
						MP._autoscrolling=setInterval((function(e){
							if(!e.offsetHeight){
								clearInterval(MP._autoscrolling);
								delete MP._autoscrolling;
								return;
							}
							e.scrollTop+=2;
						}).bindArgs(e),50);
					}
				}else{
					e.scrollTop+=50;
				}
				return G.stopBubble(ev,true);
				break;
			case 32: // SPACE
			case 34: // PgDn
				if(e.scrollTop+e.clientHeight<e.scrollHeight){
					if(false){
						clearInterval(MP._anim);
						MP._anim=G.anim(e.scrollTop,e.scrollTop+Math.floor(e.clientHeight-15),(function(v){
							this.scrollTop=v;
						}).bindThis(e),null,8,100);
					}else{
						e.scrollTop+=e.clientHeight-20;
					}
					return G.stopBubble(ev,true);
				}
			case 78: case 110: // n
				cursornext(c);
				return G.stopBubble(ev,true);
				break;
			case 33: // PgUp
				if(e.scrollTop>0){
					if(false){
						clearInterval(MP._anim);
						MP._anim=G.anim(e.scrollTop,Math.max(e.scrollTop-Math.floor(e.clientHeight-15)),function(v){
							e.scrollTop=v;
						},null,8,100);
					}else{
						e.scrollTop-=e.clientHeight-20;
					}
					return G.stopBubble(ev,true);
				}
			case 80: case 112: //p
			case 66: case 98: //b
				cursorprev(c);
				return G.stopBubble(ev,true);
				break;
			case 85: case 117: // u
				//MP.pseudoClick(G.$S("a.permalink",b)[0]);
				window.open(G.$S("a.permalink",b)[0].href);
				return G.stopBubble(ev,true);
				break;
			case 81: case 113: //q
			case 27: // ESC
				G.removeClassName(b,"showing");
				return G.stopBubble(ev,true);
				break;
		} 
	});
	
	MP.linkClickHandlersExtend("search",function(orgf,target,args,e,onapply,oncomp){
		if(target=="entries"||target=="myentries"){
			MP.tabs.maintab.enable(G.$("maintab_"+target));
			//MP.tabs.maniptab.enable(G.$("maniptab_"+target));
			if(args[args.length-1]&&args[args.length-1].match(/^0(,\d+)$/)){
				G.removeClassName(G.$(target.replace(/ies$/,"y")+"-box"),"showing");
				G.$(target).scrollTop=0;
			}
		}
		orgf(target,args,e,onapply,oncomp);
	});

	MP.linkClickHandlersExtend("searchfeed",function(orgf,target,args,e,onapply,oncomp){
		if(target=="feeds"){
			MP.tabs.maintab.enable(G.$("maintab_"+target));
			//MP.tabs.maniptab.enable(G.$("maniptab_"+target));
		}
		orgf(target,args,e,onapply,oncomp);
	});

	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");
		}
		oncomp=(oncomp||function(){}).hook(function(orgf,r,tmpl,offset,len,limit){
			if(t=="entry"&&MP.showingEntry&&MP.mysubscribedchannels[MP.showingEntry.channel_id]){
				G.addClassName(G.$("entry-box"),"subscribed");
			}
			orgf(r,tmpl,offset,len,limit);
		});
		orgf(target,args,e,onapply,oncomp);
	});
	
	MP.linkClickHandlersExtend("playlist",function(orgf,target,args,e,onapply,oncomp){

		/*
		if(MP.mysubscribedchannels._initializing){
			MP.linkClickHandlers["playlist"].later(100,this,target,args,e,onapply,oncomp);
			return;
		}*/
		if(args[0]=="delete"){
			var id,idx;
			if(args[1]){id=args[1]}
			else{
				id=G.getElementValues(G.$SA(e,"div")).id;
			}
			G.each(MP.login.memo.mylists,function(v,i){
				if(v.id==id){
					idx=i;
					return true;
				}
			});
			MP.login.memo.mylists[idx];
			if(confirm("プレイリストから「"+MP.login.memo.mylists[idx].name+"」を削除しますか？")){
				MP.login.memo.mylists.splice(idx,1);
				updateplaylists();
				MP.pseudoClick(G.$("playlist-all"));
			}
			return;
		}else if(args[0]=="edit"){
			var id;
			if(args[1]){id=args[1]}
			else{
				id=G.getElementValues(G.$SA(e,"div")).id;
			}
			editplaylist(id);
			return;
		}else if(args[0]=="new"){
			editplaylist("new");
			return;
		}
		
		MP.tabs.maintab.enable(G.$("maintab_entries"));
		G.removeClassName(G.$("entry-box"),"showing");
		
if(true){
		MP.linkClickHandlers["search"](target,["playlist",args[0],"0,10"]);
}else{
		if(args[0]=="all"){
			// ほんとはsubscribe/readを使うべき
			var cids=[];
			G.each(MP.mysubscribedchannels,function(v,p){cids[cids.length]=p});
			MP.linkClickHandlers["search"](target,["feed",cids.join(","),"0,10"]);
		}else if(args[0]=="allwopl"){
			// ほんとはsubscribe/readを使うべき?
			var pls={};
			G.each(MP.login.memo.mylists,function(v){
				if(v.channel_id.push){
					G.each(v.channel_id,function(v){
						pls[v]=true;
					});
				}else{
					pls[v.channel_id]=true;
				}
			});
			var cids=[];
			G.each(MP.mysubscribedchannels,function(v,p){
				if(!pls[p]){
					cids[cids.length]=p;
				}
			});
			MP.linkClickHandlers["search"](target,["feed",cids.join(","),"0,10"]);
		}else{
			var cids=undefined;
			G.each(MP.login.memo.mylists,function(v){
				if(v.id==args[0]){cids=v.channel_id;return true;}
			});
			if(!cids){alert("invalid playlist");return;}
			MP.linkClickHandlers["search"](target,["feed",cids.join(","),"0,10"]);
		}
	
}

		orgf(target,args,e);
	});
	
	MP.linkClickHandlersExtend("sr",function(orgf,target,args,e){
		if(args.shift()=="modiphi"){
			var url=(args||"").join("-")||MP.subscribe||(MP.showingEntry&&MP.showingEntry.channel_rss_url);
			MP.subscribeChannel(url,function(){
				gensubscribed();
				alert("登録しました\nコンテンツの取得までに時間がかかることがあります");
				
				saveEcrMemo();
				
			},null,false);
			return;
		}
		orgf(target,args,e);
	});
	
	MP.linkClickHandlersExtend("myarchive",function(orgf,target,args,e,onapply,oncomp){
		G.removeClassName(G.$("myentry-box"),"showing");
		orgf(target,args,e,onapply,oncomp);
	});
	
	MP.linkClickHandlersExtend("unsubscribe",function(orgf,target,args,e){
		var v=G.getElementValues(G.$SA(e,"div"));
		MP.getFeedsInfo(args[0]||v.channel_id,function(r){
			var v=r[0];
			if(confirm(MP.mysubscribedchannels[v.channel_id].title+"を削除しますか？")){
				MP.doModiphi("subscribe/deleteSubscribeChannel",v,(function(r){
					var cid=this.channel_id;
					var flg=false;
					G.each(MP.login.memo.mylists,function(v){
						G.each(v.channel_id,function(c,i){
							if(c==cid){
								v.channel_id.splice(i,1);
								flg=true;
							}
						});
					});
					if(flg){
						MP.saveUserMemo();
						updateplaylists();
					};
					gensubscribed();
					MP.netCache.clear();
					alert("削除しました");
					
					saveEcrMemo();
					
				}).bindThis(v),null,false);
			};
		});
		
	});
	
	MP.linkClickHandlersExtend("newfeeds",function(orgf,target,args,e){
		MP.tabs.maniptab.enable(G.$("maniptab_newfeeds"));
		MP.tabs.maintab.enable(G.$("maintab_newfeeds"));
	});
	
	MP.linkClickHandlersExtend("archive",function(orgf,target,args,e){
		if(!MP.myarchives){MP.getMyArchives();}

		if(args[0]=="delete"){
			args.shift();
			var v;
			if(args[0]){
				v={checked:args.shift().split(",")};
			}else{
				v=G.getElementValues(G.$("myentries"));
			}
			if(!confirm("アーカイブから削除しますか？")){return;}
			if(!v.checked){alert("削除したいエントリーをチェックしてください");return;}
			if(!v.checked.push){v.checked=[v.checked];}
			G.setwait();
			MP._archivedelcnt=v.checked.length;
			G.each(v.checked,function(iid){
				MP.doModiphi("item/deleteItem",{item_id:iid},function(){
					MP._archivedelcnt--;
					if(MP._archivedelcnt==0){
						onupdatearchive();
						alert("削除しました");
						G.clearwait();
						delete MP._archivedelcnt;
					}
				});
			});
			return;
		}
		archiveentry(args.shift());
		//orgf(target,args,e);

	});

	// DnD to archive

	G.addEvent(G.$("entries"),"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("li a",G.$("my-archive"));
				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(/\entry(\d+)\s/)[1];
							if(sid){archiveentry(sid);}
						}
						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)'><img src='icon/copy.gif'/>Drop to archive...<div>";
				delete MP.Draggable._startlater;
			}.later(300,this,e,ev);
			return G.stopBubble(ev,true);
		}
	});
	
	G.addEvent(G.$("entries"),"click",function(ev){
		ev=G.parseEvent(ev);
		if(MP.Draggable._startlater){
			clearTimeout(MP.Draggable._startlater);
			delete MP.Draggable._startlater;
		}
	});
	
	G.addEvent(G.$("entries"),"mouseup",function(ev){
		ev=G.parseEvent(ev);
		if(MP.Draggable._startlater){
			clearTimeout(MP.Draggable._startlater);
			delete MP.Draggable._startlater;
		}
	});

	
	genplaylists();
	gensubscribed();
	
	if(!MP.login.memo.reader_init){MP.login.memo.reader_init="playlist-all";}
	if(G.$(MP.login.memo.reader_init)){
		(function(){
			MP.pseudoClick(G.$(MP.login.memo.reader_init));
		}).poll(function(){
			return MP.mysubscribedchannels && MP.tabs.maintab && MP.tabs.maniptab;
		});
	}
	
	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);
	
	setInterval(fitelements,3000);
}

function genplaylists(plid){
	if(!MP.tmpl.playlists){
		MP.tmpl.playlists=new G.HtmlElementTemplater(G.$("playlists"));
	}
	MP.tmpl.playlists.start();
	G.each(MP.login.memo.mylists,function(v,i){
		if(v.id===undefined){v.id=i;}
		if(v.channel_id===undefined){
			v.channel_id=[];
		}else if(!(v.channel_id instanceof Array)){
			v.channel_id=[v.channel_id];
		}
		MP.tmpl.playlists.apply(v);
	});
	MP.tmpl.playlists.complete();
	if(plid){
		MP.pseudoClick(G.$("playlist-"+plid,true));
	}
}

function gensubscribed(){
	if(!MP.tmpl.mysubscribed){
		MP.tmpl.mysubscribed=new G.HtmlElementTemplater(G.$("mysubscribed"));
	}
	MP.tmpl.mysubscribed.start();
	MP.getMySubscribedChannels(0,50,function(){
		/*
		var list=[];
		G.each(MP.mysubscribedchannels,function(v){
			list[list.length]=v;
		});
		list=list.sort(function(a,b){
			return a.title < b.title ? -1 : 1;
		});
		*/

		var list=G.sortObj(MP.mysubscribedchannels,"title");

		G.each(list,function(v){
			MP.tmpl.mysubscribed.apply(v);
		})
		MP.tmpl.mysubscribed.complete();
	});
}

function editplaylist(id,order){
	order=order||"subscribed";
	MP.tmpl.editplaylist.start();
	if(!MP.mysubscribedchannels||MP.mysubscribedchannels._initializing){
		editplaylist.later(200,this,id);
		return;
	}

	G.$("editplaylist").scrollTop=0;
	MP.tabs.maniptab.enable(G.$("maniptab_editplaylist"));
	MP.tabs.maintab.enable(G.$("maintab_editplaylist"));

	var mylist;
	if(id!="new"){
		G.each(MP.login.memo.mylists,function(v,i){
			if(v.id==id){
				mylist=G.clone(v);
				mylist.channel_ids=mylist.channel_id.join(",");
				return true;
			}
		});
	}
	if(!mylist){
		id=0;
		G.each(MP.login.memo.mylists,function(v){
			v.id=G.atoi(v.id,0);
			if(id<=v.id){
				id=v.id+1;
			}
		});
		mylist={id:id,name:"新規プレイリスト",channel_ids:""};
	}

	G.setElementValues(G.$("main-manip"),mylist);

	if(false){
		G.each(mylist.channel_id,function(v){
			var chinfo=MP.mysubscribedchannels[v];
			if(!v){return;} // playlistにはあるけどsubscribedでない
			MP.tmpl.editplaylist.apply(chinfo);
		});
	}else{
		
		var now=new Date();
		G.each(MP.mysubscribedchannels,function(v){
			v.subscribe_regist_date_local=MP.getUserTZDateStr(v.subscribe_regist_date,now);
		});

		var channels;
		switch(order){
			case "subscribed":
				channels=G.sortObj(MP.mysubscribedchannels,"subscribe_regist_date",true);
				break;
			case "title":
				channels=G.sortObj(MP.mysubscribedchannels,"title");
				break;
		}
		
		G.each(channels,function(v){
			MP.tmpl.editplaylist.apply(v);
		});
		G.setElementValues(G.$("editplaylistform"),mylist);
		editplaylist_colorlize();
	}
	MP.tmpl.editplaylist.complete();
	
	MP.editingPlaylist=mylist;
}

function editplaylist_sort(order){
	editplaylist(MP.editingPlaylist.id,order);
}

function editplaylist_colorlize(elm){
	elm=elm?[elm]:G.$S("input",G.$("editplaylist"));
	G.each(elm,function(e){
		var p=G.$SA(e,".feeds-all");
		if(e.checked){
			G.addClassName(p,"checked");
		}else{
			G.removeClassName(p,"checked");
		}
	});
}

function updateplaylists(form){
	if(form){
		var p=G.getElementValues(form);
		if(!p.name){
			alert("プレイリストタイトルを入力してください");
			return;
		}
		if(p.channel_id===undefined){
			alert("プレイリストに登録するフィードをチェックしてください");
			return;
		}else if(!(p.channel_id instanceof Array)){
			p.channel_id=[p.channel_id];
		}
		var updated;
		G.each(MP.login.memo.mylists,function(v,i){
			if(v.id==p.id){
				MP.login.memo.mylists[i]=p;
				updated=p.id;
				return true;
			}
		});
		if(updated===undefined){　// new id
			if(MP.login.memo.mylists == undefined) {
				MP.login.memo.mylists = [];
			}
			MP.login.memo.mylists.push(p);
			updated=p.id;
		}
	}
	MP.saveUserMemo(function(){
		genplaylists(updated);
		(function(plid){
			MP.pseudoClick(G.$("playlist-"+plid,true));
		}).bindArgs(updated).poll((function(plid){
			return G.$("playlist-"+plid);
		}).bindArgs(updated));
		//alert("プレイリストを保存しました");
		
		saveEcrMemo();
	});
}

function searchrss(form){
	var v=G.getElementValues(form||G.$SA(this,"form"));
	v.url=v.url.replace(/^\s+/,"").replace(/\s+$/,"");
	var tmpl=MP.tmpl.subscriberss;
	if(!tmpl){
		tmpl=new G.HtmlElementTemplater(G.$("subscriberss"));
		MP.tmpl.subscriberss=tmpl;
	}
	tmpl.start();
	MP.doModiphi("subscribe/getUrlInfo",v,function(r){
		if(r.NGS){
			CONSOLE.error("searchrss:"+G.dump(r.NGS));
			alert(G.dump(r.NGS));
			MP.tmpl.subscriberss.abort();
		}else{
			G.each(r.RESULTS,function(v){
				MP.tmpl.subscriberss.apply(v);
			});
			MP.tmpl.subscriberss.complete();
		}
	},function(){
		MP.tmpl.subscriberss.abort();
	});
}

function searchRssUrl(){
	var url=G.$("searchrss").value;
	if(!url||url==""){return;}
	var r=doModiphi("subscribe/getUrlInfo",{url:url},null);
	if (r&&r.NGS){var err=[];G.each(r.NGS,function(msg,fn){err.push(msg);});alert(err.join("\n"));return false;}
	if (r&&r.RESULTS){
		var s="<select onchange=\"G.$('selectrss').value=this.value\"><option value=''>--選択してください--</option>";
		G.each(r.RESULTS,function(o){
			s+="<option value=\""+G.esc(o.channel_url,"A")+"\">"+G.esc(o.title + "("+o.version+")")+"</option>";
		});
		s+="</select>";
		G.$("searchedrss").innerHTML=s;
	}
}

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(["entries","myentries","editplaylist","feeds"],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{
		var h=Math.max(50,mh-margins-7*2-G.$("entry").offsetTop);
		h=Math.floor(h/2)*2-2; // for IE6 bug
		G.$("entry").style.height=h+"px";
		var scr=G.$S(".scrollable",G.$("entry"))[0];
		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:#entry .scrollable:\n"+G.dump(ex))}

	try{
		var h=Math.max(50,mh-margins-7*2-G.$("myentry").offsetTop);
		h=Math.floor(h/2)*2-2; // for IE6 bug
		G.$("myentry").style.height=h+"px";
		var scr=G.$S(".scrollable",G.$("myentry"))[0];
		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 cursornext(cname,e,f){
	f=f||function(e){MP.pseudoClick(e);}
	var e=e||MP.cursors[cname];
	if(!e){return;}
	e=e.nextSibling;
	while(e&&!G.isClass(e,"template-gen")){e=e.nextSibling;}
	if(!e){return;}
	if(G.isClass(e,"duplicate")){cursornext(cname,e,f);return;}
	f(G.$S(".entries-title a",e)[0]);
}

function cursorprev(cname,e){
	var e=e||MP.cursors[cname];
	if(!e){return;}
	e=e.previousSibling;
	while(e&&!G.isClass(e,"template-gen")){e=e.previousSibling;}
	if(!e){return;}
	if(G.isClass(e,"duplicate")){cursorprev(cname,e);return;}
	var n=G.$S(".entries-title a",e)[0];
	MP.pseudoClick(n);
}

function doleft(){
	var args=Array.apply(null,arguments);
	switch(args.shift()){
		case "subscribed":
			MP.linkClickHandlersExec("cursor-set-focused-left@li",this);
			MP.linkClickHandlersExec("search-feed-"+args.join("-")+"-0,10@entries",this);
			var v=G.clone(MP.mysubscribedchannels[args[0]]);
			v._rsslink={"@href":v.channel_url};
			v._htmllink={"@href":v.link};
			G.setElementValues(G.$("main-manip"),v);

			MP.tabs.maniptab.enable(G.$("maniptab_subscribed"));
			MP._manip_feed=MP.mysubscribedchannels[args[0]];
			break;
		case "playlist":
			MP.linkClickHandlersExec("cursor-set-focused-left@li",this);
			MP.linkClickHandlersExec("playlist-"+args.join("-")+"@entries",this);
			var mylist,post="",id;;
			if(args[0]=="all"){
				id=args[0];
				mylist={name:"登録フィードすべて",id:"all",channel_id:""};
				MP.tabs.maniptab.enable(G.$("maniptab_playlistall"));
			}else if(args[0]=="allwopl"){
				id=args[0];
				mylist={name:"プレイリストに登録されていない登録フィードすべて",id:"allowpl",chanel_id:""};
				MP.tabs.maniptab.enable(G.$("maniptab_playlistall"));
			}else{
				G.each(MP.login.memo.mylists,function(v){
					if(args[0]==v.id){
						id=args[0];
						mylist=G.clone(v);
						return true;
					}
				});
				//mylist=G.clone(MP.login.memo.mylists[id]);
				mylist.channel_id=mylist.channel_id.join(",");
				MP.tabs.maniptab.enable(G.$("maniptab_playlist"));
			}
			G.setElementValues(G.$("main-manip"),mylist);
			MP.login.memo.reader_init="playlist-"+id;
			MP.saveUserMemo();
			break;
		case "myarchive":
			MP.linkClickHandlersExec("cursor-set-focused-left@li",this);
			MP.linkClickHandlersExec("myarchive-"+args.join("-")+"-0,10@myentries",this);
			MP.tabs.maintab.enable(G.$("maintab_myentries"));
			MP.tabs.maniptab.enable(G.$("maniptab_archive"));
			break;
		
	}
}

function opml(){
	MP.tabs.maintab.enable(G.$("maintab_opml"));
	MP.tabs.maniptab.enable(G.$("maniptab_opml"));
}

M={};
function opmlupload_init(){
	if(!M.opmlup){
		G.addEvent(G.$("opmluploadform"),"submit",function(){alert("")});
		MP.opmlup=new XSU.XsUpload(G.$("opmluploadform"),function(r){
			if (r.NGS || r.ERR) {
				CONSOLE.error("opmlupload:"+G.dump(r));
				alert("エラー\n"+G.dump(r.NGS || r.ERR));
				MP.wizards.opmlwiz.prev();
			} else if (r.RESULTS) {
				G.setElementValues(G.$("opmluploadresult"), r.RESULTS);
				MP.wizards.opmlwiz.next();
				gensubscribed.later(5000);
			}
		});
	}
}

function opmlupload(){
	opmlupload_init();
	MP.wizards.opmlwiz.next();
	G.$("opmluploadform").submit();
	return;

	if(M.uploadComplete){
		alert("前のアップロードが完了していません");
	}else if(G.$("opmlfile").value==""){
		alert("ファイルを指定してください");
	}else{
		M.uploadComplete=function(r){
			if (r.NGS || r.ERR) {
				CONSOLE.error("opmlupload:"+G.dump(r));
				alert("エラー\n"+G.dump(r.NGS || r.ERR));
				MP.wizards.opmlwiz.prev();
			} else if (r.RESULTS) {
				G.setElementValues(G.$("opmluploadresult"), r.RESULTS);
				MP.wizards.opmlwiz.next();
				gensubscribed.later(5000);
			}
			delete M.uploadComplete;
		}
		MP.wizards.opmlwiz.next();
		G.$("opmluploadform").submit();
	}
}

function showentrybygadget(){
	window.open("gadget/entry.html?id="+MP.showingEntry.item_id);
}

function archiveentry(id){
	if(!MP.myarchives){MP.getMyArchives();}
	if(!MP.entries_full[id]){
		archiveentry.bindArgs(id).poll(function(){
			return MP.entries_full[id];
		});
		MP.pseudoClick("#entry-"+id+"@fordescread");
		return;
	}
	G.setwait();
	(function(){
		var entry=MP.entries_full[id];
		var newentry={};
		newentry.title=entry.title;
		newentry.category=entry.categories.split("\t");
		newentry.expire_date="2050-01-01 00:00:00";
		newentry.source=entry.title;
		newentry.source_url=entry.link;
		newentry.author=entry.author;
		var d=entry.description;
		if(entry.description_follow){
			d="<blockquote>"+entry.description+"</blockquote>" + entry.description_follow;
		}
		newentry.description=
			"<h3><a href=\""+G.esc(entry.link,"A")+"\">"
			+G.esc(entry.title)
			+"</a> からアーカイブ</h3>"
			+"<blockquote>"+d+"</blockquote>";
		G.each(MP.myarchives,function(v,p){
			newentry.channel_id=p;
		});
		MP.doModiphi("item/registNewItem",newentry,function(r){
			if(r.ERR){
				CONSOLE.error("#archive:"+G.dump(r.ERR));
				alert("サーバーエラー\n"+G.dump(r.ERR));
				G.clearwait();
				return;
			}
			if(r.NGS){
				CONSOLE.error("#archive:"+G.dump(r.NGS));
				alert("エラー\n"+G.dump(r.NGS));
				G.clearwait();
				return;
			}
			onupdatearchive();
			alert("アーカイブに保存しました");
			G.clearwait();
		},function(){
			alert("サーバーエラー");
			G.clearwait();
		},false);
	}).poll(function(){return !MP.myarchives._initializing;});
}

function onupdatearchive(){
	if(MP.cursors.left&&G.$SA(MP.cursors.left,"#my-archive")){
		MP.pseudoClick(G.$S("a",MP.cursors.left)[0]);
	}
}

function modifycategorylinks(){
	G.each(G.$S("#myentry .info .categories a"),function(e){
		var uri=G.parseUri(e.href);
		e.href="#tab-searched@maniptab&&"+uri.hash.replace(/searchresultstmpl/,"entries").replace("^#","");
	});
}

function saveEcrMemo(successFunc) {
	if(successFunc==undefined) {
		MP.doModiphi("ecr/updateEcrMemo",{},function (r) {
		//console.log("updateEcrMemo:"+r.isUpdate);
		},null,false);
	}else {
		MP.doModiphi("ecr/updateEcrMemo",{},successFunc,null,false);
	}
}
