var gr ={} ;
gr.t_artist = null ;
gr.key ;
gr.familymode=0 ;

function loading(f) {
	if(f) {
		$('loading_img').style.display="inline" ;
	} else {
		$('loading_img').style.display="none" ;
	}
}

function scroll(e) {
	var c = window.pageYOffset ;
	var div = (e-c)/10 ;
	var cnt =0 ;
	var int = setInterval(function() {
		c+=div ;
		window.scrollTo(0,c) ;
		if(++cnt==10) clearInterval(int); 
	},10);

}

var status = {
	state:null ,

	keysearch:function() {
		$I('msg',"") ;
		$S('thumbinfo').display="none" ;
		$S('keysearch').display="inline" ;
		$S('pagecontrol').display="block" ;
		$S('topbtn').display="none";
		$S('nextbtn').display="none";
		$S('prevbtn').display="none";
		$('vlist').innerHTML = "";
		window.scrollTo(0,0);
		status.state="keysearch";
	},
	keywords:function() {
		$S('thumbinfo').display="none" ;
		$S('keysearch').display="none" ;
		$S('pagecontrol').display="none" ;
		window.scrollTo(0,0);
		status.state="keywords";
	},
	resentview:function() {
		$S('keysearch').display="none" ;
		$S('pagecontrol').display="none" ;
		window.scrollTo(0,0);
		status.state="resentview";
	},
	familymode:function() {
		$S('keysearch').display="none" ;
		$S('pagecontrol').display="none" ;
		$S('thumbinfo').display="none" ;
		window.scrollTo(0,0);
		status.state="familymode";
	}

}

function ua(act,obj,a1,a2,a3) {
	switch(act) {
	case 'search' :
		status.keysearch() ;
		if($('key').value) {
			gr.page=1 ;
			gr.key = $('key').value ;
			gr.order =$('order').value ;
			if(gr.key.match(/ID:(.+)/)) {
				getvideo( RegExp.$1) ;
			} else {
				getlist( gr.key,1 );
			}
			$('vlist').focus() ;
		} else alert('検索ワードを入れてください');
		break ;
	case 'view' :
		var id =gr.records[a1].id ;
		if(Elem(id).innerHTML=="") {
			gr.t_view.extract(Elem(id),{id:id}) ;
			scroll(Elem(id).offsetTop+0) ;
			var mode = (gr.searchstate==1)?"v":"r" ;
			var p = {
					id:id,mode:mode,
					thumb:gr.records[a1].thumbnail_url,
					title:gr.records[a1].title,
					author:gr.records[a1].author,
					rating:(gr.records[a1].stars)?gr.records[a1].stars:gr.records[a1].rating_avg
				}
				if(gr.records[a1].sensored!=undefined) p.sensored = gr.records[a1].sensored ;
			gr.q.get('viewlog', p ,function(dat){} ) ;
		}else {
			$I(Elem(id),"") ;
		}
		break ;

	case 'next':
		window.scrollTo(0,0);
		getlist( gr.key,gr.page+1 ) ;
		break ;
	case 'prev':
		window.scrollTo(0,0);
		getlist( gr.key,gr.page-1) ;
		break ;
	case 'top':
		window.scrollTo(0,0);
		break ;

	case 'orderchange':
		ua('search') ;
		break;

	case 'getinfo' :
		var o = Elem('d'+a1) ;
		if(o.innerHTML =="" ) {
			o.style.display="block" ;
			o.innerHTML = "Loading..." ;
			gr.q.get('details',{id:a1},function(d,id) {
				if(d.details) {
					gr.t_details.extract(Elem('d'+id),d.details) ;
				} else {
					Elem('d'+id).innerHTML = "error" ;
				}
			},a1) ;
		}else {
			if(o.style.display!="block" ) o.style.display = "block" ;
			else  o.style.display = "none" ;

		}
		break ;
	case 'tag' :
		var k = obj.innerHTML ;
		$('key').value = $('key').value + " "+ k ;
		break ;

	case 'showkeywords':
		status.keywords();
		$I('msg',"検索中・・") ;
		gr.q.get('keywords',{},function(d){
			if(gr.familymode==0) {
				for(var i=0;i<d.keywords.length;i++) {
					d.keywords[i].sensored = undefined ;
				}
			}
			gr.t_keyword.extract('vlist',d) ;
			loading(0);
			$I('msg',"このサイト内で検索された人気キーワードです") ;
		}) ;
		loading(1);
		break;
	
	case 'keyword' :
		var k = obj.innerHTML ;
		$('key').value = k ;
		ua('search') ;	
		break ;
	
	case 'keysearch' :
		status.keysearch();
		$('key').value ="" ;
		break ;

	case 'resentview' :
		$I('msg',"検索中・・") ;
		status.resentview();
		gr.q.get('resentview',{},function(d){
			if(gr.familymode==0) {
				for(var i=0;i<d.view.length;i++) {
					d.view[i].sensored = undefined ;
				}
			}
			gr.t_resentview.extract('vlist',d) ;
			gr.resentview = d.view ;
			loading(0);
			$I('msg',"このサイト内で見られた最近の動画です") ;
		}) ;
		loading(1);
		break;
	case 'topvideo' :
		$I('msg',"検索中・・") ;
		status.resentview();
		gr.q.get('topvideo',{},function(d){
			if(gr.familymode==0) {
				for(var i=0;i<d.view.length;i++) {
					d.view[i].sensored = undefined ;
				}
			}
			gr.t_resentview.extract('vlist',d) ;
			gr.resentview = d.view ;
			loading(0);
			$I('msg',"このサイト内で見られた人気の動画です") ;
		}) ;
		loading(1);
		break;
		
	case 'thumbover':
		if(status.state!="resentview") break ;
		var t =$('thumbinfo') ;
//		t.style.display="none" ;
		t.innerHTML = gr.resentview[a1].title;
		t.style.top = obj.offsetTop + "px" ;
		t.style.left = 10 + "px" ;
		t.style.display="block" ;
		t.style.top = obj.offsetTop - t.offsetHeight + "px" ;
		var left = $('vlist').offsetWidth - t.offsetWidth  ;
		if(obj.offsetLeft < left ) t.style.left = obj.offsetLeft + "px" ;
		else t.style.left = left + "px" ;
		break ;
	case 'thumbout':
//		$('thumbinfo').style.display="none" ;
		break;
	case 'thumbclick':
		$('thumbinfo').style.display="none" ;
		$('key').value = "ID:"+gr.resentview[a1].id;
		ua('search');
		break;

	case 'familymode':
		status.familymode();
		$I('msg',"ファミリーモード設定");
		gr.t_familymode.extract('vlist',{ngwords:gr.ngwords,familymode:gr.familymode}) ;
		break ;

	case 'setfam':
		var k=Elem('fkey').value ;
		if(k=="") {
			alert("キーワードを入力してください") ;
			break ;
		}
		$I('msg',"ファミリーモードに設定しました");
		gr.familymode = 1 ;
		gr.famkey=k ;
		gr.t_familymode.extract('vlist',{familymode:gr.familymode}) ;
		clearcookie('familymode') ;
		clearcookie('famkey') ;
		setcookie({'familymode':1,'famkey':k},0) ;
		break ;
	case 'resetfam':
		var k=Elem('fkey').value ;
		if(k!=gr.famkey) {
			alert('パスワードが一致しません') ;
			break ;
		}
		gr.familymode = 0 ;
		clearcookie('familymode') ;
		clearcookie('famkey') ;
		$I('msg',"ファミリーモードを解除しました");
		gr.t_familymode.extract('vlist',{ngwords:gr.ngwords,familymode:gr.familymode}) ;
		break ;
	}
	return false ;
}

function getlist(key,page) {
	loading(1);
	$I('msg',"検索中・・") ;
	gr.q.get('key_search',{key:key,'order':gr.order,page:page,familymode:gr.familymode},function(d) {
		loading(0);
		if(d.result==undefined || d.result.error!=undefined ) {
			$I('msg',"検索失敗("+d.result.error+")" );
		}
		else if(page==1 && d.result.total==0) {
			$I('msg',"みつかりません" );
		} else {
			var count = d.result.end - d.result.start + 1 ;
			var tpage = Math.floor((d.result.total-1)/20)+1;
			if(gr.familymode!=0) {
				for(var i=0;i<d.video.length;i++) {
					if(d.video[i].sensored!=undefined) d.video[i].hidden = 1 ;
				}
			}
			gr.t_vlist.extract('vlist',d) ;
			gr.page = page ;
			gr.records = d.video ;
			var msg = d.result.total+"件 "+gr.page+"/"+tpage+"ペ−ジ";
			$I('msg',msg) ;
			gr.searchstate=1;

			$S('nextbtn').display =(d.result.end==d.result.total)?"none":"inline" ;
			$S('prevbtn').display =(gr.page==1)?"none":"inline" ;
			$S('topbtn').display="inline";
		}
	}) ;
}

function getvideo(id) {
	loading(1);
	$I('msg',"検索中・・") ;
	gr.q.get('details',{id:id},function(d,id) {
		if(d.details) {
			d.details.id = id ;
			gr.records = [d.details] ;
			gr.t_video.extract('vlist',{video:d.details}) ;
			$I('msg',"") ;
			gr.searchstate=1;
			$S('topbtn').display="none";
			$S('nextbtn').display="none";
			$S('prevbtn').display="none";
			gr.searchstate=0;
			ua('getinfo',null,id);
		}else {
			$I('msg',"検索失敗("+d.error+")" );
		}
		loading(0);

	},id) ;
}

onload = function() {
	var c = getcookie() ;
	if(c.familymode>0) {
		gr.familymode = c.familymode ;
		gr.famkey = c.famkey ;
	}

	gr.q = new Query('ut_aj.php','msg') ;
	gr.t_vlist = new JhtmlTemplate($('t_vlist'),{
		'video/stars':function(p){ 
			return (p==undefined)?"-":p ; },
		'video/ratings':function(p) {
			return (p==undefined)?0:p ;}
	 }) ;
	if(window.innerHeight==468) {		//wide
		gr.t_view = new JhtmlTemplate($('t_view_w')) ;
	} else {
		gr.t_view = new JhtmlTemplate($('t_view')) ;
	}
	gr.t_details = new JhtmlTemplate($('t_details'),{
		'upload_time':function(p){
			var d = new Date();
			d.setTime(p*1000) ;
			return "" + d.getFullYear()+"/"+(d.getMonth()+1)+"/"+d.getDate() ; }});
	gr.t_video = new JhtmlTemplate($('t_video'),{
		'video/length_seconds':function(p){
			var min=Math.floor(p/60);
			if(min<10) min="0"+min;
			var sec=p%60;
			if(sec<10) sec="0"+sec;
			return min+":"+sec;}});
	gr.t_keyword = new JhtmlTemplate($('t_keywords'),{
		'keywords/count':function(p){
			return Math.floor(p/10+0.5)+1 ;
		}});
	gr.t_resentview = new JhtmlTemplate($('t_resentview'));
	gr.t_familymode = new JhtmlTemplate($('t_familymode'));
	if(window.innerHeight) {gr.windowX = window.innerWidth; gr.windowY=window.innerHeight; } //ff
	else { gr.windowX=document.documentElement.clientWidth; gr.windowY=document.documentElement.clientHeight;} //IE
	gr.q.get('getngwords',{},function(d) { gr.ngwords = d.ngwords } ) ;
}

