From 531e6bd15d84a11e421f2cf5b95cff525b61f63d Mon Sep 17 00:00:00 2001 From: Evandro Oliveira Date: Thu, 4 Jul 2013 13:42:56 -0300 Subject: [PATCH 01/35] Adding some charsets Newer versions of MySQL have more UTF-8 collations in addition to the new utf8_mb4 charset/collation. For some additional information about utf8_mb4, please refer to http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html --- gluon/contrib/pymysql/charset.py | 92 ++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/gluon/contrib/pymysql/charset.py b/gluon/contrib/pymysql/charset.py index 10a91bd1..507fd07d 100644 --- a/gluon/contrib/pymysql/charset.py +++ b/gluon/contrib/pymysql/charset.py @@ -81,6 +81,8 @@ _charsets.add(Charset(41, 'latin7', 'latin7_general_ci', 'Yes')) _charsets.add(Charset(42, 'latin7', 'latin7_general_cs', '')) _charsets.add(Charset(43, 'macce', 'macce_bin', '')) _charsets.add(Charset(44, 'cp1250', 'cp1250_croatian_ci', '')) +_charsets.add(Charset(45, 'utf8mb4', 'utf8mb4_general_ci', 'Yes')) +_charsets.add(Charset(46, 'utf8mb4', 'utf8mb4_bin', '')) _charsets.add(Charset(47, 'latin1', 'latin1_bin', '')) _charsets.add(Charset(48, 'latin1', 'latin1_general_ci', '')) _charsets.add(Charset(49, 'latin1', 'latin1_general_cs', '')) @@ -88,9 +90,15 @@ _charsets.add(Charset(50, 'cp1251', 'cp1251_bin', '')) _charsets.add(Charset(51, 'cp1251', 'cp1251_general_ci', 'Yes')) _charsets.add(Charset(52, 'cp1251', 'cp1251_general_cs', '')) _charsets.add(Charset(53, 'macroman', 'macroman_bin', '')) +_charsets.add(Charset(54, 'utf16', 'utf16_general_ci', 'Yes')) +_charsets.add(Charset(55, 'utf16', 'utf16_bin', '')) +_charsets.add(Charset(56, 'utf16le', 'utf16le_general_ci', 'Yes')) _charsets.add(Charset(57, 'cp1256', 'cp1256_general_ci', 'Yes')) _charsets.add(Charset(58, 'cp1257', 'cp1257_bin', '')) _charsets.add(Charset(59, 'cp1257', 'cp1257_general_ci', 'Yes')) +_charsets.add(Charset(60, 'utf32', 'utf32_general_ci', 'Yes')) +_charsets.add(Charset(61, 'utf32', 'utf32_bin', '')) +_charsets.add(Charset(62, 'utf16le', 'utf16le_bin', '')) _charsets.add(Charset(63, 'binary', 'binary', 'Yes')) _charsets.add(Charset(64, 'armscii8', 'armscii8_bin', '')) _charsets.add(Charset(65, 'ascii', 'ascii_bin', '')) @@ -127,6 +135,30 @@ _charsets.add(Charset(96, 'cp932', 'cp932_bin', '')) _charsets.add(Charset(97, 'eucjpms', 'eucjpms_japanese_ci', 'Yes')) _charsets.add(Charset(98, 'eucjpms', 'eucjpms_bin', '')) _charsets.add(Charset(99, 'cp1250', 'cp1250_polish_ci', '')) +_charsets.add(Charset(101, 'utf16', 'utf16_unicode_ci', '')) +_charsets.add(Charset(102, 'utf16', 'utf16_icelandic_ci', '')) +_charsets.add(Charset(103, 'utf16', 'utf16_latvian_ci', '')) +_charsets.add(Charset(104, 'utf16', 'utf16_romanian_ci', '')) +_charsets.add(Charset(105, 'utf16', 'utf16_slovenian_ci', '')) +_charsets.add(Charset(106, 'utf16', 'utf16_polish_ci', '')) +_charsets.add(Charset(107, 'utf16', 'utf16_estonian_ci', '')) +_charsets.add(Charset(108, 'utf16', 'utf16_spanish_ci', '')) +_charsets.add(Charset(109, 'utf16', 'utf16_swedish_ci', '')) +_charsets.add(Charset(110, 'utf16', 'utf16_turkish_ci', '')) +_charsets.add(Charset(111, 'utf16', 'utf16_czech_ci', '')) +_charsets.add(Charset(112, 'utf16', 'utf16_danish_ci', '')) +_charsets.add(Charset(113, 'utf16', 'utf16_lithuanian_ci', '')) +_charsets.add(Charset(114, 'utf16', 'utf16_slovak_ci', '')) +_charsets.add(Charset(115, 'utf16', 'utf16_spanish2_ci', '')) +_charsets.add(Charset(116, 'utf16', 'utf16_roman_ci', '')) +_charsets.add(Charset(117, 'utf16', 'utf16_persian_ci', '')) +_charsets.add(Charset(118, 'utf16', 'utf16_esperanto_ci', '')) +_charsets.add(Charset(119, 'utf16', 'utf16_hungarian_ci', '')) +_charsets.add(Charset(120, 'utf16', 'utf16_sinhala_ci', '')) +_charsets.add(Charset(121, 'utf16', 'utf16_german2_ci', '')) +_charsets.add(Charset(122, 'utf16', 'utf16_croatian_ci', '')) +_charsets.add(Charset(123, 'utf16', 'utf16_unicode_520_ci', '')) +_charsets.add(Charset(124, 'utf16', 'utf16_vietnamese_ci', '')) _charsets.add(Charset(128, 'ucs2', 'ucs2_unicode_ci', '')) _charsets.add(Charset(129, 'ucs2', 'ucs2_icelandic_ci', '')) _charsets.add(Charset(130, 'ucs2', 'ucs2_latvian_ci', '')) @@ -146,6 +178,36 @@ _charsets.add(Charset(143, 'ucs2', 'ucs2_roman_ci', '')) _charsets.add(Charset(144, 'ucs2', 'ucs2_persian_ci', '')) _charsets.add(Charset(145, 'ucs2', 'ucs2_esperanto_ci', '')) _charsets.add(Charset(146, 'ucs2', 'ucs2_hungarian_ci', '')) +_charsets.add(Charset(147, 'ucs2', 'ucs2_sinhala_ci', '')) +_charsets.add(Charset(148, 'ucs2', 'ucs2_german2_ci', '')) +_charsets.add(Charset(149, 'ucs2', 'ucs2_croatian_ci', '')) +_charsets.add(Charset(150, 'ucs2', 'ucs2_unicode_520_ci', '')) +_charsets.add(Charset(151, 'ucs2', 'ucs2_vietnamese_ci', '')) +_charsets.add(Charset(159, 'ucs2', 'ucs2_general_mysql500_ci', '')) +_charsets.add(Charset(160, 'utf32', 'utf32_unicode_ci', '')) +_charsets.add(Charset(161, 'utf32', 'utf32_icelandic_ci', '')) +_charsets.add(Charset(162, 'utf32', 'utf32_latvian_ci', '')) +_charsets.add(Charset(163, 'utf32', 'utf32_romanian_ci', '')) +_charsets.add(Charset(164, 'utf32', 'utf32_slovenian_ci', '')) +_charsets.add(Charset(165, 'utf32', 'utf32_polish_ci', '')) +_charsets.add(Charset(166, 'utf32', 'utf32_estonian_ci', '')) +_charsets.add(Charset(167, 'utf32', 'utf32_spanish_ci', '')) +_charsets.add(Charset(168, 'utf32', 'utf32_swedish_ci', '')) +_charsets.add(Charset(169, 'utf32', 'utf32_turkish_ci', '')) +_charsets.add(Charset(170, 'utf32', 'utf32_czech_ci', '')) +_charsets.add(Charset(171, 'utf32', 'utf32_danish_ci', '')) +_charsets.add(Charset(172, 'utf32', 'utf32_lithuanian_ci', '')) +_charsets.add(Charset(173, 'utf32', 'utf32_slovak_ci', '')) +_charsets.add(Charset(174, 'utf32', 'utf32_spanish2_ci', '')) +_charsets.add(Charset(175, 'utf32', 'utf32_roman_ci', '')) +_charsets.add(Charset(176, 'utf32', 'utf32_persian_ci', '')) +_charsets.add(Charset(177, 'utf32', 'utf32_esperanto_ci', '')) +_charsets.add(Charset(178, 'utf32', 'utf32_hungarian_ci', '')) +_charsets.add(Charset(179, 'utf32', 'utf32_sinhala_ci', '')) +_charsets.add(Charset(180, 'utf32', 'utf32_german2_ci', '')) +_charsets.add(Charset(181, 'utf32', 'utf32_croatian_ci', '')) +_charsets.add(Charset(182, 'utf32', 'utf32_unicode_520_ci', '')) +_charsets.add(Charset(183, 'utf32', 'utf32_vietnamese_ci', '')) _charsets.add(Charset(192, 'utf8', 'utf8_unicode_ci', '')) _charsets.add(Charset(193, 'utf8', 'utf8_icelandic_ci', '')) _charsets.add(Charset(194, 'utf8', 'utf8_latvian_ci', '')) @@ -165,6 +227,36 @@ _charsets.add(Charset(207, 'utf8', 'utf8_roman_ci', '')) _charsets.add(Charset(208, 'utf8', 'utf8_persian_ci', '')) _charsets.add(Charset(209, 'utf8', 'utf8_esperanto_ci', '')) _charsets.add(Charset(210, 'utf8', 'utf8_hungarian_ci', '')) +_charsets.add(Charset(211, 'utf8', 'utf8_sinhala_ci', '')) +_charsets.add(Charset(212, 'utf8', 'utf8_german2_ci', '')) +_charsets.add(Charset(213, 'utf8', 'utf8_croatian_ci', '')) +_charsets.add(Charset(214, 'utf8', 'utf8_unicode_520_ci', '')) +_charsets.add(Charset(215, 'utf8', 'utf8_vietnamese_ci', '')) +_charsets.add(Charset(223, 'utf8', 'utf8_general_mysql500_ci', '')) +_charsets.add(Charset(224, 'utf8mb4', 'utf8mb4_unicode_ci', '')) +_charsets.add(Charset(225, 'utf8mb4', 'utf8mb4_icelandic_ci', '')) +_charsets.add(Charset(226, 'utf8mb4', 'utf8mb4_latvian_ci', '')) +_charsets.add(Charset(227, 'utf8mb4', 'utf8mb4_romanian_ci', '')) +_charsets.add(Charset(228, 'utf8mb4', 'utf8mb4_slovenian_ci', '')) +_charsets.add(Charset(229, 'utf8mb4', 'utf8mb4_polish_ci', '')) +_charsets.add(Charset(230, 'utf8mb4', 'utf8mb4_estonian_ci', '')) +_charsets.add(Charset(231, 'utf8mb4', 'utf8mb4_spanish_ci', '')) +_charsets.add(Charset(232, 'utf8mb4', 'utf8mb4_swedish_ci', '')) +_charsets.add(Charset(233, 'utf8mb4', 'utf8mb4_turkish_ci', '')) +_charsets.add(Charset(234, 'utf8mb4', 'utf8mb4_czech_ci', '')) +_charsets.add(Charset(235, 'utf8mb4', 'utf8mb4_danish_ci', '')) +_charsets.add(Charset(236, 'utf8mb4', 'utf8mb4_lithuanian_ci', '')) +_charsets.add(Charset(237, 'utf8mb4', 'utf8mb4_slovak_ci', '')) +_charsets.add(Charset(238, 'utf8mb4', 'utf8mb4_spanish2_ci', '')) +_charsets.add(Charset(239, 'utf8mb4', 'utf8mb4_roman_ci', '')) +_charsets.add(Charset(240, 'utf8mb4', 'utf8mb4_persian_ci', '')) +_charsets.add(Charset(241, 'utf8mb4', 'utf8mb4_esperanto_ci', '')) +_charsets.add(Charset(242, 'utf8mb4', 'utf8mb4_hungarian_ci', '')) +_charsets.add(Charset(243, 'utf8mb4', 'utf8mb4_sinhala_ci', '')) +_charsets.add(Charset(244, 'utf8mb4', 'utf8mb4_german2_ci', '')) +_charsets.add(Charset(245, 'utf8mb4', 'utf8mb4_croatian_ci', '')) +_charsets.add(Charset(246, 'utf8mb4', 'utf8mb4_unicode_520_ci', '')) +_charsets.add(Charset(247, 'utf8mb4', 'utf8mb4_vietnamese_ci', '')) def charset_by_name(name): return _charsets.by_name(name) From 1bad215015b382189b23fb4c18d9a9de6a25280d Mon Sep 17 00:00:00 2001 From: mdipierro Date: Sat, 6 Jul 2013 16:04:26 -0500 Subject: [PATCH 02/35] appadmin manage patch, thanks Anthony --- VERSION | 2 +- applications/admin/controllers/appadmin.py | 9 +- applications/examples/controllers/appadmin.py | 9 +- applications/welcome/controllers/appadmin.py | 9 +- applications/welcome/static/js/web2py.js | 172 +++++++++--------- gluon/dal.py | 2 +- gluon/html.py | 4 + 7 files changed, 110 insertions(+), 97 deletions(-) diff --git a/VERSION b/VERSION index 6cb48b73..9d7d683b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.6.0-development+timestamp.2013.07.05.02.12.46 +Version 2.6.0-development+timestamp.2013.07.06.16.03.42 diff --git a/applications/admin/controllers/appadmin.py b/applications/admin/controllers/appadmin.py index b80301ae..32f515f0 100644 --- a/applications/admin/controllers/appadmin.py +++ b/applications/admin/controllers/appadmin.py @@ -623,7 +623,10 @@ def manage(): orderby = 'role' if not request.args(3) or '.group_id' not in request.args(3) else None elif table == auth.table_permission(): orderby = 'group_id' - grid = SQLFORM.smartgrid(table, args=request.args[:2], user_signature=True, - orderby=orderby, linked_tables=linked_tables, - maxtextlength=1000, formname=formname) + kwargs = dict(user_signature=True, maxtextlength=1000, + orderby=orderby, linked_tables=linked_tables) + smartgrid_args = manager_action.get('smartgrid_args', {}) + kwargs.update(**smartgrid_args.get('DEFAULT', {})) + kwargs.update(**smartgrid_args.get(table._tablename, {})) + grid = SQLFORM.smartgrid(table, args=request.args[:2], formname=formname, **kwargs) return grid diff --git a/applications/examples/controllers/appadmin.py b/applications/examples/controllers/appadmin.py index b80301ae..32f515f0 100644 --- a/applications/examples/controllers/appadmin.py +++ b/applications/examples/controllers/appadmin.py @@ -623,7 +623,10 @@ def manage(): orderby = 'role' if not request.args(3) or '.group_id' not in request.args(3) else None elif table == auth.table_permission(): orderby = 'group_id' - grid = SQLFORM.smartgrid(table, args=request.args[:2], user_signature=True, - orderby=orderby, linked_tables=linked_tables, - maxtextlength=1000, formname=formname) + kwargs = dict(user_signature=True, maxtextlength=1000, + orderby=orderby, linked_tables=linked_tables) + smartgrid_args = manager_action.get('smartgrid_args', {}) + kwargs.update(**smartgrid_args.get('DEFAULT', {})) + kwargs.update(**smartgrid_args.get(table._tablename, {})) + grid = SQLFORM.smartgrid(table, args=request.args[:2], formname=formname, **kwargs) return grid diff --git a/applications/welcome/controllers/appadmin.py b/applications/welcome/controllers/appadmin.py index b80301ae..32f515f0 100644 --- a/applications/welcome/controllers/appadmin.py +++ b/applications/welcome/controllers/appadmin.py @@ -623,7 +623,10 @@ def manage(): orderby = 'role' if not request.args(3) or '.group_id' not in request.args(3) else None elif table == auth.table_permission(): orderby = 'group_id' - grid = SQLFORM.smartgrid(table, args=request.args[:2], user_signature=True, - orderby=orderby, linked_tables=linked_tables, - maxtextlength=1000, formname=formname) + kwargs = dict(user_signature=True, maxtextlength=1000, + orderby=orderby, linked_tables=linked_tables) + smartgrid_args = manager_action.get('smartgrid_args', {}) + kwargs.update(**smartgrid_args.get('DEFAULT', {})) + kwargs.update(**smartgrid_args.get(table._tablename, {})) + grid = SQLFORM.smartgrid(table, args=request.args[:2], formname=formname, **kwargs) return grid diff --git a/applications/welcome/static/js/web2py.js b/applications/welcome/static/js/web2py.js index c7570263..8d7ddf85 100644 --- a/applications/welcome/static/js/web2py.js +++ b/applications/welcome/static/js/web2py.js @@ -1,4 +1,4 @@ -(function ($, undefined) { +(function (jQuery, undefined) { /* * Unobtrusive scripting adapter for jQuery, largely taken from * the wonderful https://github.com/rails/jquery-ujs @@ -13,7 +13,7 @@ }; var web2py; - $.web2py = web2py = { + jQuery.web2py = web2py = { popup: function (url) { newwindow = window.open(url, 'name', 'height=400,width=600'); @@ -21,23 +21,23 @@ return false; }, collapse: function (id) { - $('#' + id).slideToggle(); + jQuery('#' + id).slideToggle(); }, fade: function (id, value) { - if(value > 0) $('#' + id).hide().fadeIn('slow'); - else $('#' + id).show().fadeOut('slow'); + if(value > 0) jQuery('#' + id).hide().fadeIn('slow'); + else jQuery('#' + id).show().fadeOut('slow'); }, ajax: function (u, s, t) { query = ''; if(typeof s == "string") { - d = $(s).serialize(); + d = jQuery(s).serialize(); if(d) { query = d; } } else { pcs = []; if(s != null && s != undefined) for(i = 0; i < s.length; i++) { - q = $("[name=" + s[i] + "]").serialize(); + q = jQuery("[name=" + s[i] + "]").serialize(); if(q) { pcs.push(q); } @@ -46,14 +46,14 @@ query = pcs.join("&"); } } - $.ajax({ + jQuery.ajax({ type: "POST", url: u, data: query, success: function (msg) { if(t) { if(t == ':eval') eval(msg); - else if(typeof t == 'string') $("#" + t).html(msg); + else if(typeof t == 'string') jQuery("#" + t).html(msg); else t(msg); } } @@ -66,14 +66,14 @@ */ var date_format = (typeof w2p_ajax_date_format != 'undefined') ? w2p_ajax_date_format : "%Y-%m-%d"; var datetime_format = (typeof w2p_ajax_datetime_format != 'undefined') ? w2p_ajax_datetime_format : "%Y-%m-%d %H:%M:%S"; - $("input.date", target).each(function () { + jQuery("input.date", target).each(function () { Calendar.setup({ inputField: this, ifFormat: date_format, showsTime: false }); }); - $("input.datetime", target).each(function () { + jQuery("input.datetime", target).each(function () { Calendar.setup({ inputField: this, ifFormat: datetime_format, @@ -81,24 +81,24 @@ timeFormat: "24" }); }); - $("input.time", target).each(function () { - $(this).timeEntry(); + jQuery("input.time", target).each(function () { + jQuery(this).timeEntry(); }); /*adds btn class to buttons*/ - $('button', target).addClass('btn'); - $('form input[type="submit"], form input[type="button"]', target).addClass('btn'); + jQuery('button', target).addClass('btn'); + jQuery('form input[type="submit"], form input[type="button"]', target).addClass('btn'); /*no more inline javascript for PasswordWidget*/ - $('input[type=password][data-w2p_entropy]', target).each(function () { - web2py.validate_entropy($(this)); + jQuery('input[type=password][data-w2p_entropy]', target).each(function () { + web2py.validate_entropy(jQuery(this)); }); /*no more inline javascript for ListWidget*/ - $('ul.w2p_list', target).each(function () { + jQuery('ul.w2p_list', target).each(function () { function pe(ul, e) { var new_line = ml(ul); rel(ul); - if($(e.target).parent().is(':visible')) { + if(jQuery(e.target).parent().is(':visible')) { //make sure we didn't delete the element before we insert after - new_line.insertAfter($(e.target).parent()); + new_line.insertAfter(jQuery(e.target).parent()); } else { //the line we clicked on was deleted, just add to end of list new_line.appendTo(ul); @@ -108,27 +108,27 @@ } function rl(ul, e) { - if($(ul).children().length > 1) { + if(jQuery(ul).children().length > 1) { //only remove if we have more than 1 item so the list is never empty - $(e.target).parent().remove(); + jQuery(e.target).parent().remove(); } } function ml(ul) { - var line = $(ul).find("li:first").clone(true); + var line = jQuery(ul).find("li:first").clone(true); line.find(':text').val(''); return line; } function rel(ul) { - $(ul).find("li").each(function () { - var trimmed = $.trim($(this.firstChild).val()); - if(trimmed == '') $(this).remove(); - else $(this.firstChild).val(trimmed); + jQuery(ul).find("li").each(function () { + var trimmed = jQuery.trim(jQuery(this.firstChild).val()); + if(trimmed == '') jQuery(this).remove(); + else jQuery(this.firstChild).val(trimmed); }); } var ul = this; - $(ul).find(":text").after('+ -').keypress(function (e) { + jQuery(ul).find(":text").after('+ -').keypress(function (e) { return(e.which == 13) ? pe(ul, e) : true; }).next().click(function (e) { pe(ul, e); @@ -140,7 +140,7 @@ }); }, ajax_init: function (target) { - $('.hidden', target).hide(); + jQuery('.hidden', target).hide(); web2py.manage_errors(target); web2py.ajax_fields(target); web2py.show_if_handler(target); @@ -148,16 +148,16 @@ }, //manage errors in forms manage_errors: function(target) { - $('.error', target).hide().slideDown('slow'); - //$('.error', target).hide().fadeIn('slow'); + jQuery('.error', target).hide().slideDown('slow'); + //jQuery('.error', target).hide().fadeIn('slow'); }, event_handlers: function () { /* This is called once for page * Ideally it should bound all the things that are needed */ - var doc = $(document); + var doc = jQuery(document); doc.on('click', '.flash', function (e) { - var t = $(this); + var t = jQuery(this); if(t.css('top') == '0px') t.slideUp('slow'); else t.fadeOut(); //if I want to display a clickable something @@ -203,8 +203,8 @@ }, trap_form: function (action, target) { - $('#' + target + ' form').each(function (i) { - var form = $(this); + jQuery('#' + target + ' form').each(function (i) { + var form = jQuery(this); form.attr('data-w2p_target', target); if(!form.hasClass('no_trap')) { //should be there by default ? @@ -218,8 +218,8 @@ }); }, trap_link: function (target) { - $('#' + target + ' a.w2p_trap').each(function (i) { - var link = $(this); + jQuery('#' + target + ' a.w2p_trap').each(function (i) { + var link = jQuery(this); link.click(function (e) { web2py.hide_flash(); web2py.ajax_page('get', link.attr('href'), [], target); @@ -229,9 +229,9 @@ }, ajax_page: function (method, action, data, target, element) { //element is a new parameter, but should be put be put in front - if(element == undefined) element = $(document); + if(element == undefined) element = jQuery(document); if(web2py.fire(element, 'ajax:before')) { //test a usecase, should stop here if returns false - $.ajax({ + jQuery.ajax({ 'type': method, 'url': action, 'data': data, @@ -256,10 +256,10 @@ element.trigger('ajax:error', [xhr, status, error]); }, 'complete': function (xhr, status) { - element.trigger('ajax:complete', [xhr, status]); + // element.trigger('ajax:complete', [xhr, status]); var html = xhr.responseText; var content = xhr.getResponseHeader('web2py-component-content'); - var t = $('#' + target); + var t = jQuery('#' + target); if(content == 'prepend') t.prepend(html); else if(content == 'append') t.append(html); else if(content != 'hide') t.html(html); @@ -272,8 +272,8 @@ }, component: function (action, target, timeout, times, el) { //element is a new parameter, but should be put in front - $(function () { - var jelement = $("#" + target); + jQuery(function () { + var jelement = jQuery("#" + target); var element = jelement.get(0); var statement = "jQuery('#" + target + "').get(0).reload();"; element.reload = function () { @@ -405,13 +405,13 @@ enableSelector: 'input:disabled, button:disabled, textarea:disabled, select:disabled', // Triggers an event on an element and returns false if the event result is false fire: function (obj, name, data) { - var event = $.Event(name); + var event = jQuery.Event(name); obj.trigger(event, data); return event.result !== false; }, // Helper function, needed to provide consistent behavior in IE stopEverything: function (e) { - $(e.target).trigger('w2p:everythingStopped'); + jQuery(e.target).trigger('w2p:everythingStopped'); e.stopImmediatePropagation(); return false; }, @@ -454,46 +454,46 @@ }, //helper for flash messages flash: function(message, status) { - var flash = $('.flash'); + var flash = jQuery('.flash'); web2py.hide_flash(); flash.html(message).addClass(status); if(flash.html()) flash.append(' × ').slideDown(); }, hide_flash: function() { - $('.flash').hide().html(''); + jQuery('.flash').hide().html(''); }, show_if_handler: function(target) { var triggers = {}; var show_if = function () { - var t = $(this); + var t = jQuery(this); var id = t.attr('id'); t.attr('value', t.val()); for(var k = 0; k < triggers[id].length; k++) { - var dep = $('#' + triggers[id][k], target); - var tr = $('#' + triggers[id][k] + '__row', target); + var dep = jQuery('#' + triggers[id][k], target); + var tr = jQuery('#' + triggers[id][k] + '__row', target); if(t.is(dep.attr('data-show-if'))) tr.slideDown(); else tr.hide(); } }; - $('[data-show-trigger]', target).each(function () { - var name = $(this).attr('data-show-trigger'); + jQuery('[data-show-trigger]', target).each(function () { + var name = jQuery(this).attr('data-show-trigger'); if(!triggers[name]) triggers[name] = []; - triggers[name].push($(this).attr('id')); + triggers[name].push(jQuery(this).attr('id')); }); for(var name in triggers) { - $('#' + name, target).change(show_if).keyup(show_if); - show_if.call($('#' + name, target)); + jQuery('#' + name, target).change(show_if).keyup(show_if); + show_if.call(jQuery('#' + name, target)); }; }, component_handler : function (target) { - $('div[data-w2p_remote]', target).each(function () { + jQuery('div[data-w2p_remote]', target).each(function () { var remote, times, timeout, target; - var el = $(this); + var el = jQuery(this); remote = el.data('w2p_remote'); times = el.data('w2p_times'); timeout = el.data('w2p_timeout'); target = el.attr('id'); - web2py.component(remote, target, timeout, times, $(this)); + web2py.component(remote, target, timeout, times, jQuery(this)); } ) }, @@ -539,36 +539,36 @@ toremove = el.closest(toremove); if(!toremove.length) { //this enables removal of whatever selector if a closest is not found - toremove = $(toremove); + toremove = jQuery(toremove); } toremove.remove(); } /* removal code moved to the ajax:success event - END */ }, a_handlers: function () { - var el = $(document); + var el = jQuery(document); el.on('click', 'a[data-w2p_method]', function (e) { - web2py.a_handler($(this), e); + web2py.a_handler(jQuery(this), e); }); /* removal of element should happen only on success */ el.on('ajax:success', 'a[data-w2p_method][data-w2p_remove]', function (e) { - var el = $(this); + var el = jQuery(this); var toremove = el.data('w2p_remove'); if(toremove != undefined) { toremove = el.closest(toremove); if(!toremove.length) { //this enables removal of whatever selector if a closest is not found - toremove = $(toremove); + toremove = jQuery(toremove); } toremove.remove(); } }); el.on('ajax:beforeSend', 'a[data-w2p_method][data-w2p_disable_with]', function (e) { - web2py.disableElement($(this)); + web2py.disableElement(jQuery(this)); }); /*re-enable click on completion*/ el.on('ajax:complete', 'a[data-w2p_method][data-w2p_disable_with]', function (e) { - web2py.enableElement($(this)); + web2py.enableElement(jQuery(this)); }); }, /* Disables form elements: @@ -578,7 +578,7 @@ */ disableFormElements: function(form) { form.find(web2py.disableSelector).each(function() { - var element = $(this), method = element.is('button') ? 'html' : 'val'; + var element = jQuery(this), method = element.is('button') ? 'html' : 'val'; var disable_with = element.data('w2p_disable_with'); if (disable_with == undefined) { element.data('w2p_disable_with', element[method]()) @@ -595,26 +595,26 @@ */ enableFormElements: function(form) { form.find(web2py.enableSelector).each(function() { - var element = $(this), method = element.is('button') ? 'html' : 'val'; + var element = jQuery(this), method = element.is('button') ? 'html' : 'val'; if (element.data('w2p:enable-with')) element[method](element.data('w2p:enable-with')); element.prop('disabled', false); }); }, form_handlers: function() { - var el = $(document); + var el = jQuery(document); el.on('ajax:beforeSend', 'form[data-w2p_target]', function (e) { - web2py.disableFormElements($(this)); + web2py.disableFormElements(jQuery(this)); }); el.on('ajax:complete', 'form[data-w2p_target]', function (e) { - web2py.enableFormElements($(this)); + web2py.enableFormElements(jQuery(this)); }); } } //end of functions //main hook - $(function () { - var flash = $('.flash'); + jQuery(function () { + var flash = jQuery('.flash'); flash.hide(); if(flash.html()) web2py.flash(flash.html()); web2py.ajax_init(document); @@ -626,28 +626,28 @@ })(jQuery); /* compatibility code - start */ -ajax = $.web2py.ajax; -web2py_component = $.web2py.component; -web2py_websocket = $.web2py.websocket; -web2py_ajax_page = $.web2py.ajax_page; +ajax = jQuery.web2py.ajax; +web2py_component = jQuery.web2py.component; +web2py_websocket = jQuery.web2py.websocket; +web2py_ajax_page = jQuery.web2py.ajax_page; //needed for IS_STRONG(entropy) -web2py_validate_entropy = $.web2py.validate_entropy; +web2py_validate_entropy = jQuery.web2py.validate_entropy; //needed for crud.search and SQLFORM.grid's search -web2py_ajax_fields = $.web2py.ajax_fields; +web2py_ajax_fields = jQuery.web2py.ajax_fields; //used for LOAD(ajax=False) -web2py_trap_form = $.web2py.trap_form; +web2py_trap_form = jQuery.web2py.trap_form; /*undocumented - rare*/ -popup = $.web2py.popup; -collapse = $.web2py.collapse; -fade = $.web2py.fade; +popup = jQuery.web2py.popup; +collapse = jQuery.web2py.collapse; +fade = jQuery.web2py.fade; /* internals - shouldn't be needed -web2py_ajax_init = $.web2py.ajax_init; -web2py_event_handlers = $.web2py.event_handlers; +web2py_ajax_init = jQuery.web2py.ajax_init; +web2py_event_handlers = jQuery.web2py.event_handlers; -web2py_trap_link = $.web2py.trap_link; -web2py_calc_entropy = $.web2py.calc_entropy; +web2py_trap_link = jQuery.web2py.trap_link; +web2py_calc_entropy = jQuery.web2py.calc_entropy; */ /* compatibility code - end*/ diff --git a/gluon/dal.py b/gluon/dal.py index f2592868..10351c24 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -10308,7 +10308,7 @@ class Rows(object): if i is None: return (self.repr(i, fields=fields) for i in range(len(self))) import sqlhtml - row = copy.copy(self.records[i]) + row = copy.deepcopy(self.records[i]) keys = row.keys() tables = [f.tablename for f in fields] if fields \ else [k for k in keys if k != '_extra'] diff --git a/gluon/html.py b/gluon/html.py index 91bff05e..34f00597 100644 --- a/gluon/html.py +++ b/gluon/html.py @@ -1481,9 +1481,13 @@ class A(DIV): self.append(self['_href']) if not self['_disable_with']: self['_data-w2p_disable_with'] = 'default' + if self['callback'] and not self['_id']: + self['_id'] = web2py_uuid() if self['delete']: self['_data-w2p_remove'] = self['delete'] if self['target']: + if self['target'] == '': + self['target'] = self['_id'] self['_data-w2p_target'] = self['target'] if self['component']: self['_data-w2p_method'] = 'GET' From 2888983036dccd95c523c503f38986d814f68ead Mon Sep 17 00:00:00 2001 From: mdipierro Date: Sat, 6 Jul 2013 16:06:25 -0500 Subject: [PATCH 03/35] fixed issue Issue 1549:signature of original link is lost after successful login, thanks Oleb Butovich --- VERSION | 2 +- gluon/tools.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index 9d7d683b..f8a3f3e4 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.6.0-development+timestamp.2013.07.06.16.03.42 +Version 2.6.0-development+timestamp.2013.07.06.16.05.45 diff --git a/gluon/tools.py b/gluon/tools.py index 45a0d196..b47b21f8 100644 --- a/gluon/tools.py +++ b/gluon/tools.py @@ -1116,7 +1116,7 @@ class Auth(object): f=f, args=args, vars=vars, scheme=scheme) def here(self): - return URL(args=current.request.args, vars=current.request.vars) + return current.request.env.request_uri def __init__(self, environment=None, db=None, mailer=True, hmac_key=None, controller='default', function='user', From e7565845a01b862f91ca275c84933b6c4293c498 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Sun, 7 Jul 2013 12:25:31 -0500 Subject: [PATCH 04/35] fixed problem with web2py.js, thanks Niphlod --- VERSION | 2 +- applications/admin/static/js/web2py.js | 174 +++++++++++----------- applications/examples/static/js/web2py.js | 174 +++++++++++----------- applications/welcome/static/js/web2py.js | 4 +- 4 files changed, 177 insertions(+), 177 deletions(-) diff --git a/VERSION b/VERSION index f8a3f3e4..da940884 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.6.0-development+timestamp.2013.07.06.16.05.45 +Version 2.6.0-development+timestamp.2013.07.07.12.24.46 diff --git a/applications/admin/static/js/web2py.js b/applications/admin/static/js/web2py.js index c7570263..76515550 100644 --- a/applications/admin/static/js/web2py.js +++ b/applications/admin/static/js/web2py.js @@ -1,4 +1,4 @@ -(function ($, undefined) { +(function (jQuery, undefined) { /* * Unobtrusive scripting adapter for jQuery, largely taken from * the wonderful https://github.com/rails/jquery-ujs @@ -13,7 +13,7 @@ }; var web2py; - $.web2py = web2py = { + jQuery.web2py = web2py = { popup: function (url) { newwindow = window.open(url, 'name', 'height=400,width=600'); @@ -21,23 +21,23 @@ return false; }, collapse: function (id) { - $('#' + id).slideToggle(); + jQuery('#' + id).slideToggle(); }, fade: function (id, value) { - if(value > 0) $('#' + id).hide().fadeIn('slow'); - else $('#' + id).show().fadeOut('slow'); + if(value > 0) jQuery('#' + id).hide().fadeIn('slow'); + else jQuery('#' + id).show().fadeOut('slow'); }, ajax: function (u, s, t) { query = ''; if(typeof s == "string") { - d = $(s).serialize(); + d = jQuery(s).serialize(); if(d) { query = d; } } else { pcs = []; if(s != null && s != undefined) for(i = 0; i < s.length; i++) { - q = $("[name=" + s[i] + "]").serialize(); + q = jQuery("[name=" + s[i] + "]").serialize(); if(q) { pcs.push(q); } @@ -46,14 +46,14 @@ query = pcs.join("&"); } } - $.ajax({ + jQuery.ajax({ type: "POST", url: u, data: query, success: function (msg) { if(t) { if(t == ':eval') eval(msg); - else if(typeof t == 'string') $("#" + t).html(msg); + else if(typeof t == 'string') jQuery("#" + t).html(msg); else t(msg); } } @@ -66,14 +66,14 @@ */ var date_format = (typeof w2p_ajax_date_format != 'undefined') ? w2p_ajax_date_format : "%Y-%m-%d"; var datetime_format = (typeof w2p_ajax_datetime_format != 'undefined') ? w2p_ajax_datetime_format : "%Y-%m-%d %H:%M:%S"; - $("input.date", target).each(function () { + jQuery("input.date", target).each(function () { Calendar.setup({ inputField: this, ifFormat: date_format, showsTime: false }); }); - $("input.datetime", target).each(function () { + jQuery("input.datetime", target).each(function () { Calendar.setup({ inputField: this, ifFormat: datetime_format, @@ -81,24 +81,24 @@ timeFormat: "24" }); }); - $("input.time", target).each(function () { - $(this).timeEntry(); + jQuery("input.time", target).each(function () { + jQuery(this).timeEntry(); }); /*adds btn class to buttons*/ - $('button', target).addClass('btn'); - $('form input[type="submit"], form input[type="button"]', target).addClass('btn'); + jQuery('button', target).addClass('btn'); + jQuery('form input[type="submit"], form input[type="button"]', target).addClass('btn'); /*no more inline javascript for PasswordWidget*/ - $('input[type=password][data-w2p_entropy]', target).each(function () { - web2py.validate_entropy($(this)); + jQuery('input[type=password][data-w2p_entropy]', target).each(function () { + web2py.validate_entropy(jQuery(this)); }); /*no more inline javascript for ListWidget*/ - $('ul.w2p_list', target).each(function () { + jQuery('ul.w2p_list', target).each(function () { function pe(ul, e) { var new_line = ml(ul); rel(ul); - if($(e.target).parent().is(':visible')) { + if(jQuery(e.target).parent().is(':visible')) { //make sure we didn't delete the element before we insert after - new_line.insertAfter($(e.target).parent()); + new_line.insertAfter(jQuery(e.target).parent()); } else { //the line we clicked on was deleted, just add to end of list new_line.appendTo(ul); @@ -108,27 +108,27 @@ } function rl(ul, e) { - if($(ul).children().length > 1) { + if(jQuery(ul).children().length > 1) { //only remove if we have more than 1 item so the list is never empty - $(e.target).parent().remove(); + jQuery(e.target).parent().remove(); } } function ml(ul) { - var line = $(ul).find("li:first").clone(true); + var line = jQuery(ul).find("li:first").clone(true); line.find(':text').val(''); return line; } function rel(ul) { - $(ul).find("li").each(function () { - var trimmed = $.trim($(this.firstChild).val()); - if(trimmed == '') $(this).remove(); - else $(this.firstChild).val(trimmed); + jQuery(ul).find("li").each(function () { + var trimmed = jQuery.trim(jQuery(this.firstChild).val()); + if(trimmed == '') jQuery(this).remove(); + else jQuery(this.firstChild).val(trimmed); }); } var ul = this; - $(ul).find(":text").after('+ -').keypress(function (e) { + jQuery(ul).find(":text").after('+ -').keypress(function (e) { return(e.which == 13) ? pe(ul, e) : true; }).next().click(function (e) { pe(ul, e); @@ -140,7 +140,7 @@ }); }, ajax_init: function (target) { - $('.hidden', target).hide(); + jQuery('.hidden', target).hide(); web2py.manage_errors(target); web2py.ajax_fields(target); web2py.show_if_handler(target); @@ -148,16 +148,16 @@ }, //manage errors in forms manage_errors: function(target) { - $('.error', target).hide().slideDown('slow'); - //$('.error', target).hide().fadeIn('slow'); + jQuery('.error', target).hide().slideDown('slow'); + //jQuery('.error', target).hide().fadeIn('slow'); }, event_handlers: function () { /* This is called once for page * Ideally it should bound all the things that are needed */ - var doc = $(document); + var doc = jQuery(document); doc.on('click', '.flash', function (e) { - var t = $(this); + var t = jQuery(this); if(t.css('top') == '0px') t.slideUp('slow'); else t.fadeOut(); //if I want to display a clickable something @@ -203,8 +203,8 @@ }, trap_form: function (action, target) { - $('#' + target + ' form').each(function (i) { - var form = $(this); + jQuery('#' + target + ' form').each(function (i) { + var form = jQuery(this); form.attr('data-w2p_target', target); if(!form.hasClass('no_trap')) { //should be there by default ? @@ -218,8 +218,8 @@ }); }, trap_link: function (target) { - $('#' + target + ' a.w2p_trap').each(function (i) { - var link = $(this); + jQuery('#' + target + ' a.w2p_trap').each(function (i) { + var link = jQuery(this); link.click(function (e) { web2py.hide_flash(); web2py.ajax_page('get', link.attr('href'), [], target); @@ -229,9 +229,9 @@ }, ajax_page: function (method, action, data, target, element) { //element is a new parameter, but should be put be put in front - if(element == undefined) element = $(document); + if(element == undefined) element = jQuery(document); if(web2py.fire(element, 'ajax:before')) { //test a usecase, should stop here if returns false - $.ajax({ + jQuery.ajax({ 'type': method, 'url': action, 'data': data, @@ -256,10 +256,10 @@ element.trigger('ajax:error', [xhr, status, error]); }, 'complete': function (xhr, status) { - element.trigger('ajax:complete', [xhr, status]); + element.trigger('ajax:complete', [xhr, status]); var html = xhr.responseText; var content = xhr.getResponseHeader('web2py-component-content'); - var t = $('#' + target); + var t = jQuery('#' + target); if(content == 'prepend') t.prepend(html); else if(content == 'append') t.append(html); else if(content != 'hide') t.html(html); @@ -272,8 +272,8 @@ }, component: function (action, target, timeout, times, el) { //element is a new parameter, but should be put in front - $(function () { - var jelement = $("#" + target); + jQuery(function () { + var jelement = jQuery("#" + target); var element = jelement.get(0); var statement = "jQuery('#" + target + "').get(0).reload();"; element.reload = function () { @@ -405,13 +405,13 @@ enableSelector: 'input:disabled, button:disabled, textarea:disabled, select:disabled', // Triggers an event on an element and returns false if the event result is false fire: function (obj, name, data) { - var event = $.Event(name); + var event = jQuery.Event(name); obj.trigger(event, data); return event.result !== false; }, // Helper function, needed to provide consistent behavior in IE stopEverything: function (e) { - $(e.target).trigger('w2p:everythingStopped'); + jQuery(e.target).trigger('w2p:everythingStopped'); e.stopImmediatePropagation(); return false; }, @@ -424,7 +424,7 @@ el.addClass('disabled'); var method = el.prop('type') == 'submit' ? 'val' : 'html'; // store enabled state - el.data('w2p:enable-with', el[method]); + el.data('w2p:enable-with', el[method]()); /* little addition by default*/ if((el.data('w2p_disable_with') == 'default') || (el.data('w2p_disable_with') === undefined)) { el.data('w2p_disable_with', 'Working...'); @@ -454,46 +454,46 @@ }, //helper for flash messages flash: function(message, status) { - var flash = $('.flash'); + var flash = jQuery('.flash'); web2py.hide_flash(); flash.html(message).addClass(status); if(flash.html()) flash.append(' × ').slideDown(); }, hide_flash: function() { - $('.flash').hide().html(''); + jQuery('.flash').hide().html(''); }, show_if_handler: function(target) { var triggers = {}; var show_if = function () { - var t = $(this); + var t = jQuery(this); var id = t.attr('id'); t.attr('value', t.val()); for(var k = 0; k < triggers[id].length; k++) { - var dep = $('#' + triggers[id][k], target); - var tr = $('#' + triggers[id][k] + '__row', target); + var dep = jQuery('#' + triggers[id][k], target); + var tr = jQuery('#' + triggers[id][k] + '__row', target); if(t.is(dep.attr('data-show-if'))) tr.slideDown(); else tr.hide(); } }; - $('[data-show-trigger]', target).each(function () { - var name = $(this).attr('data-show-trigger'); + jQuery('[data-show-trigger]', target).each(function () { + var name = jQuery(this).attr('data-show-trigger'); if(!triggers[name]) triggers[name] = []; - triggers[name].push($(this).attr('id')); + triggers[name].push(jQuery(this).attr('id')); }); for(var name in triggers) { - $('#' + name, target).change(show_if).keyup(show_if); - show_if.call($('#' + name, target)); + jQuery('#' + name, target).change(show_if).keyup(show_if); + show_if.call(jQuery('#' + name, target)); }; }, component_handler : function (target) { - $('div[data-w2p_remote]', target).each(function () { + jQuery('div[data-w2p_remote]', target).each(function () { var remote, times, timeout, target; - var el = $(this); + var el = jQuery(this); remote = el.data('w2p_remote'); times = el.data('w2p_times'); timeout = el.data('w2p_timeout'); target = el.attr('id'); - web2py.component(remote, target, timeout, times, $(this)); + web2py.component(remote, target, timeout, times, jQuery(this)); } ) }, @@ -539,36 +539,36 @@ toremove = el.closest(toremove); if(!toremove.length) { //this enables removal of whatever selector if a closest is not found - toremove = $(toremove); + toremove = jQuery(toremove); } toremove.remove(); } /* removal code moved to the ajax:success event - END */ }, a_handlers: function () { - var el = $(document); + var el = jQuery(document); el.on('click', 'a[data-w2p_method]', function (e) { - web2py.a_handler($(this), e); + web2py.a_handler(jQuery(this), e); }); /* removal of element should happen only on success */ el.on('ajax:success', 'a[data-w2p_method][data-w2p_remove]', function (e) { - var el = $(this); + var el = jQuery(this); var toremove = el.data('w2p_remove'); if(toremove != undefined) { toremove = el.closest(toremove); if(!toremove.length) { //this enables removal of whatever selector if a closest is not found - toremove = $(toremove); + toremove = jQuery(toremove); } toremove.remove(); } }); el.on('ajax:beforeSend', 'a[data-w2p_method][data-w2p_disable_with]', function (e) { - web2py.disableElement($(this)); + web2py.disableElement(jQuery(this)); }); /*re-enable click on completion*/ el.on('ajax:complete', 'a[data-w2p_method][data-w2p_disable_with]', function (e) { - web2py.enableElement($(this)); + web2py.enableElement(jQuery(this)); }); }, /* Disables form elements: @@ -578,7 +578,7 @@ */ disableFormElements: function(form) { form.find(web2py.disableSelector).each(function() { - var element = $(this), method = element.is('button') ? 'html' : 'val'; + var element = jQuery(this), method = element.is('button') ? 'html' : 'val'; var disable_with = element.data('w2p_disable_with'); if (disable_with == undefined) { element.data('w2p_disable_with', element[method]()) @@ -595,26 +595,26 @@ */ enableFormElements: function(form) { form.find(web2py.enableSelector).each(function() { - var element = $(this), method = element.is('button') ? 'html' : 'val'; + var element = jQuery(this), method = element.is('button') ? 'html' : 'val'; if (element.data('w2p:enable-with')) element[method](element.data('w2p:enable-with')); element.prop('disabled', false); }); }, form_handlers: function() { - var el = $(document); + var el = jQuery(document); el.on('ajax:beforeSend', 'form[data-w2p_target]', function (e) { - web2py.disableFormElements($(this)); + web2py.disableFormElements(jQuery(this)); }); el.on('ajax:complete', 'form[data-w2p_target]', function (e) { - web2py.enableFormElements($(this)); + web2py.enableFormElements(jQuery(this)); }); } } //end of functions //main hook - $(function () { - var flash = $('.flash'); + jQuery(function () { + var flash = jQuery('.flash'); flash.hide(); if(flash.html()) web2py.flash(flash.html()); web2py.ajax_init(document); @@ -626,28 +626,28 @@ })(jQuery); /* compatibility code - start */ -ajax = $.web2py.ajax; -web2py_component = $.web2py.component; -web2py_websocket = $.web2py.websocket; -web2py_ajax_page = $.web2py.ajax_page; +ajax = jQuery.web2py.ajax; +web2py_component = jQuery.web2py.component; +web2py_websocket = jQuery.web2py.websocket; +web2py_ajax_page = jQuery.web2py.ajax_page; //needed for IS_STRONG(entropy) -web2py_validate_entropy = $.web2py.validate_entropy; +web2py_validate_entropy = jQuery.web2py.validate_entropy; //needed for crud.search and SQLFORM.grid's search -web2py_ajax_fields = $.web2py.ajax_fields; +web2py_ajax_fields = jQuery.web2py.ajax_fields; //used for LOAD(ajax=False) -web2py_trap_form = $.web2py.trap_form; +web2py_trap_form = jQuery.web2py.trap_form; /*undocumented - rare*/ -popup = $.web2py.popup; -collapse = $.web2py.collapse; -fade = $.web2py.fade; +popup = jQuery.web2py.popup; +collapse = jQuery.web2py.collapse; +fade = jQuery.web2py.fade; /* internals - shouldn't be needed -web2py_ajax_init = $.web2py.ajax_init; -web2py_event_handlers = $.web2py.event_handlers; +web2py_ajax_init = jQuery.web2py.ajax_init; +web2py_event_handlers = jQuery.web2py.event_handlers; -web2py_trap_link = $.web2py.trap_link; -web2py_calc_entropy = $.web2py.calc_entropy; +web2py_trap_link = jQuery.web2py.trap_link; +web2py_calc_entropy = jQuery.web2py.calc_entropy; */ /* compatibility code - end*/ diff --git a/applications/examples/static/js/web2py.js b/applications/examples/static/js/web2py.js index c7570263..76515550 100644 --- a/applications/examples/static/js/web2py.js +++ b/applications/examples/static/js/web2py.js @@ -1,4 +1,4 @@ -(function ($, undefined) { +(function (jQuery, undefined) { /* * Unobtrusive scripting adapter for jQuery, largely taken from * the wonderful https://github.com/rails/jquery-ujs @@ -13,7 +13,7 @@ }; var web2py; - $.web2py = web2py = { + jQuery.web2py = web2py = { popup: function (url) { newwindow = window.open(url, 'name', 'height=400,width=600'); @@ -21,23 +21,23 @@ return false; }, collapse: function (id) { - $('#' + id).slideToggle(); + jQuery('#' + id).slideToggle(); }, fade: function (id, value) { - if(value > 0) $('#' + id).hide().fadeIn('slow'); - else $('#' + id).show().fadeOut('slow'); + if(value > 0) jQuery('#' + id).hide().fadeIn('slow'); + else jQuery('#' + id).show().fadeOut('slow'); }, ajax: function (u, s, t) { query = ''; if(typeof s == "string") { - d = $(s).serialize(); + d = jQuery(s).serialize(); if(d) { query = d; } } else { pcs = []; if(s != null && s != undefined) for(i = 0; i < s.length; i++) { - q = $("[name=" + s[i] + "]").serialize(); + q = jQuery("[name=" + s[i] + "]").serialize(); if(q) { pcs.push(q); } @@ -46,14 +46,14 @@ query = pcs.join("&"); } } - $.ajax({ + jQuery.ajax({ type: "POST", url: u, data: query, success: function (msg) { if(t) { if(t == ':eval') eval(msg); - else if(typeof t == 'string') $("#" + t).html(msg); + else if(typeof t == 'string') jQuery("#" + t).html(msg); else t(msg); } } @@ -66,14 +66,14 @@ */ var date_format = (typeof w2p_ajax_date_format != 'undefined') ? w2p_ajax_date_format : "%Y-%m-%d"; var datetime_format = (typeof w2p_ajax_datetime_format != 'undefined') ? w2p_ajax_datetime_format : "%Y-%m-%d %H:%M:%S"; - $("input.date", target).each(function () { + jQuery("input.date", target).each(function () { Calendar.setup({ inputField: this, ifFormat: date_format, showsTime: false }); }); - $("input.datetime", target).each(function () { + jQuery("input.datetime", target).each(function () { Calendar.setup({ inputField: this, ifFormat: datetime_format, @@ -81,24 +81,24 @@ timeFormat: "24" }); }); - $("input.time", target).each(function () { - $(this).timeEntry(); + jQuery("input.time", target).each(function () { + jQuery(this).timeEntry(); }); /*adds btn class to buttons*/ - $('button', target).addClass('btn'); - $('form input[type="submit"], form input[type="button"]', target).addClass('btn'); + jQuery('button', target).addClass('btn'); + jQuery('form input[type="submit"], form input[type="button"]', target).addClass('btn'); /*no more inline javascript for PasswordWidget*/ - $('input[type=password][data-w2p_entropy]', target).each(function () { - web2py.validate_entropy($(this)); + jQuery('input[type=password][data-w2p_entropy]', target).each(function () { + web2py.validate_entropy(jQuery(this)); }); /*no more inline javascript for ListWidget*/ - $('ul.w2p_list', target).each(function () { + jQuery('ul.w2p_list', target).each(function () { function pe(ul, e) { var new_line = ml(ul); rel(ul); - if($(e.target).parent().is(':visible')) { + if(jQuery(e.target).parent().is(':visible')) { //make sure we didn't delete the element before we insert after - new_line.insertAfter($(e.target).parent()); + new_line.insertAfter(jQuery(e.target).parent()); } else { //the line we clicked on was deleted, just add to end of list new_line.appendTo(ul); @@ -108,27 +108,27 @@ } function rl(ul, e) { - if($(ul).children().length > 1) { + if(jQuery(ul).children().length > 1) { //only remove if we have more than 1 item so the list is never empty - $(e.target).parent().remove(); + jQuery(e.target).parent().remove(); } } function ml(ul) { - var line = $(ul).find("li:first").clone(true); + var line = jQuery(ul).find("li:first").clone(true); line.find(':text').val(''); return line; } function rel(ul) { - $(ul).find("li").each(function () { - var trimmed = $.trim($(this.firstChild).val()); - if(trimmed == '') $(this).remove(); - else $(this.firstChild).val(trimmed); + jQuery(ul).find("li").each(function () { + var trimmed = jQuery.trim(jQuery(this.firstChild).val()); + if(trimmed == '') jQuery(this).remove(); + else jQuery(this.firstChild).val(trimmed); }); } var ul = this; - $(ul).find(":text").after('+ -').keypress(function (e) { + jQuery(ul).find(":text").after('+ -').keypress(function (e) { return(e.which == 13) ? pe(ul, e) : true; }).next().click(function (e) { pe(ul, e); @@ -140,7 +140,7 @@ }); }, ajax_init: function (target) { - $('.hidden', target).hide(); + jQuery('.hidden', target).hide(); web2py.manage_errors(target); web2py.ajax_fields(target); web2py.show_if_handler(target); @@ -148,16 +148,16 @@ }, //manage errors in forms manage_errors: function(target) { - $('.error', target).hide().slideDown('slow'); - //$('.error', target).hide().fadeIn('slow'); + jQuery('.error', target).hide().slideDown('slow'); + //jQuery('.error', target).hide().fadeIn('slow'); }, event_handlers: function () { /* This is called once for page * Ideally it should bound all the things that are needed */ - var doc = $(document); + var doc = jQuery(document); doc.on('click', '.flash', function (e) { - var t = $(this); + var t = jQuery(this); if(t.css('top') == '0px') t.slideUp('slow'); else t.fadeOut(); //if I want to display a clickable something @@ -203,8 +203,8 @@ }, trap_form: function (action, target) { - $('#' + target + ' form').each(function (i) { - var form = $(this); + jQuery('#' + target + ' form').each(function (i) { + var form = jQuery(this); form.attr('data-w2p_target', target); if(!form.hasClass('no_trap')) { //should be there by default ? @@ -218,8 +218,8 @@ }); }, trap_link: function (target) { - $('#' + target + ' a.w2p_trap').each(function (i) { - var link = $(this); + jQuery('#' + target + ' a.w2p_trap').each(function (i) { + var link = jQuery(this); link.click(function (e) { web2py.hide_flash(); web2py.ajax_page('get', link.attr('href'), [], target); @@ -229,9 +229,9 @@ }, ajax_page: function (method, action, data, target, element) { //element is a new parameter, but should be put be put in front - if(element == undefined) element = $(document); + if(element == undefined) element = jQuery(document); if(web2py.fire(element, 'ajax:before')) { //test a usecase, should stop here if returns false - $.ajax({ + jQuery.ajax({ 'type': method, 'url': action, 'data': data, @@ -256,10 +256,10 @@ element.trigger('ajax:error', [xhr, status, error]); }, 'complete': function (xhr, status) { - element.trigger('ajax:complete', [xhr, status]); + element.trigger('ajax:complete', [xhr, status]); var html = xhr.responseText; var content = xhr.getResponseHeader('web2py-component-content'); - var t = $('#' + target); + var t = jQuery('#' + target); if(content == 'prepend') t.prepend(html); else if(content == 'append') t.append(html); else if(content != 'hide') t.html(html); @@ -272,8 +272,8 @@ }, component: function (action, target, timeout, times, el) { //element is a new parameter, but should be put in front - $(function () { - var jelement = $("#" + target); + jQuery(function () { + var jelement = jQuery("#" + target); var element = jelement.get(0); var statement = "jQuery('#" + target + "').get(0).reload();"; element.reload = function () { @@ -405,13 +405,13 @@ enableSelector: 'input:disabled, button:disabled, textarea:disabled, select:disabled', // Triggers an event on an element and returns false if the event result is false fire: function (obj, name, data) { - var event = $.Event(name); + var event = jQuery.Event(name); obj.trigger(event, data); return event.result !== false; }, // Helper function, needed to provide consistent behavior in IE stopEverything: function (e) { - $(e.target).trigger('w2p:everythingStopped'); + jQuery(e.target).trigger('w2p:everythingStopped'); e.stopImmediatePropagation(); return false; }, @@ -424,7 +424,7 @@ el.addClass('disabled'); var method = el.prop('type') == 'submit' ? 'val' : 'html'; // store enabled state - el.data('w2p:enable-with', el[method]); + el.data('w2p:enable-with', el[method]()); /* little addition by default*/ if((el.data('w2p_disable_with') == 'default') || (el.data('w2p_disable_with') === undefined)) { el.data('w2p_disable_with', 'Working...'); @@ -454,46 +454,46 @@ }, //helper for flash messages flash: function(message, status) { - var flash = $('.flash'); + var flash = jQuery('.flash'); web2py.hide_flash(); flash.html(message).addClass(status); if(flash.html()) flash.append(' × ').slideDown(); }, hide_flash: function() { - $('.flash').hide().html(''); + jQuery('.flash').hide().html(''); }, show_if_handler: function(target) { var triggers = {}; var show_if = function () { - var t = $(this); + var t = jQuery(this); var id = t.attr('id'); t.attr('value', t.val()); for(var k = 0; k < triggers[id].length; k++) { - var dep = $('#' + triggers[id][k], target); - var tr = $('#' + triggers[id][k] + '__row', target); + var dep = jQuery('#' + triggers[id][k], target); + var tr = jQuery('#' + triggers[id][k] + '__row', target); if(t.is(dep.attr('data-show-if'))) tr.slideDown(); else tr.hide(); } }; - $('[data-show-trigger]', target).each(function () { - var name = $(this).attr('data-show-trigger'); + jQuery('[data-show-trigger]', target).each(function () { + var name = jQuery(this).attr('data-show-trigger'); if(!triggers[name]) triggers[name] = []; - triggers[name].push($(this).attr('id')); + triggers[name].push(jQuery(this).attr('id')); }); for(var name in triggers) { - $('#' + name, target).change(show_if).keyup(show_if); - show_if.call($('#' + name, target)); + jQuery('#' + name, target).change(show_if).keyup(show_if); + show_if.call(jQuery('#' + name, target)); }; }, component_handler : function (target) { - $('div[data-w2p_remote]', target).each(function () { + jQuery('div[data-w2p_remote]', target).each(function () { var remote, times, timeout, target; - var el = $(this); + var el = jQuery(this); remote = el.data('w2p_remote'); times = el.data('w2p_times'); timeout = el.data('w2p_timeout'); target = el.attr('id'); - web2py.component(remote, target, timeout, times, $(this)); + web2py.component(remote, target, timeout, times, jQuery(this)); } ) }, @@ -539,36 +539,36 @@ toremove = el.closest(toremove); if(!toremove.length) { //this enables removal of whatever selector if a closest is not found - toremove = $(toremove); + toremove = jQuery(toremove); } toremove.remove(); } /* removal code moved to the ajax:success event - END */ }, a_handlers: function () { - var el = $(document); + var el = jQuery(document); el.on('click', 'a[data-w2p_method]', function (e) { - web2py.a_handler($(this), e); + web2py.a_handler(jQuery(this), e); }); /* removal of element should happen only on success */ el.on('ajax:success', 'a[data-w2p_method][data-w2p_remove]', function (e) { - var el = $(this); + var el = jQuery(this); var toremove = el.data('w2p_remove'); if(toremove != undefined) { toremove = el.closest(toremove); if(!toremove.length) { //this enables removal of whatever selector if a closest is not found - toremove = $(toremove); + toremove = jQuery(toremove); } toremove.remove(); } }); el.on('ajax:beforeSend', 'a[data-w2p_method][data-w2p_disable_with]', function (e) { - web2py.disableElement($(this)); + web2py.disableElement(jQuery(this)); }); /*re-enable click on completion*/ el.on('ajax:complete', 'a[data-w2p_method][data-w2p_disable_with]', function (e) { - web2py.enableElement($(this)); + web2py.enableElement(jQuery(this)); }); }, /* Disables form elements: @@ -578,7 +578,7 @@ */ disableFormElements: function(form) { form.find(web2py.disableSelector).each(function() { - var element = $(this), method = element.is('button') ? 'html' : 'val'; + var element = jQuery(this), method = element.is('button') ? 'html' : 'val'; var disable_with = element.data('w2p_disable_with'); if (disable_with == undefined) { element.data('w2p_disable_with', element[method]()) @@ -595,26 +595,26 @@ */ enableFormElements: function(form) { form.find(web2py.enableSelector).each(function() { - var element = $(this), method = element.is('button') ? 'html' : 'val'; + var element = jQuery(this), method = element.is('button') ? 'html' : 'val'; if (element.data('w2p:enable-with')) element[method](element.data('w2p:enable-with')); element.prop('disabled', false); }); }, form_handlers: function() { - var el = $(document); + var el = jQuery(document); el.on('ajax:beforeSend', 'form[data-w2p_target]', function (e) { - web2py.disableFormElements($(this)); + web2py.disableFormElements(jQuery(this)); }); el.on('ajax:complete', 'form[data-w2p_target]', function (e) { - web2py.enableFormElements($(this)); + web2py.enableFormElements(jQuery(this)); }); } } //end of functions //main hook - $(function () { - var flash = $('.flash'); + jQuery(function () { + var flash = jQuery('.flash'); flash.hide(); if(flash.html()) web2py.flash(flash.html()); web2py.ajax_init(document); @@ -626,28 +626,28 @@ })(jQuery); /* compatibility code - start */ -ajax = $.web2py.ajax; -web2py_component = $.web2py.component; -web2py_websocket = $.web2py.websocket; -web2py_ajax_page = $.web2py.ajax_page; +ajax = jQuery.web2py.ajax; +web2py_component = jQuery.web2py.component; +web2py_websocket = jQuery.web2py.websocket; +web2py_ajax_page = jQuery.web2py.ajax_page; //needed for IS_STRONG(entropy) -web2py_validate_entropy = $.web2py.validate_entropy; +web2py_validate_entropy = jQuery.web2py.validate_entropy; //needed for crud.search and SQLFORM.grid's search -web2py_ajax_fields = $.web2py.ajax_fields; +web2py_ajax_fields = jQuery.web2py.ajax_fields; //used for LOAD(ajax=False) -web2py_trap_form = $.web2py.trap_form; +web2py_trap_form = jQuery.web2py.trap_form; /*undocumented - rare*/ -popup = $.web2py.popup; -collapse = $.web2py.collapse; -fade = $.web2py.fade; +popup = jQuery.web2py.popup; +collapse = jQuery.web2py.collapse; +fade = jQuery.web2py.fade; /* internals - shouldn't be needed -web2py_ajax_init = $.web2py.ajax_init; -web2py_event_handlers = $.web2py.event_handlers; +web2py_ajax_init = jQuery.web2py.ajax_init; +web2py_event_handlers = jQuery.web2py.event_handlers; -web2py_trap_link = $.web2py.trap_link; -web2py_calc_entropy = $.web2py.calc_entropy; +web2py_trap_link = jQuery.web2py.trap_link; +web2py_calc_entropy = jQuery.web2py.calc_entropy; */ /* compatibility code - end*/ diff --git a/applications/welcome/static/js/web2py.js b/applications/welcome/static/js/web2py.js index 8d7ddf85..76515550 100644 --- a/applications/welcome/static/js/web2py.js +++ b/applications/welcome/static/js/web2py.js @@ -256,7 +256,7 @@ element.trigger('ajax:error', [xhr, status, error]); }, 'complete': function (xhr, status) { - // element.trigger('ajax:complete', [xhr, status]); + element.trigger('ajax:complete', [xhr, status]); var html = xhr.responseText; var content = xhr.getResponseHeader('web2py-component-content'); var t = jQuery('#' + target); @@ -424,7 +424,7 @@ el.addClass('disabled'); var method = el.prop('type') == 'submit' ? 'val' : 'html'; // store enabled state - el.data('w2p:enable-with', el[method]); + el.data('w2p:enable-with', el[method]()); /* little addition by default*/ if((el.data('w2p_disable_with') == 'default') || (el.data('w2p_disable_with') === undefined)) { el.data('w2p_disable_with', 'Working...'); From ec96eaef74b440eb1eddf3388ed3199a28b35850 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Mon, 8 Jul 2013 01:21:28 -0500 Subject: [PATCH 05/35] auth log messages are not longer translated, thanks Anthony --- VERSION | 2 +- gluon/tools.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/VERSION b/VERSION index da940884..e943d261 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.6.0-development+timestamp.2013.07.07.12.24.46 +Version 2.6.0-development+timestamp.2013.07.08.01.20.40 diff --git a/gluon/tools.py b/gluon/tools.py index b47b21f8..8ef57107 100644 --- a/gluon/tools.py +++ b/gluon/tools.py @@ -1747,6 +1747,9 @@ class Auth(object): else: user_id = None # user unknown vars = vars or {} + # log messages should not be translated + if type(descrption).__name__ == 'lazyT': + description = description.m self.table_event().insert( description=str(description % vars), origin=origin, user_id=user_id) From d3d77e3c84cf0b85bbdc8d2ab63bd6cc94e40265 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Mon, 8 Jul 2013 01:38:38 -0500 Subject: [PATCH 06/35] fixed issue 1575:rows.as_list serializes date and time fields as strings instead of date time.date, thanks Alan --- VERSION | 2 +- gluon/dal.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/VERSION b/VERSION index e943d261..ee21118e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.6.0-development+timestamp.2013.07.08.01.20.40 +Version 2.6.0-development+timestamp.2013.07.08.01.37.54 diff --git a/gluon/dal.py b/gluon/dal.py index 10351c24..b3fd3a00 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -10328,12 +10328,12 @@ class Rows(object): def as_list(self, compact=True, storage_to_dict=True, - datetime_to_str=True, + datetime_to_str=False, custom_types=None): """ returns the data as a list or dictionary. :param storage_to_dict: when True returns a dict, otherwise a list(default True) - :param datetime_to_str: convert datetime fields as strings (default True) + :param datetime_to_str: convert datetime fields as strings (default False) """ (oc, self.compact) = (self.compact, compact) if storage_to_dict: @@ -10348,7 +10348,7 @@ class Rows(object): key='id', compact=True, storage_to_dict=True, - datetime_to_str=True, + datetime_to_str=False, custom_types=None): """ returns the data as a dictionary of dictionaries (storage_to_dict=True) or records (False) @@ -10356,7 +10356,7 @@ class Rows(object): :param key: the name of the field to be used as dict key, normally the id :param compact: ? (default True) :param storage_to_dict: when True returns a dict, otherwise a list(default True) - :param datetime_to_str: convert datetime fields as strings (default True) + :param datetime_to_str: convert datetime fields as strings (default False) """ # test for multiple rows From 59095ca11f84549dcf41535f09eb762e09ed74c9 Mon Sep 17 00:00:00 2001 From: Oleg Date: Mon, 8 Jul 2013 09:46:19 +0200 Subject: [PATCH 07/35] fix for deprecated input-xlarge class to make input and select fields the same size. --- gluon/sqlhtml.py | 8 ++++---- gluon/tools.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index 5db36e7c..166b60bb 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -773,7 +773,7 @@ def formstyle_bootstrap(form, fields): _submit = False if isinstance(controls, INPUT): - controls.add_class('input-xlarge') + controls.add_class('span4') if controls['_type'] == 'submit': # flag submit button _submit = True @@ -783,13 +783,13 @@ def formstyle_bootstrap(form, fields): # For password fields, which are wrapped in a CAT object. if isinstance(controls, CAT) and isinstance(controls[0], INPUT): - controls[0].add_class('input-xlarge') + controls[0].add_class('span4') if isinstance(controls, SELECT): - controls.add_class('input-xlarge') + controls.add_class('span4') if isinstance(controls, TEXTAREA): - controls.add_class('input-xlarge') + controls.add_class('span4') if isinstance(label, LABEL): label['_class'] = 'control-label' diff --git a/gluon/tools.py b/gluon/tools.py index 8ef57107..821a91d3 100644 --- a/gluon/tools.py +++ b/gluon/tools.py @@ -2330,7 +2330,7 @@ class Auth(object): if formstyle == 'bootstrap': form.custom.widget.password_two[ - '_class'] = 'input-xlarge' + '_class'] = 'span4' addrow( form, self.messages.verify_password + From 2a85fb099b6ad7aecee0076ea0a06644da342192 Mon Sep 17 00:00:00 2001 From: mpranjic Date: Mon, 8 Jul 2013 12:00:08 +0200 Subject: [PATCH 08/35] updating jQueryUI version, 1.8 is not working with jQuery 1.10 --- applications/welcome/views/layout.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/applications/welcome/views/layout.html b/applications/welcome/views/layout.html index edf4e11e..dd56bcb9 100644 --- a/applications/welcome/views/layout.html +++ b/applications/welcome/views/layout.html @@ -58,8 +58,8 @@ }} {{block head}}{{end}} From b4fe6720aea6a674ccc971a074bb71cb433ef901 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Mon, 8 Jul 2013 08:39:43 -0500 Subject: [PATCH 09/35] fixed potential problem with unwanted translation of log messages --- VERSION | 2 +- gluon/storage.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/VERSION b/VERSION index ee21118e..7f9c8933 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.6.0-development+timestamp.2013.07.08.01.37.54 +Version 2.6.0-development+timestamp.2013.07.08.08.38.58 diff --git a/gluon/storage.py b/gluon/storage.py index 3fd4bc1a..10811e60 100644 --- a/gluon/storage.py +++ b/gluon/storage.py @@ -175,10 +175,9 @@ class Messages(Settings): def __getattr__(self, key): value = self[key] if isinstance(value, str): - return str(self.T(value)) + return self.T(value) return value - class FastStorage(dict): """ Eventually this should replace class Storage but causes memory leak From 89e158cd1d02e76cf3b98708490846af1f1ddbbf Mon Sep 17 00:00:00 2001 From: mdipierro Date: Mon, 8 Jul 2013 08:47:24 -0500 Subject: [PATCH 10/35] fixed potential problem with unwanted translation of log messages --- VERSION | 2 +- gluon/storage.py | 2 +- gluon/tools.py | 40 ++++++++++++++++++++-------------------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/VERSION b/VERSION index 7f9c8933..bae1dd83 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.6.0-development+timestamp.2013.07.08.08.38.58 +Version 2.6.0-development+timestamp.2013.07.08.08.46.42 diff --git a/gluon/storage.py b/gluon/storage.py index 10811e60..5622ad2f 100644 --- a/gluon/storage.py +++ b/gluon/storage.py @@ -175,7 +175,7 @@ class Messages(Settings): def __getattr__(self, key): value = self[key] if isinstance(value, str): - return self.T(value) + return str(self.T(value)) return value class FastStorage(dict): diff --git a/gluon/tools.py b/gluon/tools.py index 821a91d3..3c27a0be 100644 --- a/gluon/tools.py +++ b/gluon/tools.py @@ -2047,7 +2047,7 @@ class Auth(object): if onaccept is DEFAULT: onaccept = self.settings.login_onaccept if log is DEFAULT: - log = self.messages.login_log + log = self.messages['login_log'] onfail = self.settings.login_onfail @@ -2161,7 +2161,7 @@ class Auth(object): form.vars, self.settings.update_fields) break if not user: - self.log_event(self.messages.login_failed_log, + self.log_event(self.messages['login_failed_log'], request.post_vars) # invalid login session.flash = self.messages.invalid_login @@ -2236,7 +2236,7 @@ class Auth(object): if onlogout: onlogout(self.user) if log is DEFAULT: - log = self.messages.logout_log + log = self.messages['logout_log'] if self.user: self.log_event(log, self.user) if self.settings.login_form != self: @@ -2281,7 +2281,7 @@ class Auth(object): if onaccept is DEFAULT: onaccept = self.settings.register_onaccept if log is DEFAULT: - log = self.messages.register_log + log = self.messages['register_log'] table_user = self.table_user() if self.settings.login_userfield: @@ -2433,7 +2433,7 @@ class Auth(object): if current.session.auth and current.session.auth.user: current.session.auth.user.registration_key = user.registration_key if log is DEFAULT: - log = self.messages.verify_email_log + log = self.messages['verify_email_log'] if next is DEFAULT: next = self.settings.verify_email_next if onaccept is DEFAULT: @@ -2476,7 +2476,7 @@ class Auth(object): if onaccept is DEFAULT: onaccept = self.settings.retrieve_username_onaccept if log is DEFAULT: - log = self.messages.retrieve_username_log + log = self.messages['retrieve_username_log'] old_requires = table_user.email.requires table_user.email.requires = [IS_IN_DB(self.db, table_user.email, error_message=self.messages.invalid_email)] @@ -2558,7 +2558,7 @@ class Auth(object): if onaccept is DEFAULT: onaccept = self.settings.retrieve_password_onaccept if log is DEFAULT: - log = self.messages.retrieve_password_log + log = self.messages['retrieve_password_log'] old_requires = table_user.email.requires table_user.email.requires = [IS_IN_DB(self.db, table_user.email, error_message=self.messages.invalid_email)] @@ -2698,7 +2698,7 @@ class Auth(object): if onaccept is DEFAULT: onaccept = self.settings.reset_password_onaccept if log is DEFAULT: - log = self.messages.reset_password_log + log = self.messages['reset_password_log'] table_user.email.requires = [ IS_EMAIL(error_message=self.messages.invalid_email), IS_IN_DB(self.db, table_user.email, @@ -2798,7 +2798,7 @@ class Auth(object): if onaccept is DEFAULT: onaccept = self.settings.change_password_onaccept if log is DEFAULT: - log = self.messages.change_password_log + log = self.messages['change_password_log'] passfield = self.settings.password_field form = SQLFORM.factory( Field('old_password', 'password', @@ -2867,7 +2867,7 @@ class Auth(object): if onaccept is DEFAULT: onaccept = self.settings.profile_onaccept if log is DEFAULT: - log = self.messages.profile_log + log = self.messages['profile_log'] form = SQLFORM( table_user, self.user.id, @@ -2933,7 +2933,7 @@ class Auth(object): self.user = auth.user self.update_groups() onaccept = self.settings.login_onaccept - log = self.messages.impersonate_log + log = self.messages['impersonate_log'] self.log_event(log, dict(id=current_id, other_id=auth.user.id)) if onaccept: form = Storage(dict(vars=self.user)) @@ -3089,7 +3089,7 @@ class Auth(object): group_id = self.table_group().insert( role=role, description=description) - self.log_event(self.messages.add_group_log, + self.log_event(self.messages['add_group_log'], dict(group_id=group_id, role=role)) return group_id @@ -3146,7 +3146,7 @@ class Auth(object): r = True else: r = False - self.log_event(self.messages.has_membership_log, + self.log_event(self.messages['has_membership_log'], dict(user_id=user_id, group_id=group_id, check=r)) return r @@ -3170,7 +3170,7 @@ class Auth(object): else: id = membership.insert(group_id=group_id, user_id=user_id) self.update_groups() - self.log_event(self.messages.add_membership_log, + self.log_event(self.messages['add_membership_log'], dict(user_id=user_id, group_id=group_id)) return id @@ -3184,7 +3184,7 @@ class Auth(object): if not user_id and self.user: user_id = self.user.id membership = self.table_membership() - self.log_event(self.messages.del_membership_log, + self.log_event(self.messages['del_membership_log'], dict(user_id=user_id, group_id=group_id)) ret = self.db(membership.user_id == user_id)(membership.group_id @@ -3240,7 +3240,7 @@ class Auth(object): else: r = False if user_id: - self.log_event(self.messages.has_permission_log, + self.log_event(self.messages['has_permission_log'], dict(user_id=user_id, name=name, table_name=table_name, record_id=record_id)) return r @@ -3267,7 +3267,7 @@ class Auth(object): id = permission.insert(group_id=group_id, name=name, table_name=str(table_name), record_id=long(record_id)) - self.log_event(self.messages.add_permission_log, + self.log_event(self.messages['add_permission_log'], dict(permission_id=id, group_id=group_id, name=name, table_name=table_name, record_id=record_id)) @@ -3285,7 +3285,7 @@ class Auth(object): """ permission = self.table_permission() - self.log_event(self.messages.del_permission_log, + self.log_event(self.messages['del_permission_log'], dict(group_id=group_id, name=name, table_name=table_name, record_id=record_id)) return self.db(permission.group_id == group_id)(permission.name @@ -3636,7 +3636,7 @@ class Crud(object): if ondelete is DEFAULT: ondelete = self.settings.update_ondelete if log is DEFAULT: - log = self.messages.update_log + log = self.messages['update_log'] if deletable is DEFAULT: deletable = self.settings.update_deletable if message is DEFAULT: @@ -3727,7 +3727,7 @@ class Crud(object): if onaccept is DEFAULT: onaccept = self.settings.create_onaccept if log is DEFAULT: - log = self.messages.create_log + log = self.messages['create_log'] if message is DEFAULT: message = self.messages.record_created return self.update( From dd7aff8136836268bd8e8c90cd1d55e8e582d000 Mon Sep 17 00:00:00 2001 From: Michele Comitini Date: Tue, 9 Jul 2013 09:07:37 +0200 Subject: [PATCH 11/35] speedup in case of keyed tables --- gluon/dal.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/gluon/dal.py b/gluon/dal.py index f2592868..ed9f4d5e 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -8386,10 +8386,7 @@ class Table(object): elif isinstance(key, dict): """ for keyed table """ query = self._build_query(key) - rows = self._db(query).select() - if rows: - return rows[0] - return None + return self._db(query).select(limitby=(0,1), orderby_on_limitby=False).first() elif str(key).isdigit() or 'google' in DRIVERS and isinstance(key, Key): return self._db(self._id == key).select(limitby=(0,1), orderby_on_limitby=False).first() elif key: From cadf0e946a29f56808da12e84b8e1831f14a0f8a Mon Sep 17 00:00:00 2001 From: mdipierro Date: Tue, 9 Jul 2013 16:15:21 -0500 Subject: [PATCH 12/35] synced with gluino --- VERSION | 2 +- gluon/sqlhtml.py | 7 +++++-- gluon/template.py | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/VERSION b/VERSION index bae1dd83..7d9d629c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.6.0-development+timestamp.2013.07.08.08.46.42 +Version 2.6.0-development+timestamp.2013.07.09.16.14.32 diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index 166b60bb..ade7fad4 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -39,9 +39,12 @@ import re import cStringIO from gluon import current, redirect import inspect -import settings -is_gae = settings.global_settings.web2py_runtime_gae +try: + import settings + is_gae = settings.global_settings.web2py_runtime_gae +except ImportError: + is_gae = False diff --git a/gluon/template.py b/gluon/template.py index 4425a202..f5e579cf 100644 --- a/gluon/template.py +++ b/gluon/template.py @@ -800,8 +800,8 @@ class DummyResponse(): def write(self, data, escape=True): if not escape: self.body.write(str(data)) - elif hasattr(data, 'as_html') and callable(data.as_html): - self.body.write(data.as_html()) + elif hasattr(data, 'xml') and callable(data.xml): + self.body.write(data.xml()) else: # make it a string if not isinstance(data, (str, unicode)): From 1b7bbfaf951740ac9d5c90db48c9c3f4f35f5b58 Mon Sep 17 00:00:00 2001 From: Paolo Caruccio Date: Wed, 10 Jul 2013 15:55:51 +0200 Subject: [PATCH 13/35] fixes for small visual bugs in bootstrap layout - form input error text when formstyle='bootstrap' has fixed width. In narrow screens: - topbar has space in left and right sides; - login button in topbar is unlined. --- .../welcome/static/css/web2py_bootstrap.css | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/applications/welcome/static/css/web2py_bootstrap.css b/applications/welcome/static/css/web2py_bootstrap.css index 18165343..40561740 100644 --- a/applications/welcome/static/css/web2py_bootstrap.css +++ b/applications/welcome/static/css/web2py_bootstrap.css @@ -223,16 +223,21 @@ td.w2p_fw ul{margin-left:0px;} /* auth_user_remember checkbox extrapadding in IE fix */ .ie-lte9 input#auth_user_remember.checkbox {padding-left:0;} +div.controls .error { + width: auto; +} + /*============================================================= MEDIA QUERIES ==============================================================*/ @media only screen and (max-width:979px){ body{padding-top:0px;} - #navbar{top:5px;} + #navbar{/*top:5px;*/} div.flash{right:5px;} .dropdown-menu ul{visibility:visible;} } + @media only screen and (max-width:479px){ body{ padding-left:10px; @@ -246,3 +251,10 @@ td.w2p_fw ul{margin-left:0px;} width:95%; } } + +@media (max-width: 767px) { + .navbar { + margin-right: -20px; + margin-left: -20px; + } +} \ No newline at end of file From 5ec22132a32799c47f54083062066480a8045097 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Thu, 11 Jul 2013 09:14:41 -0500 Subject: [PATCH 14/35] sync'd with gluino again --- VERSION | 2 +- gluon/sqlhtml.py | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/VERSION b/VERSION index 7d9d629c..47053d68 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.6.0-development+timestamp.2013.07.09.16.14.32 +Version 2.6.0-development+timestamp.2013.07.11.09.13.54 diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index ade7fad4..a2a413ae 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -37,16 +37,15 @@ import datetime import urllib import re import cStringIO -from gluon import current, redirect +from globals import current +from http import redirect import inspect try: import settings is_gae = settings.global_settings.web2py_runtime_gae except ImportError: - is_gae = False - - + is_gae = False # this is an assumption (if settings missing) table_field = re.compile('[\w_]+\.[\w_]+') widget_class = re.compile('^\w*') From 773b19d37324c8bc4ba8923456d12e53e9385968 Mon Sep 17 00:00:00 2001 From: Oleg Date: Thu, 11 Jul 2013 18:11:37 +0200 Subject: [PATCH 15/35] allows add multiple submit buttons in "selectable" mode in SQLFORM.grid (with different decorate css classes) --- gluon/sqlhtml.py | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index 166b60bb..791f4724 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -2413,13 +2413,38 @@ class SQLFORM(FORM): htmltable, _class='web2py_htmltable', _style='width:100%;overflow-x:auto;-ms-overflow-x:scroll') if selectable: - htmltable = FORM(htmltable, INPUT( - _type="submit", _value=T(selectable_submit_button))) + if not callable(selectable): + #now expect that selectable and related parameters are iterator (list, tuple, etc) + inputs = [] + for i, submit_info in enumerate(selectable): + submit_text = submit_info[0] + submit_class = submit_info[2] if len(submit_info) > 2 else '' + + input_ctrl = INPUT(_type="submit", _name='submit_%d' % i, _value=T(submit_text)) + input_ctrl.add_class(submit_class) + inputs.append(input_ctrl) + else: + inputs = [INPUT(_type="submit", _value=T(selectable_submit_button))] + + if formstyle == 'bootstrap': + # add space between buttons + #inputs = sum([[inp, ' '] for inp in inputs], [])[:-1] + htmltable = FORM(htmltable, DIV(*inputs, _class='form-actions')) + else: + htmltable = FORM(htmltable, *inputs) + if htmltable.process(formname=formname).accepted: htmltable.vars.records = htmltable.vars.records or [] htmltable.vars.records = htmltable.vars.records if type(htmltable.vars.records) == list else [htmltable.vars.records] records = [int(r) for r in htmltable.vars.records] - selectable(records) + if not callable(selectable): + for i, submit_info in enumerate(selectable): + submit_callback = submit_info[1] + if htmltable.vars.get('submit_%d' % i, False): + submit_callback(records) + break + else: + selectable(records) redirect(referrer) else: htmltable = DIV(T('No records found')) From 6566b2d2ed514038800fde636dc6d38476ff4d0c Mon Sep 17 00:00:00 2001 From: mdipierro Date: Thu, 11 Jul 2013 11:28:12 -0500 Subject: [PATCH 16/35] html patch, thanks Jonathan, but TRHEAD commented --- VERSION | 2 +- gluon/html.py | 24 ++++++++++++++++++++---- gluon/tests/test_html.py | 4 ++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/VERSION b/VERSION index 47053d68..1bce9e32 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.6.0-development+timestamp.2013.07.11.09.13.54 +Version 2.6.0-development+timestamp.2013.07.11.11.27.25 diff --git a/gluon/html.py b/gluon/html.py index 34f00597..2d9fd7a2 100644 --- a/gluon/html.py +++ b/gluon/html.py @@ -98,6 +98,7 @@ __all__ = [ 'TFOOT', 'TITLE', 'TR', +# 'TRHEAD', 'TT', 'URL', 'XHTML', @@ -1198,12 +1199,12 @@ def TAG_pickler(data): return (TAG_unpickler, (marshal_dump,)) -class __tag__(DIV): +class __tag_div__(DIV): def __init__(self,name,*a,**b): DIV.__init__(self,*a,**b) self.tag = name -copy_reg.pickle(__tag__, TAG_pickler, TAG_unpickler) +copy_reg.pickle(__tag_div__, TAG_pickler, TAG_unpickler) class __TAG__(XmlComponent): @@ -1223,7 +1224,7 @@ class __TAG__(XmlComponent): name = name[:-1] + '/' if isinstance(name, unicode): name = name.encode('utf-8') - return lambda *a,**b: __tag__(name,*a,**b) + return lambda *a,**b: __tag_div__(name,*a,**b) def __call__(self, html): return web2pyHTMLParser(decoder.decoder(html)).tree @@ -1640,12 +1641,27 @@ class TR(DIV): self._wrap_components((TD, TH), TD) +class TRHEAD(DIV): + """ + TRHEAD Component. + + If subcomponents are not TD/TH-components they will be wrapped in a TH + + see also :class:`DIV` + """ + + tag = 'tr' + + def _fixup(self): + self._wrap_components((TD, TH), TH) + + class THEAD(DIV): tag = 'thead' def _fixup(self): - self._wrap_components(TR, TR) + self._wrap_components((TRHEAD, TR), TRHEAD) class TBODY(DIV): diff --git a/gluon/tests/test_html.py b/gluon/tests/test_html.py index 51a75526..82d65e62 100644 --- a/gluon/tests/test_html.py +++ b/gluon/tests/test_html.py @@ -188,6 +188,10 @@ class TestBareHelpers(unittest.TestCase): def testTHEAD(self): self.assertEqual(THEAD('<>', _a='1', _b='2').xml(), + '<>') + #self.assertEqual(THEAD(TRHEAD('<>'), _a='1', _b='2').xml(), + # '<>') + self.assertEqual(THEAD(TR('<>'), _a='1', _b='2').xml(), '<>') def testTITLE(self): From 207105a21edd21a764d242cc32f61aae95796b4b Mon Sep 17 00:00:00 2001 From: mdipierro Date: Thu, 11 Jul 2013 11:35:46 -0500 Subject: [PATCH 17/35] fix to web2py_bookstrap.css, thanks Paolo --- VERSION | 2 +- applications/admin/static/css/web2py_bootstrap.css | 5 +++++ applications/examples/static/css/web2py_bootstrap.css | 5 +++++ applications/welcome/static/css/web2py_bootstrap.css | 4 ++++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 1bce9e32..4b46ea76 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.6.0-development+timestamp.2013.07.11.11.27.25 +Version 2.6.0-development+timestamp.2013.07.11.11.34.59 diff --git a/applications/admin/static/css/web2py_bootstrap.css b/applications/admin/static/css/web2py_bootstrap.css index 91dfbcde..258ae5b5 100644 --- a/applications/admin/static/css/web2py_bootstrap.css +++ b/applications/admin/static/css/web2py_bootstrap.css @@ -90,6 +90,7 @@ div.controls select +.error_wrapper {margin-left:5px;} .ie-lte7 div.error{color:#fff;} /* beautify brand */ +.navbar {margin-bottom:0} .navbar-inverse .brand{color:#c6cecc;} .navbar-inverse .brand b{display:inline-block;margin-top:-1px;} .navbar-inverse .brand b>span{font-size:22px;color:white} @@ -222,6 +223,10 @@ td.w2p_fw ul{margin-left:0px;} /* auth_user_remember checkbox extrapadding in IE fix */ .ie-lte9 input#auth_user_remember.checkbox {padding-left:0;} +div.controls .error { + width: auto; +} + /*============================================================= MEDIA QUERIES ==============================================================*/ diff --git a/applications/examples/static/css/web2py_bootstrap.css b/applications/examples/static/css/web2py_bootstrap.css index 91dfbcde..258ae5b5 100644 --- a/applications/examples/static/css/web2py_bootstrap.css +++ b/applications/examples/static/css/web2py_bootstrap.css @@ -90,6 +90,7 @@ div.controls select +.error_wrapper {margin-left:5px;} .ie-lte7 div.error{color:#fff;} /* beautify brand */ +.navbar {margin-bottom:0} .navbar-inverse .brand{color:#c6cecc;} .navbar-inverse .brand b{display:inline-block;margin-top:-1px;} .navbar-inverse .brand b>span{font-size:22px;color:white} @@ -222,6 +223,10 @@ td.w2p_fw ul{margin-left:0px;} /* auth_user_remember checkbox extrapadding in IE fix */ .ie-lte9 input#auth_user_remember.checkbox {padding-left:0;} +div.controls .error { + width: auto; +} + /*============================================================= MEDIA QUERIES ==============================================================*/ diff --git a/applications/welcome/static/css/web2py_bootstrap.css b/applications/welcome/static/css/web2py_bootstrap.css index 18165343..258ae5b5 100644 --- a/applications/welcome/static/css/web2py_bootstrap.css +++ b/applications/welcome/static/css/web2py_bootstrap.css @@ -223,6 +223,10 @@ td.w2p_fw ul{margin-left:0px;} /* auth_user_remember checkbox extrapadding in IE fix */ .ie-lte9 input#auth_user_remember.checkbox {padding-left:0;} +div.controls .error { + width: auto; +} + /*============================================================= MEDIA QUERIES ==============================================================*/ From 988ee824961c9156431672b985aca7a38f94d978 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Thu, 11 Jul 2013 11:49:49 -0500 Subject: [PATCH 18/35] fixed issue 1579:Row.__getitem__(): count of 0 raises AttributeError, thanks Dominic --- VERSION | 2 +- gluon/dal.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index 4b46ea76..627cdd40 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.6.0-development+timestamp.2013.07.11.11.34.59 +Version 2.6.0-development+timestamp.2013.07.11.11.48.58 diff --git a/gluon/dal.py b/gluon/dal.py index b3fd3a00..27be55f0 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -6872,7 +6872,7 @@ class Row(object): _extra = self.__dict__.get('_extra', None) if _extra is not None: v = _extra.get(key, None) - if v: + if v is not None: return v m = REGEX_TABLE_DOT_FIELD.match(key) if m: From 9643086b34749794580895cc84fcd5fa79614554 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Thu, 11 Jul 2013 13:01:47 -0500 Subject: [PATCH 19/35] TRHEAD->__TRHEAD__ as Jonathan suggested --- VERSION | 2 +- gluon/html.py | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/VERSION b/VERSION index 627cdd40..450a45d7 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.6.0-development+timestamp.2013.07.11.11.48.58 +Version 2.6.0-development+timestamp.2013.07.11.13.00.56 diff --git a/gluon/html.py b/gluon/html.py index 2d9fd7a2..8714bc73 100644 --- a/gluon/html.py +++ b/gluon/html.py @@ -98,7 +98,6 @@ __all__ = [ 'TFOOT', 'TITLE', 'TR', -# 'TRHEAD', 'TT', 'URL', 'XHTML', @@ -1641,9 +1640,9 @@ class TR(DIV): self._wrap_components((TD, TH), TD) -class TRHEAD(DIV): +class __TRHEAD__(DIV): """ - TRHEAD Component. + __TRHEAD__ Component, internal only If subcomponents are not TD/TH-components they will be wrapped in a TH @@ -1661,7 +1660,7 @@ class THEAD(DIV): tag = 'thead' def _fixup(self): - self._wrap_components((TRHEAD, TR), TRHEAD) + self._wrap_components((__TRHEAD__, TR), __TRHEAD__) class TBODY(DIV): From b0ac67a8f63cb2107d96101c6971bf0e180911fb Mon Sep 17 00:00:00 2001 From: mpranjic Date: Fri, 12 Jul 2013 11:49:48 +0200 Subject: [PATCH 20/35] updating jquery mobile to 1.3.1 --- .../static/plugin_jqmobile/jquery.mobile-1.2.0.min.css | 2 -- .../static/plugin_jqmobile/jquery.mobile-1.2.0.min.js | 2 -- .../static/plugin_jqmobile/jquery.mobile-1.3.1.min.css | 3 +++ .../static/plugin_jqmobile/jquery.mobile-1.3.1.min.js | 7 +++++++ applications/admin/views/default.mobile/layout.html | 4 ++-- applications/admin/views/plugin_jqmobile/layout.html | 4 ++-- 6 files changed, 14 insertions(+), 8 deletions(-) delete mode 100644 applications/admin/static/plugin_jqmobile/jquery.mobile-1.2.0.min.css delete mode 100644 applications/admin/static/plugin_jqmobile/jquery.mobile-1.2.0.min.js create mode 100644 applications/admin/static/plugin_jqmobile/jquery.mobile-1.3.1.min.css create mode 100644 applications/admin/static/plugin_jqmobile/jquery.mobile-1.3.1.min.js diff --git a/applications/admin/static/plugin_jqmobile/jquery.mobile-1.2.0.min.css b/applications/admin/static/plugin_jqmobile/jquery.mobile-1.2.0.min.css deleted file mode 100644 index 97d5b7de..00000000 --- a/applications/admin/static/plugin_jqmobile/jquery.mobile-1.2.0.min.css +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery Mobile vGit Build: SHA1: c2d61e2e592c67519d9a9ed0ba796fa44787e136 <> Date: Tue Sep 25 10:38:12 2012 -0700 jquerymobile.com | jquery.org/license !*/ -.ui-bar-a{border:1px solid #333;background:#111;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from( #3c3c3c ),to( #111 ));background-image:-webkit-linear-gradient( #3c3c3c,#111 );background-image:-moz-linear-gradient( #3c3c3c,#111 );background-image:-ms-linear-gradient( #3c3c3c,#111 );background-image:-o-linear-gradient( #3c3c3c,#111 );background-image:linear-gradient( #3c3c3c,#111 )}.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}.ui-bar-a .ui-link-inherit{color:#fff}.ui-bar-a a.ui-link{color:#7cc4e7;font-weight:bold}.ui-bar-a a.ui-link:visited{color:#2489ce}.ui-bar-a a.ui-link:hover{color:#2489ce}.ui-bar-a a.ui-link:active{color:#2489ce}.ui-body-a,.ui-overlay-a{border:1px solid #444;background:#222;color:#fff;text-shadow:0 1px 1px #111;font-weight:normal;background-image:-webkit-gradient(linear,left top,left bottom,from( #444 ),to( #222 ));background-image:-webkit-linear-gradient( #444,#222 );background-image:-moz-linear-gradient( #444,#222 );background-image:-ms-linear-gradient( #444,#222 );background-image:-o-linear-gradient( #444,#222 );background-image:linear-gradient( #444,#222 )}.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}.ui-body-a .ui-link-inherit{color:#fff}.ui-body-a .ui-link{color:#2489ce;font-weight:bold}.ui-body-a .ui-link:visited{color:#2489ce}.ui-body-a .ui-link:hover{color:#2489ce}.ui-body-a .ui-link:active{color:#2489ce}.ui-btn-up-a{border:1px solid #111;background:#333;font-weight:bold;color:#fff;text-shadow:0 1px 1px #111;background-image:-webkit-gradient(linear,left top,left bottom,from( #444 ),to( #2d2d2d ));background-image:-webkit-linear-gradient( #444,#2d2d2d );background-image:-moz-linear-gradient( #444,#2d2d2d );background-image:-ms-linear-gradient( #444,#2d2d2d );background-image:-o-linear-gradient( #444,#2d2d2d );background-image:linear-gradient( #444,#2d2d2d )}.ui-btn-up-a:visited,.ui-btn-up-a a.ui-link-inherit{color:#fff}.ui-btn-hover-a{border:1px solid #000;background:#444;font-weight:bold;color:#fff;text-shadow:0 1px 1px #111;background-image:-webkit-gradient(linear,left top,left bottom,from( #555 ),to( #383838 ));background-image:-webkit-linear-gradient( #555,#383838 );background-image:-moz-linear-gradient( #555,#383838 );background-image:-ms-linear-gradient( #555,#383838 );background-image:-o-linear-gradient( #555,#383838 );background-image:linear-gradient( #555,#383838 )}.ui-btn-hover-a:visited,.ui-btn-hover-a:hover,.ui-btn-hover-a a.ui-link-inherit{color:#fff}.ui-btn-down-a{border:1px solid #000;background:#222;font-weight:bold;color:#fff;text-shadow:0 1px 1px #111;background-image:-webkit-gradient(linear,left top,left bottom,from( #202020 ),to( #2c2c2c ));background-image:-webkit-linear-gradient( #202020,#2c2c2c );background-image:-moz-linear-gradient( #202020,#2c2c2c );background-image:-ms-linear-gradient( #202020,#2c2c2c );background-image:-o-linear-gradient( #202020,#2c2c2c );background-image:linear-gradient( #202020,#2c2c2c )}.ui-btn-down-a:visited,.ui-btn-down-a:hover,.ui-btn-down-a a.ui-link-inherit{color:#fff}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-b{border:1px solid #456f9a;background:#5e87b0;color:#fff;font-weight:bold;text-shadow:0 1px 1px #3e6790;background-image:-webkit-gradient(linear,left top,left bottom,from( #6facd5 ),to( #497bae ));background-image:-webkit-linear-gradient( #6facd5,#497bae );background-image:-moz-linear-gradient( #6facd5,#497bae );background-image:-ms-linear-gradient( #6facd5,#497bae );background-image:-o-linear-gradient( #6facd5,#497bae );background-image:linear-gradient( #6facd5,#497bae )}.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}.ui-bar-b .ui-link-inherit{color:#fff}.ui-bar-b a.ui-link{color:#ddf0f8;font-weight:bold}.ui-bar-b a.ui-link:visited{color:#ddf0f8}.ui-bar-b a.ui-link:hover{color:#ddf0f8}.ui-bar-b a.ui-link:active{color:#ddf0f8}.ui-body-b,.ui-overlay-b{border:1px solid #999;background:#f3f3f3;color:#222;text-shadow:0 1px 0 #fff;font-weight:normal;background-image:-webkit-gradient(linear,left top,left bottom,from( #ddd ),to( #ccc ));background-image:-webkit-linear-gradient( #ddd,#ccc );background-image:-moz-linear-gradient( #ddd,#ccc );background-image:-ms-linear-gradient( #ddd,#ccc );background-image:-o-linear-gradient( #ddd,#ccc );background-image:linear-gradient( #ddd,#ccc )}.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}.ui-body-b .ui-link-inherit{color:#333}.ui-body-b .ui-link{color:#2489ce;font-weight:bold}.ui-body-b .ui-link:visited{color:#2489ce}.ui-body-b .ui-link:hover{color:#2489ce}.ui-body-b .ui-link:active{color:#2489ce}.ui-btn-up-b{border:1px solid #044062;background:#396b9e;font-weight:bold;color:#fff;text-shadow:0 1px 1px #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from( #5f9cc5 ),to( #396b9e ));background-image:-webkit-linear-gradient( #5f9cc5,#396b9e );background-image:-moz-linear-gradient( #5f9cc5,#396b9e );background-image:-ms-linear-gradient( #5f9cc5,#396b9e );background-image:-o-linear-gradient( #5f9cc5,#396b9e );background-image:linear-gradient( #5f9cc5,#396b9e )}.ui-btn-up-b:visited,.ui-btn-up-b a.ui-link-inherit{color:#fff}.ui-btn-hover-b{border:1px solid #00415e;background:#4b88b6;font-weight:bold;color:#fff;text-shadow:0 1px 1px #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from( #6facd5 ),to( #4272a4 ));background-image:-webkit-linear-gradient( #6facd5,#4272a4 );background-image:-moz-linear-gradient( #6facd5,#4272a4 );background-image:-ms-linear-gradient( #6facd5,#4272a4 );background-image:-o-linear-gradient( #6facd5,#4272a4 );background-image:linear-gradient( #6facd5,#4272a4 )}.ui-btn-hover-b:visited,.ui-btn-hover-b:hover,.ui-btn-hover-b a.ui-link-inherit{color:#fff}.ui-btn-down-b{border:1px solid #225377;background:#4e89c5;font-weight:bold;color:#fff;text-shadow:0 1px 1px #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from( #295b8e ),to( #3e79b5 ));background-image:-webkit-linear-gradient( #295b8e,#3e79b5 );background-image:-moz-linear-gradient( #295b8e,#3e79b5 );background-image:-ms-linear-gradient( #295b8e,#3e79b5 );background-image:-o-linear-gradient( #295b8e,#3e79b5 );background-image:linear-gradient( #295b8e,#3e79b5 )}.ui-btn-down-b:visited,.ui-btn-down-b:hover,.ui-btn-down-b a.ui-link-inherit{color:#fff}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-c{border:1px solid #b3b3b3;background:#eee;color:#3e3e3e;font-weight:bold;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from( #f0f0f0 ),to( #ddd ));background-image:-webkit-linear-gradient( #f0f0f0,#ddd );background-image:-moz-linear-gradient( #f0f0f0,#ddd );background-image:-ms-linear-gradient( #f0f0f0,#ddd );background-image:-o-linear-gradient( #f0f0f0,#ddd );background-image:linear-gradient( #f0f0f0,#ddd )}.ui-bar-c .ui-link-inherit{color:#3e3e3e}.ui-bar-c a.ui-link{color:#7cc4e7;font-weight:bold}.ui-bar-c a.ui-link:visited{color:#2489ce}.ui-bar-c a.ui-link:hover{color:#2489ce}.ui-bar-c a.ui-link:active{color:#2489ce}.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}.ui-body-c,.ui-overlay-c{border:1px solid #aaa;color:#333;text-shadow:0 1px 0 #fff;background:#f9f9f9;background-image:-webkit-gradient(linear,left top,left bottom,from( #f9f9f9 ),to( #eee ));background-image:-webkit-linear-gradient( #f9f9f9,#eee );background-image:-moz-linear-gradient( #f9f9f9,#eee );background-image:-ms-linear-gradient( #f9f9f9,#eee );background-image:-o-linear-gradient( #f9f9f9,#eee );background-image:linear-gradient( #f9f9f9,#eee )}.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}.ui-body-c .ui-link-inherit{color:#333}.ui-body-c .ui-link{color:#2489ce;font-weight:bold}.ui-body-c .ui-link:visited{color:#2489ce}.ui-body-c .ui-link:hover{color:#2489ce}.ui-body-c .ui-link:active{color:#2489ce}.ui-btn-up-c{border:1px solid #ccc;background:#eee;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from( #fff ),to( #f1f1f1 ));background-image:-webkit-linear-gradient( #fff,#f1f1f1 );background-image:-moz-linear-gradient( #fff,#f1f1f1 );background-image:-ms-linear-gradient( #fff,#f1f1f1 );background-image:-o-linear-gradient( #fff,#f1f1f1 );background-image:linear-gradient( #fff,#f1f1f1 )}.ui-btn-up-c:visited,.ui-btn-up-c a.ui-link-inherit{color:#2f3e46}.ui-btn-hover-c{border:1px solid #bbb;background:#dfdfdf;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from( #f6f6f6 ),to( #e0e0e0 ));background-image:-webkit-linear-gradient( #f6f6f6,#e0e0e0 );background-image:-moz-linear-gradient( #f6f6f6,#e0e0e0 );background-image:-ms-linear-gradient( #f6f6f6,#e0e0e0 );background-image:-o-linear-gradient( #f6f6f6,#e0e0e0 );background-image:linear-gradient( #f6f6f6,#e0e0e0 )}.ui-btn-hover-c:visited,.ui-btn-hover-c:hover,.ui-btn-hover-c a.ui-link-inherit{color:#2f3e46}.ui-btn-down-c{border:1px solid #bbb;background:#d6d6d6;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from( #d0d0d0 ),to( #dfdfdf ));background-image:-webkit-linear-gradient( #d0d0d0,#dfdfdf );background-image:-moz-linear-gradient( #d0d0d0,#dfdfdf );background-image:-ms-linear-gradient( #d0d0d0,#dfdfdf );background-image:-o-linear-gradient( #d0d0d0,#dfdfdf );background-image:linear-gradient( #d0d0d0,#dfdfdf )}.ui-btn-down-c:visited,.ui-btn-down-c:hover,.ui-btn-down-c a.ui-link-inherit{color:#2f3e46}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-d{border:1px solid #bbb;background:#bbb;color:#333;font-weight:bold;text-shadow:0 1px 0 #eee;background-image:-webkit-gradient(linear,left top,left bottom,from( #ddd ),to( #bbb ));background-image:-webkit-linear-gradient( #ddd,#bbb );background-image:-moz-linear-gradient( #ddd,#bbb );background-image:-ms-linear-gradient( #ddd,#bbb );background-image:-o-linear-gradient( #ddd,#bbb );background-image:linear-gradient( #ddd,#bbb )}.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}.ui-bar-d .ui-link-inherit{color:#333}.ui-bar-d a.ui-link{color:#2489ce;font-weight:bold}.ui-bar-d a.ui-link:visited{color:#2489ce}.ui-bar-d a.ui-link:hover{color:#2489ce}.ui-bar-d a.ui-link:active{color:#2489ce}.ui-body-d,.ui-overlay-d{border:1px solid #bbb;color:#333;text-shadow:0 1px 0 #fff;background:#fff;background-image:-webkit-gradient(linear,left top,left bottom,from( #fff ),to( #fff ));background-image:-webkit-linear-gradient( #fff,#fff );background-image:-moz-linear-gradient( #fff,#fff );background-image:-ms-linear-gradient( #fff,#fff );background-image:-o-linear-gradient( #fff,#fff );background-image:linear-gradient( #fff,#fff )}.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}.ui-body-d .ui-link-inherit{color:#333}.ui-body-d .ui-link{color:#2489ce;font-weight:bold}.ui-body-d .ui-link:visited{color:#2489ce}.ui-body-d .ui-link:hover{color:#2489ce}.ui-body-d .ui-link:active{color:#2489ce}.ui-btn-up-d{border:1px solid #bbb;background:#fff;font-weight:bold;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from( #fafafa ),to( #f6f6f6 ));background-image:-webkit-linear-gradient( #fafafa,#f6f6f6 );background-image:-moz-linear-gradient( #fafafa,#f6f6f6 );background-image:-ms-linear-gradient( #fafafa,#f6f6f6 );background-image:-o-linear-gradient( #fafafa,#f6f6f6 );background-image:linear-gradient( #fafafa,#f6f6f6 )}.ui-btn-up-d:visited,.ui-btn-up-d a.ui-link-inherit{color:#333}.ui-btn-hover-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#333;cursor:pointer;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from( #eee ),to( #fff ));background-image:-webkit-linear-gradient( #eee,#fff );background-image:-moz-linear-gradient( #eee,#fff );background-image:-ms-linear-gradient( #eee,#fff );background-image:-o-linear-gradient( #eee,#fff );background-image:linear-gradient( #eee,#fff )}.ui-btn-hover-d:visited,.ui-btn-hover-d:hover,.ui-btn-hover-d a.ui-link-inherit{color:#333}.ui-btn-down-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from( #e5e5e5 ),to( #f2f2f2 ));background-image:-webkit-linear-gradient( #e5e5e5,#f2f2f2 );background-image:-moz-linear-gradient( #e5e5e5,#f2f2f2 );background-image:-ms-linear-gradient( #e5e5e5,#f2f2f2 );background-image:-o-linear-gradient( #e5e5e5,#f2f2f2 );background-image:linear-gradient( #e5e5e5,#f2f2f2 )}.ui-btn-down-d:visited,.ui-btn-down-d:hover,.ui-btn-down-d a.ui-link-inherit{color:#333}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-e{border:1px solid #f7c942;background:#fadb4e;color:#333;font-weight:bold;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from( #fceda7 ),to( #fbef7e ));background-image:-webkit-linear-gradient( #fceda7,#fbef7e );background-image:-moz-linear-gradient( #fceda7,#fbef7e );background-image:-ms-linear-gradient( #fceda7,#fbef7e );background-image:-o-linear-gradient( #fceda7,#fbef7e );background-image:linear-gradient( #fceda7,#fbef7e )}.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}.ui-bar-e .ui-link-inherit{color:#333}.ui-bar-e a.ui-link{color:#2489ce;font-weight:bold}.ui-bar-e a.ui-link:visited{color:#2489ce}.ui-bar-e a.ui-link:hover{color:#2489ce}.ui-bar-e a.ui-link:active{color:#2489ce}.ui-body-e,.ui-overlay-e{border:1px solid #f7c942;color:#222;text-shadow:0 1px 0 #fff;background:#fff9df;background-image:-webkit-gradient(linear,left top,left bottom,from( #fffadf ),to( #fff3a5 ));background-image:-webkit-linear-gradient( #fffadf,#fff3a5 );background-image:-moz-linear-gradient( #fffadf,#fff3a5 );background-image:-ms-linear-gradient( #fffadf,#fff3a5 );background-image:-o-linear-gradient( #fffadf,#fff3a5 );background-image:linear-gradient( #fffadf,#fff3a5 )}.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}.ui-body-e .ui-link-inherit{color:#222}.ui-body-e .ui-link{color:#2489ce;font-weight:bold}.ui-body-e .ui-link:visited{color:#2489ce}.ui-body-e .ui-link:hover{color:#2489ce}.ui-body-e .ui-link:active{color:#2489ce}.ui-btn-up-e{border:1px solid #f4c63f;background:#fadb4e;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from( #ffefaa ),to( #ffe155 ));background-image:-webkit-linear-gradient( #ffefaa,#ffe155 );background-image:-moz-linear-gradient( #ffefaa,#ffe155 );background-image:-ms-linear-gradient( #ffefaa,#ffe155 );background-image:-o-linear-gradient( #ffefaa,#ffe155 );background-image:linear-gradient( #ffefaa,#ffe155 )}.ui-btn-up-e:visited,.ui-btn-up-e a.ui-link-inherit{color:#222}.ui-btn-hover-e{border:1px solid #f2c43d;background:#fbe26f;font-weight:bold;color:#111;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from( #fff5ba ),to( #fbdd52 ));background-image:-webkit-linear-gradient( #fff5ba,#fbdd52 );background-image:-moz-linear-gradient( #fff5ba,#fbdd52 );background-image:-ms-linear-gradient( #fff5ba,#fbdd52 );background-image:-o-linear-gradient( #fff5ba,#fbdd52 );background-image:linear-gradient( #fff5ba,#fbdd52 )}.ui-btn-hover-e:visited,.ui-btn-hover-e:hover,.ui-btn-hover-e a.ui-link-inherit{color:#333}.ui-btn-down-e{border:1px solid #f2c43d;background:#fceda7;font-weight:bold;color:#111;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from( #f8d94c ),to( #fadb4e ));background-image:-webkit-linear-gradient( #f8d94c,#fadb4e );background-image:-moz-linear-gradient( #f8d94c,#fadb4e );background-image:-ms-linear-gradient( #f8d94c,#fadb4e );background-image:-o-linear-gradient( #f8d94c,#fadb4e );background-image:linear-gradient( #f8d94c,#fadb4e )}.ui-btn-down-e:visited,.ui-btn-down-e:hover,.ui-btn-down-e a.ui-link-inherit{color:#333}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Helvetica,Arial,sans-serif;text-decoration:none}a.ui-link-inherit{text-decoration:none!important}.ui-btn-active{border:1px solid #2373a5;background:#5393c5;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 1px 1px #3373a5;text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,from( #5393c5 ),to( #6facd5 ));background-image:-webkit-linear-gradient( #5393c5,#6facd5 );background-image:-moz-linear-gradient( #5393c5,#6facd5 );background-image:-ms-linear-gradient( #5393c5,#6facd5 );background-image:-o-linear-gradient( #5393c5,#6facd5 );background-image:linear-gradient( #5393c5,#6facd5 );font-family:Helvetica,Arial,sans-serif}.ui-btn-active:visited,.ui-btn-active:hover,.ui-btn-active a.ui-link-inherit{color:#fff}.ui-btn-inner{border-top:1px solid #fff;border-color:rgba(255,255,255,.3)}.ui-corner-tl{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em}.ui-corner-tr{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bl{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-br{-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-top{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bottom{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-right{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-left{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-all{-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em}.ui-corner-none{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-br{border-bottom:rgb(130,130,130);border-bottom:rgba(130,130,130,.3);border-bottom-width:1px;border-bottom-style:solid}.ui-disabled{filter:Alpha(Opacity=30);opacity:.3;zoom:1}.ui-disabled,.ui-disabled a{cursor:default!important;pointer-events:none}.ui-icon,.ui-icon-searchfield:after{background:#666;background:rgba(0,0,0,.4);background-image:url(images/icons-18-white.png);background-repeat:no-repeat;-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px}.ui-icon-alt{background:#fff;background:rgba(255,255,255,.3);background-image:url(images/icons-18-black.png);background-repeat:no-repeat}@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)}}.ui-icon-plus{background-position:-0 50%}.ui-icon-minus{background-position:-36px 50%}.ui-icon-delete{background-position:-72px 50%}.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%}.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%}.ui-checkbox .ui-icon,.ui-selectmenu-list .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}.ui-icon-loading{background:url(images/ajax-loader.gif);background-size:46px 46px}.ui-btn-corner-tl{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em}.ui-btn-corner-tr{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bl{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-br{-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-top{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bottom{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-right{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-left{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-all{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em}.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}.ui-overlay{background:#666;filter:Alpha(Opacity=50);opacity:.5;position:absolute;width:100%;height:100%}.ui-overlay-shadow{-moz-box-shadow:0 0 12px rgba(0,0,0,.6);-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-shadow{-moz-box-shadow:0 1px 4px rgba(0,0,0,.3);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.3);box-shadow:0 1px 4px rgba(0,0,0,.3)}.ui-bar-a .ui-shadow,.ui-bar-b .ui-shadow,.ui-bar-c .ui-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.ui-shadow-inset{-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);box-shadow:inset 0 1px 4px rgba(0,0,0,.2)}.ui-icon-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.4);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.4);box-shadow:0 1px 0 rgba(255,255,255,.4)}.ui-btn:focus,.ui-link-inherit:focus{outline:0}.ui-btn.ui-focus{z-index:1}.ui-focus,.ui-btn:focus{-moz-box-shadow:inset 0 0 3px #387bbe,0px 0 9px #387bbe;-webkit-box-shadow:inset 0 0 3px #387bbe,0px 0 9px #387bbe;box-shadow:inset 0 0 3px #387bbe,0px 0 9px #387bbe}.ui-input-text.ui-focus,.ui-input-search.ui-focus{-moz-box-shadow:0 0 12px #387bbe;-webkit-box-shadow:0 0 12px #387bbe;box-shadow:0 0 12px #387bbe}.ui-mobile-nosupport-boxshadow *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui-mobile-nosupport-boxshadow .ui-focus,.ui-mobile-nosupport-boxshadow .ui-btn:focus,.ui-mobile-nosupport-boxshadow .ui-link-inherit:focus{outline-width:1px;outline-style:auto}.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}.ui-mobile-viewport{margin:0;overflow-x:visible;-webkit-text-size-adjust:100%;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}body.ui-mobile-viewport,div.ui-mobile-viewport{overflow-x:hidden}.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}.ui-page{outline:none}@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}}.ui-loading .ui-loader{display:block}.ui-loader{display:none;z-index:9999999;position:fixed;top:50%;left:50%;border:0}.ui-loader-default{background:none;filter:Alpha(Opacity=18);opacity:.18;width:46px;height:46px;margin-left:-23px;margin-top:-23px}.ui-loader-verbose{width:200px;filter:Alpha(Opacity=88);opacity:.88;box-shadow:0 1px 1px -1px #fff;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;filter:Alpha(Opacity=75);opacity:.75}.ui-loader-textonly{padding:15px;margin-left:-115px}.ui-loader-textonly .ui-icon{display:none}.ui-loader-fakefix{position:absolute}.ui-mobile-rendering > *{visibility:hidden}.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;zoom:1}.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}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:15px}.ui-icon{width:18px;height:18px}.ui-nojs{position:absolute;left:-9999px}.ui-hide-label label.ui-input-text,.ui-hide-label label.ui-select,.ui-hide-label label.ui-slider,.ui-hide-label label.ui-submit,.ui-hide-label .ui-controlgroup-label,.ui-hidden-accessible{position:absolute!important;left:-9999px;clip:rect(1px);clip:rect(1px,1px,1px,1px)}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-page-pre-in{opacity:0}.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:225ms}@-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}}@-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)}}@-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}.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%)}}.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%)}}.viewport-flip{-webkit-perspective:1000;-moz-perspective:1000;position:absolute}.flip{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-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)}}.viewport-turn{-webkit-perspective:1000;-moz-perspective:1000;position:absolute}.turn{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-webkit-transform-origin:0;-moz-backface-visibility:hidden;-moz-transform:translateX(0);-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{-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)}}.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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui-grid-solo .ui-block-a{display:block;float:none}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:49.95%}.ui-grid-a >:nth-child(n){width:50%;margin-right:-.5px}.ui-grid-a .ui-block-a{clear:left}.ui-grid-b .ui-block-a,.ui-grid-b .ui-block-b,.ui-grid-b .ui-block-c{width:33.25%}.ui-grid-b >:nth-child(n){width:33.333%;margin-right:-.5px}.ui-grid-b .ui-block-a{clear:left}.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:24.925%}.ui-grid-c >:nth-child(n){width:25%;margin-right:-.5px}.ui-grid-c .ui-block-a{clear:left}.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:19.925%}.ui-grid-d >:nth-child(n){width:20%}.ui-grid-d .ui-block-a{clear:left}.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{filter:Alpha(Opacity=90);opacity:.9}.ui-page-header-fixed{padding-top:2.6875em}.ui-page-footer-fixed{padding-bottom:2.6875em}.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:-9999px}.ui-header-fixed .ui-btn,.ui-footer-fixed .ui-btn{z-index:10}.ui-navbar{max-width:100%}.ui-navbar.ui-mini{margin:0}.ui-navbar ul:before,.ui-navbar ul:after{content:" ";display:table}.ui-navbar ul:after{clear:both}.ui-navbar ul{list-style:none;margin:0;padding:0;position:relative;display:block;border:0;max-width:100%;overflow:visible;zoom:1}.ui-navbar li .ui-btn{display:block;text-align:center;margin:0 -1px 0 0;border-right-width:0}.ui-navbar li .ui-btn-icon-right .ui-icon{right:6px}.ui-navbar li:last-child .ui-btn,.ui-navbar .ui-grid-duo .ui-block-b .ui-btn{margin-right:0;border-right-width:1px}.ui-header .ui-navbar li:last-child .ui-btn,.ui-footer .ui-navbar li:last-child .ui-btn,.ui-header .ui-navbar .ui-grid-duo .ui-block-b .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-block-b .ui-btn{margin-right:-1px;border-right-width:0}.ui-navbar .ui-grid-duo li.ui-block-a:last-child .ui-btn{margin-right:-1px;border-right-width:1px}.ui-header .ui-navbar li .ui-btn,.ui-footer .ui-navbar li .ui-btn{border-top-width:0;border-bottom-width:0}.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn,.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn{margin-right:-5px}.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn,.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn{margin-right:-4px}.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon{right:8px}.ui-navbar li .ui-btn .ui-btn-inner{padding-top:.7em;padding-bottom:.8em}.ui-navbar li .ui-btn-icon-top .ui-btn-inner{padding-top:30px}.ui-navbar li .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:30px}.ui-btn{display:block;text-align:center;cursor:pointer;position:relative;margin:.5em 0;padding:0}.ui-mini{margin-top:.25em;margin-bottom:.25em}.ui-btn-left,.ui-btn-right,.ui-input-clear,.ui-btn-inline,.ui-grid-a .ui-btn,.ui-grid-b .ui-btn,.ui-grid-c .ui-btn,.ui-grid-d .ui-btn,.ui-grid-e .ui-btn,.ui-grid-solo .ui-btn{margin-right:5px;margin-left:5px}.ui-btn-inner{font-size:16px;padding:.6em 20px;min-width:.75em;display:block;position:relative;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;zoom:1}.ui-btn input,.ui-btn button{z-index:2}.ui-btn-left,.ui-btn-right,.ui-btn-inline{display:inline-block;vertical-align:middle}.ui-mobile .ui-btn-left,.ui-mobile .ui-btn-right{margin:0}.ui-btn-block{display:block}.ui-header > .ui-btn,.ui-footer > .ui-btn{display:inline-block;margin:0}.ui-header .ui-btn-block,.ui-footer .ui-btn-block{display:block}.ui-header .ui-btn-inner,.ui-footer .ui-btn-inner,.ui-mini .ui-btn-inner{font-size:12.5px;padding:.55em 11px .5em}.ui-fullsize .ui-btn-inner,.ui-fullsize .ui-btn-inner{font-size:16px;padding:.6em 20px}.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;float:left}.ui-btn-text{position:relative;z-index:1;width:100%;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.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,.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,.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{padding:30px 3px .5em 3px}.ui-mini.ui-btn-icon-top .ui-btn-inner,.ui-mini .ui-btn-icon-top .ui-btn-inner{padding-top:30px}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer .ui-btn-icon-bottom .ui-btn-inner{padding:.55em 3px 30px 3px}.ui-mini.ui-btn-icon-bottom .ui-btn-inner,.ui-mini .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:30px}.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}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:none;cursor:pointer;background:#fff;background:rgba(255,255,255,0);filter:Alpha(Opacity=0);opacity:.1;font-size:1px;border:none;text-indent:-9999px}.ui-disabled .ui-btn-hidden{display:none}.ui-disabled{z-index:1}.ui-field-contain .ui-btn.ui-submit{margin:0}label.ui-submit{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}@media all and (min-width:450px){.ui-field-contain label.ui-submit{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-btn.ui-submit{width:78%;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui-hide-label .ui-btn.ui-submit{width:auto;display:block}}.ui-collapsible-inset{margin:.5em 0}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -15px;padding:0;position:relative}.ui-collapsible-inset .ui-collapsible-heading{margin:0}.ui-collapsible-heading .ui-btn{text-align:left;margin:0;border-left-width:0;border-right-width:0}.ui-collapsible-inset .ui-collapsible-heading .ui-btn{border-right-width:1px;border-left-width:1px}.ui-collapsible-collapsed + .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:0}.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:1px}.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 .ui-btn span.ui-btn{position:absolute;left:6px;top:50%;margin:-12px 0 0 0;width:20px;height:20px;padding:1px 0 1px 2px;text-indent:-9999px}.ui-collapsible-heading .ui-btn span.ui-btn .ui-btn-inner{padding:10px 0}.ui-collapsible-heading .ui-btn span.ui-btn .ui-icon{left:0;margin-top:-10px}.ui-collapsible-heading-status{position:absolute;top:-9999px;left:0}.ui-collapsible-content{display:block;margin:0 -15px;padding:10px 15px;border-left-width:0;border-right-width:0;border-top:none;background-image:none}.ui-collapsible-inset .ui-collapsible-content{margin:0;border-right-width:1px;border-left-width:1px}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible{margin:-1px 0 0}.ui-collapsible-set .ui-collapsible:first-child{margin-top:0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0;zoom:1}.ui-controlgroup.ui-mini,fieldset.ui-controlgroup.ui-mini{margin:.25em 0}.ui-field-contain .ui-controlgroup,.ui-field-contain fieldset.ui-controlgroup{margin:0}.ui-bar .ui-controlgroup{margin:0 5px}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .4em}.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-vertical .ui-controlgroup-last{border-bottom-width:1px}.ui-controlgroup-controls label.ui-select{position:absolute;left:-9999px}.ui-controlgroup .ui-btn-icon-notext{width:auto;height:auto;top:auto}.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner{height:20px;padding:.6em 20px .6em 20px}.ui-controlgroup-horizontal .ui-btn-icon-notext .ui-btn-inner{width:18px}.ui-controlgroup.ui-mini .ui-btn-icon-notext .ui-btn-inner,.ui-header .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner,.ui-footer .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner{height:16px;padding:.55em 11px .5em 11px}.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner .ui-icon{position:absolute;top:50%;right:50%;margin:-9px -9px 0 0}.ui-controlgroup-horizontal .ui-controlgroup-controls:before,.ui-controlgroup-horizontal .ui-controlgroup-controls:after{content:"";display:table}.ui-controlgroup-horizontal .ui-controlgroup-controls:after{clear:both}.ui-controlgroup-horizontal .ui-controlgroup-controls{display:inline-block;vertical-align:middle;zoom:1}.ui-controlgroup-horizontal .ui-btn-inner{text-align:center}.ui-controlgroup-horizontal.ui-mini .ui-btn-inner{height:16px;line-height:16px}.ui-controlgroup-horizontal .ui-btn,.ui-controlgroup-horizontal .ui-select,.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio{float:left;clear:none;margin:0 -1px 0 0}.ui-controlgroup-horizontal .ui-select .ui-btn,.ui-controlgroup-horizontal .ui-checkbox .ui-btn,.ui-controlgroup-horizontal .ui-radio .ui-btn{float:none;margin:0}.ui-controlgroup-horizontal .ui-controlgroup-last,.ui-controlgroup-horizontal .ui-select:last-child,.ui-controlgroup-horizontal .ui-checkbox:last-child,.ui-controlgroup-horizontal .ui-radio:last-child{margin-right:0}.ui-controlgroup .ui-checkbox label,.ui-controlgroup .ui-radio label{font-size:16px}@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:78%;display:inline-block}.ui-field-contain .ui-controlgroup .ui-select{width:100%;display:block}.ui-field-contain .ui-controlgroup-horizontal .ui-select{width:auto}.ui-hide-label .ui-controlgroup-controls{width:100%}}.ui-dialog{background:none!important}.ui-dialog-contain{width:92.5%;max-width:500px;margin:10% auto 15px auto;padding:0;position:relative;top:-15px}.ui-dialog-contain > .ui-header,.ui-dialog-contain > .ui-content,.ui-dialog-contain > .ui-footer{display:block;position:relative;width:auto;margin:0}.ui-dialog-contain > .ui-header{border:none;overflow:hidden;z-index:10;padding:0}.ui-dialog-contain > .ui-content{padding:15px}.ui-dialog-contain > .ui-footer{z-index:10;padding:0 15px}.ui-popup-open .ui-header-fixed,.ui-popup-open .ui-footer-fixed{position:absolute!important}.ui-popup-screen{background-image:url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==);top:0;left:0;right:0;bottom:1px;position:absolute;filter:Alpha(Opacity=0);opacity:0;z-index:1099}.ui-popup-screen.in{opacity:0.5;filter:Alpha(Opacity=50)}.ui-popup-screen.out{opacity:0;filter:Alpha(Opacity=0)}.ui-popup-container{z-index:1100;display:inline-block;position:absolute;padding:0;outline:0}.ui-popup{position:relative}.ui-popup.ui-content,.ui-popup .ui-content{overflow:visible}.ui-popup > p,.ui-popup > h1,.ui-popup > h2,.ui-popup > h3,.ui-popup > h4,.ui-popup > h5,.ui-popup > h6{margin:.5em 7px}.ui-popup > span{display:block;margin:.5em 7px}.ui-popup .ui-title{font-size:16px;font-weight:bold;margin-top:.5em;margin-bottom:.5em}.ui-popup-container .ui-content > p,.ui-popup-container .ui-content > h1,.ui-popup-container .ui-content > h2,.ui-popup-container .ui-content > h3,.ui-popup-container .ui-content > h4,.ui-popup-container .ui-content > h5,.ui-popup-container .ui-content > h6{margin:.5em 0}.ui-popup-container .ui-content > span{margin:0}.ui-popup-container .ui-content > p:first-child,.ui-popup-container .ui-content > h1:first-child,.ui-popup-container .ui-content > h2:first-child,.ui-popup-container .ui-content > h3:first-child,.ui-popup-container .ui-content > h4:first-child,.ui-popup-container .ui-content > h5:first-child,.ui-popup-container .ui-content > h6:first-child{margin-top:0}.ui-popup-container .ui-content > p:last-child,.ui-popup-container .ui-content > h1:last-child,.ui-popup-container .ui-content > h2:last-child,.ui-popup-container .ui-content > h3:last-child,.ui-popup-container .ui-content > h4:last-child,.ui-popup-container .ui-content > h5:last-child,.ui-popup-container .ui-content > h6:last-child{margin-bottom:0}.ui-popup > img{width:auto;height:auto;max-width:100%;max-height:100%;vertical-align:middle}.ui-popup iframe{vertical-align:middle}@media all and (min-width:450px){.ui-popup .ui-field-contain label.ui-submit,.ui-popup .ui-field-contain .ui-controlgroup-label,.ui-popup .ui-field-contain label.ui-select,.ui-popup .ui-field-contain label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:normal;margin:0 0 .3em}.ui-popup .ui-field-contain .ui-btn.ui-submit,.ui-popup .ui-field-contain .ui-controlgroup-controls,.ui-popup .ui-field-contain .ui-select,.ui-popup .ui-field-contain input.ui-input-text,.ui-popup .ui-field-contain textarea.ui-input-text,.ui-popup .ui-field-contain .ui-input-search{width:100%;display:block}}.ui-popup > .ui-btn-left,.ui-popup > .ui-btn-right{position:absolute;top:-9px;margin:0;z-index:1101}.ui-popup > .ui-btn-left{left:-9px}.ui-popup > .ui-btn-right{right:-9px}.ui-popup.ui-corner-all > .ui-header,.ui-popup.ui-corner-all ~ .ui-content,.ui-popup.ui-corner-all > .ui-content:first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-popup.ui-corner-all > .ui-content,.ui-popup.ui-corner-all > .ui-footer,.ui-popup.ui-corner-all > .ui-header:nth-child(n):last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-popup.ui-corner-all > .ui-content:nth-child(2),.ui-popup.ui-corner-all > .ui-header:nth-child(2){-webkit-border-top-left-radius:0;border-top-left-radius:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.ui-popup.ui-corner-all > .ui-content:nth-last-child(1n+2),.ui-popup.ui-corner-all > .ui-footer:nth-last-child(1n+2){-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.ui-popup.ui-corner-all > .ui-header:only-child,.ui-popup.ui-corner-all > .ui-footer:only-child{-webkit-border-radius:inherit;border-radius:inherit}.ui-checkbox,.ui-radio{position:relative;clear:both;margin:0;z-index:1}.ui-checkbox .ui-btn,.ui-radio .ui-btn{margin-top:.5em;margin-bottom:.5em;text-align:left;z-index:2}.ui-checkbox .ui-btn.ui-mini,.ui-radio .ui-btn.ui-mini{margin:.25em 0}.ui-controlgroup .ui-checkbox .ui-btn,.ui-controlgroup .ui-radio .ui-btn{margin:0}.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}.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:last-child{border-bottom-width:0}.ui-field-contain{max-width:100%}@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}.ui-field-contain .ui-select .ui-btn{margin:0}.ui-select .ui-btn select{cursor:pointer;-webkit-appearance:none;left:0;top:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;filter:Alpha(Opacity=0);opacity:0;z-index:2}.ui-select .ui-disabled{opacity:.3}.ui-select .ui-disabled select{display:none}@-moz-document url-prefix(){.ui-select .ui-btn select{opacity:0.0001}}.ui-select .ui-btn.ui-select-nativeonly{border-radius:0;border:0}.ui-select .ui-btn.ui-select-nativeonly select{opacity:1;text-indent:0;display:block}.ui-select .ui-disabled.ui-select-nativeonly .ui-btn-inner{opacity:0}.ui-select .ui-btn-icon-right .ui-btn-inner,.ui-select .ui-li-has-count .ui-btn-inner{padding-right:45px}.ui-select .ui-mini.ui-btn-icon-right .ui-btn-inner{padding-right:32px}.ui-select .ui-btn-icon-right.ui-li-has-count .ui-btn-inner{padding-right:80px}.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-btn-inner{padding-right:67px}.ui-select .ui-btn-icon-right .ui-icon{right:15px}.ui-select .ui-mini.ui-btn-icon-right .ui-icon{right:7px}.ui-select .ui-btn-icon-right.ui-li-has-count .ui-li-count{right:45px}.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-li-count{right:32px}label.ui-select{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}.ui-select .ui-btn-text,.ui-selectmenu .ui-btn-text{display:block;min-height:1em;overflow:hidden!important}.ui-select .ui-btn-text{text-overflow:ellipsis}.ui-selectmenu{padding:6px;min-width:160px}.ui-selectmenu .ui-listview{margin:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-selectmenu-hidden{top:-99999px;left:-9999px}.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{margin:0;padding:0}.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:78%;display:inline-block}.ui-hide-label .ui-select{width:100%}}.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;margin:.5em 0;line-height:1.4;font-size:16px;display:block;width:100%;outline:0}input.ui-input-text.ui-mini,textarea.ui-input-text.ui-mini{margin:.25em 0}.ui-field-contain input.ui-input-text,.ui-field-contain textarea.ui-input-text{margin:0}input.ui-input-text,textarea.ui-input-text,.ui-input-search{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}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;margin:.5em 0;background-image:none;position:relative}.ui-input-search.ui-mini{margin:.25em 0}.ui-field-contain .ui-input-search{margin:0}.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}@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:78%;display:inline-block}.ui-hide-label input.ui-input-text,.ui-hide-label textarea.ui-input-text,.ui-hide-label .ui-input-search{width:100%}.ui-input-search input.ui-input-text{width:98%}}.ui-listview{margin:0}ol.ui-listview,ol.ui-listview .ui-li-divider{counter-reset:listnumbering}.ui-content .ui-listview{margin:-15px}.ui-collapsible-content > .ui-listview{margin:-10px -15px}.ui-content .ui-listview-inset{margin:1em 0}.ui-collapsible-content .ui-listview-inset{margin:.5em 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{margin:0}.ui-li .ui-btn-text a.ui-link-inherit{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-static{background-image:none}.ui-li-divider{padding:.5em 15px;font-size:14px;font-weight:bold}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}.ui-listview-inset .ui-li{border-right-width:1px;border-left-width:1px}.ui-li-last,.ui-li.ui-field-contain.ui-li-last{border-bottom-width:1px}.ui-collapsible [class*="ui-body"] > .ui-listview:not(.ui-listview-inset) .ui-li-last{border-bottom-width:0}.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) .ui-li:first-child{border-top-width:0}.ui-collapsible-content > .ui-listview:not(.ui-listview-inset),.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) .ui-li-last{-webkit-border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) .ui-li-last .ui-li-link-alt{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.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;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,.ui-li-divider.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:40px}.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-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:16px;max-width:16px;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:53px}.ui-li-has-alt.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-alt.ui-li-has-count{padding-right:88px}.ui-li-has-count .ui-li-count{position:absolute;font-size:11px;font-weight:bold;padding:.2em .5em;top:50%;margin-top:-.9em;right:10px}.ui-li-has-count.ui-li-divider .ui-li-count,.ui-li-has-count .ui-link-inherit .ui-li-count{margin-top:-.95em}.ui-li-has-arrow.ui-li-has-count .ui-li-count{right:40px}.ui-li-has-alt.ui-li-has-count .ui-li-count{right:53px}.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:-13px 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-li-link-alt .ui-btn-icon-notext .ui-btn-inner .ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-listview * .ui-btn-inner > .ui-btn > .ui-btn-inner{border-top:0}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px 15px -15px}.ui-collapsible-content .ui-listview-filter{margin:-10px -15px 10px -15px;border-bottom:inherit}.ui-listview-filter-inset{margin:-15px -5px;background:transparent}.ui-collapsible-content .ui-listview-filter-inset{margin:-5px;border-bottom-width:0}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block}.ui-li.ui-screen-hidden{display:none}@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;background-image:none;padding:.4em;margin:.5em 0;line-height:1.4;font-size:16px;outline:0}input.ui-slider-input.ui-mini,.ui-field-contain input.ui-slider-input.ui-mini{width:45px;margin:.25em 0;font-size:14px}.ui-field-contain input.ui-slider-input{margin:0}input.ui-slider-input,.ui-field-contain input.ui-slider-input{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;-ms-box-sizing:content-box;box-sizing:content-box}.ui-slider-input::-webkit-outer-spin-button{margin:0}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;top:2px}div.ui-slider-bg{border:none;height:100%;padding-right:8px}.ui-controlgroup a.ui-slider-handle,a.ui-btn.ui-slider-handle{position:absolute;z-index:1;top:50%;width:28px;height:28px;margin:-15px 0 0 -15px;outline:0}a.ui-btn.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;border-top:none}@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:1px 0 0 -15px}.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} \ No newline at end of file diff --git a/applications/admin/static/plugin_jqmobile/jquery.mobile-1.2.0.min.js b/applications/admin/static/plugin_jqmobile/jquery.mobile-1.2.0.min.js deleted file mode 100644 index 83f0bd33..00000000 --- a/applications/admin/static/plugin_jqmobile/jquery.mobile-1.2.0.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery Mobile vGit Build: SHA1: c2d61e2e592c67519d9a9ed0ba796fa44787e136 <> Date: Tue Sep 25 10:38:12 2012 -0700 jquerymobile.com | jquery.org/license !*/ -(function(a,b,c){typeof define=="function"&&define.amd?define(["jquery"],function(d){return c(d,a,b),d.mobile}):c(a.jQuery,a,b)})(this,document,function(a,b,c,d){(function(a,b,d){var e={};a.mobile=a.extend({},{version:"1.2.0",ns:"",subPageUrlKey:"ui-page",activePageClass:"ui-page-active",activeBtnClass:"ui-btn-active",focusClass:"ui-focus",ajaxEnabled:!0,hashListeningEnabled:!0,linkBindingEnabled:!0,defaultPageTransition:"fade",maxTransitionWidth:!1,minScrollBack:250,touchOverflowEnabled:!1,defaultDialogTransition:"pop",pageLoadErrorMessage:"Error Loading Page",pageLoadErrorMessageTheme:"e",phonegapNavigationEnabled:!1,autoInitializePage:!0,pushStateEnabled:!0,ignoreContentEnabled:!1,orientationChangeEnabled:!0,buttonMarkup:{hoverDelay:200},keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91},silentScroll:function(d){a.type(d)!=="number"&&(d=a.mobile.defaultHomeScroll),a.event.special.scrollstart.enabled=!1,setTimeout(function(){b.scrollTo(0,d),a(c).trigger("silentscroll",{x:0,y:d})},20),setTimeout(function(){a.event.special.scrollstart.enabled=!0},150)},nsNormalizeDict:e,nsNormalize:function(b){if(!b)return;return e[b]||(e[b]=a.camelCase(a.mobile.ns+b))},getInheritedTheme:function(a,b){var c=a[0],d="",e=/ui-(bar|body|overlay)-([a-z])\b/,f,g;while(c){f=c.className||"";if(f&&(g=e.exec(f))&&(d=g[2]))break;c=c.parentNode}return d||b||"a"},closestPageData:function(a){return a.closest(':jqmData(role="page"), :jqmData(role="dialog")').data("page")},enhanceable:function(a){return this.haveParents(a,"enhance")},hijackable:function(a){return this.haveParents(a,"ajax")},haveParents:function(b,c){if(!a.mobile.ignoreContentEnabled)return b;var d=b.length,e=a(),f,g,h;for(var i=0;i").text(a(this).text()).html()},a.fn.jqmEnhanceable=function(){return a.mobile.enhanceable(this)},a.fn.jqmHijackable=function(){return a.mobile.hijackable(this)};var f=a.find,g=/:jqmData\(([^)]*)\)/g;a.find=function(b,c,d,e){return b=b.replace(g,"[data-"+(a.mobile.ns||"")+"$1]"),f.call(this,b,c,d,e)},a.extend(a.find,f),a.find.matches=function(b,c){return a.find(b,null,null,c)},a.find.matchesSelector=function(b,c){return a.find(c,null,null,[b]).length>0}})(a,this),function(a,b){var c=0,d=Array.prototype.slice,e=a.cleanData;a.cleanData=function(b){for(var c=0,d;(d=b[c])!=null;c++)try{a(d).triggerHandler("remove")}catch(f){}e(b)},a.widget=function(b,c,d){var e,f,g,h,i=b.split(".")[0];b=b.split(".")[1],e=i+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][e]=function(b){return!!a.data(b,e)},a[i]=a[i]||{},f=a[i][b],g=a[i][b]=function(a,b){if(!this._createWidget)return new g(a,b);arguments.length&&this._createWidget(a,b)},a.extend(g,f,{version:d.version,_proto:a.extend({},d),_childConstructors:[]}),h=new c,h.options=a.widget.extend({},h.options),a.each(d,function(b,e){a.isFunction(e)&&(d[b]=function(){var a=function(){return c.prototype[b].apply(this,arguments)},d=function(a){return c.prototype[b].apply(this,a)};return function(){var b=this._super,c=this._superApply,f;return this._super=a,this._superApply=d,f=e.apply(this,arguments),this._super=b,this._superApply=c,f}}())}),g.prototype=a.widget.extend(h,{widgetEventPrefix:b},d,{constructor:g,namespace:i,widgetName:b,widgetBaseClass:e,widgetFullName:e}),f?(a.each(f._childConstructors,function(b,c){var d=c.prototype;a.widget(d.namespace+"."+d.widgetName,g,c._proto)}),delete f._childConstructors):c._childConstructors.push(g),a.widget.bridge(b,g)},a.widget.extend=function(c){var e=d.call(arguments,1),f=0,g=e.length,h,i;for(;f",options:{disabled:!1,create:null},_createWidget:function(b,d){d=a(d||this.defaultElement||this)[0],this.element=a(d),this.uuid=c++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=a.widget.extend({},this.options,this._getCreateOptions(),b),this.bindings=a(),this.hoverable=a(),this.focusable=a(),d!==this&&(a.data(d,this.widgetName,this),a.data(d,this.widgetFullName,this),this._on({remove:"destroy"}),this.document=a(d.style?d.ownerDocument:d.document||d),this.window=a(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:a.noop,_getCreateEventData:a.noop,_create:a.noop,_init:a.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(a.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:a.noop,widget:function(){return this.element},option:function(c,d){var e=c,f,g,h;if(arguments.length===0)return a.widget.extend({},this.options);if(typeof c=="string"){e={},f=c.split("."),c=f.shift();if(f.length){g=e[c]=a.widget.extend({},this.options[c]);for(h=0;h"+""+"

"+"",fakeFixLoader:function(){var b=a("."+a.mobile.activeBtnClass).first();this.element.css({top:a.support.scrollTop&&f.scrollTop()+f.height()/2||b.length&&b.offset().top||100})},checkLoaderPosition:function(){var b=this.element.offset(),c=f.scrollTop(),d=a.mobile.getScreenHeight();if(b.topd)this.element.addClass("ui-loader-fakefix"),this.fakeFixLoader(),f.unbind("scroll",this.checkLoaderPosition).bind("scroll",this.fakeFixLoader)},resetHtml:function(){this.element.html(a(this.defaultHtml).html())},show:function(b,g,h){var i,j,k,l;this.resetHtml(),a.type(b)==="object"?(l=a.extend({},this.options,b),b=l.theme||a.mobile.loadingMessageTheme):(l=this.options,b=b||a.mobile.loadingMessageTheme||l.theme),j=g||a.mobile.loadingMessage||l.text,e.addClass("ui-loading");if(a.mobile.loadingMessage!==!1||l.html)a.mobile.loadingMessageTextVisible!==d?i=a.mobile.loadingMessageTextVisible:i=l.textVisible,this.element.attr("class",c+" ui-corner-all ui-body-"+b+" ui-loader-"+(i||g||b.text?"verbose":"default")+(l.textonly||h?" ui-loader-textonly":"")),l.html?this.element.html(l.html):this.element.find("h1").text(j),this.element.appendTo(a.mobile.pageContainer),this.checkLoaderPosition(),f.bind("scroll",a.proxy(this.checkLoaderPosition,this))},hide:function(){e.removeClass("ui-loading"),a.mobile.loadingMessage&&this.element.removeClass("ui-loader-fakefix"),a(b).unbind("scroll",a.proxy(this.fakeFixLoader,this)),a(b).unbind("scroll",a.proxy(this.checkLoaderPosition,this))}}),f.bind("pagecontainercreate",function(){a.mobile.loaderWidget=a.mobile.loaderWidget||a(a.mobile.loader.prototype.defaultHtml).loader()})}(a,this),function(a,b,c,d){function x(a){while(a&&typeof a.originalEvent!="undefined")a=a.originalEvent;return a}function y(b,c){var e=b.type,f,g,i,k,l,m,n,o,p;b=a.Event(b),b.type=c,f=b.originalEvent,g=a.event.props,e.search(/^(mouse|click)/)>-1&&(g=j);if(f)for(n=g.length,k;n;)k=g[--n],b[k]=f[k];e.search(/mouse(down|up)|click/)>-1&&!b.which&&(b.which=1);if(e.search(/^touch/)!==-1){i=x(f),e=i.touches,l=i.changedTouches,m=e&&e.length?e[0]:l&&l.length?l[0]:d;if(m)for(o=0,p=h.length;oe||Math.abs(c.pageY-n)>e,o&&!d&&H("vmousecancel",b,f),H("vmousemove",b,f),F()}function M(a){if(r)return;C();var b=z(a.target),c;H("vmouseup",a,b);if(!o){var d=H("vclick",a,b);d&&d.isDefaultPrevented()&&(c=x(a).changedTouches[0],p.push({touchID:v,x:c.clientX,y:c.clientY}),q=!0)}H("vmouseout",a,b),o=!1,F()}function N(b){var c=a.data(b,e),d;if(c)for(d in c)if(c[d])return!0;return!1}function O(){}function P(b){var c=b.substr(1);return{setup:function(d,f){N(this)||a.data(this,e,{});var g=a.data(this,e);g[b]=!0,k[b]=(k[b]||0)+1,k[b]===1&&t.bind(c,I),a(this).bind(c,O),s&&(k.touchstart=(k.touchstart||0)+1,k.touchstart===1&&t.bind("touchstart",J).bind("touchend",M).bind("touchmove",L).bind("scroll",K))},teardown:function(d,f){--k[b],k[b]||t.unbind(c,I),s&&(--k.touchstart,k.touchstart||t.unbind("touchstart",J).unbind("touchmove",L).unbind("touchend",M).unbind("scroll",K));var g=a(this),h=a.data(this,e);h&&(h[b]=!1),g.unbind(c,O),N(this)||g.removeData(e)}}}var e="virtualMouseBindings",f="virtualTouchID",g="vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),h="clientX clientY pageX pageY screenX screenY".split(" "),i=a.event.mouseHooks?a.event.mouseHooks.props:[],j=a.event.props.concat(i),k={},l=0,m=0,n=0,o=!1,p=[],q=!1,r=!1,s="addEventListener"in c,t=a(c),u=1,v=0,w;a.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10,resetTimerDuration:1500};for(var Q=0;Qa.event.special.swipe.scrollSupressionThreshold&&b.preventDefault()}var e=b.originalEvent.touches?b.originalEvent.touches[0]:b,f={time:(new Date).getTime(),coords:[e.pageX,e.pageY],origin:a(b.target)},g;c.bind(i,j).one(h,function(b){c.unbind(i,j),f&&g&&g.time-f.timea.event.special.swipe.horizontalDistanceThreshold&&Math.abs(f.coords[1]-g.coords[1])g.coords[0]?"swipeleft":"swiperight"),f=g=d})})}},a.each({scrollstop:"scrollstart",taphold:"tap",swipeleft:"swipe",swiperight:"swipe"},function(b,c){a.event.special[b]={setup:function(){a(this).bind(c,a.noop)}}})}(a,this),function(a,c){a.extend(a.support,{orientation:"orientation"in b&&"onorientationchange"in b})}(a),function(a){a.event.special.throttledresize={setup:function(){a(this).bind("resize",c)},teardown:function(){a(this).unbind("resize",c)}};var b=250,c=function(){f=(new Date).getTime(),g=f-d,g>=b?(d=f,a(this).trigger("throttledresize")):(e&&clearTimeout(e),e=setTimeout(c,b-g))},d=0,e,f,g}(a),function(a,b){function o(){var a=g();a!==h&&(h=a,d.trigger(e))}var d=a(b),e="orientationchange",f,g,h,i,j,k={0:!0,180:!0};if(a.support.orientation){var l=b.innerWidth||a(b).width(),m=b.innerHeight||a(b).height(),n=50;i=l>m&&l-m>n,j=k[b.orientation];if(i&&j||!i&&!j)k={"-90":!0,90:!0}}a.event.special.orientationchange=a.extend({},a.event.special.orientationchange,{setup:function(){if(a.support.orientation&&!a.event.special.orientationchange.disabled)return!1;h=g(),d.bind("throttledresize",o)},teardown:function(){if(a.support.orientation&&!a.event.special.orientationchange.disabled)return!1;d.unbind("throttledresize",o)},add:function(a){var b=a.handler;a.handler=function(a){return a.orientation=g(),b.apply(this,arguments)}}}),a.event.special.orientationchange.orientation=g=function(){var d=!0,e=c.documentElement;return a.support.orientation?d=k[b.orientation]:d=e&&e.clientWidth/e.clientHeight<1.1,d?"portrait":"landscape"},a.fn[e]=function(a){return a?this.bind(e,a):this.trigger(e)},a.attrFn&&(a.attrFn[e]=!0)}(a,this),function(a,d){var e=a(b),f=a("html");a.mobile.media=function(){var b={},d=a("
"),e=a("").append(d);return function(a){if(!(a in b)){var g=c.createElement("style"),h="@media "+a+" { #jquery-mediatest { position:absolute; } }";g.type="text/css",g.styleSheet?g.styleSheet.cssText=h:g.appendChild(c.createTextNode(h)),f.prepend(e).prepend(g),b[a]=d.css("position")==="absolute",e.add(g).remove()}return b[a]}}()}(a),function(a,d){function e(a){var b=a.charAt(0).toUpperCase()+a.substr(1),c=(a+" "+h.join(b+" ")+b).split(" ");for(var e in c)if(g[c[e]]!==d)return!0}function m(a,b,d){var e=c.createElement("div"),f=function(a){return a.charAt(0).toUpperCase()+a.substr(1)},g=function(a){return"-"+a.charAt(0).toLowerCase()+a.substr(1)+"-"},i=function(c){var d=g(c)+a+": "+b+";",h=f(c),i=h+f(a);e.setAttribute("style",d),!e.style[i]||(k=!0)},j=d?[d]:h,k;for(var l=0;l",{href:b}).appendTo("head"),g=a("").prependTo(f),h=g[0].href,c[0].href=e||location.pathname,d&&d.remove(),h.indexOf(b)===0}function p(){var a=c.createElement("x"),d=c.documentElement,e=b.getComputedStyle,f;return"pointerEvents"in a.style?(a.style.pointerEvents="auto",a.style.pointerEvents="x",d.appendChild(a),f=e&&e(a,"").pointerEvents==="auto",d.removeChild(a),!!f):!1}function q(){var a=c.createElement("div");return typeof a.getBoundingClientRect!="undefined"}var f=a("").prependTo("html"),g=f[0].style,h=["Webkit","Moz","O"],i="palmGetResource"in b,j=b.opera,k=b.operamini&&{}.toString.call(b.operamini)==="[object OperaMini]",l=b.blackberry&&!e("-webkit-transform");a.extend(a.mobile,{browser:{}}),a.mobile.browser.ie=function(){var a=3,b=c.createElement("div"),d=b.all||[];do b.innerHTML="";while(d[0]);return a>4?a:!a}(),a.extend(a.support,{cssTransitions:"WebKitTransitionEvent"in b||m("transition","height 100ms linear")&&!j,pushState:"pushState"in history&&"replaceState"in history,mediaquery:a.mobile.media("only all"),cssPseudoElement:!!e("content"),touchOverflow:!!e("overflowScrolling"),cssTransform3d:n(),boxShadow:!!e("boxShadow")&&!l,scrollTop:("pageXOffset"in b||"scrollTop"in c.documentElement||"scrollTop"in f[0])&&!i&&!k,dynamicBaseTag:o(),cssPointerEvents:p(),boundingRect:q()}),f.remove();var r=function(){var a=b.navigator.userAgent;return a.indexOf("Nokia")>-1&&(a.indexOf("Symbian/3")>-1||a.indexOf("Series60/5")>-1)&&a.indexOf("AppleWebKit")>-1&&a.match(/(BrowserNG|NokiaBrowser)\/7\.[0-3]/)}();a.mobile.gradeA=function(){return(a.support.mediaquery||a.mobile.browser.ie&&a.mobile.browser.ie>=7)&&(a.support.boundingRect||a.fn.jquery.match(/1\.[0-7+]\.[0-9+]?/)!==null)},a.mobile.ajaxBlacklist=b.blackberry&&!b.WebKitPoint||k||r,r&&a(function(){a("head link[rel='stylesheet']").attr("rel","alternate stylesheet").attr("rel","stylesheet")}),a.support.boxShadow||a("html").addClass("ui-mobile-nosupport-boxshadow")}(a),function(a,b){a.widget("mobile.page",a.mobile.widget,{options:{theme:"c",domCache:!1,keepNativeDefault:":jqmData(role='none'), :jqmData(role='nojs')"},_create:function(){var a=this;if(a._trigger("beforecreate")===!1)return!1;a.element.attr("tabindex","0").addClass("ui-page ui-body-"+a.options.theme).bind("pagebeforehide",function(){a.removeContainerBackground()}).bind("pagebeforeshow",function(){a.setContainerBackground()})},removeContainerBackground:function(){a.mobile.pageContainer.removeClass("ui-overlay-"+a.mobile.getInheritedTheme(this.element.parent()))},setContainerBackground:function(b){this.options.theme&&a.mobile.pageContainer.addClass("ui-overlay-"+(b||this.options.theme))},keepNativeSelector:function(){var b=this.options,c=b.keepNative&&a.trim(b.keepNative);return c&&b.keepNative!==b.keepNativeDefault?[b.keepNative,b.keepNativeDefault].join(", "):b.keepNativeDefault}})}(a),function(a,b,d){function k(a){return a=a||location.href,"#"+a.replace(/^[^#]*#?(.*)$/,"$1")}var e="hashchange",f=c,g,h=a.event.special,i=f.documentMode,j="on"+e in b&&(i===d||i>7);a.fn[e]=function(a){return a?this.bind(e,a):this.trigger(e)},a.fn[e].delay=50,h[e]=a.extend(h[e],{setup:function(){if(j)return!1;a(g.start)},teardown:function(){if(j)return!1;a(g.stop)}}),g=function(){function n(){var c=k(),d=m(h);c!==h?(l(h=c,d),a(b).trigger(e)):d!==h&&(location.href=location.href.replace(/#.*/,"")+d),g=setTimeout(n,a.fn[e].delay)}var c={},g,h=k(),i=function(a){return a},l=i,m=i;return c.start=function(){g||n()},c.stop=function(){g&&clearTimeout(g),g=d},a.browser.msie&&!j&&function(){var b,d;c.start=function(){b||(d=a.fn[e].src,d=d&&d+k(),b=a('