function MLClass () {
	this.lt = null;
	this.offset = 0;
	this.limit = 0;
	this.name = null;
	this.host = null;
	this.obj = null;
	this.cnt = 0;
	this.total = 0;
	this.p = 0;
	this.toal_obj = null;
	this.num_obj = null;
	this.tag = null;

	this.load = function () {
		var url = "/IF/get_MovieList.php?lt="+this.lt+"&tag="+this.tag+"&name="+this.name+"&offset="+this.offset+"&limit="+this.limit;
		this.send ( url, '', "GET", true );
	}

	this.send = function ( url, data, method, async ) {
		var ML = this;
		var obj = this.obj;
		var req = get_HttpRequestObj ();
		var lt = this.lt;
		req.open ( method, url, async );
		req.onreadystatechange = function () {
			switch ( req.readyState ) {
				case 0:	// uninitialize
					break;
				case 1:	// loading
					obj.innerHTML = 'Now loading...';
					break;
				case 2:	// loaded
					break;
				case 3: // interactive
					break;
				case 4: // complete
					ML.onComplete ( req );
					break;
			}
		}
		req.send(data);
	}

	this.onComplete = function ( req ) {
		var xml = req.responseXML;
		var responseNode = xml.getElementsByTagName('response').item(0);
		var totalNode = responseNode.getElementsByTagName('total').item(0);
		var cntNode = responseNode.getElementsByTagName('cnt').item(0);

		this.total = totalNode.firstChild.nodeValue;
		this.cnt = cntNode.firstChild.nodeValue;

		if ( this.total_obj != null ) this.show_Total();
		if ( this.num_obj != null ) this.show_Num();

		if ( this.cnt > 0 ) {
			var listNode = responseNode.getElementsByTagName('list').item(0);
			var movieNodeCollection = Array(); movieNodeCollection = listNode.childNodes;
			var len = listNode.childNodes.length;

			var str = '';
			if ( len > 0 ) {
				if ( this.lt.match(/RankMovieList/i) ) {
					str += '<div id="MovieList"><table style="margin-left: 18px;"><tr>';
				}
				for ( var i = 0; i < this.cnt; i ++ ) {
					var movieNode = movieNodeCollection[i];
					if ( this.lt.match(/RankMovieList/i) ) {
						str += this.layout_Ranking ( i, movieNode );
						if ( i == 4 ) str += '</tr><tr>';
					} else {
						str += this.layout_MovieList ( movieNode );
					}
				}
				if ( this.lt.match(/RankMovieList/i) ) {
					str += '</tr></table></div>';
				}
			}
		} else {
			switch ( this.lt ) {
				case "EveryonesMovieList":
					break;
				case "MyMovieList":
					str = '<a href="./upload/">ここをクリックしてアップロードしましょう</a>';
					break;
				case "MembersMovieList":
					str = '<a href="./members/invite">ここをクリックして友人を招待しましょう</a>';
					break;
				case "CommentedMovieList":
					str = '08/04 以降コメントした分が表示されます<br />何か書きませんか？';
					break;
				default:
					str = 'No movies...';
					break;
			}
		}
		this.obj.innerHTML= str;
	}

	this.layout_MovieList = function ( movieNode ) {
		var str;
		var mid = movieNode.getAttribute("mid");
		var name = movieNode.getElementsByTagName('name').item(0).firstChild.nodeValue;
		if ( movieNode.getElementsByTagName('title').item(0).hasChildNodes() ) {
			var title = movieNode.getElementsByTagName('title').item(0).firstChild.nodeValue;
		} else {
			var title = '';
		}
		var play = movieNode.getElementsByTagName('play').item(0).firstChild.nodeValue;
		var comment = movieNode.getElementsByTagName('comment').item(0).firstChild.nodeValue;
		var favorite = movieNode.getElementsByTagName('favorite').item(0).firstChild.nodeValue;
		var dateNode = movieNode.getElementsByTagName('date').item(0);
		var year = dateNode.getElementsByTagName('year').item(0).firstChild.nodeValue;
		var mon = dateNode.getElementsByTagName('mon').item(0).firstChild.nodeValue;
		var day = dateNode.getElementsByTagName('day').item(0).firstChild.nodeValue;
		var mimage = '/images/thumbA/'+mid+'/';
		var uimage = '/images/iconC/'+name+'/';
		var ulink = '/'+name+'/';
		var mlink = '/'+name+'/movies/';

		str = '<table>';
		str += '<tr>';
		str += '<td rowspan="2" class="movie"><a href="'+mlink+'movie/'+mid+'/"><img src="'+mimage+'" border="0" class="movie" /></a></td>';
		str += '<td class="user"><a href="'+ulink+'"><img src="'+uimage+'" border="0" class="u_icon" align="left" style="margin-right: 2px;" /></a>by <a href="'+ulink+'">'+name+'</a><br />';
		str += 'at <a href="'+mlink+'date/'+year+'/'+mon+'/'+day+'/">'+year+'/'+mon+'/'+day+'</td></tr>';
		str += '<tr>';
		str += '<td>「<a href="'+mlink+'movie/'+mid+'/">'+title+'</a>」<br /><span class="cnt">'+play+' plays, <a href="'+mlink+'movie/'+mid+'/#comment">'+comment+' comments</a>, '+favorite+' favorites</span></td>';
		str += '</tr>';
		str += '</tr>';
		str += '</table>';

		return str;
	}

	this.layout_Ranking = function ( i, movieNode ) {
		var str;
		var mid = movieNode.getAttribute("mid");
		var name = movieNode.getElementsByTagName('name').item(0).firstChild.nodeValue;
		if ( movieNode.getElementsByTagName('title').item(0).hasChildNodes() ) {
			var title = movieNode.getElementsByTagName('title').item(0).firstChild.nodeValue;
		} else {
			var title = '';
		}
		var play = movieNode.getElementsByTagName('play').item(0).firstChild.nodeValue;
		var comment = movieNode.getElementsByTagName('comment').item(0).firstChild.nodeValue;
		var favorite = movieNode.getElementsByTagName('favorite').item(0).firstChild.nodeValue;
		var dateNode = movieNode.getElementsByTagName('date').item(0);
		var year = dateNode.getElementsByTagName('year').item(0).firstChild.nodeValue;
		var mon = dateNode.getElementsByTagName('mon').item(0).firstChild.nodeValue;
		var day = dateNode.getElementsByTagName('day').item(0).firstChild.nodeValue;
		var mimage = '/images/thumbA/'+mid+'/';
		var uimage = '/images/iconC/'+name+'/';
		var ulink = '/'+name+'/';
		var mlink = '/'+name+'/movies/';

		str = '<td style="width: 100px;">';
		str += '<div class="title"><a href="'+mlink+'movie/'+mid+'/">'+title+'</a></div>';
		str += '<div style="position: relative"><a href="'+mlink+'movie/'+mid+'/"><img src="'+mimage+'" class="movie" title="'+title+'" alt="'+title+'" /></a>';
		str += '<div style="position:absolute; top: 37px; left: -5px"><img src="/images/rank'+(i+1)+'.png" /></div>';
		str += '</div>';
		str += '<div class="play">'+play+' plays</div>';
		str += '<div class="comment">'+comment+' comments</div>';
		str += '<div class="comment">'+favorite+' favorite</div>';
		str += '<div class="user">by <a href="'+ulink+'">'+name+'</a></div>';
		str += '<div class="user">'+year+'/'+mon+'/'+day+'</div>';
		str += '</td>';

		return str;
	}

	this.get_ElementObj = function () {
		return document.getElementById(this.id);
	}

	this.next = function () {
		if ( this.p < Math.ceil(this.total/this.limit) -1) {
			this.p ++;
			this.set_Offset();
			this.load ();
		}
	}

	this.prev = function () {
		if ( this.p > 0 ) {
			this.p --;
			this.set_Offset();
			this.load ();
		}
	}

	this.set_Offset = function () {
		this.offset = this.p*this.limit;
	}

	this.show_Num = function () {
		if ( this.total > 0 ) {
			var num = Number(this.p)+1;
			this.num_obj.firstChild.nodeValue = Number(num);
		}
	}

	this.show_Total = function () {
		if ( this.total > 0 ) {
			this.total_obj.innerHTML = Math.ceil(Number(this.total)/Number(this.limit));
		}
	}
}

						function load_RankingMovieList ( period, type ) {
							periodLabel_OnOff ( period );
							var TPRML = new MLClass();
							TPRML.lt = period+type+'RankMovieList';
							TPRML.offset = 0;
							TPRML.limit = 10;
							TPRML.obj = document.getElementById('RankList');
							TPRML.load();
						}
						function load_RankMenu ( period, type ) {
							typeLabel_OnOff ( type );
							var str = '<a href="javascript: load_RankingMovieList ( \'Today\', \''+type+'\' )" class="menu"><span id="TodayMenu">Today</span></a>';
							str += '<a href="javascript: load_RankingMovieList (\'Week\', \''+type+'\' )" class="menu"><span id="WeekMenu">This week</span></a>';
							str += '<a href="javascript: load_RankingMovieList (\'Month\', \''+type+'\' )" class="menu"><span id="MonthMenu">This month</span></a>';
							str += '<a href="javascript: load_RankingMovieList (\'All\', \''+type+'\' )" class="menu"><span id="AllMenu">All times</span></a>';
							document.getElementById('RankMenu').innerHTML = str;
							load_RankingMovieList (period, type);
						}
						function typeLabel_OnOff ( type ) {
							switch ( type ) {
								case "Play":
									document.getElementById('PlayRankingTab').src = '/images/tab_PlayRankingOn.png';
									document.getElementById('CommentRankingTab').src = '/images/tab_CommentRankingOff.png';
									document.getElementById('FavoriteRankingTab').src = '/images/tab_FavoriteRankingOff.png';
									break;
								case "Comment":
									document.getElementById('PlayRankingTab').src = '/images/tab_PlayRankingOff.png';
									document.getElementById('CommentRankingTab').src = '/images/tab_CommentRankingOn.png';
									document.getElementById('FavoriteRankingTab').src = '/images/tab_FavoriteRankingOff.png';
									break;
								case "Favorite":
									document.getElementById('PlayRankingTab').src = '/images/tab_PlayRankingOff.png';
									document.getElementById('CommentRankingTab').src = '/images/tab_CommentRankingOff.png';
									document.getElementById('FavoriteRankingTab').src = '/images/tab_FavoriteRankingOn.png';
									break;
							}
						}
						function periodLabel_OnOff ( period ) {
							switch ( period ) {
								case "Today":
									document.getElementById('TodayMenu').style.fontWeight = "bold";
									document.getElementById('WeekMenu').style.fontWeight = "normal";
									document.getElementById('MonthMenu').style.fontWeight = "normal";
									document.getElementById('AllMenu').style.fontWeight = "normal";
									break;
								case "Week":
									document.getElementById('TodayMenu').style.fontWeight = "normal";
									document.getElementById('WeekMenu').style.fontWeight = "bold";
									document.getElementById('MonthMenu').style.fontWeight = "normal";
									document.getElementById('AllMenu').style.fontWeight = "normal";
									break;
								case "Month":
									document.getElementById('TodayMenu').style.fontWeight = "normal";
									document.getElementById('WeekMenu').style.fontWeight = "normal";
									document.getElementById('MonthMenu').style.fontWeight = "bold";
									document.getElementById('AllMenu').style.fontWeight = "normal";
									break;
								case "All":
									document.getElementById('TodayMenu').style.fontWeight = "normal";
									document.getElementById('WeekMenu').style.fontWeight = "normal";
									document.getElementById('MonthMenu').style.fontWeight = "normal";
									document.getElementById('AllMenu').style.fontWeight = "bold";
									break;
							}
						}

function load_TagsMoviList( tag ) {
	var TML = new MLClass();
	TML.lt = 'TagsMovieList';
	TML.tag = tag;
	TML.offset = 0;
	TML.limit = 3;
	TML.obj = document.getElementById('PickupTagsMovieList');
	TML.load();
}
