//========================================================================================================================
// Control panel fields
//========================================================================================================================
function ControlIds(master, nav, content) {
  this.Master = master;
  this.Nav = nav;
  this.Content = content;
}
var _ControlIds = new ControlIds("", "", "");

function AppUrls(webmanager, clients, home, stat) {
  this.WebManager = webmanager;
  this.Clients = clients;
  this.Home = home;
  this.Static = stat;
}
var _AppUrls = new AppUrls("", "", "");


var _IsMasterPage = false;
var _NoEdit = false;
var _IsPageLoaded = false;
var _IsFieldChanged = false;
var _IsConfirmedSave = false;

var _DialogPanelType = null;

var _BeforeUnloadWarning =
  "____________________________________________________            \n\n\n" +
  "WARNING:  You have made changes to this form without saving\n" +
  "them.  If you leave this page now, any changes you have made\n" +
  "will be lost.\n\n" +
  "____________________________________________________            \n";


//========================================================================================================================
// Document ready
//========================================================================================================================
$(function(){
  window.focus();

  if (gm("xMasterPage")) {
    _IsMasterPage = true;
    _NoEdit = ($m("xNoEdit").val() == "1");

    if (window.location.href != top.location.href) {
      top.location.replace(window.location.href);
    }

    BrowserValidation();
    
    window.onbeforeunload = function(){
	    HtmlChangedCheck();
	    if (IsFieldChanged() && !_IsConfirmedSave && !_NoEdit) {
	      return _BeforeUnloadWarning;
	    }
    };
    
    window.setTimeout("KeepLoggedIn();", 600000);
  }
  
  $(document).keydown(function(e){
    if (e.keyCode == 13) {
      if (e.target.tagName != "TEXTAREA") {
        e.preventDefault();
        if (window.Dialog_Open) {
          if (_DialogPanel.dialog("isOpen")) {
            $(".ui-dialog-buttonpane button").eq(0).trigger("click");
            return;  
          }
        }
        
        if (window.Click_Enter) Click_Enter();
        return;
      }
    }
  });

  _IsPageLoaded = true;
  _IsFieldChanged = false;
  _IsConfirmedSave = false;
});


//========================================================================================================================
// Navigation
//========================================================================================================================

function PageLink(page) {
  var pageparts = page.split("?");
  return _AppUrls.WebManager + page + ((pageparts.length == 1) ? "?" : "&") + _SessionKey + "=" + _SessionId;
}

function Go(url) {
  if (url.substring(0,4) != "http") url = PageLink(url);
  location.href = url;
}

function HelpCenter(topic) {
  var helpWindow = window.open(PageLink("Support/Default.aspx?T=" + topic), "HelpWindow", "height=500, width=900, location=yes, menubar=yes, resizable=yes, scrollbars=yes, status=yes, toolbar=yes");
  helpWindow.focus();
}

function KeepLoggedIn() {
  $.get(PageLink("Ajax/KeepLoggedIn.aspx"));
  window.setTimeout("KeepLoggedIn();", 600000);
}

function Logout() {
  HtmlChangedCheck();
  if (IsFieldChanged() && !_IsConfirmedSave && !_NoEdit) {
    Dialog_SmartClick();
    _SmartClickUrl = PageLink("Logout.aspx");
  } else {
    FreezePage("Logging out...");
    Go(PageLink("Logout.aspx"));
  }
  return false;
}

//========================================================================================================================
// Element selectors
//========================================================================================================================

function g(id) { return $("#" + id).get(0); }
function gm(id) { return g(_ControlIds.Master + id); }
function gn(id) { return g(_ControlIds.Nav + id); }
function gc(id) { return g(_ControlIds.Content + id); }

function $m(id) { return $("#" + _ControlIds.Master + id); }
function $n(id) { return $("#" + _ControlIds.Nav + id); }
function $c(id) { return $("#" + _ControlIds.Content + id); }

//========================================================================================================================
// Interface
//========================================================================================================================

function BookmarkPage() {
	title = document.title;
	url = window.location.href;
	if (document.all) {
		window.external.AddFavorite(url, title);
	} else {
		if (window.sidebar) window.sidebar.addPanel(title, url, "");
	}
}

function BrowserValidation() {
  if (!_IsValidBrowser) {
    Dialog_Dynamic("Browser Compatibility Warning", _AppUrls.WebManager + "Dialogs/BrowserCompatibility.html", 700, 240);
  }
}
