From 01ac2cd8131e1e0d1d8741e6fec8f03a282216cb Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Thu, 28 Feb 2013 14:04:11 +0800 Subject: [PATCH] Revert "MDL-33934 theme_mymobile: Updates to CSS & Javascript - including MDL-38072 removing css/js for collapsed topic." This reverts commit 7e6c6743028ec5e6b5957eb3f7ab0750c308f440. This reverts commit c443c95c016bff151e4c78692d9ba1d326dc2a11. This issue needs more work and will be delayed. --- theme/mymobile/config.php | 19 +- theme/mymobile/javascript/custom.js | 60 +- theme/mymobile/javascript/jquery-1.7.1.min.js | 4 + theme/mymobile/javascript/jquery-1.8.2.min.js | 2 - ...mobile-1.2.0.js => jquery.mobile-1.1.1.js} | 5893 ++++++----------- theme/mymobile/lang/en/theme_mymobile.php | 2 - theme/mymobile/layout/general.php | 40 +- theme/mymobile/pix/ajax-loader.gif | Bin 7825 -> 0 bytes theme/mymobile/pix/ajax-loader.png | Bin 0 -> 340 bytes theme/mymobile/pix/ajax-loader2.png | Bin 0 -> 503 bytes theme/mymobile/readme_moodle.txt | 16 + theme/mymobile/renderers.php | 68 +- theme/mymobile/settings.php | 22 +- theme/mymobile/style/core.css | 196 +- theme/mymobile/style/jmobile11.css | 2051 ++++++ theme/mymobile/style/jmobile11_rtl.css | 62 + theme/mymobile/style/jmobile120.css | 2332 ------- theme/mymobile/style/media.css | 4 - theme/mymobile/version.php | 4 +- 19 files changed, 4527 insertions(+), 6248 deletions(-) create mode 100644 theme/mymobile/javascript/jquery-1.7.1.min.js delete mode 100644 theme/mymobile/javascript/jquery-1.8.2.min.js rename theme/mymobile/javascript/{jquery.mobile-1.2.0.js => jquery.mobile-1.1.1.js} (68%) delete mode 100644 theme/mymobile/pix/ajax-loader.gif create mode 100644 theme/mymobile/pix/ajax-loader.png create mode 100644 theme/mymobile/pix/ajax-loader2.png create mode 100644 theme/mymobile/readme_moodle.txt create mode 100644 theme/mymobile/style/jmobile11.css create mode 100644 theme/mymobile/style/jmobile11_rtl.css delete mode 100644 theme/mymobile/style/jmobile120.css diff --git a/theme/mymobile/config.php b/theme/mymobile/config.php index 7f4c6daa092..780428b2ed5 100644 --- a/theme/mymobile/config.php +++ b/theme/mymobile/config.php @@ -34,7 +34,8 @@ $THEME->parents = array( // Set the stylesheets that we want to include for this theme $THEME->sheets = array( - 'jmobile120', + 'jmobile11', + 'jmobile11_rtl', 'core', 'media' ); @@ -104,34 +105,34 @@ $THEME->layouts = array( 'popup' => array( 'file' => 'embedded.php', 'regions' => array(), - 'options' => array('nofooter'=>true, 'noblocks'=>true, 'nonavbar'=>true), + 'options' => array('nofooter'=>true, 'noblocks'=>true, 'nonavbar'=>true, 'nocourseheaderfooter'=>true), ), 'frametop' => array( 'file' => 'general.php', 'regions' => array(), - 'options' => array('nofooter'=>true), + 'options' => array('nofooter'=>true, 'nocoursefooter'=>true), ), 'maintenance' => array( 'file' => 'general.php', 'regions' => array(), - 'options' => array('nofooter'=>true, 'nonavbar'=>true), + 'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocourseheaderfooter'=>true), ), 'embedded' => array( 'file' => 'embedded.php', 'regions' => array(), - 'options' => array('nofooter'=>true, 'nonavbar'=>true), + 'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocourseheaderfooter'=>true), ), // Should display the content and basic headers only. 'print' => array( 'file' => 'general.php', 'regions' => array(), - 'options' => array('nofooter'=>true, 'nonavbar'=>false, 'noblocks'=>true), + 'options' => array('nofooter'=>true, 'nonavbar'=>false, 'noblocks'=>true, 'nocourseheaderfooter'=>true), ), // The pagelayout used when a redirection is occuring. 'redirect' => array( 'file' => 'embedded.php', 'regions' => array(), - 'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true), + 'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nocourseheaderfooter'=>true), ), // The pagelayout used for reports 'report' => array( @@ -155,9 +156,9 @@ if ($thisdevice == "default" || $thisdevice == "tablet" || optional_param('mymob // Add the required JavaScript to the page $THEME->javascripts = array( - 'jquery-1.8.2.min', + 'jquery-1.7.1.min', 'custom', - 'jquery.mobile-1.2.0' + 'jquery.mobile-1.1.1' ); // Sets a custom render factory to use with the theme, used when working with custom renderers. diff --git a/theme/mymobile/javascript/custom.js b/theme/mymobile/javascript/custom.js index 1eac74d748d..0c2ddb23d53 100644 --- a/theme/mymobile/javascript/custom.js +++ b/theme/mymobile/javascript/custom.js @@ -1,16 +1,16 @@ $(document).bind("mobileinit", function(){ +//mobile init stuff 11/12/10 +//turn off ajax forms... $.mobile.defaultPageTransition = "slide"; }); $(document).ready(function() { //get some vars to start - var siteurl = $('head meta[name=wwwroot]').attr('wwwroot'); - var mytheme = $('head meta[name=datatheme]').attr('datatheme'); - var mythemeb = $('head meta[name=datathemeb]').attr('datathemeb'); + var siteurl = $('.mobilesiteurl').attr("id"); + var mytheme = $(".datatheme").attr("id"); + var mythemeb = $(".datathemeb").attr("id"); + - if ($('body').hasClass('ajaxno')) { - $.mobile.ajaxEnabled = false; - } //function below does generic stuff before creating all pages... $('div').live('pagebeforecreate', function(event, ui) { //turn off ajax on all forms for now as of beta1 @@ -60,8 +60,8 @@ $(document).ready(function() { return false; }); - //calendar and other links that need to be external - $('.maincalendar .filters a, li.activity.scorm a, div.files a, #page-user-filesPAGE li div a, .maincalendar .bottom a, .section li.url.modtype_url a, .resourcecontent .resourcemediaplugin a, #underfooter .noajax a, .block_mnet_hosts .content a, .block_private_files .content a, a.portfolio-add-link, #attempts td a, .settingsul li a, .foldertree li a').attr("data-ajax", "false"); + //calendar and other links that need to be external + $('.maincalendar .filters a, li.activity.scorm a, div.files a, #page-user-filesPAGE li div a, .maincalendar .bottom a, .section li.url.modtype_url a, .resourcecontent .resourcemediaplugin a, #underfooter .noajax a, .block_mnet_hosts .content a, .block_private_files .content a, a.portfolio-add-link, #attempts td a').attr("data-ajax", "false"); //add blank to open in window for some $('#page-mod-url-viewPAGE div.urlworkaround a, #page-mod-resource-viewPAGE div.resourceworkaround a, .mediaplugin a.mediafallbacklink, #page-mod-resource-viewPAGE .resourcemp3 a, .foldertree li a').attr("target", "_blank").attr("data-role", "button").attr("data-icon", "plus"); @@ -81,7 +81,6 @@ $(document).ready(function() { var meb = encodeURI($(this).val()); $(this).val("-1"); if (meb != "" && meb != "-1") { - $.mobile.showPageLoadingMsg(); $.mobile.changePage(meb); } }); @@ -90,19 +89,13 @@ $(document).ready(function() { //course page only js - $('div.path-course-view, .path-course-view div.generalpage').live('pagebeforecreate', function(event, ui) { + $('div.path-site, div.path-course-view, .path-course-view div.generalpage').live('pagebeforecreate', function(event, ui) { //course listing - $('.section li img').addClass("ui-li-icon"); - $('.course-content ul.section').attr("data-role", "listview").attr("data-inset", "true").attr("data-theme", mythemeb); - $('.sitetopic ul.section').attr("data-role", "listview").attr("data-inset", "true").attr("data-theme", mythemeb); - $('.section-navigation.header.headingblock, .section-navigation.mdl-bottom').attr("data-role", "controlgroup"); - $('.section-navigation.header.headingblock .mdl-left a, .section-navigation.mdl-bottom .mdl-left a').attr("data-role", "button").attr("data-icon", "arrow-l"); - $('.section-navigation.header.headingblock .mdl-right a, .section-navigation.mdl-bottom .mdl-right a').attr("data-role", "button").attr("data-icon", "arrow-r").attr("data-iconpos", "right"); - $('.section-navigation.header.headingblock .mdl-align.title, .section-navigation.mdl-bottom .mdl-align a').attr("data-role", "button"); + $('.section li img.activityicon').addClass("ui-li-icon"); + $('.course-content ul.section, .sitetopic ul.section').attr("data-role", "listview").attr("data-inset", "true").attr("data-theme", mythemeb); $('.topics div.left.side').addClass("ui-bar-" + mytheme); $('.section.hidden div.headingwrap').attr("data-theme", mythemeb); //$('.topics #section-0 div.left.side').removeClass("ui-li ui-li-divider ui-btn ui-bar-a"); - $('h3.section-title a').attr("data-role", "button"); $('.section .resource.modtype_resource a, .section .modtype_survey a').attr("data-ajax", "false"); //toggle completion checkmarks and form fixes @@ -114,6 +107,12 @@ $(document).ready(function() { this.form.submit(); return false; }); + + // Force the class ui-li-desc on non-detected elements. + $('ul.section div.availabilityinfo, ul.section div.contentafterlink').addClass('ui-li-desc'); + + // Force some classes on dimmed elements. + $('ul.section div.dimmed_text > span').addClass('instancename'); }); //forum listing only stuff @@ -133,18 +132,10 @@ $(document).ready(function() { //forum discussion page only stuff $('div#page-mod-forum-discussPAGE, #page-mod-forum-discuss div.generalpage, div.forumtype-single, .forumtype-single div.generalpage, div#page-mod-forum-postPAGE').live('pagebeforecreate',function(event, ui){ - //remove parent post because of hash remove this if has listening is fixed - $('.options div.commands a').each(function(index) { - var url = $(this).attr("href"); - if (url.indexOf("#") != -1) { - $(this).remove(); - } - }); - //actual forum posting $('.forumpost div.row.header').addClass("ui-li ui-li-divider ui-btn ui-bar-" + mytheme); $('.options div.commands').attr("data-role", "controlgroup").attr("data-type", "horizontal"); - $('.options div.commands a').attr("data-role", "button").attr("data-ajax", "false").attr("data-mini", "true").attr("data-inline", "true"); + $('.options div.commands a').attr("data-role", "button").attr("data-ajax", "false").attr("data-inline", "true"); $('.forumpost div.author a').attr("data-inline", "true"); $('.options div.commands').contents().filter(function() { return this.nodeType == 3; //Node.TEXT_NODE @@ -159,7 +150,6 @@ $(document).ready(function() { $('.forumpost div.row.header').addClass("ui-li ui-li-divider ui-btn ui-bar-" + mytheme); $('div.subscribelink a').attr("data-role", "button").attr("data-inline", "true"); $('.unlist').attr("data-role", "controlgroup"); - //$('.unlist li:last-child div.coursebox h3 a').addClass("ui-corner-bottom ui-controlgroup-last"); moved to init at bottom $('div.coursebox a').attr("data-role", "button").attr("data-icon", "arrow-r").attr("data-iconpos", "right").attr("data-theme", mythemeb); $('.box.categorybox').attr("data-role", "controlgroup"); $('div.categorylist div.category a').attr("data-role", "button").attr("data-theme", mythemeb); @@ -253,9 +243,21 @@ $(document).ready(function() { $('.path-mod-hotpot button').attr("data-role", "none"); }); + //collapsed topic only stuff + $('div#page-course-view-topcollPAGE').live('pagebeforecreate',function(event, ui){ + $('#page-course-view-topcollPAGE ul.section').attr("data-role", "none"); + $('.section li img').removeClass("ui-li-icon"); + $.getScript('../course/format/topcoll/module.js'); + $('#page-course-view-topcollPAGE tr.cps a').attr("data-role", "button").attr("data-icon", "arrow-r"); + $('#page-course-view-topcollPAGE #thetopics').attr("data-role", "controlgroup"); + $('#page-course-view-topcollPAGE td.cps_centre').each(function(index) { + var cpsc = $(this).text().replace('
','').replace(')',''); + $(this).prev('td').find('a').append('' + cpsc + ''); + }); + }); + ///// functions below does stuff after creating page for some cleaning... $('div').live('pageinit',function(event, ui){ - $('div#page-site-indexPAGE .unlist li:last-child div.coursebox h3 a').addClass("ui-corner-bottom ui-controlgroup-last"); $('.path-calendar div.ui-radio label:first-child, .path-mod-lesson div.ui-radio label:first-child, #page-mod-wiki-createPAGE div.ui-radio label:first-child').addClass("afirst"); $('.forumpost div.author a').removeAttr('data-role'); //$('.questionflagimage2').removeClass("ui-btn-hidden");a#notificationyes diff --git a/theme/mymobile/javascript/jquery-1.7.1.min.js b/theme/mymobile/javascript/jquery-1.7.1.min.js new file mode 100644 index 00000000000..ee0233703da --- /dev/null +++ b/theme/mymobile/javascript/jquery-1.7.1.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.1 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
"+""+"
",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
t
",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/theme/mymobile/javascript/jquery-1.8.2.min.js b/theme/mymobile/javascript/jquery-1.8.2.min.js deleted file mode 100644 index f65cf1dc457..00000000000 --- a/theme/mymobile/javascript/jquery-1.8.2.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v1.8.2 jquery.com | jquery.org/license */ -(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.2",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return a!=null?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
t
",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||p.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c=0)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,d+""),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j=0:p.find(m,this,null,[f]).length),h[m]&&j.push(l);j.length&&u.push({elem:f,matches:j})}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bc(a,b,c,d){c=c||[],b=b||r;var e,f,i,j,k=b.nodeType;if(!a||typeof a!="string")return c;if(k!==1&&k!==9)return[];i=g(b);if(!i&&!d)if(e=P.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&h(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return w.apply(c,x.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&_&&b.getElementsByClassName)return w.apply(c,x.call(b.getElementsByClassName(j),0)),c}return bp(a.replace(L,"$1"),b,c,d,i)}function bd(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function be(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bf(a){return z(function(b){return b=+b,z(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function bg(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bh(a,b){var c,d,f,g,h,i,j,k=C[o][a];if(k)return b?0:k.slice(0);h=a,i=[],j=e.preFilter;while(h){if(!c||(d=M.exec(h)))d&&(h=h.slice(d[0].length)),i.push(f=[]);c=!1;if(d=N.exec(h))f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=d[0].replace(L," ");for(g in e.filter)(d=W[g].exec(h))&&(!j[g]||(d=j[g](d,r,!0)))&&(f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=g,c.matches=d);if(!c)break}return b?h.length:h?bc.error(a):C(a,i).slice(0)}function bi(a,b,d){var e=b.dir,f=d&&b.dir==="parentNode",g=u++;return b.first?function(b,c,d){while(b=b[e])if(f||b.nodeType===1)return a(b,c,d)}:function(b,d,h){if(!h){var i,j=t+" "+g+" ",k=j+c;while(b=b[e])if(f||b.nodeType===1){if((i=b[o])===k)return b.sizset;if(typeof i=="string"&&i.indexOf(j)===0){if(b.sizset)return b}else{b[o]=k;if(a(b,d,h))return b.sizset=!0,b;b.sizset=!1}}}else while(b=b[e])if(f||b.nodeType===1)if(a(b,d,h))return b}}function bj(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function bk(a,b,c,d,e){var f,g=[],h=0,i=a.length,j=b!=null;for(;h-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==l)||((b=c).nodeType?j(a,c,d):k(a,c,d))}];for(;i1&&bj(m),i>1&&a.slice(0,i-1).join("").replace(L,"$1"),c,i0,f=a.length>0,g=function(h,i,j,k,m){var n,o,p,q=[],s=0,u="0",x=h&&[],y=m!=null,z=l,A=h||f&&e.find.TAG("*",m&&i.parentNode||i),B=t+=z==null?1:Math.E;y&&(l=i!==r&&i,c=g.el);for(;(n=A[u])!=null;u++){if(f&&n){for(o=0;p=a[o];o++)if(p(n,i,j)){k.push(n);break}y&&(t=B,c=++g.el)}d&&((n=!p&&n)&&s--,h&&x.push(n))}s+=u;if(d&&u!==s){for(o=0;p=b[o];o++)p(x,q,i,j);if(h){if(s>0)while(u--)!x[u]&&!q[u]&&(q[u]=v.call(k));q=bk(q)}w.apply(k,q),y&&!h&&q.length>0&&s+b.length>1&&bc.uniqueSort(k)}return y&&(t=B,l=z),x};return g.el=0,d?z(g):g}function bo(a,b,c,d){var e=0,f=b.length;for(;e2&&(j=h[0]).type==="ID"&&b.nodeType===9&&!f&&e.relative[h[1].type]){b=e.find.ID(j.matches[0].replace(V,""),b,f)[0];if(!b)return c;a=a.slice(h.shift().length)}for(g=W.POS.test(a)?-1:h.length-1;g>=0;g--){j=h[g];if(e.relative[k=j.type])break;if(l=e.find[k])if(d=l(j.matches[0].replace(V,""),R.test(h[0].type)&&b.parentNode||b,f)){h.splice(g,1),a=d.length&&h.join("");if(!a)return w.apply(c,x.call(d,0)),c;break}}}return i(a,m)(d,b,f,c,R.test(a)),c}function bq(){}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=String,r=a.document,s=r.documentElement,t=0,u=0,v=[].pop,w=[].push,x=[].slice,y=[].indexOf||function(a){var b=0,c=this.length;for(;be.cacheLength&&delete a[b.shift()],a[c]=d},a)},B=A(),C=A(),D=A(),E="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",G=F.replace("w","w#"),H="([*^$|!~]?=)",I="\\["+E+"*("+F+")"+E+"*(?:"+H+E+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+G+")|)|)"+E+"*\\]",J=":("+F+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+I+")|[^:]|\\\\.)*|.*))\\)|)",K=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+E+"*((?:-\\d)?\\d*)"+E+"*\\)|)(?=[^-]|$)",L=new RegExp("^"+E+"+|((?:^|[^\\\\])(?:\\\\.)*)"+E+"+$","g"),M=new RegExp("^"+E+"*,"+E+"*"),N=new RegExp("^"+E+"*([\\x20\\t\\r\\n\\f>+~])"+E+"*"),O=new RegExp(J),P=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,Q=/^:not/,R=/[\x20\t\r\n\f]*[+~]/,S=/:not\($/,T=/h\d/i,U=/input|select|textarea|button/i,V=/\\(?!\\)/g,W={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),NAME:new RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:new RegExp("^("+F.replace("w","w*")+")"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+J),POS:new RegExp(K,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+E+"*(even|odd|(([+-]|)(\\d*)n|)"+E+"*(?:([+-]|)"+E+"*(\\d+)|))"+E+"*\\)|)","i"),needsContext:new RegExp("^"+E+"*[>+~]|"+K,"i")},X=function(a){var b=r.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},Y=X(function(a){return a.appendChild(r.createComment("")),!a.getElementsByTagName("*").length}),Z=X(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),$=X(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),_=X(function(a){return a.innerHTML="",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),ba=X(function(a){a.id=o+0,a.innerHTML="
",s.insertBefore(a,s.firstChild);var b=r.getElementsByName&&r.getElementsByName(o).length===2+r.getElementsByName(o+0).length;return d=!r.getElementById(o),s.removeChild(a),b});try{x.call(s.childNodes,0)[0].nodeType}catch(bb){x=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}bc.matches=function(a,b){return bc(a,null,null,b)},bc.matchesSelector=function(a,b){return bc(b,null,null,[a]).length>0},f=bc.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=f(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=f(b);return c},g=bc.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},h=bc.contains=s.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:s.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc.attr=function(a,b){var c,d=g(a);return d||(b=b.toLowerCase()),(c=e.attrHandle[b])?c(a):d||$?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},e=bc.selectors={cacheLength:50,createPseudo:z,match:W,attrHandle:Z?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:d?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:Y?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:ba&&function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:_&&function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(V,""),a[3]=(a[4]||a[5]||"").replace(V,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||bc.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&bc.error(a[0]),a},PSEUDO:function(a){var b,c;if(W.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(b=a[4])O.test(b)&&(c=bh(b,!0))&&(c=b.indexOf(")",b.length-c)-b.length)&&(b=b.slice(0,c),a[0]=a[0].slice(0,c)),a[2]=b;return a.slice(0,3)}},filter:{ID:d?function(a){return a=a.replace(V,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(V,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(V,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=B[o][a];return b||(b=B(a,new RegExp("(^|"+E+")"+a+"("+E+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return function(d,e){var f=bc.attr(d,a);return f==null?b==="!=":b?(f+="",b==="="?f===c:b==="!="?f!==c:b==="^="?c&&f.indexOf(c)===0:b==="*="?c&&f.indexOf(c)>-1:b==="$="?c&&f.substr(f.length-c.length)===c:b==="~="?(" "+f+" ").indexOf(c)>-1:b==="|="?f===c||f.substr(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d){return a==="nth"?function(a){var b,e,f=a.parentNode;if(c===1&&d===0)return!0;if(f){e=0;for(b=f.firstChild;b;b=b.nextSibling)if(b.nodeType===1){e++;if(a===b)break}}return e-=d,e===c||e%c===0&&e/c>=0}:function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b){var c,d=e.pseudos[a]||e.setFilters[a.toLowerCase()]||bc.error("unsupported pseudo: "+a);return d[o]?d(b):d.length>1?(c=[a,a,"",b],e.setFilters.hasOwnProperty(a.toLowerCase())?z(function(a,c){var e,f=d(a,b),g=f.length;while(g--)e=y.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:z(function(a){var b=[],c=[],d=i(a.replace(L,"$1"));return d[o]?z(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)if(f=g[h])a[h]=!(b[h]=f)}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:z(function(a){return function(b){return bc(a,b).length>0}}),contains:z(function(a){return function(b){return(b.textContent||b.innerText||f(b)).indexOf(a)>-1}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!e.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},header:function(a){return T.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:bd("radio"),checkbox:bd("checkbox"),file:bd("file"),password:bd("password"),image:bd("image"),submit:be("submit"),reset:be("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return U.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement},first:bf(function(a,b,c){return[0]}),last:bf(function(a,b,c){return[b-1]}),eq:bf(function(a,b,c){return[c<0?c+b:c]}),even:bf(function(a,b,c){for(var d=0;d=0;)a.push(d);return a}),gt:bf(function(a,b,c){for(var d=c<0?c+b:c;++d",a.querySelectorAll("[selected]").length||e.push("\\["+E+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),X(function(a){a.innerHTML="

",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+E+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=new RegExp(e.join("|")),bp=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a))){var i,j,k=!0,l=o,m=d,n=d.nodeType===9&&a;if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){i=bh(a),(k=d.getAttribute("id"))?l=k.replace(c,"\\$&"):d.setAttribute("id",l),l="[id='"+l+"'] ",j=i.length;while(j--)i[j]=l+i[j].join("");m=R.test(a)&&d.parentNode||d,n=i.join(",")}if(n)try{return w.apply(f,x.call(m.querySelectorAll(n),0)),f}catch(p){}finally{k||d.removeAttribute("id")}}return b(a,d,f,g,h)},h&&(X(function(b){a=h.call(b,"div");try{h.call(b,"[test!='']:sizzle"),f.push("!=",J)}catch(c){}}),f=new RegExp(f.join("|")),bc.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!g(b)&&!f.test(c)&&(!e||!e.test(c)))try{var i=h.call(b,c);if(i||a||b.document&&b.document.nodeType!==11)return i}catch(j){}return bc(c,null,null,[b]).length>0})}(),e.pseudos.nth=e.pseudos.eq,e.filters=bq.prototype=e.pseudos,e.setFilters=new bq,bc.attr=p.attr,p.find=bc,p.expr=bc.selectors,p.expr[":"]=p.expr.pseudos,p.unique=bc.uniqueSort,p.text=bc.getText,p.isXMLDoc=bc.isXML,p.contains=bc.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
","
"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{ck=f.href}catch(cy){ck=e.createElement("a"),ck.href="",ck=ck.href}cj=ct.exec(ck.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:ck,isLocal:cn.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=(c||y)+"",k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase())||!1,l.crossDomain=i&&i.join(":")+(i[3]?"":i[1]==="http:"?80:443)!==cj.join(":")+(cj[3]?"":cj[1]==="http:"?80:443)),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e=this.createTween(a,b),f=cQ.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){c=+f[2],d=f[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&h){h=p.css(e.elem,a,!0)||c||1;do i=i||".5",h=h/i,p.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&i!==1&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/theme/mymobile/javascript/jquery.mobile-1.2.0.js b/theme/mymobile/javascript/jquery.mobile-1.1.1.js similarity index 68% rename from theme/mymobile/javascript/jquery.mobile-1.2.0.js rename to theme/mymobile/javascript/jquery.mobile-1.1.1.js index 804d824baa8..891f6a94cc0 100644 --- a/theme/mymobile/javascript/jquery.mobile-1.2.0.js +++ b/theme/mymobile/javascript/jquery.mobile-1.1.1.js @@ -1,14 +1,12 @@ /* -* jQuery Mobile Framework Git Build: SHA1: b49cc06499abf8f987cf90f35349cfac0918c939 <> Date: Tue Oct 2 11:22:34 2012 -0700 +* jQuery Mobile Framework 1.1.1 1981b3f5ec22675ae47df8f0bdf9622e7780e90e * http://jquerymobile.com * * Copyright 2012 jQuery Foundation and other contributors -* Released under the MIT license. +* Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * */ - - (function ( root, doc, factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. @@ -21,1077 +19,6 @@ factory( root.jQuery, root, doc ); } }( this, document, function ( jQuery, window, document, undefined ) { -(function( $, window, undefined ) { - - var nsNormalizeDict = {}; - - // jQuery.mobile configurable options - $.mobile = $.extend( {}, { - - // Version of the jQuery Mobile Framework - version: "1.2.0", - - // Namespace used framework-wide for data-attrs. Default is no namespace - ns: "", - - // Define the url parameter used for referencing widget-generated sub-pages. - // Translates to to example.html&ui-page=subpageIdentifier - // hash segment before &ui-page= is used to make Ajax request - subPageUrlKey: "ui-page", - - // Class assigned to page currently in view, and during transitions - activePageClass: "ui-page-active", - - // Class used for "active" button state, from CSS framework - activeBtnClass: "ui-btn-active", - - // Class used for "focus" form element state, from CSS framework - focusClass: "ui-focus", - - // Automatically handle clicks and form submissions through Ajax, when same-domain - ajaxEnabled: true, - - // Automatically load and show pages based on location.hash - hashListeningEnabled: true, - - // disable to prevent jquery from bothering with links - linkBindingEnabled: true, - - // Set default page transition - 'none' for no transitions - defaultPageTransition: "fade", - - // Set maximum window width for transitions to apply - 'false' for no limit - maxTransitionWidth: false, - - // Minimum scroll distance that will be remembered when returning to a page - minScrollBack: 250, - - // DEPRECATED: the following property is no longer in use, but defined until 2.0 to prevent conflicts - touchOverflowEnabled: false, - - // Set default dialog transition - 'none' for no transitions - defaultDialogTransition: "pop", - - // Error response message - appears when an Ajax page request fails - pageLoadErrorMessage: "Error Loading Page", - - // For error messages, which theme does the box uses? - pageLoadErrorMessageTheme: "e", - - // replace calls to window.history.back with phonegaps navigation helper - // where it is provided on the window object - phonegapNavigationEnabled: false, - - //automatically initialize the DOM when it's ready - autoInitializePage: true, - - pushStateEnabled: true, - - // allows users to opt in to ignoring content by marking a parent element as - // data-ignored - ignoreContentEnabled: false, - - // turn of binding to the native orientationchange due to android orientation behavior - orientationChangeEnabled: true, - - buttonMarkup: { - hoverDelay: 200 - }, - - // TODO might be useful upstream in jquery itself ? - keyCode: { - ALT: 18, - BACKSPACE: 8, - CAPS_LOCK: 20, - COMMA: 188, - COMMAND: 91, - COMMAND_LEFT: 91, // COMMAND - COMMAND_RIGHT: 93, - CONTROL: 17, - DELETE: 46, - DOWN: 40, - END: 35, - ENTER: 13, - ESCAPE: 27, - HOME: 36, - INSERT: 45, - LEFT: 37, - MENU: 93, // COMMAND_RIGHT - 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 // COMMAND - }, - - // Scroll page vertically: scroll to 0 to hide iOS address bar, or pass a Y value - silentScroll: function( ypos ) { - if ( $.type( ypos ) !== "number" ) { - ypos = $.mobile.defaultHomeScroll; - } - - // prevent scrollstart and scrollstop events - $.event.special.scrollstart.enabled = false; - - setTimeout( function() { - window.scrollTo( 0, ypos ); - $( document ).trigger( "silentscroll", { x: 0, y: ypos }); - }, 20 ); - - setTimeout( function() { - $.event.special.scrollstart.enabled = true; - }, 150 ); - }, - - // Expose our cache for testing purposes. - nsNormalizeDict: nsNormalizeDict, - - // Take a data attribute property, prepend the namespace - // and then camel case the attribute string. Add the result - // to our nsNormalizeDict so we don't have to do this again. - nsNormalize: function( prop ) { - if ( !prop ) { - return; - } - - return nsNormalizeDict[ prop ] || ( nsNormalizeDict[ prop ] = $.camelCase( $.mobile.ns + prop ) ); - }, - - // Find the closest parent with a theme class on it. Note that - // we are not using $.fn.closest() on purpose here because this - // method gets called quite a bit and we need it to be as fast - // as possible. - getInheritedTheme: function( el, defaultTheme ) { - var e = el[ 0 ], - ltr = "", - re = /ui-(bar|body|overlay)-([a-z])\b/, - c, m; - - while ( e ) { - c = e.className || ""; - if ( c && ( m = re.exec( c ) ) && ( ltr = m[ 2 ] ) ) { - // We found a parent with a theme class - // on it so bail from this loop. - break; - } - - e = e.parentNode; - } - - // Return the theme letter we found, if none, return the - // specified default. - - return ltr || defaultTheme || "a"; - }, - - // TODO the following $ and $.fn extensions can/probably should be moved into jquery.mobile.core.helpers - // - // Find the closest javascript page element to gather settings data jsperf test - // http://jsperf.com/single-complex-selector-vs-many-complex-selectors/edit - // possibly naive, but it shows that the parsing overhead for *just* the page selector vs - // the page and dialog selector is negligable. This could probably be speed up by - // doing a similar parent node traversal to the one found in the inherited theme code above - closestPageData: function( $target ) { - return $target - .closest( ':jqmData(role="page"), :jqmData(role="dialog")' ) - .data( "page" ); - }, - - enhanceable: function( $set ) { - return this.haveParents( $set, "enhance" ); - }, - - hijackable: function( $set ) { - return this.haveParents( $set, "ajax" ); - }, - - haveParents: function( $set, attr ) { - if ( !$.mobile.ignoreContentEnabled ) { - return $set; - } - - var count = $set.length, - $newSet = $(), - e, $element, excluded; - - for ( var i = 0; i < count; i++ ) { - $element = $set.eq( i ); - excluded = false; - e = $set[ i ]; - - while ( e ) { - var c = e.getAttribute ? e.getAttribute( "data-" + $.mobile.ns + attr ) : ""; - - if ( c === "false" ) { - excluded = true; - break; - } - - e = e.parentNode; - } - - if ( !excluded ) { - $newSet = $newSet.add( $element ); - } - } - - return $newSet; - }, - - getScreenHeight: function() { - // Native innerHeight returns more accurate value for this across platforms, - // jQuery version is here as a normalized fallback for platforms like Symbian - return window.innerHeight || $( window ).height(); - } - }, $.mobile ); - - // Mobile version of data and removeData and hasData methods - // ensures all data is set and retrieved using jQuery Mobile's data namespace - $.fn.jqmData = function( prop, value ) { - var result; - if ( typeof prop !== "undefined" ) { - if ( prop ) { - prop = $.mobile.nsNormalize( prop ); - } - - // undefined is permitted as an explicit input for the second param - // in this case it returns the value and does not set it to undefined - if( arguments.length < 2 || value === undefined ){ - result = this.data( prop ); - } else { - result = this.data( prop, value ); - } - } - return result; - }; - - $.jqmData = function( elem, prop, value ) { - var result; - if ( typeof prop !== "undefined" ) { - result = $.data( elem, prop ? $.mobile.nsNormalize( prop ) : prop, value ); - } - return result; - }; - - $.fn.jqmRemoveData = function( prop ) { - return this.removeData( $.mobile.nsNormalize( prop ) ); - }; - - $.jqmRemoveData = function( elem, prop ) { - return $.removeData( elem, $.mobile.nsNormalize( prop ) ); - }; - - $.fn.removeWithDependents = function() { - $.removeWithDependents( this ); - }; - - $.removeWithDependents = function( elem ) { - var $elem = $( elem ); - - ( $elem.jqmData( 'dependents' ) || $() ).remove(); - $elem.remove(); - }; - - $.fn.addDependents = function( newDependents ) { - $.addDependents( $( this ), newDependents ); - }; - - $.addDependents = function( elem, newDependents ) { - var dependents = $( elem ).jqmData( 'dependents' ) || $(); - - $( elem ).jqmData( 'dependents', $.merge( dependents, newDependents ) ); - }; - - // note that this helper doesn't attempt to handle the callback - // or setting of an html elements text, its only purpose is - // to return the html encoded version of the text in all cases. (thus the name) - $.fn.getEncodedText = function() { - return $( "
" ).text( $( this ).text() ).html(); - }; - - // fluent helper function for the mobile namespaced equivalent - $.fn.jqmEnhanceable = function() { - return $.mobile.enhanceable( this ); - }; - - $.fn.jqmHijackable = function() { - return $.mobile.hijackable( this ); - }; - - // Monkey-patching Sizzle to filter the :jqmData selector - var oldFind = $.find, - jqmDataRE = /:jqmData\(([^)]*)\)/g; - - $.find = function( selector, context, ret, extra ) { - selector = selector.replace( jqmDataRE, "[data-" + ( $.mobile.ns || "" ) + "$1]" ); - - return oldFind.call( this, selector, context, ret, extra ); - }; - - $.extend( $.find, oldFind ); - - $.find.matches = function( expr, set ) { - return $.find( expr, null, null, set ); - }; - - $.find.matchesSelector = function( node, expr ) { - return $.find( expr, null, null, [ node ] ).length > 0; - }; -})( jQuery, this ); - - -/*! - * jQuery UI Widget v1.9.0-beta.1 - * - * Copyright 2012, https://github.com/jquery/jquery-ui/blob/1.9.0-beta.1/AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Widget - */ -(function( $, undefined ) { - -var uuid = 0, - slice = Array.prototype.slice, - _cleanData = $.cleanData; -$.cleanData = function( elems ) { - for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { - try { - $( elem ).triggerHandler( "remove" ); - // http://bugs.jquery.com/ticket/8235 - } catch( e ) {} - } - _cleanData( elems ); -}; - -$.widget = function( name, base, prototype ) { - var fullName, existingConstructor, constructor, basePrototype, - namespace = name.split( "." )[ 0 ]; - - name = name.split( "." )[ 1 ]; - fullName = namespace + "-" + name; - - if ( !prototype ) { - prototype = base; - base = $.Widget; - } - - // create selector for plugin - $.expr[ ":" ][ fullName ] = function( elem ) { - return !!$.data( elem, fullName ); - }; - - $[ namespace ] = $[ namespace ] || {}; - existingConstructor = $[ namespace ][ name ]; - constructor = $[ namespace ][ name ] = function( options, element ) { - // allow instantiation without "new" keyword - if ( !this._createWidget ) { - return new constructor( options, element ); - } - - // allow instantiation without initializing for simple inheritance - // must use "new" keyword (the code above always passes args) - if ( arguments.length ) { - this._createWidget( options, element ); - } - }; - // extend with the existing constructor to carry over any static properties - $.extend( constructor, existingConstructor, { - version: prototype.version, - // copy the object used to create the prototype in case we need to - // redefine the widget later - _proto: $.extend( {}, prototype ), - // track widgets that inherit from this widget in case this widget is - // redefined after a widget inherits from it - _childConstructors: [] - }); - - basePrototype = new base(); - // we need to make the options hash a property directly on the new instance - // otherwise we'll modify the options hash on the prototype that we're - // inheriting from - basePrototype.options = $.widget.extend( {}, basePrototype.options ); - $.each( prototype, function( prop, value ) { - if ( $.isFunction( value ) ) { - prototype[ prop ] = (function() { - var _super = function() { - return base.prototype[ prop ].apply( this, arguments ); - }, - _superApply = function( args ) { - return base.prototype[ prop ].apply( this, args ); - }; - return function() { - var __super = this._super, - __superApply = this._superApply, - returnValue; - - this._super = _super; - this._superApply = _superApply; - - returnValue = value.apply( this, arguments ); - - this._super = __super; - this._superApply = __superApply; - - return returnValue; - }; - })(); - } - }); - constructor.prototype = $.widget.extend( basePrototype, { - // TODO: remove support for widgetEventPrefix - // always use the name + a colon as the prefix, e.g., draggable:start - // don't prefix for widgets that aren't DOM-based - widgetEventPrefix: name - }, prototype, { - constructor: constructor, - namespace: namespace, - widgetName: name, - // TODO remove widgetBaseClass, see #8155 - widgetBaseClass: fullName, - widgetFullName: fullName - }); - - // If this widget is being redefined then we need to find all widgets that - // are inheriting from it and redefine all of them so that they inherit from - // the new version of this widget. We're essentially trying to replace one - // level in the prototype chain. - if ( existingConstructor ) { - $.each( existingConstructor._childConstructors, function( i, child ) { - var childPrototype = child.prototype; - - // redefine the child widget using the same prototype that was - // originally used, but inherit from the new version of the base - $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto ); - }); - // remove the list of existing child constructors from the old constructor - // so the old child constructors can be garbage collected - delete existingConstructor._childConstructors; - } else { - base._childConstructors.push( constructor ); - } - - $.widget.bridge( name, constructor ); -}; - -$.widget.extend = function( target ) { - var input = slice.call( arguments, 1 ), - inputIndex = 0, - inputLength = input.length, - key, - value; - for ( ; inputIndex < inputLength; inputIndex++ ) { - for ( key in input[ inputIndex ] ) { - value = input[ inputIndex ][ key ]; - if (input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { - target[ key ] = $.isPlainObject( value ) ? $.widget.extend( {}, target[ key ], value ) : value; - } - } - } - return target; -}; - -$.widget.bridge = function( name, object ) { - var fullName = object.prototype.widgetFullName; - $.fn[ name ] = function( options ) { - var isMethodCall = typeof options === "string", - args = slice.call( arguments, 1 ), - returnValue = this; - - // allow multiple hashes to be passed on init - options = !isMethodCall && args.length ? - $.widget.extend.apply( null, [ options ].concat(args) ) : - options; - - if ( isMethodCall ) { - this.each(function() { - var methodValue, - instance = $.data( this, fullName ); - if ( !instance ) { - return $.error( "cannot call methods on " + name + " prior to initialization; " + - "attempted to call method '" + options + "'" ); - } - if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) { - return $.error( "no such method '" + options + "' for " + name + " widget instance" ); - } - methodValue = instance[ options ].apply( instance, args ); - if ( methodValue !== instance && methodValue !== undefined ) { - returnValue = methodValue && methodValue.jquery ? - returnValue.pushStack( methodValue.get() ) : - methodValue; - return false; - } - }); - } else { - this.each(function() { - var instance = $.data( this, fullName ); - if ( instance ) { - instance.option( options || {} )._init(); - } else { - new object( options, this ); - } - }); - } - - return returnValue; - }; -}; - -$.Widget = function( options, element ) {}; -$.Widget._childConstructors = []; - -$.Widget.prototype = { - widgetName: "widget", - widgetEventPrefix: "", - defaultElement: "
", - options: { - disabled: false, - - // callbacks - create: null - }, - _createWidget: function( options, element ) { - element = $( element || this.defaultElement || this )[ 0 ]; - this.element = $( element ); - this.uuid = uuid++; - this.eventNamespace = "." + this.widgetName + this.uuid; - this.options = $.widget.extend( {}, - this.options, - this._getCreateOptions(), - options ); - - this.bindings = $(); - this.hoverable = $(); - this.focusable = $(); - - if ( element !== this ) { - // 1.9 BC for #7810 - // TODO remove dual storage - $.data( element, this.widgetName, this ); - $.data( element, this.widgetFullName, this ); - this._on({ remove: "destroy" }); - this.document = $( element.style ? - // element within the document - element.ownerDocument : - // element is window or document - element.document || element ); - this.window = $( this.document[0].defaultView || this.document[0].parentWindow ); - } - - this._create(); - this._trigger( "create", null, this._getCreateEventData() ); - this._init(); - }, - _getCreateOptions: $.noop, - _getCreateEventData: $.noop, - _create: $.noop, - _init: $.noop, - - destroy: function() { - this._destroy(); - // we can probably remove the unbind calls in 2.0 - // all event bindings should go through this._on() - this.element - .unbind( this.eventNamespace ) - // 1.9 BC for #7810 - // TODO remove dual storage - .removeData( this.widgetName ) - .removeData( this.widgetFullName ) - // support: jquery <1.6.3 - // http://bugs.jquery.com/ticket/9413 - .removeData( $.camelCase( this.widgetFullName ) ); - this.widget() - .unbind( this.eventNamespace ) - .removeAttr( "aria-disabled" ) - .removeClass( - this.widgetFullName + "-disabled " + - "ui-state-disabled" ); - - // clean up events and states - this.bindings.unbind( this.eventNamespace ); - this.hoverable.removeClass( "ui-state-hover" ); - this.focusable.removeClass( "ui-state-focus" ); - }, - _destroy: $.noop, - - widget: function() { - return this.element; - }, - - option: function( key, value ) { - var options = key, - parts, - curOption, - i; - - if ( arguments.length === 0 ) { - // don't return a reference to the internal hash - return $.widget.extend( {}, this.options ); - } - - if ( typeof key === "string" ) { - // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } - options = {}; - parts = key.split( "." ); - key = parts.shift(); - if ( parts.length ) { - curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); - for ( i = 0; i < parts.length - 1; i++ ) { - curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; - curOption = curOption[ parts[ i ] ]; - } - key = parts.pop(); - if ( value === undefined ) { - return curOption[ key ] === undefined ? null : curOption[ key ]; - } - curOption[ key ] = value; - } else { - if ( value === undefined ) { - return this.options[ key ] === undefined ? null : this.options[ key ]; - } - options[ key ] = value; - } - } - - this._setOptions( options ); - - return this; - }, - _setOptions: function( options ) { - var key; - - for ( key in options ) { - this._setOption( key, options[ key ] ); - } - - return this; - }, - _setOption: function( key, value ) { - this.options[ key ] = value; - - if ( key === "disabled" ) { - this.widget() - .toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value ) - .attr( "aria-disabled", value ); - this.hoverable.removeClass( "ui-state-hover" ); - this.focusable.removeClass( "ui-state-focus" ); - } - - return this; - }, - - enable: function() { - return this._setOption( "disabled", false ); - }, - disable: function() { - return this._setOption( "disabled", true ); - }, - - _on: function( element, handlers ) { - // no element argument, shuffle and use this.element - if ( !handlers ) { - handlers = element; - element = this.element; - } else { - // accept selectors, DOM elements - element = $( element ); - this.bindings = this.bindings.add( element ); - } - - var instance = this; - $.each( handlers, function( event, handler ) { - function handlerProxy() { - // allow widgets to customize the disabled handling - // - disabled as an array instead of boolean - // - disabled class as method for disabling individual parts - if ( instance.options.disabled === true || - $( this ).hasClass( "ui-state-disabled" ) ) { - return; - } - return ( typeof handler === "string" ? instance[ handler ] : handler ) - .apply( instance, arguments ); - } - - // copy the guid so direct unbinding works - if ( typeof handler !== "string" ) { - handlerProxy.guid = handler.guid = - handler.guid || handlerProxy.guid || $.guid++; - } - - var match = event.match( /^(\w+)\s*(.*)$/ ), - eventName = match[1] + instance.eventNamespace, - selector = match[2]; - if ( selector ) { - instance.widget().delegate( selector, eventName, handlerProxy ); - } else { - element.bind( eventName, handlerProxy ); - } - }); - }, - - _off: function( element, eventName ) { - eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace; - element.unbind( eventName ).undelegate( eventName ); - }, - - _delay: function( handler, delay ) { - function handlerProxy() { - return ( typeof handler === "string" ? instance[ handler ] : handler ) - .apply( instance, arguments ); - } - var instance = this; - return setTimeout( handlerProxy, delay || 0 ); - }, - - _hoverable: function( element ) { - this.hoverable = this.hoverable.add( element ); - this._on( element, { - mouseenter: function( event ) { - $( event.currentTarget ).addClass( "ui-state-hover" ); - }, - mouseleave: function( event ) { - $( event.currentTarget ).removeClass( "ui-state-hover" ); - } - }); - }, - - _focusable: function( element ) { - this.focusable = this.focusable.add( element ); - this._on( element, { - focusin: function( event ) { - $( event.currentTarget ).addClass( "ui-state-focus" ); - }, - focusout: function( event ) { - $( event.currentTarget ).removeClass( "ui-state-focus" ); - } - }); - }, - - _trigger: function( type, event, data ) { - var prop, orig, - callback = this.options[ type ]; - - data = data || {}; - event = $.Event( event ); - event.type = ( type === this.widgetEventPrefix ? - type : - this.widgetEventPrefix + type ).toLowerCase(); - // the original event may come from any element - // so we need to reset the target on the new event - event.target = this.element[ 0 ]; - - // copy original event properties over to the new event - orig = event.originalEvent; - if ( orig ) { - for ( prop in orig ) { - if ( !( prop in event ) ) { - event[ prop ] = orig[ prop ]; - } - } - } - - this.element.trigger( event, data ); - return !( $.isFunction( callback ) && - callback.apply( this.element[0], [ event ].concat( data ) ) === false || - event.isDefaultPrevented() ); - } -}; - -$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { - $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { - if ( typeof options === "string" ) { - options = { effect: options }; - } - var hasOptions, - effectName = !options ? - method : - options === true || typeof options === "number" ? - defaultEffect : - options.effect || defaultEffect; - options = options || {}; - if ( typeof options === "number" ) { - options = { duration: options }; - } - hasOptions = !$.isEmptyObject( options ); - options.complete = callback; - if ( options.delay ) { - element.delay( options.delay ); - } - if ( hasOptions && $.effects && ( $.effects.effect[ effectName ] || $.uiBackCompat !== false && $.effects[ effectName ] ) ) { - element[ method ]( options ); - } else if ( effectName !== method && element[ effectName ] ) { - element[ effectName ]( options.duration, options.easing, callback ); - } else { - element.queue(function( next ) { - $( this )[ method ](); - if ( callback ) { - callback.call( element[ 0 ] ); - } - next(); - }); - } - }; -}); - -// DEPRECATED -if ( $.uiBackCompat !== false ) { - $.Widget.prototype._getCreateOptions = function() { - return $.metadata && $.metadata.get( this.element[0] )[ this.widgetName ]; - }; -} - -})( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.widget", { - // decorate the parent _createWidget to trigger `widgetinit` for users - // who wish to do post post `widgetcreate` alterations/additions - // - // TODO create a pull request for jquery ui to trigger this event - // in the original _createWidget - _createWidget: function() { - $.Widget.prototype._createWidget.apply( this, arguments ); - this._trigger( 'init' ); - }, - - _getCreateOptions: function() { - - var elem = this.element, - options = {}; - - $.each( this.options, function( option ) { - - var value = elem.jqmData( option.replace( /[A-Z]/g, function( c ) { - return "-" + c.toLowerCase(); - }) - ); - - if ( value !== undefined ) { - options[ option ] = value; - } - }); - - return options; - }, - - enhanceWithin: function( target, useKeepNative ) { - this.enhance( $( this.options.initSelector, $( target )), useKeepNative ); - }, - - enhance: function( targets, useKeepNative ) { - var page, keepNative, $widgetElements = $( targets ), self = this; - - // if ignoreContentEnabled is set to true the framework should - // only enhance the selected elements when they do NOT have a - // parent with the data-namespace-ignore attribute - $widgetElements = $.mobile.enhanceable( $widgetElements ); - - if ( useKeepNative && $widgetElements.length ) { - // TODO remove dependency on the page widget for the keepNative. - // Currently the keepNative value is defined on the page prototype so - // the method is as well - page = $.mobile.closestPageData( $widgetElements ); - keepNative = ( page && page.keepNativeSelector()) || ""; - - $widgetElements = $widgetElements.not( keepNative ); - } - - $widgetElements[ this.widgetName ](); - }, - - raise: function( msg ) { - throw "Widget [" + this.widgetName + "]: " + msg; - } -}); - -})( jQuery ); - - -(function( $, window ) { - // DEPRECATED - // NOTE global mobile object settings - $.extend( $.mobile, { - // DEPRECATED Should the text be visble in the loading message? - loadingMessageTextVisible: undefined, - - // DEPRECATED When the text is visible, what theme does the loading box use? - loadingMessageTheme: undefined, - - // DEPRECATED default message setting - loadingMessage: undefined, - - // DEPRECATED - // Turn on/off page loading message. Theme doubles as an object argument - // with the following shape: { theme: '', text: '', html: '', textVisible: '' } - // NOTE that the $.mobile.loading* settings and params past the first are deprecated - showPageLoadingMsg: function( theme, msgText, textonly ) { - $.mobile.loading( 'show', theme, msgText, textonly ); - }, - - // DEPRECATED - hidePageLoadingMsg: function() { - $.mobile.loading( 'hide' ); - }, - - loading: function() { - this.loaderWidget.loader.apply( this.loaderWidget, arguments ); - } - }); - - // TODO move loader class down into the widget settings - var loaderClass = "ui-loader", $html = $( "html" ), $window = $( window ); - - $.widget( "mobile.loader", { - // NOTE if the global config settings are defined they will override these - // options - options: { - // the theme for the loading message - theme: "a", - - // whether the text in the loading message is shown - textVisible: false, - - // custom html for the inner content of the loading message - html: "", - - // the text to be displayed when the popup is shown - text: "loading" - }, - - defaultHtml: "
" + - "" + - "

" + - "
", - - // For non-fixed supportin browsers. Position at y center (if scrollTop supported), above the activeBtn (if defined), or just 100px from top - fakeFixLoader: function() { - var activeBtn = $( "." + $.mobile.activeBtnClass ).first(); - - this.element - .css({ - top: $.support.scrollTop && $window.scrollTop() + $window.height() / 2 || - activeBtn.length && activeBtn.offset().top || 100 - }); - }, - - // check position of loader to see if it appears to be "fixed" to center - // if not, use abs positioning - checkLoaderPosition: function() { - var offset = this.element.offset(), - scrollTop = $window.scrollTop(), - screenHeight = $.mobile.getScreenHeight(); - - if ( offset.top < scrollTop || ( offset.top - scrollTop ) > screenHeight ) { - this.element.addClass( "ui-loader-fakefix" ); - this.fakeFixLoader(); - $window - .unbind( "scroll", this.checkLoaderPosition ) - .bind( "scroll", this.fakeFixLoader ); - } - }, - - resetHtml: function() { - this.element.html( $( this.defaultHtml ).html() ); - }, - - // Turn on/off page loading message. Theme doubles as an object argument - // with the following shape: { theme: '', text: '', html: '', textVisible: '' } - // NOTE that the $.mobile.loading* settings and params past the first are deprecated - // TODO sweet jesus we need to break some of this out - show: function( theme, msgText, textonly ) { - var textVisible, message, $header, loadSettings; - - this.resetHtml(); - - // use the prototype options so that people can set them globally at - // mobile init. Consistency, it's what's for dinner - if ( $.type(theme) === "object" ) { - loadSettings = $.extend( {}, this.options, theme ); - - // prefer object property from the param then the old theme setting - theme = loadSettings.theme || $.mobile.loadingMessageTheme; - } else { - loadSettings = this.options; - - // here we prefer the them value passed as a string argument, then - // we prefer the global option because we can't use undefined default - // prototype options, then the prototype option - theme = theme || $.mobile.loadingMessageTheme || loadSettings.theme; - } - - // set the message text, prefer the param, then the settings object - // then loading message - message = msgText || $.mobile.loadingMessage || loadSettings.text; - - // prepare the dom - $html.addClass( "ui-loading" ); - - if ( $.mobile.loadingMessage !== false || loadSettings.html ) { - // boolean values require a bit more work :P, supports object properties - // and old settings - if ( $.mobile.loadingMessageTextVisible !== undefined ) { - textVisible = $.mobile.loadingMessageTextVisible; - } else { - textVisible = loadSettings.textVisible; - } - - // add the proper css given the options (theme, text, etc) - // Force text visibility if the second argument was supplied, or - // if the text was explicitly set in the object args - this.element.attr("class", loaderClass + - " ui-corner-all ui-body-" + theme + - " ui-loader-" + ( textVisible || msgText || theme.text ? "verbose" : "default" ) + - ( loadSettings.textonly || textonly ? " ui-loader-textonly" : "" ) ); - - // TODO verify that jquery.fn.html is ok to use in both cases here - // this might be overly defensive in preventing unknowing xss - // if the html attribute is defined on the loading settings, use that - // otherwise use the fallbacks from above - if ( loadSettings.html ) { - this.element.html( loadSettings.html ); - } else { - this.element.find( "h1" ).text( message ); - } - - // attach the loader to the DOM - this.element.appendTo( $.mobile.pageContainer ); - - // check that the loader is visible - this.checkLoaderPosition(); - - // on scroll check the loader position - $window.bind( "scroll", $.proxy( this.checkLoaderPosition, this ) ); - } - }, - - hide: function() { - $html.removeClass( "ui-loading" ); - - if ( $.mobile.loadingMessage ) { - this.element.removeClass( "ui-loader-fakefix" ); - } - - $( window ).unbind( "scroll", $.proxy( this.fakeFixLoader, this) ); - $( window ).unbind( "scroll", $.proxy( this.checkLoaderPosition, this ) ); - } - }); - - $window.bind( 'pagecontainercreate', function() { - $.mobile.loaderWidget = $.mobile.loaderWidget || $( $.mobile.loader.prototype.defaultHtml ).loader(); - }); -})(jQuery, this); - // This plugin is an experiment for abstracting away the touch and mouse @@ -1128,7 +55,7 @@ var dataPropertyName = "virtualMouseBindings", eventCaptureSupported = "addEventListener" in document, $document = $( document ), nextTouchID = 1, - lastTouchID = 0, threshold; + lastTouchID = 0; $.vmouse = { moveDistanceThreshold: 10, @@ -1147,9 +74,9 @@ function getNativeEvent( event ) { function createVirtualEvent( event, eventType ) { var t = event.type, - oe, props, ne, prop, ct, touch, i, j, len; + oe, props, ne, prop, ct, touch, i, j; - event = $.Event( event ); + event = $.Event(event); event.type = eventType; oe = event.originalEvent; @@ -1173,7 +100,7 @@ function createVirtualEvent( event, eventType ) { // make sure that if the mouse and click virtual events are generated // without a .which one is defined - if ( t.search(/mouse(down|up)|click/) > -1 && !event.which ) { + if ( t.search(/mouse(down|up)|click/) > -1 && !event.which ){ event.which = 1; } @@ -1181,10 +108,10 @@ function createVirtualEvent( event, eventType ) { ne = getNativeEvent( oe ); t = ne.touches; ct = ne.changedTouches; - touch = ( t && t.length ) ? t[0] : ( ( ct && ct.length ) ? ct[ 0 ] : undefined ); + touch = ( t && t.length ) ? t[0] : ( (ct && ct.length) ? ct[ 0 ] : undefined ); if ( touch ) { - for ( j = 0, len = touchEventProps.length; j < len; j++) { + for ( j = 0, len = touchEventProps.length; j < len; j++){ prop = touchEventProps[ j ]; event[ prop ] = touch[ prop ]; } @@ -1253,14 +180,14 @@ function disableMouseBindings() { function startResetTimer() { clearResetTimer(); - resetTimerID = setTimeout( function() { + resetTimerID = setTimeout(function(){ resetTimerID = 0; enableMouseBindings(); }, $.vmouse.resetTimerDuration ); } function clearResetTimer() { - if ( resetTimerID ) { + if ( resetTimerID ){ clearTimeout( resetTimerID ); resetTimerID = 0; } @@ -1281,9 +208,9 @@ function triggerVirtualEvent( eventType, event, flags ) { } function mouseEventCallback( event ) { - var touchID = $.data( event.target, touchTargetPropertyName ); + var touchID = $.data(event.target, touchTargetPropertyName); - if ( !blockMouseTriggers && ( !lastTouchID || lastTouchID !== touchID ) ) { + if ( !blockMouseTriggers && ( !lastTouchID || lastTouchID !== touchID ) ){ var ve = triggerVirtualEvent( "v" + event.type, event ); if ( ve ) { if ( ve.isDefaultPrevented() ) { @@ -1349,13 +276,11 @@ function handleTouchMove( event ) { var t = getNativeEvent( event ).touches[ 0 ], didCancel = didScroll, - moveThreshold = $.vmouse.moveDistanceThreshold, - flags = getVirtualBindingFlags( event.target ); - + moveThreshold = $.vmouse.moveDistanceThreshold; didScroll = didScroll || - ( Math.abs( t.pageX - startX ) > moveThreshold || - Math.abs( t.pageY - startY ) > moveThreshold ); - + ( Math.abs(t.pageX - startX) > moveThreshold || + Math.abs(t.pageY - startY) > moveThreshold ), + flags = getVirtualBindingFlags( event.target ); if ( didScroll && !didCancel ) { triggerVirtualEvent( "vmousecancel", event, flags ); @@ -1415,7 +340,7 @@ function hasVirtualBindings( ele ) { return false; } -function dummyMouseHandler() {} +function dummyMouseHandler(){} function getSpecialEventObject( eventType ) { var realType = eventType.substr( 1 ); @@ -1426,7 +351,7 @@ function getSpecialEventObject( eventType ) { // add a bindings object to its data. if ( !hasVirtualBindings( this ) ) { - $.data( this, dataPropertyName, {} ); + $.data( this, dataPropertyName, {}); } // If setup is called, we know it is the first binding for this @@ -1456,7 +381,7 @@ function getSpecialEventObject( eventType ) { activeDocHandlers[ "touchstart" ] = ( activeDocHandlers[ "touchstart" ] || 0) + 1; - if ( activeDocHandlers[ "touchstart" ] === 1 ) { + if (activeDocHandlers[ "touchstart" ] === 1) { $document.bind( "touchstart", handleTouchStart ) .bind( "touchend", handleTouchEnd ) @@ -1528,7 +453,7 @@ function getSpecialEventObject( eventType ) { // Expose our custom events to the jQuery bind/unbind mechanism. -for ( var i = 0; i < virtualEventNames.length; i++ ) { +for ( var i = 0; i < virtualEventNames.length; i++ ){ $.event.special[ virtualEventNames[ i ] ] = getSpecialEventObject( virtualEventNames[ i ] ); } @@ -1536,7 +461,7 @@ for ( var i = 0; i < virtualEventNames.length; i++ ) { // Note that we require event capture support for this so if the device // doesn't support it, we punt for now and rely solely on mouse events. if ( eventCaptureSupported ) { - document.addEventListener( "click", function( e ) { + document.addEventListener( "click", function( e ){ var cnt = clickBlockList.length, target = e.target, x, y, ele, i, o, touchID; @@ -1596,681 +521,7 @@ if ( eventCaptureSupported ) { } })( jQuery, window, document ); - (function( $, undefined ) { - var support = { - touch: "ontouchend" in document - }; - $.mobile = $.mobile || {}; - $.mobile.support = $.mobile.support || {}; - $.extend( $.support, support ); - $.extend( $.mobile.support, support ); - }( jQuery )); - - -(function( $, window, undefined ) { - // add new event shortcuts - $.each( ( "touchstart touchmove touchend " + - "tap taphold " + - "swipe swipeleft swiperight " + - "scrollstart scrollstop" ).split( " " ), function( i, name ) { - - $.fn[ name ] = function( fn ) { - return fn ? this.bind( name, fn ) : this.trigger( name ); - }; - - // jQuery < 1.8 - if ( $.attrFn ) { - $.attrFn[ name ] = true; - } - }); - - var supportTouch = $.mobile.support.touch, - scrollEvent = "touchmove scroll", - touchStartEvent = supportTouch ? "touchstart" : "mousedown", - touchStopEvent = supportTouch ? "touchend" : "mouseup", - touchMoveEvent = supportTouch ? "touchmove" : "mousemove"; - - function triggerCustomEvent( obj, eventType, event ) { - var originalType = event.type; - event.type = eventType; - $.event.handle.call( obj, event ); - event.type = originalType; - } - - // also handles scrollstop - $.event.special.scrollstart = { - - enabled: true, - - setup: function() { - - var thisObject = this, - $this = $( thisObject ), - scrolling, - timer; - - function trigger( event, state ) { - scrolling = state; - triggerCustomEvent( thisObject, scrolling ? "scrollstart" : "scrollstop", event ); - } - - // iPhone triggers scroll after a small delay; use touchmove instead - $this.bind( scrollEvent, function( event ) { - - if ( !$.event.special.scrollstart.enabled ) { - return; - } - - if ( !scrolling ) { - trigger( event, true ); - } - - clearTimeout( timer ); - timer = setTimeout( function() { - trigger( event, false ); - }, 50 ); - }); - } - }; - - // also handles taphold - $.event.special.tap = { - tapholdThreshold: 750, - - setup: function() { - var thisObject = this, - $this = $( thisObject ); - - $this.bind( "vmousedown", function( event ) { - - if ( event.which && event.which !== 1 ) { - return false; - } - - var origTarget = event.target, - origEvent = event.originalEvent, - timer; - - function clearTapTimer() { - clearTimeout( timer ); - } - - function clearTapHandlers() { - clearTapTimer(); - - $this.unbind( "vclick", clickHandler ) - .unbind( "vmouseup", clearTapTimer ); - $( document ).unbind( "vmousecancel", clearTapHandlers ); - } - - function clickHandler( event ) { - clearTapHandlers(); - - // ONLY trigger a 'tap' event if the start target is - // the same as the stop target. - if ( origTarget === event.target ) { - triggerCustomEvent( thisObject, "tap", event ); - } - } - - $this.bind( "vmouseup", clearTapTimer ) - .bind( "vclick", clickHandler ); - $( document ).bind( "vmousecancel", clearTapHandlers ); - - timer = setTimeout( function() { - triggerCustomEvent( thisObject, "taphold", $.Event( "taphold", { target: origTarget } ) ); - }, $.event.special.tap.tapholdThreshold ); - }); - } - }; - - // also handles swipeleft, swiperight - $.event.special.swipe = { - scrollSupressionThreshold: 30, // More than this horizontal displacement, and we will suppress scrolling. - - durationThreshold: 1000, // More time than this, and it isn't a swipe. - - horizontalDistanceThreshold: 30, // Swipe horizontal displacement must be more than this. - - verticalDistanceThreshold: 75, // Swipe vertical displacement must be less than this. - - setup: function() { - var thisObject = this, - $this = $( thisObject ); - - $this.bind( touchStartEvent, function( event ) { - var data = event.originalEvent.touches ? - event.originalEvent.touches[ 0 ] : event, - start = { - time: ( new Date() ).getTime(), - coords: [ data.pageX, data.pageY ], - origin: $( event.target ) - }, - stop; - - function moveHandler( event ) { - - if ( !start ) { - return; - } - - var data = event.originalEvent.touches ? - event.originalEvent.touches[ 0 ] : event; - - stop = { - time: ( new Date() ).getTime(), - coords: [ data.pageX, data.pageY ] - }; - - // prevent scrolling - if ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) { - event.preventDefault(); - } - } - - $this.bind( touchMoveEvent, moveHandler ) - .one( touchStopEvent, function( event ) { - $this.unbind( touchMoveEvent, moveHandler ); - - if ( start && stop ) { - if ( stop.time - start.time < $.event.special.swipe.durationThreshold && - Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.horizontalDistanceThreshold && - Math.abs( start.coords[ 1 ] - stop.coords[ 1 ] ) < $.event.special.swipe.verticalDistanceThreshold ) { - - start.origin.trigger( "swipe" ) - .trigger( start.coords[0] > stop.coords[ 0 ] ? "swipeleft" : "swiperight" ); - } - } - start = stop = undefined; - }); - }); - } - }; - $.each({ - scrollstop: "scrollstart", - taphold: "tap", - swipeleft: "swipe", - swiperight: "swipe" - }, function( event, sourceEvent ) { - - $.event.special[ event ] = { - setup: function() { - $( this ).bind( sourceEvent, $.noop ); - } - }; - }); - -})( jQuery, this ); - - (function( $, undefined ) { - $.extend( $.support, { - orientation: "orientation" in window && "onorientationchange" in window - }); - }( jQuery )); - - - // throttled resize event - (function( $ ) { - $.event.special.throttledresize = { - setup: function() { - $( this ).bind( "resize", handler ); - }, - teardown: function() { - $( this ).unbind( "resize", handler ); - } - }; - - var throttle = 250, - handler = function() { - curr = ( new Date() ).getTime(); - diff = curr - lastCall; - - if ( diff >= throttle ) { - - lastCall = curr; - $( this ).trigger( "throttledresize" ); - - } else { - - if ( heldCall ) { - clearTimeout( heldCall ); - } - - // Promise a held call will still execute - heldCall = setTimeout( handler, throttle - diff ); - } - }, - lastCall = 0, - heldCall, - curr, - diff; - })( jQuery ); - -(function( $, window ) { - var win = $( window ), - event_name = "orientationchange", - special_event, - get_orientation, - last_orientation, - initial_orientation_is_landscape, - initial_orientation_is_default, - portrait_map = { "0": true, "180": true }; - - // It seems that some device/browser vendors use window.orientation values 0 and 180 to - // denote the "default" orientation. For iOS devices, and most other smart-phones tested, - // the default orientation is always "portrait", but in some Android and RIM based tablets, - // the default orientation is "landscape". The following code attempts to use the window - // dimensions to figure out what the current orientation is, and then makes adjustments - // to the to the portrait_map if necessary, so that we can properly decode the - // window.orientation value whenever get_orientation() is called. - // - // Note that we used to use a media query to figure out what the orientation the browser - // thinks it is in: - // - // initial_orientation_is_landscape = $.mobile.media("all and (orientation: landscape)"); - // - // but there was an iPhone/iPod Touch bug beginning with iOS 4.2, up through iOS 5.1, - // where the browser *ALWAYS* applied the landscape media query. This bug does not - // happen on iPad. - - if ( $.support.orientation ) { - - // Check the window width and height to figure out what the current orientation - // of the device is at this moment. Note that we've initialized the portrait map - // values to 0 and 180, *AND* we purposely check for landscape so that if we guess - // wrong, , we default to the assumption that portrait is the default orientation. - // We use a threshold check below because on some platforms like iOS, the iPhone - // form-factor can report a larger width than height if the user turns on the - // developer console. The actual threshold value is somewhat arbitrary, we just - // need to make sure it is large enough to exclude the developer console case. - - var ww = window.innerWidth || $( window ).width(), - wh = window.innerHeight || $( window ).height(), - landscape_threshold = 50; - - initial_orientation_is_landscape = ww > wh && ( ww - wh ) > landscape_threshold; - - - // Now check to see if the current window.orientation is 0 or 180. - initial_orientation_is_default = portrait_map[ window.orientation ]; - - // If the initial orientation is landscape, but window.orientation reports 0 or 180, *OR* - // if the initial orientation is portrait, but window.orientation reports 90 or -90, we - // need to flip our portrait_map values because landscape is the default orientation for - // this device/browser. - if ( ( initial_orientation_is_landscape && initial_orientation_is_default ) || ( !initial_orientation_is_landscape && !initial_orientation_is_default ) ) { - portrait_map = { "-90": true, "90": true }; - } - } - - $.event.special.orientationchange = $.extend( {}, $.event.special.orientationchange, { - setup: function() { - // If the event is supported natively, return false so that jQuery - // will bind to the event using DOM methods. - if ( $.support.orientation && !$.event.special.orientationchange.disabled ) { - return false; - } - - // Get the current orientation to avoid initial double-triggering. - last_orientation = get_orientation(); - - // Because the orientationchange event doesn't exist, simulate the - // event by testing window dimensions on resize. - win.bind( "throttledresize", handler ); - }, - teardown: function() { - // If the event is not supported natively, return false so that - // jQuery will unbind the event using DOM methods. - if ( $.support.orientation && !$.event.special.orientationchange.disabled ) { - return false; - } - - // Because the orientationchange event doesn't exist, unbind the - // resize event handler. - win.unbind( "throttledresize", handler ); - }, - add: function( handleObj ) { - // Save a reference to the bound event handler. - var old_handler = handleObj.handler; - - - handleObj.handler = function( event ) { - // Modify event object, adding the .orientation property. - event.orientation = get_orientation(); - - // Call the originally-bound event handler and return its result. - return old_handler.apply( this, arguments ); - }; - } - }); - - // If the event is not supported natively, this handler will be bound to - // the window resize event to simulate the orientationchange event. - function handler() { - // Get the current orientation. - var orientation = get_orientation(); - - if ( orientation !== last_orientation ) { - // The orientation has changed, so trigger the orientationchange event. - last_orientation = orientation; - win.trigger( event_name ); - } - } - - // Get the current page orientation. This method is exposed publicly, should it - // be needed, as jQuery.event.special.orientationchange.orientation() - $.event.special.orientationchange.orientation = get_orientation = function() { - var isPortrait = true, elem = document.documentElement; - - // prefer window orientation to the calculation based on screensize as - // the actual screen resize takes place before or after the orientation change event - // has been fired depending on implementation (eg android 2.3 is before, iphone after). - // More testing is required to determine if a more reliable method of determining the new screensize - // is possible when orientationchange is fired. (eg, use media queries + element + opacity) - if ( $.support.orientation ) { - // if the window orientation registers as 0 or 180 degrees report - // portrait, otherwise landscape - isPortrait = portrait_map[ window.orientation ]; - } else { - isPortrait = elem && elem.clientWidth / elem.clientHeight < 1.1; - } - - return isPortrait ? "portrait" : "landscape"; - }; - - $.fn[ event_name ] = function( fn ) { - return fn ? this.bind( event_name, fn ) : this.trigger( event_name ); - }; - - // jQuery < 1.8 - if ( $.attrFn ) { - $.attrFn[ event_name ] = true; - } - -}( jQuery, this )); - - -(function( $, undefined ) { - -var $window = $( window ), - $html = $( "html" ); - -/* $.mobile.media method: pass a CSS media type or query and get a bool return - note: this feature relies on actual media query support for media queries, though types will work most anywhere - examples: - $.mobile.media('screen') // tests for screen media type - $.mobile.media('screen and (min-width: 480px)') // tests for screen media type with window width > 480px - $.mobile.media('@media screen and (-webkit-min-device-pixel-ratio: 2)') // tests for webkit 2x pixel ratio (iPhone 4) -*/ -$.mobile.media = (function() { - // TODO: use window.matchMedia once at least one UA implements it - var cache = {}, - testDiv = $( "
" ), - fakeBody = $( "" ).append( testDiv ); - - return function( query ) { - if ( !( query in cache ) ) { - var styleBlock = document.createElement( "style" ), - cssrule = "@media " + query + " { #jquery-mediatest { position:absolute; } }"; - - //must set type for IE! - styleBlock.type = "text/css"; - - if ( styleBlock.styleSheet ) { - styleBlock.styleSheet.cssText = cssrule; - } else { - styleBlock.appendChild( document.createTextNode(cssrule) ); - } - - $html.prepend( fakeBody ).prepend( styleBlock ); - cache[ query ] = testDiv.css( "position" ) === "absolute"; - fakeBody.add( styleBlock ).remove(); - } - return cache[ query ]; - }; -})(); - -})(jQuery); - -(function( $, undefined ) { - -// thx Modernizr -function propExists( prop ) { - var uc_prop = prop.charAt( 0 ).toUpperCase() + prop.substr( 1 ), - props = ( prop + " " + vendors.join( uc_prop + " " ) + uc_prop ).split( " " ); - - for ( var v in props ) { - if ( fbCSS[ props[ v ] ] !== undefined ) { - return true; - } - } -} - -var fakeBody = $( "" ).prependTo( "html" ), - fbCSS = fakeBody[ 0 ].style, - vendors = [ "Webkit", "Moz", "O" ], - webos = "palmGetResource" in window, //only used to rule out scrollTop - opera = window.opera, - operamini = window.operamini && ({}).toString.call( window.operamini ) === "[object OperaMini]", - bb = window.blackberry && !propExists( "-webkit-transform" ); //only used to rule out box shadow, as it's filled opaque on BB 5 and lower - - -function validStyle( prop, value, check_vend ) { - var div = document.createElement( 'div' ), - uc = function( txt ) { - return txt.charAt( 0 ).toUpperCase() + txt.substr( 1 ); - }, - vend_pref = function( vend ) { - return "-" + vend.charAt( 0 ).toLowerCase() + vend.substr( 1 ) + "-"; - }, - check_style = function( vend ) { - var vend_prop = vend_pref( vend ) + prop + ": " + value + ";", - uc_vend = uc( vend ), - propStyle = uc_vend + uc( prop ); - - div.setAttribute( "style", vend_prop ); - - if ( !!div.style[ propStyle ] ) { - ret = true; - } - }, - check_vends = check_vend ? [ check_vend ] : vendors, - ret; - - for( var i = 0; i < check_vends.length; i++ ) { - check_style( check_vends[i] ); - } - return !!ret; -} - -// Thanks to Modernizr src for this test idea. `perspective` check is limited to Moz to prevent a false positive for 3D transforms on Android. -function transform3dTest() { - var prop = "transform-3d"; - return validStyle( 'perspective', '10px', 'moz' ) || $.mobile.media( "(-" + vendors.join( "-" + prop + "),(-" ) + "-" + prop + "),(" + prop + ")" ); -} - -// Test for dynamic-updating base tag support ( allows us to avoid href,src attr rewriting ) -function baseTagTest() { - var fauxBase = location.protocol + "//" + location.host + location.pathname + "ui-dir/", - base = $( "head base" ), - fauxEle = null, - href = "", - link, rebase; - - if ( !base.length ) { - base = fauxEle = $( "", { "href": fauxBase }).appendTo( "head" ); - } else { - href = base.attr( "href" ); - } - - link = $( "" ).prependTo( fakeBody ); - rebase = link[ 0 ].href; - base[ 0 ].href = href || location.pathname; - - if ( fauxEle ) { - fauxEle.remove(); - } - return rebase.indexOf( fauxBase ) === 0; -} - -// Thanks Modernizr -function cssPointerEventsTest() { - var element = document.createElement( 'x' ), - documentElement = document.documentElement, - getComputedStyle = window.getComputedStyle, - supports; - - if ( !( 'pointerEvents' in element.style ) ) { - return false; - } - - element.style.pointerEvents = 'auto'; - element.style.pointerEvents = 'x'; - documentElement.appendChild( element ); - supports = getComputedStyle && - getComputedStyle( element, '' ).pointerEvents === 'auto'; - documentElement.removeChild( element ); - return !!supports; -} - -function boundingRect() { - var div = document.createElement( "div" ); - return typeof div.getBoundingClientRect !== "undefined"; -} - -// non-UA-based IE version check by James Padolsey, modified by jdalton - from http://gist.github.com/527683 -// allows for inclusion of IE 6+, including Windows Mobile 7 -$.extend( $.mobile, { browser: {} } ); -$.mobile.browser.ie = (function() { - var v = 3, - div = document.createElement( "div" ), - a = div.all || []; - - do { - div.innerHTML = ""; - } while( a[0] ); - - return v > 4 ? v : !v; -})(); - - -$.extend( $.support, { - cssTransitions: "WebKitTransitionEvent" in window || validStyle( 'transition', 'height 100ms linear' ) && !opera, - pushState: "pushState" in history && "replaceState" in history, - mediaquery: $.mobile.media( "only all" ), - cssPseudoElement: !!propExists( "content" ), - touchOverflow: !!propExists( "overflowScrolling" ), - cssTransform3d: transform3dTest(), - boxShadow: !!propExists( "boxShadow" ) && !bb, - scrollTop: ( "pageXOffset" in window || "scrollTop" in document.documentElement || "scrollTop" in fakeBody[ 0 ] ) && !webos && !operamini, - dynamicBaseTag: baseTagTest(), - cssPointerEvents: cssPointerEventsTest(), - boundingRect: boundingRect() -}); - -fakeBody.remove(); - - -// $.mobile.ajaxBlacklist is used to override ajaxEnabled on platforms that have known conflicts with hash history updates (BB5, Symbian) -// or that generally work better browsing in regular http for full page refreshes (Opera Mini) -// Note: This detection below is used as a last resort. -// We recommend only using these detection methods when all other more reliable/forward-looking approaches are not possible -var nokiaLTE7_3 = (function() { - - var ua = window.navigator.userAgent; - - //The following is an attempt to match Nokia browsers that are running Symbian/s60, with webkit, version 7.3 or older - return ua.indexOf( "Nokia" ) > -1 && - ( ua.indexOf( "Symbian/3" ) > -1 || ua.indexOf( "Series60/5" ) > -1 ) && - ua.indexOf( "AppleWebKit" ) > -1 && - ua.match( /(BrowserNG|NokiaBrowser)\/7\.[0-3]/ ); -})(); - -// Support conditions that must be met in order to proceed -// default enhanced qualifications are media query support OR IE 7+ - -$.mobile.gradeA = function() { - return ( $.support.mediaquery || $.mobile.browser.ie && $.mobile.browser.ie >= 7 ) && ( $.support.boundingRect || $.fn.jquery.match(/1\.[0-7+]\.[0-9+]?/) !== null ); -}; - -$.mobile.ajaxBlacklist = - // BlackBerry browsers, pre-webkit - window.blackberry && !window.WebKitPoint || - // Opera Mini - operamini || - // Symbian webkits pre 7.3 - nokiaLTE7_3; - -// Lastly, this workaround is the only way we've found so far to get pre 7.3 Symbian webkit devices -// to render the stylesheets when they're referenced before this script, as we'd recommend doing. -// This simply reappends the CSS in place, which for some reason makes it apply -if ( nokiaLTE7_3 ) { - $(function() { - $( "head link[rel='stylesheet']" ).attr( "rel", "alternate stylesheet" ).attr( "rel", "stylesheet" ); - }); -} - -// For ruling out shadows via css -if ( !$.support.boxShadow ) { - $( "html" ).addClass( "ui-mobile-nosupport-boxshadow" ); -} - -})( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.page", $.mobile.widget, { - options: { - theme: "c", - domCache: false, - keepNativeDefault: ":jqmData(role='none'), :jqmData(role='nojs')" - }, - - _create: function() { - - var self = this; - - // if false is returned by the callbacks do not create the page - if ( self._trigger( "beforecreate" ) === false ) { - return false; - } - - self.element - .attr( "tabindex", "0" ) - .addClass( "ui-page ui-body-" + self.options.theme ) - .bind( "pagebeforehide", function() { - self.removeContainerBackground(); - } ) - .bind( "pagebeforeshow", function() { - self.setContainerBackground(); - } ); - - }, - - removeContainerBackground: function() { - $.mobile.pageContainer.removeClass( "ui-overlay-" + $.mobile.getInheritedTheme( this.element.parent() ) ); - }, - - // set the page container background to the page theme - setContainerBackground: function( theme ) { - if ( this.options.theme ) { - $.mobile.pageContainer.addClass( "ui-overlay-" + ( theme || this.options.theme ) ); - } - }, - - keepNativeSelector: function() { - var options = this.options, - keepNativeDefined = options.keepNative && $.trim( options.keepNative ); - - if ( keepNativeDefined && options.keepNative !== options.keepNativeDefault ) { - return [options.keepNative, options.keepNativeDefault].join( ", " ); - } - - return options.keepNativeDefault; - } -}); -})( jQuery ); // Script: jQuery hashchange event // @@ -2350,7 +601,7 @@ $.widget( "mobile.page", $.mobile.widget, { // extra awesomeness that BBQ provides. This plugin will be included as // part of jQuery BBQ, but also be available separately. -(function( $, window, undefined ) { +(function($,window,undefined){ // Reused string. var str_hashchange = 'hashchange', @@ -2516,14 +767,14 @@ $.widget( "mobile.page", $.mobile.widget, { // event for browsers that don't natively support it, including creating a // polling loop to watch for hash changes and in IE 6/7 creating a hidden // Iframe to enable back and forward. - fake_onhashchange = (function() { + fake_onhashchange = (function(){ var self = {}, timeout_id, // Remember the initial hash so it doesn't get triggered immediately. last_hash = get_fragment(), - fn_retval = function( val ) { return val; }, + fn_retval = function(val){ return val; }, history_set = fn_retval, history_get = fn_retval; @@ -2560,7 +811,7 @@ $.widget( "mobile.page", $.mobile.widget, { // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv // vvvvvvvvvvvvvvvvvvv REMOVE IF NOT SUPPORTING IE6/7/8 vvvvvvvvvvvvvvvvvvv // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv - $.browser.msie && !supports_onhashchange && (function() { + $.browser.msie && !supports_onhashchange && (function(){ // Not only do IE6/7 need the "magical" Iframe treatment, but so does IE8 // when running in "IE7 compatibility" mode. @@ -2569,7 +820,7 @@ $.widget( "mobile.page", $.mobile.widget, { // When the event is bound and polling starts in IE 6/7, create a hidden // Iframe for history handling. - self.start = function() { + self.start = function(){ if ( !iframe ) { iframe_src = $.fn[ str_hashchange ].src; iframe_src = iframe_src && iframe_src + get_fragment(); @@ -2580,7 +831,7 @@ $.widget( "mobile.page", $.mobile.widget, { // When Iframe has completely loaded, initialize the history and // start polling. - .one( 'load', function() { + .one( 'load', function(){ iframe_src || history_set( get_fragment() ); poll(); }) @@ -2596,7 +847,7 @@ $.widget( "mobile.page", $.mobile.widget, { // prettify the back/next history menu entries. Since IE sometimes // errors with "Unspecified error" the very first time this is set // (yes, very useful) wrap this with a try/catch block. - doc.onpropertychange = function() { + doc.onpropertychange = function(){ try { if ( event.propertyName === 'title' ) { iframe.document.title = doc.title; @@ -2652,16 +903,1314 @@ $.widget( "mobile.page", $.mobile.widget, { })(jQuery,this); +/*! + * jQuery UI Widget @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ + +(function( $, undefined ) { + +// jQuery 1.4+ +if ( $.cleanData ) { + var _cleanData = $.cleanData; + $.cleanData = function( elems ) { + for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { + $( elem ).triggerHandler( "remove" ); + } + _cleanData( elems ); + }; +} else { + var _remove = $.fn.remove; + $.fn.remove = function( selector, keepData ) { + return this.each(function() { + if ( !keepData ) { + if ( !selector || $.filter( selector, [ this ] ).length ) { + $( "*", this ).add( [ this ] ).each(function() { + $( this ).triggerHandler( "remove" ); + }); + } + } + return _remove.call( $(this), selector, keepData ); + }); + }; +} + +$.widget = function( name, base, prototype ) { + var namespace = name.split( "." )[ 0 ], + fullName; + name = name.split( "." )[ 1 ]; + fullName = namespace + "-" + name; + + if ( !prototype ) { + prototype = base; + base = $.Widget; + } + + // create selector for plugin + $.expr[ ":" ][ fullName ] = function( elem ) { + return !!$.data( elem, name ); + }; + + $[ namespace ] = $[ namespace ] || {}; + $[ namespace ][ name ] = function( options, element ) { + // allow instantiation without initializing for simple inheritance + if ( arguments.length ) { + this._createWidget( options, element ); + } + }; + + var basePrototype = new base(); + // we need to make the options hash a property directly on the new instance + // otherwise we'll modify the options hash on the prototype that we're + // inheriting from +// $.each( basePrototype, function( key, val ) { +// if ( $.isPlainObject(val) ) { +// basePrototype[ key ] = $.extend( {}, val ); +// } +// }); + basePrototype.options = $.extend( true, {}, basePrototype.options ); + $[ namespace ][ name ].prototype = $.extend( true, basePrototype, { + namespace: namespace, + widgetName: name, + widgetEventPrefix: $[ namespace ][ name ].prototype.widgetEventPrefix || name, + widgetBaseClass: fullName + }, prototype ); + + $.widget.bridge( name, $[ namespace ][ name ] ); +}; + +$.widget.bridge = function( name, object ) { + $.fn[ name ] = function( options ) { + var isMethodCall = typeof options === "string", + args = Array.prototype.slice.call( arguments, 1 ), + returnValue = this; + + // allow multiple hashes to be passed on init + options = !isMethodCall && args.length ? + $.extend.apply( null, [ true, options ].concat(args) ) : + options; + + // prevent calls to internal methods + if ( isMethodCall && options.charAt( 0 ) === "_" ) { + return returnValue; + } + + if ( isMethodCall ) { + this.each(function() { + var instance = $.data( this, name ); + if ( !instance ) { + throw "cannot call methods on " + name + " prior to initialization; " + + "attempted to call method '" + options + "'"; + } + if ( !$.isFunction( instance[options] ) ) { + throw "no such method '" + options + "' for " + name + " widget instance"; + } + var methodValue = instance[ options ].apply( instance, args ); + if ( methodValue !== instance && methodValue !== undefined ) { + returnValue = methodValue; + return false; + } + }); + } else { + this.each(function() { + var instance = $.data( this, name ); + if ( instance ) { + instance.option( options || {} )._init(); + } else { + $.data( this, name, new object( options, this ) ); + } + }); + } + + return returnValue; + }; +}; + +$.Widget = function( options, element ) { + // allow instantiation without initializing for simple inheritance + if ( arguments.length ) { + this._createWidget( options, element ); + } +}; + +$.Widget.prototype = { + widgetName: "widget", + widgetEventPrefix: "", + options: { + disabled: false + }, + _createWidget: function( options, element ) { + // $.widget.bridge stores the plugin instance, but we do it anyway + // so that it's stored even before the _create function runs + $.data( element, this.widgetName, this ); + this.element = $( element ); + this.options = $.extend( true, {}, + this.options, + this._getCreateOptions(), + options ); + + var self = this; + this.element.bind( "remove." + this.widgetName, function() { + self.destroy(); + }); + + this._create(); + this._trigger( "create" ); + this._init(); + }, + _getCreateOptions: function() { + var options = {}; + if ( $.metadata ) { + options = $.metadata.get( element )[ this.widgetName ]; + } + return options; + }, + _create: function() {}, + _init: function() {}, + + destroy: function() { + this.element + .unbind( "." + this.widgetName ) + .removeData( this.widgetName ); + this.widget() + .unbind( "." + this.widgetName ) + .removeAttr( "aria-disabled" ) + .removeClass( + this.widgetBaseClass + "-disabled " + + "ui-state-disabled" ); + }, + + widget: function() { + return this.element; + }, + + option: function( key, value ) { + var options = key; + + if ( arguments.length === 0 ) { + // don't return a reference to the internal hash + return $.extend( {}, this.options ); + } + + if (typeof key === "string" ) { + if ( value === undefined ) { + return this.options[ key ]; + } + options = {}; + options[ key ] = value; + } + + this._setOptions( options ); + + return this; + }, + _setOptions: function( options ) { + var self = this; + $.each( options, function( key, value ) { + self._setOption( key, value ); + }); + + return this; + }, + _setOption: function( key, value ) { + this.options[ key ] = value; + + if ( key === "disabled" ) { + this.widget() + [ value ? "addClass" : "removeClass"]( + this.widgetBaseClass + "-disabled" + " " + + "ui-state-disabled" ) + .attr( "aria-disabled", value ); + } + + return this; + }, + + enable: function() { + return this._setOption( "disabled", false ); + }, + disable: function() { + return this._setOption( "disabled", true ); + }, + + _trigger: function( type, event, data ) { + var callback = this.options[ type ]; + + event = $.Event( event ); + event.type = ( type === this.widgetEventPrefix ? + type : + this.widgetEventPrefix + type ).toLowerCase(); + data = data || {}; + + // copy original event properties over to the new event + // this would happen if we could call $.event.fix instead of $.Event + // but we don't have a way to force an event to be fixed multiple times + if ( event.originalEvent ) { + for ( var i = $.event.props.length, prop; i; ) { + prop = $.event.props[ --i ]; + event[ prop ] = event.originalEvent[ prop ]; + } + } + + this.element.trigger( event, data ); + + return !( $.isFunction(callback) && + callback.call( this.element[0], event, data ) === false || + event.isDefaultPrevented() ); + } +}; + +})( jQuery ); + +(function( $, undefined ) { + +$.widget( "mobile.widget", { + // decorate the parent _createWidget to trigger `widgetinit` for users + // who wish to do post post `widgetcreate` alterations/additions + // + // TODO create a pull request for jquery ui to trigger this event + // in the original _createWidget + _createWidget: function() { + $.Widget.prototype._createWidget.apply( this, arguments ); + this._trigger( 'init' ); + }, + + _getCreateOptions: function() { + + var elem = this.element, + options = {}; + + $.each( this.options, function( option ) { + + var value = elem.jqmData( option.replace( /[A-Z]/g, function( c ) { + return "-" + c.toLowerCase(); + }) + ); + + if ( value !== undefined ) { + options[ option ] = value; + } + }); + + return options; + }, + + enhanceWithin: function( target, useKeepNative ) { + this.enhance( $( this.options.initSelector, $( target )), useKeepNative ); + }, + + enhance: function( targets, useKeepNative ) { + var page, keepNative, $widgetElements = $( targets ), self = this; + + // if ignoreContentEnabled is set to true the framework should + // only enhance the selected elements when they do NOT have a + // parent with the data-namespace-ignore attribute + $widgetElements = $.mobile.enhanceable( $widgetElements ); + + if ( useKeepNative && $widgetElements.length ) { + // TODO remove dependency on the page widget for the keepNative. + // Currently the keepNative value is defined on the page prototype so + // the method is as well + page = $.mobile.closestPageData( $widgetElements ); + keepNative = (page && page.keepNativeSelector()) || ""; + + $widgetElements = $widgetElements.not( keepNative ); + } + + $widgetElements[ this.widgetName ](); + }, + + raise: function( msg ) { + throw "Widget [" + this.widgetName + "]: " + msg; + } +}); + +})( jQuery ); (function( $, window, undefined ) { -var createHandler = function( sequential ) { + var nsNormalizeDict = {}; - // Default to sequential - if ( sequential === undefined ) { - sequential = true; + // jQuery.mobile configurable options + $.mobile = $.extend( {}, { + + // Version of the jQuery Mobile Framework + version: "1.1.1", + + // Namespace used framework-wide for data-attrs. Default is no namespace + ns: "", + + // Define the url parameter used for referencing widget-generated sub-pages. + // Translates to to example.html&ui-page=subpageIdentifier + // hash segment before &ui-page= is used to make Ajax request + subPageUrlKey: "ui-page", + + // Class assigned to page currently in view, and during transitions + activePageClass: "ui-page-active", + + // Class used for "active" button state, from CSS framework + activeBtnClass: "ui-btn-active", + + // Class used for "focus" form element state, from CSS framework + focusClass: "ui-focus", + + // Automatically handle clicks and form submissions through Ajax, when same-domain + ajaxEnabled: true, + + // Automatically load and show pages based on location.hash + hashListeningEnabled: true, + + // disable to prevent jquery from bothering with links + linkBindingEnabled: true, + + // Set default page transition - 'none' for no transitions + defaultPageTransition: "fade", + + // Set maximum window width for transitions to apply - 'false' for no limit + maxTransitionWidth: false, + + // Minimum scroll distance that will be remembered when returning to a page + minScrollBack: 250, + + // DEPRECATED: the following property is no longer in use, but defined until 2.0 to prevent conflicts + touchOverflowEnabled: false, + + // Set default dialog transition - 'none' for no transitions + defaultDialogTransition: "pop", + + // Show loading message during Ajax requests + // if false, message will not appear, but loading classes will still be toggled on html el + loadingMessage: "loading", + + // Error response message - appears when an Ajax page request fails + pageLoadErrorMessage: "Error Loading Page", + + // Should the text be visble in the loading message? + loadingMessageTextVisible: false, + + // When the text is visible, what theme does the loading box use? + loadingMessageTheme: "a", + + // For error messages, which theme does the box uses? + pageLoadErrorMessageTheme: "e", + + //automatically initialize the DOM when it's ready + autoInitializePage: true, + + pushStateEnabled: true, + + // allows users to opt in to ignoring content by marking a parent element as + // data-ignored + ignoreContentEnabled: false, + + // turn of binding to the native orientationchange due to android orientation behavior + orientationChangeEnabled: true, + + buttonMarkup: { + hoverDelay: 200 + }, + + // TODO might be useful upstream in jquery itself ? + keyCode: { + ALT: 18, + BACKSPACE: 8, + CAPS_LOCK: 20, + COMMA: 188, + COMMAND: 91, + COMMAND_LEFT: 91, // COMMAND + COMMAND_RIGHT: 93, + CONTROL: 17, + DELETE: 46, + DOWN: 40, + END: 35, + ENTER: 13, + ESCAPE: 27, + HOME: 36, + INSERT: 45, + LEFT: 37, + MENU: 93, // COMMAND_RIGHT + 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 // COMMAND + }, + + // Scroll page vertically: scroll to 0 to hide iOS address bar, or pass a Y value + silentScroll: function( ypos ) { + if ( $.type( ypos ) !== "number" ) { + ypos = $.mobile.defaultHomeScroll; + } + + // prevent scrollstart and scrollstop events + $.event.special.scrollstart.enabled = false; + + setTimeout(function() { + window.scrollTo( 0, ypos ); + $( document ).trigger( "silentscroll", { x: 0, y: ypos }); + }, 20 ); + + setTimeout(function() { + $.event.special.scrollstart.enabled = true; + }, 150 ); + }, + + // Expose our cache for testing purposes. + nsNormalizeDict: nsNormalizeDict, + + // Take a data attribute property, prepend the namespace + // and then camel case the attribute string. Add the result + // to our nsNormalizeDict so we don't have to do this again. + nsNormalize: function( prop ) { + if ( !prop ) { + return; + } + + return nsNormalizeDict[ prop ] || ( nsNormalizeDict[ prop ] = $.camelCase( $.mobile.ns + prop ) ); + }, + + // Find the closest parent with a theme class on it. Note that + // we are not using $.fn.closest() on purpose here because this + // method gets called quite a bit and we need it to be as fast + // as possible. + getInheritedTheme: function( el, defaultTheme ) { + var e = el[ 0 ], + ltr = "", + re = /ui-(bar|body|overlay)-([a-z])\b/, + c, m; + + while ( e ) { + c = e.className || ""; + if ( c && ( m = re.exec( c ) ) && ( ltr = m[ 2 ] ) ) { + // We found a parent with a theme class + // on it so bail from this loop. + break; + } + + e = e.parentNode; + } + + // Return the theme letter we found, if none, return the + // specified default. + + return ltr || defaultTheme || "a"; + }, + + // TODO the following $ and $.fn extensions can/probably should be moved into jquery.mobile.core.helpers + // + // Find the closest javascript page element to gather settings data jsperf test + // http://jsperf.com/single-complex-selector-vs-many-complex-selectors/edit + // possibly naive, but it shows that the parsing overhead for *just* the page selector vs + // the page and dialog selector is negligable. This could probably be speed up by + // doing a similar parent node traversal to the one found in the inherited theme code above + closestPageData: function( $target ) { + return $target + .closest(':jqmData(role="page"), :jqmData(role="dialog")') + .data("page"); + }, + + enhanceable: function( $set ) { + return this.haveParents( $set, "enhance" ); + }, + + hijackable: function( $set ) { + return this.haveParents( $set, "ajax" ); + }, + + haveParents: function( $set, attr ) { + if( !$.mobile.ignoreContentEnabled ){ + return $set; + } + + var count = $set.length, + $newSet = $(), + e, $element, excluded; + + for ( var i = 0; i < count; i++ ) { + $element = $set.eq( i ); + excluded = false; + e = $set[ i ]; + + while ( e ) { + var c = e.getAttribute ? e.getAttribute( "data-" + $.mobile.ns + attr ) : ""; + + if ( c === "false" ) { + excluded = true; + break; + } + + e = e.parentNode; + } + + if ( !excluded ) { + $newSet = $newSet.add( $element ); + } + } + + return $newSet; + }, + + getScreenHeight: function(){ + // Native innerHeight returns more accurate value for this across platforms, + // jQuery version is here as a normalized fallback for platforms like Symbian + return window.innerHeight || $( window ).height(); + } + }, $.mobile ); + + // Mobile version of data and removeData and hasData methods + // ensures all data is set and retrieved using jQuery Mobile's data namespace + $.fn.jqmData = function( prop, value ) { + var result; + if ( typeof prop != "undefined" ) { + if ( prop ) { + prop = $.mobile.nsNormalize( prop ); + } + result = this.data.apply( this, arguments.length < 2 ? [ prop ] : [ prop, value ] ); + } + return result; + }; + + $.jqmData = function( elem, prop, value ) { + var result; + if ( typeof prop != "undefined" ) { + result = $.data( elem, prop ? $.mobile.nsNormalize( prop ) : prop, value ); + } + return result; + }; + + $.fn.jqmRemoveData = function( prop ) { + return this.removeData( $.mobile.nsNormalize( prop ) ); + }; + + $.jqmRemoveData = function( elem, prop ) { + return $.removeData( elem, $.mobile.nsNormalize( prop ) ); + }; + + $.fn.removeWithDependents = function() { + $.removeWithDependents( this ); + }; + + $.removeWithDependents = function( elem ) { + var $elem = $( elem ); + + ( $elem.jqmData('dependents') || $() ).remove(); + $elem.remove(); + }; + + $.fn.addDependents = function( newDependents ) { + $.addDependents( $(this), newDependents ); + }; + + $.addDependents = function( elem, newDependents ) { + var dependents = $(elem).jqmData( 'dependents' ) || $(); + + $(elem).jqmData( 'dependents', $.merge(dependents, newDependents) ); + }; + + // note that this helper doesn't attempt to handle the callback + // or setting of an html elements text, its only purpose is + // to return the html encoded version of the text in all cases. (thus the name) + $.fn.getEncodedText = function() { + return $( "
" ).text( $(this).text() ).html(); + }; + + // fluent helper function for the mobile namespaced equivalent + $.fn.jqmEnhanceable = function() { + return $.mobile.enhanceable( this ); + }; + + $.fn.jqmHijackable = function() { + return $.mobile.hijackable( this ); + }; + + // Monkey-patching Sizzle to filter the :jqmData selector + var oldFind = $.find, + jqmDataRE = /:jqmData\(([^)]*)\)/g; + + $.find = function( selector, context, ret, extra ) { + selector = selector.replace( jqmDataRE, "[data-" + ( $.mobile.ns || "" ) + "$1]" ); + + return oldFind.call( this, selector, context, ret, extra ); + }; + + $.extend( $.find, oldFind ); + + $.find.matches = function( expr, set ) { + return $.find( expr, null, null, set ); + }; + + $.find.matchesSelector = function( node, expr ) { + return $.find( expr, null, null, [ node ] ).length > 0; + }; +})( jQuery, this ); + + +(function( $, undefined ) { + +var $window = $( window ), + $html = $( "html" ); + +/* $.mobile.media method: pass a CSS media type or query and get a bool return + note: this feature relies on actual media query support for media queries, though types will work most anywhere + examples: + $.mobile.media('screen') // tests for screen media type + $.mobile.media('screen and (min-width: 480px)') // tests for screen media type with window width > 480px + $.mobile.media('@media screen and (-webkit-min-device-pixel-ratio: 2)') // tests for webkit 2x pixel ratio (iPhone 4) +*/ +$.mobile.media = (function() { + // TODO: use window.matchMedia once at least one UA implements it + var cache = {}, + testDiv = $( "
" ), + fakeBody = $( "" ).append( testDiv ); + + return function( query ) { + if ( !( query in cache ) ) { + var styleBlock = document.createElement( "style" ), + cssrule = "@media " + query + " { #jquery-mediatest { position:absolute; } }"; + + //must set type for IE! + styleBlock.type = "text/css"; + + if ( styleBlock.styleSheet ){ + styleBlock.styleSheet.cssText = cssrule; + } else { + styleBlock.appendChild( document.createTextNode(cssrule) ); + } + + $html.prepend( fakeBody ).prepend( styleBlock ); + cache[ query ] = testDiv.css( "position" ) === "absolute"; + fakeBody.add( styleBlock ).remove(); + } + return cache[ query ]; + }; +})(); + +})(jQuery); + +(function( $, undefined ) { + +var fakeBody = $( "" ).prependTo( "html" ), + fbCSS = fakeBody[ 0 ].style, + vendors = [ "Webkit", "Moz", "O" ], + webos = "palmGetResource" in window, //only used to rule out scrollTop + opera = window.opera, + operamini = window.operamini && ({}).toString.call( window.operamini ) === "[object OperaMini]", + bb = window.blackberry; //only used to rule out box shadow, as it's filled opaque on BB + +// thx Modernizr +function propExists( prop ) { + var uc_prop = prop.charAt( 0 ).toUpperCase() + prop.substr( 1 ), + props = ( prop + " " + vendors.join( uc_prop + " " ) + uc_prop ).split( " " ); + + for ( var v in props ){ + if ( fbCSS[ props[ v ] ] !== undefined ) { + return true; + } + } +} + +function validStyle( prop, value, check_vend ) { + var div = document.createElement('div'), + uc = function( txt ) { + return txt.charAt( 0 ).toUpperCase() + txt.substr( 1 ) + }, + vend_pref = function( vend ) { + return "-" + vend.charAt( 0 ).toLowerCase() + vend.substr( 1 ) + "-"; + }, + check_style = function( vend ) { + var vend_prop = vend_pref( vend ) + prop + ": " + value + ";", + uc_vend = uc( vend ), + propStyle = uc_vend + uc( prop ); + + div.setAttribute( "style", vend_prop ); + + if( !!div.style[ propStyle ] ) { + ret = true; + } + }, + check_vends = check_vend ? [ check_vend ] : vendors, + ret; + + for( i = 0; i < check_vends.length; i++ ) { + check_style( check_vends[i] ); + } + return !!ret; +} + +// Thanks to Modernizr src for this test idea. `perspective` check is limited to Moz to prevent a false positive for 3D transforms on Android. +function transform3dTest() { + var prop = "transform-3d"; + return validStyle( 'perspective', '10px', 'moz' ) || $.mobile.media( "(-" + vendors.join( "-" + prop + "),(-" ) + "-" + prop + "),(" + prop + ")" ); +} + +// Test for dynamic-updating base tag support ( allows us to avoid href,src attr rewriting ) +function baseTagTest() { + var fauxBase = location.protocol + "//" + location.host + location.pathname + "ui-dir/", + base = $( "head base" ), + fauxEle = null, + href = "", + link, rebase; + + if ( !base.length ) { + base = fauxEle = $( "", { "href": fauxBase }).appendTo( "head" ); + } else { + href = base.attr( "href" ); } + link = $( "
" ).prependTo( fakeBody ); + rebase = link[ 0 ].href; + base[ 0 ].href = href || location.pathname; + + if ( fauxEle ) { + fauxEle.remove(); + } + return rebase.indexOf( fauxBase ) === 0; +} + +// Thanks Modernizr +function cssPointerEventsTest() { + var element = document.createElement('x'), + documentElement = document.documentElement, + getComputedStyle = window.getComputedStyle, + supports; + + if( !( 'pointerEvents' in element.style ) ){ + return false; + } + + element.style.pointerEvents = 'auto'; + element.style.pointerEvents = 'x'; + documentElement.appendChild(element); + supports = getComputedStyle && + getComputedStyle( element, '' ).pointerEvents === 'auto'; + documentElement.removeChild( element ); + return !!supports; +} + + +// non-UA-based IE version check by James Padolsey, modified by jdalton - from http://gist.github.com/527683 +// allows for inclusion of IE 6+, including Windows Mobile 7 +$.extend( $.mobile, { browser: {} } ); +$.mobile.browser.ie = (function() { + var v = 3, + div = document.createElement( "div" ), + a = div.all || []; + + // added {} to silence closure compiler warnings. registering my dislike of all things + // overly clever here for future reference + while ( div.innerHTML = "", a[ 0 ] ){}; + + return v > 4 ? v : !v; +})(); + + +$.extend( $.support, { + orientation: "orientation" in window && "onorientationchange" in window, + touch: "ontouchend" in document, + cssTransitions: "WebKitTransitionEvent" in window || validStyle( 'transition', 'height 100ms linear' ) && !opera, + pushState: "pushState" in history && "replaceState" in history, + mediaquery: $.mobile.media( "only all" ), + cssPseudoElement: !!propExists( "content" ), + touchOverflow: !!propExists( "overflowScrolling" ), + cssTransform3d: transform3dTest(), + boxShadow: !!propExists( "boxShadow" ) && !bb, + scrollTop: ( "pageXOffset" in window || "scrollTop" in document.documentElement || "scrollTop" in fakeBody[ 0 ] ) && !webos && !operamini, + dynamicBaseTag: baseTagTest(), + cssPointerEvents: cssPointerEventsTest() +}); + +fakeBody.remove(); + + +// $.mobile.ajaxBlacklist is used to override ajaxEnabled on platforms that have known conflicts with hash history updates (BB5, Symbian) +// or that generally work better browsing in regular http for full page refreshes (Opera Mini) +// Note: This detection below is used as a last resort. +// We recommend only using these detection methods when all other more reliable/forward-looking approaches are not possible +var nokiaLTE7_3 = (function(){ + + var ua = window.navigator.userAgent; + + //The following is an attempt to match Nokia browsers that are running Symbian/s60, with webkit, version 7.3 or older + return ua.indexOf( "Nokia" ) > -1 && + ( ua.indexOf( "Symbian/3" ) > -1 || ua.indexOf( "Series60/5" ) > -1 ) && + ua.indexOf( "AppleWebKit" ) > -1 && + ua.match( /(BrowserNG|NokiaBrowser)\/7\.[0-3]/ ); +})(); + +// Support conditions that must be met in order to proceed +// default enhanced qualifications are media query support OR IE 7+ +$.mobile.gradeA = function(){ + return $.support.mediaquery || $.mobile.browser.ie && $.mobile.browser.ie >= 7; +}; + +$.mobile.ajaxBlacklist = + // BlackBerry browsers, pre-webkit + window.blackberry && !window.WebKitPoint || + // Opera Mini + operamini || + // Symbian webkits pre 7.3 + nokiaLTE7_3; + +// Lastly, this workaround is the only way we've found so far to get pre 7.3 Symbian webkit devices +// to render the stylesheets when they're referenced before this script, as we'd recommend doing. +// This simply reappends the CSS in place, which for some reason makes it apply +if ( nokiaLTE7_3 ) { + $(function() { + $( "head link[rel='stylesheet']" ).attr( "rel", "alternate stylesheet" ).attr( "rel", "stylesheet" ); + }); +} + +// For ruling out shadows via css +if ( !$.support.boxShadow ) { + $( "html" ).addClass( "ui-mobile-nosupport-boxshadow" ); +} + +})( jQuery ); + +(function( $, window, undefined ) { + +// add new event shortcuts +$.each( ( "touchstart touchmove touchend orientationchange throttledresize " + + "tap taphold swipe swipeleft swiperight scrollstart scrollstop" ).split( " " ), function( i, name ) { + + $.fn[ name ] = function( fn ) { + return fn ? this.bind( name, fn ) : this.trigger( name ); + }; + + $.attrFn[ name ] = true; +}); + +var supportTouch = $.support.touch, + scrollEvent = "touchmove scroll", + touchStartEvent = supportTouch ? "touchstart" : "mousedown", + touchStopEvent = supportTouch ? "touchend" : "mouseup", + touchMoveEvent = supportTouch ? "touchmove" : "mousemove"; + +function triggerCustomEvent( obj, eventType, event ) { + var originalType = event.type; + event.type = eventType; + $.event.handle.call( obj, event ); + event.type = originalType; +} + +// also handles scrollstop +$.event.special.scrollstart = { + + enabled: true, + + setup: function() { + + var thisObject = this, + $this = $( thisObject ), + scrolling, + timer; + + function trigger( event, state ) { + scrolling = state; + triggerCustomEvent( thisObject, scrolling ? "scrollstart" : "scrollstop", event ); + } + + // iPhone triggers scroll after a small delay; use touchmove instead + $this.bind( scrollEvent, function( event ) { + + if ( !$.event.special.scrollstart.enabled ) { + return; + } + + if ( !scrolling ) { + trigger( event, true ); + } + + clearTimeout( timer ); + timer = setTimeout(function() { + trigger( event, false ); + }, 50 ); + }); + } +}; + +// also handles taphold +$.event.special.tap = { + setup: function() { + var thisObject = this, + $this = $( thisObject ); + + $this.bind( "vmousedown", function( event ) { + + if ( event.which && event.which !== 1 ) { + return false; + } + + var origTarget = event.target, + origEvent = event.originalEvent, + timer; + + function clearTapTimer() { + clearTimeout( timer ); + } + + function clearTapHandlers() { + clearTapTimer(); + + $this.unbind( "vclick", clickHandler ) + .unbind( "vmouseup", clearTapTimer ); + $( document ).unbind( "vmousecancel", clearTapHandlers ); + } + + function clickHandler(event) { + clearTapHandlers(); + + // ONLY trigger a 'tap' event if the start target is + // the same as the stop target. + if ( origTarget == event.target ) { + triggerCustomEvent( thisObject, "tap", event ); + } + } + + $this.bind( "vmouseup", clearTapTimer ) + .bind( "vclick", clickHandler ); + $( document ).bind( "vmousecancel", clearTapHandlers ); + + timer = setTimeout(function() { + triggerCustomEvent( thisObject, "taphold", $.Event( "taphold", { target: origTarget } ) ); + }, 750 ); + }); + } +}; + +// also handles swipeleft, swiperight +$.event.special.swipe = { + scrollSupressionThreshold: 10, // More than this horizontal displacement, and we will suppress scrolling. + + durationThreshold: 1000, // More time than this, and it isn't a swipe. + + horizontalDistanceThreshold: 30, // Swipe horizontal displacement must be more than this. + + verticalDistanceThreshold: 75, // Swipe vertical displacement must be less than this. + + setup: function() { + var thisObject = this, + $this = $( thisObject ); + + $this.bind( touchStartEvent, function( event ) { + var data = event.originalEvent.touches ? + event.originalEvent.touches[ 0 ] : event, + start = { + time: ( new Date() ).getTime(), + coords: [ data.pageX, data.pageY ], + origin: $( event.target ) + }, + stop; + + function moveHandler( event ) { + + if ( !start ) { + return; + } + + var data = event.originalEvent.touches ? + event.originalEvent.touches[ 0 ] : event; + + stop = { + time: ( new Date() ).getTime(), + coords: [ data.pageX, data.pageY ] + }; + + // prevent scrolling + if ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) { + event.preventDefault(); + } + } + + $this.bind( touchMoveEvent, moveHandler ) + .one( touchStopEvent, function( event ) { + $this.unbind( touchMoveEvent, moveHandler ); + + if ( start && stop ) { + if ( stop.time - start.time < $.event.special.swipe.durationThreshold && + Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.horizontalDistanceThreshold && + Math.abs( start.coords[ 1 ] - stop.coords[ 1 ] ) < $.event.special.swipe.verticalDistanceThreshold ) { + + start.origin.trigger( "swipe" ) + .trigger( start.coords[0] > stop.coords[ 0 ] ? "swipeleft" : "swiperight" ); + } + } + start = stop = undefined; + }); + }); + } +}; + +(function( $, window ) { + // "Cowboy" Ben Alman + + var win = $( window ), + special_event, + get_orientation, + last_orientation, + initial_orientation_is_landscape, + initial_orientation_is_default, + portrait_map = { "0": true, "180": true }; + + // It seems that some device/browser vendors use window.orientation values 0 and 180 to + // denote the "default" orientation. For iOS devices, and most other smart-phones tested, + // the default orientation is always "portrait", but in some Android and RIM based tablets, + // the default orientation is "landscape". The following code attempts to use the window + // dimensions to figure out what the current orientation is, and then makes adjustments + // to the to the portrait_map if necessary, so that we can properly decode the + // window.orientation value whenever get_orientation() is called. + // + // Note that we used to use a media query to figure out what the orientation the browser + // thinks it is in: + // + // initial_orientation_is_landscape = $.mobile.media("all and (orientation: landscape)"); + // + // but there was an iPhone/iPod Touch bug beginning with iOS 4.2, up through iOS 5.1, + // where the browser *ALWAYS* applied the landscape media query. This bug does not + // happen on iPad. + + if ( $.support.orientation ) { + + // Check the window width and height to figure out what the current orientation + // of the device is at this moment. Note that we've initialized the portrait map + // values to 0 and 180, *AND* we purposely check for landscape so that if we guess + // wrong, , we default to the assumption that portrait is the default orientation. + // We use a threshold check below because on some platforms like iOS, the iPhone + // form-factor can report a larger width than height if the user turns on the + // developer console. The actual threshold value is somewhat arbitrary, we just + // need to make sure it is large enough to exclude the developer console case. + + var ww = window.innerWidth || $( window ).width(), + wh = window.innerHeight || $( window ).height(), + landscape_threshold = 50; + + initial_orientation_is_landscape = ww > wh && ( ww - wh ) > landscape_threshold; + + + // Now check to see if the current window.orientation is 0 or 180. + initial_orientation_is_default = portrait_map[ window.orientation ]; + + // If the initial orientation is landscape, but window.orientation reports 0 or 180, *OR* + // if the initial orientation is portrait, but window.orientation reports 90 or -90, we + // need to flip our portrait_map values because landscape is the default orientation for + // this device/browser. + if ( ( initial_orientation_is_landscape && initial_orientation_is_default ) || ( !initial_orientation_is_landscape && !initial_orientation_is_default ) ) { + portrait_map = { "-90": true, "90": true }; + } + } + + $.event.special.orientationchange = special_event = { + setup: function() { + // If the event is supported natively, return false so that jQuery + // will bind to the event using DOM methods. + if ( $.support.orientation && $.mobile.orientationChangeEnabled ) { + return false; + } + + // Get the current orientation to avoid initial double-triggering. + last_orientation = get_orientation(); + + // Because the orientationchange event doesn't exist, simulate the + // event by testing window dimensions on resize. + win.bind( "throttledresize", handler ); + }, + teardown: function(){ + // If the event is supported natively, return false so that + // jQuery will unbind the event using DOM methods. + if ( $.support.orientation && $.mobile.orientationChangeEnabled ) { + return false; + } + + // Because the orientationchange event doesn't exist, unbind the + // resize event handler. + win.unbind( "throttledresize", handler ); + }, + add: function( handleObj ) { + // Save a reference to the bound event handler. + var old_handler = handleObj.handler; + + + handleObj.handler = function( event ) { + // Modify event object, adding the .orientation property. + event.orientation = get_orientation(); + + // Call the originally-bound event handler and return its result. + return old_handler.apply( this, arguments ); + }; + } + }; + + // If the event is not supported natively, this handler will be bound to + // the window resize event to simulate the orientationchange event. + function handler() { + // Get the current orientation. + var orientation = get_orientation(); + + if ( orientation !== last_orientation ) { + // The orientation has changed, so trigger the orientationchange event. + last_orientation = orientation; + win.trigger( "orientationchange" ); + } + } + + // Get the current page orientation. This method is exposed publicly, should it + // be needed, as jQuery.event.special.orientationchange.orientation() + $.event.special.orientationchange.orientation = get_orientation = function() { + var isPortrait = true, elem = document.documentElement; + + // prefer window orientation to the calculation based on screensize as + // the actual screen resize takes place before or after the orientation change event + // has been fired depending on implementation (eg android 2.3 is before, iphone after). + // More testing is required to determine if a more reliable method of determining the new screensize + // is possible when orientationchange is fired. (eg, use media queries + element + opacity) + if ( $.support.orientation ) { + // if the window orientation registers as 0 or 180 degrees report + // portrait, otherwise landscape + isPortrait = portrait_map[ window.orientation ]; + } else { + isPortrait = elem && elem.clientWidth / elem.clientHeight < 1.1; + } + + return isPortrait ? "portrait" : "landscape"; + }; + +})( jQuery, window ); + + +// throttled resize event +(function() { + + $.event.special.throttledresize = { + setup: function() { + $( this ).bind( "resize", handler ); + }, + teardown: function(){ + $( this ).unbind( "resize", handler ); + } + }; + + var throttle = 250, + handler = function() { + curr = ( new Date() ).getTime(); + diff = curr - lastCall; + + if ( diff >= throttle ) { + + lastCall = curr; + $( this ).trigger( "throttledresize" ); + + } else { + + if ( heldCall ) { + clearTimeout( heldCall ); + } + + // Promise a held call will still execute + heldCall = setTimeout( handler, throttle - diff ); + } + }, + lastCall = 0, + heldCall, + curr, + diff; +})(); + + +$.each({ + scrollstop: "scrollstart", + taphold: "tap", + swipeleft: "swipe", + swiperight: "swipe" +}, function( event, sourceEvent ) { + + $.event.special[ event ] = { + setup: function() { + $( this ).bind( sourceEvent, $.noop ); + } + }; +}); + +})( jQuery, this ); + +(function( $, undefined ) { + +$.widget( "mobile.page", $.mobile.widget, { + options: { + theme: "c", + domCache: false, + keepNativeDefault: ":jqmData(role='none'), :jqmData(role='nojs')" + }, + + _create: function() { + + var self = this; + + // if false is returned by the callbacks do not create the page + if( self._trigger( "beforecreate" ) === false ){ + return false; + } + + self.element + .attr( "tabindex", "0" ) + .addClass( "ui-page ui-body-" + self.options.theme ) + .bind( "pagebeforehide", function(){ + self.removeContainerBackground(); + } ) + .bind( "pagebeforeshow", function(){ + self.setContainerBackground(); + } ); + + }, + + removeContainerBackground: function(){ + $.mobile.pageContainer.removeClass( "ui-overlay-" + $.mobile.getInheritedTheme( this.element.parent() ) ); + }, + + // set the page container background to the page theme + setContainerBackground: function( theme ){ + if( this.options.theme ){ + $.mobile.pageContainer.addClass( "ui-overlay-" + ( theme || this.options.theme ) ); + } + }, + + keepNativeSelector: function() { + var options = this.options, + keepNativeDefined = options.keepNative && $.trim(options.keepNative); + + if( keepNativeDefined && options.keepNative !== options.keepNativeDefault ){ + return [options.keepNative, options.keepNativeDefault].join(", "); + } + + return options.keepNativeDefault; + } +}); +})( jQuery ); + + +(function( $, window, undefined ) { + +var createHandler = function( sequential ){ + + // Default to sequential + if( sequential === undefined ){ + sequential = true; + } + return function( name, reverse, $to, $from ) { var deferred = new $.Deferred(), @@ -2672,101 +2221,93 @@ var createHandler = function( sequential ) { maxTransitionOverride = $.mobile.maxTransitionWidth !== false && $( window ).width() > $.mobile.maxTransitionWidth, none = !$.support.cssTransitions || maxTransitionOverride || !name || name === "none" || Math.max( $( window ).scrollTop(), toScroll ) > $.mobile.getMaxScrollForTransition(), toPreClass = " ui-page-pre-in", - toggleViewportClass = function() { + toggleViewportClass = function(){ $.mobile.pageContainer.toggleClass( "ui-mobile-viewport-transitioning viewport-" + name ); }, - scrollPage = function() { + scrollPage = function(){ // By using scrollTo instead of silentScroll, we can keep things better in order // Just to be precautios, disable scrollstart listening like silentScroll would $.event.special.scrollstart.enabled = false; - + window.scrollTo( 0, toScroll ); - + // reenable scrollstart listening like silentScroll would - setTimeout( function() { + setTimeout(function() { $.event.special.scrollstart.enabled = true; }, 150 ); }, - cleanFrom = function() { + cleanFrom = function(){ $from .removeClass( $.mobile.activePageClass + " out in reverse " + name ) .height( "" ); }, - startOut = function() { + startOut = function(){ // if it's not sequential, call the doneOut transition to start the TO page animating in simultaneously - if ( !sequential ) { + if( !sequential ){ doneOut(); } else { - $from.animationComplete( doneOut ); + $from.animationComplete( doneOut ); } - + // Set the from page's height and start it transitioning out // Note: setting an explicit height helps eliminate tiling in the transitions $from - .height( screenHeight + $( window ).scrollTop() ) + .height( screenHeight + $(window ).scrollTop() ) .addClass( name + " out" + reverseClass ); }, - + doneOut = function() { if ( $from && sequential ) { cleanFrom(); } - + startIn(); }, - - startIn = function() { - - // Prevent flickering in phonegap container: see comments at #4024 regarding iOS - $to.css( "z-index", -10 ); - - $to.addClass( $.mobile.activePageClass + toPreClass ); - + + startIn = function(){ + + $to.addClass( $.mobile.activePageClass ); + // Send focus to page as it is now display: block $.mobile.focusPage( $to ); // Set to page height $to.height( screenHeight + toScroll ); - + scrollPage(); - - // Restores visibility of the new page: added together with $to.css( "z-index", -10 ); - $to.css( "z-index", "" ); - - if ( !none ) { + + if( !none ){ $to.animationComplete( doneIn ); } - - $to - .removeClass( toPreClass ) - .addClass( name + " in" + reverseClass ); - - if ( none ) { + + $to.addClass( name + " in" + reverseClass ); + + if( none ){ doneIn(); } - + }, - + doneIn = function() { - + if ( !sequential ) { - - if ( $from ) { + + if( $from ){ cleanFrom(); } } - + $to .removeClass( "out in reverse " + name ) .height( "" ); - + toggleViewportClass(); - + // In some browsers (iOS5), 3D transitions block the ability to scroll to the desired location during transition // This ensures we jump to that spot after the fact, if we aren't there already. - if ( $( window ).scrollTop() !== toScroll ) { + if( $( window ).scrollTop() !== toScroll ){ scrollPage(); } @@ -2774,7 +2315,7 @@ var createHandler = function( sequential ) { }; toggleViewportClass(); - + if ( $from && !none ) { startOut(); } @@ -2784,7 +2325,7 @@ var createHandler = function( sequential ) { return deferred.promise(); }; -}; +} // generate the handlers from the above var sequentialHandler = createHandler(), @@ -2805,20 +2346,11 @@ $.mobile.transitionHandlers = { $.mobile.transitionFallbacks = {}; -// If transition is defined, check if css 3D transforms are supported, and if not, if a fallback is specified -$.mobile._maybeDegradeTransition = function( transition ) { - if ( transition && !$.support.cssTransform3d && $.mobile.transitionFallbacks[ transition ] ) { - transition = $.mobile.transitionFallbacks[ transition ]; - } - - return transition; -}; - // Set the getMaxScrollForTransition to default if no implementation was set by user $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defaultGetMaxScrollForTransition; })( jQuery, this ); -(function( $, undefined ) { +( function( $, undefined ) { //define vars for interal use var $window = $( window ), @@ -2855,26 +2387,6 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // urlParseRE: /^(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/, - // Abstraction to address xss (Issue #4787) by removing the authority in - // browsers that auto decode it. All references to location.href should be - // replaced with a call to this method so that it can be dealt with properly here - getLocation: function( url ) { - var uri = url ? this.parseUrl( url ) : location, - hash = this.parseUrl( url || location.href ).hash; - - // mimic the browser with an empty string when the hash is empty - hash = hash === "#" ? "" : hash; - - // Make sure to parse the url or the location object for the hash because using location.hash - // is autodecoded in firefox, the rest of the url should be from the object (location unless - // we're testing) to avoid the inclusion of the authority - return uri.protocol + "//" + uri.host + uri.pathname + uri.search + hash; - }, - - parseLocation: function() { - return this.parseUrl( this.getLocation() ); - }, - //Parse a URL into a structure that allows easy access to //all of the URL components by name. parseUrl: function( url ) { @@ -2965,10 +2477,6 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau return relUrl; } - if ( absUrl === undefined ) { - absUrl = documentBase; - } - var relObj = path.parseUrl( relUrl ), absObj = path.parseUrl( absUrl ), protocol = relObj.protocol || absObj.protocol, @@ -2993,20 +2501,19 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau convertUrlToDataUrl: function( absUrl ) { var u = path.parseUrl( absUrl ); if ( path.isEmbeddedPage( u ) ) { - // For embedded pages, remove the dialog hash key as in getFilePath(), - // otherwise the Data Url won't match the id of the embedded Page. + // For embedded pages, remove the dialog hash key as in getFilePath(), + // otherwise the Data Url won't match the id of the embedded Page. return u.hash.split( dialogHashKey )[0].replace( /^#/, "" ); } else if ( path.isSameDomain( u, documentBase ) ) { return u.hrefNoHash.replace( documentBase.domain, "" ).split( dialogHashKey )[0]; } - - return window.decodeURIComponent(absUrl); + return absUrl; }, //get path from current hash, or from a file path get: function( newPath ) { - if ( newPath === undefined ) { - newPath = path.parseLocation().hash; + if( newPath === undefined ) { + newPath = location.hash; } return path.stripHash( newPath ).replace( /[^\/]*\.[^\/*]+$/, '' ); }, @@ -3044,7 +2551,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau }, isHashValid: function( hash ) { - return ( /^#[^#]+$/ ).test( hash ); + return /^#[^#]+$/.test(hash); }, //check whether a url is referencing the same domain, or an external domain or different protocol @@ -3089,7 +2596,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau if ( u.protocol !== "" ) { return ( u.hash && ( u.hrefNoHash === documentUrl.hrefNoHash || ( documentBaseDiffers && u.hrefNoHash === documentBase.hrefNoHash ) ) ); } - return ( /^#/ ).test( u.href ); + return (/^#/).test( u.href ); }, @@ -3100,9 +2607,9 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // allowCrossDomainPages option is true, we will allow cross-domain http/https // requests to go through our page loading logic. isPermittedCrossDomainRequest: function( docUrl, reqUrl ) { - return $.mobile.allowCrossDomainPages && - docUrl.protocol === "file:" && - reqUrl.search( /^https?:/ ) !== -1; + return $.mobile.allowCrossDomainPages + && docUrl.protocol === "file:" + && reqUrl.search( /^https?:/ ) != -1; } }, @@ -3135,7 +2642,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // addNew is used whenever a new page is added addNew: function( url, transition, title, pageUrl, role ) { //if there's forward history, wipe it - if ( urlHistory.getNext() ) { + if( urlHistory.getNext() ) { urlHistory.clearForward(); } @@ -3156,7 +2663,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau $.each( urlHistory.stack, function( i, historyEntry ) { //if the url is in the stack, it's a forward or a back - if ( decodeURIComponent( opts.currentUrl ) === decodeURIComponent( historyEntry.url ) ) { + if( opts.currentUrl === historyEntry.url ) { //define back and forward by whether url is older or newer than current page back = i < urlHistory.activeIndex; forward = !back; @@ -3167,9 +2674,9 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // save new page index, null check to prevent falsey 0 result this.activeIndex = newActiveIndex !== undefined ? newActiveIndex : this.activeIndex; - if ( back ) { + if( back ) { ( opts.either || opts.isBack )( true ); - } else if ( forward ) { + } else if( forward ) { ( opts.either || opts.isForward )( false ); } }, @@ -3195,7 +2702,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau $base = $head.children( "base" ), //tuck away the original document URL minus any fragment. - documentUrl = path.parseLocation(), + documentUrl = path.parseUrl( location.href ), //if the document has an embedded base tag, documentBase is set to its //initial value. If a base tag does not exist, then we default to the documentUrl. @@ -3224,48 +2731,32 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau } : undefined; - /* internal utility functions */ +/* + internal utility functions +--------------------------------------*/ - // NOTE Issue #4950 Android phonegap doesn't navigate back properly - // when a full page refresh has taken place. It appears that hashchange - // and replacestate history alterations work fine but we need to support - // both forms of history traversal in our code that uses backward history - // movement - $.mobile.back = function() { - var nav = window.navigator; - - // if the setting is on and the navigator object is - // available use the phonegap navigation capability - if( this.phonegapNavigationEnabled && - nav && - nav.app && - nav.app.backHistory ){ - nav.app.backHistory(); - } else { - window.history.back(); - } - }; //direct focus to the page title, or otherwise first focusable element $.mobile.focusPage = function ( page ) { - var autofocus = page.find( "[autofocus]" ), + var autofocus = page.find("[autofocus]"), pageTitle = page.find( ".ui-title:eq(0)" ); - if ( autofocus.length ) { + if( autofocus.length ) { autofocus.focus(); return; } - if ( pageTitle.length ) { + if( pageTitle.length ) { pageTitle.focus(); - } else{ + } + else{ page.focus(); } - }; + } //remove active classes after page transition or error function removeActiveLinkClass( forceRemoval ) { - if ( !!$activeClickedLink && ( !$activeClickedLink.closest( "." + $.mobile.activePageClass ).length || forceRemoval ) ) { + if( !!$activeClickedLink && ( !$activeClickedLink.closest( '.ui-page-active' ).length || forceRemoval ) ) { $activeClickedLink.removeClass( $.mobile.activeBtnClass ); } $activeClickedLink = null; @@ -3273,7 +2764,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau function releasePageTransitionLock() { isPageTransitioning = false; - if ( pageTransitionQueue.length > 0 ) { + if( pageTransitionQueue.length > 0 ) { $.mobile.changePage.apply( null, pageTransitionQueue.pop() ); } } @@ -3285,13 +2776,13 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau setLastScroll = function() { // this barrier prevents setting the scroll value based on the browser // scrolling the window based on a hashchange - if ( !setLastScrollEnabled ) { + if( !setLastScrollEnabled ) { return; } var active = $.mobile.urlHistory.getActive(); - if ( active ) { + if( active ) { var lastScroll = $window.scrollTop(); // Set active page's lastScroll prop. @@ -3312,7 +2803,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // because the recording of the scroll position is delayed for 100ms after // the browser might have changed the position because of the hashchange $window.bind( $.support.pushState ? "popstate" : "hashchange", function() { - setLastScrollEnabled = false; + setLastScrollEnabled = false; }); // handle initial hashchange from chrome :( @@ -3321,11 +2812,11 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau }); // wait until the mobile page container has been determined to bind to pagechange - $window.one( "pagecontainercreate", function() { + $window.one( "pagecontainercreate", function(){ // once the page has changed, re-enable the scroll recording $.mobile.pageContainer.bind( "pagechange", function() { - setLastScrollEnabled = true; + setLastScrollEnabled = true; // remove any binding that previously existed on the get scroll // which may or may not be different than the scroll element determined for @@ -3341,15 +2832,10 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // bind to scrollstop for the first page as "pagechange" won't be fired in that case $window.bind( "scrollstop", delayedSetLastScroll ); - // No-op implementation of transition degradation - $.mobile._maybeDegradeTransition = $.mobile._maybeDegradeTransition || function( transition ) { - return transition; - }; - //function for transitioning between two existing pages function transitionPages( toPage, fromPage, transition, reverse ) { - if ( fromPage ) { + if( fromPage ) { //trigger before show/hide events fromPage.data( "page" )._trigger( "beforehide", null, { nextPage: toPage } ); } @@ -3359,7 +2845,10 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau //clear page loader $.mobile.hidePageLoadingMsg(); - transition = $.mobile._maybeDegradeTransition( transition ); + // If transition is defined, check if css 3D transforms are supported, and if not, if a fallback is specified + if( transition && !$.support.cssTransform3d && $.mobile.transitionFallbacks[ transition ] ){ + transition = $.mobile.transitionFallbacks[ transition ]; + } //find the transition handler for the specified transition. If there //isn't one in our transitionHandlers dictionary, use the default one. @@ -3370,7 +2859,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau promise.done(function() { //trigger show/hide events - if ( fromPage ) { + if( fromPage ) { fromPage.data( "page" )._trigger( "hide", null, { nextPage: toPage } ); } @@ -3382,7 +2871,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau } //simply set the active page's minimum height to screen height, depending on orientation - function resetActivePageHeight() { + function resetActivePageHeight(){ var aPage = $( "." + $.mobile.activePageClass ), aPagePadT = parseFloat( aPage.css( "padding-top" ) ), aPagePadB = parseFloat( aPage.css( "padding-bottom" ) ), @@ -3396,7 +2885,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau function enhancePage( $page, role ) { // If a role was specified, make sure the data-role attribute // on the page element is in sync. - if ( role ) { + if( role ) { $page.attr( "data-" + $.mobile.ns + "role", role ); } @@ -3404,11 +2893,11 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau $page.page(); } - /* exposed $.mobile methods */ +/* exposed $.mobile methods */ //animation complete callback $.fn.animationComplete = function( callback ) { - if ( $.support.cssTransitions ) { + if( $.support.cssTransitions ) { return $( this ).one( 'webkitAnimationEnd animationend', callback ); } else{ @@ -3435,21 +2924,21 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau $.mobile.allowCrossDomainPages = false; //return the original document url - $.mobile.getDocumentUrl = function( asParsedObject ) { + $.mobile.getDocumentUrl = function(asParsedObject) { return asParsedObject ? $.extend( {}, documentUrl ) : documentUrl.href; }; //return the original document base url - $.mobile.getDocumentBase = function( asParsedObject ) { + $.mobile.getDocumentBase = function(asParsedObject) { return asParsedObject ? $.extend( {}, documentBase ) : documentBase.href; }; $.mobile._bindPageRemove = function() { - var page = $( this ); + var page = $(this); // when dom caching is not enabled or the page is embedded bind to remove the page on hide - if ( !page.data( "page" ).options.domCache && - page.is( ":jqmData(external-page='true')" ) ) { + if( !page.data("page").options.domCache + && page.is(":jqmData(external-page='true')") ) { page.bind( 'pagehide.remove', function() { var $this = $( this ), @@ -3457,7 +2946,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau $this.trigger( prEvent ); - if ( !prEvent.isDefaultPrevented() ) { + if( !prEvent.isDefaultPrevented() ){ $this.removeWithDependents(); } }); @@ -3484,7 +2973,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau dupCachedPage = null, // determine the current base url - findBaseWithDefault = function() { + findBaseWithDefault = function(){ var closestBase = ( $.mobile.activePage && getClosestBaseUrl( $.mobile.activePage ) ); return closestBase || documentBase.hrefNoHash; }, @@ -3502,12 +2991,12 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau } // If the caller is using a "post" request, reloadPage must be true - if ( settings.data && settings.type === "post" ) { + if( settings.data && settings.type === "post" ){ settings.reloadPage = true; } - // The absolute version of the URL minus any dialog/subpage params. - // In otherwords the real URL of the page to be loaded. + // The absolute version of the URL minus any dialog/subpage params. + // In otherwords the real URL of the page to be loaded. var fileUrl = path.getFilePath( absUrl ), // The version of the Url actually stored in the data-url attribute of @@ -3521,9 +3010,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau settings.pageContainer = settings.pageContainer || $.mobile.pageContainer; // Check to see if the page already exists in the DOM. - // NOTE do _not_ use the :jqmData psuedo selector because parenthesis - // are a valid url char and it breaks on the first occurence - page = settings.pageContainer.children( "[data-" + $.mobile.ns +"url='" + dataUrl + "']" ); + page = settings.pageContainer.children( ":jqmData(url='" + dataUrl + "')" ); // If we failed to find the page, check to see if the url is a // reference to an embedded page. If so, it may have been dynamically @@ -3531,8 +3018,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // attribute and in need of enhancement. if ( page.length === 0 && dataUrl && !path.isPath( dataUrl ) ) { page = settings.pageContainer.children( "#" + dataUrl ) - .attr( "data-" + $.mobile.ns + "url", dataUrl ) - .jqmData( "url", dataUrl ); + .attr( "data-" + $.mobile.ns + "url", dataUrl ); } // If we failed to find a page in the DOM, check the URL to see if it @@ -3557,6 +3043,11 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau } } + // Reset base to the default document base. + if ( base ) { + base.reset(); + } + // If the page we are interested in is already in the DOM, // and the caller did not indicate that we should force a // reload of the file, we are done. Otherwise, track the @@ -3578,19 +3069,19 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau mpc.trigger( pblEvent, triggerData ); // If the default behavior is prevented, stop here! - if ( pblEvent.isDefaultPrevented() ) { + if( pblEvent.isDefaultPrevented() ){ return deferred.promise(); } if ( settings.showLoadMsg ) { // This configurable timeout allows cached pages a brief delay to load without showing a message - var loadMsgDelay = setTimeout(function() { + var loadMsgDelay = setTimeout(function(){ $.mobile.showPageLoadingMsg(); }, settings.loadMsgDelay ), // Shared logic for clearing timeout and removing message. - hideMsg = function() { + hideMsg = function(){ // Stop message show timer clearTimeout( loadMsgDelay ); @@ -3600,11 +3091,6 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau }; } - // Reset base to the default document base. - if ( base ) { - base.reset(); - } - if ( !( $.mobile.allowCrossDomainPages || path.isSameDomain( documentUrl, absUrl ) ) ) { deferred.reject( absUrl, options ); } else { @@ -3629,11 +3115,11 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // data-url must be provided for the base tag so resource requests can be directed to the // correct url. loading into a temprorary element makes these requests immediately - if ( pageElemRegex.test( html ) && - RegExp.$1 && - dataUrlRegex.test( RegExp.$1 ) && - RegExp.$1 ) { - url = fileUrl = path.getFilePath( $( "
" + RegExp.$1 + "
" ).text() ); + if( pageElemRegex.test( html ) + && RegExp.$1 + && dataUrlRegex.test( RegExp.$1 ) + && RegExp.$1 ) { + url = fileUrl = path.getFilePath( RegExp.$1 ); } if ( base ) { @@ -3645,7 +3131,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau page = all.find( ":jqmData(role='page'), :jqmData(role='dialog')" ).first(); //if page elem couldn't be found, create one and insert the body element's contents - if ( !page.length ) { + if( !page.length ){ page = $( "
" + html.split( /<\/?body[^>]*>/gmi )[1] + "
" ); } @@ -3657,11 +3143,11 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau } //rewrite src and href attrs to use a base url - if ( !$.support.dynamicBaseTag ) { + if( !$.support.dynamicBaseTag ) { var newPath = path.get( fileUrl ); page.find( "[src], link[href], a[rel='external'], :jqmData(ajax='false'), a[target]" ).each(function() { var thisAttr = $( this ).is( '[href]' ) ? 'href' : - $( this ).is( '[src]' ) ? 'src' : 'action', + $(this).is('[src]') ? 'src' : 'action', thisUrl = $( this ).attr( thisAttr ); // XXX_jblas: We need to fix this so that it removes the document @@ -3669,7 +3155,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau //if full path exists and is same, chop it - helps IE out thisUrl = thisUrl.replace( location.protocol + '//' + location.host + location.pathname, '' ); - if ( !/^(\w+:|#|\/)/.test( thisUrl ) ) { + if( !/^(\w+:|#|\/)/.test( thisUrl ) ) { $( this ).attr( thisAttr, newPath + thisUrl ); } }); @@ -3693,7 +3179,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // into the DOM. If the original absUrl refers to a sub-page, that is the // real page we are interested in. if ( absUrl.indexOf( "&" + $.mobile.subPageUrlKey ) > -1 ) { - page = settings.pageContainer.children( "[data-" + $.mobile.ns +"url='" + dataUrl + "']" ); + page = settings.pageContainer.children( ":jqmData(url='" + dataUrl + "')" ); } //bind pageHide to removePage after it's hidden, if the page options specify to do so @@ -3715,7 +3201,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau }, error: function( xhr, textStatus, errorThrown ) { //set base back to current path - if ( base ) { + if( base ) { base.set( path.get() ); } @@ -3733,7 +3219,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // Note that it is the responsibility of the listener/handler // that called preventDefault(), to resolve/reject the // deferred object within the triggerData. - if ( plfEvent.isDefaultPrevented() ) { + if( plfEvent.isDefaultPrevented() ){ return; } @@ -3773,7 +3259,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // If we are in the midst of a transition, queue the current request. // We'll call changePage() once we're done with the current transition to // service the request. - if ( isPageTransitioning ) { + if( isPageTransitioning ) { pageTransitionQueue.unshift( arguments ); return; } @@ -3794,7 +3280,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau mpc.trigger( pbcEvent, triggerData ); // If the default behavior is prevented, stop here! - if ( pbcEvent.isDefaultPrevented() ) { + if( pbcEvent.isDefaultPrevented() ){ return; } @@ -3813,7 +3299,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // to make sure it is loaded into the DOM. We'll listen // to the promise object it returns so we know when // it is done loading or if an error ocurred. - if ( typeof toPage === "string" ) { + if ( typeof toPage == "string" ) { $.mobile.loadPage( toPage, settings ) .done(function( url, options, newPage, dupCachedPage ) { isPageTransitioning = false; @@ -3864,12 +3350,12 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // It is up to the developer that turns on the allowSamePageTransitiona option // to either turn off transition animations, or make sure that an appropriate // animation transition is used. - if ( fromPage && fromPage[0] === toPage[0] && !settings.allowSamePageTransition ) { + if( fromPage && fromPage[0] === toPage[0] && !settings.allowSamePageTransition ) { isPageTransitioning = false; mpc.trigger( "pagechange", triggerData ); // Even if there is no page change to be done, we should keep the urlHistory in sync with the hash changes - if ( settings.fromHashChange ) { + if( settings.fromHashChange ) { urlHistory.directHashChange({ currentUrl: url, isBack: function() {}, @@ -3886,7 +3372,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // If the changePage request was sent from a hashChange event, check to see if the // page is already within the urlHistory stack. If so, we'll assume the user hit // the forward/back button and will try to match the transition accordingly. - if ( settings.fromHashChange ) { + if( settings.fromHashChange ) { urlHistory.directHashChange({ currentUrl: url, isBack: function() { historyDir = -1; }, @@ -3901,12 +3387,12 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // Wrap this in a try/catch block since IE9 throw "Unspecified error" if document.activeElement // is undefined when we are in an IFrame. try { - if ( document.activeElement && document.activeElement.nodeName.toLowerCase() !== 'body' ) { - $( document.activeElement ).blur(); + if(document.activeElement && document.activeElement.nodeName.toLowerCase() != 'body') { + $(document.activeElement).blur(); } else { $( "input:focus, textarea:focus, select:focus" ).blur(); } - } catch( e ) {} + } catch(e) {} // Record whether we are at a place in history where a dialog used to be - if so, do not add a new history entry and do not change the hash either var alreadyThere = false; @@ -3930,9 +3416,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau alreadyThere = true; } - // Normally, we tack on a dialog hash key, but if this is the location of a stale dialog, - // we reuse the URL from the entry - url = ( active.url || "" ) + ( alreadyThere ? "" : dialogHashKey ); + url = ( active.url || "" ) + dialogHashKey; // tack on another dialogHashKey if this is the same as the initial hash // this makes sure that a history entry is created for this dialog @@ -3942,7 +3426,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau } // Set the location hash. - if ( settings.changeHash !== false && url ) { + if( settings.changeHash !== false && url ) { //disable hash listening temporarily urlHistory.ignoreNextHashChange = true; //update hash and history @@ -3951,8 +3435,8 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // if title element wasn't found, try the page div data attr too // If this is a deep-link or a reload ( active === undefined ) then just use pageTitle - var newPageTitle = ( !active )? pageTitle : toPage.jqmData( "title" ) || toPage.children( ":jqmData(role='header')" ).find( ".ui-title" ).getEncodedText(); - if ( !!newPageTitle && pageTitle === document.title ) { + var newPageTitle = ( !active )? pageTitle : toPage.jqmData( "title" ) || toPage.children(":jqmData(role='header')").find(".ui-title" ).getEncodedText(); + if( !!newPageTitle && pageTitle == document.title ) { pageTitle = newPageTitle; } if ( !toPage.jqmData( "title" ) ) { @@ -3960,16 +3444,12 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau } // Make sure we have a transition defined. - settings.transition = settings.transition || - ( ( historyDir && !activeIsInitialPage ) ? active.transition : undefined ) || - ( isDialog ? $.mobile.defaultDialogTransition : $.mobile.defaultPageTransition ); + settings.transition = settings.transition + || ( ( historyDir && !activeIsInitialPage ) ? active.transition : undefined ) + || ( isDialog ? $.mobile.defaultDialogTransition : $.mobile.defaultPageTransition ); //add page to history stack if it's not back or forward - if ( !historyDir ) { - // Overwrite the current entry if it's a leftover from a dialog - if ( alreadyThere ) { - urlHistory.activeIndex = Math.max( 0, urlHistory.activeIndex - 1 ); - } + if( !historyDir && !alreadyThere ) { urlHistory.addNew( url, settings.transition, pageTitle, pageUrl, settings.role ); } @@ -3995,7 +3475,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // itself to avoid ie bug that reports offsetWidth as > 0 (core check for visibility) // despite visibility: hidden addresses issue #2965 // https://github.com/jquery/jquery-mobile/issues/2965 - if ( !alreadyFocused ) { + if( !alreadyFocused ){ $.mobile.focusPage( toPage ); } @@ -4031,7 +3511,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // an embedded SVG document where some symbol instance elements // don't have nodeName defined on them, or strings are of type // SVGAnimatedString. - if ( ( typeof ele.nodeName === "string" ) && ele.nodeName.toLowerCase() === "a" ) { + if ( ( typeof ele.nodeName === "string" ) && ele.nodeName.toLowerCase() == "a" ) { break; } ele = ele.parentNode; @@ -4056,14 +3536,14 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau //The following event bindings should be bound after mobileinit has been triggered //the following deferred is resolved in the init file $.mobile.navreadyDeferred = $.Deferred(); - $.mobile.navreadyDeferred.done(function() { + $.mobile.navreadyDeferred.done( function(){ //bind to form submit events, handle with Ajax $( document ).delegate( "form", "submit", function( event ) { var $this = $( this ); - if ( !$.mobile.ajaxEnabled || + if( !$.mobile.ajaxEnabled || // test that the form is, itself, ajax false - $this.is( ":jqmData(ajax='false')" ) || + $this.is(":jqmData(ajax='false')") || // test that $.mobile.ignoreContentEnabled is set and // the form or one of it's parents is ajax=false !$this.jqmHijackable().length ) { @@ -4091,9 +3571,9 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau } } - url = path.makeUrlAbsolute( url, getClosestBaseUrl( $this ) ); + url = path.makeUrlAbsolute( url, getClosestBaseUrl($this) ); - if ( ( path.isExternal( url ) && !path.isPermittedCrossDomainRequest( documentUrl, url ) ) || target ) { + if(( path.isExternal( url ) && !path.isPermittedCrossDomainRequest(documentUrl, url)) || target ) { return; } @@ -4103,7 +3583,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau type: type && type.length && type.toLowerCase() || "get", data: $this.serialize(), transition: $this.jqmData( "transition" ), - reverse: $this.jqmData( "direction" ) === "reverse", + direction: $this.jqmData( "direction" ), reloadPage: true } ); @@ -4123,7 +3603,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // split from the previous return logic to avoid find closest where possible // TODO teach $.mobile.hijackable to operate on raw dom elements so the link wrapping // can be avoided - if ( !$( link ).jqmHijackable().length ) { + if ( !$(link).jqmHijackable().length ) { return; } @@ -4138,7 +3618,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // click routing - direct to HTTP or Ajax, accordingly $( document ).bind( "click", function( event ) { - if ( !$.mobile.linkBindingEnabled ) { + if( !$.mobile.linkBindingEnabled ){ return; } @@ -4153,13 +3633,13 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau } //remove active link class if external (then it won't be there if you come back) - httpCleanup = function() { - window.setTimeout(function() { removeActiveLinkClass( true ); }, 200 ); + httpCleanup = function(){ + window.setTimeout( function() { removeActiveLinkClass( true ); }, 200 ); }; //if there's a data-rel=back attr, go back in history - if ( $link.is( ":jqmData(rel='back')" ) ) { - $.mobile.back(); + if( $link.is( ":jqmData(rel='back')" ) ) { + window.history.back(); return false; } @@ -4169,7 +3649,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau href = path.makeUrlAbsolute( $link.attr( "href" ) || "#", baseUrl ); //if ajax is disabled, exit early - if ( !$.mobile.ajaxEnabled && !path.isEmbeddedPage( href ) ) { + if( !$.mobile.ajaxEnabled && !path.isEmbeddedPage( href ) ){ httpCleanup(); //use default click handling return; @@ -4184,7 +3664,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // the current value of the base tag is at the time this code // is called. For now we are just assuming that any url with a // hash in it is an application page reference. - if ( href.search( "#" ) !== -1 ) { + if ( href.search( "#" ) != -1 ) { href = href.replace( /[^#]*#/, "" ); if ( !href ) { //link was an empty hash meant purely @@ -4213,9 +3693,9 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau //check for protocol or rel and its not an embedded page //TODO overlap in logic from isExternal, rel=external check should be // moved into more comprehensive isExternalLink - isExternal = useDefaultUrlHandling || ( path.isExternal( href ) && !path.isPermittedCrossDomainRequest( documentUrl, href ) ); + isExternal = useDefaultUrlHandling || ( path.isExternal( href ) && !path.isPermittedCrossDomainRequest(documentUrl, href) ); - if ( isExternal ) { + if( isExternal ) { httpCleanup(); //use default click handling return; @@ -4223,28 +3703,29 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau //use ajax var transition = $link.jqmData( "transition" ), - reverse = $link.jqmData( "direction" ) === "reverse" || + direction = $link.jqmData( "direction" ), + reverse = ( direction && direction === "reverse" ) || // deprecated - remove by 1.0 $link.jqmData( "back" ), //this may need to be more specific as we use data-rel more role = $link.attr( "data-" + $.mobile.ns + "rel" ) || undefined; - $.mobile.changePage( href, { transition: transition, reverse: reverse, role: role, link: $link } ); + $.mobile.changePage( href, { transition: transition, reverse: reverse, role: role } ); event.preventDefault(); }); //prefetch pages when anchors with data-prefetch are encountered $( document ).delegate( ".ui-page", "pageshow.prefetch", function() { var urls = []; - $( this ).find( "a:jqmData(prefetch)" ).each(function() { - var $link = $( this ), + $( this ).find( "a:jqmData(prefetch)" ).each(function(){ + var $link = $(this), url = $link.attr( "href" ); if ( url && $.inArray( url, urls ) === -1 ) { urls.push( url ); - $.mobile.loadPage( url, { role: $link.attr( "data-" + $.mobile.ns + "rel" ) } ); + $.mobile.loadPage( url, {role: $link.attr("data-" + $.mobile.ns + "rel")} ); } }); }); @@ -4255,9 +3736,6 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau //transition is false if it's the first page, undefined otherwise (and may be overridden by default) transition = $.mobile.urlHistory.stack.length === 0 ? "none" : undefined, - // "navigate" event fired to allow others to take advantage of the more robust hashchange handling - navEvent = new $.Event( "navigate" ), - // default options for the changPage calls made after examining the current state // of the page and the hash changePageOptions = { @@ -4270,30 +3748,23 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau urlHistory.initialDst = to; } - // We should probably fire the "navigate" event from those places that make calls to _handleHashChange, - // and have _handleHashChange hook into the "navigate" event instead of triggering it here - $.mobile.pageContainer.trigger( navEvent ); - if ( navEvent.isDefaultPrevented() ) { - return; - } - //if listening is disabled (either globally or temporarily), or it's a dialog hash - if ( !$.mobile.hashListeningEnabled || urlHistory.ignoreNextHashChange ) { + if( !$.mobile.hashListeningEnabled || urlHistory.ignoreNextHashChange ) { urlHistory.ignoreNextHashChange = false; return; } // special case for dialogs - if ( urlHistory.stack.length > 1 && to.indexOf( dialogHashKey ) > -1 && urlHistory.initialDst !== to ) { + if( urlHistory.stack.length > 1 && to.indexOf( dialogHashKey ) > -1 && urlHistory.initialDst !== to ) { // If current active page is not a dialog skip the dialog and continue // in the same direction - if ( !$.mobile.activePage.is( ".ui-dialog" ) ) { + if(!$.mobile.activePage.is( ".ui-dialog" )) { //determine if we're heading forward or backward and continue accordingly past //the current dialog urlHistory.directHashChange({ currentUrl: to, - isBack: function() { $.mobile.back(); }, + isBack: function() { window.history.back(); }, isForward: function() { window.history.forward(); } }); @@ -4316,7 +3787,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // as most of this is lost by the domCache cleaning $.extend( changePageOptions, { role: active.role, - transition: active.transition, + transition: active.transition, reverse: isBack }); } @@ -4332,14 +3803,6 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // since the hashchange could've been the result of a forward/backward navigation // that crosses from an external page/dialog to an internal page/dialog. to = ( typeof to === "string" && !path.isPath( to ) ) ? ( path.makeUrlAbsolute( '#' + to, documentBase ) ) : to; - - // If we're about to go to an initial URL that contains a reference to a non-existent - // internal page, go to the first page instead. We know that the initial hash refers to a - // non-existent page, because the initial hash did not end up in the initial urlHistory entry - if ( to === path.makeUrlAbsolute( '#' + urlHistory.initialDst, documentBase ) && - urlHistory.stack.length && urlHistory.stack[0].url !== urlHistory.initialDst.replace( dialogHashKey, "" ) ) { - to = $.mobile.firstPage; - } $.mobile.changePage( to, changePageOptions ); } else { //there's no hash, go to the first page in the dom @@ -4349,9 +3812,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau //hashchange event handler $window.bind( "hashchange", function( e, triggered ) { - // Firefox auto-escapes the location.hash as for v13 but - // leaves the href untouched - $.mobile._handleHashChange( path.parseLocation().hash ); + $.mobile._handleHashChange( location.hash ); }); //set page min-heights to be device specific @@ -4362,14 +3823,14 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau })( jQuery ); -(function( $, window ) { +( function( $, window ) { // For now, let's Monkeypatch this onto the end of $.mobile._registerInternalEvents // Scope self to pushStateHandler so we can reference it sanely within the // methods handed off as event handlers var pushStateHandler = {}, self = pushStateHandler, $win = $( window ), - url = $.mobile.path.parseLocation(), + url = $.mobile.path.parseUrl( location.href ), mobileinitDeferred = $.Deferred(), domreadyDeferred = $.Deferred(); @@ -4391,8 +3852,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau state: function() { return { - // firefox auto decodes the url when using location.hash but not href - hash: $.mobile.path.parseLocation().hash || "#" + self.initialFilePath, + hash: location.hash || "#" + self.initialFilePath, title: document.title, // persist across refresh @@ -4405,9 +3865,9 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau subkey = "&" + $.mobile.subPageUrlKey, dialogIndex = url.indexOf( dialog ); - if ( dialogIndex > -1 ) { + if( dialogIndex > -1 ) { url = url.slice( 0, dialogIndex ) + "#" + url.slice( dialogIndex ); - } else if ( url.indexOf( subkey ) > -1 ) { + } else if( url.indexOf( subkey ) > -1 ) { url = url.split( subkey ).join( "#" + subkey ); } @@ -4425,15 +3885,14 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // handling has taken place and set the state of the DOM onHashChange: function( e ) { // disable this hash change - if ( self.onHashChangeDisabled ) { + if( self.onHashChangeDisabled ){ return; } var href, state, - // firefox auto decodes the url when using location.hash but not href - hash = $.mobile.path.parseLocation().hash, + hash = location.hash, isPath = $.mobile.path.isPath( hash ), - resolutionUrl = isPath ? $.mobile.path.getLocation() : $.mobile.getDocumentUrl(); + resolutionUrl = isPath ? location.href : $.mobile.getDocumentUrl(); hash = isPath ? hash.replace( "#", "" ) : hash; @@ -4452,7 +3911,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // Note that in some cases we might be replacing an url with the // same url. We do this anyways because we need to make sure that // all of our history entries have a state object associated with - // them. This allows us to work around the case where $.mobile.back() + // them. This allows us to work around the case where window.history.back() // is called to transition from an external page to an embedded page. // In that particular case, a hashchange event is *NOT* generated by the browser. // Ensuring each history entry has a state object means that onPopState() @@ -4468,7 +3927,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau fromHash, toHash, hashChanged; // if there's no state its not a popstate we care about, eg chrome's initial popstate - if ( poppedState ) { + if( poppedState ) { // if we get two pop states in under this.hashChangeTimeout // make sure to clear any timer set for the previous change clearTimeout( self.hashChangeEnableTimer ); @@ -4486,7 +3945,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // change event that comes on all popstates courtesy of browsers like Android self.hashChangeEnableTimer = setTimeout( function() { self.nextHashChangePrevented( false ); - }, self.hashChangeTimeout ); + }, self.hashChangeTimeout); } }, @@ -4498,19 +3957,63 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau // if there's no hash, we need to replacestate for returning to home if ( location.hash === "" ) { - history.replaceState( self.state(), document.title, $.mobile.path.getLocation() ); + history.replaceState( self.state(), document.title, location.href ); } } }); // We need to init when "mobileinit", "domready", and "navready" have all happened - $.when( domreadyDeferred, mobileinitDeferred, $.mobile.navreadyDeferred ).done(function() { - if ( $.mobile.pushStateEnabled && $.support.pushState ) { + $.when( domreadyDeferred, mobileinitDeferred, $.mobile.navreadyDeferred ).done( function() { + if( $.mobile.pushStateEnabled && $.support.pushState ){ pushStateHandler.init(); } }); })( jQuery, this ); +/* +* fallback transition for pop in non-3D supporting browsers (which tend to handle complex transitions poorly in general +*/ + +(function( $, window, undefined ) { + +$.mobile.transitionFallbacks.pop = "fade"; + +})( jQuery, this ); + +/* +* fallback transition for slide in non-3D supporting browsers (which tend to handle complex transitions poorly in general +*/ + +(function( $, window, undefined ) { + +// Use the simultaneous transition handler for slide transitions +$.mobile.transitionHandlers.slide = $.mobile.transitionHandlers.simultaneous; + +// Set the slide transition's fallback to "fade" +$.mobile.transitionFallbacks.slide = "fade"; + +})( jQuery, this ); + +/* +* fallback transition for slidedown in non-3D supporting browsers (which tend to handle complex transitions poorly in general +*/ + +(function( $, window, undefined ) { + +$.mobile.transitionFallbacks.slidedown = "fade"; + +})( jQuery, this ); + +/* +* fallback transition for slideup in non-3D supporting browsers (which tend to handle complex transitions poorly in general +*/ + +(function( $, window, undefined ) { + +$.mobile.transitionFallbacks.slideup = "fade"; + +})( jQuery, this ); + /* * fallback transition for flip in non-3D supporting browsers (which tend to handle complex transitions poorly in general */ @@ -4520,6 +4023,7 @@ $.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defau $.mobile.transitionFallbacks.flip = "fade"; })( jQuery, this ); + /* * fallback transition for flow in non-3D supporting browsers (which tend to handle complex transitions poorly in general */ @@ -4529,56 +4033,7 @@ $.mobile.transitionFallbacks.flip = "fade"; $.mobile.transitionFallbacks.flow = "fade"; })( jQuery, this ); -/* -* fallback transition for pop in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ -(function( $, window, undefined ) { - -$.mobile.transitionFallbacks.pop = "fade"; - -})( jQuery, this ); -/* -* fallback transition for slide in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ - -(function( $, window, undefined ) { - -// Use the simultaneous transitions handler for slide transitions -$.mobile.transitionHandlers.slide = $.mobile.transitionHandlers.simultaneous; - -// Set the slide transitions's fallback to "fade" -$.mobile.transitionFallbacks.slide = "fade"; - -})( jQuery, this ); -/* -* fallback transition for slidedown in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ - -(function( $, window, undefined ) { - -$.mobile.transitionFallbacks.slidedown = "fade"; - -})( jQuery, this ); -/* -* fallback transition for slidefade in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ - -(function( $, window, undefined ) { - -// Set the slide transitions's fallback to "fade" -$.mobile.transitionFallbacks.slidefade = "fade"; - -})( jQuery, this ); -/* -* fallback transition for slideup in non-3D supporting browsers (which tend to handle complex transitions poorly in general -*/ - -(function( $, window, undefined ) { - -$.mobile.transitionFallbacks.slideup = "fade"; - -})( jQuery, this ); /* * fallback transition for turn in non-3D supporting browsers (which tend to handle complex transitions poorly in general */ @@ -4609,11 +4064,11 @@ $.mobile.page.prototype.options.degradeInputs = { //auto self-init widgets -$( document ).bind( "pagecreate create", function( e ) { +$( document ).bind( "pagecreate create", function( e ){ - var page = $.mobile.closestPageData( $( e.target ) ), options; + var page = $.mobile.closestPageData($(e.target)), options; - if ( !page ) { + if( !page ) { return; } @@ -4644,21 +4099,21 @@ $( document ).bind( "pagecreate create", function( e ) { $.widget( "mobile.dialog", $.mobile.widget, { options: { - closeBtnText: "Close", - overlayTheme: "a", - initSelector: ":jqmData(role='dialog')" + closeBtnText : "Close", + overlayTheme : "a", + initSelector : ":jqmData(role='dialog')" }, _create: function() { var self = this, $el = this.element, headerCloseButton = $( "
"+ this.options.closeBtnText + "" ), - dialogWrap = $( "
", { + dialogWrap = $("
", { "role" : "dialog", "class" : "ui-dialog-contain ui-corner-all ui-overlay-shadow" }); $el.addClass( "ui-dialog ui-overlay-" + this.options.overlayTheme ); - + // Class the markup for dialog styling // Set aria role $el @@ -4685,7 +4140,7 @@ $.widget( "mobile.dialog", $.mobile.widget, { /* bind events - clicks and submits should use the closing transition that the dialog opened with - unless a data-transition is specified on the link/form + unless a data-transition is specified on the link/form - if the click was on the close button, or the link has a data-rel="back" it'll go back in history naturally */ $el.bind( "vclick submit", function( event ) { @@ -4701,12 +4156,12 @@ $.widget( "mobile.dialog", $.mobile.widget, { } }) .bind( "pagehide", function( e, ui ) { + self._isClosed = false; $( this ).find( "." + $.mobile.activeBtnClass ).not( ".ui-slider-bg" ).removeClass( $.mobile.activeBtnClass ); }) // Override the theme set by the page plugin on pageshow - .bind( "pagebeforeshow", function() { - self._isCloseable = true; - if ( self.options.overlayTheme ) { + .bind( "pagebeforeshow", function(){ + if( self.options.overlayTheme ){ self.element .page( "removeContainerBackground" ) .page( "setContainerBackground", self.options.overlayTheme ); @@ -4716,26 +4171,20 @@ $.widget( "mobile.dialog", $.mobile.widget, { // Close method goes back in history close: function() { - var dst; - - if ( this._isCloseable ) { - this._isCloseable = false; + if ( !this._isClosed ) { + this._isClosed = true; if ( $.mobile.hashListeningEnabled ) { - $.mobile.back(); - } else { - dst = $.mobile.urlHistory.getPrev().url; - if ( !$.mobile.path.isPath( dst ) ) { - dst = $.mobile.path.makeUrlAbsolute( "#" + dst ); - } - - $.mobile.changePage( dst, { changeHash: false, fromHashChange: true } ); + window.history.back(); + } + else { + $.mobile.changePage( $.mobile.urlHistory.getPrev().url ); } } } }); //auto self-init widgets -$( document ).delegate( $.mobile.dialog.prototype.options.initSelector, "pagecreate", function() { +$( document ).delegate( $.mobile.dialog.prototype.options.initSelector, "pagecreate", function(){ $.mobile.dialog.prototype.enhance( this ); }); @@ -4751,7 +4200,7 @@ $.mobile.page.prototype.options.footerTheme = "a"; $.mobile.page.prototype.options.contentTheme = null; // NOTE bind used to force this binding to run before the buttonMarkup binding -// which expects .ui-footer top be applied in its gigantic selector +// which expects .ui-footer top be applied in its gigantic selector // TODO remove the buttonMarkup giant selector and move it to the various modules // on which it depends $( document ).bind( "pagecreate", function( e ) { @@ -4786,9 +4235,9 @@ $( document ).bind( "pagecreate", function( e ) { // Add ARIA role .attr( "role", role === "header" ? "banner" : "contentinfo" ); - if ( role === "header") { + if( role === "header") { // Right,left buttons - $headeranchors = $this.children( "a, button" ); + $headeranchors = $this.children( "a" ); leftbtn = $headeranchors.hasClass( "ui-btn-left" ); rightbtn = $headeranchors.hasClass( "ui-btn-right" ); @@ -4821,7 +4270,7 @@ $( document ).bind( "pagecreate", function( e ) { } else if ( role === "content" ) { if ( contentTheme ) { - $this.addClass( "ui-body-" + ( contentTheme ) ); + $this.addClass( "ui-body-" + ( contentTheme ) ); } // Add ARIA role @@ -4844,7 +4293,7 @@ $.fn.fieldcontain = function( options ) { }; //auto self-init widgets -$( document ).bind( "pagecreate create", function( e ) { +$( document ).bind( "pagecreate create", function( e ){ $( ":jqmData(role='fieldcontain')", e.target ).jqmEnhanceable().fieldcontain(); }); @@ -4858,9 +4307,9 @@ $.fn.grid = function( options ) { var $this = $( this ), o = $.extend({ grid: null - }, options ), + },options), $kids = $this.children(), - gridCols = { solo:1, a:2, b:3, c:4, d:5 }, + gridCols = {solo:1, a:2, b:3, c:4, d:5}, grid = o.grid, iterator; @@ -4886,13 +4335,13 @@ $.fn.grid = function( options ) { $kids.filter( ":nth-child(" + iterator + "n+2)" ).addClass( "ui-block-b" ); } if ( iterator > 2 ) { - $kids.filter( ":nth-child(" + iterator + "n+3)" ).addClass( "ui-block-c" ); + $kids.filter( ":nth-child(3n+3)" ).addClass( "ui-block-c" ); } if ( iterator > 3 ) { - $kids.filter( ":nth-child(" + iterator + "n+4)" ).addClass( "ui-block-d" ); + $kids.filter( ":nth-child(4n+4)" ).addClass( "ui-block-d" ); } if ( iterator > 4 ) { - $kids.filter( ":nth-child(" + iterator + "n+5)" ).addClass( "ui-block-e" ); + $kids.filter( ":nth-child(5n+5)" ).addClass( "ui-block-e" ); } }); }; @@ -4900,24 +4349,20 @@ $.fn.grid = function( options ) { (function( $, undefined ) { -$( document ).bind( "pagecreate create", function( e ) { +$( document ).bind( "pagecreate create", function( e ){ $( ":jqmData(role='nojs')", e.target ).addClass( "ui-nojs" ); }); })( jQuery ); -(function( $, undefined ) { +( function( $, undefined ) { $.fn.buttonMarkup = function( options ) { - var $workingSet = this, - mapToDataAttr = function( key, value ) { - e.setAttribute( "data-" + $.mobile.ns + key, value ); - el.jqmData( key, value ); - }; + var $workingSet = this; // Enforce options to be of type string - options = ( options && ( $.type( options ) === "object" ) )? options : {}; + options = ( options && ( $.type( options ) == "object" ) )? options : {}; for ( var i = 0; i < $workingSet.length; i++ ) { var el = $workingSet.eq( i ), e = el[ 0 ], @@ -4942,23 +4387,21 @@ $.fn.buttonMarkup = function( options ) { buttonIcon, buttonElements; - $.each( o, mapToDataAttr ); - - if ( el.jqmData( "rel" ) === "popup" && el.attr( "href" ) ) { - e.setAttribute( "aria-haspopup", true ); - e.setAttribute( "aria-owns", e.getAttribute( "href" ) ); - } + $.each(o, function(key, value) { + e.setAttribute( "data-" + $.mobile.ns + key, value ); + el.jqmData(key, value); + }); // Check if this element is already enhanced - buttonElements = $.data( ( ( e.tagName === "INPUT" || e.tagName === "BUTTON" ) ? e.parentNode : e ), "buttonElements" ); + buttonElements = $.data(((e.tagName === "INPUT" || e.tagName === "BUTTON") ? e.parentNode : e), "buttonElements"); - if ( buttonElements ) { + if (buttonElements) { e = buttonElements.outer; - el = $( e ); + el = $(e); buttonInner = buttonElements.inner; buttonText = buttonElements.text; // We will recreate this icon below - $( buttonElements.icon ).remove(); + $(buttonElements.icon).remove(); buttonElements.icon = null; } else { @@ -4967,29 +4410,31 @@ $.fn.buttonMarkup = function( options ) { } buttonIcon = o.icon ? document.createElement( "span" ) : null; - if ( attachEvents && !buttonElements ) { + if ( attachEvents && !buttonElements) { attachEvents(); } - - // if not, try to find closest theme container + + // if not, try to find closest theme container if ( !o.theme ) { - o.theme = $.mobile.getInheritedTheme( el, "c" ); - } + o.theme = $.mobile.getInheritedTheme( el, "c" ); + } buttonClass = "ui-btn ui-btn-up-" + o.theme; + buttonClass += o.inline ? " ui-btn-inline" : ""; buttonClass += o.shadow ? " ui-shadow" : ""; buttonClass += o.corners ? " ui-btn-corner-all" : ""; if ( o.mini !== undefined ) { // Used to control styling in headers/footers, where buttons default to `mini` style. - buttonClass += o.mini === true ? " ui-mini" : " ui-fullsize"; + buttonClass += o.mini ? " ui-mini" : " ui-fullsize"; } - - if ( o.inline !== undefined ) { - // Used to control styling in headers/footers, where buttons default to `inline` style. - buttonClass += o.inline === true ? " ui-btn-inline" : " ui-btn-block"; + + if ( o.inline !== undefined ) { + // Used to control styling in headers/footers, where buttons default to `mini` style. + buttonClass += o.inline === false ? " ui-btn-block" : " ui-btn-inline"; } - + + if ( o.icon ) { o.icon = "ui-icon-" + o.icon; o.iconpos = o.iconpos || "left"; @@ -5004,11 +4449,11 @@ $.fn.buttonMarkup = function( options ) { if ( o.iconpos ) { buttonClass += " ui-btn-icon-" + o.iconpos; - if ( o.iconpos === "notext" && !el.attr( "title" ) ) { + if ( o.iconpos == "notext" && !el.attr( "title" ) ) { el.attr( "title", el.getEncodedText() ); } } - + innerClass += o.corners ? " ui-btn-corner-all" : ""; if ( o.iconpos && o.iconpos === "notext" && !el.attr( "title" ) ) { @@ -5028,13 +4473,13 @@ $.fn.buttonMarkup = function( options ) { } if ( buttonIcon ) { buttonIcon.className = iconClass; - if ( !( buttonElements && buttonElements.icon ) ) { - buttonIcon.innerHTML = " "; + if ( !(buttonElements && buttonElements.icon) ) { + buttonIcon.appendChild( document.createTextNode("\u00a0") ); buttonInner.appendChild( buttonIcon ); } } - while ( e.firstChild && !buttonElements ) { + while ( e.firstChild && !buttonElements) { buttonText.appendChild( e.firstChild ); } @@ -5052,11 +4497,11 @@ $.fn.buttonMarkup = function( options ) { icon : buttonIcon }; - $.data( e, 'buttonElements', buttonElements ); - $.data( buttonInner, 'buttonElements', buttonElements ); - $.data( buttonText, 'buttonElements', buttonElements ); - if ( buttonIcon ) { - $.data( buttonIcon, 'buttonElements', buttonElements ); + $.data(e, 'buttonElements', buttonElements); + $.data(buttonInner, 'buttonElements', buttonElements); + $.data(buttonText, 'buttonElements', buttonElements); + if (buttonIcon) { + $.data(buttonIcon, 'buttonElements', buttonElements); } } @@ -5078,8 +4523,8 @@ function closestEnabledButton( element ) { // handed could be in an SVG DOM where className on SVG elements is defined to // be of a different type (SVGAnimatedString). We only operate on HTML DOM // elements, so we look for plain "string". - cname = ( typeof element.className === 'string' ) && ( element.className + ' ' ); - if ( cname && cname.indexOf( "ui-btn " ) > -1 && cname.indexOf( "ui-disabled " ) < 0 ) { + cname = ( typeof element.className === 'string' ) && (element.className + ' '); + if ( cname && cname.indexOf("ui-btn ") > -1 && cname.indexOf("ui-disabled ") < 0 ) { break; } @@ -5096,16 +4541,14 @@ var attachEvents = function() { "vmousedown vmousecancel vmouseup vmouseover vmouseout focus blur scrollstart": function( event ) { var theme, $btn = $( closestEnabledButton( event.target ) ), - isTouchEvent = event.originalEvent && /^touch/.test( event.originalEvent.type ), evt = event.type; - + if ( $btn.length ) { theme = $btn.attr( "data-" + $.mobile.ns + "theme" ); - + if ( evt === "vmousedown" ) { - if ( isTouchEvent ) { - // Use a short delay to determine if the user is scrolling before highlighting - hov = setTimeout( function() { + if ( $.support.touch ) { + hov = setTimeout(function() { $btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-down-" + theme ); }, hoverDelay ); } else { @@ -5114,9 +4557,8 @@ var attachEvents = function() { } else if ( evt === "vmousecancel" || evt === "vmouseup" ) { $btn.removeClass( "ui-btn-down-" + theme ).addClass( "ui-btn-up-" + theme ); } else if ( evt === "vmouseover" || evt === "focus" ) { - if ( isTouchEvent ) { - // Use a short delay to determine if the user is scrolling before highlighting - foc = setTimeout( function() { + if ( $.support.touch ) { + foc = setTimeout(function() { $btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-hover-" + theme ); }, hoverDelay ); } else { @@ -5133,10 +4575,10 @@ var attachEvents = function() { } } }, - "focusin focus": function( event ) { + "focusin focus": function( event ){ $( closestEnabledButton( event.target ) ).addClass( $.mobile.focusClass ); }, - "focusout blur": function( event ) { + "focusout blur": function( event ){ $( closestEnabledButton( event.target ) ).removeClass( $.mobile.focusClass ); } }); @@ -5146,11 +4588,10 @@ var attachEvents = function() { //links in bars, or those with data-role become buttons //auto self-init widgets -$( document ).bind( "pagecreate create", function( e ) { +$( document ).bind( "pagecreate create", function( e ){ $( ":jqmData(role='button'), .ui-bar > a, .ui-header > a, .ui-footer > a, .ui-bar > :jqmData(role='controlgroup') > a", e.target ) - .jqmEnhanceable() - .not( "button, input, .ui-btn, :jqmData(role='none'), :jqmData(role='nojs')" ) + .not( ".ui-btn, :jqmData(role='none'), :jqmData(role='nojs')" ) .buttonMarkup(); }); @@ -5167,7 +4608,7 @@ $.widget( "mobile.collapsible", $.mobile.widget, { heading: "h1,h2,h3,h4,h5,h6,legend", theme: null, contentTheme: null, - inset: true, + iconTheme: "d", mini: false, initSelector: ":jqmData(role='collapsible')" }, @@ -5177,9 +4618,7 @@ $.widget( "mobile.collapsible", $.mobile.widget, { o = this.options, collapsible = $el.addClass( "ui-collapsible" ), collapsibleHeading = $el.children( o.heading ).first(), - collapsedIcon = $el.jqmData( "collapsed-icon" ) || o.collapsedIcon, - expandedIcon = $el.jqmData( "expanded-icon" ) || o.expandedIcon, - collapsibleContent = collapsible.wrapInner( "
" ).children( ".ui-collapsible-content" ), + collapsibleContent = collapsible.wrapInner( "
" ).find( ".ui-collapsible-content" ), collapsibleSet = $el.closest( ":jqmData(role='collapsible-set')" ).addClass( "ui-collapsible-set" ); // Replace collapsibleHeading if it's a legend @@ -5192,51 +4631,24 @@ $.widget( "mobile.collapsible", $.mobile.widget, { if ( collapsibleSet.length ) { // Inherit the theme from collapsible-set if ( !o.theme ) { - o.theme = collapsibleSet.jqmData( "theme" ) || $.mobile.getInheritedTheme( collapsibleSet, "c" ); + o.theme = collapsibleSet.jqmData("theme") || $.mobile.getInheritedTheme( collapsibleSet, "c" ); } // Inherit the content-theme from collapsible-set if ( !o.contentTheme ) { o.contentTheme = collapsibleSet.jqmData( "content-theme" ); } - // Get the preference for collapsed icon in the set - if ( !o.collapsedIcon ) { - o.collapsedIcon = collapsibleSet.jqmData( "collapsed-icon" ); - } - // Get the preference for expanded icon in the set - if ( !o.expandedIcon ) { - o.expandedIcon = collapsibleSet.jqmData( "expanded-icon" ); - } // Gets the preference icon position in the set if ( !o.iconPos ) { o.iconPos = collapsibleSet.jqmData( "iconpos" ); } - // Inherit the preference for inset from collapsible-set or set the default value to ensure equalty within a set - if ( collapsibleSet.jqmData( "inset" ) !== undefined ) { - o.inset = collapsibleSet.jqmData( "inset" ); - } else { - o.inset = true; - } - // Gets the preference for mini in the set - if ( !o.mini ) { + + if( !o.mini ) { o.mini = collapsibleSet.jqmData( "mini" ); } - } else { - // get inherited theme if not a set and no theme has been set - if ( !o.theme ) { - o.theme = $.mobile.getInheritedTheme( $el, "c" ); - } } - - if ( !!o.inset ) { - collapsible.addClass( "ui-collapsible-inset" ); - } - collapsibleContent.addClass( ( o.contentTheme ) ? ( "ui-body-" + o.contentTheme ) : ""); - collapsedIcon = $el.jqmData( "collapsed-icon" ) || o.collapsedIcon || "plus"; - expandedIcon = $el.jqmData( "expanded-icon" ) || o.expandedIcon || "minus"; - collapsibleHeading //drop heading in before content .insertBefore( collapsibleContent ) @@ -5250,43 +4662,39 @@ $.widget( "mobile.collapsible", $.mobile.widget, { shadow: false, corners: false, iconpos: $el.jqmData( "iconpos" ) || o.iconPos || "left", - icon: collapsedIcon, + icon: "plus", mini: o.mini, theme: o.theme - }); - - if ( !!o.inset ) { - collapsibleHeading - .find( "a" ).first().add( ".ui-btn-inner", $el ) - .addClass( "ui-corner-top ui-corner-bottom" ); - } + }) + .add( ".ui-btn-inner", $el ) + .addClass( "ui-corner-top ui-corner-bottom" ); //events collapsible .bind( "expand collapse", function( event ) { if ( !event.isDefaultPrevented() ) { - var $this = $( this ), - isCollapse = ( event.type === "collapse" ), - contentTheme = o.contentTheme; event.preventDefault(); + var $this = $( this ), + isCollapse = ( event.type === "collapse" ), + contentTheme = o.contentTheme; + collapsibleHeading - .toggleClass( "ui-collapsible-heading-collapsed", isCollapse ) + .toggleClass( "ui-collapsible-heading-collapsed", isCollapse) .find( ".ui-collapsible-heading-status" ) .text( isCollapse ? o.expandCueText : o.collapseCueText ) .end() .find( ".ui-icon" ) - .toggleClass( "ui-icon-" + expandedIcon, !isCollapse ) - // logic or cause same icon for expanded/collapsed state would remove the ui-icon-class - .toggleClass( "ui-icon-" + collapsedIcon, ( isCollapse || expandedIcon === collapsedIcon ) ) + .toggleClass( "ui-icon-minus", !isCollapse ) + .toggleClass( "ui-icon-plus", isCollapse ) .end() .find( "a" ).first().removeClass( $.mobile.activeBtnClass ); $this.toggleClass( "ui-collapsible-collapsed", isCollapse ); collapsibleContent.toggleClass( "ui-collapsible-content-collapsed", isCollapse ).attr( "aria-hidden", isCollapse ); - if ( contentTheme && !!o.inset && ( !collapsibleSet.length || collapsible.jqmData( "collapsible-last" ) ) ) { + if ( contentTheme && ( !collapsibleSet.length || collapsible.jqmData( "collapsible-last" ) ) ) { collapsibleHeading .find( "a" ).first().add( collapsibleHeading.find( ".ui-btn-inner" ) ) .toggleClass( "ui-corner-bottom", isCollapse ); @@ -5303,7 +4711,8 @@ $.widget( "mobile.collapsible", $.mobile.widget, { }) .bind( "click", function( event ) { - var type = collapsibleHeading.is( ".ui-collapsible-heading-collapsed" ) ? "expand" : "collapse"; + var type = collapsibleHeading.is( ".ui-collapsible-heading-collapsed" ) ? + "expand" : "collapse"; collapsible.trigger( type ); @@ -5314,7 +4723,7 @@ $.widget( "mobile.collapsible", $.mobile.widget, { }); //auto self-init widgets -$( document ).bind( "pagecreate create", function( e ) { +$( document ).bind( "pagecreate create", function( e ){ $.mobile.collapsible.prototype.enhanceWithin( e.target ); }); @@ -5339,10 +4748,9 @@ $.widget( "mobile.collapsibleset", $.mobile.widget, { o.contentTheme = $el.jqmData( "content-theme" ); } - if ( $el.jqmData( "inset" ) !== undefined ) { - o.inset = $el.jqmData( "inset" ); + if ( !o.corners ) { + o.corners = $el.jqmData( "corners" ) === undefined ? true : false; } - o.inset = o.inset !== undefined ? o.inset : true; // Initialize the collapsible set if it's not already initialized if ( !$el.jqmData( "collapsiblebound" ) ) { @@ -5351,9 +4759,10 @@ $.widget( "mobile.collapsibleset", $.mobile.widget, { .bind( "expand collapse", function( event ) { var isCollapse = ( event.type === "collapse" ), collapsible = $( event.target ).closest( ".ui-collapsible" ), - widget = collapsible.data( "collapsible" ); - if ( collapsible.jqmData( "collapsible-last" ) && !!o.inset ) { - collapsible.find( ".ui-collapsible-heading" ).first() + widget = collapsible.data( "collapsible" ), + contentTheme = widget.options.contentTheme; + if ( contentTheme && collapsible.jqmData( "collapsible-last" ) ) { + collapsible.find( widget.options.heading ).first() .find( "a" ).first() .toggleClass( "ui-corner-bottom", isCollapse ) .find( ".ui-btn-inner" ) @@ -5362,26 +4771,16 @@ $.widget( "mobile.collapsibleset", $.mobile.widget, { } }) .bind( "expand", function( event ) { - var closestCollapsible = $( event.target ) - .closest( ".ui-collapsible" ); - if ( closestCollapsible.parent().is( ":jqmData(role='collapsible-set')" ) ) { - closestCollapsible - .siblings( ".ui-collapsible" ) - .trigger( "collapse" ); - } + $( event.target ) + .closest( ".ui-collapsible" ) + .siblings( ".ui-collapsible" ) + .trigger( "collapse" ); }); } }, _init: function() { - var $el = this.element, - collapsiblesInSet = $el.children( ":jqmData(role='collapsible')" ), - expanded = collapsiblesInSet.filter( ":jqmData(collapsed='false')" ); this.refresh(); - - // Because the corners are handled by the collapsible itself and the default state is collapsed - // That was causing https://github.com/jquery/jquery-mobile/issues/4116 - expanded.trigger( "expand" ); }, refresh: function() { @@ -5392,36 +4791,33 @@ $.widget( "mobile.collapsibleset", $.mobile.widget, { $.mobile.collapsible.prototype.enhance( collapsiblesInSet.not( ".ui-collapsible" ) ); // clean up borders - if ( !!o.inset ) { - collapsiblesInSet.each(function() { - $( this ).jqmRemoveData( "collapsible-last" ) - .find( ".ui-collapsible-heading" ) - .find( "a" ).first() - .removeClass( "ui-corner-top ui-corner-bottom" ) - .find( ".ui-btn-inner" ) - .removeClass( "ui-corner-top ui-corner-bottom" ); - }); + collapsiblesInSet.each( function() { + $( this ).find( $.mobile.collapsible.prototype.options.heading ) + .find( "a" ).first() + .removeClass( "ui-corner-top ui-corner-bottom" ) + .find( ".ui-btn-inner" ) + .removeClass( "ui-corner-top ui-corner-bottom" ); + }); - collapsiblesInSet.first() - .find( "a" ) - .first() - .addClass( "ui-corner-top" ) - .find( ".ui-btn-inner" ) - .addClass( "ui-corner-top" ); - - collapsiblesInSet.last() - .jqmData( "collapsible-last", true ) - .find( "a" ) - .first() - .addClass( "ui-corner-bottom" ) - .find( ".ui-btn-inner" ) - .addClass( "ui-corner-bottom" ); - } + collapsiblesInSet.first() + .find( "a" ) + .first() + .addClass( o.corners ? "ui-corner-top" : "" ) + .find( ".ui-btn-inner" ) + .addClass( "ui-corner-top" ); + + collapsiblesInSet.last() + .jqmData( "collapsible-last", true ) + .find( "a" ) + .first() + .addClass( o.corners ? "ui-corner-bottom" : "" ) + .find( ".ui-btn-inner" ) + .addClass( "ui-corner-bottom" ); } }); //auto self-init widgets -$( document ).bind( "pagecreate create", function( e ) { +$( document ).bind( "pagecreate create", function( e ){ $.mobile.collapsibleset.prototype.enhanceWithin( e.target ); }); @@ -5436,7 +4832,7 @@ $.widget( "mobile.navbar", $.mobile.widget, { initSelector: ":jqmData(role='navbar')" }, - _create: function() { + _create: function(){ var $navbar = this.element, $navbtns = $navbar.find( "a" ), @@ -5444,7 +4840,7 @@ $.widget( "mobile.navbar", $.mobile.widget, { this.options.iconpos : undefined; $navbar.addClass( "ui-navbar ui-mini" ) - .attr( "role", "navigation" ) + .attr( "role","navigation" ) .find( "ul" ) .jqmEnhanceable() .grid({ grid: this.options.grid }); @@ -5457,7 +4853,7 @@ $.widget( "mobile.navbar", $.mobile.widget, { }); $navbar.delegate( "a", "vclick", function( event ) { - if ( !$(event.target).hasClass( "ui-disabled" ) ) { + if( !$(event.target).hasClass("ui-disabled") ) { $navbtns.removeClass( $.mobile.activeBtnClass ); $( this ).addClass( $.mobile.activeBtnClass ); } @@ -5471,7 +4867,7 @@ $.widget( "mobile.navbar", $.mobile.widget, { }); //auto self-init widgets -$( document ).bind( "pagecreate create", function( e ) { +$( document ).bind( "pagecreate create", function( e ){ $.mobile.navbar.prototype.enhanceWithin( e.target ); }); @@ -5500,7 +4896,7 @@ $.widget( "mobile.listview", $.mobile.widget, { _create: function() { var t = this, listviewClasses = ""; - + listviewClasses += t.options.inset ? " ui-listview-inset ui-corner-all ui-shadow " : ""; // create listview markup @@ -5532,14 +4928,11 @@ $.widget( "mobile.listview", $.mobile.widget, { $topli, $bottomli; - $li = this.element.children( "li" ); - // At create time and when autodividers calls refresh the li are not visible yet so we need to rely on .ui-screen-hidden - $visibleli = create || $li.filter( ":visible" ).length === 0 ? $li.not( ".ui-screen-hidden" ) : $li.filter( ":visible" ); - - // ui-li-last is used for setting border-bottom on the last li - $li.filter( ".ui-li-last" ).removeClass( "ui-li-last" ); - if ( this.options.inset ) { + $li = this.element.children( "li" ); + // at create time the li are not visible yet so we need to rely on .ui-screen-hidden + $visibleli = create?$li.not( ".ui-screen-hidden" ):$li.filter( ":visible" ); + this._removeCorners( $li ); // Select the first visible li element @@ -5547,29 +4940,27 @@ $.widget( "mobile.listview", $.mobile.widget, { .addClass( "ui-corner-top" ); $topli.add( $topli.find( ".ui-btn-inner" ) - .not( ".ui-li-link-alt span:first-child" ) ) - .addClass( "ui-corner-top" ) - .end() + .not( ".ui-li-link-alt span:first-child" ) ) + .addClass( "ui-corner-top" ) + .end() .find( ".ui-li-link-alt, .ui-li-link-alt span:first-child" ) .addClass( "ui-corner-tr" ) .end() .find( ".ui-li-thumb" ) - .not( ".ui-li-icon" ) + .not(".ui-li-icon") .addClass( "ui-corner-tl" ); // Select the last visible li element $bottomli = $visibleli.last() - .addClass( "ui-corner-bottom ui-li-last" ); + .addClass( "ui-corner-bottom" ); $bottomli.add( $bottomli.find( ".ui-btn-inner" ) ) .find( ".ui-li-link-alt" ) .addClass( "ui-corner-br" ) .end() .find( ".ui-li-thumb" ) - .not( ".ui-li-icon" ) + .not(".ui-li-icon") .addClass( "ui-corner-bl" ); - } else { - $visibleli.last().addClass( "ui-li-last" ); } if ( !create ) { this.element.trigger( "updatelayout" ); @@ -5587,7 +4978,8 @@ $.widget( "mobile.listview", $.mobile.widget, { // the nodeName from the element every time to ensure we have // a match. Note that this function lives here for now, but may // be moved into $.mobile if other components need a similar method. - _findFirstElementByTagName: function( ele, nextProp, lcName, ucName ) { + _findFirstElementByTagName: function( ele, nextProp, lcName, ucName ) + { var dict = {}; dict[ lcName ] = dict[ ucName ] = true; while ( ele ) { @@ -5598,7 +4990,8 @@ $.widget( "mobile.listview", $.mobile.widget, { } return null; }, - _getChildrenByTagName: function( ele, lcName, ucName ) { + _getChildrenByTagName: function( ele, lcName, ucName ) + { var results = [], dict = {}; dict[ lcName ] = dict[ ucName ] = true; @@ -5612,7 +5005,8 @@ $.widget( "mobile.listview", $.mobile.widget, { return $( results ); }, - _addThumbClasses: function( containers ) { + _addThumbClasses: function( containers ) + { var i, img, len = containers.length; for ( i = 0; i < len; i++ ) { img = $( this._findFirstElementByTagName( containers[ i ].firstChild, "nextSibling", "img", "IMG" ) ); @@ -5634,31 +5028,15 @@ $.widget( "mobile.listview", $.mobile.widget, { listsplittheme = $list.jqmData( "splittheme" ), listspliticon = $list.jqmData( "spliticon" ), li = this._getChildrenByTagName( $list[ 0 ], "li", "LI" ), - ol = !!$.nodeName( $list[ 0 ], "ol" ), - jsCount = !$.support.cssPseudoElement, - start = $list.attr( "start" ), + counter = $.support.cssPseudoElement || !$.nodeName( $list[ 0 ], "ol" ) ? 0 : 1, itemClassDict = {}, item, itemClass, itemTheme, - a, last, splittheme, counter, startCount, newStartCount, countParent, icon, imgParents, img, linkIcon; + a, last, splittheme, countParent, icon, imgParents, img, linkIcon; - if ( ol && jsCount ) { + if ( counter ) { $list.find( ".ui-li-dec" ).remove(); } - if ( ol ) { - // Check if a start attribute has been set while taking a value of 0 into account - if ( start || start === 0 ) { - if ( !jsCount ) { - startCount = parseFloat( start ) - 1; - $list.css( "counter-reset", "listnumbering " + startCount ); - } else { - counter = parseFloat( start ); - } - } else if ( jsCount ) { - counter = 1; - } - } - if ( !o.theme ) { o.theme = $.mobile.getInheritedTheme( this.element, "c" ); } @@ -5669,23 +5047,20 @@ $.widget( "mobile.listview", $.mobile.widget, { // If we're creating the element, we update it regardless if ( create || !item.hasClass( "ui-li" ) ) { - itemTheme = item.jqmData( "theme" ) || o.theme; - //a = this._getChildrenByTagName( item[ 0 ], "a", "A" ); john - - if(item.hasClass( "label" )) { - var a = this._getChildrenByTagName( item[ 0 ], "a", "A" ); - } - else if(item.hasClass( "activity" )) { - var a = item.find( "a" ); - } - else { - var a = this._getChildrenByTagName( item[ 0 ], "a", "A" ); - } - + itemTheme = item.jqmData("theme") || o.theme; + + // Moodle Hack to nicely display the activities on the course page. + // Activities is not a children, we need to find it. + if (item.hasClass( "activity" ) && (!item.hasClass( "label" ))) { + a = item.find( "a" ); + } else { + a = this._getChildrenByTagName( item[ 0 ], "a", "A" ); + } + var isDivider = ( item.jqmData( "role" ) === "list-divider" ); if ( a.length && !isDivider ) { - icon = item.jqmData( "icon" ); + icon = item.jqmData("icon"); item.buttonMarkup({ wrapperEls: "div", @@ -5696,7 +5071,7 @@ $.widget( "mobile.listview", $.mobile.widget, { theme: itemTheme }); - if ( ( icon !== false ) && ( a.length === 1 ) ) { + if ( ( icon != false ) && ( a.length == 1 ) ) { item.addClass( "ui-li-has-arrow" ); } @@ -5707,9 +5082,9 @@ $.widget( "mobile.listview", $.mobile.widget, { last = a.last(); splittheme = listsplittheme || last.jqmData( "theme" ) || o.splitTheme; - linkIcon = last.jqmData( "icon" ); + linkIcon = last.jqmData("icon"); - last.appendTo( item ) + last.appendTo(item) .attr( "title", last.getEncodedText() ) .addClass( "ui-li-link-alt" ) .empty() @@ -5737,30 +5112,21 @@ $.widget( "mobile.listview", $.mobile.widget, { itemClass += " ui-li-divider ui-bar-" + dividertheme; item.attr( "role", "heading" ); - if ( ol ) { - //reset counter when a divider heading is encountered - if ( start || start === 0 ) { - if ( !jsCount ) { - newStartCount = parseFloat( start ) - 1; - item.css( "counter-reset", "listnumbering " + newStartCount ); - } else { - counter = parseFloat( start ); - } - } else if ( jsCount ) { - counter = 1; - } + //reset counter when a divider heading is encountered + if ( counter ) { + counter = 1; } - + } else { - itemClass += " ui-li-static ui-btn-up-" + itemTheme; + itemClass += " ui-li-static ui-body-" + itemTheme; } } - if ( ol && jsCount && itemClass.indexOf( "ui-li-divider" ) < 0 ) { - countParent = itemClass.indexOf( "ui-li-static" ) > 0 ? item : item.find( ".ui-link-inherit" ); + if ( counter && itemClass.indexOf( "ui-li-divider" ) < 0 ) { + countParent = item.is( ".ui-li-static:first" ) ? item : item.find( ".ui-link-inherit" ); countParent.addClass( "ui-li-jsnumbering" ) - .prepend( "" + ( counter++ ) + ". " ); + .prepend( "" + (counter++) + ". " ); } // Instead of setting item class directly on the list item and its @@ -5792,12 +5158,12 @@ $.widget( "mobile.listview", $.mobile.widget, { .end() .find( ".ui-li-aside" ).each(function() { - var $this = $( this ); + var $this = $(this); $this.prependTo( $this.parent() ); //shift aside to front for css float }) .end() - .find( ".ui-li-count" ).each(function() { + .find( ".ui-li-count" ).each( function() { $( this ).closest( "li" ).addClass( "ui-li-has-count" ); }).addClass( "ui-btn-up-" + ( $list.jqmData( "counttheme" ) || this.options.countTheme) + " ui-btn-corner-all" ); @@ -5817,9 +5183,6 @@ $.widget( "mobile.listview", $.mobile.widget, { this._addThumbClasses( $list.find( ".ui-link-inherit" ) ); this._refreshCorners( create ); - - // autodividers binds to this to redraw dividers after the listview refresh - this._trigger( "afterrefresh" ); }, //create a string for ID/subpage url creation @@ -5850,8 +5213,8 @@ $.widget( "mobile.listview", $.mobile.widget, { list = $( this ), listId = list.attr( "id" ) || parentListId + "-" + i, parent = list.parent(), - nodeElsFull = $( list.prevAll().toArray().reverse() ), - nodeEls = nodeElsFull.length ? nodeElsFull : $( "" + $.trim(parent.contents()[ 0 ].nodeValue) + "" ), + nodeEls = $( list.prevAll().toArray().reverse() ), + nodeEls = nodeEls.length ? nodeEls : $( "" + $.trim(parent.contents()[ 0 ].nodeValue) + "" ), title = nodeEls.first().getEncodedText(),//url limits to first 30 chars of text id = ( parentUrl || "" ) + "&" + $.mobile.subPageUrlKey + "=" + listId, theme = list.jqmData( "theme" ) || o.theme, @@ -5862,16 +5225,16 @@ $.widget( "mobile.listview", $.mobile.widget, { hasSubPages = true; newPage = list.detach() - .wrap( "
" ) + .wrap( "
" ) .parent() .before( "
" + title + "
" ) - .after( persistentFooterID ? $( "
" ) : "" ) + .after( persistentFooterID ? $( "
") : "" ) .parent() .appendTo( $.mobile.pageContainer ); newPage.page(); - anchor = parent.find( 'a:first' ); + anchor = parent.find('a:first'); if ( !anchor.length ) { anchor = $( "" ).html( nodeEls || title ).prependTo( parent.empty() ); @@ -5883,20 +5246,20 @@ $.widget( "mobile.listview", $.mobile.widget, { // on pagehide, remove any nested pages along with the parent page, as long as they aren't active // and aren't embedded - if ( hasSubPages && + if( hasSubPages && parentPage.is( ":jqmData(external-page='true')" ) && - parentPage.data( "page" ).options.domCache === false ) { + parentPage.data("page").options.domCache === false ) { - var newRemove = function( e, ui ) { + var newRemove = function( e, ui ){ var nextPage = ui.nextPage, npURL, prEvent = new $.Event( "pageremove" ); - if ( ui.nextPage ) { + if( ui.nextPage ){ npURL = nextPage.jqmData( "url" ); - if ( npURL.indexOf( parentUrl + "&" + $.mobile.subPageUrlKey ) !== 0 ) { + if( npURL.indexOf( parentUrl + "&" + $.mobile.subPageUrlKey ) !== 0 ){ self.childPages().remove(); parentPage.trigger( prEvent ); - if ( !prEvent.isDefaultPrevented() ) { + if( !prEvent.isDefaultPrevented() ){ parentPage.removeWithDependents(); } } @@ -5911,79 +5274,20 @@ $.widget( "mobile.listview", $.mobile.widget, { }, // TODO sort out a better way to track sub pages of the listview this is brittle - childPages: function() { + childPages: function(){ var parentUrl = this.parentPage.jqmData( "url" ); - return $( ":jqmData(url^='"+ parentUrl + "&" + $.mobile.subPageUrlKey + "')" ); + return $( ":jqmData(url^='"+ parentUrl + "&" + $.mobile.subPageUrlKey +"')"); } }); //auto self-init widgets -$( document ).bind( "pagecreate create", function( e ) { +$( document ).bind( "pagecreate create", function( e ){ $.mobile.listview.prototype.enhanceWithin( e.target ); }); })( jQuery ); -(function( $, undefined ) { - -$.mobile.listview.prototype.options.autodividers = false; -$.mobile.listview.prototype.options.autodividersSelector = function( elt ) { - // look for the text in the given element - var text = elt.text() || null; - - if ( !text ) { - return null; - } - - // create the text for the divider (first uppercased letter) - text = text.slice( 0, 1 ).toUpperCase(); - - return text; -}; - -$( document ).delegate( "ul,ol", "listviewcreate", function() { - - var list = $( this ), - listview = list.data( "listview" ); - - if ( !listview || !listview.options.autodividers ) { - return; - } - - var replaceDividers = function () { - list.find( "li:jqmData(role='list-divider')" ).remove(); - - var lis = list.find( 'li' ), - lastDividerText = null, li, dividerText; - - for ( var i = 0; i < lis.length ; i++ ) { - li = lis[i]; - dividerText = listview.options.autodividersSelector( $( li ) ); - - if ( dividerText && lastDividerText !== dividerText ) { - var divider = document.createElement( 'li' ); - divider.appendChild( document.createTextNode( dividerText ) ); - divider.setAttribute( 'data-' + $.mobile.ns + 'role', 'list-divider' ); - li.parentNode.insertBefore( divider, li ); - } - - lastDividerText = dividerText; - } - }; - - var afterListviewRefresh = function () { - list.unbind( 'listviewafterrefresh', afterListviewRefresh ); - replaceDividers(); - listview.refresh(); - list.bind( 'listviewafterrefresh', afterListviewRefresh ); - }; - - afterListviewRefresh(); -}); - -})( jQuery ); - /* * "checkboxradio" plugin */ @@ -5999,12 +5303,12 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, { var self = this, input = this.element, inheritAttr = function( input, dataAttr ) { - return input.jqmData( dataAttr ) || input.closest( "form, fieldset" ).jqmData( dataAttr ); + return input.jqmData( dataAttr ) || input.closest( "form,fieldset" ).jqmData( dataAttr ) }, // NOTE: Windows Phone could not find the label through a selector // filter works though. parentLabel = $( input ).closest( "label" ), - label = parentLabel.length ? parentLabel : $( input ).closest( "form, fieldset, :jqmData(role='page'), :jqmData(role='dialog')" ).find( "label" ).filter( "[for='" + input[0].id + "']" ).first(), + label = parentLabel.length ? parentLabel : $( input ).closest( "form,fieldset,:jqmData(role='page'),:jqmData(role='dialog')" ).find( "label" ).filter( "[for='" + input[0].id + "']" ), inputtype = input[0].type, mini = inheritAttr( input, "mini" ), checkedState = inputtype + "-on", @@ -6032,7 +5336,7 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, { }); // If there's no selected theme check the data attr - if ( !this.options.theme ) { + if( !this.options.theme ) { this.options.theme = $.mobile.getInheritedTheme( this.element, "c" ); } @@ -6091,13 +5395,13 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, { }, vclick: function() { - var $this = $( this ); + var $this = $(this); // Adds checked attribute to checked input when keyboard is used if ( $this.is( ":checked" ) ) { $this.prop( "checked", true); - self._getInputSet().not( $this ).prop( "checked", false ); + self._getInputSet().not($this).prop( "checked", false ); } else { $this.prop( "checked", false ); @@ -6120,25 +5424,25 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, { _cacheVals: function() { this._getInputSet().each(function() { - $( this ).jqmData( "cacheVal", this.checked ); + $(this).jqmData( "cacheVal", this.checked ); }); }, //returns either a set of radios with the same name attribute, or a single checkbox - _getInputSet: function() { - if ( this.inputtype === "checkbox" ) { + _getInputSet: function(){ + if(this.inputtype === "checkbox") { return this.element; } - return this.element.closest( "form, fieldset, :jqmData(role='page'), :jqmData(role='dialog')" ) - .find( "input[name='" + this.element[0].name + "'][type='" + this.inputtype + "']" ); + return this.element.closest( "form,fieldset,:jqmData(role='page')" ) + .find( "input[name='"+ this.element[0].name +"'][type='"+ this.inputtype +"']" ); }, _updateAll: function() { var self = this; this._getInputSet().each(function() { - var $this = $( this ); + var $this = $(this); if ( this.checked || self.inputtype === "checkbox" ) { $this.trigger( "change" ); @@ -6177,7 +5481,7 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, { }); //auto self-init widgets -$( document ).bind( "pagecreate create", function( e ) { +$( document ).bind( "pagecreate create", function( e ){ $.mobile.checkboxradio.prototype.enhanceWithin( e.target, true ); }); @@ -6190,10 +5494,12 @@ $.widget( "mobile.button", $.mobile.widget, { theme: null, icon: null, iconpos: null, + inline: false, corners: true, shadow: true, iconshadow: true, - initSelector: "button, [type='button'], [type='submit'], [type='reset']" + initSelector: "button, [type='button'], [type='submit'], [type='reset'], [type='image']", + mini: false }, _create: function() { var $el = this.element, @@ -6201,19 +5507,14 @@ $.widget( "mobile.button", $.mobile.widget, { o = this.options, type, name, - inline = o.inline || $el.jqmData( "inline" ), - mini = o.mini || $el.jqmData( "mini" ), classes = "", $buttonPlaceholder; // if this is a link, check if it's been enhanced and, if not, use the right function - if ( $el[ 0 ].tagName === "A" ) { - if ( !$el.hasClass( "ui-btn" ) ) { - $el.buttonMarkup(); - } - - return; - } + if( $el[ 0 ].tagName === "A" ) { + !$el.hasClass( "ui-btn" ) && $el.buttonMarkup(); + return; + } // get the inherited theme // TODO centralize for all widgets @@ -6222,35 +5523,36 @@ $.widget( "mobile.button", $.mobile.widget, { } // TODO: Post 1.1--once we have time to test thoroughly--any classes manually applied to the original element should be carried over to the enhanced element, with an `-enhanced` suffix. See https://github.com/jquery/jquery-mobile/issues/3577 - /* if ( $el[0].className.length ) { + /* if( $el[0].className.length ) { classes = $el[0].className; } */ - if ( !!~$el[0].className.indexOf( "ui-btn-left" ) ) { + if( !!~$el[0].className.indexOf( "ui-btn-left" ) ) { classes = "ui-btn-left"; } - if ( !!~$el[0].className.indexOf( "ui-btn-right" ) ) { + if( !!~$el[0].className.indexOf( "ui-btn-right" ) ) { classes = "ui-btn-right"; } - if ( $el.attr( "type" ) === "submit" || $el.attr( "type" ) === "reset" ) { + if( $el.attr( "type" ) === "submit" || $el.attr( "type" ) === "reset" ) { classes ? classes += " ui-submit" : classes = "ui-submit"; } + $( "label[for='" + $el.attr( "id" ) + "']" ).addClass( "ui-submit" ); // Add ARIA role this.button = $( "
" ) - [ $el.html() ? "html" : "text" ]( $el.html() || $el.val() ) + .text( $el.text() || $el.val() ) .insertBefore( $el ) .buttonMarkup({ theme: o.theme, icon: o.icon, iconpos: o.iconpos, - inline: inline, + inline: o.inline, corners: o.corners, shadow: o.shadow, iconshadow: o.iconshadow, - mini: mini + mini: o.mini }) .addClass( classes ) .append( $el.addClass( "ui-btn-hidden" ) ); @@ -6263,7 +5565,7 @@ $.widget( "mobile.button", $.mobile.widget, { if ( type !== "button" && type !== "reset" && name ) { $el.bind( "vclick", function() { // Add hidden input if it doesn't already exist. - if ( $buttonPlaceholder === undefined ) { + if( $buttonPlaceholder === undefined ) { $buttonPlaceholder = $( "", { type: "hidden", name: $el.attr( "name" ), @@ -6271,7 +5573,7 @@ $.widget( "mobile.button", $.mobile.widget, { }).insertBefore( $el ); // Bind to doc to remove after submit handling - $( document ).one( "submit", function() { + $( document ).one("submit", function(){ $buttonPlaceholder.remove(); // reset the local var so that the hidden input @@ -6282,15 +5584,15 @@ $.widget( "mobile.button", $.mobile.widget, { }); } - $el.bind({ - focus: function() { - $button.addClass( $.mobile.focusClass ); - }, + $el.bind({ + focus: function() { + $button.addClass( $.mobile.focusClass ); + }, - blur: function() { - $button.removeClass( $.mobile.focusClass ); - } - }); + blur: function() { + $button.removeClass( $.mobile.focusClass ); + } + }); this.refresh(); }, @@ -6317,12 +5619,12 @@ $.widget( "mobile.button", $.mobile.widget, { } // Grab the button's text element from its implementation-independent data item - $( this.button.data( 'buttonElements' ).text )[ $el.html() ? "html" : "text" ]( $el.html() || $el.val() ); + $( this.button.data( 'buttonElements' ).text ).text( $el.text() || $el.val() ); } }); //auto self-init widgets -$( document ).bind( "pagecreate create", function( e ) { +$( document ).bind( "pagecreate create", function( e ){ $.mobile.button.prototype.enhanceWithin( e.target, true ); }); @@ -6346,30 +5648,21 @@ $.fn.controlgroup = function( options ) { excludeInvisible: true, mini: $el.jqmData( "mini" ) }, options ), - grouplegend = $el.children( "legend" ), - groupheading = $el.children( ".ui-controlgroup-label" ), - groupcontrols = $el.children( ".ui-controlgroup-controls" ), - flCorners = o.direction === "horizontal" ? [ "ui-corner-left", "ui-corner-right" ] : [ "ui-corner-top", "ui-corner-bottom" ], + groupheading = $el.children( "legend" ), + flCorners = o.direction == "horizontal" ? [ "ui-corner-left", "ui-corner-right" ] : [ "ui-corner-top", "ui-corner-bottom" ], type = $el.find( "input" ).first().attr( "type" ); - - // First unwrap the controls if the controlgroup was already enhanced - if ( groupcontrols.length ) { - groupcontrols.contents().unwrap(); - } + $el.wrapInner( "
" ); - if ( grouplegend.length ) { - // Replace legend with more stylable replacement div - $( "
" + grouplegend.html() + "
" ).insertBefore( $el.children( 0 ) ); - grouplegend.remove(); - } else if ( groupheading.length ) { - // Just move the heading if the controlgroup was already enhanced - $el.prepend( groupheading ); + // Replace legend with more stylable replacement div + if ( groupheading.length ) { + $( "
" + groupheading.html() + "
" ).insertBefore( $el.children(0) ); + groupheading.remove(); } $el.addClass( "ui-corner-all ui-controlgroup ui-controlgroup-" + o.direction ); - flipClasses( $el.find( ".ui-btn" + ( o.excludeInvisible ? ":visible" : "" ) ).not( '.ui-slider-handle' ), flCorners ); + flipClasses( $el.find( ".ui-btn" + ( o.excludeInvisible ? ":visible" : "" ) ).not('.ui-slider-handle'), flCorners ); flipClasses( $el.find( ".ui-btn-inner" ), flCorners ); if ( o.shadow ) { @@ -6389,7 +5682,7 @@ $.fn.controlgroup = function( options ) { (function( $, undefined ) { -$( document ).bind( "pagecreate create", function( e ) { +$( document ).bind( "pagecreate create", function( e ){ //links within content areas, tests included with page $( e.target ) @@ -6403,843 +5696,34 @@ $( document ).bind( "pagecreate create", function( e ) { })( jQuery ); -(function( $, undefined ) { - - function fitSegmentInsideSegment( winSize, segSize, offset, desired ) { - var ret = desired; - - if ( winSize < segSize ) { - // Center segment if it's bigger than the window - ret = offset + ( winSize - segSize ) / 2; - } else { - // Otherwise center it at the desired coordinate while keeping it completely inside the window - ret = Math.min( Math.max( offset, desired - segSize / 2 ), offset + winSize - segSize ); - } - - return ret; - } - - function windowCoords() { - var $win = $( window ); - - return { - x: $win.scrollLeft(), - y: $win.scrollTop(), - cx: ( window.innerWidth || $win.width() ), - cy: ( window.innerHeight || $win.height() ) - }; - } - - $.widget( "mobile.popup", $.mobile.widget, { - options: { - theme: null, - overlayTheme: null, - shadow: true, - corners: true, - transition: "none", - positionTo: "origin", - tolerance: null, - initSelector: ":jqmData(role='popup')", - closeLinkSelector: "a:jqmData(rel='back')", - closeLinkEvents: "click.popup", - navigateEvents: "navigate.popup", - closeEvents: "navigate.popup pagebeforechange.popup", - - // NOTE Windows Phone 7 has a scroll position caching issue that - // requires us to disable popup history management by default - // https://github.com/jquery/jquery-mobile/issues/4784 - // - // NOTE this option is modified in _create! - history: !$.mobile.browser.ie - }, - - _eatEventAndClose: function( e ) { - e.preventDefault(); - e.stopImmediatePropagation(); - this.close(); - return false; - }, - - // Make sure the screen size is increased beyond the page height if the popup's causes the document to increase in height - _resizeScreen: function() { - var popupHeight = this._ui.container.outerHeight( true ); - - this._ui.screen.removeAttr( "style" ); - if ( popupHeight > this._ui.screen.height() ) { - this._ui.screen.height( popupHeight ); - } - }, - - _handleWindowKeyUp: function( e ) { - if ( this._isOpen && e.keyCode === $.mobile.keyCode.ESCAPE ) { - return this._eatEventAndClose( e ); - } - }, - - _maybeRefreshTimeout: function() { - var winCoords = windowCoords(); - - if ( this._resizeData ) { - if ( winCoords.x === this._resizeData.winCoords.x && - winCoords.y === this._resizeData.winCoords.y && - winCoords.cx === this._resizeData.winCoords.cx && - winCoords.cy === this._resizeData.winCoords.cy ) { - // timeout not refreshed - return false; - } else { - // clear existing timeout - it will be refreshed below - clearTimeout( this._resizeData.timeoutId ); - } - } - - this._resizeData = { - timeoutId: setTimeout( $.proxy( this, "_resizeTimeout" ), 200 ), - winCoords: winCoords - }; - - return true; - }, - - _resizeTimeout: function() { - if ( !this._maybeRefreshTimeout() ) { - // effectively rapid-open the popup while leaving the screen intact - this._trigger( "beforeposition" ); - this._ui.container - .removeClass( "ui-selectmenu-hidden" ) - .offset( this._placementCoords( this._desiredCoords( undefined, undefined, "window" ) ) ); - - this._resizeScreen(); - this._resizeData = null; - this._orientationchangeInProgress = false; - } - }, - - _handleWindowResize: function( e ) { - if ( this._isOpen ) { - this._maybeRefreshTimeout(); - } - }, - - _handleWindowOrientationchange: function( e ) { - - if ( !this._orientationchangeInProgress ) { - // effectively rapid-close the popup while leaving the screen intact - this._ui.container - .addClass( "ui-selectmenu-hidden" ) - .removeAttr( "style" ); - - this._orientationchangeInProgress = true; - } - }, - - _create: function() { - var ui = { - screen: $( "
" ), - placeholder: $( "
" ), - container: $( "
" ) - }, - thisPage = this.element.closest( ".ui-page" ), - myId = this.element.attr( "id" ), - self = this; - - // We need to adjust the history option to be false if there's no AJAX nav. - // We can't do it in the option declarations because those are run before - // it is determined whether there shall be AJAX nav. - this.options.history = this.options.history && $.mobile.ajaxEnabled && $.mobile.hashListeningEnabled; - - if ( thisPage.length === 0 ) { - thisPage = $( "body" ); - } - - // define the container for navigation event bindings - // TODO this would be nice at the the mobile widget level - this.options.container = this.options.container || $.mobile.pageContainer; - - // Apply the proto - thisPage.append( ui.screen ); - ui.container.insertAfter( ui.screen ); - // Leave a placeholder where the element used to be - ui.placeholder.insertAfter( this.element ); - if ( myId ) { - ui.screen.attr( "id", myId + "-screen" ); - ui.container.attr( "id", myId + "-popup" ); - ui.placeholder.html( "" ); - } - ui.container.append( this.element ); - - // Add class to popup element - this.element.addClass( "ui-popup" ); - - // Define instance variables - $.extend( this, { - _page: thisPage, - _ui: ui, - _fallbackTransition: "", - _currentTransition: false, - _prereqs: null, - _isOpen: false, - _tolerance: null, - _resizeData: null, - _orientationchangeInProgress: false, - _globalHandlers: [ - { - src: $( window ), - handler: { - orientationchange: $.proxy( this, "_handleWindowOrientationchange" ), - resize: $.proxy( this, "_handleWindowResize" ), - keyup: $.proxy( this, "_handleWindowKeyUp" ) - } - } - ] - }); - - $.each( this.options, function( key, value ) { - // Cause initial options to be applied by their handler by temporarily setting the option to undefined - // - the handler then sets it to the initial value - self.options[ key ] = undefined; - self._setOption( key, value, true ); - }); - - ui.screen.bind( "vclick", $.proxy( this, "_eatEventAndClose" ) ); - - $.each( this._globalHandlers, function( idx, value ) { - value.src.bind( value.handler ); - }); - }, - - _applyTheme: function( dst, theme, prefix ) { - var classes = ( dst.attr( "class" ) || "").split( " " ), - alreadyAdded = true, - currentTheme = null, - matches, - themeStr = String( theme ); - - while ( classes.length > 0 ) { - currentTheme = classes.pop(); - matches = ( new RegExp( "^ui-" + prefix + "-([a-z])$" ) ).exec( currentTheme ); - if ( matches && matches.length > 1 ) { - currentTheme = matches[ 1 ]; - break; - } else { - currentTheme = null; - } - } - - if ( theme !== currentTheme ) { - dst.removeClass( "ui-" + prefix + "-" + currentTheme ); - if ( ! ( theme === null || theme === "none" ) ) { - dst.addClass( "ui-" + prefix + "-" + themeStr ); - } - } - }, - - _setTheme: function( value ) { - this._applyTheme( this.element, value, "body" ); - }, - - _setOverlayTheme: function( value ) { - this._applyTheme( this._ui.screen, value, "overlay" ); - - if ( this._isOpen ) { - this._ui.screen.addClass( "in" ); - } - }, - - _setShadow: function( value ) { - this.element.toggleClass( "ui-overlay-shadow", value ); - }, - - _setCorners: function( value ) { - this.element.toggleClass( "ui-corner-all", value ); - }, - - _applyTransition: function( value ) { - this._ui.container.removeClass( this._fallbackTransition ); - if ( value && value !== "none" ) { - this._fallbackTransition = $.mobile._maybeDegradeTransition( value ); - this._ui.container.addClass( this._fallbackTransition ); - } - }, - - _setTransition: function( value ) { - if ( !this._currentTransition ) { - this._applyTransition( value ); - } - }, - - _setTolerance: function( value ) { - var tol = { t: 30, r: 15, b: 30, l: 15 }; - - if ( value ) { - var ar = String( value ).split( "," ); - - $.each( ar, function( idx, val ) { ar[ idx ] = parseInt( val, 10 ); } ); - - switch( ar.length ) { - // All values are to be the same - case 1: - if ( !isNaN( ar[ 0 ] ) ) { - tol.t = tol.r = tol.b = tol.l = ar[ 0 ]; - } - break; - - // The first value denotes top/bottom tolerance, and the second value denotes left/right tolerance - case 2: - if ( !isNaN( ar[ 0 ] ) ) { - tol.t = tol.b = ar[ 0 ]; - } - if ( !isNaN( ar[ 1 ] ) ) { - tol.l = tol.r = ar[ 1 ]; - } - break; - - // The array contains values in the order top, right, bottom, left - case 4: - if ( !isNaN( ar[ 0 ] ) ) { - tol.t = ar[ 0 ]; - } - if ( !isNaN( ar[ 1 ] ) ) { - tol.r = ar[ 1 ]; - } - if ( !isNaN( ar[ 2 ] ) ) { - tol.b = ar[ 2 ]; - } - if ( !isNaN( ar[ 3 ] ) ) { - tol.l = ar[ 3 ]; - } - break; - - default: - break; - } - } - - this._tolerance = tol; - }, - - _setOption: function( key, value ) { - var exclusions, setter = "_set" + key.charAt( 0 ).toUpperCase() + key.slice( 1 ); - - if ( this[ setter ] !== undefined ) { - this[ setter ]( value ); - } - - // TODO REMOVE FOR 1.2.1 by moving them out to a default options object - exclusions = [ - "initSelector", - "closeLinkSelector", - "closeLinkEvents", - "navigateEvents", - "closeEvents", - "history", - "container" - ]; - - $.mobile.widget.prototype._setOption.apply( this, arguments ); - if ( $.inArray( key, exclusions ) === -1 ) { - // Record the option change in the options and in the DOM data-* attributes - this.element.attr( "data-" + ( $.mobile.ns || "" ) + ( key.replace( /([A-Z])/, "-$1" ).toLowerCase() ), value ); - } - }, - - // Try and center the overlay over the given coordinates - _placementCoords: function( desired ) { - // rectangle within which the popup must fit - var - winCoords = windowCoords(), - rc = { - x: this._tolerance.l, - y: winCoords.y + this._tolerance.t, - cx: winCoords.cx - this._tolerance.l - this._tolerance.r, - cy: winCoords.cy - this._tolerance.t - this._tolerance.b - }, - menuSize, ret; - - // Clamp the width of the menu before grabbing its size - this._ui.container.css( "max-width", rc.cx ); - menuSize = { - cx: this._ui.container.outerWidth( true ), - cy: this._ui.container.outerHeight( true ) - }; - - // Center the menu over the desired coordinates, while not going outside - // the window tolerances. This will center wrt. the window if the popup is too large. - ret = { - x: fitSegmentInsideSegment( rc.cx, menuSize.cx, rc.x, desired.x ), - y: fitSegmentInsideSegment( rc.cy, menuSize.cy, rc.y, desired.y ) - }; - - // Make sure the top of the menu is visible - ret.y = Math.max( 0, ret.y ); - - // If the height of the menu is smaller than the height of the document - // align the bottom with the bottom of the document - - // fix for $( document ).height() bug in core 1.7.2. - var docEl = document.documentElement, docBody = document.body, - docHeight = Math.max( docEl.clientHeight, docBody.scrollHeight, docBody.offsetHeight, docEl.scrollHeight, docEl.offsetHeight ); - - ret.y -= Math.min( ret.y, Math.max( 0, ret.y + menuSize.cy - docHeight ) ); - - return { left: ret.x, top: ret.y }; - }, - - _createPrereqs: function( screenPrereq, containerPrereq, whenDone ) { - var self = this, prereqs; - - // It is important to maintain both the local variable prereqs and self._prereqs. The local variable remains in - // the closure of the functions which call the callbacks passed in. The comparison between the local variable and - // self._prereqs is necessary, because once a function has been passed to .animationComplete() it will be called - // next time an animation completes, even if that's not the animation whose end the function was supposed to catch - // (for example, if an abort happens during the opening animation, the .animationComplete handler is not called for - // that animation anymore, but the handler remains attached, so it is called the next time the popup is opened - // - making it stale. Comparing the local variable prereqs to the widget-level variable self._prereqs ensures that - // callbacks triggered by a stale .animationComplete will be ignored. - - prereqs = { - screen: $.Deferred(), - container: $.Deferred() - }; - - prereqs.screen.then( function() { - if ( prereqs === self._prereqs ) { - screenPrereq(); - } - }); - - prereqs.container.then( function() { - if ( prereqs === self._prereqs ) { - containerPrereq(); - } - }); - - $.when( prereqs.screen, prereqs.container ).done( function() { - if ( prereqs === self._prereqs ) { - self._prereqs = null; - whenDone(); - } - }); - - self._prereqs = prereqs; - }, - - _animate: function( args ) { - // NOTE before removing the default animation of the screen - // this had an animate callback that would relove the deferred - // now the deferred is resolved immediately - // TODO remove the dependency on the screen deferred - this._ui.screen - .removeClass( args.classToRemove ) - .addClass( args.screenClassToAdd ); - - args.prereqs.screen.resolve(); - - if ( args.transition && args.transition !== "none" ) { - if ( args.applyTransition ) { - this._applyTransition( args.transition ); - } - this._ui.container - .animationComplete( $.proxy( args.prereqs.container, "resolve" ) ) - .addClass( args.containerClassToAdd ) - .removeClass( args.classToRemove ); - } else { - args.prereqs.container.resolve(); - } - }, - - // The desired coordinates passed in will be returned untouched if no reference element can be identified via - // desiredPosition.positionTo. Nevertheless, this function ensures that its return value always contains valid - // x and y coordinates by specifying the center middle of the window if the coordinates are absent. - _desiredCoords: function( x, y, positionTo ) { - var dst = null, offset, winCoords = windowCoords(); - - // Establish which element will serve as the reference - if ( positionTo && positionTo !== "origin" ) { - if ( positionTo === "window" ) { - x = winCoords.cx / 2 + winCoords.x; - y = winCoords.cy / 2 + winCoords.y; - } else { - try { - dst = $( positionTo ); - } catch( e ) { - dst = null; - } - if ( dst ) { - dst.filter( ":visible" ); - if ( dst.length === 0 ) { - dst = null; - } - } - } - } - - // If an element was found, center over it - if ( dst ) { - offset = dst.offset(); - x = offset.left + dst.outerWidth() / 2; - y = offset.top + dst.outerHeight() / 2; - } - - // Make sure x and y are valid numbers - center over the window - if ( $.type( x ) !== "number" || isNaN( x ) ) { - x = winCoords.cx / 2 + winCoords.x; - } - if ( $.type( y ) !== "number" || isNaN( y ) ) { - y = winCoords.cy / 2 + winCoords.y; - } - - return { x: x, y: y }; - }, - - _openPrereqsComplete: function() { - var self = this; - - self._ui.container.addClass( "ui-popup-active" ); - self._isOpen = true; - self._resizeScreen(); - - // Android appears to trigger the animation complete before the popup - // is visible. Allowing the stack to unwind before applying focus prevents - // the "blue flash" of element focus in android 4.0 - setTimeout(function(){ - self._ui.container.attr( "tabindex", "0" ).focus(); - self._trigger( "afteropen" ); - }); - }, - - _open: function( options ) { - var coords, transition, - androidBlacklist = ( function() { - var w = window, - ua = navigator.userAgent, - // Rendering engine is Webkit, and capture major version - wkmatch = ua.match( /AppleWebKit\/([0-9\.]+)/ ), - wkversion = !!wkmatch && wkmatch[ 1 ], - androidmatch = ua.match( /Android (\d+(?:\.\d+))/ ), - andversion = !!androidmatch && androidmatch[ 1 ], - chromematch = ua.indexOf( "Chrome" ) > -1; - - // Platform is Android, WebKit version is greater than 534.13 ( Android 3.2.1 ) and not Chrome. - if( androidmatch !== null && andversion === "4.0" && wkversion && wkversion > 534.13 && !chromematch ) { - return true; - } - return false; - }()); - - // Make sure options is defined - options = ( options || {} ); - - // Copy out the transition, because we may be overwriting it later and we don't want to pass that change back to the caller - transition = options.transition || this.options.transition; - - // Give applications a chance to modify the contents of the container before it appears - this._trigger( "beforeposition" ); - - coords = this._placementCoords( this._desiredCoords( options.x, options.y, options.positionTo || this.options.positionTo || "origin" ) ); - - // Count down to triggering "popupafteropen" - we have two prerequisites: - // 1. The popup window animation completes (container()) - // 2. The screen opacity animation completes (screen()) - this._createPrereqs( - $.noop, - $.noop, - $.proxy( this, "_openPrereqsComplete" ) ); - - if ( transition ) { - this._currentTransition = transition; - this._applyTransition( transition ); - } else { - transition = this.options.transition; - } - - if ( !this.options.theme ) { - this._setTheme( this._page.jqmData( "theme" ) || $.mobile.getInheritedTheme( this._page, "c" ) ); - } - - this._ui.screen.removeClass( "ui-screen-hidden" ); - - this._ui.container - .removeClass( "ui-selectmenu-hidden" ) - .offset( coords ); - - if ( this.options.overlayTheme && androidBlacklist ) { - /* TODO: - The native browser on Android 4.0.X ("Ice Cream Sandwich") suffers from an issue where the popup overlay appears to be z-indexed - above the popup itself when certain other styles exist on the same page -- namely, any element set to `position: fixed` and certain - types of input. These issues are reminiscent of previously uncovered bugs in older versions of Android's native browser: - https://github.com/scottjehl/Device-Bugs/issues/3 - - This fix closes the following bugs ( I use "closes" with reluctance, and stress that this issue should be revisited as soon as possible ): - - https://github.com/jquery/jquery-mobile/issues/4816 - https://github.com/jquery/jquery-mobile/issues/4844 - https://github.com/jquery/jquery-mobile/issues/4874 - */ - - // TODO sort out why this._page isn't working - this.element.closest( ".ui-page" ).addClass( "ui-popup-open" ); - } - this._animate({ - additionalCondition: true, - transition: transition, - classToRemove: "", - screenClassToAdd: "in", - containerClassToAdd: "in", - applyTransition: false, - prereqs: this._prereqs - }); - }, - - _closePrereqScreen: function() { - this._ui.screen - .removeClass( "out" ) - .addClass( "ui-screen-hidden" ); - }, - - _closePrereqContainer: function() { - this._ui.container - .removeClass( "reverse out" ) - .addClass( "ui-selectmenu-hidden" ) - .removeAttr( "style" ); - }, - - _closePrereqsDone: function() { - var self = this, opts = self.options; - - self._ui.container.removeAttr( "tabindex" ); - - // remove nav bindings if they are still present - opts.container.unbind( opts.closeEvents ); - - // unbind click handlers added when history is disabled - self.element.undelegate( opts.closeLinkSelector, opts.closeLinkEvents ); - - // remove the global mutex for popups - $.mobile.popup.active = undefined; - - // alert users that the popup is closed - self._trigger( "afterclose" ); - }, - - _close: function() { - this._ui.container.removeClass( "ui-popup-active" ); - this._page.removeClass( "ui-popup-open" ); - - this._isOpen = false; - - // Count down to triggering "popupafterclose" - we have two prerequisites: - // 1. The popup window reverse animation completes (container()) - // 2. The screen opacity animation completes (screen()) - this._createPrereqs( - $.proxy( this, "_closePrereqScreen" ), - $.proxy( this, "_closePrereqContainer" ), - $.proxy( this, "_closePrereqsDone" ) ); - - this._animate( { - additionalCondition: this._ui.screen.hasClass( "in" ), - transition: ( this._currentTransition || this.options.transition ), - classToRemove: "in", - screenClassToAdd: "out", - containerClassToAdd: "reverse out", - applyTransition: true, - prereqs: this._prereqs - }); - }, - - _destroy: function() { - var self = this; - - // hide and remove bindings - self._close(); - - // Put the element back to where the placeholder was and remove the "ui-popup" class - self._setTheme( "none" ); - self.element - .insertAfter( self._ui.placeholder ) - .removeClass( "ui-popup ui-overlay-shadow ui-corner-all" ); - self._ui.screen.remove(); - self._ui.container.remove(); - self._ui.placeholder.remove(); - - // Unbind handlers that were bound to elements outside self.element (the window, in self case) - $.each( self._globalHandlers, function( idx, oneSrc ) { - $.each( oneSrc.handler, function( eventType, handler ) { - oneSrc.src.unbind( eventType, handler ); - }); - }); - }, - - // any navigation event after a popup is opened should close the popup - // NOTE the pagebeforechange is bound to catch navigation events that don't - // alter the url (eg, dialogs from popups) - _bindContainerClose: function() { - var self = this; - - self.options.container - .one( self.options.closeEvents, $.proxy( self._close, self )); - }, - - // TODO no clear deliniation of what should be here and - // what should be in _open. Seems to be "visual" vs "history" for now - open: function( options ) { - var self = this, opts = this.options, url, hashkey, activePage, currentIsDialog, hasHash, urlHistory; - - // make sure open is idempotent - if( $.mobile.popup.active ) { - return; - } - - // set the global popup mutex - $.mobile.popup.active = this; - - // if history alteration is disabled close on navigate events - // and leave the url as is - if( !( opts.history ) ) { - self._open( options ); - self._bindContainerClose(); - - // When histoy is disabled we have to grab the data-rel - // back link clicks so we can close the popup instead of - // relying on history to do it for us - self.element - .delegate( opts.closeLinkSelector, opts.closeLinkEvents, function( e ) { - self._close(); - - // NOTE prevent the browser and navigation handlers from - // working with the link's rel=back. This may cause - // issues for developers expecting the event to bubble - return false; - }); - - return; - } - - // cache some values for min/readability - hashkey = $.mobile.dialogHashKey; - activePage = $.mobile.activePage; - currentIsDialog = activePage.is( ".ui-dialog" ); - url = $.mobile.urlHistory.getActive().url; - hasHash = ( url.indexOf( hashkey ) > -1 ) && !currentIsDialog; - urlHistory = $.mobile.urlHistory; - - if ( hasHash ) { - self._open( options ); - self._bindContainerClose(); - return; - } - - // if the current url has no dialog hash key proceed as normal - // otherwise, if the page is a dialog simply tack on the hash key - if ( url.indexOf( hashkey ) === -1 && !currentIsDialog ){ - url = url + hashkey; - } else { - url = $.mobile.path.parseLocation().hash + hashkey; - } - - // Tack on an extra hashkey if this is the first page and we've just reconstructed the initial hash - if ( urlHistory.activeIndex === 0 && url === urlHistory.initialDst ) { - url += hashkey; - } - - // swallow the the initial navigation event, and bind for the next - opts.container.one( opts.navigateEvents, function( e ) { - e.preventDefault(); - self._open( options ); - self._bindContainerClose(); - }); - - urlHistory.ignoreNextHashChange = currentIsDialog; - - // Gotta love methods with 1mm args :( - urlHistory.addNew( url, undefined, undefined, undefined, "dialog" ); - - // set the new url with (or without) the new dialog hash key - $.mobile.path.set( url ); - }, - - close: function() { - // make sure close is idempotent - if( !$.mobile.popup.active ){ - return; - } - - if( this.options.history ) { - $.mobile.back(); - } else { - this._close(); - } - } - }); - - - // TODO this can be moved inside the widget - $.mobile.popup.handleLink = function( $link ) { - var closestPage = $link.closest( ":jqmData(role='page')" ), - scope = ( ( closestPage.length === 0 ) ? $( "body" ) : closestPage ), - // NOTE make sure to get only the hash, ie7 (wp7) return the absolute href - // in this case ruining the element selection - popup = $( $.mobile.path.parseUrl($link.attr( "href" )).hash, scope[0] ), - offset; - - if ( popup.data( "popup" ) ) { - offset = $link.offset(); - popup.popup( "open", { - x: offset.left + $link.outerWidth() / 2, - y: offset.top + $link.outerHeight() / 2, - transition: $link.jqmData( "transition" ), - positionTo: $link.jqmData( "position-to" ), - link: $link - }); - } - - //remove after delay - setTimeout( function() { - $link.removeClass( $.mobile.activeBtnClass ); - }, 300 ); - }; - - // TODO move inside _create - $( document ).bind( "pagebeforechange", function( e, data ) { - if ( data.options.role === "popup" ) { - $.mobile.popup.handleLink( data.options.link ); - e.preventDefault(); - } - }); - - $( document ).bind( "pagecreate create", function( e ) { - $.mobile.popup.prototype.enhanceWithin( e.target, true ); - }); - -})( jQuery ); - -(function( $ ) { +( function( $ ) { var meta = $( "meta[name=viewport]" ), - initialContent = meta.attr( "content" ), - disabledZoom = initialContent + ",maximum-scale=1, user-scalable=no", - enabledZoom = initialContent + ",maximum-scale=10, user-scalable=yes", + initialContent = meta.attr( "content" ), + disabledZoom = initialContent + ",maximum-scale=1, user-scalable=no", + enabledZoom = initialContent + ",maximum-scale=10, user-scalable=yes", disabledInitially = /(user-scalable[\s]*=[\s]*no)|(maximum-scale[\s]*=[\s]*1)[$,\s]/.test( initialContent ); - + $.mobile.zoom = $.extend( {}, { enabled: !disabledInitially, locked: false, disable: function( lock ) { - if ( !disabledInitially && !$.mobile.zoom.locked ) { - meta.attr( "content", disabledZoom ); - $.mobile.zoom.enabled = false; + if( !disabledInitially && !$.mobile.zoom.locked ){ + meta.attr( "content", disabledZoom ); + $.mobile.zoom.enabled = false; $.mobile.zoom.locked = lock || false; } }, enable: function( unlock ) { - if ( !disabledInitially && ( !$.mobile.zoom.locked || unlock === true ) ) { - meta.attr( "content", enabledZoom ); - $.mobile.zoom.enabled = true; + if( !disabledInitially && ( !$.mobile.zoom.locked || unlock === true ) ){ + meta.attr( "content", enabledZoom ); + $.mobile.zoom.enabled = true; $.mobile.zoom.locked = false; } }, restore: function() { - if ( !disabledInitially ) { - meta.attr( "content", initialContent ); - $.mobile.zoom.enabled = true; + if( !disabledInitially ){ + meta.attr( "content", initialContent ); + $.mobile.zoom.enabled = true; } } }); @@ -7254,27 +5738,19 @@ $.widget( "mobile.textinput", $.mobile.widget, { // This option defaults to true on iOS devices. preventFocusZoom: /iPhone|iPad|iPod/.test( navigator.platform ) && navigator.userAgent.indexOf( "AppleWebKit" ) > -1, initSelector: "input[type='text'], input[type='search'], :jqmData(type='search'), input[type='number'], :jqmData(type='number'), input[type='password'], input[type='email'], input[type='url'], input[type='tel'], textarea, input[type='time'], input[type='date'], input[type='month'], input[type='week'], input[type='datetime'], input[type='datetime-local'], input[type='color'], input:not([type])", - clearSearchButtonText: "clear text", - disabled: false + clearSearchButtonText: "clear text" }, _create: function() { - var self = this, - input = this.element, + var input = this.element, o = this.options, theme = o.theme || $.mobile.getInheritedTheme( this.element, "c" ), themeclass = " ui-body-" + theme, - mini = input.jqmData( "mini" ) === true, + mini = input.jqmData("mini") == true, miniclass = mini ? " ui-mini" : "", focusedEl, clearbtn; - function toggleClear() { - setTimeout( function() { - clearbtn.toggleClass( "ui-input-clear-hidden", !input.val() ); - }, 0 ); - } - $( "label[for='" + input.attr( "id" ) + "']" ).addClass( "ui-input-text" ); focusedEl = input.addClass("ui-input-text ui-body-"+ theme ); @@ -7316,9 +5792,15 @@ $.widget( "mobile.textinput", $.mobile.widget, { mini: mini }); + function toggleClear() { + setTimeout(function() { + clearbtn.toggleClass( "ui-input-clear-hidden", !input.val() ); + }, 0); + } + toggleClear(); - input.bind( 'paste cut keyup focus change blur', toggleClear ); + input.bind('paste cut keyup focus change blur', toggleClear); } else { input.addClass( "ui-corner-all ui-shadow-inset" + themeclass + miniclass ); @@ -7327,17 +5809,17 @@ $.widget( "mobile.textinput", $.mobile.widget, { input.focus(function() { focusedEl.addClass( $.mobile.focusClass ); }) - .blur(function() { + .blur(function(){ focusedEl.removeClass( $.mobile.focusClass ); }) // In many situations, iOS will zoom into the select upon tap, this prevents that from happening .bind( "focus", function() { - if ( o.preventFocusZoom ) { + if( o.preventFocusZoom ){ $.mobile.zoom.disable( true ); } }) .bind( "blur", function() { - if ( o.preventFocusZoom ) { + if( o.preventFocusZoom ){ $.mobile.zoom.enable( true ); } }); @@ -7346,65 +5828,47 @@ $.widget( "mobile.textinput", $.mobile.widget, { if ( input.is( "textarea" ) ) { var extraLineHeight = 15, keyupTimeoutBuffer = 100, + keyup = function() { + var scrollHeight = input[ 0 ].scrollHeight, + clientHeight = input[ 0 ].clientHeight; + + if ( clientHeight < scrollHeight ) { + input.height(scrollHeight + extraLineHeight); + } + }, keyupTimeout; - this._keyup = function() { - var scrollHeight = input[ 0 ].scrollHeight, - clientHeight = input[ 0 ].clientHeight; - - if ( clientHeight < scrollHeight ) { - input.height(scrollHeight + extraLineHeight); - } - }; - input.keyup(function() { clearTimeout( keyupTimeout ); - keyupTimeout = setTimeout( self._keyup, keyupTimeoutBuffer ); + keyupTimeout = setTimeout( keyup, keyupTimeoutBuffer ); }); // binding to pagechange here ensures that for pages loaded via // ajax the height is recalculated without user input - this._on( $(document), {"pagechange": "_keyup" }); + $( document ).one( "pagechange", keyup ); // Issue 509: the browser is not providing scrollHeight properly until the styles load if ( $.trim( input.val() ) ) { // bind to the window load to make sure the height is calculated based on BOTH // the DOM and CSS - this._on( $(window), {"load": "_keyup"}); + $( window ).load( keyup ); } } - if ( input.attr( "disabled" ) ) { - this.disable(); - } }, - disable: function() { - var $el; - if ( this.element.attr( "disabled", true ).is( "[type='search'], :jqmData(type='search')" ) ) { - $el = this.element.parent(); - } else { - $el = this.element; - } - $el.addClass( "ui-disabled" ); - return this._setOption( "disabled", true ); + disable: function(){ + ( this.element.attr( "disabled", true ).is( "[type='search'],:jqmData(type='search')" ) ? + this.element.parent() : this.element ).addClass( "ui-disabled" ); }, - enable: function() { - var $el; - - // TODO using more than one line of code is acceptable ;) - if ( this.element.attr( "disabled", false ).is( "[type='search'], :jqmData(type='search')" ) ) { - $el = this.element.parent(); - } else { - $el = this.element; - } - $el.removeClass( "ui-disabled" ); - return this._setOption( "disabled", false ); + enable: function(){ + ( this.element.attr( "disabled", false).is( "[type='search'],:jqmData(type='search')" ) ? + this.element.parent() : this.element ).removeClass( "ui-disabled" ); } }); //auto self-init widgets -$( document ).bind( "pagecreate create", function( e ) { +$( document ).bind( "pagecreate create", function( e ){ $.mobile.textinput.prototype.enhanceWithin( e.target, true ); }); @@ -7415,12 +5879,9 @@ $( document ).bind( "pagecreate create", function( e ) { $.mobile.listview.prototype.options.filter = false; $.mobile.listview.prototype.options.filterPlaceholder = "Filter items..."; $.mobile.listview.prototype.options.filterTheme = "c"; -// TODO rename callback/deprecate and default to the item itself as the first argument -var defaultFilterCallback = function( text, searchValue, item ) { - return text.toString().toLowerCase().indexOf( searchValue ) === -1; - }; - -$.mobile.listview.prototype.options.filterCallback = defaultFilterCallback; +$.mobile.listview.prototype.options.filterCallback = function( text, searchValue ){ + return text.toLowerCase().indexOf( searchValue ) === -1; +}; $( document ).delegate( ":jqmData(role='listview')", "listviewcreate", function() { @@ -7442,23 +5903,19 @@ $( document ).delegate( ":jqmData(role='listview')", "listviewcreate", function( .jqmData( "lastval", "" ) .bind( "keyup change", function() { - var $this = $( this ), + var $this = $(this), val = this.value.toLowerCase(), listItems = null, lastval = $this.jqmData( "lastval" ) + "", childItems = false, itemtext = "", - item, - // Check if a custom filter callback applies - isCustomFilterCallback = listview.options.filterCallback !== defaultFilterCallback; - - listview._trigger( "beforefilter", "beforefilter", { input: this } ); + item; // Change val as lastval for next execution $this.jqmData( "lastval" , val ); - if ( isCustomFilterCallback || val.length < lastval.length || val.indexOf( lastval ) !== 0 ) { + if ( val.length < lastval.length || val.indexOf(lastval) !== 0 ) { - // Custom filter callback applies or removed chars or pasted something totally different, check all items + // Removed chars or pasted something totally different, check all items listItems = list.children(); } else { @@ -7482,7 +5939,7 @@ $( document ).delegate( ":jqmData(role='listview')", "listviewcreate", function( // New bucket! childItems = false; - } else if ( listview.options.filterCallback( itemtext, val, item ) ) { + } else if ( listview.options.filterCallback( itemtext, val ) ) { //mark to be hidden item.toggleClass( "ui-filter-hidequeue" , true ); @@ -7526,11 +5983,9 @@ $( document ).delegate( ":jqmData(role='listview')", "listviewcreate", function( })( jQuery ); -(function( $, undefined ) { +( function( $, undefined ) { $.widget( "mobile.slider", $.mobile.widget, { - widgetEventPrefix: "slide", - options: { theme: null, trackTheme: null, @@ -7554,7 +6009,7 @@ $.widget( "mobile.slider", $.mobile.widget, { cType = control[ 0 ].nodeName.toLowerCase(), - selectClass = ( cType === "select" ) ? "ui-slider-switch" : "", + selectClass = ( cType == "select" ) ? "ui-slider-switch" : "", controlID = control.attr( "id" ), @@ -7565,26 +6020,26 @@ $.widget( "mobile.slider", $.mobile.widget, { label = $label.attr( "id", labelID ), val = function() { - return cType === "input" ? parseFloat( control.val() ) : control[0].selectedIndex; + return cType == "input" ? parseFloat( control.val() ) : control[0].selectedIndex; }, - min = cType === "input" ? parseFloat( control.attr( "min" ) ) : 0, + min = cType == "input" ? parseFloat( control.attr( "min" ) ) : 0, - max = cType === "input" ? parseFloat( control.attr( "max" ) ) : control.find( "option" ).length-1, + max = cType == "input" ? parseFloat( control.attr( "max" ) ) : control.find( "option" ).length-1, step = window.parseFloat( control.attr( "step" ) || 1 ), - inlineClass = ( this.options.inline || control.jqmData( "inline" ) === true ) ? " ui-slider-inline" : "", + inlineClass = ( this.options.inline || control.jqmData("inline") == true ) ? " ui-slider-inline" : "", - miniClass = ( this.options.mini || control.jqmData( "mini" ) ) ? " ui-slider-mini" : "", + miniClass = ( this.options.mini || control.jqmData("mini") ) ? " ui-slider-mini" : "", - domHandle = document.createElement( 'a' ), + domHandle = document.createElement('a'), handle = $( domHandle ), - domSlider = document.createElement( 'div' ), + domSlider = document.createElement('div'), slider = $( domSlider ), - valuebg = control.jqmData( "highlight" ) && cType !== "select" ? (function() { + valuebg = control.jqmData("highlight") && cType != "select" ? (function() { var bg = document.createElement('div'); bg.className = 'ui-slider-bg ' + $.mobile.activeBtnClass + ' ui-btn-corner-all'; return $( bg ).prependTo( slider ); @@ -7592,13 +6047,11 @@ $.widget( "mobile.slider", $.mobile.widget, { options; - this._type = cType; - - domHandle.setAttribute( 'href', "#" ); + domHandle.setAttribute( 'href', "#" ); domSlider.setAttribute('role','application'); - domSlider.className = ['ui-slider ',selectClass," ui-btn-down-",trackTheme,' ui-btn-corner-all', inlineClass, miniClass].join( "" ); + domSlider.className = ['ui-slider ',selectClass," ui-btn-down-",trackTheme,' ui-btn-corner-all', inlineClass, miniClass].join(""); domHandle.className = 'ui-slider-handle'; - domSlider.appendChild( domHandle ); + domSlider.appendChild(domHandle); handle.buttonMarkup({ corners: true, theme: theme, shadow: true }) .attr({ @@ -7621,15 +6074,15 @@ $.widget( "mobile.slider", $.mobile.widget, { mouseMoved: false }); - if ( cType === "select" ) { + if ( cType == "select" ) { var wrapper = document.createElement('div'); wrapper.className = 'ui-slider-inneroffset'; - for ( var j = 0,length = domSlider.childNodes.length;j < length;j++ ) { - wrapper.appendChild( domSlider.childNodes[j] ); + for(var j = 0,length = domSlider.childNodes.length;j < length;j++){ + wrapper.appendChild(domSlider.childNodes[j]); } - domSlider.appendChild( wrapper ); + domSlider.appendChild(wrapper); // slider.wrapInner( "
" ); @@ -7638,15 +6091,15 @@ $.widget( "mobile.slider", $.mobile.widget, { options = control.find( "option" ); - for ( var i = 0, optionsCount = options.length; i < optionsCount; i++ ) { - var side = !i ? "b" : "a", - sliderTheme = !i ? " ui-btn-down-" + trackTheme : ( " " + $.mobile.activeBtnClass ), - sliderLabel = document.createElement( 'div' ), - sliderImg = document.createElement( 'span' ); + for(var i = 0, optionsCount = options.length; i < optionsCount; i++){ + var side = !i ? "b":"a", + sliderTheme = !i ? " ui-btn-down-" + trackTheme :( " " + $.mobile.activeBtnClass ), + sliderLabel = document.createElement('div'), + sliderImg = document.createElement('span'); - sliderImg.className = ['ui-slider-label ui-slider-label-',side,sliderTheme," ui-btn-corner-all"].join( "" ); + sliderImg.className = ['ui-slider-label ui-slider-label-',side,sliderTheme," ui-btn-corner-all"].join(""); sliderImg.setAttribute('role','img'); - sliderImg.appendChild( document.createTextNode( options[i].innerHTML ) ); + sliderImg.appendChild(document.createTextNode(options[i].innerHTML)); $(sliderImg).prependTo( slider ); } @@ -7658,24 +6111,22 @@ $.widget( "mobile.slider", $.mobile.widget, { // monitor the input for updated values control.addClass( cType === "input" ? "ui-slider-input" : "ui-slider-switch" ) - .change(function() { + .change( function() { // if the user dragged the handle, the "change" event was triggered from inside refresh(); don't call refresh() again - if ( !self.mouseMoved ) { + if (!self.mouseMoved) { self.refresh( val(), true ); } }) - .keyup(function() { // necessary? + .keyup( function() { // necessary? self.refresh( val(), true, true ); }) - .blur(function() { + .blur( function() { self.refresh( val(), true ); }); - this._preventDocumentDrag = function( event ) { - // NOTE: we don't do this in refresh because we still want to - // support programmatic alteration of disabled inputs - if ( self.dragging && !self.options.disabled ) { - + // prevent screen drag when slider activated + $( document ).bind( "vmousemove", function( event ) { + if ( self.dragging ) { // self.mouseMoved must be updated before refresh() because it will be used in the control "change" event self.mouseMoved = true; @@ -7690,22 +6141,9 @@ $.widget( "mobile.slider", $.mobile.widget, { self.userModified = self.beforeStart !== control[0].selectedIndex; return false; } - } - - this._on( $( document ), { "vmousemove": this._preventDocumentDrag }); - - // it appears the clicking the up and down buttons in chrome on - // range/number inputs doesn't trigger a change until the field is - // blurred. Here we check thif the value has changed and refresh - control.bind( "vmouseup", $.proxy( self._checkedRefresh, self)); + }); slider.bind( "vmousedown", function( event ) { - // NOTE: we don't do this in refresh because we still want to - // support programmatic alteration of disabled inputs - if ( self.options.disabled ) { - return false; - } - self.dragging = true; self.userModified = false; self.mouseMoved = false; @@ -7715,45 +6153,49 @@ $.widget( "mobile.slider", $.mobile.widget, { } self.refresh( event ); - self._trigger( "start" ); return false; }) .bind( "vclick", false ); - this._sliderMouseUp = function() { - if ( self.dragging ) { - self.dragging = false; + slider.add( document ) + .bind( "vmouseup", function() { + if ( self.dragging ) { - if ( cType === "select") { - // make the handle move with a smooth transition - handle.addClass( "ui-slider-handle-snapping" ); + self.dragging = false; + + if ( cType === "select") { + + // make the handle move with a smooth transition + handle.addClass( "ui-slider-handle-snapping" ); + + if ( self.mouseMoved ) { + + // this is a drag, change the value only if user dragged enough + if ( self.userModified ) { + self.refresh( self.beforeStart == 0 ? 1 : 0 ); + } + else { + self.refresh( self.beforeStart ); + } - if ( self.mouseMoved ) { - // this is a drag, change the value only if user dragged enough - if ( self.userModified ) { - self.refresh( self.beforeStart === 0 ? 1 : 0 ); } else { - self.refresh( self.beforeStart ); + // this is just a click, change the value + self.refresh( self.beforeStart == 0 ? 1 : 0 ); } + } - else { - // this is just a click, change the value - self.refresh( self.beforeStart === 0 ? 1 : 0 ); - } + + self.mouseMoved = false; + + return false; } + }); - self.mouseMoved = false; - self._trigger( "stop" ); - return false; - } - }; - - this._on( slider.add( document ), { "vmouseup": this._sliderMouseUp }); slider.insertAfter( control ); // Only add focus class to toggle switch, sliders get it automatically from ui-btn - if ( cType === 'select' ) { + if( cType == 'select' ) { this.handle.bind({ focus: function() { slider.addClass( $.mobile.focusClass ); @@ -7828,36 +6270,20 @@ $.widget( "mobile.slider", $.mobile.widget, { } }); - this.refresh( undefined, undefined, true ); - }, - - _checkedRefresh: function() { - if( this.value != this._value() ){ - this.refresh( this._value() ); - } - }, - - _value: function() { - return this._type === "input" ? - parseFloat( this.element.val() ) : this.element[0].selectedIndex; + this.refresh(undefined, undefined, true); }, refresh: function( val, isfromControl, preventInputUpdate ) { - // NOTE: we don't return here because we want to support programmatic - // alteration of the input value, which should still update the slider if ( this.options.disabled || this.element.attr('disabled')) { this.disable(); } - // set the stored value for comparison later - this.value = this._value(); - var control = this.element, percent, cType = control[0].nodeName.toLowerCase(), min = cType === "input" ? parseFloat( control.attr( "min" ) ) : 0, max = cType === "input" ? parseFloat( control.attr( "max" ) ) : control.find( "option" ).length - 1, - step = ( cType === "input" && parseFloat( control.attr( "step" ) ) > 0 ) ? parseFloat( control.attr( "step" ) ) : 1; + step = (cType === "input" && parseFloat( control.attr( "step" ) ) > 0) ? parseFloat(control.attr("step")) : 1; if ( typeof val === "object" ) { var data = val, @@ -7915,10 +6341,7 @@ $.widget( "mobile.slider", $.mobile.widget, { "aria-valuetext": cType === "input" ? newval : control.find( "option" ).eq( newval ).getEncodedText(), title: cType === "input" ? newval : control.find( "option" ).eq( newval ).getEncodedText() }); - - if ( this.valuebg ) { - this.valuebg.css( "width", percent + "%" ); - } + this.valuebg && this.valuebg.css( "width", percent + "%" ); // drag the label widths if ( this._labels ) { @@ -7926,8 +6349,8 @@ $.widget( "mobile.slider", $.mobile.widget, { aPercent = percent && handlePercent + ( 100 - handlePercent ) * percent / 100, bPercent = percent === 100 ? 0 : Math.min( handlePercent + 100 - aPercent, 100 ); - this._labels.each(function() { - var ab = $( this ).is( ".ui-slider-label-a" ); + this._labels.each(function(){ + var ab = $(this).is( ".ui-slider-label-a" ); $( this ).width( ( ab ? aPercent : bPercent ) + "%" ); }); } @@ -7964,7 +6387,7 @@ $.widget( "mobile.slider", $.mobile.widget, { }); //auto self-init widgets -$( document ).bind( "pagecreate create", function( e ) { +$( document ).bind( "pagecreate create", function( e ){ $.mobile.slider.prototype.enhanceWithin( e.target, true ); }); @@ -7988,11 +6411,11 @@ $.widget( "mobile.selectmenu", $.mobile.widget, { nativeMenu: true, // This option defaults to true on iOS devices. preventFocusZoom: /iPhone|iPad|iPod/.test( navigator.platform ) && navigator.userAgent.indexOf( "AppleWebKit" ) > -1, - initSelector: "select:not( :jqmData(role='slider') )", + initSelector: "select:not(:jqmData(role='slider'))", mini: false }, - _button: function() { + _button: function(){ return $( "
" ); }, @@ -8010,25 +6433,25 @@ $.widget( "mobile.selectmenu", $.mobile.widget, { }, 40); }, - _selectOptions: function() { - return this.select.find( "option" ); - }, + _selectOptions: function() { + return this.select.find( "option" ); + }, // setup items that are generally necessary for select menu extension - _preExtension: function() { + _preExtension: function(){ var classes = ""; // TODO: Post 1.1--once we have time to test thoroughly--any classes manually applied to the original element should be carried over to the enhanced element, with an `-enhanced` suffix. See https://github.com/jquery/jquery-mobile/issues/3577 - /* if ( $el[0].className.length ) { + /* if( $el[0].className.length ) { classes = $el[0].className; } */ - if ( !!~this.element[0].className.indexOf( "ui-btn-left" ) ) { + if( !!~this.element[0].className.indexOf( "ui-btn-left" ) ) { classes = " ui-btn-left"; } - - if ( !!~this.element[0].className.indexOf( "ui-btn-right" ) ) { + + if( !!~this.element[0].className.indexOf( "ui-btn-right" ) ) { classes = " ui-btn-right"; } - + this.select = this.element.wrap( "
" ); this.selectID = this.select.attr( "id" ); this.label = $( "label[for='"+ this.selectID +"']" ).addClass( "ui-select" ); @@ -8041,7 +6464,7 @@ $.widget( "mobile.selectmenu", $.mobile.widget, { _create: function() { this._preExtension(); - // Allows for extension of the native select for custom selects and other plugins + // Allows for extension of the native select for custom selects and other plugins // see select.custom for example extension // TODO explore plugin registration this._trigger( "beforeCreate" ); @@ -8053,16 +6476,17 @@ $.widget( "mobile.selectmenu", $.mobile.widget, { options = this.options, inline = options.inline || this.select.jqmData( "inline" ), - mini = options.mini || this.select.jqmData( "mini" ), + mini = options.mini || this.select.jqmData( "mini" ), iconpos = options.icon ? ( options.iconpos || this.select.jqmData( "iconpos" ) ) : false, // IE throws an exception at options.item() function when // there is no selected item // select first in this case - selectedIndex = this.select[ 0 ].selectedIndex === -1 ? 0 : this.select[ 0 ].selectedIndex, + selectedIndex = this.select[ 0 ].selectedIndex == -1 ? 0 : this.select[ 0 ].selectedIndex, // TODO values buttonId and menuId are undefined here button = this.button + .text( $( this.select[ 0 ].options.item( selectedIndex ) ).text() ) .insertBefore( this.select ) .buttonMarkup( { theme: options.theme, @@ -8075,15 +6499,13 @@ $.widget( "mobile.selectmenu", $.mobile.widget, { mini: mini }); - this.setButtonText(); - // Opera does not properly support opacity on select elements // In Mini, it hides the element, but not its text // On the desktop,it seems to do the opposite // for these reasons, using the nativeMenu option results in a full native select in Opera if ( options.nativeMenu && window.opera && window.opera.version ) { button.addClass( "ui-select-nativeonly" ); - } + } // Add counter for multi selects if ( this.isMultiple ) { @@ -8099,7 +6521,7 @@ $.widget( "mobile.selectmenu", $.mobile.widget, { } // Events on native select - this.select.change(function() { + this.select.change( function() { self.refresh(); }); @@ -8115,12 +6537,12 @@ $.widget( "mobile.selectmenu", $.mobile.widget, { // Add active class to button self.button.addClass( $.mobile.activeBtnClass ); }) - .bind( "focus", function() { - self.button.addClass( $.mobile.focusClass ); - }) - .bind( "blur", function() { - self.button.removeClass( $.mobile.focusClass ); - }) + .bind( "focus", function() { + self.button.addClass( $.mobile.focusClass ); + }) + .bind( "blur", function() { + self.button.removeClass( $.mobile.focusClass ); + }) .bind( "focus vmouseover", function() { self.button.trigger( "vmouseover" ); }) @@ -8138,14 +6560,13 @@ $.widget( "mobile.selectmenu", $.mobile.widget, { // In many situations, iOS will zoom into the select upon tap, this prevents that from happening self.button.bind( "vmousedown", function() { - if ( self.options.preventFocusZoom ) { + if( self.options.preventFocusZoom ){ $.mobile.zoom.disable( true ); } - }).bind( "mouseup", function() { - if ( self.options.preventFocusZoom ) { - setTimeout(function() { - $.mobile.zoom.enable( true ); - }, 0); + }) + .bind( "mouseup", function() { + if( self.options.preventFocusZoom ){ + $.mobile.zoom.enable( true ); } }); }, @@ -8157,30 +6578,22 @@ $.widget( "mobile.selectmenu", $.mobile.widget, { selectedIndices: function() { var self = this; - return this.selected().map(function() { + return this.selected().map( function() { return self._selectOptions().index( this ); }).get(); }, setButtonText: function() { - var self = this, - selected = this.selected(), - text = this.placeholder, - span = $( document.createElement( "span" ) ); + var self = this, selected = this.selected(); - this.button.find( ".ui-btn-text" ).html(function() { - if ( selected.length ) { - text = selected.map(function() { - return $( this ).text(); - }).get().join( ", " ); - } else { - text = self.placeholder; + this.button.find( ".ui-btn-text" ).text( function() { + if ( !self.isMultiple ) { + return selected.text(); } - // TODO possibly aggregate multiple select option classes - return span.text( text ) - .addClass( self.select.attr( "class" ) ) - .addClass( selected.attr( "class" ) ); + return selected.length ? selected.map( function() { + return $( this ).text(); + }).get().join( ", " ) : self.placeholder; }); }, @@ -8215,7 +6628,7 @@ $.widget( "mobile.selectmenu", $.mobile.widget, { }); //auto self-init widgets -$( document ).bind( "pagecreate create", function( e ) { +$( document ).bind( "pagecreate create", function( e ){ $.mobile.selectmenu.prototype.enhanceWithin( e.target, true ); }); })( jQuery ); @@ -8225,12 +6638,13 @@ $( document ).bind( "pagecreate create", function( e ) { */ (function( $, undefined ) { - var extendSelect = function( widget ) { + var extendSelect = function( widget ){ var select = widget.select, selectID = widget.selectID, label = widget.label, thisPage = widget.select.closest( ".ui-page" ), + screen = $( "
", {"class": "ui-selectmenu-screen ui-screen-hidden"} ).appendTo( thisPage ), selectOptions = widget._selectOptions(), isMultiple = widget.isMultiple = widget.select[ 0 ].multiple, buttonId = selectID + "-button", @@ -8242,7 +6656,7 @@ $( document ).bind( "pagecreate create", function( e ) { "
"+ "
" ), - listbox = $( "
", { "class": "ui-selectmenu" } ).insertAfter( widget.select ).popup( { theme: "a" } ), + listbox = $("
", { "class": "ui-selectmenu ui-selectmenu-hidden ui-overlay-shadow ui-corner-all ui-body-" + widget.options.overlayTheme + " " + $.mobile.defaultDialogTransition } ).insertAfter(screen), list = $( "
    ", { "class": "ui-selectmenu-list", @@ -8263,7 +6677,7 @@ $( document ).bind( "pagecreate create", function( e ) { menuPageClose, headerClose; - if ( widget.isMultiple ) { + if( widget.isMultiple ) { headerClose = $( "", { "text": widget.options.closeText, "href": "#", @@ -8279,6 +6693,7 @@ $( document ).bind( "pagecreate create", function( e ) { thisPage: thisPage, menuPage: menuPage, label: label, + screen: screen, selectOptions: selectOptions, isMultiple: isMultiple, theme: widget.options.theme, @@ -8304,9 +6719,9 @@ $( document ).bind( "pagecreate create", function( e ) { // Button events self.button.bind( "vclick keydown" , function( event ) { - if (event.type === "vclick" || - event.keyCode && (event.keyCode === $.mobile.keyCode.ENTER || - event.keyCode === $.mobile.keyCode.SPACE)) { + if ( event.type == "vclick" || + event.keyCode && ( event.keyCode === $.mobile.keyCode.ENTER || + event.keyCode === $.mobile.keyCode.SPACE ) ) { self.open(); event.preventDefault(); @@ -8315,13 +6730,13 @@ $( document ).bind( "pagecreate create", function( e ) { // Events for list items self.list.attr( "role", "listbox" ) - .bind( "focusin", function( e ) { + .bind( "focusin", function( e ){ $( e.target ) .attr( "tabindex", "0" ) .trigger( "vmouseover" ); }) - .bind( "focusout", function( e ) { + .bind( "focusout", function( e ){ $( e.target ) .attr( "tabindex", "-1" ) .trigger( "vmouseout" ); @@ -8368,10 +6783,10 @@ $( document ).bind( "pagecreate create", function( e ) { // switch logic based on which key was pressed switch ( event.keyCode ) { // up or left arrow keys - case 38: + case 38: prev = li.prev().not( ".ui-selectmenu-placeholder" ); - if ( prev.is( ".ui-li-divider" ) ) { + if( prev.is( ".ui-li-divider" ) ) { prev = prev.prev(); } @@ -8385,11 +6800,13 @@ $( document ).bind( "pagecreate create", function( e ) { } return false; + break; + // down or right arrow keys - case 40: + case 40: next = li.next(); - if ( next.is( ".ui-li-divider" ) ) { + if( next.is( ".ui-li-divider" ) ) { next = next.next(); } @@ -8403,12 +6820,15 @@ $( document ).bind( "pagecreate create", function( e ) { } return false; + break; + // If enter or space is pressed, trigger click - case 13: - case 32: + case 13: + case 32: target.trigger( "click" ); return false; + break; } }); @@ -8433,15 +6853,15 @@ $( document ).bind( "pagecreate create", function( e ) { $.mobile._bindPageRemove.call( self.thisPage ); }); - // Events on the popup - self.listbox.bind( "popupafterclose", function( event ) { + // Events on "screen" overlay + self.screen.bind( "vclick", function( event ) { self.close(); }); // Close button on small overlays - if ( self.isMultiple ) { - self.headerClose.click(function() { - if ( self.menuType === "overlay" ) { + if( self.isMultiple ){ + self.headerClose.click( function() { + if ( self.menuType == "overlay" ) { self.close(); return false; } @@ -8464,10 +6884,10 @@ $( document ).bind( "pagecreate create", function( e ) { }, selected: function() { - return this._selectOptions().filter( ":selected:not( :jqmData(placeholder='true') )" ); + return this._selectOptions().filter( ":selected:not(:jqmData(placeholder='true'))" ); }, - refresh: function( forceRebuild , foo ) { + refresh: function( forceRebuild , foo ){ var self = this, select = this.element, isMultiple = this.isMultiple, @@ -8497,7 +6917,7 @@ $( document ).bind( "pagecreate create", function( e ) { if ( self.isMultiple ) { item.find( ".ui-icon" ).removeClass( "ui-icon-checkbox-off" ).addClass( "ui-icon-checkbox-on" ); } else { - if ( item.is( ".ui-selectmenu-placeholder" ) ) { + if( item.is( ".ui-selectmenu-placeholder" ) ) { item.next().addClass( $.mobile.activeBtnClass ); } else { item.addClass( $.mobile.activeBtnClass ); @@ -8514,13 +6934,14 @@ $( document ).bind( "pagecreate create", function( e ) { var self = this; - if ( self.menuType === "page" ) { + if ( self.menuType == "page" ) { // doesn't solve the possible issue with calling change page // where the objects don't define data urls which prevents dialog key // stripping - changePage has incoming refactor - $.mobile.back(); + window.history.back(); } else { - self.listbox.popup( "close" ); + self.screen.addClass( "ui-screen-hidden" ); + self.listbox.addClass( "ui-selectmenu-hidden" ).removeAttr( "style" ).removeClass( "in" ); self.list.appendTo( self.listbox ); self._focusButton(); } @@ -8535,11 +6956,12 @@ $( document ).bind( "pagecreate create", function( e ) { } var self = this, - $window = $( window ), - selfListParent = self.list.parent(), + $window = $( window ), + selfListParent = self.list.parent(), menuHeight = selfListParent.outerHeight(), menuWidth = selfListParent.outerWidth(), - activePage = $( "." + $.mobile.activePageClass ), + activePage = $( ".ui-page-active" ), + tScrollElem = activePage, scrollTop = $window.scrollTop(), btnOffset = self.button.offset().top, screenHeight = $window.height(), @@ -8556,7 +6978,7 @@ $( document ).bind( "pagecreate create", function( e ) { function focusMenuItem() { var selector = self.list.find( "." + $.mobile.activeBtnClass + " a" ); if ( selector.length === 0 ) { - selector = self.list.find( "li.ui-btn:not( :jqmData(placeholder='true') ) a" ); + selector = self.list.find( "li.ui-btn:not(:jqmData(placeholder='true')) a" ); } selector.first().focus().closest( "li" ).addClass( "ui-btn-down-" + widget.options.theme ); } @@ -8573,7 +6995,7 @@ $( document ).bind( "pagecreate create", function( e ) { self.thisPage.unbind( "pagehide.remove" ); //for WebOS/Opera Mini (set lastscroll using button offset) - if ( scrollTop === 0 && btnOffset > screenHeight ) { + if ( scrollTop == 0 && btnOffset > screenHeight ) { self.thisPage.one( "pagehide", function() { $( this ).jqmData( "lastScroll", btnOffset ); }); @@ -8593,12 +7015,48 @@ $( document ).bind( "pagecreate create", function( e ) { } else { self.menuType = "overlay"; - self.listbox - .one( "popupafteropen", focusMenuItem ) - .popup( "open", { - x: self.button.offset().left + self.button.outerWidth() / 2, - y: self.button.offset().top + self.button.outerHeight() / 2 - }); + self.screen.height( $(document).height() ) + .removeClass( "ui-screen-hidden" ); + + // Try and center the overlay over the button + var roomtop = btnOffset - scrollTop, + roombot = scrollTop + screenHeight - btnOffset, + halfheight = menuHeight / 2, + maxwidth = parseFloat( self.list.parent().css( "max-width" ) ), + newtop, newleft; + + if ( roomtop > menuHeight / 2 && roombot > menuHeight / 2 ) { + newtop = btnOffset + ( self.button.outerHeight() / 2 ) - halfheight; + } else { + // 30px tolerance off the edges + newtop = roomtop > roombot ? scrollTop + screenHeight - menuHeight - 30 : scrollTop + 30; + } + + // If the menuwidth is smaller than the screen center is + if ( menuWidth < maxwidth ) { + newleft = ( screenWidth - menuWidth ) / 2; + } else { + + //otherwise insure a >= 30px offset from the left + newleft = self.button.offset().left + self.button.outerWidth() / 2 - menuWidth / 2; + + // 30px tolerance off the edges + if ( newleft < 30 ) { + newleft = 30; + } else if ( (newleft + menuWidth) > screenWidth ) { + newleft = screenWidth - menuWidth - 30; + } + } + + self.listbox.append( self.list ) + .removeClass( "ui-selectmenu-hidden" ) + .css({ + top: newtop, + left: newleft + }) + .addClass( "in" ); + + focusMenuItem(); // duplicate with value set in page show for dialog sized selects self.isOpen = true; @@ -8616,7 +7074,7 @@ $( document ).bind( "pagecreate create", function( e ) { self.list.empty().filter( ".ui-listview" ).listview( "destroy" ); - var $options = self.select.find( "option" ), + var $options = self.select.find("option"), numOptions = $options.length, select = this.select[ 0 ], dataPrefix = 'data-' + $.mobile.ns, @@ -8628,32 +7086,32 @@ $( document ).bind( "pagecreate create", function( e ) { isPlaceholderItem = false, optGroup; - for (var i = 0; i < numOptions;i++, isPlaceholderItem = false) { + for (var i = 0; i < numOptions;i++, isPlaceholderItem = false){ var option = $options[i], - $option = $( option ), + $option = $(option), parent = option.parentNode, text = $option.text(), - anchor = document.createElement( 'a' ), + anchor = document.createElement('a'), classes = []; - anchor.setAttribute( 'href', '#' ); - anchor.appendChild( document.createTextNode( text ) ); + anchor.setAttribute('href','#'); + anchor.appendChild(document.createTextNode(text)); // Are we inside an optgroup? - if ( parent !== select && parent.nodeName.toLowerCase() === "optgroup" ) { - var optLabel = parent.getAttribute( 'label' ); - if ( optLabel !== optGroup ) { - var divider = document.createElement( 'li' ); - divider.setAttribute( dataRoleAttr, 'list-divider' ); - divider.setAttribute( 'role', 'option' ); - divider.setAttribute( 'tabindex', '-1' ); - divider.appendChild( document.createTextNode( optLabel ) ); - fragment.appendChild( divider ); + if (parent !== select && parent.nodeName.toLowerCase() === "optgroup"){ + var optLabel = parent.getAttribute('label'); + if ( optLabel != optGroup) { + var divider = document.createElement('li'); + divider.setAttribute(dataRoleAttr,'list-divider'); + divider.setAttribute('role','option'); + divider.setAttribute('tabindex','-1'); + divider.appendChild(document.createTextNode(optLabel)); + fragment.appendChild(divider); optGroup = optLabel; } } - if ( needPlaceholder && ( !option.getAttribute( "value" ) || text.length === 0 || $option.jqmData( "placeholder" ) ) ) { + if (needPlaceholder && (!option.getAttribute( "value" ) || text.length == 0 || $option.jqmData( "placeholder" ))) { needPlaceholder = false; isPlaceholderItem = true; @@ -8672,19 +7130,19 @@ $( document ).bind( "pagecreate create", function( e ) { classes.push( "ui-disabled" ); item.setAttribute('aria-disabled',true); } - item.setAttribute( dataIndexAttr,i ); - item.setAttribute( dataIconAttr, dataIcon ); + item.setAttribute(dataIndexAttr,i); + item.setAttribute(dataIconAttr,dataIcon); if ( isPlaceholderItem ) { item.setAttribute( dataPlaceholderAttr, true ); } - item.className = classes.join( " " ); - item.setAttribute( 'role', 'option' ); - anchor.setAttribute( 'tabindex', '-1' ); - item.appendChild( anchor ); - fragment.appendChild( item ); + item.className = classes.join(" "); + item.setAttribute('role','option'); + anchor.setAttribute('tabindex','-1'); + item.appendChild(anchor); + fragment.appendChild(item); } - self.list[0].appendChild( fragment ); + self.list[0].appendChild(fragment); // Hide header if it's not a multiselect and there's no placeholder if ( !this.isMultiple && !placeholder.length ) { @@ -8697,7 +7155,7 @@ $( document ).bind( "pagecreate create", function( e ) { self.list.listview(); }, - _button: function() { + _button: function(){ return $( "", { "href": "#", "role": "button", @@ -8712,12 +7170,11 @@ $( document ).bind( "pagecreate create", function( e ) { }); }; - // issue #3894 - core doesn't trigger events on disabled delegates - $( document ).bind( "selectmenubeforecreate", function( event ) { + // issue #3894 - core doesn't triggered events on disabled delegates + $( document ).bind( "selectmenubeforecreate", function( event ){ var selectmenuWidget = $( event.target ).data( "selectmenu" ); - if ( !selectmenuWidget.options.nativeMenu && - selectmenuWidget.element.parents( ":jqmData(role='popup')" ).length === 0 ) { + if( !selectmenuWidget.options.nativeMenu ){ extendSelect( selectmenuWidget ); } }); @@ -8733,7 +7190,7 @@ $( document ).bind( "pagecreate create", function( e ) { transition: "slide", //can be none, fade, slide (slide maps to slideup or slidedown) fullscreen: false, tapToggle: true, - tapToggleBlacklist: "a, button, input, select, textarea, .ui-header-fixed, .ui-footer-fixed, .ui-popup", + tapToggleBlacklist: "a, button, input, select, textarea, .ui-header-fixed, .ui-footer-fixed", hideDuringFocus: "input, textarea, select", updatePagePadding: true, trackPersistentToolbars: true, @@ -8744,7 +7201,7 @@ $( document ).bind( "pagecreate create", function( e ) { // Testing fixed positioning is also pretty obtrusive to page load, requiring injected elements and scrolling the window // The following function serves to rule out some popular browsers with known fixed-positioning issues // This is a plugin option like any other, so feel free to improve or overwrite it - supportBlacklist: function() { + supportBlacklist: function(){ var w = window, ua = navigator.userAgent, platform = navigator.platform, @@ -8758,18 +7215,25 @@ $( document ).bind( "pagecreate create", function( e ) { if( // iOS 4.3 and older : Platform is iPhone/Pad/Touch and Webkit version is less than 534 (ios5) - ( ( platform.indexOf( "iPhone" ) > -1 || platform.indexOf( "iPad" ) > -1 || platform.indexOf( "iPod" ) > -1 ) && wkversion && wkversion < 534 ) || + ( ( platform.indexOf( "iPhone" ) > -1 || platform.indexOf( "iPad" ) > -1 || platform.indexOf( "iPod" ) > -1 ) && wkversion && wkversion < 534 ) + || // Opera Mini - ( w.operamini && ({}).toString.call( w.operamini ) === "[object OperaMini]" ) || - ( operammobilematch && omversion < 7458 ) || + ( w.operamini && ({}).toString.call( w.operamini ) === "[object OperaMini]" ) + || + ( operammobilematch && omversion < 7458 ) + || //Android lte 2.1: Platform is Android and Webkit version is less than 533 (Android 2.2) - ( ua.indexOf( "Android" ) > -1 && wkversion && wkversion < 533 ) || + ( ua.indexOf( "Android" ) > -1 && wkversion && wkversion < 533 ) + || // Firefox Mobile before 6.0 - - ( ffversion && ffversion < 6 ) || + ( ffversion && ffversion < 6 ) + || // WebOS less than 3 - ( "palmGetResource" in window && wkversion && wkversion < 534 ) || + ( "palmGetResource" in window && wkversion && wkversion < 534 ) + || // MeeGo - ( ua.indexOf( "MeeGo" ) > -1 && ua.indexOf( "NokiaBrowser/8.5.0" ) > -1 ) ) { + ( ua.indexOf( "MeeGo" ) > -1 && ua.indexOf( "NokiaBrowser/8.5.0" ) > -1 ) + ){ return true; } @@ -8784,10 +7248,10 @@ $( document ).bind( "pagecreate create", function( e ) { o = self.options, $el = self.element, tbtype = $el.is( ":jqmData(role='header')" ) ? "header" : "footer", - $page = $el.closest( ".ui-page" ); + $page = $el.closest(".ui-page"); // Feature detecting support for - if ( o.supportBlacklist() ) { + if( o.supportBlacklist() ){ self.destroy(); return; } @@ -8795,7 +7259,7 @@ $( document ).bind( "pagecreate create", function( e ) { $el.addClass( "ui-"+ tbtype +"-fixed" ); // "fullscreen" overlay positioning - if ( o.fullscreen ) { + if( o.fullscreen ){ $el.addClass( "ui-"+ tbtype +"-fullscreen" ); $page.addClass( "ui-page-" + tbtype + "-fullscreen" ); } @@ -8809,12 +7273,12 @@ $( document ).bind( "pagecreate create", function( e ) { self._bindToggleHandlers(); }, - _addTransitionClass: function() { + _addTransitionClass: function(){ var tclass = this.options.transition; - if ( tclass && tclass !== "none" ) { + if( tclass && tclass !== "none" ){ // use appropriate slide for header or footer - if ( tclass === "slide" ) { + if( tclass === "slide" ){ tclass = this.element.is( ".ui-header" ) ? "slidedown" : "slideup"; } @@ -8822,7 +7286,7 @@ $( document ).bind( "pagecreate create", function( e ) { } }, - _bindPageEvents: function() { + _bindPageEvents: function(){ var self = this, o = self.options, $el = self.element; @@ -8831,48 +7295,50 @@ $( document ).bind( "pagecreate create", function( e ) { // Fixed toolbars require page zoom to be disabled, otherwise usability issues crop up // This method is meant to disable zoom while a fixed-positioned toolbar page is visible $el.closest( ".ui-page" ) - .bind( "pagebeforeshow", function() { - if ( o.disablePageZoom ) { + .bind( "pagebeforeshow", function(){ + if( o.disablePageZoom ){ $.mobile.zoom.disable( true ); } - if ( !o.visibleOnPageShow ) { + if( !o.visibleOnPageShow ){ self.hide( true ); } } ) - .bind( "webkitAnimationStart animationstart updatelayout", function() { + .bind( "webkitAnimationStart animationstart updatelayout", function(){ var thisPage = this; - if ( o.updatePagePadding ) { + if( o.updatePagePadding ){ self.updatePagePadding( thisPage ); } }) - .bind( "pageshow", function() { + .bind( "pageshow", function(){ var thisPage = this; self.updatePagePadding( thisPage ); - if ( o.updatePagePadding ) { - $( window ).bind( "throttledresize." + self.widgetName, function() { - self.updatePagePadding( thisPage ); + if( o.updatePagePadding ){ + $( window ).bind( "throttledresize." + self.widgetName, function(){ + self.updatePagePadding( thisPage ); }); } }) - .bind( "pagebeforehide", function( e, ui ) { - if ( o.disablePageZoom ) { + .bind( "pagebeforehide", function( e, ui ){ + if( o.disablePageZoom ){ $.mobile.zoom.enable( true ); } - if ( o.updatePagePadding ) { + if( o.updatePagePadding ){ $( window ).unbind( "throttledresize." + self.widgetName ); } - if ( o.trackPersistentToolbars ) { + if( o.trackPersistentToolbars ){ var thisFooter = $( ".ui-footer-fixed:jqmData(id)", this ), thisHeader = $( ".ui-header-fixed:jqmData(id)", this ), - nextFooter = thisFooter.length && ui.nextPage && $( ".ui-footer-fixed:jqmData(id='" + thisFooter.jqmData( "id" ) + "')", ui.nextPage ) || $(), - nextHeader = thisHeader.length && ui.nextPage && $( ".ui-header-fixed:jqmData(id='" + thisHeader.jqmData( "id" ) + "')", ui.nextPage ) || $(); + nextFooter = thisFooter.length && ui.nextPage && $( ".ui-footer-fixed:jqmData(id='" + thisFooter.jqmData( "id" ) + "')", ui.nextPage ), + nextHeader = thisHeader.length && ui.nextPage && $( ".ui-header-fixed:jqmData(id='" + thisHeader.jqmData( "id" ) + "')", ui.nextPage ); - if ( nextFooter.length || nextHeader.length ) { + nextFooter = nextFooter || $(); + + if( nextFooter.length || nextHeader.length ){ nextFooter.add( nextHeader ).appendTo( $.mobile.pageContainer ); - ui.nextPage.one( "pageshow", function() { + ui.nextPage.one( "pageshow", function(){ nextFooter.add( nextHeader ).appendTo( this ); }); } @@ -8888,13 +7354,13 @@ $( document ).bind( "pagecreate create", function( e ) { header = $el.is( ".ui-header" ); // This behavior only applies to "fixed", not "fullscreen" - if ( this.options.fullscreen ) { return; } + if( this.options.fullscreen ){ return; } tbPage = tbPage || $el.closest( ".ui-page" ); $( tbPage ).css( "padding-" + ( header ? "top" : "bottom" ), $el.outerHeight() ); }, - - _useTransition: function( notransition ) { + + _useTransition: function( notransition ){ var $win = $( window ), $el = this.element, scroll = $win.scrollTop(), @@ -8902,7 +7368,7 @@ $( document ).bind( "pagecreate create", function( e ) { pHeight = $el.closest( ".ui-page" ).height(), viewportHeight = $.mobile.getScreenHeight(), tbtype = $el.is( ":jqmData(role='header')" ) ? "header" : "footer"; - + return !notransition && ( this.options.transition && this.options.transition !== "none" && ( @@ -8912,11 +7378,11 @@ $( document ).bind( "pagecreate create", function( e ) { ); }, - show: function( notransition ) { + show: function( notransition ){ var hideClass = "ui-fixed-hidden", $el = this.element; - if ( this._useTransition( notransition ) ) { + if( this._useTransition( notransition ) ){ $el .removeClass( "out " + hideClass ) .addClass( "in" ); @@ -8927,17 +7393,17 @@ $( document ).bind( "pagecreate create", function( e ) { this._visible = true; }, - hide: function( notransition ) { + hide: function( notransition ){ var hideClass = "ui-fixed-hidden", $el = this.element, // if it's a slide transition, our new transitions need the reverse class as well to slide outward outclass = "out" + ( this.options.transition === "slide" ? " reverse" : "" ); - if( this._useTransition( notransition ) ) { + if( this._useTransition( notransition ) ){ $el .addClass( outclass ) .removeClass( "in" ) - .animationComplete(function() { + .animationComplete( function(){ $el.addClass( hideClass ).removeClass( outclass ); }); } @@ -8947,30 +7413,30 @@ $( document ).bind( "pagecreate create", function( e ) { this._visible = false; }, - toggle: function() { + toggle: function(){ this[ this._visible ? "hide" : "show" ](); }, - _bindToggleHandlers: function() { + _bindToggleHandlers: function(){ var self = this, o = self.options, $el = self.element; // tap toggle $el.closest( ".ui-page" ) - .bind( "vclick", function( e ) { - if ( o.tapToggle && !$( e.target ).closest( o.tapToggleBlacklist ).length ) { + .bind( "vclick", function( e ){ + if( o.tapToggle && !$( e.target ).closest( o.tapToggleBlacklist ).length ){ self.toggle(); } }) - .bind( "focusin focusout", function( e ) { - if ( screen.width < 500 && $( e.target ).is( o.hideDuringFocus ) && !$( e.target ).closest( ".ui-header-fixed, .ui-footer-fixed" ).length ) { + .bind( "focusin focusout", function( e ){ + if( screen.width < 500 && $( e.target ).is( o.hideDuringFocus ) && !$( e.target ).closest( ".ui-header-fixed, .ui-footer-fixed" ).length ){ self[ ( e.type === "focusin" && self._visible ) ? "hide" : "show" ](); } }); }, - destroy: function() { + destroy: function(){ this.element.removeClass( "ui-header-fixed ui-footer-fixed ui-header-fullscreen ui-footer-fullscreen in out fade slidedown slideup ui-fixed-hidden" ); this.element.closest( ".ui-page" ).removeClass( "ui-page-header-fixed ui-page-footer-fixed ui-page-header-fullscreen ui-page-footer-fullscreen" ); } @@ -8979,63 +7445,59 @@ $( document ).bind( "pagecreate create", function( e ) { //auto self-init widgets $( document ) - .bind( "pagecreate create", function( e ) { - + .bind( "pagecreate create", function( e ){ + // DEPRECATED in 1.1: support for data-fullscreen=true|false on the page element. // This line ensures it still works, but we recommend moving the attribute to the toolbars themselves. - if ( $( e.target ).jqmData( "fullscreen" ) ) { + if( $( e.target ).jqmData( "fullscreen" ) ){ $( $.mobile.fixedtoolbar.prototype.options.initSelector, e.target ).not( ":jqmData(fullscreen)" ).jqmData( "fullscreen", true ); } - + $.mobile.fixedtoolbar.prototype.enhanceWithin( e.target ); }); })( jQuery ); -(function( $, window ) { - +( function( $, window ) { + // This fix addresses an iOS bug, so return early if the UA claims it's something else. - if ( !(/iPhone|iPad|iPod/.test( navigator.platform ) && navigator.userAgent.indexOf( "AppleWebKit" ) > -1 ) ) { + if( !(/iPhone|iPad|iPod/.test( navigator.platform ) && navigator.userAgent.indexOf( "AppleWebKit" ) > -1 ) ){ return; } - - var zoom = $.mobile.zoom, + + var zoom = $.mobile.zoom, evt, x, y, z, aig; - - function checkTilt( e ) { + + function checkTilt( e ){ evt = e.originalEvent; aig = evt.accelerationIncludingGravity; - + x = Math.abs( aig.x ); y = Math.abs( aig.y ); z = Math.abs( aig.z ); - + // If portrait orientation and in one of the danger zones - if ( !window.orientation && ( x > 7 || ( ( z > 6 && y < 8 || z < 8 && y > 6 ) && x > 5 ) ) ) { - if ( zoom.enabled ) { + if( !window.orientation && ( x > 7 || ( ( z > 6 && y < 8 || z < 8 && y > 6 ) && x > 5 ) ) ){ + if( zoom.enabled ){ zoom.disable(); - } - } else if ( !zoom.enabled ) { + } + } + else if( !zoom.enabled ){ zoom.enable(); + } } - } - $( window ) + $( window ) .bind( "orientationchange.iosorientationfix", zoom.enable ) .bind( "devicemotion.iosorientationfix", checkTilt ); }( jQuery, this )); -(function( $, window, undefined ) { +( function( $, window, undefined ) { var $html = $( "html" ), $head = $( "head" ), $window = $( window ); - //remove initial build class (only present on first pageshow) - function hideRenderingClass() { - $html.removeClass( "ui-mobile-rendering" ); - } - // trigger mobileinit event - useful hook for configuring $.mobile settings before they're used $( window.document ).trigger( "mobileinit" ); @@ -9059,13 +7521,81 @@ $( document ).bind( "pagecreate create", function( e ) { // this ensures the rendering class is removed after 5 seconds, so content is visible and accessible setTimeout( hideRenderingClass, 5000 ); - $.extend( $.mobile, { + // loading div which appears during Ajax requests + // will not appear if $.mobile.loadingMessage is false + var loaderClass = "ui-loader", + $loader = $( "

    " ); + + // For non-fixed supportin browsers. Position at y center (if scrollTop supported), above the activeBtn (if defined), or just 100px from top + function fakeFixLoader(){ + var activeBtn = $( "." + $.mobile.activeBtnClass ).first(); + + $loader + .css({ + top: $.support.scrollTop && $window.scrollTop() + $window.height() / 2 || + activeBtn.length && activeBtn.offset().top || 100 + }); + } + + // check position of loader to see if it appears to be "fixed" to center + // if not, use abs positioning + function checkLoaderPosition(){ + var offset = $loader.offset(), + scrollTop = $window.scrollTop(), + screenHeight = $.mobile.getScreenHeight(); + + if( offset.top < scrollTop || (offset.top - scrollTop) > screenHeight ) { + $loader.addClass( "ui-loader-fakefix" ); + fakeFixLoader(); + $window + .unbind( "scroll", checkLoaderPosition ) + .bind( "scroll", fakeFixLoader ); + } + } + + //remove initial build class (only present on first pageshow) + function hideRenderingClass(){ + $html.removeClass( "ui-mobile-rendering" ); + } + + $.extend($.mobile, { + // turn on/off page loading message. + showPageLoadingMsg: function( theme, msgText, textonly ) { + $html.addClass( "ui-loading" ); + + if ( $.mobile.loadingMessage ) { + // text visibility from argument takes priority + var textVisible = textonly || $.mobile.loadingMessageTextVisible; + + theme = theme || $.mobile.loadingMessageTheme, + + $loader + .attr( "class", loaderClass + " ui-corner-all ui-body-" + ( theme || "a" ) + " ui-loader-" + ( textVisible ? "verbose" : "default" ) + ( textonly ? " ui-loader-textonly" : "" ) ) + .find( "h1" ) + .text( msgText || $.mobile.loadingMessage ) + .end() + .appendTo( $.mobile.pageContainer ); + + checkLoaderPosition(); + $window.bind( "scroll", checkLoaderPosition ); + } + }, + + hidePageLoadingMsg: function() { + $html.removeClass( "ui-loading" ); + + if( $.mobile.loadingMessage ){ + $loader.removeClass( "ui-loader-fakefix" ); + } + + $( window ).unbind( "scroll", fakeFixLoader ); + $( window ).unbind( "scroll", checkLoaderPosition ); + }, + // find and enhance the pages in the dom and transition to the first page. initializePage: function() { // find present pages - var $pages = $( ":jqmData(role='page'), :jqmData(role='dialog')" ), - hash = $.mobile.path.parseLocation().hash.replace("#", ""), - hashPage = document.getElementById( hash ); + var $pages = $( ":jqmData(role='page'), :jqmData(role='dialog')" ); // if no pages are found, create one with body's inner html if ( !$pages.length ) { @@ -9074,10 +7604,10 @@ $( document ).bind( "pagecreate create", function( e ) { // add dialogs, set data-url attrs $pages.each(function() { - var $this = $( this ); + var $this = $(this); // unless the data url is already set set it to the pathname - if ( !$this.jqmData( "url" ) ) { + if ( !$this.jqmData("url") ) { $this.attr( "data-" + $.mobile.ns + "url", $this.attr( "id" ) || location.pathname + location.search ); } }); @@ -9103,15 +7633,9 @@ $( document ).bind( "pagecreate create", function( e ) { // or there is no page with that hash, change to the first page in the DOM // Remember, however, that the hash can also be a path! if ( ! ( $.mobile.hashListeningEnabled && - $.mobile.path.isHashValid( location.hash ) && - ( $( hashPage ).is( ':jqmData(role="page")' ) || - $.mobile.path.isPath( hash ) || - hash === $.mobile.dialogHashKey ) ) ) { - - // Store the initial destination - if ( $.mobile.path.isHashValid( location.hash ) ) { - $.mobile.urlHistory.initialDst = hash.replace( "#", "" ); - } + $.mobile.path.isHashValid( location.hash ) && + ( $( location.hash + ':jqmData(role="page")' ).length || + $.mobile.path.isPath( location.hash ) ) ) ) { $.mobile.changePage( $.mobile.firstPage, { transition: "none", reverse: true, changeHash: false, fromHashChange: true } ); } // otherwise, trigger a hashchange to load a deeplink @@ -9133,13 +7657,13 @@ $( document ).bind( "pagecreate create", function( e ) { // if defaultHomeScroll hasn't been set yet, see if scrollTop is 1 // it should be 1 in most browsers, but android treats 1 as 0 (for hiding addr bar) // so if it's 1, use 0 from now on - $.mobile.defaultHomeScroll = ( !$.support.scrollTop || $( window ).scrollTop() === 1 ) ? 0 : 1; + $.mobile.defaultHomeScroll = ( !$.support.scrollTop || $(window).scrollTop() === 1 ) ? 0 : 1; // TODO: Implement a proper registration mechanism with dependency handling in order to not have exceptions like the one below //auto self-init widgets for those widgets that have a soft dependency on others if ( $.fn.controlgroup ) { - $( document ).bind( "pagecreate create", function( e ) { + $( document ).bind( "pagecreate create", function( e ){ $( ":jqmData(role='controlgroup')", e.target ) .jqmEnhanceable() .controlgroup({ excludeInvisible: false }); @@ -9147,7 +7671,7 @@ $( document ).bind( "pagecreate create", function( e ) { } //dom-ready inits - if ( $.mobile.autoInitializePage ) { + if( $.mobile.autoInitializePage ){ $.mobile.initializePage(); } @@ -9170,4 +7694,5 @@ $( document ).bind( "pagecreate create", function( e ) { }); }( jQuery, this )); + })); diff --git a/theme/mymobile/lang/en/theme_mymobile.php b/theme/mymobile/lang/en/theme_mymobile.php index 91e86d44ff1..f80ddb3204d 100644 --- a/theme/mymobile/lang/en/theme_mymobile.php +++ b/theme/mymobile/lang/en/theme_mymobile.php @@ -40,8 +40,6 @@ $string['showfullsizeimages'] = 'Show full images on site index and course pages $string['showfullsizeimages_desc'] = 'Show full size images on site index and course pages instead of replaced thumb icon method. Default is to not show full size images.'; $string['usetableview'] = 'Tablet View'; $string['usetableview_desc'] = 'Use the tablet view for larger devices (yes by default).'; -$string['useajax'] = 'Use Ajax Page Loading'; -$string['useajax_desc'] = 'Use ajax page loading. Turn off if experiencing problems (yes by default).'; $string['yes'] = 'Yes'; $string['customcss'] = 'Custom CSS'; $string['customcssdesc'] = 'Any CSS you enter here will be added to every page allowing your to easily customise this theme.'; \ No newline at end of file diff --git a/theme/mymobile/layout/general.php b/theme/mymobile/layout/general.php index 4e14bb4cee8..d956b853f3b 100644 --- a/theme/mymobile/layout/general.php +++ b/theme/mymobile/layout/general.php @@ -71,16 +71,10 @@ if (!empty($PAGE->theme->settings->usetableview)) { $showusetableview = 'tabshow'; } -if (!empty($PAGE->theme->settings->useajax)) { - $useajax = $PAGE->theme->settings->useajax; -} else { - $useajax = 'ajaxyes'; -} - - -// Course format -if ($mylayoutype == 'course') { - // Jump to current topic only in course pages. +// TODO: Fix this hardcoding there are other course formats that peopleuse. +// Probably changing to an appropriate regex will do. +if ($mypagetype == 'course-view-topics' || $mypagetype == 'course-view-weeks') { + // jump to current topic only in course pages $jumptocurrent = 'true'; } else { $jumptocurrent = 'false'; @@ -95,10 +89,19 @@ $hasnavbar = (empty($PAGE->layout_options['nonavbar']) && $PAGE->has_navbar()); $hasfooter = (empty($PAGE->layout_options['nofooter'])); $hasmyblocks = $PAGE->blocks->region_has_content('myblocks', $OUTPUT); +$courseheader = $coursecontentheader = $coursecontentfooter = $coursefooter = ''; +if (empty($PAGE->layout_options['nocourseheaderfooter'])) { + $courseheader = $OUTPUT->course_header(); + $coursecontentheader = $OUTPUT->course_content_header(); + if (empty($PAGE->layout_options['nocoursefooter'])) { + $coursecontentfooter = $OUTPUT->course_content_footer(); + $coursefooter = $OUTPUT->course_footer(); + } +} + $bodyclasses = array(); $bodyclasses[] = (string)$hasithumb; $bodyclasses[] = (string)$showsitetopic; -$bodyclasses[] = (string)$useajax; // add ithumb class to decide whether to show or hide images and site topic // TODO: Better illustrate preceedence @@ -121,7 +124,7 @@ echo $OUTPUT->doctype() ?> - + standard_head_html() ?> @@ -129,13 +132,16 @@ echo $OUTPUT->doctype() ?> standard_top_of_body_html() ?>
    -
    class="mymobileheader"> +
    class="mymobileheader" data-position="fixed">

    heading ?>

    login_info(); } ?> + +
    +
      @@ -180,7 +186,9 @@ echo $OUTPUT->doctype() ?> theme->settings->showmobileintro; ?> + main_content(); ?> +
    @@ -217,7 +225,7 @@ echo $OUTPUT->doctype() ?>
    - @@ -244,6 +252,10 @@ echo $OUTPUT->doctype() ?> + +
    + +
    >
    '; } @@ -429,7 +403,7 @@ class theme_mymobile_core_renderer extends core_renderer { // $course->id is not defined during installation return ''; } else if (isloggedin()) { - $context = get_context_instance(CONTEXT_COURSE, $course->id); + $context = context_course::instance($course->id); $fullname = fullname($USER, true); // Since Moodle 2.0 this link always goes to the public profile page (not the course profile page) @@ -471,7 +445,7 @@ class theme_mymobile_core_renderer extends core_renderer { } else { $loggedinas .= get_string('failedloginattemptsall', '', $count); } - if (has_capability('report/log:view', get_context_instance(CONTEXT_SYSTEM))) { + if (has_capability('report/log:view', context_system::instance())) { $loggedinas .= ' ('.get_string('logs').')'; } $loggedinas .= '
    '; @@ -773,6 +747,11 @@ class theme_mymobile_core_renderer extends core_renderer { $select->attributes['title'] = $select->tooltip; } + $select->attributes['class'] = 'autosubmit'; + if ($select->class) { + $select->attributes['class'] .= ' ' . $select->class; + } + if ($select->label) { $output .= html_writer::label($select->label, $select->attributes['id']); } @@ -791,7 +770,10 @@ class theme_mymobile_core_renderer extends core_renderer { $output .= html_writer::tag('noscript', html_writer::tag('div', $go), array('style' => 'inline')); $nothing = empty($select->nothing) ? false : key($select->nothing); - $this->page->requires->js_init_call('M.util.init_select_autosubmit', array($select->formid, $select->attributes['id'], $nothing)); + $this->page->requires->yui_module('moodle-core-formautosubmit', + 'M.core.init_formautosubmit', + array(array('selectid' => $select->attributes['id'], 'nothing' => $nothing)) + ); // then div wrapper for xhtml strictness $output = html_writer::tag('div', $output); diff --git a/theme/mymobile/settings.php b/theme/mymobile/settings.php index 5fee73d707e..cb309406cc8 100644 --- a/theme/mymobile/settings.php +++ b/theme/mymobile/settings.php @@ -30,11 +30,11 @@ if ($ADMIN->fulltree) { // TODO: Really the yes/no settings below should be changed to checkboxes // given checkboxes are yes/no. Also saves us having to use language // strings for them. - $yesstr = get_string('yes', 'theme_mymobile'); - $nostr = get_string('no', 'theme_mymobile'); + $yesstr = get_string('yes','theme_mymobile'); + $nostr = get_string('no','theme_mymobile'); $name = 'theme_mymobile/colourswatch'; - $title = get_string('colourswatch', 'theme_mymobile'); + $title = get_string('colourswatch','theme_mymobile'); $description = get_string('colourswatch_desc', 'theme_mymobile'); $default = 'light'; $choices = array( @@ -45,7 +45,7 @@ if ($ADMIN->fulltree) { $settings->add($setting); $name = 'theme_mymobile/showmobileintro'; - $title = get_string('showmobileintro', 'theme_mymobile'); + $title = get_string('showmobileintro','theme_mymobile'); $description = get_string('showmobileintro_desc', 'theme_mymobile'); $setting = new admin_setting_confightmleditor($name, $title, $description, ''); $settings->add($setting); @@ -67,23 +67,15 @@ if ($ADMIN->fulltree) { $settings->add($setting); $name = 'theme_mymobile/usetableview'; - $title = get_string('usetableview', 'theme_mymobile'); + $title = get_string('usetableview','theme_mymobile'); $description = get_string('usetableview_desc', 'theme_mymobile'); $default = 'tabshow'; $choices = array('tabshow' => $yesstr, 'tabnoshow' => $nostr); $setting = new admin_setting_configselect($name, $title, $description, $default, $choices); $settings->add($setting); - $name = 'theme_mymobile/useajax'; - $title = get_string('useajax', 'theme_mymobile'); - $description = get_string('useajax_desc', 'theme_mymobile'); - $default = 'ajaxyes'; - $choices = array('ajaxyes' => $yesstr, 'ajaxno' => $nostr); - $setting = new admin_setting_configselect($name, $title, $description, $default, $choices); - $settings->add($setting); - $name = 'theme_mymobile/customcss'; - $title = get_string('customcss', 'theme_mymobile'); + $title = get_string('customcss','theme_mymobile'); $description = get_string('customcssdesc', 'theme_mymobile'); $default = ''; $setting = new admin_setting_configtextarea($name, $title, $description, $default); @@ -91,4 +83,4 @@ if ($ADMIN->fulltree) { unset($yesstr); unset($nostr); -} +} \ No newline at end of file diff --git a/theme/mymobile/style/core.css b/theme/mymobile/style/core.css index 86224819a5e..575d34c9bbe 100644 --- a/theme/mymobile/style/core.css +++ b/theme/mymobile/style/core.css @@ -73,9 +73,6 @@ li.modtype_label { .settingsul li.Turn.editing.on { display: none !important; } -.settingsul .ui-li-divider a.ui-link { - color: inherit; -} /*media plugin style overrides */ span.mediaplugin { clear: both; @@ -227,9 +224,6 @@ div.categorylist div.category { #page-course-indexPAGE .category .name { float: none; } -#page-site-indexPAGE .ui-controlgroup-vertical .ui-btn.ui-corner-bottom { - border-bottom-width: 1px; -} /* course stuff */ /*coursebox summary has an empy   in it, which chops things up. need a fix... hidesummary does this and is added via js... not anymore...*/ .section div.summary { @@ -308,9 +302,28 @@ li a.dimmed span { padding-left: 10px; } */ -.course-content li.activity.ui-btn .ui-btn-text a { - padding-left: 35px; +.sitetopic li.activity.ui-li-static div.activityinstance, +.course-content li.activity.ui-li-static div.activityinstance, +.sitetopic li.activity.ui-btn .ui-btn-text a, +.course-content li.activity.ui-btn .ui-btn-text a, +.sitetopic .section .activity .availabilityinfo, +.sitetopic .section .activity .contentafterlink, +.course-content .section .activity .availabilityinfo, +.course-content .section .activity .contentafterlink { + padding-left: 45px; padding-right: 60px; + margin-left: 0; + margin-right: 0; + position: relative; +} +.sitetopic .section li.activity p.ui-li-desc a.autolink, +.course-content .section li.activity p.ui-li-desc a.autolink { + padding: 0; + margin: 0; +} +.path-site li.activity.label > div, +.path-course-view li.activity.label > div { + position: static; } .topics #section-0 div.left.side { display: none; @@ -323,17 +336,9 @@ li a.dimmed span { .topics li.activity span.accesshide, .weeks li.activity span.accesshide, .ui-navbar span.accesshide { display: none; } -.topics li.activity span.autocompletion, .weeks li.activity span.autocompletion { - display: block; - right: 70px; - top: -5px; -} -.ui-listview .autocompletion .ui-li-icon { - max-width: inherit; - max-height: inherit; -} +.sitetopic .section .activity img.activityicon, .course-content .section .activity img.activityicon { - margin-top: -.2em; + margin-top: -.5em; } li.activity.ui-li-static span, li.activity div.availabilityinfo { white-space: normal; @@ -355,22 +360,21 @@ form.togglecompletion div { form.togglecompletion input { visibility: hidden; } -.togglecompletion input[type="image"] { + +.path-course-view li.activity span.autocompletion { + position: static; +} +.path-course-view li.activity span.autocompletion img, +.path-course-view li.activity form.togglecompletion [type="image"] { display: block !important; position: absolute !important; top: 21%; - right: 34px !important; + right: 4em !important; left:auto !important; visibility: visible; width: 26px; height: 23px; } -li.activity.ui-li-static span, li.activity div.availabilityinfo{ - margin-left: 1.3em; -} -.section li .contentafterlink .ui-li-desc { - margin: .5em 1em; -} .topics .content, .weeks .content { padding-left: 0px !important; padding-right: 0px !important; @@ -424,9 +428,17 @@ li.activity.label { padding: .6em !important; cursor:default; } +li.activity.label form.togglecompletion { position: relative; } +.sitetopic .section .activity .activityinstance, +.course-content .section .activity .activityinstance, +.sitetopic .section .activity .activityinstance div, +.course-content .section .activity .activityinstance div { display: block; } li.label .no-overflow ul, li.label .no-overflow ul li { list-style-position: inside; } +span.instancename { + font-size: 110%; +} .path-course-view .section .content { padding:0; margin: 0px; @@ -437,37 +449,6 @@ li.label .no-overflow ul, li.label .no-overflow ul li { .label div.no-overflow { overflow:inherit !important; } -/*course setions as pages for 2.3+ */ -.course-content ul.topics .section-summary { - -moz-border-radius: .6em /*{global-radii-blocks}*/; - -webkit-border-radius: .6em /*{global-radii-blocks}*/; - border-radius: .6em /*{global-radii-blocks}*/; -} -.course-content .section-summary { - border-color: rgba(0,0,0,.25); -} -.course-content ul.topics .section-summary .summarytext{ - margin: 0 0; - padding: .5em; -} -.course-content ul.topics li.section-summary .left { - background: transparent; - border: 0px; -} -.course-content .single-section .section-navigation .mdl-left, .course-content .single-section .section-navigation .mdl-right { - float: none; - margin-left: 0px; - margin-right: 0px; -} -.course-content .single-section .section-navigation .mdl-right .rarrow { - font-size: 80%; -} -.section-navigation.header.headingblock .mdl-left a .larrow, .section-navigation.mdl-bottom .mdl-left a .larrow, .section-navigation.header.headingblock .mdl-right a .rarrow, .section-navigation.mdl-bottom .mdl-right a .rarrow { - display: none; -} -.single-section .left.side { - display: none; -} /*forms */ .buttons .singlebutton, .buttons .singlebutton form, .buttons .singlebutton div, .mform .fitem fieldset.fgroup label, .mform .fradio label, .mform .fcheckbox label, .mform fieldset.fdate_selector label { display: inherit; @@ -568,9 +549,6 @@ margin:0; .forumheaderlist th { text-align: left; } -.forumheaderlist, .forumheaderlist thead, .forumheaderlist tbody { - display: block; -} .forumheaderlist thead .ui-btn-inner, .topic .ui-btn { text-align: left !important; } @@ -591,7 +569,6 @@ margin:0; } .forumheaderlist td, .forumheaderlist tr { padding: 0px !important; - display: block; } table.forumheaderlist2 td.topic a { padding: 10px; @@ -1391,7 +1368,49 @@ a.comment-link, .block_comments a.showcommentsnonjs, .block_comments .comment-ar .block_comments .comment-ctrl { display: block; } - +/*collapsed topic format*/ +#thetopics { + table-layout: inherit !important; + width: 100%; + display: block !important; +} +#page-course-view-topcollPAGE .section td.content, col.content { + text-align: left; + width: 100% !important; + overflow: hidden; +} +#page-course-view-topcollPAGE .section td.content { + padding: .5em; +} +#page-course-view-topcollPAGE td.left.side, #page-course-view-topcollPAGE td.right.side { + display: none; +} +#page-course-view-topcollPAGE tr.cps td a { + background: none !important; + color: inherit !important; + padding: 7px 0 7px 0px !important; +} +tr.cps td span { + font-style: inherit !important; + font-size: 1.12em !important; +} +#page-course-view-topcollPAGE .section.separator, td.cps_centre { + display: none; +} +tr.cps { + background-color: inherit !important; + color: inherit !important; +} +.opencps .ui-btn-inner .ui-icon-arrow-r { + background-position: -216px 50%; +} +tr.cps td span.ui-li-count { + font-size: .6em !important; + right: 12px; +} +#page-course-view-topcollPAGE .cps .ui-btn-inner { + white-space: normal; +} /*filemanager fixes and other button fixes and adds */ #page-mod-quiz-reportPAGE #commands input[type="submit"], #newmessagelinks a, .que input.submit { display: block !important; @@ -1458,15 +1477,11 @@ overflow:auto !important; opacity: 0.8; } /*current highlight */ -.weeks .current .headingwrap, -.topics .current div.headingwrap, -.current .ui-bar-b, -.current .left.side, -.tabtree ul.tabrow0 li.selected a { +.weeks .current .headingwrap, .topics .current div.headingwrap, .current .ui-bar-b, .current .left.side, .tabtree ul.tabrow0 li.selected a, .ui-btn-active, #page-course-view-topcollPAGE .current { border: 1px solid #F7C942; background: #fadb4e; color: #333; - text-shadow: 0 1px 0 #fff; + text-shadow: 0 1px 0 #fff; background-image: -webkit-gradient(linear, left top, left bottom, from(#fceda7), to(#fadb4e)); /* Saf4+, Chrome */ background-image: -webkit-linear-gradient(top, #fceda7, #fadb4e); /* Chrome 10+, Saf5.1+ */ background-image: -moz-linear-gradient(top, #fceda7, #fadb4e); /* FF3.6 */ @@ -1474,9 +1489,7 @@ overflow:auto !important; background-image: -o-linear-gradient(top, #fceda7, #fadb4e); /* Opera 11.10+ */ background-image: linear-gradient(top, #fceda7, #fadb4e); } -.ui-btn-active a.ui-link-inherit { - color: #333; -} +.ui-btn-active a.ui-link-inherit { color: #333; } /*changes to nav bar at top and header */ /*necessary to set the navbar the same as the buttons because floats are not perfect ... */ .ui-header .ui-navbar { @@ -1535,12 +1548,6 @@ overflow:auto !important; .ui-header .ui-fullsize .ui-btn-inner, .ui-footer .ui-fullsize .ui-btn-inner { font-size: 12.5px; } -.ui-header .ui-navbar li .ui-btn.ui-btn-active, .ui-header .ui-navbar li .ui-btn.ui-btn-hover { - text-shadow: none; -} -#navselectform .ui-btn { - margin-right: .4em; -} /*split page stuff for tablets */ div.tablets, #sliderdiv, .has-myblocks .jsetsbar { display: none; @@ -1666,40 +1673,5 @@ div.tablets, #sliderdiv, .has-myblocks .jsetsbar { max-width: 100px; max-height: 100px; } -/*filepicker */ -.yui3-widget.yui3-panel.yui3-widget-positioned.yui3-widget-stacked.yui3-widget-modal.yui3-dd-draggable.yui3-panel-focused { - top: 0px !important; - left: 0px !important; - width: 100% !important; -} -#filesskin .file-picker.fp-generallayout { - width: 100%; -} -.file-picker .fp-content,.file-picker .fp-repo-items { - width: 100%; -} -.file-picker .fp-repo-area { - width: 80px; -} -.file-picker .fp-repo-items { - display: inline-block; - margin-left: 81px; -} -/*2.4 updates*/ -.categorylist .category .indentation { - margin-left: 0px; -} -.sitetopic .section .activity .activityinstance, .course-content .section .activity .activityinstance, .sitetopic .section .activity .activityinstance div, .course-content .section .activity .activityinstance div { - display: block; -} -.path-course-view li.activity span.autocompletion img, .path-course-view li.activity form.togglecompletion input { - top: .85em; -} -.path-course-view li.activity form.togglecompletion input { - top: .55em; -} -#mymess, #uptotop { - margin: 0 0 !important; -} /** Custom CSS **/ [[setting:customcss]] \ No newline at end of file diff --git a/theme/mymobile/style/jmobile11.css b/theme/mymobile/style/jmobile11.css new file mode 100644 index 00000000000..4e0a49c7a85 --- /dev/null +++ b/theme/mymobile/style/jmobile11.css @@ -0,0 +1,2051 @@ +/* +* jQuery Mobile Framework 1.1.0 db342b1f315c282692791aa870455901fdb46a55 +* http://jquerymobile.com +* +* Copyright 2011 (c) jQuery Project +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +*/ +/* Swatches */ +/* A +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-a { + border: 1px solid #333 /*{a-bar-border}*/; + background: #111111 /*{a-bar-background-color}*/; + color: #ffffff /*{a-bar-color}*/; + font-weight: bold; + text-shadow: 0 /*{a-bar-shadow-x}*/ -1px /*{a-bar-shadow-y}*/ 1px /*{a-bar-shadow-radius}*/ #000000 /*{a-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #3c3c3c /*{a-bar-background-start}*/), to( #111 /*{a-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); +} +.ui-bar-a, +.ui-bar-a input, +.ui-bar-a select, +.ui-bar-a textarea, +.ui-bar-a button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-a .ui-link-inherit { + color: #fff /*{a-bar-color}*/; +} +.ui-bar-a .ui-link { + color: #7cc4e7 /*{a-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-a .ui-link:hover { + color: #2489CE /*{a-bar-link-hover}*/; +} +.ui-bar-a .ui-link:active { + color: #2489CE /*{a-bar-link-active}*/; +} +.ui-bar-a .ui-link:visited { + color: #2489CE /*{a-bar-link-visited}*/; +} +.ui-body-a, +.ui-overlay-a { + border: 1px solid #444 /*{a-body-border}*/; + background: #222 /*{a-body-background-color}*/; + color: #fff /*{a-body-color}*/; + text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 1px /*{a-body-shadow-radius}*/ #111 /*{a-body-shadow-color}*/; + font-weight: normal; + background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-body-background-start}*/), to( #222 /*{a-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); +} +.ui-overlay-a { + background-image: none; + border-width: 0; +} +.ui-body-a, +.ui-body-a input, +.ui-body-a select, +.ui-body-a textarea, +.ui-body-a button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-a .ui-link-inherit { + color: #fff /*{a-body-color}*/; +} +.ui-body-a .ui-link { + color: #2489CE /*{a-body-link-color}*/; + font-weight: bold; +} +.ui-body-a .ui-link:hover { + color: #2489CE /*{a-body-link-hover}*/; +} +.ui-body-a .ui-link:active { + color: #2489CE /*{a-body-link-active}*/; +} +.ui-body-a .ui-link:visited { + color: #2489CE /*{a-body-link-visited}*/; +} +.ui-btn-up-a { + border: 1px solid #111 /*{a-bup-border}*/; + background: #333 /*{a-bup-background-color}*/; + font-weight: bold; + color: #fff /*{a-bup-color}*/; + text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 1px /*{a-bup-shadow-radius}*/ #111 /*{a-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #444444 /*{a-bup-background-start}*/), to( #2d2d2d /*{a-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); +} +.ui-btn-up-a a.ui-link-inherit { + color: #fff /*{a-bup-color}*/; +} +.ui-btn-hover-a { + border: 1px solid #000 /*{a-bhover-border}*/; + background: #444444 /*{a-bhover-background-color}*/; + font-weight: bold; + color: #fff /*{a-bhover-color}*/; + text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 1px /*{a-bhover-shadow-radius}*/ #111 /*{a-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #555555 /*{a-bhover-background-start}*/), to( #383838 /*{a-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); +} +.ui-btn-hover-a a.ui-link-inherit { + color: #fff /*{a-bhover-color}*/; +} +.ui-btn-down-a { + border: 1px solid #000 /*{a-bdown-border}*/; + background: #222 /*{a-bdown-background-color}*/; + font-weight: bold; + color: #fff /*{a-bdown-color}*/; + text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 1px /*{a-bdown-shadow-radius}*/ #111 /*{a-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #202020 /*{a-bdown-background-start}*/), to( #2c2c2c /*{a-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); +} +.ui-btn-down-a a.ui-link-inherit { + color: #fff /*{a-bdown-color}*/; +} +.ui-btn-up-a, +.ui-btn-hover-a, +.ui-btn-down-a { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* B +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-b { + border: 1px solid #456f9a /*{b-bar-border}*/; + background: #5e87b0 /*{b-bar-background-color}*/; + color: #fff /*{b-bar-color}*/; + font-weight: bold; + text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 1px /*{b-bar-shadow-radius}*/ #3e6790 /*{b-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bar-background-start}*/), to( #497bae /*{b-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); +} +.ui-bar-b, +.ui-bar-b input, +.ui-bar-b select, +.ui-bar-b textarea, +.ui-bar-b button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-b .ui-link-inherit { + color: #fff /*{b-bar-color}*/; +} +.ui-bar-b .ui-link { + color: #ddf0f8 /*{b-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-b .ui-link:hover { + color: #ddf0f8 /*{b-bar-link-hover}*/; +} +.ui-bar-b .ui-link:active { + color: #ddf0f8 /*{b-bar-link-active}*/; +} +.ui-bar-b .ui-link:visited { + color: #ddf0f8 /*{b-bar-link-visited}*/; +} +.ui-body-b, +.ui-overlay-b { + border: 1px solid #999 /*{b-body-border}*/; + background: #f3f3f3 /*{b-body-background-color}*/; + color: #222222 /*{b-body-color}*/; + text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ #fff /*{b-body-shadow-color}*/; + font-weight: normal; + background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{b-body-background-start}*/), to( #ccc /*{b-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); +} +.ui-overlay-b { + background-image: none; + border-width: 0; +} +.ui-body-b, +.ui-body-b input, +.ui-body-b select, +.ui-body-b textarea, +.ui-body-b button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-b .ui-link-inherit { + color: #333333 /*{b-body-color}*/; +} +.ui-body-b .ui-link { + color: #2489CE /*{b-body-link-color}*/; + font-weight: bold; +} +.ui-body-b .ui-link:hover { + color: #2489CE /*{b-body-link-hover}*/; +} +.ui-body-b .ui-link:active { + color: #2489CE /*{b-body-link-active}*/; +} +.ui-body-b .ui-link:visited { + color: #2489CE /*{b-body-link-visited}*/; +} +.ui-btn-up-b { + border: 1px solid #044062 /*{b-bup-border}*/; + background: #396b9e /*{b-bup-background-color}*/; + font-weight: bold; + color: #fff /*{b-bup-color}*/; + text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 1px /*{b-bup-shadow-radius}*/ #194b7e /*{b-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #5f9cc5 /*{b-bup-background-start}*/), to( #396b9e /*{b-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); +} +.ui-btn-up-b a.ui-link-inherit { + color: #fff /*{b-bup-color}*/; +} +.ui-btn-hover-b { + border: 1px solid #00415e /*{b-bhover-border}*/; + background: #4b88b6 /*{b-bhover-background-color}*/; + font-weight: bold; + color: #fff /*{b-bhover-color}*/; + text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 1px /*{b-bhover-shadow-radius}*/ #194b7e /*{b-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bhover-background-start}*/), to( #4272a4 /*{b-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); +} +.ui-btn-hover-b a.ui-link-inherit { + color: #fff /*{b-bhover-color}*/; +} +.ui-btn-down-b { + border: 1px solid #225377 /*{b-bdown-border}*/; + background: #4e89c5 /*{b-bdown-background-color}*/; + font-weight: bold; + color: #fff /*{b-bdown-color}*/; + text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 1px /*{b-bdown-shadow-radius}*/ #194b7e /*{b-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #295b8e /*{b-bdown-background-start}*/), to( #3e79b5 /*{b-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); +} +.ui-btn-down-b a.ui-link-inherit { + color: #fff /*{b-bdown-color}*/; +} +.ui-btn-up-b, +.ui-btn-hover-b, +.ui-btn-down-b { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* C +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-c { + border: 1px solid #B3B3B3 /*{c-bar-border}*/; + background: #eeeeee /*{c-bar-background-color}*/; + color: #3E3E3E /*{c-bar-color}*/; + font-weight: bold; + text-shadow: 0 /*{c-bar-shadow-x}*/ 1px /*{c-bar-shadow-y}*/ 1px /*{c-bar-shadow-radius}*/ #fff /*{c-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f0f0f0 /*{c-bar-background-start}*/), to( #ddd /*{c-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); +} +.ui-bar-c .ui-link-inherit { + color: #3E3E3E /*{c-bar-color}*/; +} +.ui-bar-c .ui-link { + color: #7cc4e7 /*{c-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-c .ui-link:hover { + color: #2489CE /*{c-bar-link-hover}*/; +} +.ui-bar-c .ui-link:active { + color: #2489CE /*{c-bar-link-active}*/; +} +.ui-bar-c .ui-link:visited { + color: #2489CE /*{c-bar-link-visited}*/; +} +.ui-bar-c, +.ui-bar-c input, +.ui-bar-c select, +.ui-bar-c textarea, +.ui-bar-c button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-c, +.ui-overlay-c { + border: 1px solid #aaa /*{c-body-border}*/; + color: #333333 /*{c-body-color}*/; + text-shadow: 0 /*{c-body-shadow-x}*/ 1px /*{c-body-shadow-y}*/ 0 /*{c-body-shadow-radius}*/ #fff /*{c-body-shadow-color}*/; + background: #f9f9f9 /*{c-body-background-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f9f9f9 /*{c-body-background-start}*/), to( #eeeeee /*{c-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); +} +.ui-overlay-c { + background-image: none; + border-width: 0; +} +.ui-body-c, +.ui-body-c input, +.ui-body-c select, +.ui-body-c textarea, +.ui-body-c button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-c .ui-link-inherit { + color: #333333 /*{c-body-color}*/; +} +.ui-body-c .ui-link { + color: #2489CE /*{c-body-link-color}*/; + font-weight: bold; +} +.ui-body-c .ui-link:hover { + color: #2489CE /*{c-body-link-hover}*/; +} +.ui-body-c .ui-link:active { + color: #2489CE /*{c-body-link-active}*/; +} +.ui-body-c .ui-link:visited { + color: #2489CE /*{c-body-link-visited}*/; +} +.ui-btn-up-c { + border: 1px solid #ccc /*{c-bup-border}*/; + background: #eee /*{c-bup-background-color}*/; + font-weight: bold; + color: #222 /*{c-bup-color}*/; + text-shadow: 0 /*{c-bup-shadow-x}*/ 1px /*{c-bup-shadow-y}*/ 0 /*{c-bup-shadow-radius}*/ #ffffff /*{c-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #ffffff /*{c-bup-background-start}*/), to( #f1f1f1 /*{c-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); +} +.ui-btn-up-c a.ui-link-inherit { + color: #2F3E46 /*{c-bup-color}*/; +} +.ui-btn-hover-c { + border: 1px solid #bbb /*{c-bhover-border}*/; + background: #dfdfdf /*{c-bhover-background-color}*/; + font-weight: bold; + color: #222 /*{c-bhover-color}*/; + text-shadow: 0 /*{c-bhover-shadow-x}*/ 1px /*{c-bhover-shadow-y}*/ 0 /*{c-bhover-shadow-radius}*/ #ffffff /*{c-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f6f6f6 /*{c-bhover-background-start}*/), to( #e0e0e0 /*{c-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f9f9f9 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); +} +.ui-btn-hover-c a.ui-link-inherit { + color: #2F3E46 /*{c-bhover-color}*/; +} +.ui-btn-down-c { + border: 1px solid #bbb /*{c-bdown-border}*/; + background: #d6d6d6 /*{c-bdown-background-color}*/; + font-weight: bold; + color: #222 /*{c-bdown-color}*/; + text-shadow: 0 /*{c-bdown-shadow-x}*/ 1px /*{c-bdown-shadow-y}*/ 0 /*{c-bdown-shadow-radius}*/ #ffffff /*{c-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #d0d0d0 /*{c-bdown-background-start}*/), to( #dfdfdf /*{c-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); +} +.ui-btn-down-c a.ui-link-inherit { + color: #2F3E46 /*{c-bdown-color}*/; +} +.ui-btn-up-c, +.ui-btn-hover-c, +.ui-btn-down-c { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* D +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-d { + border: 1px solid #bbb /*{d-bar-border}*/; + background: #bbb /*{d-bar-background-color}*/; + color: #333 /*{d-bar-color}*/; + text-shadow: 0 /*{d-bar-shadow-x}*/ 1px /*{d-bar-shadow-y}*/ 0 /*{d-bar-shadow-radius}*/ #eee /*{d-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{d-bar-background-start}*/), to( #bbb /*{d-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); +} +.ui-bar-d, +.ui-bar-d input, +.ui-bar-d select, +.ui-bar-d textarea, +.ui-bar-d button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-d .ui-link-inherit { + color: #333333 /*{d-bar-color}*/; +} +.ui-bar-d .ui-link { + color: #2489CE /*{d-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-d .ui-link:hover { + color: #2489CE /*{d-bar-link-hover}*/; +} +.ui-bar-d .ui-link:active { + color: #2489CE /*{d-bar-link-active}*/; +} +.ui-bar-d .ui-link:visited { + color: #2489CE /*{d-bar-link-visited}*/; +} +.ui-body-d, +.ui-overlay-d { + border: 1px solid #bbb /*{d-body-border}*/; + color: #333333 /*{d-body-color}*/; + text-shadow: 0 /*{d-body-shadow-x}*/ 1px /*{d-body-shadow-y}*/ 0 /*{d-body-shadow-radius}*/ #fff /*{d-body-shadow-color}*/; + background: #ffffff /*{d-body-background-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fff), to( #fff /*{d-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); +} +.ui-overlay-d { + background-image: none; + border-width: 0; +} +.ui-body-d, +.ui-body-d input, +.ui-body-d select, +.ui-body-d textarea, +.ui-body-d button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-d .ui-link-inherit { + color: #333333 /*{d-body-color}*/; +} +.ui-body-d .ui-link { + color: #2489CE /*{d-body-link-color}*/; + font-weight: bold; +} +.ui-body-d .ui-link:hover { + color: #2489CE /*{d-body-link-hover}*/; +} +.ui-body-d .ui-link:active { + color: #2489CE /*{d-body-link-active}*/; +} +.ui-body-d .ui-link:visited { + color: #2489CE /*{d-body-link-visited}*/; +} +.ui-btn-up-d { + border: 1px solid #bbb /*{d-bup-border}*/; + background: #fff /*{d-bup-background-color}*/; + font-weight: bold; + color: #333 /*{d-bup-color}*/; + text-shadow: 0 /*{d-bup-shadow-x}*/ 1px /*{d-bup-shadow-y}*/ 0 /*{d-bup-shadow-radius}*/ #fff /*{d-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fafafa), to( #f6f6f6 /*{d-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); +} +.ui-btn-up-d a.ui-link-inherit { + color: #333 /*{d-bup-color}*/; +} +.ui-btn-hover-d { + border: 1px solid #aaa /*{d-bhover-border}*/; + background: #eeeeee /*{d-bhover-background-color}*/; + font-weight: bold; + color: #333 /*{d-bhover-color}*/; + cursor: pointer; + text-shadow: 0 /*{d-bhover-shadow-x}*/ 1px /*{d-bhover-shadow-y}*/ 0 /*{d-bhover-shadow-radius}*/ #fff /*{d-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #eee), to( #fff /*{d-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); +} +.ui-btn-hover-d a.ui-link-inherit { + color: #333 /*{d-bhover-color}*/; +} +.ui-btn-down-d { + border: 1px solid #aaa /*{d-bdown-border}*/; + background: #eee /*{d-bdown-background-color}*/; + font-weight: bold; + color: #333 /*{d-bdown-color}*/; + text-shadow: 0 /*{d-bdown-shadow-x}*/ 1px /*{d-bdown-shadow-y}*/ 0 /*{d-bdown-shadow-radius}*/ #ffffff /*{d-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #e5e5e5 /*{d-bdown-background-start}*/), to( #f2f2f2 /*{d-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); +} +.ui-btn-down-d a.ui-link-inherit { + color: #333 /*{d-bdown-color}*/; +} +.ui-btn-up-d, +.ui-btn-hover-d, +.ui-btn-down-d { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* E +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-e { + border: 1px solid #F7C942 /*{e-bar-border}*/; + background: #fadb4e /*{e-bar-background-color}*/; + color: #333 /*{e-bar-color}*/; + text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/ #fff /*{e-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fbef7e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); +} +.ui-bar-e, +.ui-bar-e input, +.ui-bar-e select, +.ui-bar-e textarea, +.ui-bar-e button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-e .ui-link-inherit { + color: #333333 /*{e-bar-color}*/; +} +.ui-bar-e .ui-link { + color: #2489CE /*{e-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-e .ui-link:hover { + color: #2489CE /*{e-bar-link-hover}*/; +} +.ui-bar-e .ui-link:active { + color: #2489CE /*{e-bar-link-active}*/; +} +.ui-bar-e .ui-link:visited { + color: #2489CE /*{e-bar-link-visited}*/; +} +.ui-body-e, +.ui-overlay-e { + border: 1px solid #F7C942 /*{e-body-border}*/; + color: #222222 /*{e-body-color}*/; + text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/ #fff /*{e-body-shadow-color}*/; + background: #fff9df /*{e-body-background-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fffadf /*{e-body-background-start}*/), to( #fff3a5 /*{e-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); +} +.ui-overlay-e { + background-image: none; + border-width: 0; +} +.ui-body-e, +.ui-body-e input, +.ui-body-e select, +.ui-body-e textarea, +.ui-body-e button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-e .ui-link-inherit { + color: #333333 /*{e-body-color}*/; +} +.ui-body-e .ui-link { + color: #2489CE /*{e-body-link-color}*/; + font-weight: bold; +} +.ui-body-e .ui-link:hover { + color: #2489CE /*{e-body-link-hover}*/; +} +.ui-body-e .ui-link:active { + color: #2489CE /*{e-body-link-active}*/; +} +.ui-body-e .ui-link:visited { + color: #2489CE /*{e-body-link-visited}*/; +} +.ui-btn-up-e { + border: 1px solid #F4C63f /*{e-bup-border}*/; + background: #fadb4e /*{e-bup-background-color}*/; + font-weight: bold; + color: #222 /*{e-bup-color}*/; + text-shadow: 0 /*{e-bup-shadow-x}*/ 1px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/ #fff /*{e-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #ffefaa /*{e-bup-background-start}*/), to( #ffe155 /*{e-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); +} +.ui-btn-up-e a.ui-link-inherit { + color: #222 /*{e-bup-color}*/; +} +.ui-btn-hover-e { + border: 1px solid #F2C43d /*{e-bhover-border}*/; + background: #fbe26f /*{e-bhover-background-color}*/; + font-weight: bold; + color: #111 /*{e-bhover-color}*/; + text-shadow: 0 /*{e-bhover-shadow-x}*/ 1px /*{e-bhover-shadow-y}*/ 0 /*{e-bhover-shadow-radius}*/ #fff /*{e-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fff5ba /*{e-bhover-background-start}*/), to( #fbdd52 /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); +} +.ui-btn-hover-e a.ui-link-inherit { + color: #333 /*{e-bhover-color}*/; +} +.ui-btn-down-e { + border: 1px solid #F2C43d /*{e-bdown-border}*/; + background: #fceda7 /*{e-bdown-background-color}*/; + font-weight: bold; + color: #111 /*{e-bdown-color}*/; + text-shadow: 0 /*{e-bdown-shadow-x}*/ 1px /*{e-bdown-shadow-y}*/ 0 /*{e-bdown-shadow-radius}*/ #ffffff /*{e-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f8d94c /*{e-bdown-background-start}*/), to( #fadb4e /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); +} +.ui-btn-down-e a.ui-link-inherit { + color: #333 /*{e-bdown-color}*/; +} +.ui-btn-up-e, +.ui-btn-hover-e, +.ui-btn-down-e { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* Structure */ +/* links within "buttons" +-----------------------------------------------------------------------------------------------------------*/ +a.ui-link-inherit { + text-decoration: none !important; +} +/* Active class used as the "on" state across all themes +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-active { + border: 1px solid #2373a5 /*{global-active-border}*/; + background: #5393c5 /*{global-active-background-color}*/; + font-weight: bold; + color: #fff /*{global-active-color}*/; + cursor: pointer; + text-shadow: 0 /*{global-active-shadow-x}*/ 1px /*{global-active-shadow-y}*/ 1px /*{global-active-shadow-radius}*/ #3373a5 /*{global-active-shadow-color}*/; + text-decoration: none; + background-image: -webkit-gradient(linear, left top, left bottom, from( #5393c5 /*{global-active-background-start}*/), to( #6facd5 /*{global-active-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-btn-active a.ui-link-inherit { + color: #fff /*{global-active-color}*/; +} +/* button inner top highlight +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-inner { + border-top: 1px solid #fff; + border-color: rgba(255,255,255,.3); +} +/* corner rounding classes +-----------------------------------------------------------------------------------------------------------*/ +.ui-corner-tl { + -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; + -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; + border-top-left-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-tr { + -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; + -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; + border-top-right-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-bl { + -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; + border-bottom-left-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-br { + -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; + border-bottom-right-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-top { + -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; + -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; + border-top-left-radius: .6em /*{global-radii-blocks}*/; + -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; + -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; + border-top-right-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-bottom { + -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; + border-bottom-left-radius: .6em /*{global-radii-blocks}*/; + -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; + border-bottom-right-radius: .6em /*{global-radii-blocks}*/; + } +.ui-corner-right { + -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; + -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; + border-top-right-radius: .6em /*{global-radii-blocks}*/; + -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; + border-bottom-right-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-left { + -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; + -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; + border-top-left-radius: .6em /*{global-radii-blocks}*/; + -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; + border-bottom-left-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-all { + -moz-border-radius: .6em /*{global-radii-blocks}*/; + -webkit-border-radius: .6em /*{global-radii-blocks}*/; + border-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-none { + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} +/* Form field separator +-----------------------------------------------------------------------------------------------------------*/ +.ui-br { + border-bottom: rgb(130,130,130); + border-bottom: rgba(130,130,130,.3); + border-bottom-width: 1px; + border-bottom-style: solid; +} +/* Interaction cues +-----------------------------------------------------------------------------------------------------------*/ +.ui-disabled { + opacity: .3; +} +.ui-disabled, +.ui-disabled a { + cursor: default !important; + pointer-events: none; +} +.ui-disabled .ui-btn-text { + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=30)"; + filter: alpha(opacity=30); + zoom: 1; +} +/* Icons +-----------------------------------------------------------------------------------------------------------*/ +.ui-icon, +.ui-icon-searchfield:after { + background: #666 /*{global-icon-color}*/; + background: rgba(0,0,0,.4) /*{global-icon-disc}*/; + background-image: url([[pix:theme|icons-18-white]]) /*{global-icon-set}*/; + background-repeat: no-repeat; + -moz-border-radius: 9px; + -webkit-border-radius: 9px; + border-radius: 9px; +} +/* Alt icon color +-----------------------------------------------------------------------------------------------------------*/ +.ui-icon-alt { + background: #fff; + background: rgba(255,255,255,.3); + background-image: url([[pix:theme|icons-18-black]]); + background-repeat: no-repeat; +} +/* HD/"retina" sprite +-----------------------------------------------------------------------------------------------------------*/ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (min--moz-device-pixel-ratio: 1.5), + only screen and (min-resolution: 240dpi) { + + .ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r, + .ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check, + .ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back, + .ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-search, .ui-icon-searchfield:after, + .ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on { + background-image: url([[pix:theme|icons-36-white]]); + -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([[pix:theme|icons-36-black]]); + } +} +/* plus minus */ +.ui-icon-plus { + background-position: -0 50%; +} +.ui-icon-minus { + background-position: -36px 50%; +} +/* delete/close */ +.ui-icon-delete { + background-position: -72px 50%; +} +/* arrows */ +.ui-icon-arrow-r { + background-position: -108px 50%; +} +.ui-icon-arrow-l { + background-position: -144px 50%; +} +.ui-icon-arrow-u { + background-position: -180px 50%; +} +.ui-icon-arrow-d { + background-position: -216px 50%; +} +/* misc */ +.ui-icon-check { + background-position: -252px 50%; +} +.ui-icon-gear { + background-position: -288px 50%; +} +.ui-icon-refresh { + background-position: -324px 50%; +} +.ui-icon-forward { + background-position: -360px 50%; +} +.ui-icon-back { + background-position: -396px 50%; +} +.ui-icon-grid { + background-position: -432px 50%; +} +.ui-icon-star { + background-position: -468px 50%; +} +.ui-icon-alert { + background-position: -504px 50%; +} +.ui-icon-info { + background-position: -540px 50%; +} +.ui-icon-home { + background-position: -576px 50%; +} +.ui-icon-search, +.ui-icon-searchfield:after { + background-position: -612px 50%; +} +.ui-icon-checkbox-off { + background-position: -684px 50%; +} +.ui-icon-checkbox-on { + background-position: -648px 50%; +} +.ui-icon-radio-off { + background-position: -756px 50%; +} +.ui-icon-radio-on { + background-position: -720px 50%; +} +/* checks,radios */ +.ui-checkbox .ui-icon { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} +.ui-icon-checkbox-off, +.ui-icon-radio-off { + background-color: transparent; +} +.ui-checkbox-on .ui-icon, +.ui-radio-on .ui-icon { + background-color: #4596ce /*{global-active-background-color}*/; /* NOTE: this hex should match the active state color. It's repeated here for cascade */ +} +/* loading icon */ +.ui-icon-loading { + background: url([[pix:theme|ajax-loader2]]); + background-size: 46px 46px; +} +/* Button corner classes +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-corner-tl { + -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; + -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; + border-top-left-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-tr { + -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; + -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; + border-top-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-bl { + -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; + border-bottom-left-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-br { + -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; + border-bottom-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-top { + -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; + -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; + border-top-left-radius: 1em /*{global-radii-buttons}*/; + -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; + -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; + border-top-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-bottom { + -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; + border-bottom-left-radius: 1em /*{global-radii-buttons}*/; + -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; + border-bottom-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-right { + -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; + -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; + border-top-right-radius: 1em /*{global-radii-buttons}*/; + -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; + border-bottom-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-left { + -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; + -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; + border-top-left-radius: 1em /*{global-radii-buttons}*/; + -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; + border-bottom-left-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-all { + -moz-border-radius: 1em /*{global-radii-buttons}*/; + -webkit-border-radius: 1em /*{global-radii-buttons}*/; + border-radius: 1em /*{global-radii-buttons}*/; +} +/* radius clip workaround for cleaning up corner trapping */ +.ui-corner-tl, +.ui-corner-tr, +.ui-corner-bl, +.ui-corner-br, +.ui-corner-top, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-left, +.ui-corner-all, +.ui-btn-corner-tl, +.ui-btn-corner-tr, +.ui-btn-corner-bl, +.ui-btn-corner-br, +.ui-btn-corner-top, +.ui-btn-corner-bottom, +.ui-btn-corner-right, +.ui-btn-corner-left, +.ui-btn-corner-all { + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} +/* Overlay / modal +-----------------------------------------------------------------------------------------------------------*/ +.ui-overlay { + background: #666; + opacity: .5; + filter: Alpha(Opacity=50); + position: absolute; + width: 100%; + height: 100%; +} +.ui-overlay-shadow { + -moz-box-shadow: 0px 0px 12px rgba(0,0,0,.6); + -webkit-box-shadow: 0px 0px 12px rgba(0,0,0,.6); + box-shadow: 0px 0px 12px rgba(0,0,0,.6); +} +.ui-shadow { + -moz-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; + -webkit-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; + box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; +} +.ui-bar-a .ui-shadow, +.ui-bar-b .ui-shadow , +.ui-bar-c .ui-shadow { + -moz-box-shadow: 0px 1px 0 rgba(255,255,255,.3); + -webkit-box-shadow: 0px 1px 0 rgba(255,255,255,.3); + box-shadow: 0px 1px 0 rgba(255,255,255,.3); +} +.ui-shadow-inset { + -moz-box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); + -webkit-box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); + box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); +} +.ui-icon-shadow { + -moz-box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; + -webkit-box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; + box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; +} +/* Focus state - set here for specificity (note: these classes are added by JavaScript) +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn:focus { + outline: 0; +} +.ui-focus, +.ui-btn:focus { + -moz-box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; + -webkit-box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; + box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; +} +/* unset box shadow in browsers that don't do it right +-----------------------------------------------------------------------------------------------------------*/ +.ui-mobile-nosupport-boxshadow * { + -moz-box-shadow: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; +} +/* ...and bring back focus */ +.ui-mobile-nosupport-boxshadow .ui-focus, +.ui-mobile-nosupport-boxshadow .ui-btn:focus { + outline-width: 1px; + outline-style: dotted; +} +/* some unsets - more probably needed */ +.ui-mobile, .ui-mobile body { height: 99.9%; } +.ui-mobile fieldset, .ui-page { padding: 0; margin: 0; } +.ui-mobile a img, .ui-mobile fieldset { border-width: 0; } +/* responsive page widths */ +.ui-mobile-viewport { margin: 0; overflow-x: visible; -webkit-text-size-adjust: none; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } +/* Issue #2066 */ +body.ui-mobile-viewport, +div.ui-mobile-viewport { overflow-x: hidden; } +/* "page" containers - full-screen views, one should always be in view post-pageload */ +.ui-mobile [data-role=page], .ui-mobile [data-role=dialog], .ui-page { top: 0; left: 0; width: 100%; min-height: 100%; position: absolute; display: none; border: 0; } +.ui-mobile .ui-page-active { display: block; overflow: visible; } +/* on ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */ +.ui-page { outline: none; } +/*orientations from js are available */ +@media screen and (orientation: portrait){ +.ui-mobile, .ui-mobile .ui-page { min-height: 420px; } +} +@media screen and (orientation: landscape){ +.ui-mobile, .ui-mobile .ui-page { min-height: 300px; } +} +/* loading screen */ +.ui-loading .ui-loader { display: block; } +.ui-loader { display: none; z-index: 9999999; position: fixed; top: 50%; box-shadow: 0 1px 1px -1px #fff; left: 50%; border:0; } +.ui-loader-default { background: none; opacity: .18; width: 46px; height: 46px; margin-left: -23px; margin-top: -23px; } +.ui-loader-verbose { width: 200px; opacity: .88; height: auto; margin-left: -110px; margin-top: -43px; padding: 10px; } +.ui-loader-default h1 { font-size: 0; width: 0; height: 0; overflow: hidden; } +.ui-loader-verbose h1 { font-size: 16px; margin: 0; text-align: center; } +.ui-loader .ui-icon { background-color: #000; display: block; margin: 0; width: 44px; height: 44px; padding: 1px; -webkit-border-radius: 36px; -moz-border-radius: 36px; border-radius: 36px; } +.ui-loader-verbose .ui-icon { margin: 0 auto 10px; opacity: .75; } +.ui-loader-textonly { padding: 15px; margin-left: -115px; } +.ui-loader-textonly .ui-icon { display: none; } +.ui-loader-fakefix { position: absolute; } +/*fouc*/ +.ui-mobile-rendering > * { visibility: hidden; } +/*headers, content panels*/ +.ui-bar, .ui-body { position: relative; padding: .4em 15px; overflow: hidden; display: block; clear:both; } +.ui-bar { font-size: 16px; margin: 0; } +.ui-bar h1, .ui-bar h2, .ui-bar h3, .ui-bar h4, .ui-bar h5, .ui-bar h6 { margin: 0; padding: 0; font-size: 16px; display: inline-block; } +.ui-header, .ui-footer { position: relative; border-left-width: 0; border-right-width: 0; } +.ui-header .ui-btn-left, +.ui-header .ui-btn-right, +.ui-footer .ui-btn-left, +.ui-footer .ui-btn-right { position: absolute; top: 3px; } +.ui-header .ui-btn-left, +.ui-footer .ui-btn-left { left: 5px; } +.ui-header .ui-btn-right, +.ui-footer .ui-btn-right { right: 5px; } +.ui-footer .ui-btn-icon-notext, +.ui-header .ui-btn-icon-notext { top: 6px; } +.ui-header .ui-title, .ui-footer .ui-title { min-height: 1.1em; text-align: center; font-size: 16px; display: block; margin: .6em 30% .8em; padding: 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; outline: 0 !important; } +.ui-footer .ui-title { margin: .6em 15px .8em; } +/*content area*/ +.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; } +/* icons sizing */ +.ui-icon { width: 18px; height: 18px; } +/* non-js content hiding */ +.ui-nojs { position: absolute; left: -9999px; } +/* accessible content hiding */ +.ui-hide-label label, +.ui-hidden-accessible { position: absolute !important; left: -9999px; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +/* Transitions originally inspired by those from jQtouch, nice work, folks */ +.ui-mobile-viewport-transitioning, +.ui-mobile-viewport-transitioning .ui-page { + width: 100%; + height: 100%; + overflow: hidden; +} +.in { + -webkit-animation-timing-function: ease-out; + -webkit-animation-duration: 350ms; + -moz-animation-timing-function: ease-out; + -moz-animation-duration: 350ms; +} +.out { + -webkit-animation-timing-function: ease-in; + -webkit-animation-duration: 225ms; + -moz-animation-timing-function: ease-in; + -moz-animation-duration: 225; +} +@-webkit-keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} +@-moz-keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} +@-webkit-keyframes fadeout { + from { opacity: 1; } + to { opacity: 0; } +} +@-moz-keyframes fadeout { + from { opacity: 1; } + to { opacity: 0; } +} +.fade.out { + opacity: 0; + -webkit-animation-duration: 125ms; + -webkit-animation-name: fadeout; + -moz-animation-duration: 125ms; + -moz-animation-name: fadeout; +} +.fade.in { + opacity: 1; + -webkit-animation-duration: 225ms; + -webkit-animation-name: fadein; + -moz-animation-duration: 225ms; + -moz-animation-name: fadein; +} +.pop { + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; +} +.pop.in { + -webkit-transform: scale(1); + -moz-transform: scale(1); + opacity: 1; + -webkit-animation-name: popin; + -moz-animation-name: popin; + -webkit-animation-duration: 350ms; + -moz-animation-duration: 350ms; +} +.pop.out { + -webkit-animation-name: fadeout; + -moz-animation-name: fadeout; + opacity: 0; + -webkit-animation-duration: 100ms; + -moz-animation-duration: 100ms; +} +.pop.in.reverse { + -webkit-animation-name: fadein; + -moz-animation-name: fadein; +} +.pop.out.reverse { + -webkit-transform: scale(.8); + -moz-transform: scale(.8); + -webkit-animation-name: popout; + -moz-animation-name: popout; +} +@-webkit-keyframes popin { + from { + -webkit-transform: scale(.8); + opacity: 0; + } + to { + -webkit-transform: scale(1); + opacity: 1; + } +} +@-moz-keyframes popin { + from { + -moz-transform: scale(.8); + opacity: 0; + } + to { + -moz-transform: scale(1); + opacity: 1; + } +} +@-webkit-keyframes popout { + from { + -webkit-transform: scale(1); + opacity: 1; + } + to { + -webkit-transform: scale(.8); + opacity: 0; + } +} +@-moz-keyframes popout { + from { + -moz-transform: scale(1); + opacity: 1; + } + to { + -moz-transform: scale(.8); + opacity: 0; + } +} +/* keyframes for slidein from sides */ +@-webkit-keyframes slideinfromright { + from { -webkit-transform: translateX(100%); } + to { -webkit-transform: translateX(0); } +} +@-moz-keyframes slideinfromright { + from { -moz-transform: translateX(100%); } + to { -moz-transform: translateX(0); } +} +@-webkit-keyframes slideinfromleft { + from { -webkit-transform: translateX(-100%); } + to { -webkit-transform: translateX(0); } +} +@-moz-keyframes slideinfromleft { + from { -moz-transform: translateX(-100%); } + to { -moz-transform: translateX(0); } +} +/* keyframes for slideout to sides */ +@-webkit-keyframes slideouttoleft { + from { -webkit-transform: translateX(0); } + to { -webkit-transform: translateX(-100%); } +} +@-moz-keyframes slideouttoleft { + from { -moz-transform: translateX(0); } + to { -moz-transform: translateX(-100%); } +} +@-webkit-keyframes slideouttoright { + from { -webkit-transform: translateX(0); } + to { -webkit-transform: translateX(100%); } +} +@-moz-keyframes slideouttoright { + from { -moz-transform: translateX(0); } + to { -moz-transform: translateX(100%); } +} +.slide.out, .slide.in { + -webkit-animation-timing-function: ease-out; + -webkit-animation-duration: 350ms; + -moz-animation-timing-function: ease-out; + -moz-animation-duration: 350ms; +} +.slide.out { + -webkit-transform: translateX(-100%); + -webkit-animation-name: slideouttoleft; + -moz-transform: translateX(-100%); + -moz-animation-name: slideouttoleft; +} +.slide.in { + -webkit-transform: translateX(0); + -webkit-animation-name: slideinfromright; + -moz-transform: translateX(0); + -moz-animation-name: slideinfromright; +} +.slide.out.reverse { + -webkit-transform: translateX(100%); + -webkit-animation-name: slideouttoright; + -moz-transform: translateX(100%); + -moz-animation-name: slideouttoright; +} +.slide.in.reverse { + -webkit-transform: translateX(0); + -webkit-animation-name: slideinfromleft; + -moz-transform: translateX(0); + -moz-animation-name: slideinfromleft; +} +.slidefade.out { + -webkit-transform: translateX(-100%); + -webkit-animation-name: slideouttoleft; + -moz-transform: translateX(-100%); + -moz-animation-name: slideouttoleft; + -webkit-animation-duration: 225ms; + -moz-animation-duration: 225ms; +} +.slidefade.in { + -webkit-transform: translateX(0); + -webkit-animation-name: fadein; + -moz-transform: translateX(0); + -moz-animation-name: fadein; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +.slidefade.out.reverse { + -webkit-transform: translateX(100%); + -webkit-animation-name: slideouttoright; + -moz-transform: translateX(100%); + -moz-animation-name: slideouttoright; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +.slidefade.in.reverse { + -webkit-transform: translateX(0); + -webkit-animation-name: fadein; + -moz-transform: translateX(0); + -moz-animation-name: fadein; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +/* slide down */ +.slidedown.out { + -webkit-animation-name: fadeout; + -moz-animation-name: fadeout; + -webkit-animation-duration: 100ms; + -moz-animation-duration: 100ms; +} +.slidedown.in { + -webkit-transform: translateY(0); + -webkit-animation-name: slideinfromtop; + -moz-transform: translateY(0); + -moz-animation-name: slideinfromtop; + -webkit-animation-duration: 250ms; + -moz-animation-duration: 250ms; +} +.slidedown.in.reverse { + -webkit-animation-name: fadein; + -moz-animation-name: fadein; + -webkit-animation-duration: 150ms; + -moz-animation-duration: 150ms; +} +.slidedown.out.reverse { + -webkit-transform: translateY(-100%); + -moz-transform: translateY(-100%); + -webkit-animation-name: slideouttotop; + -moz-animation-name: slideouttotop; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +@-webkit-keyframes slideinfromtop { + from { -webkit-transform: translateY(-100%); } + to { -webkit-transform: translateY(0); } +} +@-moz-keyframes slideinfromtop { + from { -moz-transform: translateY(-100%); } + to { -moz-transform: translateY(0); } +} +@-webkit-keyframes slideouttotop { + from { -webkit-transform: translateY(0); } + to { -webkit-transform: translateY(-100%); } +} +@-moz-keyframes slideouttotop { + from { -moz-transform: translateY(0); } + to { -moz-transform: translateY(-100%); } +} +/* slide up */ +.slideup.out { + -webkit-animation-name: fadeout; + -moz-animation-name: fadeout; + -webkit-animation-duration: 100ms; + -moz-animation-duration: 100ms; +} +.slideup.in { + -webkit-transform: translateY(0); + -webkit-animation-name: slideinfrombottom; + -moz-transform: translateY(0); + -moz-animation-name: slideinfrombottom; + -webkit-animation-duration: 250ms; + -moz-animation-duration: 250ms; +} +.slideup.in.reverse { + -webkit-animation-name: fadein; + -moz-animation-name: fadein; + -webkit-animation-duration: 150ms; + -moz-animation-duration: 150ms; +} +.slideup.out.reverse { + -webkit-transform: translateY(100%); + -moz-transform: translateY(100%); + -webkit-animation-name: slideouttobottom; + -moz-animation-name: slideouttobottom; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +@-webkit-keyframes slideinfrombottom { + from { -webkit-transform: translateY(100%); } + to { -webkit-transform: translateY(0); } +} +@-moz-keyframes slideinfrombottom { + from { -moz-transform: translateY(100%); } + to { -moz-transform: translateY(0); } +} +@-webkit-keyframes slideouttobottom { + from { -webkit-transform: translateY(0); } + to { -webkit-transform: translateY(100%); } +} +@-moz-keyframes slideouttobottom { + from { -moz-transform: translateY(0); } + to { -moz-transform: translateY(100%); } +} +/* The properties in this rule are only necessary for the 'flip' transition. + * We need specify the perspective to create a projection matrix. This will add + * some depth as the element flips. The depth number represents the distance of + * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate + * value. + */ +.viewport-flip { + -webkit-perspective: 1000; + -moz-perspective: 1000; + position: absolute; +} +.flip { + -webkit-backface-visibility:hidden; + -webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ + -moz-backface-visibility:hidden; + -moz-transform:translateX(0); +} +.flip.out { + -webkit-transform: rotateY(-90deg) scale(.9); + -webkit-animation-name: flipouttoleft; + -webkit-animation-duration: 175ms; + -moz-transform: rotateY(-90deg) scale(.9); + -moz-animation-name: flipouttoleft; + -moz-animation-duration: 175ms; +} +.flip.in { + -webkit-animation-name: flipintoright; + -webkit-animation-duration: 225ms; + -moz-animation-name: flipintoright; + -moz-animation-duration: 225ms; +} +.flip.out.reverse { + -webkit-transform: rotateY(90deg) scale(.9); + -webkit-animation-name: flipouttoright; + -moz-transform: rotateY(90deg) scale(.9); + -moz-animation-name: flipouttoright; +} +.flip.in.reverse { + -webkit-animation-name: flipintoleft; + -moz-animation-name: flipintoleft; +} +@-webkit-keyframes flipouttoleft { + from { -webkit-transform: rotateY(0); } + to { -webkit-transform: rotateY(-90deg) scale(.9); } +} +@-moz-keyframes flipouttoleft { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(-90deg) scale(.9); } +} +@-webkit-keyframes flipouttoright { + from { -webkit-transform: rotateY(0) ; } + to { -webkit-transform: rotateY(90deg) scale(.9); } +} +@-moz-keyframes flipouttoright { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(90deg) scale(.9); } +} +@-webkit-keyframes flipintoleft { + from { -webkit-transform: rotateY(-90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoleft { + from { -moz-transform: rotateY(-90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@-webkit-keyframes flipintoright { + from { -webkit-transform: rotateY(90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoright { + from { -moz-transform: rotateY(90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +/* The properties in this rule are only necessary for the 'flip' transition. + * We need specify the perspective to create a projection matrix. This will add + * some depth as the element flips. The depth number represents the distance of + * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate + * value. + */ +.viewport-turn { + -webkit-perspective: 1000; + -moz-perspective: 1000; + position: absolute; +} +.turn { + -webkit-backface-visibility:hidden; + -webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ + -webkit-transform-origin: 0; + -moz-backface-visibility:hidden; + -moz-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ + -moz-transform-origin: 0; +} +.turn.out { + -webkit-transform: rotateY(-90deg) scale(.9); + -webkit-animation-name: flipouttoleft; + -moz-transform: rotateY(-90deg) scale(.9); + -moz-animation-name: flipouttoleft; + -webkit-animation-duration: 125ms; + -moz-animation-duration: 125ms; +} +.turn.in { + -webkit-animation-name: flipintoright; + -moz-animation-name: flipintoright; + -webkit-animation-duration: 250ms; + -moz-animation-duration: 250ms; +} +.turn.out.reverse { + -webkit-transform: rotateY(90deg) scale(.9); + -webkit-animation-name: flipouttoright; + -moz-transform: rotateY(90deg) scale(.9); + -moz-animation-name: flipouttoright; +} +.turn.in.reverse { + -webkit-animation-name: flipintoleft; + -moz-animation-name: flipintoleft; +} +@-webkit-keyframes flipouttoleft { + from { -webkit-transform: rotateY(0); } + to { -webkit-transform: rotateY(-90deg) scale(.9); } +} +@-moz-keyframes flipouttoleft { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(-90deg) scale(.9); } +} +@-webkit-keyframes flipouttoright { + from { -webkit-transform: rotateY(0) ; } + to { -webkit-transform: rotateY(90deg) scale(.9); } +} +@-moz-keyframes flipouttoright { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(90deg) scale(.9); } +} +@-webkit-keyframes flipintoleft { + from { -webkit-transform: rotateY(-90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoleft { + from { -moz-transform: rotateY(-90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@-webkit-keyframes flipintoright { + from { -webkit-transform: rotateY(90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoright { + from { -moz-transform: rotateY(90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +/* flow transition */ +.flow { + -webkit-transform-origin: 50% 30%; + -moz-transform-origin: 50% 30%; + -webkit-box-shadow: 0 0 20px rgba(0,0,0,.4); + -moz-box-shadow: 0 0 20px rgba(0,0,0,.4); +} +.ui-dialog.flow { + -webkit-transform-origin: none; + -moz-transform-origin: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; +} +.flow.out { + -webkit-transform: translateX(-100%) scale(.7); + -webkit-animation-name: flowouttoleft; + -webkit-animation-timing-function: ease; + -webkit-animation-duration: 350ms; + -moz-transform: translateX(-100%) scale(.7); + -moz-animation-name: flowouttoleft; + -moz-animation-timing-function: ease; + -moz-animation-duration: 350ms; +} +.flow.in { + -webkit-transform: translateX(0) scale(1); + -webkit-animation-name: flowinfromright; + -webkit-animation-timing-function: ease; + -webkit-animation-duration: 350ms; + -moz-transform: translateX(0) scale(1); + -moz-animation-name: flowinfromright; + -moz-animation-timing-function: ease; + -moz-animation-duration: 350ms; +} +.flow.out.reverse { + -webkit-transform: translateX(100%); + -webkit-animation-name: flowouttoright; + -moz-transform: translateX(100%); + -moz-animation-name: flowouttoright; +} +.flow.in.reverse { + -webkit-animation-name: flowinfromleft; + -moz-animation-name: flowinfromleft; +} +@-webkit-keyframes flowouttoleft { + 0% { -webkit-transform: translateX(0) scale(1); } + 60%, 70% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(-100%) scale(.7); } +} +@-moz-keyframes flowouttoleft { + 0% { -moz-transform: translateX(0) scale(1); } + 60%, 70% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(-100%) scale(.7); } +} +@-webkit-keyframes flowouttoright { + 0% { -webkit-transform: translateX(0) scale(1); } + 60%, 70% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(100%) scale(.7); } +} +@-moz-keyframes flowouttoright { + 0% { -moz-transform: translateX(0) scale(1); } + 60%, 70% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(100%) scale(.7); } +} +@-webkit-keyframes flowinfromleft { + 0% { -webkit-transform: translateX(-100%) scale(.7); } + 30%, 40% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(0) scale(1); } +} +@-moz-keyframes flowinfromleft { + 0% { -moz-transform: translateX(-100%) scale(.7); } + 30%, 40% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(0) scale(1); } +} +@-webkit-keyframes flowinfromright { + 0% { -webkit-transform: translateX(100%) scale(.7); } + 30%, 40% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(0) scale(1); } +} +@-moz-keyframes flowinfromright { + 0% { -moz-transform: translateX(100%) scale(.7); } + 30%, 40% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(0) scale(1); } +} +/* content configurations. */ +.ui-grid-a, .ui-grid-b, .ui-grid-c, .ui-grid-d { overflow: hidden; } +.ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e { margin: 0; padding: 0; border: 0; float: left; min-height:1px;} +/* grid solo: 100 - single item fallback */ +.ui-grid-solo .ui-block-a { width: 100%; float: none; } +/* grid a: 50/50 */ +.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 50%; } +.ui-grid-a .ui-block-a { clear: left; } +/* grid b: 33/33/33 */ +.ui-grid-b .ui-block-a, .ui-grid-b .ui-block-b, .ui-grid-b .ui-block-c { width: 33.333%; } +.ui-grid-b .ui-block-a { clear: left; } +/* grid c: 25/25/25/25 */ +.ui-grid-c .ui-block-a, .ui-grid-c .ui-block-b, .ui-grid-c .ui-block-c, .ui-grid-c .ui-block-d { width: 25%; } +.ui-grid-c .ui-block-a { clear: left; } +/* grid d: 20/20/20/20/20 */ +.ui-grid-d .ui-block-a, .ui-grid-d .ui-block-b, .ui-grid-d .ui-block-c, .ui-grid-d .ui-block-d, .ui-grid-d .ui-block-e { width: 20%; } +.ui-grid-d .ui-block-a { clear: left; } +/* fixed page header & footer configuration */ +.ui-header-fixed, +.ui-footer-fixed { + left: 0; + right: 0; + width: 100%; + position: fixed; + z-index: 1000; +} +.ui-header-fixed { + top: 0; +} +.ui-footer-fixed { + bottom: 0; +} +.ui-header-fullscreen, +.ui-footer-fullscreen { + opacity: .9; +} +.ui-page-header-fixed { + padding-top: 2.5em; +} +.ui-page-footer-fixed { + padding-bottom: 3em; +} +.ui-page-header-fullscreen .ui-content, +.ui-page-footer-fullscreen .ui-content { + padding: 0; +} +.ui-fixed-hidden { + position: absolute; +} +.ui-page-header-fullscreen .ui-fixed-hidden, +.ui-page-footer-fullscreen .ui-fixed-hidden { + left: -99999em; +} +.ui-header-fixed .ui-btn, +.ui-footer-fixed .ui-btn { + z-index: 10; +} +.ui-navbar { overflow: hidden; } +.ui-navbar ul, .ui-navbar-expanded ul { list-style:none; padding: 0; margin: 0; position: relative; display: block; border: 0;} +.ui-navbar-collapsed ul { float: left; width: 75%; margin-right: -2px; } +.ui-navbar-collapsed .ui-navbar-toggle { float: left; width: 25%; } +.ui-navbar li.ui-navbar-truncate { position: absolute; left: -9999px; top: -9999px; } +.ui-navbar li .ui-btn, .ui-navbar .ui-navbar-toggle .ui-btn { display: block; font-size: 12px; text-align: center; margin: 0; border-right-width: 0; max-width: 100%; } +.ui-navbar li .ui-btn { margin-right: -1px; } +.ui-navbar li .ui-btn:last-child { margin-right: 0; } +.ui-header .ui-navbar li .ui-btn, .ui-header .ui-navbar .ui-navbar-toggle .ui-btn, +.ui-footer .ui-navbar li .ui-btn, .ui-footer .ui-navbar .ui-navbar-toggle .ui-btn { border-top-width: 0; border-bottom-width: 0; } +.ui-navbar .ui-btn-inner { padding-left: 2px; padding-right: 2px; } +.ui-navbar-noicons li .ui-btn .ui-btn-inner, .ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner { padding-top: .8em; padding-bottom: .9em; } +/*expanded page styles*/ +.ui-navbar-expanded .ui-btn { margin: 0; font-size: 14px; } +.ui-navbar-expanded .ui-btn-inner { padding-left: 5px; padding-right: 5px; } +.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner { padding: 45px 5px 15px; text-align: center; } +.ui-navbar-expanded .ui-btn-icon-top .ui-icon { top: 15px; } +.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner { padding: 15px 5px 45px; text-align: center; } +.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon { bottom: 15px; } +.ui-navbar-expanded li .ui-btn .ui-btn-inner { min-height: 2.5em; } +.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner { padding-top: 1.8em; padding-bottom: 1.9em; } +.ui-btn { display: block; text-align: center; cursor:pointer; position: relative; margin: .5em 5px; padding: 0; } +.ui-mini { margin: .25em 5px; } +.ui-btn-inner { padding: .6em 20px; min-width: .75em; display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; position: relative; zoom: 1; } +.ui-btn input, .ui-btn button { z-index: 2; } +.ui-btn-left, .ui-btn-right, .ui-btn-inline { display: inline-block; } +.ui-btn-block { display: block; } +.ui-header .ui-btn, +.ui-footer .ui-btn { display: inline-block; margin: 0; } +.ui-header .ui-btn-inner, +.ui-footer .ui-btn-inner, +.ui-mini .ui-btn-inner { font-size: 12.5px; padding: .55em 11px .5em; } +.ui-header .ui-fullsize .ui-btn-inner, +.ui-footer .ui-fullsize .ui-btn-inner { font-size: 16px; padding: .6em 25px; } +.ui-btn-icon-notext { width: 24px; height: 24px; } +.ui-btn-icon-notext .ui-btn-inner { padding: 0; height: 100%; } +.ui-btn-icon-notext .ui-btn-inner .ui-icon { margin: 2px 1px 2px 3px; } +.ui-btn-text { position: relative; z-index: 1; width: 100%; } +.ui-btn-icon-notext .ui-btn-text { position: absolute; left: -9999px; } +.ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } +.ui-btn-icon-right .ui-btn-inner { padding-right: 40px; } +.ui-btn-icon-top .ui-btn-inner { padding-top: 40px; } +.ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 40px; } +.ui-header .ui-btn-icon-left .ui-btn-inner, +.ui-footer .ui-btn-icon-left .ui-btn-inner, +.ui-mini .ui-btn-icon-left .ui-btn-inner { padding-left: 30px; } +.ui-header .ui-btn-icon-right .ui-btn-inner, +.ui-footer .ui-btn-icon-right .ui-btn-inner, +.ui-mini .ui-btn-icon-right .ui-btn-inner { padding-right: 30px; } +.ui-header .ui-btn-icon-top .ui-btn-inner, +.ui-footer .ui-btn-icon-top .ui-btn-inner, +.ui-mini .ui-btn-icon-top .ui-btn-inner { padding: 30px 3px .5em 3px; } +.ui-header .ui-btn-icon-bottom .ui-btn-inner, +.ui-footer .ui-btn-icon-bottom .ui-btn-inner, +.ui-mini .ui-btn-icon-bottom .ui-btn-inner { padding: .55em 3px 30px 3px; } +/*btn icon positioning*/ +.ui-btn-icon-notext .ui-icon { display: block; z-index: 0;} +.ui-btn-icon-left .ui-btn-inner .ui-icon, .ui-btn-icon-right .ui-btn-inner .ui-icon { position: absolute; top: 50%; margin-top: -9px; } +.ui-btn-icon-top .ui-btn-inner .ui-icon, .ui-btn-icon-bottom .ui-btn-inner .ui-icon { position: absolute; left: 50%; margin-left: -9px; } +.ui-btn-icon-left .ui-icon { left: 10px; } +.ui-btn-icon-right .ui-icon { right: 10px; } +.ui-btn-icon-top .ui-icon { top: 10px; } +.ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } +.ui-header .ui-btn-icon-left .ui-icon, +.ui-footer .ui-btn-icon-left .ui-icon, +.ui-mini.ui-btn-icon-left .ui-icon, +.ui-mini .ui-btn-icon-left .ui-icon { left: 5px; } +.ui-header .ui-btn-icon-right .ui-icon, +.ui-footer .ui-btn-icon-right .ui-icon, +.ui-mini.ui-btn-icon-right .ui-icon, +.ui-mini .ui-btn-icon-right .ui-icon { right: 5px; } +.ui-header .ui-btn-icon-top .ui-icon, +.ui-footer .ui-btn-icon-top .ui-icon, +.ui-mini.ui-btn-icon-top .ui-icon, +.ui-mini .ui-btn-icon-top .ui-icon { top: 5px; } +.ui-header .ui-btn-icon-bottom .ui-icon, +.ui-footer .ui-btn-icon-bottom .ui-icon, +.ui-mini.ui-btn-icon-bottom .ui-icon, +.ui-mini .ui-btn-icon-bottom .ui-icon { bottom: 5px; } +/*hiding native button,inputs */ +.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: button; opacity: .1; cursor: pointer; background: #fff; background: rgba(255,255,255,0); filter: Alpha(Opacity=.0001); font-size: 1px; border: none; text-indent: -9999px; } +.ui-collapsible { margin: .5em 0; } +.ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -8px; padding: 0; border-width: 0 0 1px 0; position: relative; } +.ui-collapsible-heading a { text-align: left; margin: 0; } +.ui-collapsible-heading .ui-btn-inner, +.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } +.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner { padding-left: 12px; padding-right: 40px; } +.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner, +.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner { padding-right: 40px; text-align: center; } +.ui-collapsible-heading a span.ui-btn { position: absolute; left: 6px; top: 50%; margin: -12px 0 0 0; width: 20px; height: 20px; padding: 1px 0px 1px 2px; text-indent: -9999px; } +.ui-collapsible-heading a span.ui-btn .ui-btn-inner { padding: 10px 0; } +.ui-collapsible-heading a span.ui-btn .ui-icon { left: 0; margin-top: -10px; } +.ui-collapsible-heading-status { position: absolute; top: -9999px; left:0px; } +.ui-collapsible-content { + display: block; + margin: 0 -8px; + padding: 10px 16px; + border-top: none; /* Overrides ui-btn-up-* */ + background-image: none; /* Overrides ui-btn-up-* */ + font-weight: normal; /* Overrides ui-btn-up-* */ +} +.ui-collapsible-content-collapsed { display: none; } +.ui-collapsible-set { margin: .5em 0; } +.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; } +.ui-controlgroup, fieldset.ui-controlgroup { padding: 0; margin: 0em 0 .5em; zoom: 1; } +.ui-bar .ui-controlgroup { margin: 0 .3em; } +.ui-controlgroup-label { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .4em; } +.ui-controlgroup-controls { display: block; width: 100%;} +.ui-controlgroup li { list-style: none; } +.ui-controlgroup-vertical .ui-btn, +.ui-controlgroup-vertical .ui-checkbox, .ui-controlgroup-vertical .ui-radio { margin: 0; border-bottom-width: 0; } +.ui-controlgroup-controls label.ui-select { position: absolute; left: -9999px; } +.ui-controlgroup-vertical .ui-controlgroup-last { border-bottom-width: 1px; } +.ui-controlgroup-horizontal { padding: 0; } +.ui-controlgroup-horizontal .ui-btn-inner { text-align:center; } +.ui-controlgroup-horizontal .ui-btn, .ui-controlgroup-horizontal .ui-select { display: inline-block; margin: 0 -6px 0 0; } +.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio { float: left; clear: none; margin: 0 -1px 0 0; } +.ui-controlgroup-horizontal .ui-checkbox .ui-btn, .ui-controlgroup-horizontal .ui-radio .ui-btn, +.ui-controlgroup-horizontal .ui-checkbox:last-child, .ui-controlgroup-horizontal .ui-radio:last-child { margin-right: 0; } +.ui-controlgroup-horizontal .ui-controlgroup-last { margin-right: 0; } +.ui-controlgroup .ui-checkbox label, .ui-controlgroup .ui-radio label { font-size: 16px; } +/* conflicts with listview.. +.ui-controlgroup .ui-btn-icon-notext { width: 30px; height: 30px; text-indent: -9999px; } +.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { padding: 5px 6px 5px 5px; } +*/ +@media all and (min-width: 450px){ + .ui-field-contain .ui-controlgroup-label { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain .ui-controlgroup-controls { width: 60%; display: inline-block; } + .ui-field-contain .ui-controlgroup .ui-select { width: 100%; } + .ui-field-contain .ui-controlgroup-horizontal .ui-select { width: auto; } +} +.ui-dialog { + background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */ +} +.ui-dialog-contain { width: 92.5%; max-width: 500px; margin: 10% auto 15px auto; padding: 0; } +.ui-dialog .ui-header { + margin-top: 15%; + border: none; + overflow: hidden; +} +.ui-dialog .ui-header, +.ui-dialog .ui-content, +.ui-dialog .ui-footer { + display: block; + position: relative; + width: auto; +} +.ui-dialog .ui-header, +.ui-dialog .ui-footer { + z-index: 10; + padding: 0; +} +.ui-dialog .ui-footer { + padding: 0 15px; +} +.ui-dialog .ui-content { + padding: 15px; +} +.ui-dialog { + margin-top: -15px; +} +.ui-checkbox, .ui-radio { position: relative; clear: both; margin: .2em 0 .5em; z-index: 1; } +.ui-checkbox .ui-btn, .ui-radio .ui-btn { margin: 0; text-align: left; z-index: 2; } +.ui-checkbox .ui-btn-inner, .ui-radio .ui-btn-inner { white-space: normal; } +.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner { padding-left: 45px; } +.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner { padding-left: 36px; } +.ui-checkbox .ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 36px; } +.ui-checkbox .ui-btn-icon-top .ui-btn-inner,.ui-radio .ui-btn-icon-top .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } +.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner, .ui-radio .ui-btn-icon-bottom .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } +.ui-checkbox .ui-icon, .ui-radio .ui-icon { top: 1.1em; } +.ui-checkbox .ui-btn-icon-left .ui-icon, .ui-radio .ui-btn-icon-left .ui-icon { left: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon, .ui-radio .ui-mini.ui-btn-icon-left .ui-icon { left: 9px; } +.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } +.ui-checkbox .ui-btn-icon-top .ui-icon, .ui-radio .ui-btn-icon-top .ui-icon { top: 10px; } +.ui-checkbox .ui-btn-icon-bottom .ui-icon, .ui-radio .ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } +.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } +/* input, label positioning */ +.ui-checkbox input,.ui-radio input { position:absolute; left:20px; top:50%; width: 10px; height: 10px; margin:-5px 0 0 0; outline: 0 !important; z-index: 1; } +.ui-field-contain, fieldset.ui-field-contain { padding: .8em 0; margin: 0; border-width: 0 0 1px 0; overflow: visible; } +.ui-field-contain:first-child { border-top-width: 0; } +.ui-header .ui-field-contain-left, +.ui-header .ui-field-contain-right { + position: absolute; + top: 0; + width: 25%; +} +.ui-header .ui-field-contain-left { + left: 1em; +} +.ui-header .ui-field-contain-right { + right: 1em; +} +@media all and (min-width: 450px){ + .ui-field-contain, .ui-mobile fieldset.ui-field-contain { border-width: 0; padding: 0; margin: 1em 0; } +} +.ui-select { display: block; position: relative; } +.ui-select select { position: absolute; left: -9999px; top: -9999px; } +.ui-select .ui-btn { overflow: hidden; opacity: 1; margin: 0; } +/* Fixes #2588 — When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select—including “inherit”—without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */ +.ui-select .ui-btn select { cursor: pointer; -webkit-appearance: button; left: 0; top:0; width: 100%; min-height: 1.5em; min-height: 100%; height: 3em; max-height: 100%; opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); z-index: 2; } +.ui-select .ui-disabled { opacity: .3; } +@-moz-document url-prefix() {.ui-select .ui-btn select { opacity: 0.0001; }} +.ui-select .ui-btn select.ui-select-nativeonly { opacity: 1; text-indent: 0; } +.ui-select .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; } +.ui-select .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-select .ui-mini.ui-btn-icon-right .ui-icon { right: 7px; } +/* labels */ +label.ui-select { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } +/*listbox*/ +.ui-select .ui-btn-text, .ui-selectmenu .ui-btn-text { display: block; min-height: 1em; overflow: hidden !important; +/* This !important is required for iPad Safari specifically. See https://github.com/jquery/jquery-mobile/issues/2647 */ } +.ui-select .ui-btn-text { text-overflow: ellipsis; } +.ui-selectmenu { position: absolute; padding: 0; z-index: 1100 !important; width: 80%; max-width: 350px; padding: 6px; } +.ui-selectmenu .ui-listview { margin: 0; } +.ui-selectmenu .ui-btn.ui-li-divider { cursor: default; } +.ui-selectmenu-hidden { top: -9999px; left: -9999px; } +.ui-selectmenu-screen { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 99; } +.ui-screen-hidden, .ui-selectmenu-list .ui-li .ui-icon { display: none; } +.ui-selectmenu-list .ui-li .ui-icon { display: block; } +.ui-li.ui-selectmenu-placeholder { display: none; } +.ui-selectmenu .ui-header .ui-title { margin: 0.6em 46px 0.8em; } +@media all and (min-width: 450px){ + .ui-field-contain label.ui-select { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain .ui-select { width: 60%; display: inline-block; } +} +/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button. this shim's content in there */ +.ui-selectmenu .ui-header h1:after { content: '.'; visibility: hidden; } +label.ui-input-text { font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; } +input.ui-input-text, textarea.ui-input-text { background-image: none; padding: .4em; line-height: 1.4; font-size: 16px; display: block; width: 97%; outline: 0; } +.ui-header input.ui-input-text, +.ui-footer input.ui-input-text { margin-left: 1.25%; padding: .4em 1%; width: 95.5% } /* Note that padding left/right on text inputs is factored into how the element is displayed in Firefox, but does not actually pad the text inside it. */ + input.ui-input-text { -webkit-appearance: none; } +textarea.ui-input-text { height: 50px; -webkit-transition: height 200ms linear; -moz-transition: height 200ms linear; -o-transition: height 200ms linear; transition: height 200ms linear; } +.ui-input-search { padding: 0 30px; background-image: none; position: relative; } +.ui-icon-searchfield:after { position: absolute; left: 7px; top: 50%; margin-top: -9px; content: ""; width: 18px; height: 18px; opacity: .5; } +.ui-input-search input.ui-input-text { border: none; width: 98%; padding: .4em 0; margin: 0; display: block; background: transparent none; outline: 0 !important; } +.ui-input-search .ui-input-clear { position: absolute; right: 0; top: 50%; margin-top: -13px; } +.ui-mini .ui-input-clear { right: -3px; } +.ui-input-search .ui-input-clear-hidden { display: none; } +input.ui-mini, .ui-mini input, textarea.ui-mini { font-size: 14px; } +textarea.ui-mini { height: 45px; } +/* orientation adjustments - incomplete!*/ +@media all and (min-width: 450px){ + .ui-field-contain label.ui-input-text { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0 } + .ui-field-contain input.ui-input-text, + .ui-field-contain textarea.ui-input-text, + .ui-field-contain .ui-input-search { width: 60%; display: inline-block; } + .ui-field-contain .ui-input-search { width: 50%; } + .ui-hide-label input.ui-input-text, + .ui-hide-label textarea.ui-input-text, + .ui-hide-label .ui-input-search { padding: .4em; width: 97%; } + .ui-input-search input.ui-input-text { width: 98%; /*echos rule from above*/ } +} +.ui-listview { margin: 0; counter-reset: listnumbering; } +.ui-content .ui-listview { margin: -15px; } +.ui-content .ui-listview-inset { margin: 1em 0; } +.ui-listview, .ui-li { list-style:none; padding:0; } +.ui-li, .ui-li.ui-field-contain { display: block; margin:0; position: relative; overflow: visible; text-align: left; border-width: 0; border-top-width: 1px; } +.ui-li .ui-btn-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.ui-li-divider, .ui-li-static { padding: .5em 15px; font-size: 14px; font-weight: bold; } +.ui-li-divider { counter-reset: listnumbering; } +ol.ui-listview .ui-link-inherit:before, ol.ui-listview .ui-li-static:before, .ui-li-dec { font-size: .8em; display: inline-block; padding-right: .3em; font-weight: normal;counter-increment: listnumbering; content: counter(listnumbering) ". "; } +ol.ui-listview .ui-li-jsnumbering:before { content: "" !important; } /* to avoid chance of duplication */ +.ui-listview-inset .ui-li { border-right-width: 1px; border-left-width: 1px; } +.ui-li:last-child, .ui-li.ui-field-contain:last-child { border-bottom-width: 1px; } +.ui-li>.ui-btn-inner { display: block; position: relative; padding: 0; } +.ui-li .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li { padding: .7em 15px .7em 15px; display: block; } +.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-thumb { min-height: 60px; padding-left: 100px; } +.ui-li-has-icon .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-icon { min-height: 20px; padding-left: 40px; } +.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-count { padding-right: 45px; } +.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow { padding-right: 30px; } +.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow.ui-li-has-count { padding-right: 75px; } +.ui-li-has-count .ui-btn-text { padding-right: 15px; } +.ui-li-heading { font-size: 16px; font-weight: bold; display: block; margin: .6em 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.ui-li-desc { font-size: 12px; font-weight: normal; display: block; margin: -.5em 0 .6em; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.ui-li-thumb, .ui-listview .ui-li-icon { position: absolute; left: 1px; top: 0; max-height: 80px; max-width: 80px; } +.ui-listview .ui-li-icon { max-height: 40px; max-width: 40px; left: 10px; top: .9em; } +.ui-li-thumb, .ui-listview .ui-li-icon, .ui-li-content { float: left; margin-right: 10px; } +.ui-li-aside { float: right; width: 50%; text-align: right; margin: .3em 0; } +@media all and (min-width: 480px){ + .ui-li-aside { width: 45%; } +} +.ui-li-divider { cursor: default; } +.ui-li-has-alt .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt { padding-right: 95px; } +.ui-li-has-count .ui-li-count { position: absolute; font-size: 11px; font-weight: bold; padding: .2em .5em; top: 50%; margin-top: -.9em; right: 48px; } +.ui-li-divider .ui-li-count, .ui-li-static .ui-li-count { right: 10px; } +.ui-li-has-alt .ui-li-count { right: 55px; } +.ui-li-link-alt { position: absolute; width: 40px; height: 100%; border-width: 0; border-left-width: 1px; top: 0; right: 0; margin: 0; padding: 0; z-index: 2; } +.ui-li-link-alt .ui-btn { overflow: hidden; position: absolute; right: 8px; top: 50%; margin: -11px 0 0 0; border-bottom-width: 1px; z-index: -1;} +.ui-li-link-alt .ui-btn-inner { padding: 0; height: 100%; position: absolute; width: 100%; top: 0; left: 0;} +.ui-li-link-alt .ui-btn .ui-icon { right: 50%; margin-right: -9px; } +.ui-listview * .ui-btn-inner > .ui-btn > .ui-btn-inner { border-top: 0px; } +.ui-listview-filter { border-width: 0; overflow: hidden; margin: -15px -15px 15px -15px } +.ui-listview-filter .ui-input-search { margin: 5px; width: auto; display: block; } +.ui-listview-filter-inset { margin: -15px -5px -15px -5px; background: transparent; } +.ui-li.ui-screen-hidden{display:none;} +/* Odd iPad positioning issue. */ +@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { + .ui-li .ui-btn-text { overflow: visible; } +} +label.ui-slider { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } +input.ui-slider-input, +.ui-field-contain input.ui-slider-input { display: inline-block; width: 50px; } +select.ui-slider-switch { display: none; } +div.ui-slider { position: relative; display: inline-block; overflow: visible; height: 15px; padding: 0; margin: 0 2% 0 20px; top: 4px; width: 65%; } +div.ui-slider-mini { height: 12px; margin-left: 10px; } +div.ui-slider-bg { border: none; height: 100%; padding-right: 8px; } +.ui-controlgroup a.ui-slider-handle, a.ui-slider-handle { position: absolute; z-index: 1; top: 50%; width: 28px; height: 28px; margin-top: -15px; margin-left: -15px; outline: 0; } +a.ui-slider-handle .ui-btn-inner { padding: 0; height: 100%; } +div.ui-slider-mini a.ui-slider-handle { height: 14px; width: 14px; margin: -8px 0 0 -7px; } +div.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: -9px 0 0 -9px; } +@media all and (min-width: 450px){ + .ui-field-contain label.ui-slider { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain div.ui-slider { width: 43%; } + .ui-field-contain div.ui-slider-switch { width: 5.5em; } +} +div.ui-slider-switch { height: 32px; margin-left: 0; width: 5.8em; } +a.ui-slider-handle-snapping { -webkit-transition: left 70ms linear; -moz-transition: left 70ms linear; } +div.ui-slider-switch .ui-slider-handle { margin-top: 1px; } +.ui-slider-inneroffset { margin: 0 16px; position: relative; z-index: 1; } +div.ui-slider-switch.ui-slider-mini { width: 5em; height: 29px; } +div.ui-slider-switch.ui-slider-mini .ui-slider-inneroffset { margin: 0 15px 0 14px; } +div.ui-slider-switch.ui-slider-mini .ui-slider-handle { width: 25px; height: 25px; margin: 1px 0 0 -13px; } +div.ui-slider-switch.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: 0; } +span.ui-slider-label { position: absolute; text-align: center; width: 100%; overflow: hidden; font-size: 16px; top: 0; line-height: 2; min-height: 100%; border-width: 0; white-space: nowrap; } +.ui-slider-mini span.ui-slider-label { font-size: 14px; } +span.ui-slider-label-a { z-index: 1; left: 0; text-indent: -1.5em; } +span.ui-slider-label-b { z-index: 0; right: 0; text-indent: 1.5em;} +.ui-slider-inline { width: 120px; display: inline-block; } diff --git a/theme/mymobile/style/jmobile11_rtl.css b/theme/mymobile/style/jmobile11_rtl.css new file mode 100644 index 00000000000..30466f59059 --- /dev/null +++ b/theme/mymobile/style/jmobile11_rtl.css @@ -0,0 +1,62 @@ +.dir-rtl .ui-collapsible-heading a {text-align: right} + +.dir-rtl .ui-li, .ui-li.ui-field-contain {text-align: right;} + +.dir-rtl .ui-li-thumb, .dir-rtl .ui-listview .ui-li-icon, .dir-rtl .ui-li-content { + float: right; + margin-left: 27px; +} +.dir-rtl .ui-li, .dir-rtl .ui-li.ui-field-contain { + text-align: right; +} +.dir-rtl .ui-listview .ui-li-icon {right:27px; left:auto;} + +.dir-rtl .mod-indent-1 { margin-right: 0px;} + +.dir-rtl .ui-icon-arrow-r { + background-position: -108px 0%; +} + +.dir-rtl .ui-field-contain div.ui-slider-switch { + width: 10.5em; +} + +.dir-rtl .coursebox h3 a .ui-btn-inner, .dir-rtl .category a .ui-btn-inner { + padding-right: .8em; + padding-left: 8px; +} + +.dir-rtl .mform .fitem .felement { + margin-right: auto; + margin-left: 16%; + text-align: right; +} + +.dir-rtl .has-myblocks .content-secondary { + text-align: right; +} + +.dir-rtl .forumheaderlist thead .ui-btn-inner, .dir-rtl .topic .ui-btn { + text-align: right !important; + padding-right: 7px; +} + +.dir-rtl .ui-checkbox .ui-btn, .dir-rtl .ui-radio .ui-btn { + text-align: right; +} + +.dir-rtl .mform .fitemtitle { text-align: right !important; } + +.path-mod-quiz.dir-rtl .que .control { + width: 75%; +} + +.dir-rtl .categorybox .ui-btn-inner, +.dir-rtl .coursebox .ui-btn-inner { + text-align: right; + } + +.dir-rtl .categorybox .ui-btn-text, +.dir-rtl .coursebox .ui-btn-text { + padding-right: 25px; +} \ No newline at end of file diff --git a/theme/mymobile/style/jmobile120.css b/theme/mymobile/style/jmobile120.css deleted file mode 100644 index 45eb6278fc7..00000000000 --- a/theme/mymobile/style/jmobile120.css +++ /dev/null @@ -1,2332 +0,0 @@ -/* -* jQuery Mobile Framework Git Build: SHA1: b49cc06499abf8f987cf90f35349cfac0918c939 <> Date: Tue Oct 2 11:22:34 2012 -0700 -* http://jquerymobile.com -* -* Copyright 2012 jQuery Foundation and other contributors -* Released under the MIT license. -* http://jquery.org/license -* -*/ - - -/* Swatches */ -/* A ------------------------------------------------------------------------------------------------------------*/ -.ui-bar-a { - border: 1px solid #333 /*{a-bar-border}*/; - background: #111 /*{a-bar-background-color}*/; - color: #fff /*{a-bar-color}*/; - font-weight: bold; - text-shadow: 0 /*{a-bar-shadow-x}*/ -1px /*{a-bar-shadow-y}*/ 1px /*{a-bar-shadow-radius}*/ #000 /*{a-bar-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #3c3c3c /*{a-bar-background-start}*/), to( #111 /*{a-bar-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); -} -.ui-bar-a, -.ui-bar-a input, -.ui-bar-a select, -.ui-bar-a textarea, -.ui-bar-a button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-bar-a .ui-link-inherit { - color: #fff /*{a-bar-color}*/; -} -.ui-bar-a a.ui-link { - color: #7cc4e7 /*{a-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-a a.ui-link:visited { - color: #2489ce /*{a-bar-link-visited}*/; -} -.ui-bar-a a.ui-link:hover { - color: #2489ce /*{a-bar-link-hover}*/; -} -.ui-bar-a a.ui-link:active { - color: #2489ce /*{a-bar-link-active}*/; -} -.ui-body-a, -.ui-overlay-a { - border: 1px solid #444 /*{a-body-border}*/; - background: #222 /*{a-body-background-color}*/; - color: #fff /*{a-body-color}*/; - text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 1px /*{a-body-shadow-radius}*/ #111 /*{a-body-shadow-color}*/; - font-weight: normal; - background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-body-background-start}*/), to( #222 /*{a-body-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); -} -.ui-overlay-a { - background-image: none; - border-width: 0; -} -.ui-body-a, -.ui-body-a input, -.ui-body-a select, -.ui-body-a textarea, -.ui-body-a button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-body-a .ui-link-inherit { - color: #fff /*{a-body-color}*/; -} -.ui-body-a .ui-link { - color: #2489ce /*{a-body-link-color}*/; - font-weight: bold; -} -.ui-body-a .ui-link:visited { - color: #2489ce /*{a-body-link-visited}*/; -} -.ui-body-a .ui-link:hover { - color: #2489ce /*{a-body-link-hover}*/; -} -.ui-body-a .ui-link:active { - color: #2489ce /*{a-body-link-active}*/; -} -.ui-btn-up-a { - border: 1px solid #111 /*{a-bup-border}*/; - background: #333 /*{a-bup-background-color}*/; - font-weight: bold; - color: #fff /*{a-bup-color}*/; - text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 1px /*{a-bup-shadow-radius}*/ #111 /*{a-bup-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-bup-background-start}*/), to( #2d2d2d /*{a-bup-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); -} -.ui-btn-up-a:visited, -.ui-btn-up-a a.ui-link-inherit { - color: #fff /*{a-bup-color}*/; -} -.ui-btn-hover-a { - border: 1px solid #000 /*{a-bhover-border}*/; - background: #444 /*{a-bhover-background-color}*/; - font-weight: bold; - color: #fff /*{a-bhover-color}*/; - text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 1px /*{a-bhover-shadow-radius}*/ #111 /*{a-bhover-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #555 /*{a-bhover-background-start}*/), to( #383838 /*{a-bhover-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); -} -.ui-btn-hover-a:visited, -.ui-btn-hover-a:hover, -.ui-btn-hover-a a.ui-link-inherit { - color: #fff /*{a-bhover-color}*/; -} -.ui-btn-down-a { - border: 1px solid #000 /*{a-bdown-border}*/; - background: #222 /*{a-bdown-background-color}*/; - font-weight: bold; - color: #fff /*{a-bdown-color}*/; - text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 1px /*{a-bdown-shadow-radius}*/ #111 /*{a-bdown-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #202020 /*{a-bdown-background-start}*/), to( #2c2c2c /*{a-bdown-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); -} -.ui-btn-down-a:visited, -.ui-btn-down-a:hover, -.ui-btn-down-a a.ui-link-inherit { - color: #fff /*{a-bdown-color}*/; -} -.ui-btn-up-a, -.ui-btn-hover-a, -.ui-btn-down-a { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; - text-decoration: none; -} -/* B ------------------------------------------------------------------------------------------------------------*/ -.ui-bar-b { - border: 1px solid #456f9a /*{b-bar-border}*/; - background: #5e87b0 /*{b-bar-background-color}*/; - color: #fff /*{b-bar-color}*/; - font-weight: bold; - text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 1px /*{b-bar-shadow-radius}*/ #3e6790 /*{b-bar-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bar-background-start}*/), to( #497bae /*{b-bar-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); -} -.ui-bar-b, -.ui-bar-b input, -.ui-bar-b select, -.ui-bar-b textarea, -.ui-bar-b button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-bar-b .ui-link-inherit { - color: #fff /*{b-bar-color}*/; -} -.ui-bar-b a.ui-link { - color: #ddf0f8 /*{b-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-b a.ui-link:visited { - color: #ddf0f8 /*{b-bar-link-visited}*/; -} -.ui-bar-b a.ui-link:hover { - color: #ddf0f8 /*{b-bar-link-hover}*/; -} -.ui-bar-b a.ui-link:active { - color: #ddf0f8 /*{b-bar-link-active}*/; -} -.ui-body-b, -.ui-overlay-b { - border: 1px solid #999 /*{b-body-border}*/; - background: #f3f3f3 /*{b-body-background-color}*/; - color: #222 /*{b-body-color}*/; - text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ #fff /*{b-body-shadow-color}*/; - font-weight: normal; - background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{b-body-background-start}*/), to( #ccc /*{b-body-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); -} -.ui-overlay-b { - background-image: none; - border-width: 0; -} -.ui-body-b, -.ui-body-b input, -.ui-body-b select, -.ui-body-b textarea, -.ui-body-b button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-body-b .ui-link-inherit { - color: #333 /*{b-body-color}*/; -} -.ui-body-b .ui-link { - color: #2489ce /*{b-body-link-color}*/; - font-weight: bold; -} -.ui-body-b .ui-link:visited { - color: #2489ce /*{b-body-link-visited}*/; -} -.ui-body-b .ui-link:hover { - color: #2489ce /*{b-body-link-hover}*/; -} -.ui-body-b .ui-link:active { - color: #2489ce /*{b-body-link-active}*/; -} -.ui-btn-up-b { - border: 1px solid #044062 /*{b-bup-border}*/; - background: #396b9e /*{b-bup-background-color}*/; - font-weight: bold; - color: #fff /*{b-bup-color}*/; - text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 1px /*{b-bup-shadow-radius}*/ #194b7e /*{b-bup-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #5f9cc5 /*{b-bup-background-start}*/), to( #396b9e /*{b-bup-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); -} -.ui-btn-up-b:visited, -.ui-btn-up-b a.ui-link-inherit { - color: #fff /*{b-bup-color}*/; -} -.ui-btn-hover-b { - border: 1px solid #00415e /*{b-bhover-border}*/; - background: #4b88b6 /*{b-bhover-background-color}*/; - font-weight: bold; - color: #fff /*{b-bhover-color}*/; - text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 1px /*{b-bhover-shadow-radius}*/ #194b7e /*{b-bhover-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bhover-background-start}*/), to( #4272a4 /*{b-bhover-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); -} -.ui-btn-hover-b:visited, -.ui-btn-hover-b:hover, -.ui-btn-hover-b a.ui-link-inherit { - color: #fff /*{b-bhover-color}*/; -} -.ui-btn-down-b { - border: 1px solid #225377 /*{b-bdown-border}*/; - background: #4e89c5 /*{b-bdown-background-color}*/; - font-weight: bold; - color: #fff /*{b-bdown-color}*/; - text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 1px /*{b-bdown-shadow-radius}*/ #194b7e /*{b-bdown-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #295b8e /*{b-bdown-background-start}*/), to( #3e79b5 /*{b-bdown-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); -} -.ui-btn-down-b:visited, -.ui-btn-down-b:hover, -.ui-btn-down-b a.ui-link-inherit { - color: #fff /*{b-bdown-color}*/; -} -.ui-btn-up-b, -.ui-btn-hover-b, -.ui-btn-down-b { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; - text-decoration: none; -} -/* C ------------------------------------------------------------------------------------------------------------*/ -.ui-bar-c { - border: 1px solid #b3b3b3 /*{c-bar-border}*/; - background: #eee /*{c-bar-background-color}*/; - color: #3e3e3e /*{c-bar-color}*/; - font-weight: bold; - text-shadow: 0 /*{c-bar-shadow-x}*/ 1px /*{c-bar-shadow-y}*/ 1px /*{c-bar-shadow-radius}*/ #fff /*{c-bar-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #f0f0f0 /*{c-bar-background-start}*/), to( #ddd /*{c-bar-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); -} -.ui-bar-c .ui-link-inherit { - color: #3e3e3e /*{c-bar-color}*/; -} -.ui-bar-c a.ui-link { - color: #7cc4e7 /*{c-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-c a.ui-link:visited { - color: #2489ce /*{c-bar-link-visited}*/; -} -.ui-bar-c a.ui-link:hover { - color: #2489ce /*{c-bar-link-hover}*/; -} -.ui-bar-c a.ui-link:active { - color: #2489ce /*{c-bar-link-active}*/; -} -.ui-bar-c, -.ui-bar-c input, -.ui-bar-c select, -.ui-bar-c textarea, -.ui-bar-c button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-body-c, -.ui-overlay-c { - border: 1px solid #aaa /*{c-body-border}*/; - color: #333 /*{c-body-color}*/; - text-shadow: 0 /*{c-body-shadow-x}*/ 1px /*{c-body-shadow-y}*/ 0 /*{c-body-shadow-radius}*/ #fff /*{c-body-shadow-color}*/; - background: #f9f9f9 /*{c-body-background-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #f9f9f9 /*{c-body-background-start}*/), to( #eee /*{c-body-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eee /*{c-body-background-end}*/); -} -.ui-overlay-c { - background-image: none; - border-width: 0; -} -.ui-body-c, -.ui-body-c input, -.ui-body-c select, -.ui-body-c textarea, -.ui-body-c button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-body-c .ui-link-inherit { - color: #333 /*{c-body-color}*/; -} -.ui-body-c .ui-link { - color: #2489ce /*{c-body-link-color}*/; - font-weight: bold; -} -.ui-body-c .ui-link:visited { - color: #2489ce /*{c-body-link-visited}*/; -} -.ui-body-c .ui-link:hover { - color: #2489ce /*{c-body-link-hover}*/; -} -.ui-body-c .ui-link:active { - color: #2489ce /*{c-body-link-active}*/; -} -.ui-btn-up-c { - border: 1px solid #ccc /*{c-bup-border}*/; - background: #eee /*{c-bup-background-color}*/; - font-weight: bold; - color: #222 /*{c-bup-color}*/; - text-shadow: 0 /*{c-bup-shadow-x}*/ 1px /*{c-bup-shadow-y}*/ 0 /*{c-bup-shadow-radius}*/ #fff /*{c-bup-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #fff /*{c-bup-background-start}*/), to( #f1f1f1 /*{c-bup-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #fff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); -} -.ui-btn-up-c:visited, -.ui-btn-up-c a.ui-link-inherit { - color: #2f3e46 /*{c-bup-color}*/; -} -.ui-btn-hover-c { - border: 1px solid #bbb /*{c-bhover-border}*/; - background: #dfdfdf /*{c-bhover-background-color}*/; - font-weight: bold; - color: #222 /*{c-bhover-color}*/; - text-shadow: 0 /*{c-bhover-shadow-x}*/ 1px /*{c-bhover-shadow-y}*/ 0 /*{c-bhover-shadow-radius}*/ #fff /*{c-bhover-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #f6f6f6 /*{c-bhover-background-start}*/), to( #e0e0e0 /*{c-bhover-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); -} -.ui-btn-hover-c:visited, -.ui-btn-hover-c:hover, -.ui-btn-hover-c a.ui-link-inherit { - color: #2f3e46 /*{c-bhover-color}*/; -} -.ui-btn-down-c { - border: 1px solid #bbb /*{c-bdown-border}*/; - background: #d6d6d6 /*{c-bdown-background-color}*/; - font-weight: bold; - color: #222 /*{c-bdown-color}*/; - text-shadow: 0 /*{c-bdown-shadow-x}*/ 1px /*{c-bdown-shadow-y}*/ 0 /*{c-bdown-shadow-radius}*/ #fff /*{c-bdown-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #d0d0d0 /*{c-bdown-background-start}*/), to( #dfdfdf /*{c-bdown-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); -} -.ui-btn-down-c:visited, -.ui-btn-down-c:hover, -.ui-btn-down-c a.ui-link-inherit { - color: #2f3e46 /*{c-bdown-color}*/; -} -.ui-btn-up-c, -.ui-btn-hover-c, -.ui-btn-down-c { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; - text-decoration: none; -} -/* D ------------------------------------------------------------------------------------------------------------*/ -.ui-bar-d { - border: 1px solid #bbb /*{d-bar-border}*/; - background: #bbb /*{d-bar-background-color}*/; - color: #333 /*{d-bar-color}*/; - font-weight: bold; - text-shadow: 0 /*{d-bar-shadow-x}*/ 1px /*{d-bar-shadow-y}*/ 0 /*{d-bar-shadow-radius}*/ #eee /*{d-bar-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{d-bar-background-start}*/), to( #bbb /*{d-bar-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); -} -.ui-bar-d, -.ui-bar-d input, -.ui-bar-d select, -.ui-bar-d textarea, -.ui-bar-d button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-bar-d .ui-link-inherit { - color: #333 /*{d-bar-color}*/; -} -.ui-bar-d a.ui-link { - color: #2489ce /*{d-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-d a.ui-link:visited { - color: #2489ce /*{d-bar-link-visited}*/; -} -.ui-bar-d a.ui-link:hover { - color: #2489ce /*{d-bar-link-hover}*/; -} -.ui-bar-d a.ui-link:active { - color: #2489ce /*{d-bar-link-active}*/; -} -.ui-body-d, -.ui-overlay-d { - border: 1px solid #bbb /*{d-body-border}*/; - color: #333 /*{d-body-color}*/; - text-shadow: 0 /*{d-body-shadow-x}*/ 1px /*{d-body-shadow-y}*/ 0 /*{d-body-shadow-radius}*/ #fff /*{d-body-shadow-color}*/; - background: #fff /*{d-body-background-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #fff /*{d-body-background-start}*/), to( #fff /*{d-body-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); -} -.ui-overlay-d { - background-image: none; - border-width: 0; -} -.ui-body-d, -.ui-body-d input, -.ui-body-d select, -.ui-body-d textarea, -.ui-body-d button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-body-d .ui-link-inherit { - color: #333 /*{d-body-color}*/; -} -.ui-body-d .ui-link { - color: #2489ce /*{d-body-link-color}*/; - font-weight: bold; -} -.ui-body-d .ui-link:visited { - color: #2489ce /*{d-body-link-visited}*/; -} -.ui-body-d .ui-link:hover { - color: #2489ce /*{d-body-link-hover}*/; -} -.ui-body-d .ui-link:active { - color: #2489ce /*{d-body-link-active}*/; -} -.ui-btn-up-d { - border: 1px solid #bbb /*{d-bup-border}*/; - background: #fff /*{d-bup-background-color}*/; - font-weight: bold; - color: #333 /*{d-bup-color}*/; - text-shadow: 0 /*{d-bup-shadow-x}*/ 1px /*{d-bup-shadow-y}*/ 0 /*{d-bup-shadow-radius}*/ #fff /*{d-bup-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #fafafa /*{d-bup-background-start}*/), to( #f6f6f6 /*{d-bup-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); -} -.ui-btn-up-d:visited, -.ui-btn-up-d a.ui-link-inherit { - color: #333 /*{d-bup-color}*/; -} -.ui-btn-hover-d { - border: 1px solid #aaa /*{d-bhover-border}*/; - background: #eee /*{d-bhover-background-color}*/; - font-weight: bold; - color: #333 /*{d-bhover-color}*/; - cursor: pointer; - text-shadow: 0 /*{d-bhover-shadow-x}*/ 1px /*{d-bhover-shadow-y}*/ 0 /*{d-bhover-shadow-radius}*/ #fff /*{d-bhover-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #eee /*{d-bhover-background-start}*/), to( #fff /*{d-bhover-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); -} -.ui-btn-hover-d:visited, -.ui-btn-hover-d:hover, -.ui-btn-hover-d a.ui-link-inherit { - color: #333 /*{d-bhover-color}*/; -} -.ui-btn-down-d { - border: 1px solid #aaa /*{d-bdown-border}*/; - background: #eee /*{d-bdown-background-color}*/; - font-weight: bold; - color: #333 /*{d-bdown-color}*/; - text-shadow: 0 /*{d-bdown-shadow-x}*/ 1px /*{d-bdown-shadow-y}*/ 0 /*{d-bdown-shadow-radius}*/ #fff /*{d-bdown-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #e5e5e5 /*{d-bdown-background-start}*/), to( #f2f2f2 /*{d-bdown-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); -} -.ui-btn-down-d:visited, -.ui-btn-down-d:hover, -.ui-btn-down-d a.ui-link-inherit { - color: #333 /*{d-bdown-color}*/; -} -.ui-btn-up-d, -.ui-btn-hover-d, -.ui-btn-down-d { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; - text-decoration: none; -} -/* E ------------------------------------------------------------------------------------------------------------*/ -.ui-bar-e { - border: 1px solid #f7c942 /*{e-bar-border}*/; - background: #fadb4e /*{e-bar-background-color}*/; - color: #333 /*{e-bar-color}*/; - font-weight: bold; - text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/ #fff /*{e-bar-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fbef7e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); -} -.ui-bar-e, -.ui-bar-e input, -.ui-bar-e select, -.ui-bar-e textarea, -.ui-bar-e button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-bar-e .ui-link-inherit { - color: #333 /*{e-bar-color}*/; -} -.ui-bar-e a.ui-link { - color: #2489ce /*{e-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-e a.ui-link:visited { - color: #2489ce /*{e-bar-link-visited}*/; -} -.ui-bar-e a.ui-link:hover { - color: #2489ce /*{e-bar-link-hover}*/; -} -.ui-bar-e a.ui-link:active { - color: #2489ce /*{e-bar-link-active}*/; -} -.ui-body-e, -.ui-overlay-e { - border: 1px solid #f7c942 /*{e-body-border}*/; - color: #222 /*{e-body-color}*/; - text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/ #fff /*{e-body-shadow-color}*/; - background: #fff9df /*{e-body-background-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #fffadf /*{e-body-background-start}*/), to( #fff3a5 /*{e-body-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); -} -.ui-overlay-e { - background-image: none; - border-width: 0; -} -.ui-body-e, -.ui-body-e input, -.ui-body-e select, -.ui-body-e textarea, -.ui-body-e button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-body-e .ui-link-inherit { - color: #222 /*{e-body-color}*/; -} -.ui-body-e .ui-link { - color: #2489ce /*{e-body-link-color}*/; - font-weight: bold; -} -.ui-body-e .ui-link:visited { - color: #2489ce /*{e-body-link-visited}*/; -} -.ui-body-e .ui-link:hover { - color: #2489ce /*{e-body-link-hover}*/; -} -.ui-body-e .ui-link:active { - color: #2489ce /*{e-body-link-active}*/; -} -.ui-btn-up-e { - border: 1px solid #f4c63f /*{e-bup-border}*/; - background: #fadb4e /*{e-bup-background-color}*/; - font-weight: bold; - color: #222 /*{e-bup-color}*/; - text-shadow: 0 /*{e-bup-shadow-x}*/ 1px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/ #fff /*{e-bup-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #ffefaa /*{e-bup-background-start}*/), to( #ffe155 /*{e-bup-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); -} -.ui-btn-up-e:visited, -.ui-btn-up-e a.ui-link-inherit { - color: #222 /*{e-bup-color}*/; -} -.ui-btn-hover-e { - border: 1px solid #f2c43d /*{e-bhover-border}*/; - background: #fbe26f /*{e-bhover-background-color}*/; - font-weight: bold; - color: #111 /*{e-bhover-color}*/; - text-shadow: 0 /*{e-bhover-shadow-x}*/ 1px /*{e-bhover-shadow-y}*/ 0 /*{e-bhover-shadow-radius}*/ #fff /*{e-bhover-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #fff5ba /*{e-bhover-background-start}*/), to( #fbdd52 /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); -} -.ui-btn-hover-e:visited, -.ui-btn-hover-e:hover, -.ui-btn-hover-e a.ui-link-inherit { - color: #333 /*{e-bhover-color}*/; -} -.ui-btn-down-e { - border: 1px solid #f2c43d /*{e-bdown-border}*/; - background: #fceda7 /*{e-bdown-background-color}*/; - font-weight: bold; - color: #111 /*{e-bdown-color}*/; - text-shadow: 0 /*{e-bdown-shadow-x}*/ 1px /*{e-bdown-shadow-y}*/ 0 /*{e-bdown-shadow-radius}*/ #fff /*{e-bdown-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #f8d94c /*{e-bdown-background-start}*/), to( #fadb4e /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); -} -.ui-btn-down-e:visited, -.ui-btn-down-e:hover, -.ui-btn-down-e a.ui-link-inherit { - color: #333 /*{e-bdown-color}*/; -} -.ui-btn-up-e, -.ui-btn-hover-e, -.ui-btn-down-e { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; - text-decoration: none; -} -/* Structure */ -/* links within "buttons" ------------------------------------------------------------------------------------------------------------*/ -a.ui-link-inherit { - text-decoration: none !important; -} -/* Active class used as the "on" state across all themes ------------------------------------------------------------------------------------------------------------*/ -.ui-btn-active { - border: 1px solid #2373a5 /*{global-active-border}*/; - background: #5393c5 /*{global-active-background-color}*/; - font-weight: bold; - color: #fff /*{global-active-color}*/; - cursor: pointer; - text-shadow: 0 /*{global-active-shadow-x}*/ 1px /*{global-active-shadow-y}*/ 1px /*{global-active-shadow-radius}*/ #3373a5 /*{global-active-shadow-color}*/; - text-decoration: none; - background-image: -webkit-gradient(linear, left top, left bottom, from( #5393c5 /*{global-active-background-start}*/), to( #6facd5 /*{global-active-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-btn-active:visited, -.ui-btn-active:hover, -.ui-btn-active a.ui-link-inherit { - color: #fff /*{global-active-color}*/; -} -/* button inner top highlight ------------------------------------------------------------------------------------------------------------*/ -.ui-btn-inner { - border-top: 1px solid #fff; - border-color: rgba(255,255,255,.3); -} -/* corner rounding classes ------------------------------------------------------------------------------------------------------------*/ -.ui-corner-tl { - -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; - -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; - border-top-left-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-tr { - -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; - -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; - border-top-right-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-bl { - -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; - -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; - border-bottom-left-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-br { - -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; - -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; - border-bottom-right-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-top { - -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; - -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; - border-top-left-radius: .6em /*{global-radii-blocks}*/; - -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; - -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; - border-top-right-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-bottom { - -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; - -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; - border-bottom-left-radius: .6em /*{global-radii-blocks}*/; - -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; - -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; - border-bottom-right-radius: .6em /*{global-radii-blocks}*/; - } -.ui-corner-right { - -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; - -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; - border-top-right-radius: .6em /*{global-radii-blocks}*/; - -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; - -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; - border-bottom-right-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-left { - -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; - -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; - border-top-left-radius: .6em /*{global-radii-blocks}*/; - -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; - -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; - border-bottom-left-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-all { - -moz-border-radius: .6em /*{global-radii-blocks}*/; - -webkit-border-radius: .6em /*{global-radii-blocks}*/; - border-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-none { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -/* Form field separator ------------------------------------------------------------------------------------------------------------*/ -.ui-br { - border-bottom: rgb(130,130,130); - border-bottom: rgba(130,130,130,.3); - border-bottom-width: 1px; - border-bottom-style: solid; -} -/* Interaction cues ------------------------------------------------------------------------------------------------------------*/ -.ui-disabled { - filter: Alpha(Opacity=30); - opacity: .3; - zoom: 1; -} -.ui-disabled, -.ui-disabled a { - cursor: default !important; - pointer-events: none; -} -/* Icons ------------------------------------------------------------------------------------------------------------*/ -.ui-icon, -.ui-icon-searchfield:after { - background: #666 /*{global-icon-color}*/; - background: rgba(0,0,0,.4) /*{global-icon-disc}*/; - background-image: url([[pix:theme|icons-18-white]]) /*{global-icon-set}*/; - background-repeat: no-repeat; - -moz-border-radius: 9px; - -webkit-border-radius: 9px; - border-radius: 9px; -} -/* Alt icon color ------------------------------------------------------------------------------------------------------------*/ -.ui-icon-alt { - background: #fff; - background: rgba(255,255,255,.3); - background-image: url([[pix:theme|icons-18-black]]); - background-repeat: no-repeat; -} -/* HD/"retina" sprite ------------------------------------------------------------------------------------------------------------*/ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (min--moz-device-pixel-ratio: 1.5), - only screen and (min-resolution: 240dpi) { - - .ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r, - .ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check, - .ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back, - .ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-search, .ui-icon-searchfield:after, - .ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on { - background-image: url([[pix:theme|icons-36-white]]); - -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([[pix:theme|icons-36-black]]); - } -} -/* plus minus */ -.ui-icon-plus { - background-position: -0 50%; -} -.ui-icon-minus { - background-position: -36px 50%; -} -/* delete/close */ -.ui-icon-delete { - background-position: -72px 50%; -} -/* arrows */ -.ui-icon-arrow-r { - background-position: -108px 50%; -} -.ui-icon-arrow-l { - background-position: -144px 50%; -} -.ui-icon-arrow-u { - background-position: -180px 50%; -} -.ui-icon-arrow-d { - background-position: -216px 50%; -} -/* misc */ -.ui-icon-check { - background-position: -252px 50%; -} -.ui-icon-gear { - background-position: -288px 50%; -} -.ui-icon-refresh { - background-position: -324px 50%; -} -.ui-icon-forward { - background-position: -360px 50%; -} -.ui-icon-back { - background-position: -396px 50%; -} -.ui-icon-grid { - background-position: -432px 50%; -} -.ui-icon-star { - background-position: -468px 50%; -} -.ui-icon-alert { - background-position: -504px 50%; -} -.ui-icon-info { - background-position: -540px 50%; -} -.ui-icon-home { - background-position: -576px 50%; -} -.ui-icon-search, -.ui-icon-searchfield:after { - background-position: -612px 50%; -} -.ui-icon-checkbox-off { - background-position: -684px 50%; -} -.ui-icon-checkbox-on { - background-position: -648px 50%; -} -.ui-icon-radio-off { - background-position: -756px 50%; -} -.ui-icon-radio-on { - background-position: -720px 50%; -} -/* checks,radios */ -.ui-checkbox .ui-icon, -.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 /*{global-active-background-color}*/; /* NOTE: this hex should match the active state color. It's repeated here for cascade */ -} -/* loading icon */ -.ui-icon-loading { - background: url([[pix:theme|ajax-loader]]); - background-size: 46px 46px; -} -/* Button corner classes ------------------------------------------------------------------------------------------------------------*/ -.ui-btn-corner-tl { - -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; - -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; - border-top-left-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-tr { - -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; - -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; - border-top-right-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-bl { - -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; - -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; - border-bottom-left-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-br { - -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; - -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; - border-bottom-right-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-top { - -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; - -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; - border-top-left-radius: 1em /*{global-radii-buttons}*/; - -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; - -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; - border-top-right-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-bottom { - -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; - -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; - border-bottom-left-radius: 1em /*{global-radii-buttons}*/; - -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; - -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; - border-bottom-right-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-right { - -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; - -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; - border-top-right-radius: 1em /*{global-radii-buttons}*/; - -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; - -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; - border-bottom-right-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-left { - -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; - -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; - border-top-left-radius: 1em /*{global-radii-buttons}*/; - -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; - -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; - border-bottom-left-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-all { - -moz-border-radius: 1em /*{global-radii-buttons}*/; - -webkit-border-radius: 1em /*{global-radii-buttons}*/; - border-radius: 1em /*{global-radii-buttons}*/; -} -/* radius clip workaround for cleaning up corner trapping */ -.ui-corner-tl, -.ui-corner-tr, -.ui-corner-bl, -.ui-corner-br, -.ui-corner-top, -.ui-corner-bottom, -.ui-corner-right, -.ui-corner-left, -.ui-corner-all, -.ui-btn-corner-tl, -.ui-btn-corner-tr, -.ui-btn-corner-bl, -.ui-btn-corner-br, -.ui-btn-corner-top, -.ui-btn-corner-bottom, -.ui-btn-corner-right, -.ui-btn-corner-left, -.ui-btn-corner-all { - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; -} -/* Overlay / modal ------------------------------------------------------------------------------------------------------------*/ -.ui-overlay { - background: #666; - filter: Alpha(Opacity=50); - opacity: .5; - position: absolute; - width: 100%; - height: 100%; -} -.ui-overlay-shadow { - -moz-box-shadow: 0px 0px 12px rgba(0,0,0,.6); - -webkit-box-shadow: 0px 0px 12px rgba(0,0,0,.6); - box-shadow: 0px 0px 12px rgba(0,0,0,.6); -} -.ui-shadow { - -moz-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; - -webkit-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; - box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; -} -.ui-bar-a .ui-shadow, -.ui-bar-b .ui-shadow , -.ui-bar-c .ui-shadow { - -moz-box-shadow: 0px 1px 0 rgba(255,255,255,.3); - -webkit-box-shadow: 0px 1px 0 rgba(255,255,255,.3); - box-shadow: 0px 1px 0 rgba(255,255,255,.3); -} -.ui-shadow-inset { - -moz-box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); - -webkit-box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); - box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); -} -.ui-icon-shadow { - -moz-box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; - -webkit-box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; - box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; -} -/* Focus state - set here for specificity (note: these classes are added by JavaScript) ------------------------------------------------------------------------------------------------------------*/ -.ui-btn:focus, .ui-link-inherit:focus { - outline: 0; -} -.ui-btn.ui-focus { - z-index: 1; -} -.ui-focus, -.ui-btn:focus { - -moz-box-shadow: inset 0px 0px 3px #387bbe /*{global-active-background-color}*/, 0px 0px 9px #387bbe /*{global-active-background-color}*/; - -webkit-box-shadow: inset 0px 0px 3px #387bbe /*{global-active-background-color}*/, 0px 0px 9px #387bbe /*{global-active-background-color}*/; - box-shadow: inset 0px 0px 3px #387bbe /*{global-active-background-color}*/, 0px 0px 9px #387bbe /*{global-active-background-color}*/; -} -.ui-input-text.ui-focus, -.ui-input-search.ui-focus { - -moz-box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; - -webkit-box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; - box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; -} -/* unset box shadow in browsers that don't do it right ------------------------------------------------------------------------------------------------------------*/ -.ui-mobile-nosupport-boxshadow * { - -moz-box-shadow: none !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; -} -/* ...and bring back focus */ -.ui-mobile-nosupport-boxshadow .ui-focus, -.ui-mobile-nosupport-boxshadow .ui-btn:focus, -.ui-mobile-nosupport-boxshadow .ui-link-inherit:focus { - outline-width: 1px; - outline-style: auto; -} -/* some unsets - more probably needed */ -.ui-mobile, .ui-mobile body { height: 99.9%; } -.ui-mobile fieldset, .ui-page { padding: 0; margin: 0; } -.ui-mobile a img, .ui-mobile fieldset { border-width: 0; } -/* responsive page widths */ -.ui-mobile-viewport { margin: 0; overflow-x: visible; -webkit-text-size-adjust: 100%; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } -/* Issue #2066 */ -body.ui-mobile-viewport, -div.ui-mobile-viewport { overflow-x: hidden; } -/* "page" containers - full-screen views, one should always be in view post-pageload */ -.ui-mobile [data-role=page], .ui-mobile [data-role=dialog], .ui-page { top: 0; left: 0; width: 100%; min-height: 100%; position: absolute; display: none; border: 0; } -.ui-mobile .ui-page-active { display: block; overflow: visible; } -/* on ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */ -.ui-page { outline: none; } -/*orientations from js are available */ -@media screen and (orientation: portrait){ -.ui-mobile, .ui-mobile .ui-page { min-height: 420px; } -} -@media screen and (orientation: landscape){ -.ui-mobile, .ui-mobile .ui-page { min-height: 300px; } -} -/* loading screen */ -.ui-loading .ui-loader { display: block; } -.ui-loader { display: none; z-index: 9999999; position: fixed; top: 50%; 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; } -/*fouc*/ -.ui-mobile-rendering > * { visibility: hidden; } -/*headers, content panels*/ -.ui-bar, .ui-body { position: relative; padding: .4em 15px; overflow: hidden; display: block; clear:both; } -.ui-bar { font-size: 16px; margin: 0; } -.ui-bar h1, .ui-bar h2, .ui-bar h3, .ui-bar h4, .ui-bar h5, .ui-bar h6 { margin: 0; padding: 0; font-size: 16px; display: inline-block; } -.ui-header, .ui-footer { position: relative; border-left-width: 0; border-right-width: 0; 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; } -/*content area*/ -.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; } -/* icons sizing */ -.ui-icon { width: 18px; height: 18px; } -/* non-js content hiding */ -.ui-nojs { position: absolute; left: -9999px; } -/* accessible content hiding */ -.ui-hide-label label.ui-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 1px 1px 1px); clip: rect(1px,1px,1px,1px); } -/* Transitions originally inspired by those from jQtouch, nice work, folks */ -.ui-mobile-viewport-transitioning, -.ui-mobile-viewport-transitioning .ui-page { - width: 100%; - height: 100%; - overflow: hidden; - -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; - } -} -/* keyframes for slidein from sides */ -@-webkit-keyframes slideinfromright { - from { -webkit-transform: translateX(100%); } - to { -webkit-transform: translateX(0); } -} -@-moz-keyframes slideinfromright { - from { -moz-transform: translateX(100%); } - to { -moz-transform: translateX(0); } -} -@-webkit-keyframes slideinfromleft { - from { -webkit-transform: translateX(-100%); } - to { -webkit-transform: translateX(0); } -} -@-moz-keyframes slideinfromleft { - from { -moz-transform: translateX(-100%); } - to { -moz-transform: translateX(0); } -} -/* keyframes for slideout to sides */ -@-webkit-keyframes slideouttoleft { - from { -webkit-transform: translateX(0); } - to { -webkit-transform: translateX(-100%); } -} -@-moz-keyframes slideouttoleft { - from { -moz-transform: translateX(0); } - to { -moz-transform: translateX(-100%); } -} -@-webkit-keyframes slideouttoright { - from { -webkit-transform: translateX(0); } - to { -webkit-transform: translateX(100%); } -} -@-moz-keyframes slideouttoright { - from { -moz-transform: translateX(0); } - to { -moz-transform: translateX(100%); } -} -.slide.out, .slide.in { - -webkit-animation-timing-function: ease-out; - -webkit-animation-duration: 350ms; - -moz-animation-timing-function: ease-out; - -moz-animation-duration: 350ms; -} -.slide.out { - -webkit-transform: translateX(-100%); - -webkit-animation-name: slideouttoleft; - -moz-transform: translateX(-100%); - -moz-animation-name: slideouttoleft; -} -.slide.in { - -webkit-transform: translateX(0); - -webkit-animation-name: slideinfromright; - -moz-transform: translateX(0); - -moz-animation-name: slideinfromright; -} -.slide.out.reverse { - -webkit-transform: translateX(100%); - -webkit-animation-name: slideouttoright; - -moz-transform: translateX(100%); - -moz-animation-name: slideouttoright; -} -.slide.in.reverse { - -webkit-transform: translateX(0); - -webkit-animation-name: slideinfromleft; - -moz-transform: translateX(0); - -moz-animation-name: slideinfromleft; -} -.slidefade.out { - -webkit-transform: translateX(-100%); - -webkit-animation-name: slideouttoleft; - -moz-transform: translateX(-100%); - -moz-animation-name: slideouttoleft; - -webkit-animation-duration: 225ms; - -moz-animation-duration: 225ms; -} -.slidefade.in { - -webkit-transform: translateX(0); - -webkit-animation-name: fadein; - -moz-transform: translateX(0); - -moz-animation-name: fadein; - -webkit-animation-duration: 200ms; - -moz-animation-duration: 200ms; -} -.slidefade.out.reverse { - -webkit-transform: translateX(100%); - -webkit-animation-name: slideouttoright; - -moz-transform: translateX(100%); - -moz-animation-name: slideouttoright; - -webkit-animation-duration: 200ms; - -moz-animation-duration: 200ms; -} -.slidefade.in.reverse { - -webkit-transform: translateX(0); - -webkit-animation-name: fadein; - -moz-transform: translateX(0); - -moz-animation-name: fadein; - -webkit-animation-duration: 200ms; - -moz-animation-duration: 200ms; -} -/* slide down */ -.slidedown.out { - -webkit-animation-name: fadeout; - -moz-animation-name: fadeout; - -webkit-animation-duration: 100ms; - -moz-animation-duration: 100ms; -} -.slidedown.in { - -webkit-transform: translateY(0); - -webkit-animation-name: slideinfromtop; - -moz-transform: translateY(0); - -moz-animation-name: slideinfromtop; - -webkit-animation-duration: 250ms; - -moz-animation-duration: 250ms; -} -.slidedown.in.reverse { - -webkit-animation-name: fadein; - -moz-animation-name: fadein; - -webkit-animation-duration: 150ms; - -moz-animation-duration: 150ms; -} -.slidedown.out.reverse { - -webkit-transform: translateY(-100%); - -moz-transform: translateY(-100%); - -webkit-animation-name: slideouttotop; - -moz-animation-name: slideouttotop; - -webkit-animation-duration: 200ms; - -moz-animation-duration: 200ms; -} -@-webkit-keyframes slideinfromtop { - from { -webkit-transform: translateY(-100%); } - to { -webkit-transform: translateY(0); } -} -@-moz-keyframes slideinfromtop { - from { -moz-transform: translateY(-100%); } - to { -moz-transform: translateY(0); } -} -@-webkit-keyframes slideouttotop { - from { -webkit-transform: translateY(0); } - to { -webkit-transform: translateY(-100%); } -} -@-moz-keyframes slideouttotop { - from { -moz-transform: translateY(0); } - to { -moz-transform: translateY(-100%); } -} -/* slide up */ -.slideup.out { - -webkit-animation-name: fadeout; - -moz-animation-name: fadeout; - -webkit-animation-duration: 100ms; - -moz-animation-duration: 100ms; -} -.slideup.in { - -webkit-transform: translateY(0); - -webkit-animation-name: slideinfrombottom; - -moz-transform: translateY(0); - -moz-animation-name: slideinfrombottom; - -webkit-animation-duration: 250ms; - -moz-animation-duration: 250ms; -} -.slideup.in.reverse { - -webkit-animation-name: fadein; - -moz-animation-name: fadein; - -webkit-animation-duration: 150ms; - -moz-animation-duration: 150ms; -} -.slideup.out.reverse { - -webkit-transform: translateY(100%); - -moz-transform: translateY(100%); - -webkit-animation-name: slideouttobottom; - -moz-animation-name: slideouttobottom; - -webkit-animation-duration: 200ms; - -moz-animation-duration: 200ms; -} -@-webkit-keyframes slideinfrombottom { - from { -webkit-transform: translateY(100%); } - to { -webkit-transform: translateY(0); } -} -@-moz-keyframes slideinfrombottom { - from { -moz-transform: translateY(100%); } - to { -moz-transform: translateY(0); } -} -@-webkit-keyframes slideouttobottom { - from { -webkit-transform: translateY(0); } - to { -webkit-transform: translateY(100%); } -} -@-moz-keyframes slideouttobottom { - from { -moz-transform: translateY(0); } - to { -moz-transform: translateY(100%); } -} -/* The properties in this rule are only necessary for the 'flip' transition. - * We need specify the perspective to create a projection matrix. This will add - * some depth as the element flips. The depth number represents the distance of - * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate - * value. - */ -.viewport-flip { - -webkit-perspective: 1000; - -moz-perspective: 1000; - position: absolute; -} -.flip { - -webkit-backface-visibility:hidden; - -webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ - -moz-backface-visibility:hidden; - -moz-transform:translateX(0); -} -.flip.out { - -webkit-transform: rotateY(-90deg) scale(.9); - -webkit-animation-name: flipouttoleft; - -webkit-animation-duration: 175ms; - -moz-transform: rotateY(-90deg) scale(.9); - -moz-animation-name: flipouttoleft; - -moz-animation-duration: 175ms; -} -.flip.in { - -webkit-animation-name: flipintoright; - -webkit-animation-duration: 225ms; - -moz-animation-name: flipintoright; - -moz-animation-duration: 225ms; -} -.flip.out.reverse { - -webkit-transform: rotateY(90deg) scale(.9); - -webkit-animation-name: flipouttoright; - -moz-transform: rotateY(90deg) scale(.9); - -moz-animation-name: flipouttoright; -} -.flip.in.reverse { - -webkit-animation-name: flipintoleft; - -moz-animation-name: flipintoleft; -} -@-webkit-keyframes flipouttoleft { - from { -webkit-transform: rotateY(0); } - to { -webkit-transform: rotateY(-90deg) scale(.9); } -} -@-moz-keyframes flipouttoleft { - from { -moz-transform: rotateY(0); } - to { -moz-transform: rotateY(-90deg) scale(.9); } -} -@-webkit-keyframes flipouttoright { - from { -webkit-transform: rotateY(0) ; } - to { -webkit-transform: rotateY(90deg) scale(.9); } -} -@-moz-keyframes flipouttoright { - from { -moz-transform: rotateY(0); } - to { -moz-transform: rotateY(90deg) scale(.9); } -} -@-webkit-keyframes flipintoleft { - from { -webkit-transform: rotateY(-90deg) scale(.9); } - to { -webkit-transform: rotateY(0); } -} -@-moz-keyframes flipintoleft { - from { -moz-transform: rotateY(-90deg) scale(.9); } - to { -moz-transform: rotateY(0); } -} -@-webkit-keyframes flipintoright { - from { -webkit-transform: rotateY(90deg) scale(.9); } - to { -webkit-transform: rotateY(0); } -} -@-moz-keyframes flipintoright { - from { -moz-transform: rotateY(90deg) scale(.9); } - to { -moz-transform: rotateY(0); } -} -/* The properties in this rule are only necessary for the 'flip' transition. - * We need specify the perspective to create a projection matrix. This will add - * some depth as the element flips. The depth number represents the distance of - * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate - * value. - */ -.viewport-turn { - -webkit-perspective: 1000; - -moz-perspective: 1000; - position: absolute; -} -.turn { - -webkit-backface-visibility:hidden; - -webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ - -webkit-transform-origin: 0; - - -moz-backface-visibility:hidden; - -moz-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ - -moz-transform-origin: 0; -} -.turn.out { - -webkit-transform: rotateY(-90deg) scale(.9); - -webkit-animation-name: flipouttoleft; - -moz-transform: rotateY(-90deg) scale(.9); - -moz-animation-name: flipouttoleft; - -webkit-animation-duration: 125ms; - -moz-animation-duration: 125ms; -} -.turn.in { - -webkit-animation-name: flipintoright; - -moz-animation-name: flipintoright; - -webkit-animation-duration: 250ms; - -moz-animation-duration: 250ms; - -} -.turn.out.reverse { - -webkit-transform: rotateY(90deg) scale(.9); - -webkit-animation-name: flipouttoright; - -moz-transform: rotateY(90deg) scale(.9); - -moz-animation-name: flipouttoright; -} -.turn.in.reverse { - -webkit-animation-name: flipintoleft; - -moz-animation-name: flipintoleft; -} -@-webkit-keyframes flipouttoleft { - from { -webkit-transform: rotateY(0); } - to { -webkit-transform: rotateY(-90deg) scale(.9); } -} -@-moz-keyframes flipouttoleft { - from { -moz-transform: rotateY(0); } - to { -moz-transform: rotateY(-90deg) scale(.9); } -} -@-webkit-keyframes flipouttoright { - from { -webkit-transform: rotateY(0) ; } - to { -webkit-transform: rotateY(90deg) scale(.9); } -} -@-moz-keyframes flipouttoright { - from { -moz-transform: rotateY(0); } - to { -moz-transform: rotateY(90deg) scale(.9); } -} -@-webkit-keyframes flipintoleft { - from { -webkit-transform: rotateY(-90deg) scale(.9); } - to { -webkit-transform: rotateY(0); } -} -@-moz-keyframes flipintoleft { - from { -moz-transform: rotateY(-90deg) scale(.9); } - to { -moz-transform: rotateY(0); } -} -@-webkit-keyframes flipintoright { - from { -webkit-transform: rotateY(90deg) scale(.9); } - to { -webkit-transform: rotateY(0); } -} -@-moz-keyframes flipintoright { - from { -moz-transform: rotateY(90deg) scale(.9); } - to { -moz-transform: rotateY(0); } -} -/* flow transition */ -.flow { - -webkit-transform-origin: 50% 30%; - -moz-transform-origin: 50% 30%; - -webkit-box-shadow: 0 0 20px rgba(0,0,0,.4); - -moz-box-shadow: 0 0 20px rgba(0,0,0,.4); -} -.ui-dialog.flow { - -webkit-transform-origin: none; - -moz-transform-origin: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; -} -.flow.out { - -webkit-transform: translateX(-100%) scale(.7); - -webkit-animation-name: flowouttoleft; - -webkit-animation-timing-function: ease; - -webkit-animation-duration: 350ms; - -moz-transform: translateX(-100%) scale(.7); - -moz-animation-name: flowouttoleft; - -moz-animation-timing-function: ease; - -moz-animation-duration: 350ms; -} -.flow.in { - -webkit-transform: translateX(0) scale(1); - -webkit-animation-name: flowinfromright; - -webkit-animation-timing-function: ease; - -webkit-animation-duration: 350ms; - -moz-transform: translateX(0) scale(1); - -moz-animation-name: flowinfromright; - -moz-animation-timing-function: ease; - -moz-animation-duration: 350ms; -} -.flow.out.reverse { - -webkit-transform: translateX(100%); - -webkit-animation-name: flowouttoright; - -moz-transform: translateX(100%); - -moz-animation-name: flowouttoright; -} -.flow.in.reverse { - -webkit-animation-name: flowinfromleft; - -moz-animation-name: flowinfromleft; -} -@-webkit-keyframes flowouttoleft { - 0% { -webkit-transform: translateX(0) scale(1); } - 60%, 70% { -webkit-transform: translateX(0) scale(.7); } - 100% { -webkit-transform: translateX(-100%) scale(.7); } -} -@-moz-keyframes flowouttoleft { - 0% { -moz-transform: translateX(0) scale(1); } - 60%, 70% { -moz-transform: translateX(0) scale(.7); } - 100% { -moz-transform: translateX(-100%) scale(.7); } -} -@-webkit-keyframes flowouttoright { - 0% { -webkit-transform: translateX(0) scale(1); } - 60%, 70% { -webkit-transform: translateX(0) scale(.7); } - 100% { -webkit-transform: translateX(100%) scale(.7); } -} -@-moz-keyframes flowouttoright { - 0% { -moz-transform: translateX(0) scale(1); } - 60%, 70% { -moz-transform: translateX(0) scale(.7); } - 100% { -moz-transform: translateX(100%) scale(.7); } -} -@-webkit-keyframes flowinfromleft { - 0% { -webkit-transform: translateX(-100%) scale(.7); } - 30%, 40% { -webkit-transform: translateX(0) scale(.7); } - 100% { -webkit-transform: translateX(0) scale(1); } -} -@-moz-keyframes flowinfromleft { - 0% { -moz-transform: translateX(-100%) scale(.7); } - 30%, 40% { -moz-transform: translateX(0) scale(.7); } - 100% { -moz-transform: translateX(0) scale(1); } -} -@-webkit-keyframes flowinfromright { - 0% { -webkit-transform: translateX(100%) scale(.7); } - 30%, 40% { -webkit-transform: translateX(0) scale(.7); } - 100% { -webkit-transform: translateX(0) scale(1); } -} -@-moz-keyframes flowinfromright { - 0% { -moz-transform: translateX(100%) scale(.7); } - 30%, 40% { -moz-transform: translateX(0) scale(.7); } - 100% { -moz-transform: translateX(0) scale(1); } -} -/* content configurations. */ -.ui-grid-a, .ui-grid-b, .ui-grid-c, .ui-grid-d { overflow: hidden; } -.ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e { margin: 0; padding: 0; border: 0; float: left; min-height: 1px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; } -/* grid solo: 100 - single item fallback */ -.ui-grid-solo .ui-block-a { display: block; float: none; } -/* Lower percentages for older browsers (i.e. IE7) to prevent wrapping. -.5px to fix BB5 wrap issue. */ -/* grid a: 50/50 */ -.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; } -/* grid b: 33/33/33 */ -.ui-grid-b .ui-block-a, .ui-grid-b .ui-block-b, .ui-grid-b .ui-block-c { width: 33.25%; } -.ui-grid-b > :nth-child(n) { width: 33.333%; margin-right: -.5px; } -.ui-grid-b .ui-block-a { clear: left; } -/* grid c: 25/25/25/25 */ -.ui-grid-c .ui-block-a, .ui-grid-c .ui-block-b, .ui-grid-c .ui-block-c, .ui-grid-c .ui-block-d { width: 24.925%; } -.ui-grid-c > :nth-child(n) { width: 25%; margin-right: -.5px; } -.ui-grid-c .ui-block-a { clear: left; } -/* grid d: 20/20/20/20/20 */ -.ui-grid-d .ui-block-a, .ui-grid-d .ui-block-b, .ui-grid-d .ui-block-c, .ui-grid-d .ui-block-d, .ui-grid-d .ui-block-e { width: 19.925%; } -.ui-grid-d > :nth-child(n) { width: 20%; } -.ui-grid-d .ui-block-a { clear: left; } -/* fixed page header & footer configuration */ -.ui-header-fixed, -.ui-footer-fixed { - left: 0; - right: 0; - width: 100%; - position: fixed; - z-index: 1000; -} -.ui-header-fixed { - top: 0; -} -.ui-footer-fixed { - bottom: 0; -} -.ui-header-fullscreen, -.ui-footer-fullscreen { - 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; } -/* add border if not in header/footer (full width) */ -.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; } -/* fixing gaps caused by subpixel problem */ -.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-mobile to increase specificity level */ -.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; } -/*btn icon positioning*/ -.ui-btn-icon-notext .ui-icon { display: block; z-index: 0;} -.ui-btn-icon-left > .ui-btn-inner > .ui-icon, .ui-btn-icon-right > .ui-btn-inner > .ui-icon { position: absolute; top: 50%; margin-top: -9px; } -.ui-btn-icon-top .ui-btn-inner .ui-icon, .ui-btn-icon-bottom .ui-btn-inner .ui-icon { position: absolute; left: 50%; margin-left: -9px; } -.ui-btn-icon-left .ui-icon { left: 10px; } -.ui-btn-icon-right .ui-icon { right: 10px; } -.ui-btn-icon-top .ui-icon { top: 10px; } -.ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } -.ui-header .ui-btn-icon-left .ui-icon, -.ui-footer .ui-btn-icon-left .ui-icon, -.ui-mini.ui-btn-icon-left .ui-icon, -.ui-mini .ui-btn-icon-left .ui-icon { left: 5px; } -.ui-header .ui-btn-icon-right .ui-icon, -.ui-footer .ui-btn-icon-right .ui-icon, -.ui-mini.ui-btn-icon-right .ui-icon, -.ui-mini .ui-btn-icon-right .ui-icon { right: 5px; } -.ui-header .ui-btn-icon-top .ui-icon, -.ui-footer .ui-btn-icon-top .ui-icon, -.ui-mini.ui-btn-icon-top .ui-icon, -.ui-mini .ui-btn-icon-top .ui-icon { top: 5px; } -.ui-header .ui-btn-icon-bottom .ui-icon, -.ui-footer .ui-btn-icon-bottom .ui-icon, -.ui-mini.ui-btn-icon-bottom .ui-icon, -.ui-mini .ui-btn-icon-bottom .ui-icon { bottom: 5px; } -/*hiding native button,inputs */ -.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: 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; } -/* Fixes IE/WP filter alpha opacity bugs */ -.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 0px 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:0px; } -.ui-collapsible-content { - display: block; - margin: 0 -15px; - padding: 10px 15px; - border-left-width: 0; - border-right-width: 0; - border-top: none; /* Overrides ui-body-* */ - background-image: none; /* Overrides ui-body-* */ -} -.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; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */ -} -.ui-dialog-contain { - width: 92.5%; - max-width: 500px; - margin: 10% auto 15px auto; - padding: 0; - 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; /* See line #553 of popup.js */ -} -.ui-popup-screen { - background-image: url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==); /* Necessary to set some form of background to ensure element is clickable in IE6/7. While legacy IE won't understand the data-URI'd image, it ensures no additional requests occur in all other browsers with little overhead. */ - top: 0px; - left: 0px; - right: 0px; - 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; } -/* input, label positioning */ -.ui-checkbox input,.ui-radio input { position:absolute; left:20px; top:50%; width: 10px; height: 10px; margin:-5px 0 0 0; outline: 0 !important; z-index: 1; } -.ui-field-contain, fieldset.ui-field-contain { padding: .8em 0; margin: 0; border-width: 0 0 1px 0; overflow: visible; } -.ui-field-contain:last-child { border-bottom-width: 0; } -.ui-field-contain { max-width: 100%; } /* This prevents horizontal scrollbar in IE7 */ -@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; } -/* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including "inherit") without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */ -.ui-select .ui-btn select { cursor: pointer; -webkit-appearance: 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; } -/* Display none because of issues with IE/WP's filter alpha opacity */ -.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; } -/* labels */ -label.ui-select { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } -/*listbox*/ -.ui-select .ui-btn-text, .ui-selectmenu .ui-btn-text { display: block; min-height: 1em; overflow: hidden !important; -/* This !important is required for iPad Safari specifically. See https://github.com/jquery/jquery-mobile/issues/2647 */ } -.ui-select .ui-btn-text { text-overflow: ellipsis; } -.ui-selectmenu { 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%; } -} -/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button. this shim's content in there */ -.ui-selectmenu .ui-header h1:after { content: '.'; visibility: hidden; } -label.ui-input-text { font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; } -input.ui-input-text, textarea.ui-input-text { background-image: none; padding: .4em; 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%; /*echos rule from above*/ } -} -.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; } /* to avoid chance of duplication */ -.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: 0px; } -.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; } -/* Odd iPad positioning issue. */ -@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { - .ui-li .ui-btn-text { overflow: visible; } -} -label.ui-slider { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } -input.ui-slider-input, -.ui-field-contain input.ui-slider-input { display: inline-block; width: 50px; 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; } -/* Fixes input fields being to small on Safari/Mac because of the up and down arrows. */ -.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; } diff --git a/theme/mymobile/style/media.css b/theme/mymobile/style/media.css index 06babbd2522..0017ee768d0 100644 --- a/theme/mymobile/style/media.css +++ b/theme/mymobile/style/media.css @@ -44,10 +44,6 @@ .path-mod-forum .indent { margin-left: 0px; } - .course-content ul.ctopics li.section .content, .course-content ul.ctopics li.tcsection .content { - margin: 0 0px; - padding: 0; -} } @media all and (max-width: 650px){ .forumpost div.commands a { diff --git a/theme/mymobile/version.php b/theme/mymobile/version.php index 8a618a37e0d..4763657556f 100644 --- a/theme/mymobile/version.php +++ b/theme/mymobile/version.php @@ -26,7 +26,7 @@ defined('MOODLE_INTERNAL') || die; -$plugin->version = 2013022500; // The current module version (Date: YYYYMMDDXX) +$plugin->version = 2012112900; // The current module version (Date: YYYYMMDDXX) $plugin->requires = 2012112900; // Requires this Moodle version $plugin->component = 'theme_mymobile'; -$plugin->maturity = MATURITY_STABLE; +$plugin->maturity = MATURITY_STABLE; \ No newline at end of file