
		var MainGrid = FlirtXchange.ViewController.MainGrid = new Object(); 
		
		MainGrid.Settings = {
			EnableDragAndDrop : true,
			HotlistedClassName : 'item_hot',
			NotHotlistedClassName : 'item_not_hot',
			HotlistSaveRequired : true,
			EnableHotlistExtension : false,
			HotlistChanged : false
		}
		
		MainGrid.References = {
			JSONInfo : {},
			HTMLReference : {},
			CrossReference : {},
			HotListed : {}
		},
		
		MainGrid.Initialize = function(MainGridInfo) {
			MainGrid.References = MainGridInfo.evalJSON();
			MainGrid.InitializeDragAndDrop(MainGrid.References.HTMLReference);
			if(MainGrid.Settings.EnableHotlistExtension)	{
				HotListExt.Initialize(MainGrid.References.HotListed);
			}
		}
		
		MainGrid.InitializeDragAndDrop = function(References) {
			if(Object.isArray(References)) return;
			
			if(!MainGrid.Settings.EnableDragAndDrop) return;
			var IDs = new Array();
			for(var ID in References) {
				IDs.push(ID);
			}
			FlirtXchange.ViewController.DragAndDrop.RegisterDraggables(IDs);
		}
		
		MainGrid.GetHotListed = function() {
			return (Object.isArray(MainGrid.References.HotListed)) ? '' : Object.keys(MainGrid.References.HotListed).join(';');
		}
		
		MainGrid.GetData = function(RefMemId) {
			return MainGrid.References.JSONInfo[RefMemId];
		}
		
		MainGrid.SaveData = function(RefMemId, Data) {
			MainGrid.References.JSONInfo[RefMemId] = Data;
		}
		
		MainGrid.IsHotlisted = function(RefMemId) {
			return (typeof(MainGrid.References.HotListed[RefMemId]) != 'undefined') ? true : false;
		}
		
		MainGrid.MoveUser = function(RefMemId) {
			if(!MainGrid.IsHotlisted(RefMemId)) {
				MainGrid.AddToHotlist(RefMemId);
			} else {
				MainGrid.RemoveFromHotlist(RefMemId);
			}
			if(MainGrid.Settings.EnableHotlistExtension) {
				HotListExt.Update();
			}
		}
		
		MainGrid.AddToHotlist = function(RefMemId) {
			
			var Data = MainGrid.GetData(RefMemId);
				Data.HotPointer = 1;
				
			MainGrid.SaveData(
				RefMemId, Data
			);
			
			if(MainGrid.Settings.EnableHotlistExtension) {
				var Box = HotListExt.AddBox(Data);
				BoxId = Box.id;
			}
			
			BoxId = (typeof(BoxId) == 'undefined') ? 'hotlist_not_attached' : BoxId;
			
			if(FlirtXchange.Common.isArray(MainGrid.References.HotListed))
				MainGrid.References.HotListed = new Object();
			
			
			MainGrid.References.HotListed[RefMemId] = BoxId;
			MainGrid.References.CrossReference[RefMemId].push(BoxId) 
			MainGrid.HotlistBoxes(MainGrid.References.CrossReference[RefMemId]);  
		
			if(MainGrid.Settings.EnableHotlistExtension) {
				HotListExt.Update();
			}
		
			Panel.LoadData(Data);
			
			MainGrid.Settings.HotlistChanged = true;
			
			if(MainGrid.Settings.HotlistSaveRequired) {
				HotList.SaveHotlist();
			}
		}
		
		MainGrid.HotlistBoxes = function(BoxesIds, remove) {
			
			for(var a = 0;a < BoxesIds.length; a++) {
				if($(BoxesIds[a])) {
					if(!remove)
						$(BoxesIds[a]).className = $(BoxesIds[a]).className.toString().replace(MainGrid.Settings.NotHotlistedClassName, MainGrid.Settings.HotlistedClassName);
					else 
						$(BoxesIds[a]).className = $(BoxesIds[a]).className.toString().replace(MainGrid.Settings.HotlistedClassName, MainGrid.Settings.NotHotlistedClassName);	  
				}
			}
		}
		
		MainGrid.RemoveFromHotlist = function(RefMemId) {
			
			var Data = MainGrid.GetData(RefMemId);
				Data.HotPointer = 0;
				Data.Data.SMSSubscriptions.Shouts.IsSubscribed = 0;
				
			MainGrid.SaveData(
				RefMemId, Data
			);
			
			var BoxId = MainGrid.References.HotListed[RefMemId];
			
			MainGrid.References.CrossReference[RefMemId] = MainGrid.References.CrossReference[RefMemId].without(MainGrid.References.HotListed[RefMemId]);
			delete MainGrid.References.HotListed[RefMemId];				
						 
			MainGrid.HotlistBoxes(MainGrid.References.CrossReference[RefMemId], true);  
			
			if(MainGrid.Settings.EnableHotlistExtension) {
				HotListExt.RemoveBox(BoxId);
				HotListExt.Update();
			}
						
			Panel.LoadData(Data);
			
			MainGrid.Settings.HotlistChanged = true;
			
			if(MainGrid.Settings.HotlistSaveRequired) {
				HotList.SaveHotlist();
			}
			
		}
		
		