﻿//File: Husa.Web.Scripts.authentication.js

///<reference path="D:\TFS Workspace\HUSA (new)\Libraries\Husa.Web\Scripts\global.js"/>
///<reference path="D:\TFS Workspace\HUSA (new)\Libraries\Reference Items\Scripts\jqueryis.js"/>
///<reference path="D:\TFS Workspace\HUSA (new)\Libraries\Husa.Web\Scripts\MasterElements.js"/>
var authLoaded = false;
var authCanceled = false;
var authSucceeded = false;

function setAuthLoaded() {
	authLoaded = true;
}

function setAuthSucceeded() {
	authSucceeded = true;
}

function setAuthCanceled() {
	authCanceled = true;
}

function Authentication() {
	var inPlace = false;
	this.IsInPlace = function() {
		return inPlace;
	};

	this.SetInPlace = function() {
		inPlace = true;
	};
}

var User = window.User = function() {
	///<summary>Implements methods to work with the user object</summary>
	return new User.initialize();
}

User.initialize = User.prototype = function() {
	return "User object";
}

User.IsAuthenticated = User.prototype = function() {
	var result = false;
	PostDataSync(clientauthservice + "/IsAuthenticated", "POST", "{}", function(isa) {
		if (isa) result = true;
		else result = false;
	});
	return result;
}

var IE6Auth = function(fn) {
    if (User.IsAuthenticated()) {
        if (fn != null && fn != undefined)
            fn();
        else
            return;
    }
    return;
}

User.Authenticate = User.prototype = function(onauthenticated) {
    ///<summary>Authenticates a User</summary>
    ///<param name="onauthenticated" type="function" optional="true">Function to execute when user is authenticated</param>

    if (User.IsAuthenticated()) {
        if (onauthenticated != null && onauthenticated != undefined)
            onauthenticated();
        return;
    }

    if (jQuery.browser.msie && jQuery.browser.version < 7) {
        var w = window.open(clientauthpath + "?h=" + window.location.host + "&t=ext", "Login", "width=260, height=130");
        var windowClosed = function() {
            if (w.closed) {
                if (ival) {
                    clearInterval(ival);
                    ival = void (0);
                    IE6Auth(onauthenticated);
                    return;
                }
            }
        }
        var ival = setInterval(windowClosed, 10);
    }
    else {

        authLoaded = false;
        authCanceled = false;
        authSucceeded = false;

        var frame = document.createElement("iframe");

        frame.setAttribute("scrolling", "no");
        frame.setAttribute("width", "260");
        frame.setAttribute("height", "130");
        frame.frameBorder = "0";
        frame.id = "authFrame";
        frame.name = "authFrame";
        if (window.parent != null)
        	window.parent.document.showDialog("Log In", frame, 200, { useDarkBox: true, disableBack: true, backOpacity: .3, hideCloseButton: true });
        else
			document.showDialog("Log In", frame, 200, { useDarkBox: true, disableBack: true, backOpacity: .3, hideCloseButton: true });
        frame.setAttribute("src", clientauthpath + "?h=" + window.location.host);

        var authchanged = function() {
            if (authLoaded) {
                if (authCanceled) {
                    if (ival) { clearInterval(ival); ival = null; }
                    document.closeDialog();
                    return;
                }
                if (authSucceeded) {
                    if (ival) { clearInterval(ival); ival = null; }
                    document.closeDialog(onauthenticated);
                    return;
                }
            }
        }

        var ival = setInterval(authchanged, 13);
    }
}

function procRest(result) {
	var res = result;
	if (result.IsAuthenticated) {
		document.showDialog("Log In", result.Control, 250, true, .3, true);
	}
}
