From 5f5f2838b1931a2cf426b778755a417cc662b46f Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Thu, 12 Jul 2012 23:50:50 -0400 Subject: [PATCH] moved the http server to common, added more http handlers --- MediaBrowser.Api/ApiService.cs | 60 + MediaBrowser.Api/HttpHandlers/GenreHandler.cs | 28 + .../HttpHandlers/GenresHandler.cs | 24 + MediaBrowser.Api/HttpHandlers/ImageHandler.cs | 214 +- .../HttpHandlers/InProgressItemsHandler.cs | 24 + MediaBrowser.Api/HttpHandlers/ItemHandler.cs | 74 +- .../HttpHandlers/ItemListHandler.cs | 33 + .../HttpHandlers/PersonHandler.cs | 21 + .../HttpHandlers/RecentlyAddedItemsHandler.cs | 29 + MediaBrowser.Api/ImageProcessor.cs | 148 + MediaBrowser.Api/MediaBrowser.Api.csproj | 9 + MediaBrowser.Api/Plugin.cs | 26 +- MediaBrowser.Common/Json/JsonSerializer.cs | 2 +- .../MediaBrowser.Common.csproj | 10 + .../Net/CollectionExtensions.cs | 2 +- .../Net/Handlers/JsonHandler.cs | 36 + .../Net/HttpServer.cs | 7 +- .../Net/Request.cs | 2 +- MediaBrowser.Common/Net/RequestContext.cs | 103 + .../Net/Response.cs | 50 +- .../Net/StreamExtensions.cs | 3 +- MediaBrowser.Common/Plugins/BasePlugin.cs | 7 +- MediaBrowser.Common/packages.config | 1 + .../Events/ItemResolveEventArgs.cs | 2 +- MediaBrowser.Controller/Kernel.cs | 23 +- .../Library/ItemController.cs | 12 - .../MediaBrowser.Controller.csproj | 6 - MediaBrowser.Controller/Net/RequestContext.cs | 37 - .../Resolvers/BaseItemResolver.cs | 6 +- .../Html/apple-touch-icon-114x114.png | Bin 0 -> 9997 bytes .../Html/applesplashscreen.png | Bin 0 -> 2435 bytes MediaBrowser.HtmlBrowser/Html/favicon.ico | Bin 0 -> 1150 bytes MediaBrowser.HtmlBrowser/Html/index.html | 36 + .../Html/thirdparty/jquery-1.7.1.min.js | 4 + .../images/ajax-loader.png | Bin 0 -> 366 bytes .../images/icons-18-black-pack.png | Bin 0 -> 11352 bytes .../images/icons-18-white-pack.png | Bin 0 -> 12001 bytes .../images/icons-36-black-pack.png | Bin 0 -> 15978 bytes .../images/icons-36-white-pack.png | Bin 0 -> 17333 bytes .../jqm-icon-pack-1.1.1-original.css | 129 + .../jquery.mobile110/images/ajax-loader.gif | Bin 0 -> 7825 bytes .../jquery.mobile110/images/ajax-loader.png | Bin 0 -> 340 bytes .../images/icons-18-black.png | Bin 0 -> 1767 bytes .../images/icons-18-white.png | Bin 0 -> 1806 bytes .../images/icons-36-black.png | Bin 0 -> 3611 bytes .../images/icons-36-white.png | Bin 0 -> 3648 bytes .../jquery.mobile110/jquery.mobile-1.1.0.css | 2053 +++++ .../jquery.mobile110/jquery.mobile-1.1.0.js | 7551 +++++++++++++++++ .../jquery.mobile-1.1.0.min.css | 2 + .../jquery.mobile-1.1.0.min.js | 177 + .../jquery.mobile.structure-1.1.0.css | 946 +++ .../jquery.mobile.structure-1.1.0.min.css | 2 + .../jquery.mobile.theme-1.1.0.css | 1167 +++ .../jquery.mobile.theme-1.1.0.min.css | 2 + .../MediaBrowser.HtmlBrowser.csproj | 38 + MediaBrowser.HtmlBrowser/Plugin.cs | 10 +- MediaBrowser.Movies/Plugin.cs | 8 - .../Resolvers/MovieResolver.cs | 23 +- MediaBrowser.TV/Plugin.cs | 11 - MediaBrowser.TV/Resolvers/SeriesResolver.cs | 6 + 60 files changed, 12955 insertions(+), 209 deletions(-) create mode 100644 MediaBrowser.Api/ApiService.cs create mode 100644 MediaBrowser.Api/HttpHandlers/GenreHandler.cs create mode 100644 MediaBrowser.Api/HttpHandlers/GenresHandler.cs create mode 100644 MediaBrowser.Api/HttpHandlers/InProgressItemsHandler.cs create mode 100644 MediaBrowser.Api/HttpHandlers/ItemListHandler.cs create mode 100644 MediaBrowser.Api/HttpHandlers/PersonHandler.cs create mode 100644 MediaBrowser.Api/HttpHandlers/RecentlyAddedItemsHandler.cs create mode 100644 MediaBrowser.Api/ImageProcessor.cs rename {MediaBrowser.Controller => MediaBrowser.Common}/Net/CollectionExtensions.cs (88%) create mode 100644 MediaBrowser.Common/Net/Handlers/JsonHandler.cs rename {MediaBrowser.Controller => MediaBrowser.Common}/Net/HttpServer.cs (87%) rename {MediaBrowser.Controller => MediaBrowser.Common}/Net/Request.cs (89%) create mode 100644 MediaBrowser.Common/Net/RequestContext.cs rename {MediaBrowser.Controller => MediaBrowser.Common}/Net/Response.cs (52%) rename {MediaBrowser.Controller => MediaBrowser.Common}/Net/StreamExtensions.cs (83%) delete mode 100644 MediaBrowser.Controller/Net/RequestContext.cs create mode 100644 MediaBrowser.HtmlBrowser/Html/apple-touch-icon-114x114.png create mode 100644 MediaBrowser.HtmlBrowser/Html/applesplashscreen.png create mode 100644 MediaBrowser.HtmlBrowser/Html/favicon.ico create mode 100644 MediaBrowser.HtmlBrowser/Html/index.html create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery-1.7.1.min.js create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile.iconpack/images/ajax-loader.png create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile.iconpack/images/icons-18-black-pack.png create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile.iconpack/images/icons-18-white-pack.png create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile.iconpack/images/icons-36-black-pack.png create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile.iconpack/images/icons-36-white-pack.png create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile.iconpack/jqm-icon-pack-1.1.1-original.css create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/images/ajax-loader.gif create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/images/ajax-loader.png create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/images/icons-18-black.png create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/images/icons-18-white.png create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/images/icons-36-black.png create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/images/icons-36-white.png create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/jquery.mobile-1.1.0.css create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/jquery.mobile-1.1.0.js create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/jquery.mobile-1.1.0.min.css create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/jquery.mobile-1.1.0.min.js create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/jquery.mobile.structure-1.1.0.css create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/jquery.mobile.structure-1.1.0.min.css create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/jquery.mobile.theme-1.1.0.css create mode 100644 MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/jquery.mobile.theme-1.1.0.min.css diff --git a/MediaBrowser.Api/ApiService.cs b/MediaBrowser.Api/ApiService.cs new file mode 100644 index 000000000..b0cc54fee --- /dev/null +++ b/MediaBrowser.Api/ApiService.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; +using MediaBrowser.Controller; +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Api +{ + public static class ApiService + { + public static BaseItem GetItemById(string id) + { + if (string.IsNullOrEmpty(id)) + { + return Kernel.Instance.RootFolder; + } + + return GetItemById(new Guid(id)); + } + + public static BaseItem GetItemById(Guid id) + { + if (id == Guid.Empty) + { + return Kernel.Instance.RootFolder; + } + + return Kernel.Instance.RootFolder.FindById(id); + } + + public static Person GetPersonByName(string name) + { + return null; + } + + public static IEnumerable GetItemsWithGenre(Folder parent, string genre) + { + return new BaseItem[] { }; + } + + public static IEnumerable GetAllGenres(Folder parent) + { + return new string[] { }; + } + + public static IEnumerable GetRecentlyAddedItems(Folder parent) + { + return new BaseItem[] { }; + } + + public static IEnumerable GetRecentlyAddedUnplayedItems(Folder parent) + { + return new BaseItem[] { }; + } + + public static IEnumerable GetInProgressItems(Folder parent) + { + return new BaseItem[] { }; + } + } +} diff --git a/MediaBrowser.Api/HttpHandlers/GenreHandler.cs b/MediaBrowser.Api/HttpHandlers/GenreHandler.cs new file mode 100644 index 000000000..27731e39f --- /dev/null +++ b/MediaBrowser.Api/HttpHandlers/GenreHandler.cs @@ -0,0 +1,28 @@ +using System.Collections.Generic; +using MediaBrowser.Common.Net; +using MediaBrowser.Model.Entities; +using MediaBrowser.Api; + +namespace MediaBrowser.Api.HttpHandlers +{ + /// + /// Gets all items within a Genre + /// + public class GenreHandler : ItemListHandler + { + public GenreHandler(RequestContext ctx) + : base(ctx) + { + } + + protected override IEnumerable ItemsToSerialize + { + get + { + Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; + + return ApiService.GetItemsWithGenre(parent, QueryString["name"]); + } + } + } +} diff --git a/MediaBrowser.Api/HttpHandlers/GenresHandler.cs b/MediaBrowser.Api/HttpHandlers/GenresHandler.cs new file mode 100644 index 000000000..23755a7a4 --- /dev/null +++ b/MediaBrowser.Api/HttpHandlers/GenresHandler.cs @@ -0,0 +1,24 @@ +using MediaBrowser.Common.Net; +using MediaBrowser.Common.Net.Handlers; +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Api.HttpHandlers +{ + public class GenresHandler : JsonHandler + { + public GenresHandler(RequestContext ctx) + : base(ctx) + { + } + + protected sealed override object ObjectToSerialize + { + get + { + Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; + + return ApiService.GetAllGenres(parent); + } + } + } +} diff --git a/MediaBrowser.Api/HttpHandlers/ImageHandler.cs b/MediaBrowser.Api/HttpHandlers/ImageHandler.cs index ee4b04c11..048339d57 100644 --- a/MediaBrowser.Api/HttpHandlers/ImageHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/ImageHandler.cs @@ -1,14 +1,216 @@ -using MediaBrowser.Controller.Net; -using System; +using System; using System.IO; -using System.IO.Compression; -using MediaBrowser.Common.Json; +using System.Linq; +using MediaBrowser.Common.Net; using MediaBrowser.Model.Entities; -using MediaBrowser.Controller; +using System.IO.Compression; namespace MediaBrowser.Api.HttpHandlers { - class ImageHandler + public class ImageHandler : Response { + public ImageHandler(RequestContext ctx) + : base(ctx) + { + Headers["Content-Encoding"] = "gzip"; + + WriteStream = s => + { + WriteReponse(s); + s.Close(); + }; + } + + private string _ImagePath = string.Empty; + private string ImagePath + { + get + { + if (string.IsNullOrEmpty(_ImagePath)) + { + _ImagePath = GetImagePath(); + } + + return _ImagePath; + } + } + + public override string ContentType + { + get + { + string extension = Path.GetExtension(ImagePath); + + if (extension.EndsWith("png", StringComparison.OrdinalIgnoreCase)) + { + return "image/png"; + } + + return "image/jpeg"; + } + } + + public override TimeSpan CacheDuration + { + get + { + return TimeSpan.FromDays(365); + } + } + + public override DateTime? LastDateModified + { + get + { + try + { + return File.GetLastWriteTime(ImagePath); + } + catch + { + return null; + } + } + } + + private int? Height + { + get + { + string val = QueryString["height"]; + + if (string.IsNullOrEmpty(val)) + { + return null; + } + + return int.Parse(val); + } + } + + private int? Width + { + get + { + string val = QueryString["width"]; + + if (string.IsNullOrEmpty(val)) + { + return null; + } + + return int.Parse(val); + } + } + + private int? MaxHeight + { + get + { + string val = QueryString["maxheight"]; + + if (string.IsNullOrEmpty(val)) + { + return null; + } + + return int.Parse(val); + } + } + + private int? MaxWidth + { + get + { + string val = QueryString["maxwidth"]; + + if (string.IsNullOrEmpty(val)) + { + return null; + } + + return int.Parse(val); + } + } + + private int? Quality + { + get + { + string val = QueryString["quality"]; + + if (string.IsNullOrEmpty(val)) + { + return null; + } + + return int.Parse(val); + } + } + + private void WriteReponse(Stream stream) + { + using (GZipStream gzipStream = new GZipStream(stream, CompressionMode.Compress, false)) + { + ImageProcessor.ProcessImage(ImagePath, gzipStream, Width, Height, MaxWidth, MaxHeight, Quality); + } + } + + private string GetImagePath() + { + string path = QueryString["path"] ?? string.Empty; + + if (!string.IsNullOrEmpty(path)) + { + return path; + } + + string personName = QueryString["personname"]; + string imageType = QueryString["type"] ?? string.Empty; + string imageIndex = QueryString["index"]; + + BaseItem item; + + if (!string.IsNullOrEmpty(personName)) + { + item = ApiService.GetPersonByName(personName); + } + else + { + item = ApiService.GetItemById(QueryString["id"]); + } + + int index = string.IsNullOrEmpty(imageIndex) ? 0 : int.Parse(imageIndex); + + return GetImagePathFromTypes(item, imageType, index); + } + + private string GetImagePathFromTypes(BaseItem item, string imageType, int imageIndex) + { + if (imageType.Equals("logo", StringComparison.OrdinalIgnoreCase)) + { + return item.LogoImagePath; + } + else if (imageType.Equals("backdrop", StringComparison.OrdinalIgnoreCase)) + { + return item.BackdropImagePaths.ElementAt(imageIndex); + } + else if (imageType.Equals("banner", StringComparison.OrdinalIgnoreCase)) + { + return item.BannerImagePath; + } + else if (imageType.Equals("art", StringComparison.OrdinalIgnoreCase)) + { + return item.ArtImagePath; + } + else if (imageType.Equals("thumbnail", StringComparison.OrdinalIgnoreCase)) + { + return item.ThumbnailImagePath; + } + else + { + return item.PrimaryImagePath; + } + } } } diff --git a/MediaBrowser.Api/HttpHandlers/InProgressItemsHandler.cs b/MediaBrowser.Api/HttpHandlers/InProgressItemsHandler.cs new file mode 100644 index 000000000..148964f89 --- /dev/null +++ b/MediaBrowser.Api/HttpHandlers/InProgressItemsHandler.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; +using MediaBrowser.Common.Net; +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Api.HttpHandlers +{ + class InProgressItemsHandler : ItemListHandler + { + public InProgressItemsHandler(RequestContext ctx) + : base(ctx) + { + } + + protected override IEnumerable ItemsToSerialize + { + get + { + Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; + + return ApiService.GetInProgressItems(parent); + } + } + } +} diff --git a/MediaBrowser.Api/HttpHandlers/ItemHandler.cs b/MediaBrowser.Api/HttpHandlers/ItemHandler.cs index 40824bd2c..5571588c8 100644 --- a/MediaBrowser.Api/HttpHandlers/ItemHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/ItemHandler.cs @@ -1,92 +1,52 @@ -using MediaBrowser.Controller.Net; -using System; -using System.IO; -using System.IO.Compression; -using MediaBrowser.Common.Json; +using MediaBrowser.Common.Net; +using MediaBrowser.Common.Net.Handlers; using MediaBrowser.Model.Entities; -using MediaBrowser.Controller; namespace MediaBrowser.Api.HttpHandlers { - public class ItemHandler : Response + public class ItemHandler : JsonHandler { public ItemHandler(RequestContext ctx) : base(ctx) { - ContentType = "application/json"; - - Headers["Content-Encoding"] = "gzip"; - - WriteStream = s => - { - WriteReponse(s); - s.Close(); - }; } - private Guid ItemId + protected sealed override object ObjectToSerialize { get { - string id = RequestContext.Request.QueryString["id"]; - - if (string.IsNullOrEmpty(id)) - { - return Guid.Empty; - } - - return Guid.Parse(id); + return GetSerializationObject(ItemToSerialize, true); } } - BaseItem Item + public static object GetSerializationObject(BaseItem item, bool includeChildren) { - get - { - Guid id = ItemId; - - if (id == Guid.Empty) - { - return Kernel.Instance.RootFolder; - } - - return Kernel.Instance.RootFolder.FindById(id); - } - } - - private void WriteReponse(Stream stream) - { - BaseItem item = Item; - - object returnObject; - Folder folder = item as Folder; - if (folder != null) + if (includeChildren && folder != null) { - returnObject = new + return new { - Item = item, - Children = folder.Children + BaseItem = item, + Children = folder.Children, + Type = item.GetType().Name }; } else { - returnObject = new + return new { - Item = item + BaseItem = item, + Type = item.GetType().Name }; } - - WriteJsonResponse(returnObject, stream); } - private void WriteJsonResponse(object obj, Stream stream) + protected virtual BaseItem ItemToSerialize { - using (GZipStream gzipStream = new GZipStream(stream, CompressionMode.Compress, false)) + get { - JsonSerializer.Serialize(obj, gzipStream); - //gzipStream.Flush(); + return ApiService.GetItemById(QueryString["id"]); } } } diff --git a/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs b/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs new file mode 100644 index 000000000..33b3f9e71 --- /dev/null +++ b/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; +using System.Linq; +using MediaBrowser.Common.Net; +using MediaBrowser.Common.Net.Handlers; +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Api.HttpHandlers +{ + public abstract class ItemListHandler : JsonHandler + { + public ItemListHandler(RequestContext ctx) + : base(ctx) + { + } + + protected sealed override object ObjectToSerialize + { + get + { + return ItemsToSerialize.Select(i => + { + return ItemHandler.GetSerializationObject(i, false); + + }); + } + } + + protected abstract IEnumerable ItemsToSerialize + { + get; + } + } +} diff --git a/MediaBrowser.Api/HttpHandlers/PersonHandler.cs b/MediaBrowser.Api/HttpHandlers/PersonHandler.cs new file mode 100644 index 000000000..066ab4816 --- /dev/null +++ b/MediaBrowser.Api/HttpHandlers/PersonHandler.cs @@ -0,0 +1,21 @@ +using MediaBrowser.Common.Net; +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Api.HttpHandlers +{ + public class PersonHandler : ItemHandler + { + public PersonHandler(RequestContext ctx) + : base(ctx) + { + } + + protected override BaseItem ItemToSerialize + { + get + { + return ApiService.GetPersonByName(QueryString["name"]); + } + } + } +} diff --git a/MediaBrowser.Api/HttpHandlers/RecentlyAddedItemsHandler.cs b/MediaBrowser.Api/HttpHandlers/RecentlyAddedItemsHandler.cs new file mode 100644 index 000000000..46084e7f2 --- /dev/null +++ b/MediaBrowser.Api/HttpHandlers/RecentlyAddedItemsHandler.cs @@ -0,0 +1,29 @@ +using System.Collections.Generic; +using MediaBrowser.Common.Net; +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Api.HttpHandlers +{ + class RecentlyAddedItemsHandler : ItemListHandler + { + public RecentlyAddedItemsHandler(RequestContext ctx) + : base(ctx) + { + } + + protected override IEnumerable ItemsToSerialize + { + get + { + Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; + + if (QueryString["unplayed"] == "1") + { + return ApiService.GetRecentlyAddedUnplayedItems(parent); + } + + return ApiService.GetRecentlyAddedItems(parent); + } + } + } +} diff --git a/MediaBrowser.Api/ImageProcessor.cs b/MediaBrowser.Api/ImageProcessor.cs new file mode 100644 index 000000000..a798123e4 --- /dev/null +++ b/MediaBrowser.Api/ImageProcessor.cs @@ -0,0 +1,148 @@ +using System; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Drawing.Imaging; +using System.IO; + +namespace MediaBrowser.Api +{ + public static class ImageProcessor + { + public static void ProcessImage(string path, Stream toStream, int? width, int? height, int? maxWidth, int? maxHeight, int? quality) + { + Image originalImage = Image.FromFile(path); + + var newWidth = originalImage.Width; + var newHeight = originalImage.Height; + + if (width.HasValue && height.HasValue) + { + newWidth = width.Value; + newHeight = height.Value; + } + + else if (height.HasValue) + { + newWidth = GetNewWidth(newHeight, newWidth, height.Value); + newHeight = height.Value; + } + + else if (width.HasValue) + { + newHeight = GetNewHeight(newHeight, newWidth, width.Value); + newWidth = width.Value; + } + + if (maxHeight.HasValue && maxHeight < newHeight) + { + newWidth = GetNewWidth(newHeight, newWidth, maxHeight.Value); + newHeight = maxHeight.Value; + } + + if (maxWidth.HasValue && maxWidth < newWidth) + { + newHeight = GetNewHeight(newHeight, newWidth, maxWidth.Value); + newWidth = maxWidth.Value; + } + + Bitmap thumbnail = new Bitmap(newWidth, newHeight, originalImage.PixelFormat); + thumbnail.SetResolution(originalImage.HorizontalResolution, originalImage.VerticalResolution); + + Graphics thumbnailGraph = Graphics.FromImage(thumbnail); + thumbnailGraph.CompositingQuality = CompositingQuality.HighQuality; + thumbnailGraph.SmoothingMode = SmoothingMode.HighQuality; + thumbnailGraph.InterpolationMode = InterpolationMode.HighQualityBicubic; + thumbnailGraph.PixelOffsetMode = PixelOffsetMode.HighQuality; + thumbnailGraph.CompositingMode = CompositingMode.SourceOver; + + thumbnailGraph.DrawImage(originalImage, 0, 0, newWidth, newHeight); + + Write(originalImage, thumbnail, toStream, quality); + + thumbnailGraph.Dispose(); + thumbnail.Dispose(); + originalImage.Dispose(); + } + + private static void Write(Image originalImage, Image newImage, Stream toStream, int? quality) + { + // Use special save methods for jpeg and png that will result in a much higher quality image + // All other formats use the generic Image.Save + if (ImageFormat.Jpeg.Equals(originalImage.RawFormat)) + { + SaveJpeg(newImage, toStream, quality); + } + else if (ImageFormat.Png.Equals(originalImage.RawFormat)) + { + SavePng(newImage, toStream); + } + else + { + newImage.Save(toStream, originalImage.RawFormat); + } + } + + private static void SaveJpeg(Image newImage, Stream target, int? quality) + { + if (!quality.HasValue) + { + quality = 90; + } + + using (EncoderParameters encoderParameters = new EncoderParameters(1)) + { + encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, quality.Value); + newImage.Save(target, GetImageCodeInfo("image/jpeg"), encoderParameters); + } + } + + private static void SavePng(Image newImage, Stream target) + { + if (target.CanSeek) + { + newImage.Save(target, ImageFormat.Png); + } + else + { + using (MemoryStream ms = new MemoryStream(4096)) + { + newImage.Save(ms, ImageFormat.Png); + ms.WriteTo(target); + } + } + } + + private static ImageCodecInfo GetImageCodeInfo(string mimeType) + { + ImageCodecInfo[] info = ImageCodecInfo.GetImageEncoders(); + + for (int i = 0; i < info.Length; i++) + { + ImageCodecInfo ici = info[i]; + if (ici.MimeType.Equals(mimeType, StringComparison.OrdinalIgnoreCase)) + { + return ici; + } + } + return info[1]; + } + + private static int GetNewWidth(int currentHeight, int currentWidth, int newHeight) + { + decimal scaleFactor = newHeight; + scaleFactor /= currentHeight; + scaleFactor *= currentWidth; + + return Convert.ToInt32(scaleFactor); + } + + private static int GetNewHeight(int currentHeight, int currentWidth, int newWidth) + { + decimal scaleFactor = newWidth; + scaleFactor /= currentWidth; + scaleFactor *= currentHeight; + + return Convert.ToInt32(scaleFactor); + } + } +} diff --git a/MediaBrowser.Api/MediaBrowser.Api.csproj b/MediaBrowser.Api/MediaBrowser.Api.csproj index 933cb3827..4846774b1 100644 --- a/MediaBrowser.Api/MediaBrowser.Api.csproj +++ b/MediaBrowser.Api/MediaBrowser.Api.csproj @@ -32,6 +32,7 @@ + False ..\packages\Rx-Main.1.0.11226\lib\Net4\System.Reactive.dll @@ -43,8 +44,16 @@ + + + + + + + + diff --git a/MediaBrowser.Api/Plugin.cs b/MediaBrowser.Api/Plugin.cs index 3137978fe..471ddbddc 100644 --- a/MediaBrowser.Api/Plugin.cs +++ b/MediaBrowser.Api/Plugin.cs @@ -1,33 +1,29 @@ using System; using System.Collections.Generic; using System.Reactive.Linq; +using MediaBrowser.Api.HttpHandlers; using MediaBrowser.Common.Plugins; using MediaBrowser.Controller; -using MediaBrowser.Controller.Net; -using MediaBrowser.Api.HttpHandlers; namespace MediaBrowser.Api { public class Plugin : BasePlugin { - List HttpHandlers = new List(); - protected override void InitInternal() { - HttpHandlers.Add(Kernel.Instance.HttpServer.Where(ctx => ctx.Request.Url.LocalPath.EndsWith("mediabrowser/api/item")).Subscribe(ctx => ctx.Respond(new ItemHandler(ctx)))); - HttpHandlers.Add(Kernel.Instance.HttpServer.Where(ctx => ctx.Request.Url.LocalPath.EndsWith("mediabrowser/api/image")).Subscribe(ctx => ctx.Respond(new ItemHandler(ctx)))); - } + var httpServer = Kernel.Instance.HttpServer; - public override void Dispose() - { - base.Dispose(); + httpServer.Where(ctx => ctx.Request.Url.LocalPath.EndsWith("/api/item", StringComparison.OrdinalIgnoreCase)).Subscribe(ctx => ctx.Respond(new ItemHandler(ctx))); - foreach (var handler in HttpHandlers) - { - handler.Dispose(); - } + httpServer.Where(ctx => ctx.Request.Url.LocalPath.EndsWith("/api/image", StringComparison.OrdinalIgnoreCase)).Subscribe(ctx => ctx.Respond(new ImageHandler(ctx))); - HttpHandlers.Clear(); + httpServer.Where(ctx => ctx.Request.Url.LocalPath.EndsWith("/api/genre", StringComparison.OrdinalIgnoreCase)).Subscribe(ctx => ctx.Respond(new GenreHandler(ctx))); + + httpServer.Where(ctx => ctx.Request.Url.LocalPath.EndsWith("/api/genres", StringComparison.OrdinalIgnoreCase)).Subscribe(ctx => ctx.Respond(new GenresHandler(ctx))); + + httpServer.Where(ctx => ctx.Request.Url.LocalPath.EndsWith("/api/recentlyaddeditems", StringComparison.OrdinalIgnoreCase)).Subscribe(ctx => ctx.Respond(new RecentlyAddedItemsHandler(ctx))); + + httpServer.Where(ctx => ctx.Request.Url.LocalPath.EndsWith("/api/inprogressitems", StringComparison.OrdinalIgnoreCase)).Subscribe(ctx => ctx.Respond(new InProgressItemsHandler(ctx))); } } } diff --git a/MediaBrowser.Common/Json/JsonSerializer.cs b/MediaBrowser.Common/Json/JsonSerializer.cs index c9b8d8e85..903482fc8 100644 --- a/MediaBrowser.Common/Json/JsonSerializer.cs +++ b/MediaBrowser.Common/Json/JsonSerializer.cs @@ -24,7 +24,7 @@ namespace MediaBrowser.Common.Json } } } - + public static void Serialize(T o, string file) { using (StreamWriter streamWriter = new StreamWriter(file)) diff --git a/MediaBrowser.Common/MediaBrowser.Common.csproj b/MediaBrowser.Common/MediaBrowser.Common.csproj index 312f556b6..9326bea8b 100644 --- a/MediaBrowser.Common/MediaBrowser.Common.csproj +++ b/MediaBrowser.Common/MediaBrowser.Common.csproj @@ -35,6 +35,9 @@ + + ..\packages\Rx-Main.1.0.11226\lib\Net4\System.Reactive.dll + @@ -44,6 +47,13 @@ + + + + + + + diff --git a/MediaBrowser.Controller/Net/CollectionExtensions.cs b/MediaBrowser.Common/Net/CollectionExtensions.cs similarity index 88% rename from MediaBrowser.Controller/Net/CollectionExtensions.cs rename to MediaBrowser.Common/Net/CollectionExtensions.cs index 137fbe50b..98d24dfc0 100644 --- a/MediaBrowser.Controller/Net/CollectionExtensions.cs +++ b/MediaBrowser.Common/Net/CollectionExtensions.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; -namespace MediaBrowser.Controller.Net +namespace MediaBrowser.Common.Net { public static class CollectionExtensions { diff --git a/MediaBrowser.Common/Net/Handlers/JsonHandler.cs b/MediaBrowser.Common/Net/Handlers/JsonHandler.cs new file mode 100644 index 000000000..da1234b4e --- /dev/null +++ b/MediaBrowser.Common/Net/Handlers/JsonHandler.cs @@ -0,0 +1,36 @@ +using System.IO; +using System.IO.Compression; +using MediaBrowser.Common.Json; + +namespace MediaBrowser.Common.Net.Handlers +{ + public abstract class JsonHandler : Response + { + public JsonHandler(RequestContext ctx) + : base(ctx) + { + Headers["Content-Encoding"] = "gzip"; + + WriteStream = s => + { + WriteReponse(s); + s.Close(); + }; + } + + public override string ContentType + { + get { return "application/json"; } + } + + protected abstract object ObjectToSerialize { get; } + + private void WriteReponse(Stream stream) + { + using (GZipStream gzipStream = new GZipStream(stream, CompressionMode.Compress, false)) + { + JsonSerializer.Serialize(ObjectToSerialize, gzipStream); + } + } + } +} diff --git a/MediaBrowser.Controller/Net/HttpServer.cs b/MediaBrowser.Common/Net/HttpServer.cs similarity index 87% rename from MediaBrowser.Controller/Net/HttpServer.cs rename to MediaBrowser.Common/Net/HttpServer.cs index bb014ca5a..fad8d13eb 100644 --- a/MediaBrowser.Controller/Net/HttpServer.cs +++ b/MediaBrowser.Common/Net/HttpServer.cs @@ -2,18 +2,13 @@ using System; using System.Net; using System.Reactive.Linq; -namespace MediaBrowser.Controller.Net +namespace MediaBrowser.Common.Net { public class HttpServer : IObservable, IDisposable { private readonly HttpListener listener; private readonly IObservable stream; - public HttpServer(int port) - : this("http://+:" + port + "/") - { - } - public HttpServer(string url) { listener = new HttpListener(); diff --git a/MediaBrowser.Controller/Net/Request.cs b/MediaBrowser.Common/Net/Request.cs similarity index 89% rename from MediaBrowser.Controller/Net/Request.cs rename to MediaBrowser.Common/Net/Request.cs index 751c1e384..795c9c36b 100644 --- a/MediaBrowser.Controller/Net/Request.cs +++ b/MediaBrowser.Common/Net/Request.cs @@ -2,7 +2,7 @@ using System.IO; using System.Linq; -namespace MediaBrowser.Controller.Net +namespace MediaBrowser.Common.Net { public class Request { diff --git a/MediaBrowser.Common/Net/RequestContext.cs b/MediaBrowser.Common/Net/RequestContext.cs new file mode 100644 index 000000000..9a21b473d --- /dev/null +++ b/MediaBrowser.Common/Net/RequestContext.cs @@ -0,0 +1,103 @@ +using System; +using System.Linq; +using System.Net; + +namespace MediaBrowser.Common.Net +{ + public class RequestContext + { + public HttpListenerRequest Request { get; private set; } + public HttpListenerResponse Response { get; private set; } + + public RequestContext(HttpListenerContext context) + { + Response = context.Response; + Request = context.Request; + } + + public void Respond(Response handler) + { + Response.AddHeader("Access-Control-Allow-Origin", "*"); + + foreach (var header in handler.Headers) + { + Response.AddHeader(header.Key, header.Value); + } + + int statusCode = handler.StatusCode; + Response.ContentType = handler.ContentType; + + TimeSpan cacheDuration = handler.CacheDuration; + + if (Request.Headers.AllKeys.Contains("If-Modified-Since")) + { + DateTime ifModifiedSince; + + if (DateTime.TryParse(Request.Headers["If-Modified-Since"].Replace(" GMT", string.Empty), out ifModifiedSince)) + { + // If the cache hasn't expired yet just return a 304 + if (IsCacheValid(ifModifiedSince, cacheDuration, handler.LastDateModified)) + { + statusCode = 304; + } + } + } + + Response.SendChunked = true; + Response.StatusCode = statusCode; + + if (statusCode != 304) + { + if (cacheDuration.Ticks > 0) + { + CacheResponse(Response, cacheDuration, handler.LastDateModified); + } + + handler.WriteStream(Response.OutputStream); + } + else + { + Response.OutputStream.Flush(); + Response.OutputStream.Close(); + } + } + + private void CacheResponse(HttpListenerResponse response, TimeSpan duration, DateTime? dateModified) + { + DateTime lastModified = dateModified ?? DateTime.Now; + + response.Headers[HttpResponseHeader.CacheControl] = "Public"; + response.Headers[HttpResponseHeader.Expires] = DateTime.Now.Add(duration).ToString("r"); + response.Headers[HttpResponseHeader.LastModified] = lastModified.ToString("r"); + } + + private bool IsCacheValid(DateTime ifModifiedSince, TimeSpan cacheDuration, DateTime? dateModified) + { + if (dateModified.HasValue) + { + DateTime lastModified = NormalizeDateForComparison(dateModified.Value); + ifModifiedSince = NormalizeDateForComparison(ifModifiedSince); + + return lastModified <= ifModifiedSince; + } + + DateTime cacheExpirationDate = ifModifiedSince.Add(cacheDuration); + + if (DateTime.Now < cacheExpirationDate) + { + return true; + } + + return false; + } + + /// + /// When the browser sends the IfModifiedDate, it's precision is limited to seconds, so this will account for that + /// + private DateTime NormalizeDateForComparison(DateTime date) + { + return new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second); + } + + } +} \ No newline at end of file diff --git a/MediaBrowser.Controller/Net/Response.cs b/MediaBrowser.Common/Net/Response.cs similarity index 52% rename from MediaBrowser.Controller/Net/Response.cs rename to MediaBrowser.Common/Net/Response.cs index a119198cb..44b4e2962 100644 --- a/MediaBrowser.Controller/Net/Response.cs +++ b/MediaBrowser.Common/Net/Response.cs @@ -1,29 +1,57 @@ using System; using System.Collections.Generic; +using System.Collections.Specialized; using System.IO; -using System.Text; -namespace MediaBrowser.Controller.Net +namespace MediaBrowser.Common.Net { - public class Response + public abstract class Response { protected RequestContext RequestContext { get; private set; } - + + protected NameValueCollection QueryString + { + get + { + return RequestContext.Request.QueryString; + } + } + public Response(RequestContext ctx) { RequestContext = ctx; - + WriteStream = s => { }; - StatusCode = 200; Headers = new Dictionary(); - CacheDuration = TimeSpan.FromTicks(0); - ContentType = "text/html"; } - public int StatusCode { get; set; } - public string ContentType { get; set; } + public abstract string ContentType { get; } + + public virtual int StatusCode + { + get + { + return 200; + } + } + + public virtual TimeSpan CacheDuration + { + get + { + return TimeSpan.FromTicks(0); + } + } + + public virtual DateTime? LastDateModified + { + get + { + return null; + } + } + public IDictionary Headers { get; set; } - public TimeSpan CacheDuration { get; set; } public Action WriteStream { get; set; } } diff --git a/MediaBrowser.Controller/Net/StreamExtensions.cs b/MediaBrowser.Common/Net/StreamExtensions.cs similarity index 83% rename from MediaBrowser.Controller/Net/StreamExtensions.cs rename to MediaBrowser.Common/Net/StreamExtensions.cs index 451a43acb..c10e458ad 100644 --- a/MediaBrowser.Controller/Net/StreamExtensions.cs +++ b/MediaBrowser.Common/Net/StreamExtensions.cs @@ -1,9 +1,8 @@ using System; -using System.Collections.Generic; using System.IO; using System.Reactive.Linq; -namespace MediaBrowser.Controller.Net +namespace MediaBrowser.Common.Net { public static class StreamExtensions { diff --git a/MediaBrowser.Common/Plugins/BasePlugin.cs b/MediaBrowser.Common/Plugins/BasePlugin.cs index fb37afa08..fc05cbc9a 100644 --- a/MediaBrowser.Common/Plugins/BasePlugin.cs +++ b/MediaBrowser.Common/Plugins/BasePlugin.cs @@ -7,7 +7,7 @@ using MediaBrowser.Common.Json; namespace MediaBrowser.Common.Plugins { - public abstract class BasePlugin : IDisposable, IPlugin + public abstract class BasePlugin : IPlugin where TConfigurationType : BasePluginConfiguration, new() { public string Path { get; set; } @@ -33,10 +33,6 @@ namespace MediaBrowser.Common.Plugins protected abstract void InitInternal(); - public virtual void Dispose() - { - } - private TConfigurationType GetConfiguration() { if (!File.Exists(ConfigurationPath)) @@ -53,6 +49,5 @@ namespace MediaBrowser.Common.Plugins string Path { get; set; } void Init(); - void Dispose(); } } diff --git a/MediaBrowser.Common/packages.config b/MediaBrowser.Common/packages.config index 9bfda3802..4f6bcdcff 100644 --- a/MediaBrowser.Common/packages.config +++ b/MediaBrowser.Common/packages.config @@ -1,4 +1,5 @@  + \ No newline at end of file diff --git a/MediaBrowser.Controller/Events/ItemResolveEventArgs.cs b/MediaBrowser.Controller/Events/ItemResolveEventArgs.cs index 831eb29d4..c05c139fb 100644 --- a/MediaBrowser.Controller/Events/ItemResolveEventArgs.cs +++ b/MediaBrowser.Controller/Events/ItemResolveEventArgs.cs @@ -60,7 +60,7 @@ namespace MediaBrowser.Controller.Events public class PreBeginResolveEventArgs : EventArgs { public string Path { get; set; } - public BaseItem Parent { get; set; } + public Folder Parent { get; set; } public bool Cancel { get; set; } diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs index 455a63f67..b99d84616 100644 --- a/MediaBrowser.Controller/Kernel.cs +++ b/MediaBrowser.Controller/Kernel.cs @@ -7,11 +7,11 @@ using System.Text; using System.Threading.Tasks; using MediaBrowser.Common.Json; using MediaBrowser.Common.Logging; +using MediaBrowser.Common.Net; using MediaBrowser.Common.Plugins; using MediaBrowser.Controller.Events; using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Net; using MediaBrowser.Controller.Resolvers; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; @@ -84,6 +84,7 @@ namespace MediaBrowser.Controller // Get users from users folder // Load root media folder Parallel.Invoke(ReloadUsers, ReloadRoot); + var b = true; } private void ReloadConfiguration() @@ -96,14 +97,6 @@ namespace MediaBrowser.Controller private void ReloadPlugins() { - if (Plugins != null) - { - Parallel.For(0, Plugins.Count(), i => - { - Plugins.ElementAt(i).Dispose(); - }); - } - // Find plugins Plugins = PluginController.GetAllPlugins(); @@ -120,7 +113,7 @@ namespace MediaBrowser.Controller HttpServer.Dispose(); } - HttpServer = new HttpServer(Configuration.HttpServerPortNumber); + HttpServer = new HttpServer("http://+:" + Configuration.HttpServerPortNumber + "/mediabrowser/"); } /// @@ -133,16 +126,6 @@ namespace MediaBrowser.Controller ItemController.AddResovler(); } - /// - /// Unregisters a new BaseItem subclass - /// - public void RemoveBaseItemType() - where TBaseItemType : BaseItem, new() - where TResolverType : BaseItemResolver, new() - { - ItemController.RemoveResovler(); - } - /// /// Fires when a path is about to be resolved, but before child folders and files /// have been collected from the file system. diff --git a/MediaBrowser.Controller/Library/ItemController.cs b/MediaBrowser.Controller/Library/ItemController.cs index 422790c69..f0be2baf9 100644 --- a/MediaBrowser.Controller/Library/ItemController.cs +++ b/MediaBrowser.Controller/Library/ItemController.cs @@ -25,18 +25,6 @@ namespace MediaBrowser.Controller.Library Resolvers.Insert(0, new TResolverType()); } - /// - /// Registers a new BaseItem resolver. - /// - public void RemoveResovler() - where TBaseItemType : BaseItem, new() - where TResolverType : BaseItemResolver, new() - { - IBaseItemResolver resolver = Resolvers.First(r => r.GetType() == typeof(TResolverType)); - - Resolvers.Remove(resolver); - } - #region PreBeginResolvePath Event /// /// Fires when a path is about to be resolved, but before child folders and files diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 30b1070bc..ad2289e1f 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -51,12 +51,6 @@ - - - - - - diff --git a/MediaBrowser.Controller/Net/RequestContext.cs b/MediaBrowser.Controller/Net/RequestContext.cs deleted file mode 100644 index 531faab84..000000000 --- a/MediaBrowser.Controller/Net/RequestContext.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Linq; -using System.Net; -using System.IO.Compression; - -namespace MediaBrowser.Controller.Net -{ - public class RequestContext - { - public HttpListenerRequest Request { get; private set; } - public HttpListenerResponse Response { get; private set; } - - public RequestContext(HttpListenerContext context) - { - Response = context.Response; - Request = context.Request; - } - - public void Respond(Response response) - { - Response.AddHeader("Access-Control-Allow-Origin", "*"); - - foreach (var header in response.Headers) - { - Response.AddHeader(header.Key, header.Value); - } - - Response.ContentType = response.ContentType; - Response.StatusCode = response.StatusCode; - - Response.SendChunked = true; - - GZipStream gzipStream = new GZipStream(Response.OutputStream, CompressionMode.Compress, false); - - response.WriteStream(Response.OutputStream); - } - } -} \ No newline at end of file diff --git a/MediaBrowser.Controller/Resolvers/BaseItemResolver.cs b/MediaBrowser.Controller/Resolvers/BaseItemResolver.cs index ed815037e..e2c49e90c 100644 --- a/MediaBrowser.Controller/Resolvers/BaseItemResolver.cs +++ b/MediaBrowser.Controller/Resolvers/BaseItemResolver.cs @@ -23,11 +23,9 @@ namespace MediaBrowser.Controller.Resolvers item.Path = args.Path; } - Folder parentFolder = args.Parent as Folder; - - if (parentFolder != null) + if (args.Parent != null) { - item.Parent = parentFolder; + item.Parent = args.Parent; } item.Id = Kernel.GetMD5(item.Path); diff --git a/MediaBrowser.HtmlBrowser/Html/apple-touch-icon-114x114.png b/MediaBrowser.HtmlBrowser/Html/apple-touch-icon-114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..9372be6bf4e02315cfce596d83ca1ea30448cfb8 GIT binary patch literal 9997 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 literal 0 HcmV?d00001 diff --git a/MediaBrowser.HtmlBrowser/Html/applesplashscreen.png b/MediaBrowser.HtmlBrowser/Html/applesplashscreen.png new file mode 100644 index 0000000000000000000000000000000000000000..cafb9c4463d0a68538a76f9287002769ec0a2f13 GIT binary patch literal 2435 zcmeHI`#aMM82_@38Cz&rM%E^m$#TDLu3ODqa#@MV2XKcM7@0*_nUf{BnLczw|!O=Xo#B`#kUSe4h9Hyq7&a_9GGM2mk<( zE_A9l07yAV@CFW%RBn*dY$Z-A-h00j@QAN5DM_Hm9o-!P;PG|&jSv_BKmboSCT*)p zT1pxw4V9Q21S$`ODZpeF_K;%s>^*5{l4xX_WNdoY*gVzL(b17cqtWSf zcXxL$FE1vO>Few3@9)oIu>t}DLPA19LqnsZqvPV@KoGP@Gqb#4ZgtVZI>XX7%Zhy6 znta`cl51;UKz6uk=TvI%T;@P6cclLAw6EHk{&1gbJv}osGdnvwH#avwKcCHJS5#Eg z)zxu0oafJyQ#f&5=|UhFK_59+152s;!-w{;K6Ud`VOv$b2u+KNa)Yt-$~dh zm&UGbYiA#@t1EgkIYW5N>8XRC@7TyE4vUN70XTi~{AQ_0NA}K~5X+h#Oo$b(MaFi2 zZo0p?*8hPAPZ^(TW{a&4UP26y&v(5k=Vn0kXPdI^u1#odTEEqZp=rc^U!gLvgwF@U z>rO}MRB1iyNqTs677R(4TsmgBC_3_W(poJ~@b_J<1Pf|PUjTppI))RN9L6bu$j+HL zuYr)nno>qdj2@}VOx4-`12+7aPZqO@Yr?&6;-L^2B_p_&@dfYKU(WM0K-CSv(Ak|M zUEh+3Tz*n&)XmNz)B`a^tn!sc8Wd&zqP76u8p2M`j|X8}!G;#`3C0V9VcsFJXI9lx zghG&;X#JwW;4^7+)eHJp(Vc}ArypGuQj24jn+pWvpC1SxrSe3g6x)$y_Hn{@VTula zjQkE<;gzkOseW-dy=-%1AK%jUytC4US+LT3Mn8ek0zEY25q_L)01D6S`jjJxo4iW- zK%V$ZM{hL6hGP`TD@*N@f9>ud+;DAUSs&o#^DQ1?Pjh`Js#3b5;v7_Pd{#|rW+z`@ zsN{Px^L?6C5xp_qNg*R2v(4{YpZ-uku5uh$~P9l8G~({*4k6QKKa3X;*LtG zZcN8EA)7T;6K|~8`QO$PR+K;*KVERNb?=T~_X}@#HBfl<%tFXuhq*jww`h9$BKqb^A+OXdN8hEV#|Qf`ysfPY7r)TkJXbWV)V)lO zMt7Zy#2D$s3R5EM=NhVF@ztVlE!7PDzE62WYTW7O%V52qSa#4dN5%@dFVBV?K=Qw| zw|dFvoH#?*qoGUqp8unx|8?4Z`zy)PKgHy~Dr#%7;_9}y?~kkpw`ApP{VErl2lbIt H@NfSB&s4zO literal 0 HcmV?d00001 diff --git a/MediaBrowser.HtmlBrowser/Html/favicon.ico b/MediaBrowser.HtmlBrowser/Html/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..40cdb1bae8cebdea8852f4b4bd9d2b624723ae5b GIT binary patch literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x#lFaYI*xFHzKA6x{RlZ$iE^jS04 zc=>qe0-Yua#H_?PQA%1`dgkoe+n+pp`v3mJhyRZpJNCb&x<1)w9 z-A(t*xpR+SzkU1v!J|k2A3T2i|2~kuc;(9f1&bFw*U{BY0_p|1g&mt2XD?n@^!m-4 z|1V#?`u_%K#`Bji|37;A^#47eJ8s{*_kYj6eShK-;`^DInL*J4i~&@ze9cPJ(@U(?%1+*>;LMSn*T*5CI7Q>a{f=8Jo*3elPCXg-?j6@#%)_7v6%r9TeV@G z=Jwq?k2E(o|IaTd_#YM)_CGiz$c5GYN-rdQI&7AzA zLdN|^4rO)s_IwNl>JJDE{2v$;^gkpt6zra<(^vmLc=+u9Z98||S-5P84mLADVhffo zmf5_0>!z&itpCBm!C*JkH8lJ$EL!=$uz248)923qSi5P111|kA@jVCkhtFTQ@I^^! z>Ho&2rvJ-Vt^9WE)QS0PHm*~JsUbv9nK4~x@1X+~`wkxr>*(#~Bcy&P$^ZY)zyQJr lfVjaP=yG`==7-=0V2Xdh$iVOc$o&Jv|AFlP?GW`aeE_@$7QX-h literal 0 HcmV?d00001 diff --git a/MediaBrowser.HtmlBrowser/Html/index.html b/MediaBrowser.HtmlBrowser/Html/index.html new file mode 100644 index 000000000..7fcb778c1 --- /dev/null +++ b/MediaBrowser.HtmlBrowser/Html/index.html @@ -0,0 +1,36 @@ + + + + Media Browser + + + + + + + + + + + +
+
+
+

+ + Home + Setup +
+
+ +
+
+
+
+
+ + + + + + diff --git a/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery-1.7.1.min.js b/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery-1.7.1.min.js new file mode 100644 index 000000000..198b3ff07 --- /dev/null +++ b/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery-1.7.1.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.1 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
"+""+"
",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
t
",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile.iconpack/images/ajax-loader.png b/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile.iconpack/images/ajax-loader.png new file mode 100644 index 0000000000000000000000000000000000000000..0973ae040f5069c91f145fa872a2305946527d8b GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^${@_a3?wz#owI?IL4Z$)>;M1%Kav98@9{_i>g6v9 z@(X4VR5Er6O)Kx1xoY>ByYJkzzRmAFpIDN;bH$2_7L`|`UhiF^I_ufioUB=sI*zz23*9?(=HcnHN1nfE`&1pec9*8h z^U_$;vm3IeB(={f)Hh?6zO0vPm^qo{vqbl|ZbjoCIR|)_KkxF;)MR_z+T}Je!fwXN z4XSea0yV}HrlvSgteBC`lHb^IndQitly-~RDhk^?c3*rp-AYkivE*@*@BS literal 0 HcmV?d00001 diff --git a/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile.iconpack/images/icons-18-black-pack.png b/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile.iconpack/images/icons-18-black-pack.png new file mode 100644 index 0000000000000000000000000000000000000000..07d96586cd3e26d6599ce8486e2c21fbad1e99d8 GIT binary patch literal 11352 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 J)#3(${|i-EHf;a^ literal 0 HcmV?d00001 diff --git a/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile.iconpack/images/icons-36-black-pack.png b/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile.iconpack/images/icons-36-black-pack.png new file mode 100644 index 0000000000000000000000000000000000000000..562e839b9bfe0673879b9078f60907f790b59549 GIT binary patch literal 15978 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 literal 0 HcmV?d00001 diff --git a/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile.iconpack/jqm-icon-pack-1.1.1-original.css b/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile.iconpack/jqm-icon-pack-1.1.1-original.css new file mode 100644 index 000000000..0e424b20f --- /dev/null +++ b/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile.iconpack/jqm-icon-pack-1.1.1-original.css @@ -0,0 +1,129 @@ +/* + jQuery Mobile Icon Pack + andy matthews + @commadelimited +*/ + +/* Icons +-----------------------------------------------------------------------------------------------------------*/ + +.ui-icon, +.ui-icon-searchfield:after { + background: #666666; + background: rgba(0,0,0,.4); + background-image: url('images/icons-18-white-pack.png'); + background-repeat: no-repeat; + -moz-border-radius: 9px; + -webkit-border-radius: 9px; + border-radius: 9px; +} + + +/* Alt icon color +-----------------------------------------------------------------------------------------------------------*/ + +.ui-icon-alt { + background: #ffffff; + background: rgba(255,255,255,.3); + background-image: url('images/icons-18-black-pack.png'); + background-repeat: no-repeat; +} + +/* restore default loading image */ +.ui-icon-loading { + background-image: url("images/ajax-loader.png"); + background-size: 35px 35px; + border-radius: 20px 20px 20px 20px; + height: 40px; + width: 40px; +} + +/* HD/"retina" sprite +-----------------------------------------------------------------------------------------------------------*/ + +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (min--moz-device-pixel-ratio: 1.5), + only screen and (min-resolution: 240dpi) { + + .ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r, + .ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check, + .ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back, + .ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-search, .ui-icon-searchfield:after, + .ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on, .ui-icon-email , .ui-icon-page, + .ui-icon-question , .ui-icon-foursquare , .ui-icon-twitter , .ui-icon-facebook , .ui-icon-dollar , .ui-icon-euro, + .ui-icon-pound , .ui-icon-apple , .ui-icon-chat , .ui-icon-trash , .ui-icon-bell , .ui-icon-mappin , .ui-icon-direction, + .ui-icon-heart , .ui-icon-wrench , .ui-icon-play , .ui-icon-pause , .ui-icon-stop , .ui-icon-person , .ui-icon-music, + .ui-icon-rss , .ui-icon-wifi , .ui-icon-phone , .ui-icon-power , .ui-icon-lock , .ui-icon-flag , .ui-icon-calendar, + .ui-icon-lightning , .ui-icon-drink , .ui-icon-android , .ui-icon-edit { + background-image: url('images/icons-36-white-pack.png'); + -moz-background-size: 774px 54px; + -o-background-size: 774px 54px; + -webkit-background-size: 774px 54px; + background-size: 774px 54px; + } + .ui-icon-alt { + background-image: url('images/icons-36-black-pack.png' ); + } +} + +/* first row */ +.ui-icon-plus { background-position: -0 -0; } +.ui-icon-minus { background-position: -36px -0; } +.ui-icon-delete { background-position: -72px -0; } +.ui-icon-arrow-r { background-position: -108px -0; } +.ui-icon-arrow-l { background-position: -144px -0; } +.ui-icon-arrow-u { background-position: -180px -0; } +.ui-icon-arrow-d { background-position: -216px -0; } +.ui-icon-check { background-position: -252px -0; } +.ui-icon-gear { background-position: -288px -0; } +.ui-icon-refresh { background-position: -324px -0; } +.ui-icon-forward { background-position: -360px -0; } +.ui-icon-back { background-position: -396px -0; } +.ui-icon-grid { background-position: -432px -0; } +.ui-icon-star { background-position: -468px -0; } +.ui-icon-alert { background-position: -504px -0; } +.ui-icon-info { background-position: -540px -0; } +.ui-icon-home { background-position: -576px -0; } +.ui-icon-search,.ui-icon-searchfield:after { background-position: -612px -0; } +.ui-icon-checkbox-off { background-position: -684px -0; } +.ui-icon-checkbox-on { background-position: -648px -0; } +.ui-icon-radio-off { background-position: -756px -0; } +.ui-icon-radio-on { background-position: -718px -0; } + +/* begin icon pack definitions */ +/* second row */ +.ui-icon-email { background-position: -0 -18px; } +.ui-icon-page { background-position: -36px -18px; } +.ui-icon-question { background-position: -72px -18px; } +.ui-icon-foursquare { background-position: -108px -18px; } +.ui-icon-twitter { background-position: -144px -18px; } +.ui-icon-facebook { background-position: -180px -18px; } +.ui-icon-dollar { background-position: -216px -18px; } +.ui-icon-euro { background-position: -252px -18px; } +.ui-icon-pound { background-position: -288px -18px; } +.ui-icon-apple { background-position: -324px -18px; } +.ui-icon-chat { background-position: -360px -18px; } +.ui-icon-trash { background-position: -396px -18px; } +.ui-icon-bell { background-position: -432px -18px; } +.ui-icon-mappin { background-position: -468px -18px;} +.ui-icon-direction { background-position: -504px -18px; } +.ui-icon-heart { background-position: -540px -18px; } +.ui-icon-wrench { background-position: -576px -18px; } +.ui-icon-play { background-position: -612px -18px; } +.ui-icon-pause { background-position: -648px -18px; } +.ui-icon-stop { background-position: -684px -18px; } +.ui-icon-person { background-position: -720px -18px; } +.ui-icon-music { background-position: -756px -18px; } + +/* third row */ +.ui-icon-rss { background-position: -0 -36px; } +.ui-icon-wifi { background-position: -36px -36px; } +.ui-icon-phone { background-position: -72px -36px; } +.ui-icon-power { background-position: -109px -36px; } +.ui-icon-lock { background-position: -144px -36px; } +.ui-icon-flag { background-position: -180px -36px; } +.ui-icon-calendar { background-position: -216px -36px; } +.ui-icon-lightning { background-position: -252px -36px; } +.ui-icon-drink { background-position: -288px -36px; } +.ui-icon-android { background-position: -324px -36px; } +.ui-icon-edit { background-position: -360px -36px; } \ No newline at end of file diff --git a/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/images/ajax-loader.gif b/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/images/ajax-loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..fd1a189c21fed1c7ba00c4bb4fad407bd6d1e5f9 GIT binary patch literal 7825 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 LHfkt@K(PD|Q{O_Y literal 0 HcmV?d00001 diff --git a/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/images/ajax-loader.png b/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/images/ajax-loader.png new file mode 100644 index 0000000000000000000000000000000000000000..13b208dddd67f65dc5af0f6ed1a8c8227e458ed3 GIT binary patch literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^${@_a0wlLwsJ_I&z$oqM;uum9_w;IF?hyl?wugZn ztpNtD0YDOrf;3te2XIZbW7)oR^P8_SYp?yv-nGYmvE9_gA%B19b2GLaNg3_ z_+-yZY2(+KQHf2HU!Jj9-t&9+>bzs~jlS-#=2=+ukx#hA^ZPL^_Mm`0`tyuATb22l z&b>I4!eXD~^vRLqR*ki>5trYQwvIK80z885r(&F6c04(_LbHfhwR4B?li$fvEq6NF kG9=9t`9lQN?q%09so1H6%o2#w1BMoZr>mdKI;Vst0DAt0R{#J2 literal 0 HcmV?d00001 diff --git a/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/images/icons-18-black.png b/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/images/icons-18-black.png new file mode 100644 index 0000000000000000000000000000000000000000..ce1b758ad580663f92c36fb0902afb677ded0b11 GIT binary patch literal 1767 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 literal 0 HcmV?d00001 diff --git a/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/images/icons-36-black.png b/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/images/icons-36-black.png new file mode 100644 index 0000000000000000000000000000000000000000..1a59d7c375d6611262a9ac86db23eb94570d7319 GIT binary patch literal 3611 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 A8~^|S literal 0 HcmV?d00001 diff --git a/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/jquery.mobile-1.1.0.css b/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/jquery.mobile-1.1.0.css new file mode 100644 index 000000000..06dbf8f92 --- /dev/null +++ b/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/jquery.mobile-1.1.0.css @@ -0,0 +1,2053 @@ +/* +* jQuery Mobile Framework 1.1.0 db342b1f315c282692791aa870455901fdb46a55 +* http://jquerymobile.com +* +* Copyright 2011 (c) jQuery Project +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +*/ +/* Swatches */ +/* A +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-a { + border: 1px solid #333 /*{a-bar-border}*/; + background: #111111 /*{a-bar-background-color}*/; + color: #ffffff /*{a-bar-color}*/; + font-weight: bold; + text-shadow: 0 /*{a-bar-shadow-x}*/ -1px /*{a-bar-shadow-y}*/ 1px /*{a-bar-shadow-radius}*/ #000000 /*{a-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #3c3c3c /*{a-bar-background-start}*/), to( #111 /*{a-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); +} +.ui-bar-a, +.ui-bar-a input, +.ui-bar-a select, +.ui-bar-a textarea, +.ui-bar-a button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-a .ui-link-inherit { + color: #fff /*{a-bar-color}*/; +} +.ui-bar-a .ui-link { + color: #7cc4e7 /*{a-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-a .ui-link:hover { + color: #2489CE /*{a-bar-link-hover}*/; +} +.ui-bar-a .ui-link:active { + color: #2489CE /*{a-bar-link-active}*/; +} +.ui-bar-a .ui-link:visited { + color: #2489CE /*{a-bar-link-visited}*/; +} +.ui-body-a, +.ui-overlay-a { + border: 1px solid #444 /*{a-body-border}*/; + background: #222 /*{a-body-background-color}*/; + color: #fff /*{a-body-color}*/; + text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 1px /*{a-body-shadow-radius}*/ #111 /*{a-body-shadow-color}*/; + font-weight: normal; + background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-body-background-start}*/), to( #222 /*{a-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); +} +.ui-overlay-a { + background-image: none; + border-width: 0; +} +.ui-body-a, +.ui-body-a input, +.ui-body-a select, +.ui-body-a textarea, +.ui-body-a button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-a .ui-link-inherit { + color: #fff /*{a-body-color}*/; +} +.ui-body-a .ui-link { + color: #2489CE /*{a-body-link-color}*/; + font-weight: bold; +} +.ui-body-a .ui-link:hover { + color: #2489CE /*{a-body-link-hover}*/; +} +.ui-body-a .ui-link:active { + color: #2489CE /*{a-body-link-active}*/; +} +.ui-body-a .ui-link:visited { + color: #2489CE /*{a-body-link-visited}*/; +} +.ui-btn-up-a { + border: 1px solid #111 /*{a-bup-border}*/; + background: #333 /*{a-bup-background-color}*/; + font-weight: bold; + color: #fff /*{a-bup-color}*/; + text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 1px /*{a-bup-shadow-radius}*/ #111 /*{a-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #444444 /*{a-bup-background-start}*/), to( #2d2d2d /*{a-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); +} +.ui-btn-up-a a.ui-link-inherit { + color: #fff /*{a-bup-color}*/; +} +.ui-btn-hover-a { + border: 1px solid #000 /*{a-bhover-border}*/; + background: #444444 /*{a-bhover-background-color}*/; + font-weight: bold; + color: #fff /*{a-bhover-color}*/; + text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 1px /*{a-bhover-shadow-radius}*/ #111 /*{a-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #555555 /*{a-bhover-background-start}*/), to( #383838 /*{a-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); +} +.ui-btn-hover-a a.ui-link-inherit { + color: #fff /*{a-bhover-color}*/; +} +.ui-btn-down-a { + border: 1px solid #000 /*{a-bdown-border}*/; + background: #222 /*{a-bdown-background-color}*/; + font-weight: bold; + color: #fff /*{a-bdown-color}*/; + text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 1px /*{a-bdown-shadow-radius}*/ #111 /*{a-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #202020 /*{a-bdown-background-start}*/), to( #2c2c2c /*{a-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); +} +.ui-btn-down-a a.ui-link-inherit { + color: #fff /*{a-bdown-color}*/; +} +.ui-btn-up-a, +.ui-btn-hover-a, +.ui-btn-down-a { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* B +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-b { + border: 1px solid #456f9a /*{b-bar-border}*/; + background: #5e87b0 /*{b-bar-background-color}*/; + color: #fff /*{b-bar-color}*/; + font-weight: bold; + text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 1px /*{b-bar-shadow-radius}*/ #3e6790 /*{b-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bar-background-start}*/), to( #497bae /*{b-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); +} +.ui-bar-b, +.ui-bar-b input, +.ui-bar-b select, +.ui-bar-b textarea, +.ui-bar-b button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-b .ui-link-inherit { + color: #fff /*{b-bar-color}*/; +} +.ui-bar-b .ui-link { + color: #ddf0f8 /*{b-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-b .ui-link:hover { + color: #ddf0f8 /*{b-bar-link-hover}*/; +} +.ui-bar-b .ui-link:active { + color: #ddf0f8 /*{b-bar-link-active}*/; +} +.ui-bar-b .ui-link:visited { + color: #ddf0f8 /*{b-bar-link-visited}*/; +} +.ui-body-b, +.ui-overlay-b { + border: 1px solid #999 /*{b-body-border}*/; + background: #f3f3f3 /*{b-body-background-color}*/; + color: #222222 /*{b-body-color}*/; + text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ #fff /*{b-body-shadow-color}*/; + font-weight: normal; + background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{b-body-background-start}*/), to( #ccc /*{b-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); +} +.ui-overlay-b { + background-image: none; + border-width: 0; +} +.ui-body-b, +.ui-body-b input, +.ui-body-b select, +.ui-body-b textarea, +.ui-body-b button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-b .ui-link-inherit { + color: #333333 /*{b-body-color}*/; +} +.ui-body-b .ui-link { + color: #2489CE /*{b-body-link-color}*/; + font-weight: bold; +} +.ui-body-b .ui-link:hover { + color: #2489CE /*{b-body-link-hover}*/; +} +.ui-body-b .ui-link:active { + color: #2489CE /*{b-body-link-active}*/; +} +.ui-body-b .ui-link:visited { + color: #2489CE /*{b-body-link-visited}*/; +} +.ui-btn-up-b { + border: 1px solid #044062 /*{b-bup-border}*/; + background: #396b9e /*{b-bup-background-color}*/; + font-weight: bold; + color: #fff /*{b-bup-color}*/; + text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 1px /*{b-bup-shadow-radius}*/ #194b7e /*{b-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #5f9cc5 /*{b-bup-background-start}*/), to( #396b9e /*{b-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); +} +.ui-btn-up-b a.ui-link-inherit { + color: #fff /*{b-bup-color}*/; +} +.ui-btn-hover-b { + border: 1px solid #00415e /*{b-bhover-border}*/; + background: #4b88b6 /*{b-bhover-background-color}*/; + font-weight: bold; + color: #fff /*{b-bhover-color}*/; + text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 1px /*{b-bhover-shadow-radius}*/ #194b7e /*{b-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bhover-background-start}*/), to( #4272a4 /*{b-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); +} +.ui-btn-hover-b a.ui-link-inherit { + color: #fff /*{b-bhover-color}*/; +} +.ui-btn-down-b { + border: 1px solid #225377 /*{b-bdown-border}*/; + background: #4e89c5 /*{b-bdown-background-color}*/; + font-weight: bold; + color: #fff /*{b-bdown-color}*/; + text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 1px /*{b-bdown-shadow-radius}*/ #194b7e /*{b-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #295b8e /*{b-bdown-background-start}*/), to( #3e79b5 /*{b-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); +} +.ui-btn-down-b a.ui-link-inherit { + color: #fff /*{b-bdown-color}*/; +} +.ui-btn-up-b, +.ui-btn-hover-b, +.ui-btn-down-b { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* C +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-c { + border: 1px solid #B3B3B3 /*{c-bar-border}*/; + background: #eeeeee /*{c-bar-background-color}*/; + color: #3E3E3E /*{c-bar-color}*/; + font-weight: bold; + text-shadow: 0 /*{c-bar-shadow-x}*/ 1px /*{c-bar-shadow-y}*/ 1px /*{c-bar-shadow-radius}*/ #fff /*{c-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f0f0f0 /*{c-bar-background-start}*/), to( #ddd /*{c-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); +} +.ui-bar-c .ui-link-inherit { + color: #3E3E3E /*{c-bar-color}*/; +} +.ui-bar-c .ui-link { + color: #7cc4e7 /*{c-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-c .ui-link:hover { + color: #2489CE /*{c-bar-link-hover}*/; +} +.ui-bar-c .ui-link:active { + color: #2489CE /*{c-bar-link-active}*/; +} +.ui-bar-c .ui-link:visited { + color: #2489CE /*{c-bar-link-visited}*/; +} +.ui-bar-c, +.ui-bar-c input, +.ui-bar-c select, +.ui-bar-c textarea, +.ui-bar-c button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-c, +.ui-overlay-c { + border: 1px solid #aaa /*{c-body-border}*/; + color: #333333 /*{c-body-color}*/; + text-shadow: 0 /*{c-body-shadow-x}*/ 1px /*{c-body-shadow-y}*/ 0 /*{c-body-shadow-radius}*/ #fff /*{c-body-shadow-color}*/; + background: #f9f9f9 /*{c-body-background-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f9f9f9 /*{c-body-background-start}*/), to( #eeeeee /*{c-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); +} +.ui-overlay-c { + background-image: none; + border-width: 0; +} +.ui-body-c, +.ui-body-c input, +.ui-body-c select, +.ui-body-c textarea, +.ui-body-c button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-c .ui-link-inherit { + color: #333333 /*{c-body-color}*/; +} +.ui-body-c .ui-link { + color: #2489CE /*{c-body-link-color}*/; + font-weight: bold; +} +.ui-body-c .ui-link:hover { + color: #2489CE /*{c-body-link-hover}*/; +} +.ui-body-c .ui-link:active { + color: #2489CE /*{c-body-link-active}*/; +} +.ui-body-c .ui-link:visited { + color: #2489CE /*{c-body-link-visited}*/; +} +.ui-btn-up-c { + border: 1px solid #ccc /*{c-bup-border}*/; + background: #eee /*{c-bup-background-color}*/; + font-weight: bold; + color: #222 /*{c-bup-color}*/; + text-shadow: 0 /*{c-bup-shadow-x}*/ 1px /*{c-bup-shadow-y}*/ 0 /*{c-bup-shadow-radius}*/ #ffffff /*{c-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #ffffff /*{c-bup-background-start}*/), to( #f1f1f1 /*{c-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); +} +.ui-btn-up-c a.ui-link-inherit { + color: #2F3E46 /*{c-bup-color}*/; +} +.ui-btn-hover-c { + border: 1px solid #bbb /*{c-bhover-border}*/; + background: #dfdfdf /*{c-bhover-background-color}*/; + font-weight: bold; + color: #222 /*{c-bhover-color}*/; + text-shadow: 0 /*{c-bhover-shadow-x}*/ 1px /*{c-bhover-shadow-y}*/ 0 /*{c-bhover-shadow-radius}*/ #ffffff /*{c-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f6f6f6 /*{c-bhover-background-start}*/), to( #e0e0e0 /*{c-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f9f9f9 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); +} +.ui-btn-hover-c a.ui-link-inherit { + color: #2F3E46 /*{c-bhover-color}*/; +} +.ui-btn-down-c { + border: 1px solid #bbb /*{c-bdown-border}*/; + background: #d6d6d6 /*{c-bdown-background-color}*/; + font-weight: bold; + color: #222 /*{c-bdown-color}*/; + text-shadow: 0 /*{c-bdown-shadow-x}*/ 1px /*{c-bdown-shadow-y}*/ 0 /*{c-bdown-shadow-radius}*/ #ffffff /*{c-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #d0d0d0 /*{c-bdown-background-start}*/), to( #dfdfdf /*{c-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); +} +.ui-btn-down-c a.ui-link-inherit { + color: #2F3E46 /*{c-bdown-color}*/; +} +.ui-btn-up-c, +.ui-btn-hover-c, +.ui-btn-down-c { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* D +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-d { + border: 1px solid #bbb /*{d-bar-border}*/; + background: #bbb /*{d-bar-background-color}*/; + color: #333 /*{d-bar-color}*/; + text-shadow: 0 /*{d-bar-shadow-x}*/ 1px /*{d-bar-shadow-y}*/ 0 /*{d-bar-shadow-radius}*/ #eee /*{d-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{d-bar-background-start}*/), to( #bbb /*{d-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); +} +.ui-bar-d, +.ui-bar-d input, +.ui-bar-d select, +.ui-bar-d textarea, +.ui-bar-d button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-d .ui-link-inherit { + color: #333333 /*{d-bar-color}*/; +} +.ui-bar-d .ui-link { + color: #2489CE /*{d-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-d .ui-link:hover { + color: #2489CE /*{d-bar-link-hover}*/; +} +.ui-bar-d .ui-link:active { + color: #2489CE /*{d-bar-link-active}*/; +} +.ui-bar-d .ui-link:visited { + color: #2489CE /*{d-bar-link-visited}*/; +} +.ui-body-d, +.ui-overlay-d { + border: 1px solid #bbb /*{d-body-border}*/; + color: #333333 /*{d-body-color}*/; + text-shadow: 0 /*{d-body-shadow-x}*/ 1px /*{d-body-shadow-y}*/ 0 /*{d-body-shadow-radius}*/ #fff /*{d-body-shadow-color}*/; + background: #ffffff /*{d-body-background-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fff), to( #fff /*{d-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); +} +.ui-overlay-d { + background-image: none; + border-width: 0; +} +.ui-body-d, +.ui-body-d input, +.ui-body-d select, +.ui-body-d textarea, +.ui-body-d button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-d .ui-link-inherit { + color: #333333 /*{d-body-color}*/; +} +.ui-body-d .ui-link { + color: #2489CE /*{d-body-link-color}*/; + font-weight: bold; +} +.ui-body-d .ui-link:hover { + color: #2489CE /*{d-body-link-hover}*/; +} +.ui-body-d .ui-link:active { + color: #2489CE /*{d-body-link-active}*/; +} +.ui-body-d .ui-link:visited { + color: #2489CE /*{d-body-link-visited}*/; +} +.ui-btn-up-d { + border: 1px solid #bbb /*{d-bup-border}*/; + background: #fff /*{d-bup-background-color}*/; + font-weight: bold; + color: #333 /*{d-bup-color}*/; + text-shadow: 0 /*{d-bup-shadow-x}*/ 1px /*{d-bup-shadow-y}*/ 0 /*{d-bup-shadow-radius}*/ #fff /*{d-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fafafa), to( #f6f6f6 /*{d-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); +} +.ui-btn-up-d a.ui-link-inherit { + color: #333 /*{d-bup-color}*/; +} +.ui-btn-hover-d { + border: 1px solid #aaa /*{d-bhover-border}*/; + background: #eeeeee /*{d-bhover-background-color}*/; + font-weight: bold; + color: #333 /*{d-bhover-color}*/; + cursor: pointer; + text-shadow: 0 /*{d-bhover-shadow-x}*/ 1px /*{d-bhover-shadow-y}*/ 0 /*{d-bhover-shadow-radius}*/ #fff /*{d-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #eee), to( #fff /*{d-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); +} +.ui-btn-hover-d a.ui-link-inherit { + color: #333 /*{d-bhover-color}*/; +} +.ui-btn-down-d { + border: 1px solid #aaa /*{d-bdown-border}*/; + background: #eee /*{d-bdown-background-color}*/; + font-weight: bold; + color: #333 /*{d-bdown-color}*/; + text-shadow: 0 /*{d-bdown-shadow-x}*/ 1px /*{d-bdown-shadow-y}*/ 0 /*{d-bdown-shadow-radius}*/ #ffffff /*{d-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #e5e5e5 /*{d-bdown-background-start}*/), to( #f2f2f2 /*{d-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); +} +.ui-btn-down-d a.ui-link-inherit { + color: #333 /*{d-bdown-color}*/; +} +.ui-btn-up-d, +.ui-btn-hover-d, +.ui-btn-down-d { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* E +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-e { + border: 1px solid #F7C942 /*{e-bar-border}*/; + background: #fadb4e /*{e-bar-background-color}*/; + color: #333 /*{e-bar-color}*/; + text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/ #fff /*{e-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fbef7e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); +} +.ui-bar-e, +.ui-bar-e input, +.ui-bar-e select, +.ui-bar-e textarea, +.ui-bar-e button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-e .ui-link-inherit { + color: #333333 /*{e-bar-color}*/; +} +.ui-bar-e .ui-link { + color: #2489CE /*{e-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-e .ui-link:hover { + color: #2489CE /*{e-bar-link-hover}*/; +} +.ui-bar-e .ui-link:active { + color: #2489CE /*{e-bar-link-active}*/; +} +.ui-bar-e .ui-link:visited { + color: #2489CE /*{e-bar-link-visited}*/; +} +.ui-body-e, +.ui-overlay-e { + border: 1px solid #F7C942 /*{e-body-border}*/; + color: #222222 /*{e-body-color}*/; + text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/ #fff /*{e-body-shadow-color}*/; + background: #fff9df /*{e-body-background-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fffadf /*{e-body-background-start}*/), to( #fff3a5 /*{e-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); +} +.ui-overlay-e { + background-image: none; + border-width: 0; +} +.ui-body-e, +.ui-body-e input, +.ui-body-e select, +.ui-body-e textarea, +.ui-body-e button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-e .ui-link-inherit { + color: #333333 /*{e-body-color}*/; +} +.ui-body-e .ui-link { + color: #2489CE /*{e-body-link-color}*/; + font-weight: bold; +} +.ui-body-e .ui-link:hover { + color: #2489CE /*{e-body-link-hover}*/; +} +.ui-body-e .ui-link:active { + color: #2489CE /*{e-body-link-active}*/; +} +.ui-body-e .ui-link:visited { + color: #2489CE /*{e-body-link-visited}*/; +} +.ui-btn-up-e { + border: 1px solid #F4C63f /*{e-bup-border}*/; + background: #fadb4e /*{e-bup-background-color}*/; + font-weight: bold; + color: #222 /*{e-bup-color}*/; + text-shadow: 0 /*{e-bup-shadow-x}*/ 1px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/ #fff /*{e-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #ffefaa /*{e-bup-background-start}*/), to( #ffe155 /*{e-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); +} +.ui-btn-up-e a.ui-link-inherit { + color: #222 /*{e-bup-color}*/; +} +.ui-btn-hover-e { + border: 1px solid #F2C43d /*{e-bhover-border}*/; + background: #fbe26f /*{e-bhover-background-color}*/; + font-weight: bold; + color: #111 /*{e-bhover-color}*/; + text-shadow: 0 /*{e-bhover-shadow-x}*/ 1px /*{e-bhover-shadow-y}*/ 0 /*{e-bhover-shadow-radius}*/ #fff /*{e-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fff5ba /*{e-bhover-background-start}*/), to( #fbdd52 /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); +} +.ui-btn-hover-e a.ui-link-inherit { + color: #333 /*{e-bhover-color}*/; +} +.ui-btn-down-e { + border: 1px solid #F2C43d /*{e-bdown-border}*/; + background: #fceda7 /*{e-bdown-background-color}*/; + font-weight: bold; + color: #111 /*{e-bdown-color}*/; + text-shadow: 0 /*{e-bdown-shadow-x}*/ 1px /*{e-bdown-shadow-y}*/ 0 /*{e-bdown-shadow-radius}*/ #ffffff /*{e-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f8d94c /*{e-bdown-background-start}*/), to( #fadb4e /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); +} +.ui-btn-down-e a.ui-link-inherit { + color: #333 /*{e-bdown-color}*/; +} +.ui-btn-up-e, +.ui-btn-hover-e, +.ui-btn-down-e { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* Structure */ +/* links within "buttons" +-----------------------------------------------------------------------------------------------------------*/ +a.ui-link-inherit { + text-decoration: none !important; +} +/* Active class used as the "on" state across all themes +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-active { + border: 1px solid #2373a5 /*{global-active-border}*/; + background: #5393c5 /*{global-active-background-color}*/; + font-weight: bold; + color: #fff /*{global-active-color}*/; + cursor: pointer; + text-shadow: 0 /*{global-active-shadow-x}*/ 1px /*{global-active-shadow-y}*/ 1px /*{global-active-shadow-radius}*/ #3373a5 /*{global-active-shadow-color}*/; + text-decoration: none; + background-image: -webkit-gradient(linear, left top, left bottom, from( #5393c5 /*{global-active-background-start}*/), to( #6facd5 /*{global-active-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-btn-active a.ui-link-inherit { + color: #fff /*{global-active-color}*/; +} +/* button inner top highlight +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-inner { + border-top: 1px solid #fff; + border-color: rgba(255,255,255,.3); +} +/* corner rounding classes +-----------------------------------------------------------------------------------------------------------*/ +.ui-corner-tl { + -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; + -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; + border-top-left-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-tr { + -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; + -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; + border-top-right-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-bl { + -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; + border-bottom-left-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-br { + -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; + border-bottom-right-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-top { + -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; + -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; + border-top-left-radius: .6em /*{global-radii-blocks}*/; + -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; + -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; + border-top-right-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-bottom { + -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; + border-bottom-left-radius: .6em /*{global-radii-blocks}*/; + -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; + border-bottom-right-radius: .6em /*{global-radii-blocks}*/; + } +.ui-corner-right { + -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; + -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; + border-top-right-radius: .6em /*{global-radii-blocks}*/; + -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; + border-bottom-right-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-left { + -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; + -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; + border-top-left-radius: .6em /*{global-radii-blocks}*/; + -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; + border-bottom-left-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-all { + -moz-border-radius: .6em /*{global-radii-blocks}*/; + -webkit-border-radius: .6em /*{global-radii-blocks}*/; + border-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-none { + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} +/* Form field separator +-----------------------------------------------------------------------------------------------------------*/ +.ui-br { + border-bottom: rgb(130,130,130); + border-bottom: rgba(130,130,130,.3); + border-bottom-width: 1px; + border-bottom-style: solid; +} +/* Interaction cues +-----------------------------------------------------------------------------------------------------------*/ +.ui-disabled { + opacity: .3; +} +.ui-disabled, +.ui-disabled a { + cursor: default !important; + pointer-events: none; +} +.ui-disabled .ui-btn-text { + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=30)"; + filter: alpha(opacity=30); + zoom: 1; +} +/* Icons +-----------------------------------------------------------------------------------------------------------*/ +.ui-icon, +.ui-icon-searchfield:after { + background: #666 /*{global-icon-color}*/; + background: rgba(0,0,0,.4) /*{global-icon-disc}*/; + background-image: url(images/icons-18-white.png) /*{global-icon-set}*/; + background-repeat: no-repeat; + -moz-border-radius: 9px; + -webkit-border-radius: 9px; + border-radius: 9px; +} +/* Alt icon color +-----------------------------------------------------------------------------------------------------------*/ +.ui-icon-alt { + background: #fff; + background: rgba(255,255,255,.3); + background-image: url(images/icons-18-black.png); + background-repeat: no-repeat; +} +/* HD/"retina" sprite +-----------------------------------------------------------------------------------------------------------*/ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (min--moz-device-pixel-ratio: 1.5), + only screen and (min-resolution: 240dpi) { + + .ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r, + .ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check, + .ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back, + .ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-search, .ui-icon-searchfield:after, + .ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on { + background-image: url(images/icons-36-white.png); + -moz-background-size: 776px 18px; + -o-background-size: 776px 18px; + -webkit-background-size: 776px 18px; + background-size: 776px 18px; + } + .ui-icon-alt { + background-image: url(images/icons-36-black.png); + } +} +/* plus minus */ +.ui-icon-plus { + background-position: -0 50%; +} +.ui-icon-minus { + background-position: -36px 50%; +} +/* delete/close */ +.ui-icon-delete { + background-position: -72px 50%; +} +/* arrows */ +.ui-icon-arrow-r { + background-position: -108px 50%; +} +.ui-icon-arrow-l { + background-position: -144px 50%; +} +.ui-icon-arrow-u { + background-position: -180px 50%; +} +.ui-icon-arrow-d { + background-position: -216px 50%; +} +/* misc */ +.ui-icon-check { + background-position: -252px 50%; +} +.ui-icon-gear { + background-position: -288px 50%; +} +.ui-icon-refresh { + background-position: -324px 50%; +} +.ui-icon-forward { + background-position: -360px 50%; +} +.ui-icon-back { + background-position: -396px 50%; +} +.ui-icon-grid { + background-position: -432px 50%; +} +.ui-icon-star { + background-position: -468px 50%; +} +.ui-icon-alert { + background-position: -504px 50%; +} +.ui-icon-info { + background-position: -540px 50%; +} +.ui-icon-home { + background-position: -576px 50%; +} +.ui-icon-search, +.ui-icon-searchfield:after { + background-position: -612px 50%; +} +.ui-icon-checkbox-off { + background-position: -684px 50%; +} +.ui-icon-checkbox-on { + background-position: -648px 50%; +} +.ui-icon-radio-off { + background-position: -756px 50%; +} +.ui-icon-radio-on { + background-position: -720px 50%; +} +/* checks,radios */ +.ui-checkbox .ui-icon { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} +.ui-icon-checkbox-off, +.ui-icon-radio-off { + background-color: transparent; +} +.ui-checkbox-on .ui-icon, +.ui-radio-on .ui-icon { + background-color: #4596ce /*{global-active-background-color}*/; /* NOTE: this hex should match the active state color. It's repeated here for cascade */ +} +/* loading icon */ +.ui-icon-loading { + background: url(images/ajax-loader.gif); + background-size: 46px 46px; +} +/* Button corner classes +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-corner-tl { + -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; + -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; + border-top-left-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-tr { + -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; + -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; + border-top-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-bl { + -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; + border-bottom-left-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-br { + -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; + border-bottom-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-top { + -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; + -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; + border-top-left-radius: 1em /*{global-radii-buttons}*/; + -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; + -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; + border-top-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-bottom { + -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; + border-bottom-left-radius: 1em /*{global-radii-buttons}*/; + -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; + border-bottom-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-right { + -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; + -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; + border-top-right-radius: 1em /*{global-radii-buttons}*/; + -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; + border-bottom-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-left { + -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; + -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; + border-top-left-radius: 1em /*{global-radii-buttons}*/; + -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; + border-bottom-left-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-all { + -moz-border-radius: 1em /*{global-radii-buttons}*/; + -webkit-border-radius: 1em /*{global-radii-buttons}*/; + border-radius: 1em /*{global-radii-buttons}*/; +} +/* radius clip workaround for cleaning up corner trapping */ +.ui-corner-tl, +.ui-corner-tr, +.ui-corner-bl, +.ui-corner-br, +.ui-corner-top, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-left, +.ui-corner-all, +.ui-btn-corner-tl, +.ui-btn-corner-tr, +.ui-btn-corner-bl, +.ui-btn-corner-br, +.ui-btn-corner-top, +.ui-btn-corner-bottom, +.ui-btn-corner-right, +.ui-btn-corner-left, +.ui-btn-corner-all { + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} +/* Overlay / modal +-----------------------------------------------------------------------------------------------------------*/ +.ui-overlay { + background: #666; + opacity: .5; + filter: Alpha(Opacity=50); + position: absolute; + width: 100%; + height: 100%; +} +.ui-overlay-shadow { + -moz-box-shadow: 0px 0px 12px rgba(0,0,0,.6); + -webkit-box-shadow: 0px 0px 12px rgba(0,0,0,.6); + box-shadow: 0px 0px 12px rgba(0,0,0,.6); +} +.ui-shadow { + -moz-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; + -webkit-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; + box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; +} +.ui-bar-a .ui-shadow, +.ui-bar-b .ui-shadow , +.ui-bar-c .ui-shadow { + -moz-box-shadow: 0px 1px 0 rgba(255,255,255,.3); + -webkit-box-shadow: 0px 1px 0 rgba(255,255,255,.3); + box-shadow: 0px 1px 0 rgba(255,255,255,.3); +} +.ui-shadow-inset { + -moz-box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); + -webkit-box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); + box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); +} +.ui-icon-shadow { + -moz-box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; + -webkit-box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; + box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; +} +/* Focus state - set here for specificity (note: these classes are added by JavaScript) +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn:focus { + outline: 0; +} +.ui-focus, +.ui-btn:focus { + -moz-box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; + -webkit-box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; + box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; +} +/* unset box shadow in browsers that don't do it right +-----------------------------------------------------------------------------------------------------------*/ +.ui-mobile-nosupport-boxshadow * { + -moz-box-shadow: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; +} +/* ...and bring back focus */ +.ui-mobile-nosupport-boxshadow .ui-focus, +.ui-mobile-nosupport-boxshadow .ui-btn:focus { + outline-width: 1px; + outline-style: dotted; +} +/* some unsets - more probably needed */ +.ui-mobile, .ui-mobile body { height: 99.9%; } +.ui-mobile fieldset, .ui-page { padding: 0; margin: 0; } +.ui-mobile a img, .ui-mobile fieldset { border-width: 0; } +/* responsive page widths */ +.ui-mobile-viewport { margin: 0; overflow-x: visible; -webkit-text-size-adjust: none; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } +/* Issue #2066 */ +body.ui-mobile-viewport, +div.ui-mobile-viewport { overflow-x: hidden; } +/* "page" containers - full-screen views, one should always be in view post-pageload */ +.ui-mobile [data-role=page], .ui-mobile [data-role=dialog], .ui-page { top: 0; left: 0; width: 100%; min-height: 100%; position: absolute; display: none; border: 0; } +.ui-mobile .ui-page-active { display: block; overflow: visible; } +/* on ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */ +.ui-page { outline: none; } +/*orientations from js are available */ +@media screen and (orientation: portrait){ +.ui-mobile, .ui-mobile .ui-page { min-height: 420px; } +} +@media screen and (orientation: landscape){ +.ui-mobile, .ui-mobile .ui-page { min-height: 300px; } +} +/* loading screen */ +.ui-loading .ui-loader { display: block; } +.ui-loader { display: none; z-index: 9999999; position: fixed; top: 50%; box-shadow: 0 1px 1px -1px #fff; left: 50%; border:0; } +.ui-loader-default { background: none; opacity: .18; width: 46px; height: 46px; margin-left: -23px; margin-top: -23px; } +.ui-loader-verbose { width: 200px; opacity: .88; height: auto; margin-left: -110px; margin-top: -43px; padding: 10px; } +.ui-loader-default h1 { font-size: 0; width: 0; height: 0; overflow: hidden; } +.ui-loader-verbose h1 { font-size: 16px; margin: 0; text-align: center; } +.ui-loader .ui-icon { background-color: #000; display: block; margin: 0; width: 44px; height: 44px; padding: 1px; -webkit-border-radius: 36px; -moz-border-radius: 36px; border-radius: 36px; } +.ui-loader-verbose .ui-icon { margin: 0 auto 10px; opacity: .75; } +.ui-loader-textonly { padding: 15px; margin-left: -115px; } +.ui-loader-textonly .ui-icon { display: none; } +.ui-loader-fakefix { position: absolute; } +/*fouc*/ +.ui-mobile-rendering > * { visibility: hidden; } +/*headers, content panels*/ +.ui-bar, .ui-body { position: relative; padding: .4em 15px; overflow: hidden; display: block; clear:both; } +.ui-bar { font-size: 16px; margin: 0; } +.ui-bar h1, .ui-bar h2, .ui-bar h3, .ui-bar h4, .ui-bar h5, .ui-bar h6 { margin: 0; padding: 0; font-size: 16px; display: inline-block; } +.ui-header, .ui-footer { position: relative; border-left-width: 0; border-right-width: 0; } +.ui-header .ui-btn-left, +.ui-header .ui-btn-right, +.ui-footer .ui-btn-left, +.ui-footer .ui-btn-right { position: absolute; top: 3px; } +.ui-header .ui-btn-left, +.ui-footer .ui-btn-left { left: 5px; } +.ui-header .ui-btn-right, +.ui-footer .ui-btn-right { right: 5px; } +.ui-footer .ui-btn-icon-notext, +.ui-header .ui-btn-icon-notext { top: 6px; } +.ui-header .ui-title, .ui-footer .ui-title { min-height: 1.1em; text-align: center; font-size: 16px; display: block; margin: .6em 30% .8em; padding: 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; outline: 0 !important; } +.ui-footer .ui-title { margin: .6em 15px .8em; } +/*content area*/ +.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; } +/* icons sizing */ +.ui-icon { width: 18px; height: 18px; } +/* non-js content hiding */ +.ui-nojs { position: absolute; left: -9999px; } +/* accessible content hiding */ +.ui-hide-label label, +.ui-hidden-accessible { position: absolute !important; left: -9999px; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +/* Transitions originally inspired by those from jQtouch, nice work, folks */ +.ui-mobile-viewport-transitioning, +.ui-mobile-viewport-transitioning .ui-page { + width: 100%; + height: 100%; + overflow: hidden; +} +.in { + -webkit-animation-timing-function: ease-out; + -webkit-animation-duration: 350ms; + -moz-animation-timing-function: ease-out; + -moz-animation-duration: 350ms; +} +.out { + -webkit-animation-timing-function: ease-in; + -webkit-animation-duration: 225ms; + -moz-animation-timing-function: ease-in; + -moz-animation-duration: 225; +} +@-webkit-keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} +@-moz-keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} +@-webkit-keyframes fadeout { + from { opacity: 1; } + to { opacity: 0; } +} +@-moz-keyframes fadeout { + from { opacity: 1; } + to { opacity: 0; } +} +.fade.out { + opacity: 0; + -webkit-animation-duration: 125ms; + -webkit-animation-name: fadeout; + -moz-animation-duration: 125ms; + -moz-animation-name: fadeout; +} +.fade.in { + opacity: 1; + -webkit-animation-duration: 225ms; + -webkit-animation-name: fadein; + -moz-animation-duration: 225ms; + -moz-animation-name: fadein; +} +.pop { + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; +} +.pop.in { + -webkit-transform: scale(1); + -moz-transform: scale(1); + opacity: 1; + -webkit-animation-name: popin; + -moz-animation-name: popin; + -webkit-animation-duration: 350ms; + -moz-animation-duration: 350ms; +} +.pop.out { + -webkit-animation-name: fadeout; + -moz-animation-name: fadeout; + opacity: 0; + -webkit-animation-duration: 100ms; + -moz-animation-duration: 100ms; +} +.pop.in.reverse { + -webkit-animation-name: fadein; + -moz-animation-name: fadein; +} +.pop.out.reverse { + -webkit-transform: scale(.8); + -moz-transform: scale(.8); + -webkit-animation-name: popout; + -moz-animation-name: popout; +} +@-webkit-keyframes popin { + from { + -webkit-transform: scale(.8); + opacity: 0; + } + to { + -webkit-transform: scale(1); + opacity: 1; + } +} +@-moz-keyframes popin { + from { + -moz-transform: scale(.8); + opacity: 0; + } + to { + -moz-transform: scale(1); + opacity: 1; + } +} +@-webkit-keyframes popout { + from { + -webkit-transform: scale(1); + opacity: 1; + } + to { + -webkit-transform: scale(.8); + opacity: 0; + } +} +@-moz-keyframes popout { + from { + -moz-transform: scale(1); + opacity: 1; + } + to { + -moz-transform: scale(.8); + opacity: 0; + } +} +/* keyframes for slidein from sides */ +@-webkit-keyframes slideinfromright { + from { -webkit-transform: translateX(100%); } + to { -webkit-transform: translateX(0); } +} +@-moz-keyframes slideinfromright { + from { -moz-transform: translateX(100%); } + to { -moz-transform: translateX(0); } +} +@-webkit-keyframes slideinfromleft { + from { -webkit-transform: translateX(-100%); } + to { -webkit-transform: translateX(0); } +} +@-moz-keyframes slideinfromleft { + from { -moz-transform: translateX(-100%); } + to { -moz-transform: translateX(0); } +} +/* keyframes for slideout to sides */ +@-webkit-keyframes slideouttoleft { + from { -webkit-transform: translateX(0); } + to { -webkit-transform: translateX(-100%); } +} +@-moz-keyframes slideouttoleft { + from { -moz-transform: translateX(0); } + to { -moz-transform: translateX(-100%); } +} +@-webkit-keyframes slideouttoright { + from { -webkit-transform: translateX(0); } + to { -webkit-transform: translateX(100%); } +} +@-moz-keyframes slideouttoright { + from { -moz-transform: translateX(0); } + to { -moz-transform: translateX(100%); } +} +.slide.out, .slide.in { + -webkit-animation-timing-function: ease-out; + -webkit-animation-duration: 350ms; + -moz-animation-timing-function: ease-out; + -moz-animation-duration: 350ms; +} +.slide.out { + -webkit-transform: translateX(-100%); + -webkit-animation-name: slideouttoleft; + -moz-transform: translateX(-100%); + -moz-animation-name: slideouttoleft; +} +.slide.in { + -webkit-transform: translateX(0); + -webkit-animation-name: slideinfromright; + -moz-transform: translateX(0); + -moz-animation-name: slideinfromright; +} +.slide.out.reverse { + -webkit-transform: translateX(100%); + -webkit-animation-name: slideouttoright; + -moz-transform: translateX(100%); + -moz-animation-name: slideouttoright; +} +.slide.in.reverse { + -webkit-transform: translateX(0); + -webkit-animation-name: slideinfromleft; + -moz-transform: translateX(0); + -moz-animation-name: slideinfromleft; +} +.slidefade.out { + -webkit-transform: translateX(-100%); + -webkit-animation-name: slideouttoleft; + -moz-transform: translateX(-100%); + -moz-animation-name: slideouttoleft; + -webkit-animation-duration: 225ms; + -moz-animation-duration: 225ms; +} +.slidefade.in { + -webkit-transform: translateX(0); + -webkit-animation-name: fadein; + -moz-transform: translateX(0); + -moz-animation-name: fadein; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +.slidefade.out.reverse { + -webkit-transform: translateX(100%); + -webkit-animation-name: slideouttoright; + -moz-transform: translateX(100%); + -moz-animation-name: slideouttoright; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +.slidefade.in.reverse { + -webkit-transform: translateX(0); + -webkit-animation-name: fadein; + -moz-transform: translateX(0); + -moz-animation-name: fadein; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +/* slide down */ +.slidedown.out { + -webkit-animation-name: fadeout; + -moz-animation-name: fadeout; + -webkit-animation-duration: 100ms; + -moz-animation-duration: 100ms; +} +.slidedown.in { + -webkit-transform: translateY(0); + -webkit-animation-name: slideinfromtop; + -moz-transform: translateY(0); + -moz-animation-name: slideinfromtop; + -webkit-animation-duration: 250ms; + -moz-animation-duration: 250ms; +} +.slidedown.in.reverse { + -webkit-animation-name: fadein; + -moz-animation-name: fadein; + -webkit-animation-duration: 150ms; + -moz-animation-duration: 150ms; +} +.slidedown.out.reverse { + -webkit-transform: translateY(-100%); + -moz-transform: translateY(-100%); + -webkit-animation-name: slideouttotop; + -moz-animation-name: slideouttotop; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +@-webkit-keyframes slideinfromtop { + from { -webkit-transform: translateY(-100%); } + to { -webkit-transform: translateY(0); } +} +@-moz-keyframes slideinfromtop { + from { -moz-transform: translateY(-100%); } + to { -moz-transform: translateY(0); } +} +@-webkit-keyframes slideouttotop { + from { -webkit-transform: translateY(0); } + to { -webkit-transform: translateY(-100%); } +} +@-moz-keyframes slideouttotop { + from { -moz-transform: translateY(0); } + to { -moz-transform: translateY(-100%); } +} +/* slide up */ +.slideup.out { + -webkit-animation-name: fadeout; + -moz-animation-name: fadeout; + -webkit-animation-duration: 100ms; + -moz-animation-duration: 100ms; +} +.slideup.in { + -webkit-transform: translateY(0); + -webkit-animation-name: slideinfrombottom; + -moz-transform: translateY(0); + -moz-animation-name: slideinfrombottom; + -webkit-animation-duration: 250ms; + -moz-animation-duration: 250ms; +} +.slideup.in.reverse { + -webkit-animation-name: fadein; + -moz-animation-name: fadein; + -webkit-animation-duration: 150ms; + -moz-animation-duration: 150ms; +} +.slideup.out.reverse { + -webkit-transform: translateY(100%); + -moz-transform: translateY(100%); + -webkit-animation-name: slideouttobottom; + -moz-animation-name: slideouttobottom; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +@-webkit-keyframes slideinfrombottom { + from { -webkit-transform: translateY(100%); } + to { -webkit-transform: translateY(0); } +} +@-moz-keyframes slideinfrombottom { + from { -moz-transform: translateY(100%); } + to { -moz-transform: translateY(0); } +} +@-webkit-keyframes slideouttobottom { + from { -webkit-transform: translateY(0); } + to { -webkit-transform: translateY(100%); } +} +@-moz-keyframes slideouttobottom { + from { -moz-transform: translateY(0); } + to { -moz-transform: translateY(100%); } +} +/* The properties in this rule are only necessary for the 'flip' transition. + * We need specify the perspective to create a projection matrix. This will add + * some depth as the element flips. The depth number represents the distance of + * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate + * value. + */ +.viewport-flip { + -webkit-perspective: 1000; + -moz-perspective: 1000; + position: absolute; +} +.flip { + -webkit-backface-visibility:hidden; + -webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ + -moz-backface-visibility:hidden; + -moz-transform:translateX(0); +} +.flip.out { + -webkit-transform: rotateY(-90deg) scale(.9); + -webkit-animation-name: flipouttoleft; + -webkit-animation-duration: 175ms; + -moz-transform: rotateY(-90deg) scale(.9); + -moz-animation-name: flipouttoleft; + -moz-animation-duration: 175ms; +} +.flip.in { + -webkit-animation-name: flipintoright; + -webkit-animation-duration: 225ms; + -moz-animation-name: flipintoright; + -moz-animation-duration: 225ms; +} +.flip.out.reverse { + -webkit-transform: rotateY(90deg) scale(.9); + -webkit-animation-name: flipouttoright; + -moz-transform: rotateY(90deg) scale(.9); + -moz-animation-name: flipouttoright; +} +.flip.in.reverse { + -webkit-animation-name: flipintoleft; + -moz-animation-name: flipintoleft; +} +@-webkit-keyframes flipouttoleft { + from { -webkit-transform: rotateY(0); } + to { -webkit-transform: rotateY(-90deg) scale(.9); } +} +@-moz-keyframes flipouttoleft { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(-90deg) scale(.9); } +} +@-webkit-keyframes flipouttoright { + from { -webkit-transform: rotateY(0) ; } + to { -webkit-transform: rotateY(90deg) scale(.9); } +} +@-moz-keyframes flipouttoright { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(90deg) scale(.9); } +} +@-webkit-keyframes flipintoleft { + from { -webkit-transform: rotateY(-90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoleft { + from { -moz-transform: rotateY(-90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@-webkit-keyframes flipintoright { + from { -webkit-transform: rotateY(90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoright { + from { -moz-transform: rotateY(90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +/* The properties in this rule are only necessary for the 'flip' transition. + * We need specify the perspective to create a projection matrix. This will add + * some depth as the element flips. The depth number represents the distance of + * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate + * value. + */ +.viewport-turn { + -webkit-perspective: 1000; + -moz-perspective: 1000; + position: absolute; +} +.turn { + -webkit-backface-visibility:hidden; + -webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ + -webkit-transform-origin: 0; + + -moz-backface-visibility:hidden; + -moz-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ + -moz-transform-origin: 0; +} +.turn.out { + -webkit-transform: rotateY(-90deg) scale(.9); + -webkit-animation-name: flipouttoleft; + -moz-transform: rotateY(-90deg) scale(.9); + -moz-animation-name: flipouttoleft; + -webkit-animation-duration: 125ms; + -moz-animation-duration: 125ms; +} +.turn.in { + -webkit-animation-name: flipintoright; + -moz-animation-name: flipintoright; + -webkit-animation-duration: 250ms; + -moz-animation-duration: 250ms; + +} +.turn.out.reverse { + -webkit-transform: rotateY(90deg) scale(.9); + -webkit-animation-name: flipouttoright; + -moz-transform: rotateY(90deg) scale(.9); + -moz-animation-name: flipouttoright; +} +.turn.in.reverse { + -webkit-animation-name: flipintoleft; + -moz-animation-name: flipintoleft; +} +@-webkit-keyframes flipouttoleft { + from { -webkit-transform: rotateY(0); } + to { -webkit-transform: rotateY(-90deg) scale(.9); } +} +@-moz-keyframes flipouttoleft { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(-90deg) scale(.9); } +} +@-webkit-keyframes flipouttoright { + from { -webkit-transform: rotateY(0) ; } + to { -webkit-transform: rotateY(90deg) scale(.9); } +} +@-moz-keyframes flipouttoright { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(90deg) scale(.9); } +} +@-webkit-keyframes flipintoleft { + from { -webkit-transform: rotateY(-90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoleft { + from { -moz-transform: rotateY(-90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@-webkit-keyframes flipintoright { + from { -webkit-transform: rotateY(90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoright { + from { -moz-transform: rotateY(90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +/* flow transition */ +.flow { + -webkit-transform-origin: 50% 30%; + -moz-transform-origin: 50% 30%; + -webkit-box-shadow: 0 0 20px rgba(0,0,0,.4); + -moz-box-shadow: 0 0 20px rgba(0,0,0,.4); +} +.ui-dialog.flow { + -webkit-transform-origin: none; + -moz-transform-origin: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; +} +.flow.out { + -webkit-transform: translateX(-100%) scale(.7); + -webkit-animation-name: flowouttoleft; + -webkit-animation-timing-function: ease; + -webkit-animation-duration: 350ms; + -moz-transform: translateX(-100%) scale(.7); + -moz-animation-name: flowouttoleft; + -moz-animation-timing-function: ease; + -moz-animation-duration: 350ms; +} +.flow.in { + -webkit-transform: translateX(0) scale(1); + -webkit-animation-name: flowinfromright; + -webkit-animation-timing-function: ease; + -webkit-animation-duration: 350ms; + -moz-transform: translateX(0) scale(1); + -moz-animation-name: flowinfromright; + -moz-animation-timing-function: ease; + -moz-animation-duration: 350ms; +} +.flow.out.reverse { + -webkit-transform: translateX(100%); + -webkit-animation-name: flowouttoright; + -moz-transform: translateX(100%); + -moz-animation-name: flowouttoright; +} +.flow.in.reverse { + -webkit-animation-name: flowinfromleft; + -moz-animation-name: flowinfromleft; +} +@-webkit-keyframes flowouttoleft { + 0% { -webkit-transform: translateX(0) scale(1); } + 60%, 70% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(-100%) scale(.7); } +} +@-moz-keyframes flowouttoleft { + 0% { -moz-transform: translateX(0) scale(1); } + 60%, 70% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(-100%) scale(.7); } +} +@-webkit-keyframes flowouttoright { + 0% { -webkit-transform: translateX(0) scale(1); } + 60%, 70% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(100%) scale(.7); } +} +@-moz-keyframes flowouttoright { + 0% { -moz-transform: translateX(0) scale(1); } + 60%, 70% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(100%) scale(.7); } +} +@-webkit-keyframes flowinfromleft { + 0% { -webkit-transform: translateX(-100%) scale(.7); } + 30%, 40% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(0) scale(1); } +} +@-moz-keyframes flowinfromleft { + 0% { -moz-transform: translateX(-100%) scale(.7); } + 30%, 40% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(0) scale(1); } +} +@-webkit-keyframes flowinfromright { + 0% { -webkit-transform: translateX(100%) scale(.7); } + 30%, 40% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(0) scale(1); } +} +@-moz-keyframes flowinfromright { + 0% { -moz-transform: translateX(100%) scale(.7); } + 30%, 40% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(0) scale(1); } +} +/* content configurations. */ +.ui-grid-a, .ui-grid-b, .ui-grid-c, .ui-grid-d { overflow: hidden; } +.ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e { margin: 0; padding: 0; border: 0; float: left; min-height:1px;} +/* grid solo: 100 - single item fallback */ +.ui-grid-solo .ui-block-a { width: 100%; float: none; } +/* grid a: 50/50 */ +.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 50%; } +.ui-grid-a .ui-block-a { clear: left; } +/* grid b: 33/33/33 */ +.ui-grid-b .ui-block-a, .ui-grid-b .ui-block-b, .ui-grid-b .ui-block-c { width: 33.333%; } +.ui-grid-b .ui-block-a { clear: left; } +/* grid c: 25/25/25/25 */ +.ui-grid-c .ui-block-a, .ui-grid-c .ui-block-b, .ui-grid-c .ui-block-c, .ui-grid-c .ui-block-d { width: 25%; } +.ui-grid-c .ui-block-a { clear: left; } +/* grid d: 20/20/20/20/20 */ +.ui-grid-d .ui-block-a, .ui-grid-d .ui-block-b, .ui-grid-d .ui-block-c, .ui-grid-d .ui-block-d, .ui-grid-d .ui-block-e { width: 20%; } +.ui-grid-d .ui-block-a { clear: left; } +/* fixed page header & footer configuration */ +.ui-header-fixed, +.ui-footer-fixed { + left: 0; + right: 0; + width: 100%; + position: fixed; + z-index: 1000; +} +.ui-header-fixed { + top: 0; +} +.ui-footer-fixed { + bottom: 0; +} +.ui-header-fullscreen, +.ui-footer-fullscreen { + opacity: .9; +} +.ui-page-header-fixed { + padding-top: 2.5em; +} +.ui-page-footer-fixed { + padding-bottom: 3em; +} +.ui-page-header-fullscreen .ui-content, +.ui-page-footer-fullscreen .ui-content { + padding: 0; +} +.ui-fixed-hidden { + position: absolute; +} +.ui-page-header-fullscreen .ui-fixed-hidden, +.ui-page-footer-fullscreen .ui-fixed-hidden { + left: -99999em; +} +.ui-header-fixed .ui-btn, +.ui-footer-fixed .ui-btn { + z-index: 10; +} +.ui-navbar { overflow: hidden; } +.ui-navbar ul, .ui-navbar-expanded ul { list-style:none; padding: 0; margin: 0; position: relative; display: block; border: 0;} +.ui-navbar-collapsed ul { float: left; width: 75%; margin-right: -2px; } +.ui-navbar-collapsed .ui-navbar-toggle { float: left; width: 25%; } +.ui-navbar li.ui-navbar-truncate { position: absolute; left: -9999px; top: -9999px; } +.ui-navbar li .ui-btn, .ui-navbar .ui-navbar-toggle .ui-btn { display: block; font-size: 12px; text-align: center; margin: 0; border-right-width: 0; max-width: 100%; } +.ui-navbar li .ui-btn { margin-right: -1px; } +.ui-navbar li .ui-btn:last-child { margin-right: 0; } +.ui-header .ui-navbar li .ui-btn, .ui-header .ui-navbar .ui-navbar-toggle .ui-btn, +.ui-footer .ui-navbar li .ui-btn, .ui-footer .ui-navbar .ui-navbar-toggle .ui-btn { border-top-width: 0; border-bottom-width: 0; } +.ui-navbar .ui-btn-inner { padding-left: 2px; padding-right: 2px; } +.ui-navbar-noicons li .ui-btn .ui-btn-inner, .ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner { padding-top: .8em; padding-bottom: .9em; } +/*expanded page styles*/ +.ui-navbar-expanded .ui-btn { margin: 0; font-size: 14px; } +.ui-navbar-expanded .ui-btn-inner { padding-left: 5px; padding-right: 5px; } +.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner { padding: 45px 5px 15px; text-align: center; } +.ui-navbar-expanded .ui-btn-icon-top .ui-icon { top: 15px; } +.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner { padding: 15px 5px 45px; text-align: center; } +.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon { bottom: 15px; } +.ui-navbar-expanded li .ui-btn .ui-btn-inner { min-height: 2.5em; } +.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner { padding-top: 1.8em; padding-bottom: 1.9em; } +.ui-btn { display: block; text-align: center; cursor:pointer; position: relative; margin: .5em 5px; padding: 0; } +.ui-mini { margin: .25em 5px; } +.ui-btn-inner { padding: .6em 20px; min-width: .75em; display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; position: relative; zoom: 1; } +.ui-btn input, .ui-btn button { z-index: 2; } +.ui-btn-left, .ui-btn-right, .ui-btn-inline { display: inline-block; } +.ui-btn-block { display: block; } +.ui-header .ui-btn, +.ui-footer .ui-btn { display: inline-block; margin: 0; } +.ui-header .ui-btn-inner, +.ui-footer .ui-btn-inner, +.ui-mini .ui-btn-inner { font-size: 12.5px; padding: .55em 11px .5em; } +.ui-header .ui-fullsize .ui-btn-inner, +.ui-footer .ui-fullsize .ui-btn-inner { font-size: 16px; padding: .6em 25px; } +.ui-btn-icon-notext { width: 24px; height: 24px; } +.ui-btn-icon-notext .ui-btn-inner { padding: 0; height: 100%; } +.ui-btn-icon-notext .ui-btn-inner .ui-icon { margin: 2px 1px 2px 3px; } +.ui-btn-text { position: relative; z-index: 1; width: 100%; } +.ui-btn-icon-notext .ui-btn-text { position: absolute; left: -9999px; } +.ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } +.ui-btn-icon-right .ui-btn-inner { padding-right: 40px; } +.ui-btn-icon-top .ui-btn-inner { padding-top: 40px; } +.ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 40px; } +.ui-header .ui-btn-icon-left .ui-btn-inner, +.ui-footer .ui-btn-icon-left .ui-btn-inner, +.ui-mini .ui-btn-icon-left .ui-btn-inner { padding-left: 30px; } +.ui-header .ui-btn-icon-right .ui-btn-inner, +.ui-footer .ui-btn-icon-right .ui-btn-inner, +.ui-mini .ui-btn-icon-right .ui-btn-inner { padding-right: 30px; } +.ui-header .ui-btn-icon-top .ui-btn-inner, +.ui-footer .ui-btn-icon-top .ui-btn-inner, +.ui-mini .ui-btn-icon-top .ui-btn-inner { padding: 30px 3px .5em 3px; } +.ui-header .ui-btn-icon-bottom .ui-btn-inner, +.ui-footer .ui-btn-icon-bottom .ui-btn-inner, +.ui-mini .ui-btn-icon-bottom .ui-btn-inner { padding: .55em 3px 30px 3px; } +/*btn icon positioning*/ +.ui-btn-icon-notext .ui-icon { display: block; z-index: 0;} +.ui-btn-icon-left .ui-btn-inner .ui-icon, .ui-btn-icon-right .ui-btn-inner .ui-icon { position: absolute; top: 50%; margin-top: -9px; } +.ui-btn-icon-top .ui-btn-inner .ui-icon, .ui-btn-icon-bottom .ui-btn-inner .ui-icon { position: absolute; left: 50%; margin-left: -9px; } +.ui-btn-icon-left .ui-icon { left: 10px; } +.ui-btn-icon-right .ui-icon { right: 10px; } +.ui-btn-icon-top .ui-icon { top: 10px; } +.ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } +.ui-header .ui-btn-icon-left .ui-icon, +.ui-footer .ui-btn-icon-left .ui-icon, +.ui-mini.ui-btn-icon-left .ui-icon, +.ui-mini .ui-btn-icon-left .ui-icon { left: 5px; } +.ui-header .ui-btn-icon-right .ui-icon, +.ui-footer .ui-btn-icon-right .ui-icon, +.ui-mini.ui-btn-icon-right .ui-icon, +.ui-mini .ui-btn-icon-right .ui-icon { right: 5px; } +.ui-header .ui-btn-icon-top .ui-icon, +.ui-footer .ui-btn-icon-top .ui-icon, +.ui-mini.ui-btn-icon-top .ui-icon, +.ui-mini .ui-btn-icon-top .ui-icon { top: 5px; } +.ui-header .ui-btn-icon-bottom .ui-icon, +.ui-footer .ui-btn-icon-bottom .ui-icon, +.ui-mini.ui-btn-icon-bottom .ui-icon, +.ui-mini .ui-btn-icon-bottom .ui-icon { bottom: 5px; } +/*hiding native button,inputs */ +.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: button; opacity: .1; cursor: pointer; background: #fff; background: rgba(255,255,255,0); filter: Alpha(Opacity=.0001); font-size: 1px; border: none; text-indent: -9999px; } +.ui-collapsible { margin: .5em 0; } +.ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -8px; padding: 0; border-width: 0 0 1px 0; position: relative; } +.ui-collapsible-heading a { text-align: left; margin: 0; } +.ui-collapsible-heading .ui-btn-inner, +.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } +.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner { padding-left: 12px; padding-right: 40px; } +.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner, +.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner { padding-right: 40px; text-align: center; } +.ui-collapsible-heading a span.ui-btn { position: absolute; left: 6px; top: 50%; margin: -12px 0 0 0; width: 20px; height: 20px; padding: 1px 0px 1px 2px; text-indent: -9999px; } +.ui-collapsible-heading a span.ui-btn .ui-btn-inner { padding: 10px 0; } +.ui-collapsible-heading a span.ui-btn .ui-icon { left: 0; margin-top: -10px; } +.ui-collapsible-heading-status { position: absolute; top: -9999px; left:0px; } +.ui-collapsible-content { + display: block; + margin: 0 -8px; + padding: 10px 16px; + border-top: none; /* Overrides ui-btn-up-* */ + background-image: none; /* Overrides ui-btn-up-* */ + font-weight: normal; /* Overrides ui-btn-up-* */ +} +.ui-collapsible-content-collapsed { display: none; } +.ui-collapsible-set { margin: .5em 0; } +.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; } +.ui-controlgroup, fieldset.ui-controlgroup { padding: 0; margin: 0em 0 .5em; zoom: 1; } +.ui-bar .ui-controlgroup { margin: 0 .3em; } +.ui-controlgroup-label { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .4em; } +.ui-controlgroup-controls { display: block; width: 100%;} +.ui-controlgroup li { list-style: none; } +.ui-controlgroup-vertical .ui-btn, +.ui-controlgroup-vertical .ui-checkbox, .ui-controlgroup-vertical .ui-radio { margin: 0; border-bottom-width: 0; } +.ui-controlgroup-controls label.ui-select { position: absolute; left: -9999px; } +.ui-controlgroup-vertical .ui-controlgroup-last { border-bottom-width: 1px; } +.ui-controlgroup-horizontal { padding: 0; } +.ui-controlgroup-horizontal .ui-btn-inner { text-align:center; } +.ui-controlgroup-horizontal .ui-btn, .ui-controlgroup-horizontal .ui-select { display: inline-block; margin: 0 -6px 0 0; } +.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio { float: left; clear: none; margin: 0 -1px 0 0; } +.ui-controlgroup-horizontal .ui-checkbox .ui-btn, .ui-controlgroup-horizontal .ui-radio .ui-btn, +.ui-controlgroup-horizontal .ui-checkbox:last-child, .ui-controlgroup-horizontal .ui-radio:last-child { margin-right: 0; } +.ui-controlgroup-horizontal .ui-controlgroup-last { margin-right: 0; } +.ui-controlgroup .ui-checkbox label, .ui-controlgroup .ui-radio label { font-size: 16px; } +/* conflicts with listview.. +.ui-controlgroup .ui-btn-icon-notext { width: 30px; height: 30px; text-indent: -9999px; } +.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { padding: 5px 6px 5px 5px; } +*/ +@media all and (min-width: 450px){ + .ui-field-contain .ui-controlgroup-label { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain .ui-controlgroup-controls { width: 60%; display: inline-block; } + .ui-field-contain .ui-controlgroup .ui-select { width: 100%; } + .ui-field-contain .ui-controlgroup-horizontal .ui-select { width: auto; } +} +.ui-dialog { + background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */ +} +.ui-dialog-contain { width: 92.5%; max-width: 500px; margin: 10% auto 15px auto; padding: 0; } +.ui-dialog .ui-header { + margin-top: 15%; + border: none; + overflow: hidden; +} +.ui-dialog .ui-header, +.ui-dialog .ui-content, +.ui-dialog .ui-footer { + display: block; + position: relative; + width: auto; +} +.ui-dialog .ui-header, +.ui-dialog .ui-footer { + z-index: 10; + padding: 0; +} +.ui-dialog .ui-footer { + padding: 0 15px; +} +.ui-dialog .ui-content { + padding: 15px; +} +.ui-dialog { + margin-top: -15px; +} +.ui-checkbox, .ui-radio { position: relative; clear: both; margin: .2em 0 .5em; z-index: 1; } +.ui-checkbox .ui-btn, .ui-radio .ui-btn { margin: 0; text-align: left; z-index: 2; } +.ui-checkbox .ui-btn-inner, .ui-radio .ui-btn-inner { white-space: normal; } +.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner { padding-left: 45px; } +.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner { padding-left: 36px; } +.ui-checkbox .ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 36px; } +.ui-checkbox .ui-btn-icon-top .ui-btn-inner,.ui-radio .ui-btn-icon-top .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } +.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner, .ui-radio .ui-btn-icon-bottom .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } +.ui-checkbox .ui-icon, .ui-radio .ui-icon { top: 1.1em; } +.ui-checkbox .ui-btn-icon-left .ui-icon, .ui-radio .ui-btn-icon-left .ui-icon { left: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon, .ui-radio .ui-mini.ui-btn-icon-left .ui-icon { left: 9px; } +.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } +.ui-checkbox .ui-btn-icon-top .ui-icon, .ui-radio .ui-btn-icon-top .ui-icon { top: 10px; } +.ui-checkbox .ui-btn-icon-bottom .ui-icon, .ui-radio .ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } +.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } +/* input, label positioning */ +.ui-checkbox input,.ui-radio input { position:absolute; left:20px; top:50%; width: 10px; height: 10px; margin:-5px 0 0 0; outline: 0 !important; z-index: 1; } +.ui-field-contain, fieldset.ui-field-contain { padding: .8em 0; margin: 0; border-width: 0 0 1px 0; overflow: visible; } +.ui-field-contain:first-child { border-top-width: 0; } +.ui-header .ui-field-contain-left, +.ui-header .ui-field-contain-right { + position: absolute; + top: 0; + width: 25%; +} +.ui-header .ui-field-contain-left { + left: 1em; +} +.ui-header .ui-field-contain-right { + right: 1em; +} +@media all and (min-width: 450px){ + .ui-field-contain, .ui-mobile fieldset.ui-field-contain { border-width: 0; padding: 0; margin: 1em 0; } +} +.ui-select { display: block; position: relative; } +.ui-select select { position: absolute; left: -9999px; top: -9999px; } +.ui-select .ui-btn { overflow: hidden; opacity: 1; margin: 0; } +/* Fixes #2588 — When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select—including “inherit”—without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */ +.ui-select .ui-btn select { cursor: pointer; -webkit-appearance: button; left: 0; top:0; width: 100%; min-height: 1.5em; min-height: 100%; height: 3em; max-height: 100%; opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); z-index: 2; } +.ui-select .ui-disabled { opacity: .3; } +@-moz-document url-prefix() {.ui-select .ui-btn select { opacity: 0.0001; }} +.ui-select .ui-btn select.ui-select-nativeonly { opacity: 1; text-indent: 0; } +.ui-select .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; } +.ui-select .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-select .ui-mini.ui-btn-icon-right .ui-icon { right: 7px; } +/* labels */ +label.ui-select { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } +/*listbox*/ +.ui-select .ui-btn-text, .ui-selectmenu .ui-btn-text { display: block; min-height: 1em; overflow: hidden !important; +/* This !important is required for iPad Safari specifically. See https://github.com/jquery/jquery-mobile/issues/2647 */ } +.ui-select .ui-btn-text { text-overflow: ellipsis; } +.ui-selectmenu { position: absolute; padding: 0; z-index: 1100 !important; width: 80%; max-width: 350px; padding: 6px; } +.ui-selectmenu .ui-listview { margin: 0; } +.ui-selectmenu .ui-btn.ui-li-divider { cursor: default; } +.ui-selectmenu-hidden { top: -9999px; left: -9999px; } +.ui-selectmenu-screen { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 99; } +.ui-screen-hidden, .ui-selectmenu-list .ui-li .ui-icon { display: none; } +.ui-selectmenu-list .ui-li .ui-icon { display: block; } +.ui-li.ui-selectmenu-placeholder { display: none; } +.ui-selectmenu .ui-header .ui-title { margin: 0.6em 46px 0.8em; } +@media all and (min-width: 450px){ + .ui-field-contain label.ui-select { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain .ui-select { width: 60%; display: inline-block; } +} +/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button. this shim's content in there */ +.ui-selectmenu .ui-header h1:after { content: '.'; visibility: hidden; } +label.ui-input-text { font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; } +input.ui-input-text, textarea.ui-input-text { background-image: none; padding: .4em; line-height: 1.4; font-size: 16px; display: block; width: 97%; outline: 0; } +.ui-header input.ui-input-text, +.ui-footer input.ui-input-text { margin-left: 1.25%; padding: .4em 1%; width: 95.5% } /* Note that padding left/right on text inputs is factored into how the element is displayed in Firefox, but does not actually pad the text inside it. */ + input.ui-input-text { -webkit-appearance: none; } +textarea.ui-input-text { height: 50px; -webkit-transition: height 200ms linear; -moz-transition: height 200ms linear; -o-transition: height 200ms linear; transition: height 200ms linear; } +.ui-input-search { padding: 0 30px; background-image: none; position: relative; } +.ui-icon-searchfield:after { position: absolute; left: 7px; top: 50%; margin-top: -9px; content: ""; width: 18px; height: 18px; opacity: .5; } +.ui-input-search input.ui-input-text { border: none; width: 98%; padding: .4em 0; margin: 0; display: block; background: transparent none; outline: 0 !important; } +.ui-input-search .ui-input-clear { position: absolute; right: 0; top: 50%; margin-top: -13px; } +.ui-mini .ui-input-clear { right: -3px; } +.ui-input-search .ui-input-clear-hidden { display: none; } +input.ui-mini, .ui-mini input, textarea.ui-mini { font-size: 14px; } +textarea.ui-mini { height: 45px; } +/* orientation adjustments - incomplete!*/ +@media all and (min-width: 450px){ + .ui-field-contain label.ui-input-text { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0 } + .ui-field-contain input.ui-input-text, + .ui-field-contain textarea.ui-input-text, + .ui-field-contain .ui-input-search { width: 60%; display: inline-block; } + .ui-field-contain .ui-input-search { width: 50%; } + .ui-hide-label input.ui-input-text, + .ui-hide-label textarea.ui-input-text, + .ui-hide-label .ui-input-search { padding: .4em; width: 97%; } + .ui-input-search input.ui-input-text { width: 98%; /*echos rule from above*/ } +} +.ui-listview { margin: 0; counter-reset: listnumbering; } +.ui-content .ui-listview { margin: -15px; } +.ui-content .ui-listview-inset { margin: 1em 0; } +.ui-listview, .ui-li { list-style:none; padding:0; } +.ui-li, .ui-li.ui-field-contain { display: block; margin:0; position: relative; overflow: visible; text-align: left; border-width: 0; border-top-width: 1px; } +.ui-li .ui-btn-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.ui-li-divider, .ui-li-static { padding: .5em 15px; font-size: 14px; font-weight: bold; } +.ui-li-divider { counter-reset: listnumbering; } +ol.ui-listview .ui-link-inherit:before, ol.ui-listview .ui-li-static:before, .ui-li-dec { font-size: .8em; display: inline-block; padding-right: .3em; font-weight: normal;counter-increment: listnumbering; content: counter(listnumbering) ". "; } +ol.ui-listview .ui-li-jsnumbering:before { content: "" !important; } /* to avoid chance of duplication */ +.ui-listview-inset .ui-li { border-right-width: 1px; border-left-width: 1px; } +.ui-li:last-child, .ui-li.ui-field-contain:last-child { border-bottom-width: 1px; } +.ui-li>.ui-btn-inner { display: block; position: relative; padding: 0; } +.ui-li .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li { padding: .7em 15px .7em 15px; display: block; } +.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-thumb { min-height: 60px; padding-left: 100px; } +.ui-li-has-icon .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-icon { min-height: 20px; padding-left: 40px; } +.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-count { padding-right: 45px; } +.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow { padding-right: 30px; } +.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow.ui-li-has-count { padding-right: 75px; } +.ui-li-has-count .ui-btn-text { padding-right: 15px; } +.ui-li-heading { font-size: 16px; font-weight: bold; display: block; margin: .6em 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.ui-li-desc { font-size: 12px; font-weight: normal; display: block; margin: -.5em 0 .6em; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.ui-li-thumb, .ui-listview .ui-li-icon { position: absolute; left: 1px; top: 0; max-height: 80px; max-width: 80px; } +.ui-listview .ui-li-icon { max-height: 40px; max-width: 40px; left: 10px; top: .9em; } +.ui-li-thumb, .ui-listview .ui-li-icon, .ui-li-content { float: left; margin-right: 10px; } +.ui-li-aside { float: right; width: 50%; text-align: right; margin: .3em 0; } +@media all and (min-width: 480px){ + .ui-li-aside { width: 45%; } +} +.ui-li-divider { cursor: default; } +.ui-li-has-alt .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt { padding-right: 95px; } +.ui-li-has-count .ui-li-count { position: absolute; font-size: 11px; font-weight: bold; padding: .2em .5em; top: 50%; margin-top: -.9em; right: 48px; } +.ui-li-divider .ui-li-count, .ui-li-static .ui-li-count { right: 10px; } +.ui-li-has-alt .ui-li-count { right: 55px; } +.ui-li-link-alt { position: absolute; width: 40px; height: 100%; border-width: 0; border-left-width: 1px; top: 0; right: 0; margin: 0; padding: 0; z-index: 2; } +.ui-li-link-alt .ui-btn { overflow: hidden; position: absolute; right: 8px; top: 50%; margin: -11px 0 0 0; border-bottom-width: 1px; z-index: -1;} +.ui-li-link-alt .ui-btn-inner { padding: 0; height: 100%; position: absolute; width: 100%; top: 0; left: 0;} +.ui-li-link-alt .ui-btn .ui-icon { right: 50%; margin-right: -9px; } +.ui-listview * .ui-btn-inner > .ui-btn > .ui-btn-inner { border-top: 0px; } +.ui-listview-filter { border-width: 0; overflow: hidden; margin: -15px -15px 15px -15px } +.ui-listview-filter .ui-input-search { margin: 5px; width: auto; display: block; } +.ui-listview-filter-inset { margin: -15px -5px -15px -5px; background: transparent; } +.ui-li.ui-screen-hidden{display:none;} +/* Odd iPad positioning issue. */ +@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { + .ui-li .ui-btn-text { overflow: visible; } +} +label.ui-slider { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } +input.ui-slider-input, +.ui-field-contain input.ui-slider-input { display: inline-block; width: 50px; } +select.ui-slider-switch { display: none; } +div.ui-slider { position: relative; display: inline-block; overflow: visible; height: 15px; padding: 0; margin: 0 2% 0 20px; top: 4px; width: 65%; } +div.ui-slider-mini { height: 12px; margin-left: 10px; } +div.ui-slider-bg { border: none; height: 100%; padding-right: 8px; } +.ui-controlgroup a.ui-slider-handle, a.ui-slider-handle { position: absolute; z-index: 1; top: 50%; width: 28px; height: 28px; margin-top: -15px; margin-left: -15px; outline: 0; } +a.ui-slider-handle .ui-btn-inner { padding: 0; height: 100%; } +div.ui-slider-mini a.ui-slider-handle { height: 14px; width: 14px; margin: -8px 0 0 -7px; } +div.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: -9px 0 0 -9px; } +@media all and (min-width: 450px){ + .ui-field-contain label.ui-slider { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain div.ui-slider { width: 43%; } + .ui-field-contain div.ui-slider-switch { width: 5.5em; } +} +div.ui-slider-switch { height: 32px; margin-left: 0; width: 5.8em; } +a.ui-slider-handle-snapping { -webkit-transition: left 70ms linear; -moz-transition: left 70ms linear; } +div.ui-slider-switch .ui-slider-handle { margin-top: 1px; } +.ui-slider-inneroffset { margin: 0 16px; position: relative; z-index: 1; } +div.ui-slider-switch.ui-slider-mini { width: 5em; height: 29px; } +div.ui-slider-switch.ui-slider-mini .ui-slider-inneroffset { margin: 0 15px 0 14px; } +div.ui-slider-switch.ui-slider-mini .ui-slider-handle { width: 25px; height: 25px; margin: 1px 0 0 -13px; } +div.ui-slider-switch.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: 0; } +span.ui-slider-label { position: absolute; text-align: center; width: 100%; overflow: hidden; font-size: 16px; top: 0; line-height: 2; min-height: 100%; border-width: 0; white-space: nowrap; } +.ui-slider-mini span.ui-slider-label { font-size: 14px; } +span.ui-slider-label-a { z-index: 1; left: 0; text-indent: -1.5em; } +span.ui-slider-label-b { z-index: 0; right: 0; text-indent: 1.5em;} +.ui-slider-inline { width: 120px; display: inline-block; } diff --git a/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/jquery.mobile-1.1.0.js b/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/jquery.mobile-1.1.0.js new file mode 100644 index 000000000..c12426c0a --- /dev/null +++ b/MediaBrowser.HtmlBrowser/Html/thirdparty/jquery.mobile110/jquery.mobile-1.1.0.js @@ -0,0 +1,7551 @@ +/* +* jQuery Mobile Framework 1.1.0 db342b1f315c282692791aa870455901fdb46a55 +* http://jquerymobile.com +* +* Copyright 2011 (c) jQuery Project +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +*/ +(function ( root, doc, factory ) { + if ( typeof define === "function" && define.amd ) { + // AMD. Register as an anonymous module. + define( [ "jquery" ], function ( $ ) { + factory( $, root, doc ); + return $.mobile; + }); + } else { + // Browser globals + factory( root.jQuery, root, doc ); + } +}( this, document, function ( $, window, document, undefined ) { + + +// This plugin is an experiment for abstracting away the touch and mouse +// events so that developers don't have to worry about which method of input +// the device their document is loaded on supports. +// +// The idea here is to allow the developer to register listeners for the +// basic mouse events, such as mousedown, mousemove, mouseup, and click, +// and the plugin will take care of registering the correct listeners +// behind the scenes to invoke the listener at the fastest possible time +// for that device, while still retaining the order of event firing in +// the traditional mouse environment, should multiple handlers be registered +// on the same element for different events. +// +// The current version exposes the following virtual events to jQuery bind methods: +// "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel" + +(function( $, window, document, undefined ) { + +var dataPropertyName = "virtualMouseBindings", + touchTargetPropertyName = "virtualTouchID", + virtualEventNames = "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split( " " ), + touchEventProps = "clientX clientY pageX pageY screenX screenY".split( " " ), + mouseHookProps = $.event.mouseHooks ? $.event.mouseHooks.props : [], + mouseEventProps = $.event.props.concat( mouseHookProps ), + activeDocHandlers = {}, + resetTimerID = 0, + startX = 0, + startY = 0, + didScroll = false, + clickBlockList = [], + blockMouseTriggers = false, + blockTouchTriggers = false, + eventCaptureSupported = "addEventListener" in document, + $document = $( document ), + nextTouchID = 1, + lastTouchID = 0; + +$.vmouse = { + moveDistanceThreshold: 10, + clickDistanceThreshold: 10, + resetTimerDuration: 1500 +}; + +function getNativeEvent( event ) { + + while ( event && typeof event.originalEvent !== "undefined" ) { + event = event.originalEvent; + } + return event; +} + +function createVirtualEvent( event, eventType ) { + + var t = event.type, + oe, props, ne, prop, ct, touch, i, j; + + event = $.Event(event); + event.type = eventType; + + oe = event.originalEvent; + props = $.event.props; + + // addresses separation of $.event.props in to $.event.mouseHook.props and Issue 3280 + // https://github.com/jquery/jquery-mobile/issues/3280 + if ( t.search( /^(mouse|click)/ ) > -1 ) { + props = mouseEventProps; + } + + // copy original event properties over to the new event + // this would happen if we could call $.event.fix instead of $.Event + // but we don't have a way to force an event to be fixed multiple times + if ( oe ) { + for ( i = props.length, prop; i; ) { + prop = props[ --i ]; + event[ prop ] = oe[ prop ]; + } + } + + // make sure that if the mouse and click virtual events are generated + // without a .which one is defined + if ( t.search(/mouse(down|up)|click/) > -1 && !event.which ){ + event.which = 1; + } + + if ( t.search(/^touch/) !== -1 ) { + ne = getNativeEvent( oe ); + t = ne.touches; + ct = ne.changedTouches; + touch = ( t && t.length ) ? t[0] : ( (ct && ct.length) ? ct[ 0 ] : undefined ); + + if ( touch ) { + for ( j = 0, len = touchEventProps.length; j < len; j++){ + prop = touchEventProps[ j ]; + event[ prop ] = touch[ prop ]; + } + } + } + + return event; +} + +function getVirtualBindingFlags( element ) { + + var flags = {}, + b, k; + + while ( element ) { + + b = $.data( element, dataPropertyName ); + + for ( k in b ) { + if ( b[ k ] ) { + flags[ k ] = flags.hasVirtualBinding = true; + } + } + element = element.parentNode; + } + return flags; +} + +function getClosestElementWithVirtualBinding( element, eventType ) { + var b; + while ( element ) { + + b = $.data( element, dataPropertyName ); + + if ( b && ( !eventType || b[ eventType ] ) ) { + return element; + } + element = element.parentNode; + } + return null; +} + +function enableTouchBindings() { + blockTouchTriggers = false; +} + +function disableTouchBindings() { + blockTouchTriggers = true; +} + +function enableMouseBindings() { + lastTouchID = 0; + clickBlockList.length = 0; + blockMouseTriggers = false; + + // When mouse bindings are enabled, our + // touch bindings are disabled. + disableTouchBindings(); +} + +function disableMouseBindings() { + // When mouse bindings are disabled, our + // touch bindings are enabled. + enableTouchBindings(); +} + +function startResetTimer() { + clearResetTimer(); + resetTimerID = setTimeout(function(){ + resetTimerID = 0; + enableMouseBindings(); + }, $.vmouse.resetTimerDuration ); +} + +function clearResetTimer() { + if ( resetTimerID ){ + clearTimeout( resetTimerID ); + resetTimerID = 0; + } +} + +function triggerVirtualEvent( eventType, event, flags ) { + var ve; + + if ( ( flags && flags[ eventType ] ) || + ( !flags && getClosestElementWithVirtualBinding( event.target, eventType ) ) ) { + + ve = createVirtualEvent( event, eventType ); + + $( event.target).trigger( ve ); + } + + return ve; +} + +function mouseEventCallback( event ) { + var touchID = $.data(event.target, touchTargetPropertyName); + + if ( !blockMouseTriggers && ( !lastTouchID || lastTouchID !== touchID ) ){ + var ve = triggerVirtualEvent( "v" + event.type, event ); + if ( ve ) { + if ( ve.isDefaultPrevented() ) { + event.preventDefault(); + } + if ( ve.isPropagationStopped() ) { + event.stopPropagation(); + } + if ( ve.isImmediatePropagationStopped() ) { + event.stopImmediatePropagation(); + } + } + } +} + +function handleTouchStart( event ) { + + var touches = getNativeEvent( event ).touches, + target, flags; + + if ( touches && touches.length === 1 ) { + + target = event.target; + flags = getVirtualBindingFlags( target ); + + if ( flags.hasVirtualBinding ) { + + lastTouchID = nextTouchID++; + $.data( target, touchTargetPropertyName, lastTouchID ); + + clearResetTimer(); + + disableMouseBindings(); + didScroll = false; + + var t = getNativeEvent( event ).touches[ 0 ]; + startX = t.pageX; + startY = t.pageY; + + triggerVirtualEvent( "vmouseover", event, flags ); + triggerVirtualEvent( "vmousedown", event, flags ); + } + } +} + +function handleScroll( event ) { + if ( blockTouchTriggers ) { + return; + } + + if ( !didScroll ) { + triggerVirtualEvent( "vmousecancel", event, getVirtualBindingFlags( event.target ) ); + } + + didScroll = true; + startResetTimer(); +} + +function handleTouchMove( event ) { + if ( blockTouchTriggers ) { + return; + } + + var t = getNativeEvent( event ).touches[ 0 ], + didCancel = didScroll, + moveThreshold = $.vmouse.moveDistanceThreshold; + didScroll = didScroll || + ( Math.abs(t.pageX - startX) > moveThreshold || + Math.abs(t.pageY - startY) > moveThreshold ), + flags = getVirtualBindingFlags( event.target ); + + if ( didScroll && !didCancel ) { + triggerVirtualEvent( "vmousecancel", event, flags ); + } + + triggerVirtualEvent( "vmousemove", event, flags ); + startResetTimer(); +} + +function handleTouchEnd( event ) { + if ( blockTouchTriggers ) { + return; + } + + disableTouchBindings(); + + var flags = getVirtualBindingFlags( event.target ), + t; + triggerVirtualEvent( "vmouseup", event, flags ); + + if ( !didScroll ) { + var ve = triggerVirtualEvent( "vclick", event, flags ); + if ( ve && ve.isDefaultPrevented() ) { + // The target of the mouse events that follow the touchend + // event don't necessarily match the target used during the + // touch. This means we need to rely on coordinates for blocking + // any click that is generated. + t = getNativeEvent( event ).changedTouches[ 0 ]; + clickBlockList.push({ + touchID: lastTouchID, + x: t.clientX, + y: t.clientY + }); + + // Prevent any mouse events that follow from triggering + // virtual event notifications. + blockMouseTriggers = true; + } + } + triggerVirtualEvent( "vmouseout", event, flags); + didScroll = false; + + startResetTimer(); +} + +function hasVirtualBindings( ele ) { + var bindings = $.data( ele, dataPropertyName ), + k; + + if ( bindings ) { + for ( k in bindings ) { + if ( bindings[ k ] ) { + return true; + } + } + } + return false; +} + +function dummyMouseHandler(){} + +function getSpecialEventObject( eventType ) { + var realType = eventType.substr( 1 ); + + return { + setup: function( data, namespace ) { + // If this is the first virtual mouse binding for this element, + // add a bindings object to its data. + + if ( !hasVirtualBindings( this ) ) { + $.data( this, dataPropertyName, {}); + } + + // If setup is called, we know it is the first binding for this + // eventType, so initialize the count for the eventType to zero. + var bindings = $.data( this, dataPropertyName ); + bindings[ eventType ] = true; + + // If this is the first virtual mouse event for this type, + // register a global handler on the document. + + activeDocHandlers[ eventType ] = ( activeDocHandlers[ eventType ] || 0 ) + 1; + + if ( activeDocHandlers[ eventType ] === 1 ) { + $document.bind( realType, mouseEventCallback ); + } + + // Some browsers, like Opera Mini, won't dispatch mouse/click events + // for elements unless they actually have handlers registered on them. + // To get around this, we register dummy handlers on the elements. + + $( this ).bind( realType, dummyMouseHandler ); + + // For now, if event capture is not supported, we rely on mouse handlers. + if ( eventCaptureSupported ) { + // If this is the first virtual mouse binding for the document, + // register our touchstart handler on the document. + + activeDocHandlers[ "touchstart" ] = ( activeDocHandlers[ "touchstart" ] || 0) + 1; + + if (activeDocHandlers[ "touchstart" ] === 1) { + $document.bind( "touchstart", handleTouchStart ) + .bind( "touchend", handleTouchEnd ) + + // On touch platforms, touching the screen and then dragging your finger + // causes the window content to scroll after some distance threshold is + // exceeded. On these platforms, a scroll prevents a click event from being + // dispatched, and on some platforms, even the touchend is suppressed. To + // mimic the suppression of the click event, we need to watch for a scroll + // event. Unfortunately, some platforms like iOS don't dispatch scroll + // events until *AFTER* the user lifts their finger (touchend). This means + // we need to watch both scroll and touchmove events to figure out whether + // or not a scroll happenens before the touchend event is fired. + + .bind( "touchmove", handleTouchMove ) + .bind( "scroll", handleScroll ); + } + } + }, + + teardown: function( data, namespace ) { + // If this is the last virtual binding for this eventType, + // remove its global handler from the document. + + --activeDocHandlers[ eventType ]; + + if ( !activeDocHandlers[ eventType ] ) { + $document.unbind( realType, mouseEventCallback ); + } + + if ( eventCaptureSupported ) { + // If this is the last virtual mouse binding in existence, + // remove our document touchstart listener. + + --activeDocHandlers[ "touchstart" ]; + + if ( !activeDocHandlers[ "touchstart" ] ) { + $document.unbind( "touchstart", handleTouchStart ) + .unbind( "touchmove", handleTouchMove ) + .unbind( "touchend", handleTouchEnd ) + .unbind( "scroll", handleScroll ); + } + } + + var $this = $( this ), + bindings = $.data( this, dataPropertyName ); + + // teardown may be called when an element was + // removed from the DOM. If this is the case, + // jQuery core may have already stripped the element + // of any data bindings so we need to check it before + // using it. + if ( bindings ) { + bindings[ eventType ] = false; + } + + // Unregister the dummy event handler. + + $this.unbind( realType, dummyMouseHandler ); + + // If this is the last virtual mouse binding on the + // element, remove the binding data from the element. + + if ( !hasVirtualBindings( this ) ) { + $this.removeData( dataPropertyName ); + } + } + }; +} + +// Expose our custom events to the jQuery bind/unbind mechanism. + +for ( var i = 0; i < virtualEventNames.length; i++ ){ + $.event.special[ virtualEventNames[ i ] ] = getSpecialEventObject( virtualEventNames[ i ] ); +} + +// Add a capture click handler to block clicks. +// Note that we require event capture support for this so if the device +// doesn't support it, we punt for now and rely solely on mouse events. +if ( eventCaptureSupported ) { + document.addEventListener( "click", function( e ){ + var cnt = clickBlockList.length, + target = e.target, + x, y, ele, i, o, touchID; + + if ( cnt ) { + x = e.clientX; + y = e.clientY; + threshold = $.vmouse.clickDistanceThreshold; + + // The idea here is to run through the clickBlockList to see if + // the current click event is in the proximity of one of our + // vclick events that had preventDefault() called on it. If we find + // one, then we block the click. + // + // Why do we have to rely on proximity? + // + // Because the target of the touch event that triggered the vclick + // can be different from the target of the click event synthesized + // by the browser. The target of a mouse/click event that is syntehsized + // from a touch event seems to be implementation specific. For example, + // some browsers will fire mouse/click events for a link that is near + // a touch event, even though the target of the touchstart/touchend event + // says the user touched outside the link. Also, it seems that with most + // browsers, the target of the mouse/click event is not calculated until the + // time it is dispatched, so if you replace an element that you touched + // with another element, the target of the mouse/click will be the new + // element underneath that point. + // + // Aside from proximity, we also check to see if the target and any + // of its ancestors were the ones that blocked a click. This is necessary + // because of the strange mouse/click target calculation done in the + // Android 2.1 browser, where if you click on an element, and there is a + // mouse/click handler on one of its ancestors, the target will be the + // innermost child of the touched element, even if that child is no where + // near the point of touch. + + ele = target; + + while ( ele ) { + for ( i = 0; i < cnt; i++ ) { + o = clickBlockList[ i ]; + touchID = 0; + + if ( ( ele === target && Math.abs( o.x - x ) < threshold && Math.abs( o.y - y ) < threshold ) || + $.data( ele, touchTargetPropertyName ) === o.touchID ) { + // XXX: We may want to consider removing matches from the block list + // instead of waiting for the reset timer to fire. + e.preventDefault(); + e.stopPropagation(); + return; + } + } + ele = ele.parentNode; + } + } + }, true); +} +})( jQuery, window, document ); + + + +// Script: jQuery hashchange event +// +// *Version: 1.3, Last updated: 7/21/2010* +// +// Project Home - http://benalman.com/projects/jquery-hashchange-plugin/ +// GitHub - http://github.com/cowboy/jquery-hashchange/ +// Source - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.js +// (Minified) - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.min.js (0.8kb gzipped) +// +// About: License +// +// Copyright (c) 2010 "Cowboy" Ben Alman, +// Dual licensed under the MIT and GPL licenses. +// http://benalman.com/about/license/ +// +// About: Examples +// +// These working examples, complete with fully commented code, illustrate a few +// ways in which this plugin can be used. +// +// hashchange event - http://benalman.com/code/projects/jquery-hashchange/examples/hashchange/ +// document.domain - http://benalman.com/code/projects/jquery-hashchange/examples/document_domain/ +// +// About: Support and Testing +// +// Information about what version or versions of jQuery this plugin has been +// tested with, what browsers it has been tested in, and where the unit tests +// reside (so you can test it yourself). +// +// jQuery Versions - 1.2.6, 1.3.2, 1.4.1, 1.4.2 +// Browsers Tested - Internet Explorer 6-8, Firefox 2-4, Chrome 5-6, Safari 3.2-5, +// Opera 9.6-10.60, iPhone 3.1, Android 1.6-2.2, BlackBerry 4.6-5. +// Unit Tests - http://benalman.com/code/projects/jquery-hashchange/unit/ +// +// About: Known issues +// +// While this jQuery hashchange event implementation is quite stable and +// robust, there are a few unfortunate browser bugs surrounding expected +// hashchange event-based behaviors, independent of any JavaScript +// window.onhashchange abstraction. See the following examples for more +// information: +// +// Chrome: Back Button - http://benalman.com/code/projects/jquery-hashchange/examples/bug-chrome-back-button/ +// Firefox: Remote XMLHttpRequest - http://benalman.com/code/projects/jquery-hashchange/examples/bug-firefox-remote-xhr/ +// WebKit: Back Button in an Iframe - http://benalman.com/code/projects/jquery-hashchange/examples/bug-webkit-hash-iframe/ +// Safari: Back Button from a different domain - http://benalman.com/code/projects/jquery-hashchange/examples/bug-safari-back-from-diff-domain/ +// +// Also note that should a browser natively support the window.onhashchange +// event, but not report that it does, the fallback polling loop will be used. +// +// About: Release History +// +// 1.3 - (7/21/2010) Reorganized IE6/7 Iframe code to make it more +// "removable" for mobile-only development. Added IE6/7 document.title +// support. Attempted to make Iframe as hidden as possible by using +// techniques from http://www.paciellogroup.com/blog/?p=604. Added +// support for the "shortcut" format $(window).hashchange( fn ) and +// $(window).hashchange() like jQuery provides for built-in events. +// Renamed jQuery.hashchangeDelay to and +// lowered its default value to 50. Added +// and properties plus document-domain.html +// file to address access denied issues when setting document.domain in +// IE6/7. +// 1.2 - (2/11/2010) Fixed a bug where coming back to a page using this plugin +// from a page on another domain would cause an error in Safari 4. Also, +// IE6/7 Iframe is now inserted after the body (this actually works), +// which prevents the page from scrolling when the event is first bound. +// Event can also now be bound before DOM ready, but it won't be usable +// before then in IE6/7. +// 1.1 - (1/21/2010) Incorporated document.documentMode test to fix IE8 bug +// where browser version is incorrectly reported as 8.0, despite +// inclusion of the X-UA-Compatible IE=EmulateIE7 meta tag. +// 1.0 - (1/9/2010) Initial Release. Broke out the jQuery BBQ event.special +// window.onhashchange functionality into a separate plugin for users +// who want just the basic event & back button support, without all the +// extra awesomeness that BBQ provides. This plugin will be included as +// part of jQuery BBQ, but also be available separately. + +(function($,window,undefined){ + // Reused string. + var str_hashchange = 'hashchange', + + // Method / object references. + doc = document, + fake_onhashchange, + special = $.event.special, + + // Does the browser support window.onhashchange? Note that IE8 running in + // IE7 compatibility mode reports true for 'onhashchange' in window, even + // though the event isn't supported, so also test document.documentMode. + doc_mode = doc.documentMode, + supports_onhashchange = 'on' + str_hashchange in window && ( doc_mode === undefined || doc_mode > 7 ); + + // Get location.hash (or what you'd expect location.hash to be) sans any + // leading #. Thanks for making this necessary, Firefox! + function get_fragment( url ) { + url = url || location.href; + return '#' + url.replace( /^[^#]*#?(.*)$/, '$1' ); + }; + + // Method: jQuery.fn.hashchange + // + // Bind a handler to the window.onhashchange event or trigger all bound + // window.onhashchange event handlers. This behavior is consistent with + // jQuery's built-in event handlers. + // + // Usage: + // + // > jQuery(window).hashchange( [ handler ] ); + // + // Arguments: + // + // handler - (Function) Optional handler to be bound to the hashchange + // event. This is a "shortcut" for the more verbose form: + // jQuery(window).bind( 'hashchange', handler ). If handler is omitted, + // all bound window.onhashchange event handlers will be triggered. This + // is a shortcut for the more verbose + // jQuery(window).trigger( 'hashchange' ). These forms are described in + // the section. + // + // Returns: + // + // (jQuery) The initial jQuery collection of elements. + + // Allow the "shortcut" format $(elem).hashchange( fn ) for binding and + // $(elem).hashchange() for triggering, like jQuery does for built-in events. + $.fn[ str_hashchange ] = function( fn ) { + return fn ? this.bind( str_hashchange, fn ) : this.trigger( str_hashchange ); + }; + + // Property: jQuery.fn.hashchange.delay + // + // The numeric interval (in milliseconds) at which the + // polling loop executes. Defaults to 50. + + // Property: jQuery.fn.hashchange.domain + // + // If you're setting document.domain in your JavaScript, and you want hash + // history to work in IE6/7, not only must this property be set, but you must + // also set document.domain BEFORE jQuery is loaded into the page. This + // property is only applicable if you are supporting IE6/7 (or IE8 operating + // in "IE7 compatibility" mode). + // + // In addition, the property must be set to the + // path of the included "document-domain.html" file, which can be renamed or + // modified if necessary (note that the document.domain specified must be the + // same in both your main JavaScript as well as in this file). + // + // Usage: + // + // jQuery.fn.hashchange.domain = document.domain; + + // Property: jQuery.fn.hashchange.src + // + // If, for some reason, you need to specify an Iframe src file (for example, + // when setting document.domain as in ), you can + // do so using this property. Note that when using this property, history + // won't be recorded in IE6/7 until the Iframe src file loads. This property + // is only applicable if you are supporting IE6/7 (or IE8 operating in "IE7 + // compatibility" mode). + // + // Usage: + // + // jQuery.fn.hashchange.src = 'path/to/file.html'; + + $.fn[ str_hashchange ].delay = 50; + /* + $.fn[ str_hashchange ].domain = null; + $.fn[ str_hashchange ].src = null; + */ + + // Event: hashchange event + // + // Fired when location.hash changes. In browsers that support it, the native + // HTML5 window.onhashchange event is used, otherwise a polling loop is + // initialized, running every milliseconds to + // see if the hash has changed. In IE6/7 (and IE8 operating in "IE7 + // compatibility" mode), a hidden Iframe is created to allow the back button + // and hash-based history to work. + // + // Usage as described in : + // + // > // Bind an event handler. + // > jQuery(window).hashchange( function(e) { + // > var hash = location.hash; + // > ... + // > }); + // > + // > // Manually trigger the event handler. + // > jQuery(window).hashchange(); + // + // A more verbose usage that allows for event namespacing: + // + // > // Bind an event handler. + // > jQuery(window).bind( 'hashchange', function(e) { + // > var hash = location.hash; + // > ... + // > }); + // > + // > // Manually trigger the event handler. + // > jQuery(window).trigger( 'hashchange' ); + // + // Additional Notes: + // + // * The polling loop and Iframe are not created until at least one handler + // is actually bound to the 'hashchange' event. + // * If you need the bound handler(s) to execute immediately, in cases where + // a location.hash exists on page load, via bookmark or page refresh for + // example, use jQuery(window).hashchange() or the more verbose + // jQuery(window).trigger( 'hashchange' ). + // * The event can be bound before DOM ready, but since it won't be usable + // before then in IE6/7 (due to the necessary Iframe), recommended usage is + // to bind it inside a DOM ready handler. + + // Override existing $.event.special.hashchange methods (allowing this plugin + // to be defined after jQuery BBQ in BBQ's source code). + special[ str_hashchange ] = $.extend( special[ str_hashchange ], { + + // Called only when the first 'hashchange' event is bound to window. + setup: function() { + // If window.onhashchange is supported natively, there's nothing to do.. + if ( supports_onhashchange ) { return false; } + + // Otherwise, we need to create our own. And we don't want to call this + // until the user binds to the event, just in case they never do, since it + // will create a polling loop and possibly even a hidden Iframe. + $( fake_onhashchange.start ); + }, + + // Called only when the last 'hashchange' event is unbound from window. + teardown: function() { + // If window.onhashchange is supported natively, there's nothing to do.. + if ( supports_onhashchange ) { return false; } + + // Otherwise, we need to stop ours (if possible). + $( fake_onhashchange.stop ); + } + + }); + + // fake_onhashchange does all the work of triggering the window.onhashchange + // event for browsers that don't natively support it, including creating a + // polling loop to watch for hash changes and in IE 6/7 creating a hidden + // Iframe to enable back and forward. + fake_onhashchange = (function(){ + var self = {}, + timeout_id, + + // Remember the initial hash so it doesn't get triggered immediately. + last_hash = get_fragment(), + + fn_retval = function(val){ return val; }, + history_set = fn_retval, + history_get = fn_retval; + + // Start the polling loop. + self.start = function() { + timeout_id || poll(); + }; + + // Stop the polling loop. + self.stop = function() { + timeout_id && clearTimeout( timeout_id ); + timeout_id = undefined; + }; + + // This polling loop checks every $.fn.hashchange.delay milliseconds to see + // if location.hash has changed, and triggers the 'hashchange' event on + // window when necessary. + function poll() { + var hash = get_fragment(), + history_hash = history_get( last_hash ); + + if ( hash !== last_hash ) { + history_set( last_hash = hash, history_hash ); + + $(window).trigger( str_hashchange ); + + } else if ( history_hash !== last_hash ) { + location.href = location.href.replace( /#.*/, '' ) + history_hash; + } + + timeout_id = setTimeout( poll, $.fn[ str_hashchange ].delay ); + }; + + // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + // vvvvvvvvvvvvvvvvvvv REMOVE IF NOT SUPPORTING IE6/7/8 vvvvvvvvvvvvvvvvvvv + // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + $.browser.msie && !supports_onhashchange && (function(){ + // Not only do IE6/7 need the "magical" Iframe treatment, but so does IE8 + // when running in "IE7 compatibility" mode. + + var iframe, + iframe_src; + + // When the event is bound and polling starts in IE 6/7, create a hidden + // Iframe for history handling. + self.start = function(){ + if ( !iframe ) { + iframe_src = $.fn[ str_hashchange ].src; + iframe_src = iframe_src && iframe_src + get_fragment(); + + // Create hidden Iframe. Attempt to make Iframe as hidden as possible + // by using techniques from http://www.paciellogroup.com/blog/?p=604. + iframe = $('