var Session = {
	  SessionID: null,
		UserID: null,
		Realm: null,
	  UserProfile: null,
	  UserDeputies: null,
	  GroupPolicy: null,
		
		InitSession: function(){
  	  var sid = GetUrlParameter('sid');

  		Session.SessionID = GetCookie('SessionID');
	  	Session.UserID = GetCookie('UserID');
		  Session.Realm = GetCookie('Realm');

   	  if (sid != '') { // Check if we got a SID as HTTP Get Parameter
        if (Session.SessionID != sid) {
  		    Session.SessionID = sid;
    			SetCookie('SessionID', Session.SessionID, 0);
					Session.GetSessionUser();
	  		}	
			}
		},

		IsSessionValid: function(){
			if (Session.SessionID != null && Session.SessionID != "") { 
  			return true;
			} else {
  			return false;
			}
		},

		DestroySession: function(){
		Session.SessionID = null;
		Session.UserID = null;
		Session.UserProfile = null;
		Session.UserDeputies = null;
		Session.GroupPolicy = null;
			
	    DeleteCookie('SessionID');
	    DeleteCookie('UserID');
		},

  // ----------------------------------------------------------------------
	
		GetSessionUser: function() {
			var service = new CoreService(serviceURL, Session.SessionID);
			service.GetSessionUser(
				{
					success: function(result) {
						Session.UserID = result.UserItem.ID;
						Session.Realm = result.UserItem.Realm;

  		    	SetCookie('UserID', Session.UserID, 0);
	  		    SetCookie('Realm', Session.Realm , 365);
					},
					failure: ErrorHandler
				}
			);
		},
		
  // ----------------------------------------------------------------------
	
		RequestUserProfile: function() {
			var service = new CoreService(serviceURL, Session.SessionID);
			service.GetUserProfile(
				{
					success: function(result) {
						Session.UserProfile = result.Profile;
					
						// DefaultArchiveDisplayPeriod is currently localy stored
						var periode = GetCookie('DefaultArchiveDisplayPeriod');
						if (periode == null)
							Session.UserProfile.DefaultArchiveDisplayPeriode = 5; 
						else	
							Session.UserProfile.DefaultArchiveDisplayPeriode = periode; 
							
						if (typeof UserProfileFrame != 'undefined') {	
						  UserProfileFrame.UpdateUserProfileFrameControls();	
						}	
					},
					failure: ErrorHandler
				}
			);
		},
		
  // ----------------------------------------------------------------------
	
		RequestDeputies: function() {
			var service = new CoreService(serviceURL, Session.SessionID);
			service.GetDeputies(
				{
					success: function(result) {
						Session.UserDeputies = result.Deputies;
					},
					failure: ErrorHandler
				}
			);
		},

	// ----------------------------------------------------------------------
	
		RequestGroupPolicy: function() {
			var service = new CoreService(serviceURL, Session.SessionID);
			service.GetGroupPolicy(
				{
					success: function(result) {
						Session.GroupPolicy = result.Policy;
						ApplyGroupPolicy();
					},
					failure: ErrorHandler
				}
			);
		}
}

