
/*	
	DataContainer
*/
(
	function() {
		
		/*---------------------------------------------------------------------------------------------------------
			コンストラクタ
		--------------------------------------------------------------------------------------------------------- */
		$.DataContainer = function(){};
				
				
		var P = $.DataContainer.prototype;
		P.loginUserData = null;
		P.logined = false;
		P.table = {};
		
		/*---------------------------------------------------------------------------------------------------------*/
		//ログインユーザがそのイベントに参加しているかどうか
		P.isLoginUserJoiningEvent = function(event_id) {
			var data = this.getLoginUserData();
			if(!data) return false;
			
			return this.isMemberJoiningEvent(data.id, event_id);
		}
		
		/*---------------------------------------------------------------------------------------------------------*/
		//メンバーがそのイベントに参加しているかどうか
		P.isMemberJoiningEvent = function(member_id, event_id) {
			var ary = this.getEventMember(event_id, 1);
			
			for(var i=0, len = ary.length ; i < len; i++) {
				var d = ary[i];
				if(d.member_id == member_id) return true;
			}
			return false;
		}
		
		/*---------------------------------------------------------------------------------------------------------*/
		P.setLoginUserData = function(data) {
			
			this.loginUserData = data;
			if(data){
				this.logined  = true;
			} else {
				this.logined  = false;
			}
		
		}
		
		/*---------------------------------------------------------------------------------------------------------*/
		P.getLoginUserData = function() {
			
			if(this.loginUserData != null) {
				return $.cloneObj(this.loginUserData, true);
				
			} 
			return null;
		}
		
		/*---------------------------------------------------------------------------------------------------------*/
		//status_id　参加ステータスの指定
		P.getEventMember = function(event_id, status_id) {
			var me = this;
			var ary = [];
			
			for(var i=0, len = me.table.event_member.length ; i < len; i++) {
				var d = me.table.event_member[i];
				if(!d) continue;
				if(d.event_id == event_id){
					
					if(status_id){
						if(d.status_id == status_id) ary.push(d);
					} else {
						ary.push(d);
					}
				} 
			}
			return ary;
		}
		
		/*---------------------------------------------------------------------------------------------------------*/
		P.getEventPost = function(event_id, max) {
			var me = this;
			var retAry = [];
			var ary = me.table.eventpost;
			if(!ary) return retAry;
						
			for(var i=0, len = ary.length ; i < len; i++) {
				var d = me.table.eventpost[i];
				if(!d) continue;
				if(event_id == null || d.event_id == event_id){
					d.sortkey = $.U.keta(d.id,5);//ソートキーを付与
					retAry.push(d);
				}
			}
			
			retAry = retAry.asort("sortkey").reverse();
			if(max) retAry = retAry.slice(0,max);
			return retAry;
		}
		
		/*---------------------------------------------------------------------------------------------------------*/
		P.getEventCom = function(event_id) {
			var me = this;
			var ary = [];
			for(var i=0, len = me.table.event_comment.length ; i < len; i++) {
				var d = me.table.event_comment[i];
				if(!d) continue;
				if(d.event_id == event_id) ary.push(d);
			}
			return ary;
		}
		
		/*---------------------------------------------------------------------------------------------------------*/
		P.getMember = function(member_id) {
			var me = this;
			var ary = [];
			
			for(var i=0, len = me.table.member.length ; i < len; i++) {
				var d = me.table.member[i];
				if(!d) continue;
				if(d.id == member_id) return d;
			}
			return null;
		}
		/*---------------------------------------------------------------------------------------------------------*/
		P.getMemberNameWithNode = function(member_id) {
			var me = this;
			var name = "不明";
			if(member_id){
				name = me.getMember(member_id).name;
			}
			return "<span class='member'>"+name+"</span>";
		}

		/*---------------------------------------------------------------------------------------------------------*/
		P.getData = function(tblName, id) {
			var me = this;
			var ary = this.table[tblName];
			if(!ary || ary.length == 0) return [];
			if(!id) return ary.concat();
			
			for(var i=0, len = ary.length ; i < len; i++) {
				var d = ary[i];
				if(!d) continue;
				if(d.id == id){
					return d;
				}
			}
			return null;
		}
		
		/*---------------------------------------------------------------------------------------------------------*/
		P.setData = function(tblName, data) {
			var me = this;
			var ary = this.table[tblName];
			if(!ary) {
				this.table[tblName] = [];
				ary = this.table[tblName];
			}
			
			var findFlg = false;
			for(var i=0, len = ary.length ; i < len; i++) {
				var d = ary[i];
				if(!d) continue;
				if(d.id == data.id){
					this.table[tblName][i] = data;
					return;
				}
			}
			//みつからないので挿入
			ary.push(data);
		}
		
		/*---------------------------------------------------------------------------------------------------------*/
		//テーブル名の指定があればそれを初期化　なければ全テーブルデータを初期化
		P.resetTableData = function(tblName) {
			var me = this;
			if(tblName){
				me.table[tblName] = {};
			} else {
				me.table = {};
			}
			
		}
		
		/*---------------------------------------------------------------------------------------------------------*/
		P.LS = function(key, data){
			
			if(data != null){
				var jsonstr = $.toJSON(data);
				localStorage.setItem(key, jsonstr);
			} else {
				var data = $.parseJSON(localStorage.getItem(key));
				return data;
			}
			return null;
		}
		
	}	
	
)();


