﻿/**********************************************************************************************************************
* SECURITY
*/
var Security = {
	//Private properties
	signinPopup: null, signinDiv: null, signinIframe: null, securityLink: null,
	
	//Public properties
	CanEdit: false,			//True if the user can edit staff
	IsAdmin: false,			//True if the user is an admin
	ShowSignin: false,		//True if the sign in/out link should show
	
	//Public functions
	SignIn: function() {
		this.OpenPopup("/StaffDirectory/SignIn.aspx", 450, 200);
	},
	
	SignOut: function() {
		this.OpenPopup("/StaffDirectory/SignIn.aspx?signout", 300, 150);
	},
	
	ClosePopup: function(reloadPage) {
		if (this.signinPopup != null) {
			this.signinPopup.CloseAll();
		}
		
		this.Check();
	},
	
	OpenPopup: function(url, width, height) {
		//Create our popup div and the iframe inside of it.
		if (this.signinDiv == null) {
			//Create the popup div.
			this.signinDiv = document.createElement("div");
			this.signinDiv.id = "signinDiv";
			this.signinDiv.className = "editDiv";
			this.signinDiv.style.padding = "0";
			
			//Create the iframe the staff editor sits in.
			this.signinIframe = document.createElement("iframe");
			this.signinIframe.id = "signinIframe";
			this.signinIframe.frameBorder = "0";
			this.signinIframe.setAttribute("scrolling", "no");
			this.signinIframe.style.width = "100%";
			this.signinIframe.style.margin = "0"; 
			this.signinIframe.style.padding = "0";
			this.signinDiv.appendChild(this.signinIframe);
			
			document.body.appendChild(this.signinDiv);
		}
		
		this.signinDiv.style.width = width + "px";
		this.signinDiv.style.height = height + "px";
		this.signinIframe.style.height = (height - 2) + "px"; 
				
		this.signinIframe.src = url;
		
		//Position the popup in the middle of the screen and then open it.
		if (this.signinPopup == null) {
			this.signinPopup = new Popup();
		}
		this.signinPopup.PositionCenter(this.signinDiv, true);
		
		//this.signinPopup.Background(this.signinDiv, document.body, 'white', 75);
		this.signinPopup.Open(this.signinDiv, null);
	},
	
	Check: function() {
		//Check the user's security.
		Security.CanEdit = false;
		Security.IsAdmin = false;
		
		new Ajax.Request("/StaffDirectory/SignIn.aspx?m=check", {
			method: 'get',
			onSuccess: this.CheckReturned.bind(this),
			onFailure: function(response) { SPS_DEBUG.Add(response.responseText); }
		});		
	},
	
	CheckReturned: function(response) {
		var result = eval('(' + response.responseText + ')');
		
		Security.CanEdit = result.canEdit;
		Security.IsAdmin = result.isAdmin;
		Security.ShowSignin = result.showSignin;
		
		Security.SetupLink();
		
		if (typeof View == "object")
			View.OnSecurityCheck();
		
		if (typeof Search == "object")
			Search.OnSecurityCheck();
	},
	
	SetupLink: function() {
		//Add the security link if it doesn't exist.
		if (this.securityLink == null) {
			this.securityLink = Get("securityLink");
			
			if (this.securityLink == null) {
				this.securityLink = document.createElement("a");
				this.securityLink.id = "securityLink";
				this.securityLink.className = "spsTextButton";
				this.securityLink.style.marginLeft = "625px";
				
				var searchResults = FindControl("searchResults", "div");
				Tools.Position.After(searchResults, this.securityLink);
			}
		}
		
		this.securityLink.innerHTML = '<img src="/StaffDirectory/images/icon_security.gif" />';
		
		if (Security.CanEdit) {
			this.securityLink.innerHTML += "Sign Out";
			this.securityLink.href = "javascript:Security.SignOut()";
		}
		else {
			this.securityLink.innerHTML += "Sign In";
			this.securityLink.href = "javascript:Security.SignIn()";
		}
		
		this.securityLink.style.display = (Security.ShowSignin ? "" : "none");
	}
	
}	//END SECURITY
