﻿// © 2007-2008, Applied Geographics, Inc.  All rights reserved.

/// <reference name="AppGeo.Web.Extensions.js" assembly="AppGeo.Web" />

// Define our namespaces
Type.registerNamespace("Ag");

String.isNullOrEmpty = function String$isNullOrEmpty(str) {
  /// <summary>Returns true if the string has a value</summary>
  /// <param name="str" type="String" elementMayBeNull="true"></param>
  return (typeof (str) === "undefined" || !String.isInstanceOfType(str) || str === null || str.length === 0);
}

/*
* Chrome Support
*
* ASP.NET AJAX identifies Chrome as Safari, this code runs after their code and updates the reference
* This should not conflict with future ASP.NET.
*/
if (typeof (Sys.Browser.Chrome) === "undefined") {
  Sys.Browser.Chrome = {};

  if (navigator.userAgent.indexOf(' Chrome/') > -1) {
    Sys.Browser.agent = Sys.Browser.Chrome;
    Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Chrome\/(\d+(\.\d+)?)/)[1]);
    Sys.Browser.name = 'Chrome';
  }
}

//
// Browser Support Properties: storage, graphics
//

// Ag.StorageType (enum)
Ag.StorageType = function() {
  /// <field name="none" type="Number" integer="true" static="true">No known or implemented storage</field>
  /// <field name="dom" type="Number" integer="true" static="true">HTML 5 DOM storage</field>
  /// <field name="userData" type="Number" integer="true" static="true">Microsoft userData behavior</field>
  /// <field name="gears" type="Number" integer="true" static="true">Google Gears</field>
  if (arguments.length !== 0) throw Error.parameterCount();
  throw Error.notImplemented();
}

Ag.StorageType.prototype = {
  none: 0,
  dom: 1,
  userData: 2,
  gears: 3
}

Ag.StorageType.registerEnum("Ag.StorageType");

Sys.Browser.storage = Ag.StorageType.none;

switch (Sys.Browser.agent) {
  case Sys.Browser.InternetExplorer:
    switch (Sys.Browser.version) {
      case 6:
      case 7:
        Sys.Browser.storage = Ag.StorageType.userData;
        break;
      case 8:
        Sys.Browser.storage = Ag.StorageType.dom;
        break;
    }
    break;
  case Sys.Browser.Firefox:
    Sys.Browser.storage = Ag.StorageType.dom;
    break;
  case Sys.Browser.Safari:
    switch (Sys.Browser.version) {
      case 4:
        Sys.Browser.storage = Ag.StorageType.dom;
        break;
    }
    break;
  case Sys.Browser.Chrome:
    Sys.Browser.storage = Ag.StorageType.gears;
    break;
}

if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();