function Movie () {
	this.mid = null;
	this.title = null;
	this.description = null;
	this.action = null;
	this.privacy = 0;
	this.MT_edit_flg = 0;
	this.MD_edit_flg = 0;

	this.del = function () {
		if ( this.mid == null ) return false;
		if ( window.confirm("このムービーを削除しますか？") ) {
			this.action = 'delete';
			var url = './del';
			var data = 'mid='+this.mid;
			this.send ( url, data, "POST", true );
		}
	}

	this.add_favorite = function () {
		if ( this.mid == null ) return false;
		if ( window.confirm("お気に入りに追加しますか？") ) {
			this.action = 'add_favorite';
			var url = '/favorite/add?mid='+this.mid;
			this.send ( url, '', "GET", true );
		}
	}

	this.allow_dl= function () {
		if ( this.mid == null ) return false;
		if ( window.confirm("ダウンロードを許可しますか？") ) {
			this.action = 'update_dl';
			var url = '/IF/update_DL.php?mid='+this.mid;
			this.send ( url, '', "GET", true );
		}
	}

	this.deny_dl= function () {
		if ( this.mid == null ) return false;
		if ( window.confirm("ダウンロードを不許可にしますか？") ) {
			this.action = 'update_dl';
			var url = '/IF/update_DL.php?mid='+this.mid;
			this.send ( url, '', "GET", true );
		}
	}

	this.update_Title = function (obj) {
		if ( this.mid == null ) return false;
		if ( this.MT_edit_flg == 0 ) {
			obj.innerHTML = '<input type="text" name="MT" maxlength="29" value="'+obj.firstChild.nodeValue+'" style="width: 320px; height: 28px; font-size: 24px;" />';
			obj.innerHTML += '<input type="button" name="submit" value="更新" style="width: 80px; background-color: #CC6666; color: #FFFFFF; font-weight: bold;" onClick="Movie.send_Title(document.getElementsByName(\'MT\'))" />';
			obj.innerHTML += '<input type="button" name="cancel" value="キャンセル" style="width: 80px; background-color: #7280C5; color: #FFFFFF; font-weight: bold;"  onClick="location.href=\'./\'" />';
			this.MT_edit_flg = 1;
		}
	}

	this.send_Title = function (obj) {
		if ( this.mid == null ) return false;
		this.action = 'update_title';
		var url = '/IF/update_MovieTitle.php?mid='+this.mid;
		var value = obj.item(0).value;
		if ( value != '' ) {
			var data = 'title='+value;
			this.send ( url, data, "POST", true );
		}
	}

	this.update_Description = function (obj) {
		if ( this.mid == null ) return false;
		if ( this.MD_edit_flg == 0 ) {
			obj.innerHTML = '<textarea name="MD" style="width: 510px; height: 280px; font-size: 12px;">'+this.reg_Description(obj.innerHTML)+'</textarea>';
			obj.innerHTML += '<input type="button" name="submit" value="更新" class="SubmitButton"onClick="Movie.send_Description(document.getElementsByName(\'MD\'))" />';
			obj.innerHTML += '<input type="button" name="cancel" value="キャンセル" class="CancelButton"  onClick="location.href=\'./\'" />';
			this.MD_edit_flg = 1;
		}
	}

	this.send_Description = function (obj) {
		if ( this.mid == null ) return false;
		this.action = 'update_description';
		var url = '/IF/update_MovieDescription.php?mid='+this.mid;
		var value = obj.item(0).value;
		if ( value != '' ) {
			var data = 'description='+encodeURIComponent(value);
			this.send ( url, data, 'POST', true );
		}
	}

	this.reg_Description = function ( str ) {
		var buf = this.br2nl ( str );
		buf = this.delete_ATag(buf);
		return buf;
	}

	this.br2nl = function ( str ) {
		var sep;

		if ( str.match(/<br>/) ) {
			sep = '<br>';
		} else if ( str.match(/<BR>/) ) {
			sep = '<BR>';
		}

		var buf = str.split(sep);
		buf = buf.join('\n');

		return buf;
	}

	this.delete_ATag = function ( str ) {
		var buf = str.replace(/<\/a>/gi, '');
		return buf.replace(/<a .*>/gi, '');
	}

	this.send_Mail = function ( email ) {
		if ( this.mid == null ) return false;
		var url = '/IF/send_Mail.php?mid='+this.mid;
		if ( email != undefined || email != '' ) {
			if ( email.match(/^[^@]+@[^.]+\..+/) ) {
				if ( window.confirm(email+" で間違いありませんか？") ) {
					this.action = 'send_mail';
					var data = 'email='+email;
					this.send ( url, data, "POST", true );
				}
			} else {
				alert("送信先のアドレスに間違いがあるようです");
			}
		}
	}

	this.del_favorite = function (mid) {
		if ( mid == null ) return false;
		if ( window.confirm("お気に入りから削除しますか？") ) {
			this.action = 'del_favorite';
			var url = '/favorite/del?mid='+mid;
			this.send ( url, '', "GET", true );
		}
	}

	this.send = function ( url, data, method, async ) {
		var movie = this;
		var action = this.action;
		var req = get_HttpRequestObj ();
		req.open ( method, url, async );
		if ( method == 'POST' ) {
			req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		}
		req.onreadystatechange = function () {
			switch ( req.readyState ) {
				case 0:	// uninitialize
				break;
				case 1:	// loading
				break;
				case 2:	// loaded
				break;
				case 3: // interactive
				break;
				case 4: // complete
					switch ( action ) {
						case 'delete':
							movie.onDelete( req );
							break;
						case 'add_favorite':
							movie.onAddFavorite( req );
							break;
						case 'del_favorite':
							movie.onDelFavorite( req );
							break;
						case 'update_title':
							movie.onUpdateTitle( req );
							break;
						case 'update_description':
							movie.onUpdateDescription( req );
							break;
						case 'send_mail':
							movie.onSendMail( req );
							break;
						case 'update_dl':
							movie.onUpdateDl( req );
							break;
					}
				break;
			}
		}
		req.send(data);
	}

	this.onDelete = function ( req ) {
		var res = req.responseText;
		if ( res == 0 ) {	// 成功
			alert("削除しました");
			location.href='/';
		} else {					// 失敗
			alert("削除できませんでした");
		}
	}

	this.onAddFavorite = function ( req ) {
		var res = req.responseText;
		if ( res == 0 ) {	
			alert("追加しました");
		} else if ( res == 9 ) {
			alert("既に追加されているみたいです");
		} else {
			alert("追加できませんでした");
		}
		return true;
	}

	this.onUpdateDl = function ( req ) {
		document.location = './';
		return true;
	}

	this.onDelFavorite = function ( req ) {
		var res = req.responseText;
		if ( res == 0 ) {	
			alert("削除しました");
			location.href="./";
		} else {
			alert("削除できませんでした");
		}
		return true;
	}

	this.onUpdateTitle = function ( req ) {
		var res = req.responseText;
		document.getElementById('MovieTitle').innerHTML = res;
		this.MT_edit_flg = 0;
	}

	this.onUpdateDescription = function ( req ) {
		var res = req.responseText;
		this.MD_edit_flg = 0;
		location.href="./";
	}

	this.onSendMail = function ( req ) {
		var res = req.responseText;
		if ( res == 0 ) {
			alert("送信しました");
		} else {
			alert("送信できませんでした");
		}
		location.href="./";
		return true;
	}
}