function ProfileMainWindow(_id,_status) {
	var myUserId = acs.getUserId(); 
	var ProfileHeader = require('ui/common/Pf_ProfileHeader');
	var ProfileDetail = require('ui/common/Pf_ProfileDetails');
	var UserACS = require('acs/userACS');
	var UserModel = require('model/user');
	
	//Google Analytics
	Titanium.App.Analytics.trackPageview('/Profile');
	
	var profileHeader = null; 
	var profileDetail = null;
		
	var settingButton = Titanium.UI.createButton({
		backgroundImage: 'images/setting.png',
		width: 39,
		height: 32
	});
	
	var self = Titanium.UI.createWindow({
		barImage: 'images/nav_bg_w_pattern.png',
		barColor:'#489ec3'
	});			
	if(_status==='me') self.rightNavButton = settingButton;
	
	var nav = Ti.UI.iPhone.createNavigationGroup({
		window: self
	});			
	
	var headerView = Ti.UI.createView({
		height: 120
	});		
	
	var userProfileTable = Ti.UI.createTableView({
		top: 0,
		left: 0,
		right: 0,
		bottom: 0,
		scrollable: false,
	});
	
	var userProfile = UserModel.userModel_fetchUserProfile(_id);
			
	var createProfileView = function(userProfile){
		if(_status==="me"){
			self.title = L('My Profile');
		}
		else self.title = userProfile.first_name + ' ' + userProfile.last_name;
			
		var header = Ti.UI.createTableViewSection();
		profileHeader = new ProfileHeader(self, userProfile, _status);
		profileDetail = new ProfileDetail(self, userProfile, _status);
		var userProfileData=[];
		
		headerView.add(profileHeader);
		header.headerView = headerView;
		userProfileData.push(header);
		userProfileData.push(profileDetail);
		userProfileTable.setData(userProfileData);
		self.add(userProfileTable);		
	}; //end of function: createProfileView
	

	if(userProfile === undefined) {
		UserACS.userACS_fetchCurrentUser(_id);
	} else createProfileView(userProfile);		//user data from database	

	var userLoadedCallBack = function(e){
		UserModel.userModel_updateUserFromACS(e.fetchedUser); //insert to db
		userProfile = UserModel.userModel_fetchUserProfile(_id); //select from db
		Ti.App.fireEvent('userProfileLoaded'+_id,{userProfile:userProfile});
	};
	
	Ti.App.addEventListener('userLoaded'+_id, userLoadedCallBack);
	
	Ti.App.addEventListener('userProfileLoaded'+_id, function(e) {
		userProfile = e.userProfile;
		createProfileView(userProfile);
	});
	
	settingButton.addEventListener('click',function(){
		var SettingWindow = require('ui/common/Am_SettingWindow');					
		var settingwin = new SettingWindow(self.containingTab);
		self.containingTab.open(settingwin);
	});
	
	var reset = function(){
		Ti.API.info('reset()');
		self.close();
		self = null;
		headerView = null;
		userProfileTable = null;
		userProfile = null;
		ProfileHeader = null;
		ProfileDetail = null;
	}
	
	self.addEventListener('focus', function() {
		if(profileHeader !== null) profileHeader._enableOpenFriendWindow();
		if(profileDetail !== null) profileDetail._enableOpenFriendWindow();
	});
	
	//remove event listeners for all the children of ProfileMainWindow
	self.addEventListener('close', function() {
		Ti.API.info("closing profile main window");
		Ti.App.fireEvent('profileMainWindowClosing'+_id);
		reset();
	});
	
	return self;
}
	var userLoadedCallBack = function(e){
		UserModel.userModel_updateUserFromACS(e.fetchedUser); //insert to db
		userProfile = UserModel.userModel_fetchUserProfile(_id); //select from db
		Ti.App.fireEvent('userProfileLoaded'+_id,{userProfile:userProfile});
	};
FriendsWindowTableViewRow = function(_checkinProgram){
	var UserModel = require('model/user')
	
	var BadgeCondition = require('helpers/badgeCondition');	
	var numFriendsCheckin = _checkinProgram.friends.length;

	var row = Ti.UI.createTableViewRow({
		height: 150,
	});
	row.backgroundGradient = { 
		type: 'linear',
		startPoint: {x: '0%', y: '0%'},
		endPoint: {x: '0%', y: '100%'},
		colors: [{color: '#fff', offset: 0.0}, {color: '#D0D0D0', offset: 1.0}]};
    	
	//Program
	var programLabelName = Ti.UI.createLabel({
		text: _checkinProgram.programName,
		textAlign: 'left',
		color: '#333',
		left: 145,
		height: 30,
		width: 142,
		font:{fontWeight:'bold',fontSize:17},
		top: 7
	});
	row.add(programLabelName);

	 var programLabelSubname = Ti.UI.createLabel({
		 text: _checkinProgram.programSubName,
		 color: '#333',
		 textAlign:'left',
		 font:{fontWeight:'bold',fontSize:13},
		 top: 35,
		 left:145
	 });
	 row.add(programLabelSubname);
	
	var programImage = Ti.UI.createImageView({
		image: _checkinProgram.programImage,
		width:110,
		height:80
	});
	
	var programImageView = Ti.UI.createView({
		width: 123,
		height: 94,
		backgroundImage: 'images/ProgramImageBorder.png',
		top: 5,
		left: 5,
		bottom:10
	});
	programImageView.add(programImage);
	row.add(programImageView);

	var checkinView = Ti.UI.createView({
		width: 52,
		top:55,
		left: 135,
		height: 47
	});
	
	var programNumCheckinImage = Ti.UI.createImageView({
		image: 'images/icon/cs_watch.png',
		top: 0
	});	
	
	var programNumCheckin = Ti.UI.createLabel({
		text: _checkinProgram.numberCheckins,
		textAlign: 'left',
		color: '#898687',
		font: {fontSize: 14},
		bottom: 0
	});
	checkinView.add(programNumCheckin);
	checkinView.add(programNumCheckinImage);	
	row.add(checkinView);
	
	var programFriendCheckinView = Ti.UI.createView({
		width: 52,
		top:55,
		left: 187,
		height: 47
	});
	
	var programFriendCheckinImage = Ti.UI.createImageView({
		image: 'images/icon/cs_friends.png',
		top: 0
	});
	var programFriendTotalCheckin = Ti.UI.createLabel({
		text: numFriendsCheckin,
		textAlign: 'left',
		color: '#898687',
		bottom: 0,
		font: {fontSize: 14},
	});
	programFriendCheckinView.add(programFriendTotalCheckin);
	programFriendCheckinView.add(programFriendCheckinImage);	
	row.add(programFriendCheckinView);

	var channelView = Ti.UI.createView({
		width: 52,
		top:55,
		right: 28,
		height: 47,
	});
	
	var ChannelImage = Ti.UI.createImageView({
		image: 'images/icon/cs_tvchannel.png',
		top: 3
	});
	
	var Channel = Ti.UI.createLabel({
		text: _checkinProgram.programChannelId,
		textAlign: 'left',
		color: '#898687',
		height: 20,
		font: {fontSize: 14},
		bottom: 0
	});
	channelView.add(Channel);
	channelView.add(ChannelImage);	
	row.add(channelView);
	
	//Friend
	var friendsScrollView = Ti.UI.createScrollView({
		contentWidth:400,
		contentHeight:45,
		bottom:3,
		height:45,
		width:320,
	});

	for(var i = 0; i < numFriendsCheckin; i++) {
		var friendUserObj = UserModel.userModel_fetchUserProfile(_checkinProgram.friends[i]);
		var fbId = friendUserObj.fb_id;
		var friendsProfileImage = Ti.UI.createImageView({
			image: 'images/kuma100x100.png',
			width: 40,
			height: 40,
			borderWidth: 2,
			borderColor: 'white',
			left: (i*45)+10,
		});
		
		if(fbId !== 0 || fbId !== "0")
			friendsProfileImage.image = acs.getUserImageSquareOfFbId(fbId);
		
		friendsScrollView.add(friendsProfileImage);
	}
	
	row.add(friendsScrollView);
	row.tvprogram = _checkinProgram;
	
	Ti.App.addEventListener('updateNumCheckinAtDiscovery'+_checkinProgram.eventId,function(e){
		_checkinProgram.numberCheckins = _checkinProgram.numberCheckins + e.numCheckin;
		row.tvprogram = _checkinProgram;  //need to reset to make it update the row.tvprogram
		programNumCheckin.text = _checkinProgram.numberCheckins;
	});	
	
	return row;
}