diff --git a/bbm/LICENSE b/bbm/LICENSE index 16d1fa9b..6d3fd464 100644 --- a/bbm/LICENSE +++ b/bbm/LICENSE @@ -1,6 +1,6 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -200,9 +200,9 @@ See the License for the specific language governing permissions and limitations under the License. - ========================================================== - IScroll.js - ========================================================== +============================================================= + IScroll.js +============================================================= Copyright (c) 2009-2010 Matteo Spinelli, http://cubiq.org/ @@ -227,9 +227,9 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ========================================================== - Plastique Icons - ========================================================== +============================================================= + Plastique Icons +============================================================= Plastique Icon Set by Iconify.it, LLC is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License. @@ -304,3 +304,72 @@ No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law. + +============================================================= + Subway Icons Set for RIM BB10 Dev Samples +============================================================= + + This is small Subway Icons Set released specially for RIM BB10 Dev Samples under CC BY 3.0 license. + + Included icons in three size - 81px, 71px and 61px + + Full set is available on Subway website: + http://subway.pixle.pl/rim/ + + + Creative Commons Attribution 3.0 Unported + http://creativecommons.org/licenses/by/3.0/legalcode + + THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + + BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. + + 1. Definitions + + "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License. + "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License. + "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership. + "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License. + "Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast. + "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work. + "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. + "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images. + "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium. + 2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws. + + 3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: + + to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections; + to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified."; + to Distribute and Publicly Perform the Work including as incorporated in Collections; and, + to Distribute and Publicly Perform Adaptations. + For the avoidance of doubt: + + Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; + Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and, + Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License. + The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved. + + 4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: + + You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(b), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(b), as requested. + If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Section 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4 (b) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties. + Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise. + 5. Representations, Warranties and Disclaimer + + UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + + 6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 7. Termination + + This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. + Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. + 8. Miscellaneous + + Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. + Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. + If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. + This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. + The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law. \ No newline at end of file diff --git a/bbm/README.md b/bbm/README.md index de95240b..cf2222f7 100644 --- a/bbm/README.md +++ b/bbm/README.md @@ -1,4 +1,15 @@ -This sample is based on the Jam Americas 2012 lab sample that was made available here: -https://github.com/blackberry/BB10-WebWorks-Community-Samples/tree/master/bbm +This application provides a look at **blackberry.bbm.platform** as well as **blackberry.invoke** APIs that will enable developers to leverage BlackBerry Messenger integration within their BlackBerry 10 applications. -Refer to the original sample for more information regarding the UI implementation, however please note that the actual BBM API implementation has since changed, and this sample should be used for reference regarding functionality implementation. \ No newline at end of file +To separate the BBM functionality from the remaining application, all relevant BBM implementation was implemented in **bbm.js** while the remaining files are leveraged to configure UI components, and define actions (click event listeners) connecting those components to the API functionality. + +#Known Issues + +**blackberry.bbm.platform.self.setDisplayPicture** +* Not currently working. +* Can be replaced with the **Set Avatar** invocation. + +**Start Chat** +* Should display Contact Picker if no **uri** is provided; not currently working. +* Can be replaced with the **Share Text* invocation (provide empty **data** string.) +* If a URI is provided that exists in the users's BBM Contact List, a chat will be immediately started; working as intended. +* If a URI is provided that does not exist in the user's BBM Contact List, an invitation to join BBM will be sent instead; working as intended. \ No newline at end of file diff --git a/bbm/config.xml b/bbm/config.xml index c1d7ba2b..a92b403d 100644 --- a/bbm/config.xml +++ b/bbm/config.xml @@ -19,40 +19,27 @@ - BBM Sample - Research In Motion - - + BBM APIs + Oros - - - - - - - - - - - - - - - bbm_connect - - - - + + + + + + + bbm_connect + \ No newline at end of file diff --git a/bbm/css/bbui-0.9.5.css b/bbm/css/bbui-0.9.5.css new file mode 100644 index 00000000..f29d156c --- /dev/null +++ b/bbm/css/bbui-0.9.5.css @@ -0,0 +1,5389 @@ +/* +* Copyright 2010-2011 Research In Motion Limited. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +body, html { + padding:0; + margin:0; + font-family: "Slate Pro",Slate,"Myriad Pro","BBAlpha Sans",Helvetica; + font-size: 12pt; + overflow:visible; + user-select: none; + -webkit-user-select: none; +} + +@-webkit-keyframes bbUI-fade-in +{ + 0% { opacity: 0; } + 100% { opacity: 1; } +} + +@-webkit-keyframes bbUI-fade-out +{ + 0% { opacity: 1; } + 100% { opacity: 0; } +} + +@-webkit-keyframes bbUI-slide-left +{ + 0% { left: 450px; } + 100% { left: 0px; } +} + +@-webkit-keyframes bbUI-slide-out-left +{ + 0% { left: 0px; } + 100% { left: -720px; } +} + +@-webkit-keyframes bbUI-slide-right +{ + 0% { left: -450px; } + 100% { left: 0px; } +} + +@-webkit-keyframes bbUI-slide-out-right +{ + 0% { left: 0px; } + 100% { left: 720px; } +} + +@-webkit-keyframes bbUI-slide-out-up +{ + 0% { top: 0px; } + 100% { top: -1280px; } +} + +@-webkit-keyframes bbUI-slide-up +{ + 0% { top: 800px; } + 100% { top: 0px; } +} + +@-webkit-keyframes bbUI-slide-out-down +{ + 0% { top: 0px; } + 100% { top: 1280px; } +} + +@-webkit-keyframes bbUI-slide-down +{ + 0% { top: -800px; } + 100% { top: 0px; } +} + +::-webkit-scrollbar { + width: 0px; + height: 0px; +} + +.bb-hires-screen { + font-size: 16pt; +} + +.bb-bb10-lowres-screen { + font-size: 16pt; + position:absolute; + top:0px; + left:0px; + bottom:0px; + right: 0px; + background-color: white; +} + +.bb-bb10-hires-screen { + font-size: 30pt; + position:absolute; + top:0px; + left:0px; + bottom:0px; + right: 0px; + background-color: white; +} + +.bb-transition-overlay +{ + z-index: 1000; + position: fixed; + top: 0px; + right:0px; + bottom:0px; + left:0px; +} +/* ================================================= + Scroll Panel + =================================================*/ +.bb-scroll-panel +{ + overflow:auto; + position:relative; +} + +/* ================================================= + PlayBook Swipe Menu + =================================================*/ +.pb-menu-bar { + font-family: "Myriad Pro", sans serif; + position: fixed; + left: 0px; + width: 100%; + clear: both; + margin: 0; + padding: 0; + line-height: 1; + border: 0; + font-size: 100%; + background: #181818; + border-bottom: solid #626262 1px; + box-shadow: 0px 2px 2px #888; + color: white; + z-index:1002; + height: 100px; + top: -104px; +} + +.pb-menu-bar ul { + float: right; + list-style: none; + margin: 0; + padding-left: 15px; + border: 0; + position: relative; + border-left: solid #626262 1px; +} + +.pb-menu-bar ul li { + margin: 0 2px 0 2px; + border: 0; + cursor: pointer; + text-align: center; + float: left; + font-size: 16pt; + padding-right: 15px; +} + +.pb-menu-bar img +{ + height: 65px; + width: 65px; +} + +.pb-menu-bar-caption +{ + padding-top: 10px; + +} + +/* ================================================= + BB10 Slider + =================================================*/ + @-webkit-keyframes explode { + 0% { -webkit-transform: scale(0); } + 70% { + -webkit-transform: scale(1.2); + -webkit-animation-timing-function: ease-in; + } + 100% { -webkit-transform: scale(1); } +} + +@-webkit-keyframes implode { + 0% { -webkit-transform: scale(1); } + 20% { + -webkit-transform: scale(1.2); + -webkit-animation-timing-function: ease-in; + } + 100% { -webkit-transform: scale(0); } +} + +.bb-bb10-slider-lowres +{ + margin: 1.8em; +} + +.bb-bb10-slider-lowres .outer +{ + display: inline-block; + padding: 0.2em; + position: relative; + padding: 0px; + height: 0.4em; + border-radius: 0.2em; + width:100%; +} + +.bb-bb10-slider-lowres .bb-bb10-slider-outer-dark +{ + background: #070707; + border-top: 1px solid rgba(255,255,255,0.05); + border-right: 1px solid rgba(255,255,255,0.1); + border-left: 1px solid rgba(255,255,255,0.05); + border-bottom: 1px solid rgba(255,255,255,0.4); +} + +.bb-bb10-slider-lowres .bb-bb10-slider-outer-light +{ + background: -webkit-linear-gradient(top, #C9C9C9 0%, #DEDEDE 100%); + border-top: 1px solid #9B9B9B; + border-right: 1px solid #9B9B9B; + border-left: 1px solid #9B9B9B; + border-bottom: 1px solid #C8C8C8; +} + +.bb-bb10-slider-lowres .halo { + margin: 12px; + border-radius: 30px; + width: 60px; + height: 60px; + position: absolute; + display: inline-block; + -webkit-animation-duration: 0.3s; + -webkit-animation-iteration-count: 1; + -webkit-animation-timing-function: linear; + -webkit-scale-origin: center center; + -webkit-transform: scale(0); +} + +.bb-bb10-slider-lowres .indicator +{ + display: inline-block; + padding: 0.5em 1.8em; + cursor: pointer; + position: absolute; + margin: 27px; + width: 28px; + height: 28px; + border-radius: 15px; + padding: 1px; + border: 0px; +} + +.bb-bb10-slider-lowres .bb-bb10-slider-indicator-dark +{ + background: -webkit-linear-gradient(top, #3F3F3F 0%, #252525 100%); + border-top: 1px solid rgba(255,255,255,0.3); + border-right: 1px solid rgba(255,255,255,0.1); + border-left: 1px solid rgba(255,255,255,0.05); + border-bottom: 1px solid rgba(255,255,255,0.025); + box-shadow: 0px 0px 0.2em #030303; +} + +.bb-bb10-slider-lowres .bb-bb10-slider-indicator-light +{ + color: #f9f9f9; + background: -webkit-linear-gradient(top, #F9F9F9 0%, #DDDDDD 100%); + border: 1px solid #BFBFBF; + box-shadow: 0px 0px 0.2em #030303; +} + +.bb-bb10-slider-lowres .indicator-hover-dark { + border-top: 2px solid #555; + border-left: 2px solid #454545; + border-right: 2px solid #454545; + border-bottom: 2px solid #353535; + border: 0px; +} + +.bb-bb10-slider-lowres .indicator-hover-light { + border: 1px solid #BFBFBF; +} + +.bb-bb10-slider-lowres .fill { + position: absolute; + height: 100%; + width: 0px; + border-radius: 0.2em; +} + +.bb-bb10-slider-lowres .inner { + top: -1.9em; + left: -1.9em; + position: absolute; + width: 4em; + height: 4em; + display: inline-block; +} + +.bb-bb10-slider-hires +{ + margin: 1.8em; +} + +.bb-bb10-slider-hires .outer +{ + display: inline-block; + padding: 1px; + position: relative; + padding: 0px; + height: 17px; + border-radius: 0.2em; + width:100%; +} + +.bb-bb10-slider-hires .bb-bb10-slider-outer-dark +{ + background: #070707; + border-top: 2px solid #0C0C0C; + border-right: 2px solid #191919; + border-left: 2px solid #171717; + border-bottom: 2px solid #404040; +} + +.bb-bb10-slider-hires .bb-bb10-slider-outer-light +{ + background: -webkit-linear-gradient(top, #C9C9C9 0%, #DEDEDE 100%); + border-top: 2px solid #9B9B9B; + border-right: 2px solid #9B9B9B; + border-left: 2px solid #9B9B9B; + border-bottom: 2px solid #C8C8C8; +} + +.bb-bb10-slider-hires .halo { + margin: 32px; + border-radius: 50px; + width: 100px; + height: 100px; + position: absolute; + display: inline-block; + -webkit-animation-duration: 0.3s; + -webkit-animation-iteration-count: 1; + -webkit-animation-timing-function: linear; + -webkit-scale-origin: center center; + -webkit-transform: scale(0); +} + +.bb-bb10-slider-hires .indicator +{ + display: inline-block; + padding: 0.5em 1.8em; + cursor: pointer; + position: absolute; + margin: 53px; + width: 56px; + height: 56px; + border-radius: 29px; + padding: 1px; + border: 0px; +} + + +.bb-bb10-slider-hires .bb-bb10-slider-indicator-dark +{ + background: -webkit-linear-gradient(top, #3F3F3F 0%, #252525 100%); + border: 1px solid #595959; + box-shadow: 0px 0px 0.2em #030303; +} + +.bb-bb10-slider-hires .bb-bb10-slider-indicator-light +{ + background: -webkit-linear-gradient(top, #F9F9F9 0%, #DFDFDF 100%); + border: 1px solid #BFBFBF; + box-shadow: 0px 0px 0.2em #030303; +} + +.bb-bb10-slider-hires .indicator-hover-dark { + border-top: 2px solid #555; + border-left: 2px solid #454545; + border-right: 2px solid #454545; + border-bottom: 2px solid #353535; + border: 0px; +} + +.bb-bb10-slider-hires .indicator-hover-light { + border: 2px solid #BFBFBF; +} + +.bb-bb10-slider-hires .fill { + position: absolute; + height: 100%; + width: 0px; + border-radius: 0.2em; +} + +.bb-bb10-slider-hires .inner { + top: -1.9em; + left: -1.9em; + position: absolute; + width: 4em; + height: 4em; + display: inline-block; +} + +/* ================================================= + BB10 Toggle + =================================================*/ +.bb-bb10-toggle-lowres +{ + padding:10px; + height: 34px; + width: 105px; +} + +.bb-bb10-toggle-lowres .outer +{ + height: 34px; + border-radius: 18px; + width:105px; +} + +.bb-bb10-toggle-lowres .bb-bb10-toggle-outer-dark +{ + background: #070707; + border: 1px solid #404040; + color:white; +} + +.bb-bb10-toggle-lowres .bb-bb10-toggle-outer-light +{ + background: -webkit-linear-gradient(top, #D7D7D7 0%, #D2D2D2 100%); + border: 1px solid #9B9B9B; + color: #262626; +} + +.bb-bb10-toggle-lowres .halo { + margin: 12px; + border-radius: 30px; + width: 60px; + height: 60px; + position: absolute; + display: inline-block; + -webkit-animation-duration: 0.3s; + -webkit-animation-iteration-count: 1; + -webkit-animation-timing-function: linear; + -webkit-scale-origin: center center; + -webkit-transform: scale(0); +} + +.bb-bb10-toggle-lowres .indicator +{ + display: inline-block; + padding: 0.5em 1.8em; + cursor: pointer; + position: absolute; + margin: 26px; + width: 28px; + height: 28px; + border-radius: 15px; + padding: 1px; + border: 0px; +} + +.bb-bb10-toggle-lowres .bb-bb10-toggle-indicator-dark +{ + background: -webkit-linear-gradient(top, #3F3F3F 0%, #252525 100%); + border: 1px solid #595959; + box-shadow: 0px 0px 0.2em #030303; +} + +.bb-bb10-toggle-lowres .bb-bb10-toggle-indicator-light +{ + background: -webkit-linear-gradient(top, #F9F9F9 0%, #DFDFDF 100%); + border: 1px solid #BFBFBF; + box-shadow: 0px 0px 0.2em #030303; +} + +.bb-bb10-toggle-lowres .indicator-hover-dark { + border-top: 1px solid #555; + border-left: 1px solid #454545; + border-right: 1px solid #454545; + border-bottom: 1px solid #353535; + border-color:transparent; +} + +.bb-bb10-toggle-lowres .indicator-hover-light { + border: 1px solid #BFBFBF; +} + +.bb-bb10-toggle-lowres .fill { + position: static; + height: 34px; + width: 105px; + overflow:hidden; + border-radius: 18px; +} + +.bb-bb10-toggle-lowres .inner { + position: relative; + width: 155px; + height: 34px; + left: -65px; +} + +.bb-bb10-toggle-lowres .yes { + height: 34px; + line-height: 44px; + vertical-align: middle; + display:table-cell; + float: right; + width: 43px; + white-space:nowrap; + overflow: hidden; + text-align:right; +} + +.bb-bb10-toggle-lowres .no { + height: 34px; + line-height: 44px; + vertical-align: middle; + display:table-cell; + float: right; + width: 43px; + white-space:nowrap; + overflow: hidden; + text-align:left; +} + +.bb-bb10-toggle-lowres .indicator-container { + margin-top: -60px; + margin-left: -23px; +} + +.bb-bb10-toggle-lowres .table { + padding: 0px; + margin:0px; + border-collapse: collapse; +} + +.bb-bb10-toggle-lowres .right { + width: 43px; + padding: 0px; + margin: 0px; +} + +.bb-bb10-toggle-lowres .left { + width: 43px; + padding: 0px; + margin: 0px; +} + +.bb-bb10-toggle-lowres .center { + width: 69px; + padding: 0px; + margin: 0px; +} + + +.bb-bb10-toggle-hires +{ + padding:20px; + height: 68px; + width: 210px; +} + +.bb-bb10-toggle-hires .outer +{ + height: 68px; + border-radius: 36px; + width:210px; +} + +.bb-bb10-toggle-hires .bb-bb10-toggle-outer-dark +{ + background: #070707; + border: 2px solid #404040; + color:white; +} + +.bb-bb10-toggle-hires .bb-bb10-toggle-outer-light +{ + background: -webkit-linear-gradient(top, #D7D7D7 0%, #D2D2D2 100%); + border: 2px solid #9B9B9B; + color: #262626; +} + +.bb-bb10-toggle-hires .halo { + margin: 34px; + border-radius: 50px; + width: 100px; + height: 100px; + position: absolute; + display: inline-block; + -webkit-animation-duration: 0.3s; + -webkit-animation-iteration-count: 1; + -webkit-animation-timing-function: linear; + -webkit-scale-origin: center center; + -webkit-transform: scale(0); +} + +.bb-bb10-toggle-hires .indicator +{ + display: inline-block; + padding: 0.5em 1.8em; + cursor: pointer; + position: absolute; + margin: 53px; + width: 56px; + height: 56px; + border-radius: 29px; + padding: 1px; + border: 0px; +} + +.bb-bb10-toggle-hires .bb-bb10-toggle-indicator-dark +{ + background: -webkit-linear-gradient(top, #3F3F3F 0%, #252525 100%); + border: 1px solid #595959; + box-shadow: 0px 0px 0.2em #030303; +} + +.bb-bb10-toggle-hires .bb-bb10-toggle-indicator-light +{ + background: -webkit-linear-gradient(top, #F9F9F9 0%, #DFDFDF 100%); + border: 1px solid #BFBFBF; + box-shadow: 0px 0px 0.2em #030303; +} + +.bb-bb10-toggle-hires .indicator-hover-dark { + border-top: 2px solid #555; + border-left: 2px solid #454545; + border-right: 2px solid #454545; + border-bottom: 2px solid #353535; + border-color:transparent; +} + +.bb-bb10-toggle-hires .indicator-hover-light { + border: 2px solid #BFBFBF; +} + +.bb-bb10-toggle-hires .fill { + position: static; + height: 68px; + width: 210px; + overflow:hidden; + border-radius: 36px; +} + +.bb-bb10-toggle-hires .inner { + position: relative; + width: 310px; + height: 68px; + left: -130px; +} + +.bb-bb10-toggle-hires .yes { + height: 68px; + line-height: 65px; + vertical-align: middle; + display:table-cell; + float: right; + width: 86px; + white-space:nowrap; + overflow: hidden; + text-align:right; +} + +.bb-bb10-toggle-hires .no { + height: 68px; + line-height: 65px; + vertical-align: middle; + display:table-cell; + float: left; + width: 86px; + white-space:nowrap; + overflow: hidden; + text-align:left; +} + +.bb-bb10-toggle-hires .indicator-container { + margin-top: -119px; + margin-left: -47px; +} + +.bb-bb10-toggle-hires .table { + padding: 0px; + margin:0px; + border-collapse: collapse; +} + +.bb-bb10-toggle-hires .right { + width: 86px; + padding: 0px; + margin: 0px; +} + +.bb-bb10-toggle-hires .left { + width: 86px; + padding: 0px; + margin: 0px; +} + +.bb-bb10-toggle-hires .center { + width: 138px; + padding: 0px; + margin: 0px; +} + +/* ================================================= + Progress Bar + =================================================*/ + +.bb-progress +{ + /*margin: 1.8em;*/ +} + +.bb-progress .outer +{ + display: inline-block; + padding: 0.2em; + border-radius: 0.4em; + position: relative; + padding: 0px; + height: 0.4em; + text-align: left; + border-radius: 0.2em; + width:100%; +} + +.bb-progress-outer-dark +{ + background: #070707; + border-top: 1px solid rgba(255,255,255,0.05); + border-right: 1px solid rgba(255,255,255,0.1); + border-left: 1px solid rgba(255,255,255,0.05); + border-bottom: 1px solid rgba(255,255,255,0.4); +} + +.bb-progress-outer-idle-background-dark +{ + background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAYAAAAmlE46AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAEcSURBVDhPnZLZCoMwEEWTuK/gi///ke6iqWfoSEr7IA2kwtzM3JOb2r7v/XmeZhxHs22bKYpCNstaK99pmsyyLCZJElNVldQdPxRprutadhRFsp1zZl3Xe2DbtiaOY9Fs13Uep7IsTZ7nxnv/5ZRlmTihKYm9pnjQaMRV8UDHLU3TG0+6rgWhY5JyKx7Cvu9yV/C0zpc6Ax1OuOie51kEsHWgatTRCcmF6f1qUp0m0iUcBkqqLJpAJIiQQpPVJk1dGkMnBA7LW72fA52QmqYRR9GGYZBGBMIgcjYJ44JOKEpxHIecd7CHeHon3vbjTm8KrTucnuJpqvTIczzB40yIfd1fXuROFjzQlQJBQwrrkurTZPW/yiBHev8k+wJ1EPgBOoEmxwAAAABJRU5ErkJggg=="); + background-repeat: repeat-x; +} + +.bb-progress-outer-idle-background-light +{ + background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAIAAACp9tltAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAEDSURBVChTdZFLjoNADERp8ycgxP2XHINLsOUYSED4k9dxlBkFYNFSF8+ustuUZRlFURzHxhjHcTiHYXg+n77vPx4PEVFxmiZTVVWSJMdxqATEFwQBHFd05ag3dV3rHfTM0XUcx77vPc8zTdMoSh3quR+c67ppmgo4v5dlWdeVJHmek1LFfd/neWaSoig4cbAWpOGSZRkNcEAEIg81iJzEsxxfGIbW4j0v9JlDFErhvnuB1nk136efCPFE+/HDWrx94Yj75yuybRvDiS6Viy6r6zoK9EW+Ytu22sjmu/P9H+bDXfr+iBa98/0Jcz3v5RKEUp2XuDyPvvBZZPd2WT9Lvdv0C8pH7m3sNOD0AAAAAElFTkSuQmCC"); + background-repeat: repeat-x; +} + +.bb-progress-outer-light +{ + background-color: #DEDEDE; + border-top: 1px solid #9B9B9B; + border-right: 1px solid #9B9B9B; + border-left: 1px solid #9B9B9B; + border-bottom: 1px solid #C8C8C8; +} + +.bb-progress-fill { + position: absolute; + height: 100%; + width: 0px; + border-radius: 0.2em; + background-repeat: repeat-x; + background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAYAAAAmlE46AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAABJ0AAASdAHeZh94AAAAB3RJTUUH3AUSDTMT49XRLQAAAShJREFUKM+FkbFqwzAURS8tlNKUfEG/zAR9nb1mCYEoUz4gD20x2j14sYMgGJNn6XWpXDtYyarL1T06gohARBBCgNYaSikhInjvEUJAzP8yJiJcLheMpdPpBKWUGGNmBRGJ2WCMWXVdB2YGhmEYl6y1YOZZab/fQynF1tovZkbbthARzJb6vk/hrZxz6Pt+zMal6eEEzxtjvpkZt9ttzHa7HVCWJbz3s9LhcIBSyltrP6qqwvV6HUmKokCWZZKyF4hozcyzPJa22y2W8IIx5t17PyvleY4sy+R8PqNpmv/i8XiM7/283++Ia7G02WxEa426ruGcwxRPiOgtgS5EhCn69DvWj5KmX/WIvnhbFPEsAxH9pOwtLUVJyUBrjWeSkiJeSUqKeCXpF6EYTkZf/qpKAAAAAElFTkSuQmCC"); +} + +.bb-progress .inner { + top: -1.9em; + left: -1.9em; + position: absolute; + width: 4em; + height: 4em; + display: inline-block; +} + +/* ================================================= + BB10 Swipe Menu + =================================================*/ +.bb-bb10-menu-bar-lowres { + position: fixed; + left: 0px; + width: 100%; + clear: both; + margin: 0; + padding: 0; + border: 0; + top: -103px; + font-size: 100%; + z-index:1002; + height: 100px; + border-bottom-style: solid; + border-bottom-width: 1px; +} + +.bb-bb10-menu-bar-hires { + position: fixed; + left: 0px; + width: 100%; + clear: both; + margin: 0; + padding: 0; + border: 0; + top: -143px; + font-size: 100%; + z-index:1002; + height: 140px; + border-bottom-style: solid; + border-bottom-width: 2px; +} + +.bb-bb10-menu-bar-dark +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#323232), to(#272727)); + border-bottom-color: #626262; + color: white; +} + +.bb-bb10-menu-bar-light +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#FAFAFA), to(#E0E0E0)); + border-bottom-color: #CFCFCF; + color: black; +} + +.bb-bb10-menu-bar-item-lowres +{ + text-align: center; + cursor: pointer; + float: left; + height: 88px; +} + +.bb-bb10-menu-bar-item-hires +{ + text-align: center; + cursor: pointer; + float: left; + height: 88px; +} + +.bb-bb10-menu-bar-item-lowres img +{ + height: 40px; + width: 40px; + margin-top: 15px; +} + +.bb-bb10-menu-bar-item-hires img +{ + height: 80px; + width: 80px; + margin-top: 10px; +} + +.bb-bb10-menu-bar-item-caption-lowres +{ + font-size: 16pt; + padding-top: 10px; +} + +.bb-bb10-menu-bar-item-caption-hires +{ + font-size: 20pt; + padding-top: 10px; +} + + +/* ================================================= + BB7 Screen Title + =================================================*/ +.bb-hires-screen-title { + position:relative; + top:0px; + left:0px; + right:0px; + background-color:black; + color:white; + padding:4px; + height: 25px; + /*z-index: 100;*/ +} + +.bb-lowres-screen-title { + position:relative; + top:0px; + left:0px; + right:0px; + background-color:black; + color:white; + padding:4px; + height: 20px; +} + +/* ================================================= + BB7 Input Box + =================================================*/ + +.bb-bb7-input { + border-width: 1px; + border-style: solid; + border-color: #C6C6C6; + height:41px; + background-color:#FAFAFA; + width: 100%; +} + +.bb-bb7-input-hires { + height:41px; +} + +.bb-bb7-input-lowres { + height:33px; +} + +/* ================================================= + BB10 Input Box + =================================================*/ + +.bb-bb10-input { + color: black; + border-style: solid; + background-color:#F9F9F9; + width: 100%; + border-top-color: #ACACAC; + border-left-color: #BEBEBE; + border-right-color: #BDBDBD; + border-bottom-color:#C7C7C7; +} + +.bb-bb10-input::-webkit-input-placeholder +{ + color:#4A4A4A; + font-style:italic; +} + +.bb-bb10-input-focused +{ + color: black; + border-style: solid; + background-color:#F9F9F9; + width: 100%; + background-repeat: no-repeat; + background-position: center right; + outline-width: 0; +} + +.bb-bb10-input-focused-hires +{ + border-width: 4px; + background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAVCAYAAAAuJkyQAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9wEFRALG07YxM4AAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAADbUlEQVRIx7WW3VNTRxjGnz1n94Qkaq/ITbXXRUJiPk4I6LQD4bOUJgW1OozTv64EPUCohnw3IR9EFBNwnPZvsBdt5apy9uS8vejoDNNAhYTnaq92frv7e59ZVqlUCQDC4SDTNA0XiWmaaLcPyCZCRNcZ5youGl6t1/H27e84Ojqi2NQk04Q4N0y5skO5fBEezyBCwSB6AVKmYjFYto1soYByZYdM0zwXTLVWp2y+CGlZiE1OQAiOXqL4fV7246MVKIqKTDaPnWqNTCk/CabWaFA6kwUAPFpZQeCWnymK0huQpmkI+H3s4YMfoCgqtp6mUd9tkjwDSkqJ5t4LSv2chqKoePjgPkJB/4UdPAEEAEIIhAJ+dv/u93AMDGB9I4WXr1pdoaSUeNVq0xNjE5qmYXkpgXAwwMQ53TtV6o8LzqGHQ8zq2PQsvY3kmgGFMQoFAx9PLqVE++CQVpMGXC4Xvl2Yx6geZpxz9CsndhJCYGxUZ0RE2Wweq2sGAFAoGGCMMbQPDumn5GO43E7Mz81gPBrp2810BfoANR6NMLJtyhdKSK4ZIJtIURWsJg243C7Mzczg9tho32EAgB0fH58iroXm8z3K5Yv4+/17MMbgcDgwNzuNO+PRvj7Tf6TuFiH+derGFzdgE0FaHVy//jki4dClwZwJJKXEfqtFf/z5DoODg/B4PPjr3RH2W60zK+FSgExTolbfpWJpBx27g4X5WSQWv4Ft2ygUK6jWGpcGxbs1cL3RpEKpDFVVEV/4Dt7hIcYYg002PTFSKJTKICL6+qs7fSnDU2/INCV2m3uUK5bAFAXLS3F4h4eYEAKcc9wc+pLdu5uAqnLkS2XU/qfRewKSUuLFy31KZ3JQVY7lpTh83uETo60JAe/NIXZvOQHBObYzOTSf7/UVSvkw4u2D15TaegZNcyC+uICAb6Rrzwgh4BsZZon4IpwDTmw93UarfUhSWv1xSEqJw9dvyFjfhNPlwvzsFMKhwJmjzTlHMOBnnY5FmWwBxnoKjDEK3PL17BR/8+tv9NjYgNPtxsz0BCJ6mIlP6BnBOfRQkJFNlC/9AmNjEypXKdjjF0Sp1Ru4evUKZqcmENX1c/0YhRCI6CE2HZvEtc+uobHbhGX19nT89tgYVFWBb8R7oQYWQiA6qrMrbhdZVgeqqvYE9A8Ey3jZunas2AAAAABJRU5ErkJggg=="); +} + +.bb-bb10-input-focused-lowres +{ + border-width: 4px; + background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAANCAYAAACtpZ5jAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9wEFREGHoreJDsAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAACIklEQVQ4y2NctXrtf14eHm9PT/dtDHjA4SNHFZ49e36fiZmJPTQ46BcDAcD05+9fho1btmzdt/9A+ObNWzEUbN2+nYGBgYFh/4GD969cvcYgLibGQAxg8fX1Evzx4+f7bdt3rggLD+FnYGCYBZPcf/AQo5SUpFJHd+8dRgYGhqiIKGcVFYVfxBjMdP78pQ9JCbGMCooKDIuXLJ956PARY5ikg50ty969+++8ffeewd3N1eTJs8f7GUgB+/YfYPjw6TPXwsXL/heWVPy/dv16zP///5nbOrv/N7d1/D9y7IQGA4mAEcbYtWcfo5a6GueGTVu+vn37jkFWVobhybNnDN4enmGv375e7eHmQp7ByKCmvvn/m7fvGDQ11PTyczIvM5AB4AZv276TUUtTnXPLtp1f//z7xyAtJcVw585dBkc767DXb9+t9vX2JMlgJgYGBobde/YxmJuacO47cOjry1evGHw83GNDAv1YuLm4GHbu2beKl4+X5DBmOHT4KAMDAwPDpCnT/1fXN/0/fuo0PFX8//+fdeGipf9LKqr+nz5zxvjgoSOMRLtYX1dXYP6Cxf/fvfvAEB4akm5pZnoWJnni5Kk/9g52KkoKigwHDh45IyUl6Ui0wbv27n1/4/YdBg9P54hXL1/OQpa0tDD/f//+vbtZGamMrGxsDCtXr9l79PgJNqJM3rR56/8jR456EVJ37sIlhc1btv3ftHkrUQYDAIiA4Za6H4vLAAAAAElFTkSuQmCC"); +} + +.bb-bb10-input-hires { + height:79px; + border-radius:4px; + border-width: 2px; + font-size: 27pt; +} + +.bb-bb10-input-lowres { + height:30px; + border-radius:4px; + border-width: 1px; + font-size: 14pt; +} + +/* ================================================= + PlayBook Input Box + =================================================*/ + +.bb-pb-input { + color: black; + border-style: solid; + background-color:white; + width: 100%; + border-top-color: #A7A7A7; + border-left-color: #BBBBBB; + border-right-color: #BBBBBB; + border-bottom-color:#CACACA; + height:35px; + border-radius:4px; + border-width: 1px; + font-size: 14pt; +} + +.bb-pb-input::-webkit-input-placeholder +{ + color:#4A4A4A; + font-style:italic; +} + +.bb-pb-input-focused +{ + color: black; + width: 100%; + background-repeat: no-repeat; + border-top-color: #A7A7A7; + border-left-color: #BBBBBB; + border-right-color: #BBBBBB; + border-bottom-color:#CACACA; + outline-width: 0; + background-position: center right; + background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAALCAYAAAB7/H1+AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AcbEyYOphbJcAAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAABT0lEQVQoz83Sv07CUBSA8e+W3FYChMSFhUScGPQlMJHoSAhB6iwBX4FURvxDV/FVWABfQFjZLEMTFtNEB9qSHBcdTBwsk990codfTk4ufOX7vvBLnuf9+v6nbLsl1eqpuO7wB+I4jlSrp9JuXyXGjdVqJUEQkM1mmU6n3N/fCUCv15P5/IVMJoPv+4mXVQBPTyMZj8eYpslmsyGXy/H+/oFlWcRxRKPRwLYvVWIYYDR6lMlkgtYaEUEpRRRF1Ot1Wi1bJT7F99DtXqt8Po9hGGitUUpxcFDaCf0B9/s3EgQBhmEgIqRSKTzvFdd1ZWfYcRxZLBZorQnDkGKxSBiGmKbJ8/OM4fAh+a9YLpcyn79gWXvEcUytVmMwuFWVyglRFJFOp5nNZqzX67dEcLlcVqXSIUpBs9nk4qKlADqdjjo7O2e73XJ0dEyhUNjnP/QJYeeDH2Kpt8wAAAAASUVORK5CYII="); +} + + +/* ================================================= + BB7 Round panels + =================================================*/ +.bb-playbook-round-panel { + border-radius:3px; + border-width: 1px; + border-style: solid; + border-color: #C6C6C6; + box-shadow:1px 0px 2px #D7D7D7; + background-color: white; + margin-left: 5px; + margin-right: 5px; + margin-bottom: 3px; + margin-top: 3px; + padding: 5px; +} + +/* ================================================= + BB10 Round panels + =================================================*/ +.bb-bb10-round-panel-lowres { + border-radius:5px; + border-width: 1px; + border-style: solid; + margin-left: 5px; + margin-right: 5px; + margin-bottom: 3px; + margin-top: 3px; + padding: 5px; +} + +.bb-bb10-round-panel-hires { + border-radius:10px; + border-width: 2px; + border-style: solid; + margin-left: 10px; + margin-right: 10px; + margin-bottom: 8px; + margin-top: 8px; + padding: 10px; +} + +.bb-bb10-round-panel-light { + border-color: #C6C6C6; + color: Black; + background-color: white; +} + +.bb-bb10-panel-header-lowres +{ + padding-top:5px; + margin-bottom: 5px; + padding-bottom: 3px; + font-size: 14pt; + font-weight: bold; +} + +.bb-bb10-panel-header-hires +{ + padding-top:0px; + margin-bottom: 10px; + padding-bottom: 6px; + font-size: 24pt; + font-weight: bold; +} + +.bb-bb10-panel-header-lowres-light { + border-bottom: solid 1px #DCDBDB; + color: #7C7E80; +} + +.bb-bb10-panel-header-hires-light { + border-bottom: solid 2px #DCDBDB; + color: #7C7E80; +} + + +/* ================================================= + BB7 Buttons + =================================================*/ + +.bb-bb7-button { + border-width:1px; + border-color:#BCBEC2; + border-style: solid; + color: black; + text-align:center; + white-space:nowrap; + vertical-align: middle; + padding-left: 15px; + padding-right: 15px; + display: table-cell; + border-radius:5px; + box-shadow:1px 1px 1px #DCDCDC; + background-clip: padding-box; + background-image: -webkit-gradient(linear, center top, center bottom, from(#F9F9F9), to(#D0D2D4)); +} + +.bb-bb7-button-disabled { + border-width:1px; + border-color:#BDBEBD; + border-style: solid; + color: #636563; + text-align:center; + white-space:nowrap; + vertical-align: middle; + padding-left: 15px; + padding-right: 15px; + display: table-cell; + border-radius:5px; + background-color: #BDBEBD; +} + +.bb-bb7-button-hires { + line-height:54px; + height:54px; +} + +.bb-bb7-button-lowres { + line-height:40px; + height:40px; +} + +.bb-bb7-button-highlight{ + border-width:1px; + border-color:#0060E6; + border-style: solid; + color: White; + text-align:center; + white-space:nowrap; + vertical-align: middle; + padding-left: 15px; + padding-right: 15px; + display: table-cell; + border-radius:5px; + box-shadow:2px 2px 2px #DCDCDC; + background-clip: padding-box; + background-image: -webkit-gradient(linear, center top, center bottom, from(#098CEE), to(#1766DB)); +} + +.button-stretch{ + display:block; +} + + +/* ================================================= + Activity Indicator + =================================================*/ +@-webkit-keyframes activity-rotate { + from { + -webkit-transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + } +} + +.bb-activity-dark +{ + background-image:url("data:image/png;base64,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"); +} + +.bb-activity-light +{ + background-image:url("data:image/png;base64,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"); +} + +/* ================================================= + BB10 Activity Indicator + =================================================*/ +.bb-bb10-activity-margin-hires +{ + margin: 10px; +} + +.bb-bb10-activity-margin-lowres +{ + margin: 5px; +} + +.bb-bb10-activity-large-hires +{ + height: 184px; + width: 184px; + background-size: 184px 184px; +} + +.bb-bb10-activity-large-lowres +{ + height: 93px; + width: 93px; + background-size: 93px 93px; +} + +.bb-bb10-activity-medium-hires +{ + height: 93px; + width: 93px; + background-size: 93px 93px; +} + +.bb-bb10-activity-medium-lowres +{ + height: 46px; + width: 46px; + background-size: 46px 46px; +} + +.bb-bb10-activity-small-hires +{ + height: 41px; + width: 41px; + background-size: 41px 41px; +} + +.bb-bb10-activity-small-lowres +{ + height: 21px; + width: 21px; + background-size: 21px 21px; +} + +/* ================================================= + PlayBook Activity Indicator + =================================================*/ + +.bb-pb-activity-margin +{ + margin: 5px; +} + +.bb-pb-activity-large +{ + height: 93px; + width: 93px; + background-size: 93px 93px; +} + +.bb-pb-activity-medium +{ + height: 46px; + width: 46px; + background-size: 46px 46px; +} + +.bb-pb-activity-small +{ + height: 21px; + width: 21px; + background-size: 21px 21px; +} + + +/* ================================================= + BB10 Checkboxes + =================================================*/ +.bb-bb10-checkbox-target-hires +{ + padding: 20px; + height: 54px; + width: 54px; +} + +.bb-bb10-checkbox-target-lowres +{ + padding: 10px; + height: 27px; + width: 27px; +} + +.bb-bb10-checkbox-outer-hires +{ + height: 50px; + width: 50px; + border-width: 2px; + border-radius: 6px; + border-style: solid; +} + +.bb-bb10-checkbox-outer-lowres +{ + height: 26px; + width: 26px; + border-width: 1px; + border-radius: 3px; + border-style: solid; +} + +.bb-bb10-checkbox-inner-hires +{ + height: 40px; + width: 40px; + border-width: 1px; + border-style: solid; + margin: 4px; + border-radius: 2px; +} + +.bb-bb10-checkbox-inner-lowres +{ + height: 20px; + width: 20px; + border-width: 1px; + border-style: solid; + margin: 2px; + border-radius: 1px; +} + +.bb-bb10-checkbox-check-hidden-hires +{ + height: 15px; + width: 18px; + margin-left: 11px; + margin-top: 10px; + opacity: 0.0; +} + +.bb-bb10-checkbox-check-hidden-lowres +{ + height: 7px; + width: 9px; + margin-left: 5px; + margin-top: 5px; + opacity: 0.0; +} + +.bb-bb10-checkbox-check-display-hires +{ + height: 30px; + width: 36px; + margin-left: 2px; + margin-top: 4px; + opacity: 1.0; +} + +.bb-bb10-checkbox-check-display-lowres +{ + height: 15px; + width: 18px; + margin-left: 1px; + margin-top: 2px; + opacity: 1.0; +} + +.bb-bb10-checkbox-check-image +{ + background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAeCAYAAABE4bxTAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AYGEyUM/CZdbQAAA1JJREFUWMPFlr9qI1cUh3/nnjtz74zqhTzAFsawhcu0gUAgYLdCsOCUNinyBEm15YJVLRsMARdbuXCMXyBssRAIeYAU+waGBUsz9/82c81oIktyYmkvCKFBc+/Hd37ncujq6gpfch0dHS38ll8KhIieAfj6+vr6FsCHw8PDAACCiLDLjxACzDyRUv5TluXvZVm+l1L+fXNz89XODQkhIIQ4llKel2XJQgiklOC9f+GcewvgSBLRrkoEZj5WSp1rrVkpBWZGSgnWWrRt+/3ODHVlOlZKnVdVxVVVoQ9UFAUAfAKArRsawtR1Da01pJQgIqSUkFJCWZbTrQPlzCilzuu6XoARQgAAYowgoksAr7YK1MG8XAWTUkKM8dJ7Pz44OAhbA+oC/FIp9ds6GGvteH9/P2ztYuwysxGMMWa8t7cXFm7q/KddwoQQLq21Y2NMGO7xZCXLmdFabwTTtm2Yz+fYCtCyzFRVtRbGGLMaiIj2AbwA8GdK6eN/LdNDMM65sTEmNE0Day1CCMuBhBAshLgQQky65yHG+CqE8EtK6Ulg+mbatoX3Hsv2lswMKeWPZVlO8kYxRnbO/eyce+a9P132Yi7TMDNFUTxoJpcpm1nWUFJKCa31d3VdQykFIQRCCLDWYj6fn1hr4Zw7jTEOzUw2gclmZrMZjDEPmrkHKooCWuvbvGkeCYwxYGbMZrMTIoJz7jSllM1MlFIXo9FoLUzTNP+CWdVIkplRFMWvSqlJNpRSAjODmXM7nxARYoynRDRRSl3Udc2j0Whlmdq2DU3TrC3Tsi77A8BPAM7yC8NJj5lPnHPPmfkbrfVKmGxmGOBNrhgZY0QIAd77aQgBzHzWZWQ4dsI59y0zQ2v9aJhNl4wxwjkHYwyklNOuTGddqe5hpJR5VICUcmWZNummtUBN02SAKRGhKIp7U/k7a8/W+jDGmEcHeCkQAIQQYIy5PwzAAlQGGB7Qh8mt/djMLAXKd0wfiogWoHLQN4Hp31mPBsqHdAeshdqWmaUDWowR3nu0bdt/PAVgi6J4TUQVAHjv37Vt+0PTNOHu7g5N08A597/MPDh+DE11601K6R0zP48x3lprP87nc+RuegozK0fYvqlu3IRz7hMz/9Xvyqc0k9dnzHXknrhPCCwAAAAASUVORK5CYII="); + background-repeat: no-repeat; + background-position: center center; + background-size: cover; +} + +.bb-bb10-checkbox-outer-dark +{ + border-top-color: #333333; + border-left-color: #333333; + border-right-color: #333333; + border-bottom-color: #4B4B4B; + background-color: #000000; +} + +.bb-bb10-checkbox-outer-light +{ + border-color: #F3F3F3; + background-image: -webkit-gradient(linear, center top, center bottom, from(#A3A3A3), to(#BFBFBF)); +} + +.bb-bb10-checkbox-inner-dark +{ + border-color: #5F5F5F; + background-image: -webkit-gradient(linear, center top, center bottom, from(#404040), to(#272727)); +} + +.bb-bb10-checkbox-inner-light +{ + border-color: #B2B2B2; + background-image: -webkit-gradient(linear, center top, center bottom, from(#F9F9F9), to(#DDDDDD)); +} + +.bb-bb10-checkbox-outer-disabled-dark +{ + border-color: #333333; + background-image: -webkit-gradient(linear, center top, center bottom, from(#E3E3E3), to(#E3E3E3)); +} + +.bb-bb10-checkbox-outer-disabled-light +{ + border-color: #a1a1a1; + background-image: -webkit-gradient(linear, center top, center bottom, from(#E3E3E3), to(#E3E3E3)); +} + +.bb-bb10-checkbox-inner-disabled-dark +{ + border-color: #d3d3d3; + background-image: -webkit-gradient(linear, center top, center bottom, from(#262626), to(#262626)); +} + +.bb-bb10-checkbox-inner-disabled-light +{ + border-color: #d3d3d3; + background-image: -webkit-gradient(linear, center top, center bottom, from(#c0c0c0), to(#c0c0c0)); +} + + +/* ================================================= + File Input buttons + =================================================*/ + +.bb-bb10-file-button-hires { + position : relative; + width : 100%; + height : 87px; + display :block; + z-index : 100; + margin-top : -86px; + opacity: 0.0; +} + +.bb-bb10-file-button-lowres { + position : relative; + width : 100%; + height : 51px; + display :block; + z-index : 100; + margin-top : -50px; + opacity: 0.0; +} + + +/* ================================================= + BB10 Buttons + =================================================*/ + +.bb-bb10-button-container-light +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#BDBDBD), to(#D4D4D4)); + color: black; + border-top-color: #A3A3A3; + border-bottom-color: #CECECE; + border-left-color: #C3C3C3; + border-right-color: #C4C4C4; +} + +.bb-bb10-button-container-dark +{ + background-color: #0B0B0B; + color: white; + border-color: #333333; + display:inline-block; +} + +.bb-bb10-button-caption-with-image-hires +{ + float:left; + text-align:left; + margin-left: 14px; +} + +.bb-bb10-button-caption-with-image-lowres +{ + float:left; + text-align:left; + margin-left: 7px; +} + +.bb-bb10-button-image-hires +{ + height: 71px; + width: 71px; + float: left; + margin-left: -27px; + margin-top: -4px; + background-position: center center; + background-size: cover; +} + +.bb-bb10-button-image-lowres +{ + height: 29px; + width: 29px; + float: left; + margin-left: -12px; + margin-top: -2px; + background-position: center center; + background-size: cover; +} + +.bb-bb10-button-caption-with-image-only-hires +{ + height:71px; + width:71px; + background-position: center center; + background-size: cover; + margin-top: -4px; + margin-left: -27px; +} + +.bb-bb10-button-caption-with-image-only-lowres +{ + height:29px; + width:29px; + background-position: center center; + background-size: cover; + margin-top: -2px; + margin-left: -12px; +} + +.bb-bb10-button-container-image-only-hires +{ + width: 89px; +} + +.bb-bb10-button-container-image-only-lowres +{ + width: 37px; +} + +.bb-bb10-button-container-hires +{ + border-width:4px; + border-style: solid; + border-radius:10px; + padding: 2px; + margin: 20px; +} + +.bb-bb10-button-container-lowres +{ + border-width:2px; + border-style: solid; + border-radius:4px; + padding: 1px; + margin: 16px; +} + +.bb-bb10-button { + border-style: solid; + text-align:center; + white-space:nowrap; + vertical-align: middle; + display: block; + background-clip: padding-box; +} + +.bb-bb10-button-light { + border-top-color: #B4B4B4; + border-left-color: #C2C2C2; + border-bottom-color: #B4B4B4; + border-right-color: #C8C8C8; + background-image: -webkit-gradient(linear, center top, center bottom, from(#F9F9F9), to(#DDDDDD)); +} + +.bb-bb10-button-dark { + border-color:#5C5C5C; + background-image: -webkit-gradient(linear, center top, center bottom, from(#3F3F3F), to(#262626)); +} + +.bb-bb10-button-disabled-dark { + border-color:#262626; + background-color: #262626; + color: #666666; +} + +.bb-bb10-button-disabled-light { + border-color: #D4D4D4; + background-color: #C1C1C1; + color: #838383; +} + +.bb-bb10-button-hires { + border-width:1px; + border-radius:5px; + line-height:60px; + height:75px; + padding-top:12px; + padding-left: 35px; + padding-right: 35px; + font-size:28pt; +} + +.bb-bb10-button-lowres { + border-width:1px; + border-radius:2px; + line-height:30px; + height:30px; + padding-top:5px; + padding-left: 15px; + padding-right: 15px; + font-size:14pt; +} + + +.bb-bb10-button-stretch{ + display:block; +} + +/* ================================================= + PlayBook Buttons + =================================================*/ + +.bb-pb-button-container-light +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#E2E2E2), to(#D1D1D1)); + border-top-color: #A5A5A5; + border-bottom-color: #BABABA; + border-left-color: #B4B4B4; + border-right-color: #B4B4B4; +} + +.bb-pb-button-font-light { + color: black; +} + +.bb-pb-button-container-dark +{ + background-color: #0B0B0B; + border-color: #333333; + display:inline-block; +} + +.bb-pb-button-font-dark { + color: white; +} + +.bb-pb-button-caption-with-image +{ + float:left; + text-align:left; + margin-left: 7px; +} + +.bb-pb-button-image +{ + height: 29px; + width: 29px; + float: left; + margin-left: -14px; + margin-top: -4px; + background-position: center center; + background-size: cover; +} + +.bb-pb-button-caption-with-image-only +{ + height:29px; + width:29px; + background-position: center center; + background-size: cover; + margin-top: -4px; + margin-left: -14px; +} + +.bb-pb-button-container-image-only +{ + width: 33px; +} + +.bb-pb-button-container +{ + border-width:1px; + border-style: solid; + border-radius:3px; + padding: 2px; + margin: 10px; +} + +.bb-pb-button { + border-style: solid; + text-align:center; + white-space:nowrap; + vertical-align: middle; + display: block; + background-clip: padding-box; + border-width:1px; + border-radius:2px; + line-height:26px; + height:26px; + padding-top:5px; + padding-left: 15px; + padding-right: 15px; + font-size:14pt; +} + +.bb-pb-button-light { + border-top-color: #BCBCBC; + border-left-color: #A7A7A7; + border-bottom-color: #878787; + border-right-color: #A7A7A7; + background-image: -webkit-gradient(linear, center top, center bottom, from(#DCDCDC), to(#FFFFFF)); +} + +.bb-pb-button-dark { + border-color:#5C5C5C; + background-image: -webkit-gradient(linear, center top, center bottom, from(#3F3F3F), to(#262626)); +} + +.bb-pb-button-disabled-dark { + border-color:#262626; + background-color: #262626; + color: #666666; +} + +.bb-pb-button-disabled-light { + border-color: #D4D4D4; + background-color: #C1C1C1; + color: #838383; +} + +.bb-pb-button-stretch{ + display:block; +} + +/* ================================================= + BB10 Title Bar + =================================================*/ +.bb-bb10-title-bar-hires { + position:absolute; + top:0px; + left:0px; + right:0px; + border-bottom-width: 2px; + border-bottom-style: solid; + font-size: 39pt; + z-index:1000; +} + +.bb-bb10-title-bar-portrait-hires { + height:110px; +} + +.bb-bb10-title-bar-landscape-hires { + height:99px; +} + +.bb-bb10-title-bar-caption-hires { + text-align:center; + height:100%; + padding:0px; + margin:0px; + overflow: hidden; + white-space:nowrap; + text-overflow: ellipsis; + text-overflow: -blackberry-fade; +} + +.bb-bb10-title-bar-caption-portrait-hires { + line-height:110px; +} + +.bb-bb10-title-bar-caption-landscape-hires { + line-height:110px; +} + +.bb-bb10-title-bar-caption-details-img-hires { + margin-left: 130px; +} + +.bb-bb10-title-bar-caption-left-hires { + text-align:left; + line-height:110px; + height:100%; + padding:0px; + padding-left: 10px; + margin:0px; + overflow: hidden; + white-space:nowrap; + text-overflow: ellipsis; + text-overflow: -blackberry-fade; +} +.bb-bb10-title-bar-accent-text-hires { + color:#606060; + text-align:left; + padding-top:2px; + padding-left: 10px; + margin-top:-12px; + font-size: 29pt; + overflow: hidden; + white-space:nowrap; + text-overflow: ellipsis; + text-overflow: -blackberry-fade; +} + +.bb-bb10-title-bar-hires img +{ + position:relative; + float:left; + margin-top: -2px; + height:112px; + width:112px; +} + +.bb-bb10-title-bar-lowres { + position:absolute; + top:0px; + left:0px; + right:0px; + font-size: 20pt; + z-index:1000; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.bb-bb10-title-bar-portrait-lowres { + height:64px; +} + +.bb-bb10-title-bar-landscape-lowres { + height:64px; +} + +.bb-bb10-title-bar-caption-lowres { + text-align:center; + height:100%; + padding:0px; + margin:0px; + width: 100%; + overflow: hidden; + white-space:nowrap; + text-overflow: ellipsis; +} + +.bb-bb10-title-bar-caption-portrait-lowres { + line-height:76px; +} + +.bb-bb10-title-bar-caption-landscape-lowres { + line-height:76px; +} + +.bb-bb10-title-bar-caption-details-img-lowres { + margin-left: 75px; +} + +.bb-bb10-title-bar-caption-left-lowres { + text-align:left; + line-height:76px; + height:100%; + padding:0px; + padding-left: 5px; + margin:0px; + overflow: hidden; + white-space:nowrap; + text-overflow: ellipsis; +} +.bb-bb10-title-bar-accent-text-lowres { + color:#606060; + text-align:left; + margin:0px; + padding-left: 5px; + font-size: 16pt; + overflow: hidden; + white-space:nowrap; + text-overflow: ellipsis; +} + +.bb-bb10-title-bar-lowres img +{ + position:relative; + float:left; + height:64px; + width:64px; +} + + +.bb-bb10-title-bar-dark +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#414141), to(#131313)); + border-bottom-color:#272727; + color:white; + text-shadow: 0px 2px black; +} + +.bb-bb10-title-bar-light +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#FAFAFA), to(#D5D5D5)); + border-bottom-color: #AAAAAA; + color:#262626; + text-shadow: 0px 2px white; +} + +.bb-bb10-titlebar-button-container-light +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#D3D3D3), to(#ACACAC)); + border-color: #B0B0B0; +} + +.bb-bb10-titlebar-button-container-dark +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#2D2D2D), to(#131313)); + border-color: #4E4D4E; +} + +.bb-bb10-titlebar-button-container-hires +{ + position: absolute; + top: 0px; + border-width:2px; + border-style: solid; + border-radius:10px; + padding: 4px; + margin: 15px; +} + +.bb-bb10-titlebar-button-container-lowres +{ + position: absolute; + top: 0px; + border-width:2px; + border-style: solid; + border-radius:4px; + padding: 1px; + margin: 9px; +} + +.bb-bb10-titlebar-button { + border-style: solid; + text-align:center; + white-space:nowrap; + vertical-align: middle; + display: block; + background-clip: padding-box; +} + +.bb-bb10-titlebar-button-light { + border-color: #898989; + background-image: -webkit-gradient(linear, center top, center bottom, from(#FAFAFA), to(#E1E1E1)); +} + +.bb-bb10-titlebar-button-dark { + border-color:#828282; + background-image: -webkit-gradient(linear, center top, center bottom, from(#5C5C5C), to(#363636)); +} + +.bb-bb10-titlebar-button-disabled-dark { + border-color:#262626; + background-color: #262626; + color: #666666; + +} + +.bb-bb10-titlebar-button-disabled-light { + border-color: #D4D4D4; + background-color: #C1C1C1; + color: #838383; +} + +.bb-bb10-titlebar-button-hires { + border-width:1px; + border-radius:5px; + line-height:40px; + height:55px; + padding-top:12px; + padding-left: 35px; + padding-right: 35px; + font-size:28pt; +} + +.bb-bb10-titlebar-button-lowres { + border-width:1px; + border-radius:2px; + line-height:34px; + height:34px; + padding-top:5px; + padding-left: 15px; + padding-right: 15px; + font-size:14pt; +} + +.bb-bb10-titlebar-button-highlight-light { + border-color: #5A5A5A; + background-image: -webkit-gradient(linear, center top, center bottom, from(#636363), to(#878787)); + color: white; + text-shadow: 0px 2px black; +} + +.bb-bb10-titlebar-button-highlight-dark { + border-color:#181818; + background-image: -webkit-gradient(linear, center top, center bottom, from(#252525), to(#171717)); +} + +/* ================================================= + PlayBook Title Bar + =================================================*/ +.pb-title-bar { + height:54px; + border-bottom:solid #626262 1px; + position:absolute; + top:0px; + left:0px; + right:0px; + background-color:#181818; + text-align:center; + color:#626262; + line-height:54px; + font-size: 14pt; + z-index:1000; +} + +.pb-title-bar-back { + position: absolute; + border:solid black 1px; + top:8px; + left:11px; + height:37px; + line-height:35px; + font-size: 14pt; + box-shadow: 0px 2px 0px #2E2E2E; + border-radius:4px; + color:white; + z-index:1001; +} + +.pb-title-bar-back-inner { + border-top: 2px solid #2E2E2E; + padding-left:35px; + padding-right:12px; + padding-top: 3px; + border-radius:4px; + background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAARCAYAAADpPU2iAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sMCQ4AGWIgYQ0AAAE0SURBVCjPhZI9joJQEIAnewXPY+FVLIwxFsbeRRC5gCYGGwtvY28wUplYgQYiiuLL49tiw2Z3FZhpZjLzzV9GkGq1LIv5fE7h1yafTifu9zuWZYEgH1IixqdBr9eTRqMhcRxLlmXfgXeVbdsmjmMAjscjjuOUj2QYBtfrFa01YRgyGo34Hf+TbJomURQBcD6fGY/H/C/4Y0ynU5IkQWv9MsYLYNs2l8uF5/NJFEWYpknZ5aTVahEEAUoptNZsNhuqTi0IslqteDwe5HnOfr+n2+1SCSDIbDYjz3MAdrsd/X6fSgBBXNclTVO01vi+T7vdphJAkOVyCYBSisPhQKfToRIoOt1uNwC22y2DwaD++RaLBWmaAuB5HsPhkNpvdV2XLMtQSjGZTOqBYqf1ek2z2QRBvgC36+O26W6RWQAAAABJRU5ErkJggg=="); + background-repeat: no-repeat; + background-position: 13px 8px; +} + +/* ================================================= + BB10 DropDown Buttons + =================================================*/ + +.bb-bb10-dropdown-container-light +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#C0C0C0), to(#D9D9D9)); + color: black; + border-top-color: #B2B2B2; + border-bottom-color: #B2B2B2; + border-left-color: #BFBEBF; + border-right-color: #BFBFBF; + margin:20px; +} + +.bb-bb10-dropdown-container-dark +{ + color: white; + border-top-color: #232323; + border-left-color: #2A2A2A; + border-right-color: #292929; + border-bottom-color: #5A5A5A; + background-image: -webkit-gradient(linear, center top, center bottom, from(#050505), to(#161616)); + margin:20px; +} + +.bb-bb10-dropdown-container-inner-dark +{ + border-color: #070707; +} + +.bb-bb10-dropdown-container-inner-light +{ + border-color: #CECECE; +} + + +.bb-bb10-dropdown-disabled-dark { + border-color:#262626; + background-color: #262626; + color: #666666; +} + +.bb-bb10-dropdown-disabled-light { + border-color: #D4D4D4; + background-color: #C1C1C1; + color: #838383; +} + +.bb-bb10-dropdown-items +{ + margin-top: 5px; + color:#606060; +} + +.bb-bb10-dropdown-item-lowres +{ + height: 40px; + line-height: 48px; + border-bottom-width: 1px; + border-bottom-style: solid; + font-size: 14pt; + padding-left: 12px; + padding-right: 10px; + vertical-align: center; +} + +.bb-bb10-dropdown-item-hires +{ + height: 97px; + line-height: 100px; + border-bottom-width: 2px; + border-bottom-style: solid; + font-size: 29pt; + padding-left: 18px; + padding-right: 10px; + vertical-align: center; +} + +.bb-bb10-dropdown-selected-image-lowres-dark +{ + float:right; + height:17px; + width:20px; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AkLFRoyES5ZRAAAAdRJREFUOMu1089rE0EUB/DvbA6Jm0sgP04p6H8gRbwIhRaUIoVevOrJf0r8BzyKWIKHgoq3HnqXnCQhs5PNLLMTdjNLZr4eTIq1C5oW3/HN8Jk3894AdwjnHACgqqo+7hplWW7RN845OudcVVXtxm2woigQxzHKsnxH8hVJQbIB4Lu4bYVFUYwAHAMgABFFEZrN5sOdkDzPAQDW2nNrLa21wVobiqIgyac7YVprAIAxZmSMoTEmGGPCcrkkyRMAIPlvWJqmIAmt9XutNbXWQWsd8jwnyRfXsNlsBgCYz+f3AEApdQ1LkmSLfkzTNKRpyjRNgzGGJE9rq0qS5FwpRaXU27oKlVLfNutUSjHLMpI8qNsbZVl24L0/8t7De/96Npt9AIDpdLq9waX3/on3nuv1mo1GA51OZ18I8TWEcAMUJPcWi8WP1Wr1e/5sOByeTCaTCwCPNqOBVqslut3uYyHEBUkIcXPqxOZBnyulzpxz3OYAKACDX8tEHMfo9XpHQojPIQREUVTbwKsjSB5LKUd/oADAOI7R7/cPAXypq6oW3KDPpJSfyrK8QtvtNgaDwT6Ay79htUHyUErJ8XgcpJQk+QAA6hqwC3rfe/+S5N5OP+B/xE+y+0xMRnH73wAAAABJRU5ErkJggg=="); + background-repeat: no-repeat; + background-position: center center; + visibility:hidden; + margin-top:10px; +} + +.bb-bb10-dropdown-selected-image-hires-dark +{ + float:right; + height:31px; + width:36px; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAfCAYAAACPvW/2AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AkLFAg2b3WHuQAAAoJJREFUWMPF2D2K20AYBuBX9liyZUta1mvIAVIF9gCpAqlyhGBYSGsT2JwgkBvYVQgEFhYWUqRJnSaQIpAmVaot9gS2Jetv9DPzpdk19toey44tD0wjfUIP84l5JWlEhGMNKSUqlcrCMe0YICklhBAdAM8BjDVN+8UYEwBQOQYmz/MuEd0S0Tci+iml/JPn+ZPSQfeYNwCuAThzp86llJ9KbZkQ4gHzGUB1VYlhGIyVhcmyTIUBY8wDAFYGJk1TJaZarYIxNjx4y/I8L4QxDOMrgNcABDskhnN+saFNC5iDtSzLsgfMlQpTr9cXMAcBZVmGOI6VmFqthkajsYTZOyhNU0RRtDNmr6A0TRGGoRKj6zqazeZazBJICAEhBBhjS6GnGkmS7AWzAPJ9H0mSPANwDuC3aZp3pmkWwvi+r8QYhoFWq7URM8uyOI6rnPMbIvpLRF+I6DYMww9BECgxnHNMp9MLIroioioR4fHUdR2WZRXCzFaIc/5WStmd368AvA/DsCOl7Nu2vRLjeZ5yZer1OmzbLoyZgTRNe7Vmx+5FUQQACyjOOVzX7W7COI6zFWYGMk1zHMfxuppeGIYgor7jOIjj+AFzrcKcnJxsjZnPshdBEPzwPE9V+9EwjH6SJEpMo9HA6enpTpjH4XoZBMHAdV1V/XcAL1WYdru9M2ZV2l/6vr8JtXKYpvnfmFU79dCyLAAYTCaT0jHromOGGo/HhTBnZ2d7waiybGhZFohIiWo2m+h0OnvDbArX4f3eMxiNRqVginwGDW3bftdutwFgFgeHwizcZMPsCSEizjllWUZEdENEesFrt5rbvOQ7AJ4CGAO4O9S7uHbMnw27PEOlj38Kz+EpiEjJBwAAAABJRU5ErkJggg=="); + background-repeat: no-repeat; + background-position: center center; + visibility:hidden; + margin-top:35px; + margin-right: 15px; +} + +.bb-bb10-dropdown-selected-image-lowres-light +{ + float:right; + height:17px; + width:20px; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AkLFSEJnJdfWAAAAjRJREFUOMullD1oWlEUx//X+JBG40eDQ+T5iN73npMkD8dAh3Rx0dXJYEnp0IQu2oL9GKSWJkohS4bSjB06FqpkCHaxW8HuBSXoYIdQyBtfzDkd6ms7JBDtHw6Xczj8OB/3XuA/pOs6ACCRSETdmJgXJqVEv99HKpV66/P5HjiO41xcXNxemAeWSCQwGAyQSqU+RKPRLUVRxOLi4oKiKN/nrtA0zePl5eUsAAYgJpMJNjY27npmgayurgIADMPoRCKRLBExEWEymaBUKtUPDg4+e28K0zQNp6en0HX9OBwObxIRu3soFAqvd3Z2Xti2De9NYcPhEFLKj6FQKHt5eckAIIQQ+Xy+UalUntq2jWAwCKiqCgCIxWK3gL++K9dPJpOtTCZDlmWxZVlkWRbX6/VXV1agqmpHSsmqqr67ZnZf1tbW2LV0Os2Hh4fPrsoV6XR6k4g6QggwM2zb/jQajfIrKysYj8fQNO1bMBhcn24TRCSq1WqlWCy++dPmP/LkcrmfjuOAiMDMWFpaysXj8dZ4PEY8Hv8aCATW3W0SkSiXy4+vgwHAQrfb/VEul729Xu+OEIKZWSiKYvr9/oeBQMDg3wIAsb29Xd3d3W1cBwMATJOxt7dXNwyDDcOg6ekamabJ+/v7T258YV1oo9F4KaVkXddJ13V27ejo6NF0frM/qWaz+VzTNJZSUjKZ5FardR8Azs7OZoe5lbbb7Xu1Wu39ycnJFgCcn5/P/8e5bTGzZ542fwGftfmMyMnYlgAAAABJRU5ErkJggg=="); + background-repeat: no-repeat; + background-position: center center; + visibility:hidden; + margin-top:10px; +} + +.bb-bb10-dropdown-selected-image-hires-light +{ + float:right; + height:31px; + width:36px; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAfCAYAAACPvW/2AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AkLEzc1q+3qugAAA2JJREFUWMPFl8tr41YUxj9dSVe6khIvEtlWnkiyIQwMWQ9kkS66CHRXOouAIdsU+gcoi5YS0j9hViaOTR6T16LNYzHeDMyixVB1k248i5JVHoZCKMEUHJ9uajMhkj2eiZ0LdyHdc9GP7zv3niMpm83iKUe1Wr33LD0hkA3gBYC/AfxarVbvAIAREZ5gLkqS9J5z/rOqqu+I6I9sNpsGAOUJlFnSdT2fSCRkSZIAAI1G4/nNzU0ewFcKEQ0URgiRTyQSMgC0vi3LMizLWhi0Qku6rueHh4flKBEMw6gDwKAUWhJCxMIAwOzs7BsAYIOEiQtwXTdcW1v7aRAK5XRdz1uWJTebzViYfD4fCCF+7zdQTtf1wtDQUKxNruuG6+vrgRCiDID6mdQ5TdO6whQKhXsw/VIop2laoZNNnueFGxsbD2D6cVPnOOcFy7LkuBjXdcNisRgIIcrT09MP1GD9sCkuwPO8sFQqxcJEWfYMwHMAFQB/9QpjmmZHm1owU1NTsXnSskwmoi3G2J+c89eMsfdE9GMvNpmm2dGmzc3NQAhRnpycpA/XIhVijH1nGMYi57z1Xq7X69/X63UbwLfdlDEMI1YZ3/fDra2tQAhRnpiY6HqCFCLCyMjI141G4x6xruuQJGn59vYWMVCLLZi4k+r7fri9vR0IIcrj4+MfdZwZANi23Yha1DQNpmkuA3gVAVMyTTM2gX3fD3d2dnqCaefQ/Pz8L81mE1FTVVUIIZaJ6FWruVJVtSSEkOP2uK7bhhkbG6NOORip0MrKyuuFhYW9uE2ccwghlgG8UVW11LIpanqeF+7u7rZher07FCKC4zgXFxcXq0SE09PTl1GBnHMwxr5UFAWdcmZvby8QQpQdx/mkEtC+h9Lp9Nnl5eUqEeHk5CQSijGGuNOUyWTaMOl0+pPr0b2LMZVKnV1dXXWEioPZ398PDMMop1KpzyqOD6p9CwrAR0FlMpnw4ODgUWBi248PoY6Pj18OCqZj+5FMJs+ur69XiSgSKpPJhIeHh4FhGOVkMvloPUzHBq0FpShK4+jo6Ju7uzsVAGZmZirFYvGHx4YBAGl0dLRrUK1We3Z+fv5FpVIZcxzndm5u7jcAb23bbn4uQK1W6x3o/40cwDCAf23b/uexFHkANOA/167jP5mGvRa48VdiAAAAAElFTkSuQmCC"); + background-repeat: no-repeat; + background-position: center center; + visibility:hidden; + margin-top:35px; + margin-right: 15px; +} + +.bb-bb10-dropdown-item-dark +{ + border-bottom-color: #373737; +} + +.bb-bb10-dropdown-item-light +{ + border-bottom-color: #B4B4B4; +} + +.bb-bb10-dropdown-item-selected-dark +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#3F3F3F), to(#252525)); + color: white; +} + +.bb-bb10-dropdown-item-selected-light +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#EAEAEA), to(#EDEDED)); + color: black; +} + +.bb-bb10-dropdown-container-hires +{ + border-width:2px; + border-style: solid; + border-radius:4px; + padding: 0px; + height: 95px; + overflow:hidden; +} + +.bb-bb10-dropdown-container-lowres +{ + border-width:1px; + border-style: solid; + border-radius:4px; + padding: 0px; + height: 43px; + overflow:hidden; +} + +.bb-bb10-dropdown-container-inner-lowres +{ + z-index: 10; + border-style: solid; + border-width: 1px; + border-radius: 4px; + padding: 1px; +} + +.bb-bb10-dropdown-container-inner-hires +{ + z-index: 10; + border-style: solid; + border-width: 2px; + border-radius: 4px; + padding: 2px; +} + +.bb-bb10-dropdown-caption-lowres { + position:relative; + display:block; + float: right; + z-index:1; + margin-right:-22px; +} + +.bb-bb10-dropdown-caption-hires { + position:relative; + display:block; + float: right; + font-size: 29pt; + z-index:1; + margin-right:-38px; +} + +.bb-bb10-dropdown-label-hires { + display:table-cell; + float: left; + font-size: 29pt; + margin-left: -20px; +} + +.bb-bb10-dropdown-label-lowres { + display:table-cell; + float: left; + margin-left: -5px; +} + +.bb-bb10-dropdown { + border-style: solid; + white-space:nowrap; + vertical-align: middle; + display: block; + background-clip: padding-box; +} + +.bb-bb10-dropdown-light { + border-top-color: #B1B1B1; + border-left-color: #BFBFBF; + border-bottom-color: #B4B4B4; + border-right-color: #949494; + background-image: -webkit-gradient(linear, center top, center bottom, from(#F9F9F9), to(#E1E1E1)); +} + +.bb-bb10-dropdown-dark { + border-color:#040404; + background-image: -webkit-gradient(linear, center top, center bottom, from(#3F3F3F), to(#252525)); +} + +.bb-bb10-dropdown-inner-light { + border-top-color: #FFFFFF; + border-left-color: #DBDBDB; + border-right-color: #EFEFEF; + border-bottom-color: #E0E0E0; +} + +.bb-bb10-dropdown-inner-dark { + border-top-color: #5D5D5D; + border-left-color: #575757; + border-right-color: #545454; + border-bottom-color: #474747; +} + +.bb-bb10-dropdown-arrow-lowres-dark +{ + position:relative; + float:right; + z-index:2; + display:block; + top: 1px; + height:22px; + width:22px; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAARCAYAAADZsVyDAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AkLFR0F5tJqjAAAAcdJREFUOMvNkl9r1EAUxX8tVHz2Iyy7DEsyQX0pIiIW8eusLYoWqRVFoVZx8fv40qdasCSbP7vJ7mY2+QQKBV9krg9NJMattCjogUNmzr3nMDM38C9RFMWPdVmWfze0LMvdsizfAiwWiz8LNcbU4U+KopCKL5q1C2M+n9fhT40xYoyxFcUYsweQ5/mZ/pVl4mw2o9vtkuf5M2AXkEa/VN+9TqfzuO49VzDAdDp9Duw0gr5VvNzQ3vV6va1l/tXmJk1TALIseykiO3IKROSriNwVkTsiclJpIiKbWZbtA0wmk9+fOE3TV8B2S76tlDqo6uvAYas+VEpt/nLiOI4BSJLktbV221orFU+stbeUUgdpmpKmKUqpj9badWvtZ2stVd/9JEmGzayVMAzRWhPH8T7woDWoG47jHI7HY/r9PgD1Oo7ja8Bxq/+94ziDKIpOnyIMwwEwbAzlC3BPa30URRGu6/507ziOcRyHMAyvAh+AKw3vQ631m1UAEblZDaTmxlmhAI7jEEURWmtfRDba3uZf8UhEjkTkE3Dd87zj0Wi0NLSG67oEQYDneQHgVf4jYABAEAQA+L6/5vv+paZ2HrT8axf1/z/4Du1lQXcbfOrXAAAAAElFTkSuQmCC"); + background-repeat: no-repeat; + background-position: center center; + opacity:0.0; +} + +.bb-bb10-dropdown-arrow-hires-dark +{ + position:relative; + float:right; + z-index:2; + display:block; + top:11px; + float:right; + height:37px; + width:37px; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAZCAYAAABQDyyRAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AkLFAYPrvMiPwAAAZZJREFUSMfFls9KAkEcgL8t6dobdFNRUTr1DD2FIARBdIgkyYvRC/QAC1Ik+B5dO8WCyrqKf29dgyBYp8sYo86O6y65A8Psb4ad79vZXX4/SwhBki0Vd4P5fB7r/gMSbrFOYDabPQLHwM3eBSS8IUMfqO5NYDqdqnCAWzlW/11gMpmsw2NJ7CQwHo+D4JElQguMRqNt8EgSoQSGw6EJ7gOHUSW2CgwGAxP8CvgCngMkfKAWWcDzPBP8Mp1O257nLWOdxJ0cazsL9Pt9IzyTydgAMpe0okpoBVzXNcKz2ay9DJRkFkliQ6DX6xnhuVzOVicWi4UatuR7fw0rsSLQ7XZN8It8Pt9cn9Sk87YcgyR8oL4h0Ol0rk3wQqHQ1C0E1BMmiXvgE3haScdCiIYQAk2vBMGXAgG9LYQoCyF8zdofK6Vs5Gv2rxSLxRfTr7qlogo6iSMZ+2pB8qBc/4SBh2xtoAx8K3N1+S1gqU/gOM4ZcAq8lUolN8zujuOEFTkBzoEP4H05acUtSncQ0DYr6ao48aI0cYFf/SHcF6xT7WIAAAAASUVORK5CYII="); + background-repeat: no-repeat; + background-position: center center; + opacity:0.0; +} + +.bb-bb10-dropdown-arrow-lowres-light +{ + position:relative; + float:right; + z-index:2; + display:block; + top: 1px; + height:22px; + width:22px; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAARCAYAAADZsVyDAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AkLFR4zAkWs1gAAAgxJREFUOMvVU01rE1EUPVOpqKvBbbKZfEzymGRwSCZNMxOKQVz5O9zWii6KVItFF1Yx+EP8BXXTVcyHyhCYZobZBl3EKBTc+O510Zkypg0UEcQDF+47957DfV/Av4Truqd5u93+O6atVisxf+K67qs098doNpsAAMdxHjmOw3HspWvLcGlZwbZt9Pt9NJvNx8y8xycAM29ks9lrvV7vwLZtTKfTixvX63UMh0M0Go1dZt5NmSpx7mYymauDweCgXq+fa64sm7hWqz0FsAOA476fcVxJca9Ho9H98/Qr6YVpmgAAy7KeEdEOETERgYh+ENEtIrpJRMcxx0S0ZVnWflq7dGLTNJ8D2F6gNzzPO4zrawB6C/Wu53lbZyYWQgAADMN4IaXcllJyHMdSyrbneYfVahWmacLzvPdSyjUp5TcpJeK+e4ZhdNNeSqlUwmQygRBiH8CD+PyS3az7vt+rVCoYj8cAgCQXQlgAPiz0v/F9f7NUKp0cRbFY3FQUpZu6lO8AbgdB0C+Xyzg6Ovpt30II+L4PXddvAHgH4HqiZeaHYRi+XAEAZnbiC0miEwRBX9f1M6YAElMEQfCJiDppLTN3Tt+xqqpDZl5n5s/MfCeKoo+FQgFhGC79WbPZDPl8HlEUfVFV9S0z15h5ysx35/P5V+TzeQCApmmrmqZdBoBcLnfhb7+gX01z/xd+AUuoLiwqBJl0AAAAAElFTkSuQmCC"); + background-repeat: no-repeat; + background-position: center center; + opacity:0.0; +} + +.bb-bb10-dropdown-arrow-hires-light +{ + position:relative; + float:right; + z-index:2; + display:block; + top:11px; + float:right; + height:37px; + width:37px; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAZCAYAAABQDyyRAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AkLEzQhmhptBAAAAaxJREFUSMfVls1KAlEUgD8tWrdp22ZgEFGMERNFXfcMLYIgCKJVUuSm6AWitRBFQe/RtoUkipjiC9QqCILgetrM0KQzd8aZSjpwuXPvMPf75tz5OQkRYZ6xGHeBWq0W6/okc45kzLs/Ay7msgXVavUMOLGHCqj/mUClUnHDAQ7svv7rAuVyeRIeS2ImgVKp5AePLBFaoFgsBsEjSYQSKBQKOrgCFqJKBArk83kdfA94A658JBRwFFnAsiwdfLfVajUty3LGXhKHdn80s0Aul9PC2+12E0ApBXAbVcJTIJvNauGdTqfpDMbjsXMYSWJKIJPJaOHdbrfpnpj4m97a+34TVuKbQDqd1sF3er3e5eSkKwNO3Nm9n4QCGlMCqVRqXwfv9/uXXic8BIIkjoEX4Bwg4aTQNM1nYMVjse3BYHDt97Capql7kTZ9JF6B5W8ZEBHlBR8Oh9c6QkBF5ZeJJXuskq6FTkUEu32ISCDcEQhodyKyJSLvrrmGiCgR+doCAMMw1oE14H40Gj2F+UwbhhH2d7IKbACPwIMzmYhblM4g4BmJeVfF/7so/Yn4BPZZyHcERDOVAAAAAElFTkSuQmCC"); + background-repeat: no-repeat; + background-position: center center; + opacity:0.0; +} + +.bb-bb10-dropdown-hires { + border-width:2px; + border-radius:5px; + padding:0px; + border-style:solid; +} + +.bb-bb10-dropdown-inner-hires { + border-width:2px; + border-radius:5px; + line-height:62px; + height:71px; + padding-top:12px; + padding-left: 35px; + padding-right: 35px; + font-size:28pt; +} + +.bb-bb10-dropdown-lowres { + border-width:1px; + border-radius:2px; + padding:0px; + border-style: solid; +} + +.bb-bb10-dropdown-inner-lowres { + border-width:1px; + border-radius:2px; + line-height:30px; + height:30px; + padding-top:5px; + padding-left: 15px; + padding-right: 15px; + font-size:14pt; + border-style:solid; +} + +.bb-bb10-dropdown-stretch{ + display:block; +} + +.bb-bb10-dropdown-highlight-light { + border-top-color: #B1B1B1; + border-left-color: #BFBFBF; + border-bottom-color: #B4B4B4; + border-right-color: #949494; +} + +.bb-bb10-dropdown-highlight-dark { + border-color: #040404; +} + + +/* ================================================= + BB7 DropDown Buttons + =================================================*/ + +.bb-bb7-dropdown { + border-width:1px; + border-color:#BCBEC2; + border-style: solid; + color: black; + text-align:center; + white-space:nowrap; + vertical-align: middle; + padding-left: 15px; + padding-right: 15px; + display: table-cell; + border-radius:5px; + box-shadow:1px 1px 1px #DCDCDC; + background-clip: padding-box; + background-image: -webkit-gradient(linear, center top, center bottom, from(#F9F9F9), to(#D0D2D4)); +} + +.bb-bb7-dropdown-disabled { + border-color:#BDBEBD; + color: #636563; + background-color: #BDBEBD; + background-image: none; +} + +.bb-bb7-dropdown.dropdown-stretch div[data-bb-type="caption"] span { + overflow: hidden; + padding-right:40px; + display: block; +} + +.bb-bb7-dropdown div { + padding-right: 25px; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAHCAYAAAA8sqwkAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sLDg41JLeOCwMAAACLSURBVBjTjY1NCsIwFITn1d27QigEs60niI10pW4UvKf0CMWgJ2i3kdxkXFloQOk3u/lh5Hg6cxonrKHZNahUFWtRVQhBHELHlNLfsnMOjziIEAQAhNDx/WO0dQ4xDgIA8wAA9j4w57woW2vxfEWZDRbyvqUxNY2p6X3LMl88fLlebqw2gr6/S5l9AEmQPAvlqOifAAAAAElFTkSuQmCC"); + background-repeat: no-repeat; + background-position: center right; +} + +.bb-bb7-dropdown-hires { + line-height:54px; + height:54px; +} + +.bb-bb7-dropdown-lowres { + line-height:40px; + height:40px; +} + +.bb-bb7-dropdown-highlight{ + border-width:1px; + border-color:#0060E6; + border-style: solid; + color: White; + text-align:center; + white-space:nowrap; + vertical-align: middle; + padding-left: 15px; + padding-right: 15px; + display: table-cell; + border-radius:5px; + box-shadow:2px 2px 2px #DCDCDC; + background-clip: padding-box; + background-image: -webkit-gradient(linear, center top, center bottom, from(#098CEE), to(#1766DB)); +} + +.bb-bb7-dropdown-highlight div { + padding-right: 25px; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAHCAYAAAA8sqwkAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sLDg41LyBc0osAAACaSURBVBjTjY0hC8JgGITv1emCVcaSTQcLNrFZNPoX/RGCVYNNZliQwRQWTGPYBvIy8TuTg32I7K7dc8fJZntm6L3QRknRg1OxD9fttBpUdCAEsTumHHv/y7cCWC8CEYIAgH10Z+D/fkpzg+VsJABQDwDglDw48buN8jV/Yx4OpQ5oOc5KqipVlXFW0uaNh68OlyeNIVbTgdjsA+l3TCWqdAgEAAAAAElFTkSuQmCC"); + background-repeat: no-repeat; + background-position: center right; +} + +.bb-bb7-dropdown-highlight.dropdown-stretch div[data-bb-type="caption"] span { + overflow: hidden; + padding-right:40px; + display: block; + } + +.dropdown-stretch{ + display:block; + +} + + +/* ================================================= + BB5 Buttons + =================================================*/ + +.bb-bb5-button { + display: table-cell; +} + +a.bb5-button { + background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAABOCAYAAAAZ+4fHAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oGCRM7GcuAdRIAAAMDSURBVEjH5Ze/ihxHEMZ/M3RQAxv0wQU7cAYN+EB7oOAOlBicbOBgM194qR7Bod7C+BXkwIEfQYlAiWEVGM6BghHYcAYdbIMWuuAaVsH82e7Znds1OBEqWGqmu7rqq5qqr9ns9s/bDZGICMWkYFpOs3jdvH7zOn7nxJ5gJ5byXbkpp2V/wIgIALpWZCKs7ld49dQfaq6eX+Frv6mqKsudczjnemMA5xwalOUfy37PqDabiiJG0NBoAKeO+n2Nre3G+E++x+dpnr1ptKpSf6ipziuMBmVHAr3X+u8aQhR6KMp2XYNieEzCVpv+ZUQ6aPlBo9bR/mQi8aGpgDmID/AP/jDGTvJjwhJaw25hqOOkch88hSkY00noMY8++D6p/GAWJsJ4zGfMjymNBj3O8GiPR2E8qnuAfo7+P4z/KfSX4zHsznCvQ9pEO0Yxe4gRRIS8w6BB+193yDlH9W1F9U3VYExmuzXoaPpidsHl88ssd/eu2ey0c9iJRYNy/eM1Nzc3DTX7B4//2M7InacsS2ZPZ1w8u2B6Ou0DZa9+fbUZlsNay/yHeXorLLlGTFdcEKAMMB/UM1vWm8Tj3RruPip/3cPsFF7MJQPIfvrNJ4blRChPFDsR3r5XKtsYG7cWOgIpALeG5b/C/InyXdUYA2SLn9PQ3cADLJ46wCJGMasBjxYRY777xzKfKbd3YIaXgvYeldUaFs+a4TL6MKhD/y4JjxvtusZst7X1GOPO6bulOZkYhe1hQ5DotA6oWQFBgdy3mzEZ+z3cYwjbjdR4exlh+hT00Xum9agHRlWarPeloWEE466xknyxcYySro1j7EbYA/YRjPuzpi+5UsRVTOqYb0tdtLp93vUYG8XGox4HH3HQRePJxGsGckn6OX2W+Ob6uj3u86RJP46Mggbl8kxYfVIEwQxDakQIV+cWt4ZyAkbVRS0vdBFefC/MzgpWKrxcSNZ2Twfac3lWcHUuzJ5YVmqpTlsO/+X39L+CIignrIIkHG7qUG3ZLIAIlAIvF5JcH58BCYLFNhLtScoAAAAASUVORK5CYII=") no-repeat scroll top right; + color: White; + display: block; + float: left; + height: 39px; + margin-right: 6px; + padding-right: 10px; /* sliding doors padding */ + text-decoration: none; +} + +a.bb5-button span { + background: transparent url("data:image/png;base64,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") no-repeat; + display: block; + line-height: 29px; + padding: 5px 0px 5px 10px; + +} + +a.bb5-button-highlight { + background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAABOCAYAAAAZ+4fHAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oGCRM7GcuAdRIAAAMDSURBVEjH5Ze/ihxHEMZ/M3RQAxv0wQU7cAYN+EB7oOAOlBicbOBgM194qR7Bod7C+BXkwIEfQYlAiWEVGM6BghHYcAYdbIMWuuAaVsH82e7Znds1OBEqWGqmu7rqq5qqr9ns9s/bDZGICMWkYFpOs3jdvH7zOn7nxJ5gJ5byXbkpp2V/wIgIALpWZCKs7ld49dQfaq6eX+Frv6mqKsudczjnemMA5xwalOUfy37PqDabiiJG0NBoAKeO+n2Nre3G+E++x+dpnr1ptKpSf6ipziuMBmVHAr3X+u8aQhR6KMp2XYNieEzCVpv+ZUQ6aPlBo9bR/mQi8aGpgDmID/AP/jDGTvJjwhJaw25hqOOkch88hSkY00noMY8++D6p/GAWJsJ4zGfMjymNBj3O8GiPR2E8qnuAfo7+P4z/KfSX4zHsznCvQ9pEO0Yxe4gRRIS8w6BB+193yDlH9W1F9U3VYExmuzXoaPpidsHl88ssd/eu2ey0c9iJRYNy/eM1Nzc3DTX7B4//2M7InacsS2ZPZ1w8u2B6Ou0DZa9+fbUZlsNay/yHeXorLLlGTFdcEKAMMB/UM1vWm8Tj3RruPip/3cPsFF7MJQPIfvrNJ4blRChPFDsR3r5XKtsYG7cWOgIpALeG5b/C/InyXdUYA2SLn9PQ3cADLJ46wCJGMasBjxYRY777xzKfKbd3YIaXgvYeldUaFs+a4TL6MKhD/y4JjxvtusZst7X1GOPO6bulOZkYhe1hQ5DotA6oWQFBgdy3mzEZ+z3cYwjbjdR4exlh+hT00Xum9agHRlWarPeloWEE466xknyxcYySro1j7EbYA/YRjPuzpi+5UsRVTOqYb0tdtLp93vUYG8XGox4HH3HQRePJxGsGckn6OX2W+Ob6uj3u86RJP46Mggbl8kxYfVIEwQxDakQIV+cWt4ZyAkbVRS0vdBFefC/MzgpWKrxcSNZ2Twfac3lWcHUuzJ5YVmqpTlsO/+X39L+CIignrIIkHG7qUG3ZLIAIlAIvF5JcH58BCYLFNhLtScoAAAAASUVORK5CYII=") no-repeat scroll top right; + background-position: right -39px; + color: White; + display: block; + float: left; + height: 39px; + margin-right: 6px; + padding-right: 10px; /* sliding doors padding */ + text-decoration: none; +} + +a.bb5-button-highlight span { + background: transparent url("data:image/png;base64,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") no-repeat; + background-position: left -39px; + display: block; + line-height: 29px; + padding: 5px 0px 5px 10px; + +} + +/* ================================================= + Round Panel + =================================================*/ +.bb-round-panel +{ + margin: 8px; + position:relative; +} + +.bb-round-panel-background { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAAQCAYAAADu4htYAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oFDA0UC0zjOK8AAAFMSURBVHja7d0hi9xAGAbgN0tEREUWKlY24kRE//8PKVzEiZyMOEjEiYjAVCwJe9QtaaHwPGpmGPW6lxn4qpKSR+PbWNZtTbYAAAA8p06aukn30lWPx9VjARmGoSgeAADAmUWk7/vqjwIy/BrKfuHaXtO2rbAAAICnLMuSeZmPn1X9z3sJqUrKUT6u36+53W7SAgAATjFNU+aP+Sgh1evwWrIlzbcm3Y9OQgAAwKnG9zHr55rUyWV/ElE+AACAv+HoGltyEQcAAPCvKCAAAIACAgAAKCAAAAAKCAAA8D8UkPq+GN9HaQAAAKc7ukadXPax6OvnmmmapAMAAJxmmqb7DJAkfd9XVUlJkmMaenKfiN62rbQAAICnLMtyTEBP7lPQk+wfsB5WWzJ/zF8uAwAAPKX+uj1eQJJkfBvLuq1CAgAATtHUTbqXrtr3vwHOgmRaTerV1wAAAABJRU5ErkJggg=="); +} + +.bb-round-panel-top-left { + margin-right: 9px; + height: 9px; +} + +.bb-round-panel-top-right { + margin-top: -9px; + margin-left: 9px; + background-position: 100% 0; + height: 9px; + font-size: 2px; +} + +.bb-round-panel-bottom-left { + margin-right: 9px; + background-position: 0 -7px; + height: 9px; + font-size: 2px; +} + +.bb-round-panel-bottom-right { + margin-top: -9px; + margin-left: 9px; + background-position: 100% -7px; + height: 9px; + font-size: 2px; +} + +.bb-round-panel-inside { + border-left: 2px solid #D6D3D6; + border-right: 2px solid #D6D3D6; + background: White; + padding-left: 3px; + padding-right: 3px; + overflow:auto; +} + +/* ================================================= + Label Control Row + =================================================*/ + +.bb-label { + margin-top: 5px; + margin-bottom: 5px; +} +.bb-label-control-horizontal-row .bb-label { + float:left; + position:relative; + top:10px; +} + +.bb-label-control-horizontal-row { + height:56px; + /*border:1px solid black;*/ + margin-bottom:4px; +} + +.bb-label-control-horizontal-row .bb-bb7-button { + float:right; +} + +.bb-label-control-horizontal-row .bb-bb7-button-highlight { + float:right; +} + +.bb-label-control-horizontal-row .bb-bb5-button { + float:right; +} + + +/* ================================================= + Label Control Rows + =================================================*/ + +.bb-bb7-label-control-rows { + margin:0px; + padding:0px; + width:100%; +} + +/* ================================================= + BB10 Label Control Rows + =================================================*/ + +.bb-bb10-label-control-rows { + margin:0px; + padding:0px; + width:100%; +} + +.bb-bb10-label-control-label-row-hires +{ + vertical-align: text-bottom; + height:38px; +} + +.bb-bb10-label-control-label-row-lowres +{ + vertical-align: text-bottom; + height:22px; +} + +.bb-bb10-label-control-label-lowres +{ + position:relative; + top: 7px; + bottom:0px; + left:0px; + font-size: 12pt; + height:15px; + vertical-align: text-bottom; +} + +.bb-bb10-label-control-label-hires +{ + position:relative; + top: 10px; + bottom:0px; + left:0px; + font-size: 21pt; + height:30px; + vertical-align: text-bottom; +} + + +/* ================================================= + Radio button BB10 + =================================================*/ + +.bb-bb10-radio-container-hires-dark +{ + height: 76px; + width: 76px; + margin:0px; + background-image: url("data:image/png;base64,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"); + background-position: 10px 10px; + background-repeat:no-repeat; +} + + +.bb-bb10-radio-container-hires-light +{ + height: 76px; + width: 76px; + margin:0px; + background-image: url("data:image/png;base64,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"); + background-position: 10px 10px; + background-repeat:no-repeat; +} + + +.bb-bb10-radio-dot-hires +{ + height: 40px; + width: 40px; + border-radius: 20px; + z-index:0; + top: 19px; + left: 19px; + position:relative; + display:block; +} + +.bb-bb10-radio-dot-hires-disabled +{ + background-image: -webkit-linear-gradient(top, rgba(89,89,89,0.5) 0%, rgba(89,89,89,0.5) 100%) !important; + background: rgba(89,89,89,0.5); + height: 40px; + width: 40px; + border-radius: 20px; + z-index:0; + top: 19px; + left: 19px; + position:relative; + display:block; +} + +.bb-bb10-radio-dot-center-hires +{ + height: 18px; + width: 18px; + border-radius: 9px; + background-color: white; + top: 11px; + left: 11px; + position:relative; + display:block; +} + +.bb-bb10-radio-container-lowres-dark +{ + height: 38px; + width: 38px; + margin:0px; + background-image: url("data:image/png;base64,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"); + background-position: 5px 5px; + background-repeat:no-repeat; +} + + +.bb-bb10-radio-container-lowres-light +{ + height: 38px; + width: 38px; + margin:0px; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AUZFDkCt3wGqwAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAEmUlEQVRIx+WWz2/bZBzGn9d2/DqO4yxeEi1tsmiJ1mzr0Lrd2GFUgNiOCDFx48KBG0e4gbgU8ScgxIXrEOK6TXCoJo3b2m60abtEWpIma1q3SZol9mv7fTmgRB1Z1a7dAQlLX8m2XvvzPu+P532A/8tFDmuwvraO81PnUavWPm9ttdKc82/6/T5c1wWlFLquQ5Kkb1PJVDN7NvvDsP2xoM1mE+l0GqVS6eOtra07tVpN9Pt9oqoqCCHgnEOSJAgh4LouIpGIyGazJJVK3S4Wi78Mvz8ydHV1FYlE4mypVPrt6dOnVwghkiRJCIVCoJSCUgpN0+C6LhzHgeu68DwPQRCAEMLz+fzixYsXP9ze3q4Wi8XDoct/LSNqRk+tr6/vPnv2DJRSqKqKQqGATCaDWCw2UkgIgRACnU4HGxsbKJfLo07kcjkUCoV4r9trT781fTC00WggdioWezD/oG3v2FAUBWfOnMHMzAwopeCcHzhPkiTB8zwsLi5iY2MDvu/DsizceOfGqfZuuzMxMXGw0rt37/5u2/a7lFKcO3cOly9fhud5R16ZoVAIpVIJa2trYIzBsqw/bt269d5LHRzePH78GKurq3PPnz+f1XUdExMTmJ6eBmMMQogjF2MMxWIRuVwO4XAYm5ubsysrK3NLS0uvVnrv3j3hui5kWcbs7CyCIDj2XgyFQpifn4fjOKCU4ubNm2RMaaVSmbNtW8iyjKmpKfi+D875sct1XVy4cAGSJGFnZ0dUKpW5IUvZN7ySZVnE932k02kwxk7sPIlEArIsIxaLkaWlJXlMaTQa/UpRFFiWBc75a83jQeV5HlKpFCilME3zyzGlg8EAhmHANE24rvtGPJZzjmg0ik6nA8dxMAYVQoBzDlVVwTkHIeTEUCHE6H/7F+UISggZOc2bhA6dS5blcSilFIqigDH2RqGMMSiK8tL70ZNhGBBCoN1uI5lMwvf9E0MlSUK73YaiKKCUjjsSY+w7Qghs+x/PDYLgRPuUcw5KKVqtFgDAcZzvx6D5fL7JGIOu62g2m6MT5LjFOX9JQKFQGLzSBh89eiRc18Xm5iauX7+OXq93rLkVQsA0TTx8+BCWZUHTNFy7dm3cBsvlMizL+iIIAkQiETx58gSRSARCiNcG6rqOlZWV4XEoLMv6ulwuH3y0LSws3BkMBh/t7u5K8XgchUIBe3t7R1IshIBhGKhWq2i1WojH4zwcDv969erV24fGlYWFhbrrupO2bUNVVRSLRXDO4XneK+FCCIRCIciyjHK5jF6vh9OnT0PTtN7MzEz00LhSr9chy3Jme3u7/OLFC6XX60ndbheTk5NIJpNQVXUEGnaAMQbbtlGr1RCNRmEYhjAMgyQSiUnf9xvZbPbwYFav15HJZLC8vHy/2+2+zzlHt9uF4zgghEDX9dGq7Pf7I7szTROyLMM0zfuXLl36oFar4d/AI+XearX69t7e3o+DwWDacRwhyzJxHAdBEECSJGiaBs650DSNhMPhqmEYn+RyuT9PFLaH+TUIglilUvmMMXYFwKf7hvdnVVUX8/n8T7IsdxqNBvaHsP/M9Tf+WgzVINhodQAAAABJRU5ErkJggg=="); + background-position: 5px 5px; + background-repeat:no-repeat; +} + + +.bb-bb10-radio-dot-lowres +{ + height: 20px; + width: 20px; + border-radius: 10px; + z-index:0; + top: 10px; + left: 9px; + position:relative; + display:block; +} + +.bb-bb10-radio-dot-center-lowres +{ + height: 10px; + width: 10px; + border-radius: 5px; + background-color: white; + top: 5px; + left: 5px; + position:relative; + display:block; +} + + + + +/* ================================================= + Image List BB10 + =================================================*/ + +.bb-bb10-image-list +{ + margin:0px; + padding:0px; +} + +.bb-bb10-image-list-header +{ + vertical-align:middle; + font-weight: bold; +} + +.bb-bb10-image-list-header-normal-light { + background: -webkit-gradient(linear, center top, center bottom, from(#F9F9F9), to(#DDDDDD)); + font-weight: normal; + color: black; +} + +.bb-bb10-image-list-header-normal-dark { + background: -webkit-gradient(linear, center top, center bottom, from(#3F3F3F), to(#262626)); + font-weight: normal; + color: white; +} + +.bb-bb10-image-list-header-hires +{ + height:44px; + line-height:44px; + font-size: 28pt; + border-bottom-width: 3px; + border-bottom-style: solid; + margin-bottom: 1px; +} + +.bb-bb10-image-list-header-lowres +{ + height:28px; + line-height:30px; + font-size: 16pt; + border-bottom-width: 2px; + border-bottom-style: solid; + margin-bottom: 1px; +} + +.bb-bb10-image-list-header p +{ + margin:0px; + padding:0px; + padding-top:0px; +} + +.bb-bb10-image-list-header-left-lowres +{ + text-align:left; + padding-left: 10px; +} + +.bb-bb10-image-list-header-right-lowres +{ + text-align:right; + padding-right: 10px; +} + +.bb-bb10-image-list-header-left-hires +{ + text-align:left; + padding-left: 20px; +} + +.bb-bb10-image-list-header-right-hires +{ + text-align:right; + padding-right: 20px; +} + +.bb-bb10-image-list-header-center +{ + text-align:center; +} + +.bb-bb10-image-list-item +{ + padding-bottom: 0px; + overflow:hidden; +} + +.bb-bb10-image-list-item-lowres +{ + padding-top: 3px; + padding-left: 5px; + height: 54px; + border-top-width: 0px; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.bb-bb10-image-list-item-hires +{ + padding-top: 6px; + padding-left: 5px; + height: 103px; + border-top-width: 0px; + border-bottom-width: 2px; + border-bottom-style: solid; +} + +.bb-bb10-image-list-item-overlay-hires { + position:relative; + border-width: 4px; + border-style: solid; + border-color: transparent; + background-color: transparent; + z-index: 100; + margin-top: -98px; + margin-left: -5px; + height: 101px; +} + +.bb-bb10-image-list-item-overlay-lowres { + position:relative; + border-width: 2px; + border-style: solid; + border-color: transparent; + background-color: transparent; + z-index: 100; + margin-top: -61px; + margin-left: -5px; + height: 53px; +} + +.bb-bb10-image-list-item-details-lowres +{ + position:relative; + margin-left:70px; + margin-bottom: 0px; + margin-top:5px; +} + +.bb-bb10-image-list-item-noimage-lowres +{ + margin-left:5px; +} + +.bb-bb10-image-list-item-details-hires +{ + position:relative; + margin-left:130px; + margin-bottom: 0px; + margin-top:17px; +} + +.bb-bb10-image-list-item-noimage-hires +{ + margin-left:10px; +} + +.bb-bb10-image-list-item-dark +{ + color:White; + border-bottom-color: #3A3A3A; +} + +.bb-bb10-image-list-item-light +{ + color:Black; + border-bottom-color: #D9DCDE; +} + +.bb-bb10-image-list-item-lowres .title +{ + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + font-size: 20pt; + line-height:20px; + padding-top:5px; +} + +.bb-bb10-image-list-item-hires .title +{ + overflow: hidden; + white-space: nowrap; + font-size: 35pt; + line-height:59px; + text-overflow: -blackberry-fade; + padding-top:5px; + margin-top: -30px; +} + +.bb-bb10-image-list-item-hover +{ + /*placeholder to signify hover*/ +} + +.bb-bb10-image-list-item-hover .title +{ + color:White; +} + +.bb-bb10-image-list-item-lowres img +{ + position:relative; + left: -5px; + float:left; + height:64px; + width:64px; + top:-8px; +} + +.bb-bb10-image-list-item-hires img +{ + position:relative; + left: -5px; + top: -6px; + float:left; + height:109px; + width:109px; +} + +.bb-bb10-image-list-item-lowres .description +{ + color:#606060; + overflow: hidden; + white-space:nowrap; + font-size: 14pt; + margin-bottom: 0px; + margin-top: 2px; + text-overflow: ellipsis; +} + +.bb-bb10-image-list-item-hires .description +{ + color:#606060; + overflow: hidden; + white-space:nowrap; + font-size: 26pt; + margin-bottom: 0px; + margin-top:-1px; + text-overflow: -blackberry-fade; +} + +.bb-bb10-image-list-item-hover .description +{ + color: White; +} + +.bb-bb10-image-list-item-lowres .accent-text +{ + position:relative; + float:right; + color:#606060; + font-size:14pt; + margin-right: 5px; + margin-top:-50px; +} + +.bb-bb10-image-list-item-hires .accent-text +{ + position:relative; + float:right; + color:#606060; + font-size:22pt; + margin-right: 10px; + margin-top:-79px; +} + +.bb-bb10-image-list-item-hover .accent-text +{ + color:White; +} + +.bb-bb10-image-list-item-hires .button +{ + position:relative; + float:right; + width:68px; + height:108px; + margin-top: -105px; + padding-left: 20px; + z-index: 100; +} + +.bb-bb10-image-list-item-lowres .button +{ + position:relative; + float:right; + width:34px; + height:59px; + margin-top: -59px; + padding-left: 10px; + z-index: 100; +} + +.bb-bb10-image-list-item-button-border-hires +{ + width: 46px; + height: 46px; + border-width: 1px; + border-style: solid; + border-radius: 24px; + margin-top: 26px; +} + +.bb-bb10-image-list-item-button-border-lowres +{ + width: 23px; + height: 23px; + border-width: 1px; + border-style: solid; + border-radius: 12px; + margin-top: 17px; +} + +.bb-bb10-image-list-item-button-inner-hires +{ + width: 46px; + height: 46px; + background-position: center center; + background-size: cover; +} + +.bb-bb10-image-list-item-button-inner-lowres +{ + width: 23px; + height: 23px; + background-position: center center; + background-size: cover; +} + +.bb-bb10-image-list-item-hires .details-button-margin +{ + margin-right: 68px; +} + +.bb-bb10-image-list-item-lowres .details-button-margin +{ + margin-right: 34px; +} + +.bb-bb10-image-list-item-button-dark +{ + border-color: #606060; + background-image: -webkit-gradient(linear, center top, center bottom, from(#404040), to(#272727)); +} + +.bb-bb10-image-list-item-button-light +{ + border-color: #CACACA; + background-image: -webkit-gradient(linear, center top, center bottom, from(#FBFBFB), to(#DFDFDF)); +} + +.bb-image-list-item-chevron-light +{ + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AYIDigKVMrBBQAAAeNJREFUaN7t2M1qGlEYxvF/YggECoVAVll1o6KIoqI4flxFFqG9CSEg9A4KhUKhm95BFrmCQjcKI4ofFVHUKWTlpr2AroanG1OkTCNtRnsGzgtu5sDM8/N9mTkzR5KIch0T8bIAC7AAC7AAC4h0nYR5skaj8RL4CDwDPgDNdrvt7xNwFNZeqF6vPwe+Aadbh++A606n4xs/QpIuJJ1KYut3Jem2VqvFogC4l/TlN8AvRLVajRk9QgCO41wCHeBFwPIdcO26rm/sXch13TVQB+4Dlq+AW8dxYsZ24KEqlcrOTnS7Xd9YAEC5XN6J6PV6vrEAgFKptBPR7/d9YwEAxWJxJ2IwGPjGAgAKhcJOxHA49I0FAOTz+Z2I0Wj014gTDlSSzjd7pKBaj8fjf+rAQQDZbDYDfAYuApbfTyaTphG70aDKZDI54NOfwk+n0+ZTzn/8H8O/e2r4vXYgnU4/Gn42m90Y90LzUKlUKreZ+fOg8PP5/Casa4UOSCaTj4V/u1gsWsa+UiYSicJmbALDL5fLVth/WGgPsng8fgZ4wGVQ+NVq1drHuIZ5F8odOnyoIyTpK/ADONs6/MbzvNeR+C7ked53Sa8kLSWtJTX3Hf6gmznjO2ABFmABFmABFmABFhDB+gmY0N/2Klf5bgAAAABJRU5ErkJggg=="); +} + +.bb-image-list-item-chevron-dark +{ + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AYIDiogvUdqUQAAAdZJREFUaN7tmctKI0EUhr+MQRgQBMGVCenc740w63kLF6IvERACvsGAIAizmTeYhU8w4GpeYBadG7l1bht9AFfNcRMkSJvGsSpUQ/3Qmyqo/r8+p7rOoRIiQpz1hZjLAlgAC2ABLIAFiLWSKhdbLpcXwC/gAPgJtFKpVKATIKGqFlosFofAI7C/MXwPnKfT6cD4FBKRYxHZFxE2njMR+T2fz/fisAemwL+Q8TNAG0RCZTk9m81OgL9ANmT6HjjPZDKBsQAAvu9HQjiOE5iYQgA4jrMCvq9TKjSdfN/fMzYCrxtiOo2MRDabDYwFAJhMJpEQuVwuMBYAYDweR0Lk8/nAWACA0WgUCVEoFAJjAQCGw2EkRLFY/DBEkh1JRI7WNVKYVqVS6b8isBOAwWDQBB6A45Dpu3K53DKiGg1Tv98/Bf68Z75SqbQ+s75WgF6vt838bbVavTKqH9hUt9vdar5Wq12peE9So/kH4EineS0AnU5nm/mber3eNral9Dzv2zptQs03Go226g+m7CDzPO8rMAROdmVeaQRE5PQ9881ms63rZ6GyJx6JyPObnviHTvNKAVzXfQIugQGwAlqu617rPigT9orJAlgAC2ABLIAFsAAWIL56AShVx87z6rVhAAAAAElFTkSuQmCC"); +} + +.bb-image-list-item-add-light +{ + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AYIDicwFV4EeAAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAACOElEQVRo3u1YPcjiQBCdHAeiaDSVpWgKsbAQW0VBYgp7QQRjk0qrYGVpZ+WXxtJCCKaT9AqKnUQsbBVLQRAsFDv3qjvOg8SfZPMlRx4sBLIzO2/fPHYTABcu7IH1eu2sgmmahslk4szdHo/HpuecTqcQCATwFs4wDPbNqdfreBK32+0fVinc7/fNTdjtdi1vU1mWzUkkCMK3ec2wEoVC4eNYVVWRIAhIEASkqirCRZLAlbhWq6Hz+QwAAKFQCIbDIZa1NI05Go0MJf5d/L/PZuOn1otKpWIoMULIEp9oKnC5XAwT+HtYTsDv99uOQCQSeZ2AUeAg0Ol0XveAGQTMBsdxzibwlgfs2EIAAKVSSZtAuVy2PYFMJqPdQolEQjd4sVggSZJgt9u93UIMwzxlQdM0VKtVyGazmqd2OBzWJhAMBnUXEEUR66m63W5BFEXdOT6fT5vAM6kJgsBuToIgPjfx6XTSnczzPJAkCff7HcsgSRJ4ntet4Xq9aitwOBx0g4vF4svbk8/nH6SazWYvxT773j4ej9rXaa/XC7fbzZRWyOVyDwTm8zmW6/SDAmYV7x5kGlitVs6+SqTTaWcrEI1Gna3Afr93rgLJZNK5JpYkCTabzfsElsvlx4tSFPWneIqiDBFoNpufBaZSqY8XVRQFsSyLWJZFiqJYcyi4cGEBjBjbNuj1ev+HGoPBwHAOWZYhFot9L5FGo/H23+xWqwUej8d+qsTjceA4Dr6+vl66Tbpw4cIYfgGNcmZGp2oxlwAAAABJRU5ErkJggg=="); +} + +.bb-image-list-item-add-dark +{ + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AYIESsDEUHOLwAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAB2UlEQVRo3u2YMYvCMBTH0+NAHBzkBkdRB3FwEOEmN3E43bvq4OYmfgkXdXIpCBbEbrbTLfoFCuIXcOoi2HOq3tDh5aYD9a5V28Ymmh90KMl7ef+8viQNQhwOHaxWK7YCzmQyaD6fsznbs9kscJ+LxQLFYjGygVcqFeKT02g0yDher9cv98rwcDgM1mG32737Z6ooSjCO2u12aLXmOxPlctmzrSRJTcMwdMMwsCRJBeZWKsuydAD4BgBsWRa+ewDT6dSXPQDg44dUnAIpxxjjk6AFQSAyluPSuN/vn/tshM8IwmcymWRbwHg8fqIaYAXmBNRqNWcBoihSL6BUKjkLyOVyrsayLL+bpomv4VJR/4dpmliWZddjRyKRcG7s9XquAmzb/sKEsW0b33JKfTmbpUsZfKO6iHe7nWtnVVWrAEAsGABAqqpW3focDoeT99fjl81m4zqAKIqf1+4dpPaB7Xbr3BiNRqneiZ/rNEojy+WSZyBUUqkUz0Bo5PN5dv/IJpOJN0Nd16kQEI/HvRkWCt7vozRN+/gNXtO0JuJwHgQ/hU0N/X7/MbIxGo18+1AUBaXT6XCFtFqtm2+zO50OikQi9GUlm82ier2OBoPBn7ZiscgXEQ4nYH4A66ezFyw7Us8AAAAASUVORK5CYII="); +} + +.bb-image-list-item-remove-light +{ + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AYIDikRx7Q5qAAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAB/UlEQVRo3u1YsYrCQBB9uzljhLvWVvwEsbQUwc5KtA/4BVbiN2gTRBCEdIKFoFgLAQUFC8EiBEHFQhAsPRQDuUYPPc6oR6JZLw+2STbZeftmdmYWcPHaIAA4uxew8l/G6YNKpUJ4niez2QzD4RDNZvNISADwCUBnUpbxeOyRZZl7CR/r9Xrk4X7daDQoI259Bi4Wi/EPDH5LQXO5HH2UxKVSiQNg2Xr0GbFRq9UsOYKJA+L87xsYjUadQAB2J0MX19DpdAjzJOLxONsk+v0+ccih8ncEAgG2CciyfPVIpYqiOJblaDS6SoDM53P2I97Fg3vWiy3hT3S7XaNer2M6ndpiTDAYRDKZRCQSudmNz4KiUCiYfihJEjRNw36/t2VomgZJkm6pUr/xdqqAYRgwU0HXdex2O1tdQtfv6/PPFFiv16aTRVGEIAjYbre2DEEQIIqiqQ2bzYa/pICxXC7Js+uRdrtt+n61WnkA/O4GPp/P8TkgkUh4TU8lVVUdS2KxWAjXCjrmsjBlydhyufx+08TJZEKYVkBRFMcZ2mq17vMWVVU5pmPgcBXOdqE3GAzYJhEKhSjrKiCdTrPfoeXz+WcpYd3mpVIpjlnjXw7FYpFnnoTf7yfVavXj37pNNpulXq+XHJKp8w3PZDIkHA4fL2gpAM+hI6RuULp4Ir4AkkgDmXXK5NYAAAAASUVORK5CYII="); +} + +.bb-image-list-item-remove-dark +{ + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AYIESop0+E2uAAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAB4klEQVRo3u1ZvYrCQBCe2Rj/iOU+gJ21jb6BvoNvpSAEO1FEsBEbC5VFG1PYaWGpYBUbG0NAmGv0kMOL510SM55fGYbZ75u/nSUAb7wwiAiJSAvyDPSTLCLS9TelFJ5OJ5RSQjabhUwmgwCgAUASAI6IeGKZmUajoY9GI+0lyqzVamHodT0YDESQ/oNyrDmOEw8rSH47FKvVSoSV5dlsphGR8I38M3pjOBz+fQQHVo9hBdB13acLuPTfey14JrrdLrIXcTweb4oQXAT0er1IDBXfp6LgJGA8HnsLICLR6XQim6bNZnM/RbVajX/HvxEi0OtJ+BXtdpsKhQJIKQMhY9s2WJYFlUoFfyXAsiwoFovkcQClUqlAI+o4Dkgp0WtLLZfLnxxj12IQEQDgWwFCCNB1PVABrus+ZH8tAAzD8DRWSkGpVIJ0Oh3UugBKKU+bRCIRBwD35gjd7XaRv9gWi4UR6QfMPRwOh4SnANM0IyuiWq0mPYPMcdtjtcxNp1PjR4b1eh1ZZyCXy0WOaL/ff6xaTNPUWPdAPp/n/3xrNpvsRQjgDtu2+b/QlsuleFYZ++Zsv99rbMm/HObzeZy9CCLCyWSS+bdls16vxflHuGBBfLvd4pnwhbRORLGXuGve4IwP5s31HMYdhqYAAAAASUVORK5CYII="); +} + +/* ================================================= + PlayBook Image List + =================================================*/ + +.bb-pb-image-list +{ + margin:0px; + padding:0px; +} + +.bb-pb-image-list-item +{ + border-bottom: solid 1px #D9DCDE; + padding-top: 3px; + padding-left: 5px; + padding-bottom: 0px; + overflow:hidden; + height: 60px; +} + +.bb-pb-image-list-item-hover +{ + border-bottom: solid 1px #D9DCDE; + padding-top: 3px; + padding-left: 5px; + padding-bottom: 0px; + overflow:hidden; + height: 60px; + color: white; +} + +.bb-pb-image-list-details +{ + position:relative; + margin-left:74px; + margin-bottom: 0px; +} + +.bb-pb-image-list-noimage +{ + margin-left: 10px; +} + + +.bb-pb-image-list-item .title +{ + color:Black; + overflow: hidden; + white-space:nowrap; + text-overflow: ellipsis; + font-size:18pt; + line-height:26px; + margin-top:8px; +} + +.bb-pb-image-list-item-hover .title +{ + color:White; + overflow: hidden; + white-space:nowrap; + text-overflow: ellipsis; + font-size:18pt; + line-height:26px; + margin-top:8px; +} + +.bb-pb-image-list img +{ + position:relative; + left: -5px; + float:left; + height:70px; + width:70px; + top:-10px; +} + +.bb-pb-image-list-item .description +{ + color:#737173; + overflow: hidden; + white-space:nowrap; + font-size: 14pt; + margin-bottom: 0px; + text-overflow: ellipsis; + margin-left:0px; + padding-top:0px; + margin-top: -3px; +} + +.bb-pb-image-list-item-hover .description +{ + color:white; + overflow: hidden; + white-space:nowrap; + font-size: 14pt; + margin-bottom: 0px; + text-overflow: ellipsis; + margin-left:0px; + padding-top:0px; + margin-top: -3px; +} + +.bb-pb-image-list-item .accent-text +{ + position:relative; + float:right; + font-size:12pt; + margin-right: 5px; + margin-top: -20px; + color: Black; +} + +.bb-pb-image-list-item-hover .accent-text +{ + position:relative; + float:right; + font-size:12pt; + margin-right: 5px; + margin-top: -20px; + color: White; +} + + +.bb-pb-image-list-header +{ + height:30px; + vertical-align:middle; +} + +.bb-pb-image-list-header-default +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#D5D6D7), to(#9E9F9F)); + color: black; +} + +.bb-pb-image-list-header-solid +{ + color: white; +} + +.bb-pb-image-list-header-right +{ + text-align:right; + padding-right: 10px; +} + +.bb-pb-image-list-header-left +{ + text-align:left; + padding-left: 10px; +} + +.bb-pb-image-list-header-center +{ + text-align:center; +} + +.bb-pb-image-list-header-hover +{ + height:30px; + vertical-align:middle; +} + +.bb-pb-image-list-header-hover p +{ + color:White; + line-height:36px; + margin:0px; + padding:0px; +} + +.bb-pb-image-list-header p +{ + line-height:36px; + margin:0px; + padding:0px; +} + +.bb-pb-image-list-item .button +{ + position:relative; + float:right; + width:34px; + height:59px; + margin-top: -59px; + padding-left: 10px; +} + +.bb-pb-image-list-item-button-border +{ + width: 23px; + height: 23px; + margin-top: 17px; +} + +.bb-pb-image-list-item-button-inner +{ + width: 23px; + height: 23px; + background-position: center center; + background-size: cover; +} + +.bb-pb-image-list-item .details-button-margin +{ + margin-right: 44px; +} + + +/* ================================================= + Image List High-Resolution + =================================================*/ + + +.bb-hires-image-list +{ + margin:0px; + padding:0px; +} + +.bb-hires-image-list-item +{ + border-bottom: solid 1px #D9DCDE; + padding-top: 3px; + padding-left: 5px; + padding-bottom: 0px; + overflow:hidden; + height: 60px; +} + +.bb-hires-image-list-item-hover +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#0dacff), to(#0f75ff)); + border-bottom: solid 1px #D9DCDE; + padding-top: 3px; + padding-left: 5px; + padding-bottom: 0px; + overflow:hidden; + height: 60px; + color: white; +} + +.bb-hires-image-list-details +{ + position:relative; + margin-left:74px; + margin-bottom: 0px; +} + +.bb-hires-image-list-noimage +{ + margin-left: 10px; +} + + +.bb-hires-image-list-item .title +{ + color:Black; + overflow: hidden; + white-space:nowrap; + text-overflow: ellipsis; + font-size:20pt; + line-height:36px; +} + +.bb-hires-image-list-item-hover .title +{ + color:White; + overflow: hidden; + white-space:nowrap; + text-overflow: ellipsis; + font-size:20pt; + line-height:36px; +} + + +.bb-hires-image-list img +{ + position:relative; + left: -5px; + float:left; + height:70px; + width:70px; + top:-10px; +} + +.bb-hires-image-list-item .description +{ + color:#737173; + overflow: hidden; + white-space:nowrap; + font-size: 14pt; + margin-bottom: 0px; + text-overflow: ellipsis; + margin-left:0px; + padding-top:0px; + margin-top: -3px; +} + +.bb-hires-image-list-item-hover .description +{ + color:white; + overflow: hidden; + white-space:nowrap; + font-size: 14pt; + margin-bottom: 0px; + text-overflow: ellipsis; + margin-left:0px; + padding-top:0px; + margin-top: -3px; +} + +.bb-hires-image-list-item .accent-text +{ + position:relative; + float:right; + font-size:14pt; + margin-right: 5px; + margin-top: -30px; + color: Black; +} + +.bb-hires-image-list-item-hover .accent-text +{ + position:relative; + float:right; + font-size:14pt; + margin-right: 5px; + margin-top: -30px; + color: White; +} + +.bb-hires-image-list-header +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#D5D6D7), to(#9E9F9F)); + height:56px; + vertical-align:middle; + border-bottom: solid 1px #D9DCDE; +} + +.bb-hires-image-list-header-right +{ + text-align:right; + padding-right: 10px; +} + +.bb-hires-image-list-header-left +{ + text-align:left; + padding-left: 10px; +} + +.bb-hires-image-list-header-center +{ + text-align:center; +} + +.bb-hires-image-list-header-hover +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#088FF0), to(#1666DC)); + height:56px; + vertical-align:middle; + border-bottom: solid 1px #D9DCDE; +} + +.bb-hires-image-list-header-hover p +{ + color:White; + line-height:56px; + margin:0px; + padding:0px; +} + +.bb-hires-image-list-header p +{ + color: Black; + line-height:56px; + margin:0px; + padding:0px; +} + +.bb-hires-image-list-item .button +{ + position:relative; + float:right; + width:34px; + height:59px; + margin-top: -59px; + padding-left: 10px; +} + +.bb-hires-image-list-item-button-border +{ + width: 23px; + height: 23px; + margin-top: 17px; +} + +.bb-hires-image-list-item-button-inner +{ + width: 23px; + height: 23px; + background-position: center center; + background-size: cover; +} + +.bb-hires-image-list-item .details-button-margin +{ + margin-right: 44px; +} + + + +/* ================================================= + Image List Low-Resolution + =================================================*/ + + +.bb-lowres-image-list +{ + margin:0px; + padding:0px; +} + +.bb-lowres-image-list-item +{ + border-bottom: solid 1px #D9DCDE; + padding-bottom: 0px; + overflow:hidden; + height:60px; +} + +.bb-lowres-image-list-item-hover +{ + background-color:#2175F7; + border-bottom: solid 1px #D9DCDE; + padding-bottom: 0px; + overflow:hidden; + height: 60px; +} + +.bb-lowres-image-list-details +{ + position:relative; + margin-left:68px; + margin-bottom: 0px; + margin-top:8px; + margin-top: 5px; +} + +.bb-lowres-image-list-noimage +{ + margin-left: 5px; +} + +.bb-lowres-image-list-item .title +{ + color:Black; + overflow: hidden; + white-space:nowrap; + text-overflow: ellipsis; + font-size:14pt; +} + +.bb-lowres-image-list-item-hover .title +{ + color:White; + overflow: hidden; + white-space:nowrap; + text-overflow: ellipsis; + font-size:14pt; +} + +.bb-lowres-image-list img +{ + position:relative; + left:0px; + float:left; + height:60px; + width:60px; +} + +.bb-lowres-image-list .description +{ + color:#737173; + overflow: hidden; + white-space:nowrap; + text-overflow: ellipsis; + font-size: 12pt; + margin-bottom: 0px; +} + +.bb-lowres-image-list-item-hover .description +{ + color: White; + overflow: hidden; + white-space:nowrap; + text-overflow: ellipsis; + font-size: 12pt; + margin-bottom: 0px; +} + +.bb-lowres-image-list-item .accent-text +{ + position:relative; + float:right; + font-size:10pt; + margin-right: 5px; + color:#696969; + margin-top:5px; + margin-top:-20px; +} + +.bb-lowres-image-list-item-hover .accent-text +{ + position:relative; + float:right; + font-size:10pt; + margin-right: 5px; + color:White; + margin-top:-20px; +} + +.bb-lowres-image-list-header +{ + background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAAbCAIAAAArlMusAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAblJREFUeF7t2CFuw0AQBVD3/mcK6j1SUGAQYBAQEODOOmlZUaTor+ZZ1rqss29mv6187Pu+uAgQIEAgUKAC2kWAAAECgQLLs6b78bSGCISUYSRaCbTa7CRHbAT07XazRglEFWM8mgg02eY0h6teIfd9GV/NdxmdJeCoEHi/wDTJ1eeb8hHQNQpjGh4xbQ0Q0AgC7xdw9tMEagaWvzl4/0D4j/8JpA2KejoIOI+BAiOgXQQIECAQKCCgA5uiJAIECAwBAW0OCBAgECrwG9DXoz5riEBIGUailUCrzU5yxEZAb9tmjRKIKsZ4NBFoss1pDle9Qq71E8fx0JsogahiphlonxqvCWh0nEAFdGWBiwABAgQCBQR0YFOURIAAgSEgoM0BAQIEQgUEdGhjlEWAAIER0Ou6WqMEoooxHk0EmmxzmsN12bZL/cRxPPQmSiCqmGkG2qfGawIaHSdQAV1Z4CJAgACBQAEBHdgUJREgQGAICGhzQIAAgVABAR3aGGURIEBgWb9XNwECBAgECiznr7ObAAECBNIE6oXxDOj6q4qzhgiElGEkWgm02uwsR2w5fZ7cBAgQIBAo8AP5Rl6LQeuAZgAAAABJRU5ErkJggg=='); + + height:27px; + background-color:silver; +} + +.bb-lowres-image-list-header-right +{ + text-align:right; + padding-right: 10px; +} + +.bb-lowres-image-list-header-left +{ + text-align:left; + padding-left: 10px; +} + +.bb-lowres-image-list-header-center +{ + text-align:center; +} + +.bb-lowres-image-list-header-hover +{ + height:27px; + background-image: none; + background-color: #2175F7; +} + +.bb-lowres-image-list-header-hover p +{ + color:White; + line-height:27px; + margin:0px; + padding:0px; +} + +.bb-lowres-image-list-header p +{ + color: Black; + line-height:27px; + margin:0px; + padding:0px; +} + +.bb-lowres-image-list-item .button +{ + position:relative; + float:right; + width:34px; + height:59px; + margin-top: -59px; + padding-left: 10px; +} + +.bb-lowres-image-list-item-button-border +{ + width: 23px; + height: 23px; + margin-top: 23px; +} + +.bb-lowres-image-list-item-button-inner +{ + width: 23px; + height: 23px; + background-position: center center; + background-size: cover; +} + +.bb-lowres-image-list-item .details-button-margin +{ + margin-right: 44px; +} + + +/* ================================================= + BBM Bubbles + =================================================*/ + +.bb-bbm-bubble-left +{ + margin-left: 8px; + margin-right:20px; + position:relative; + margin-top: 10px; +} + +.bb-bbm-bubble-left img +{ + position:relative; + float:left; +} + +.bb-bbm-bubble-left .details +{ + position:relative; + margin-left:25px; +} + +.bb-bbm-bubble-left .image { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAAdCAYAAABSfAiGAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oFHBUjB5d+cecAAAI0SURBVHja7dw9a1t3GMbh+5gz/A0apM1jD3TR6K/h8QwZ/PEyZNSoMauGDIZCMSUFFdJQhwTsQdBnOHA6uCktNfQllknCdS3nRqDl2X4SUjdnTpJsN9u5pkqmpKYKAADAp2h9S/r758V40SVJN2fOZrOZ61BpraUtWlpbJfk1yel/fMa2bfsr2m5gfy47bmHb9he5q25Th0pVpS1axnHs+u1mO9ehsjw7y3oYZBoAAPBIzpIk1/t97m5u8t33P8x9TffffIgPAADgGNbDkB+TvHv7NidVlfPzc1cBAACO5tthyPsPNzlxCgAA4ElMESAAAMDTESAAAIAAAQAABAgAAIAAAQAABAgAAIAAAQAABAgAACBAAAAABAgAACBAAAAAHgqQ3hEAAIAn0CcnrW/ZvbpyDAAA4Gh2r3ZpaTlpfZIqFwEAAI7i+vV1MiWttXRz5mw2m7nuKmnJcrHMer1+8I3TNOXNL2+SKUmfvz9j27b9FW03sD+XHbewbfvL3FWVu0MlU6W1lvHZ2HVz5iTJdrOda6rc3t1m+GbIMAx/iY/9fp/9T/uctlMJBwAA/LM+aX1L61suxovuz5+n/PHCi+cv5od+mL7/+Sar5Srjs7FzSQAA4P/4V3/D+3K3y+r3r0ycDAAAOFqA7Ha7rPpkvBQfAADAEQPk49/zjpeX4gMAADhegFxdXSVTZblYuhIAAHCcAGl9Sx0qVffx8fHH6QAAAI8eIGktVZW2aOIDAAB4VL8B1hmhz0JjeFQAAAAASUVORK5CYII="); +} + +.bb-bbm-bubble-left .top-left { + margin-right: 9px; + height: 9px; +} + +.bb-bbm-bubble-left .top-right { + margin-top: -9px; + margin-left: 9px; + background-position: 100% 0; + height: 9px; + font-size: 2px; +} +.bb-bbm-bubble-left .bottom-left { + margin-right: 18px; + background-position: 0 -11px; + height: 18px; + font-size: 2px; +} +.bb-bbm-bubble-left .bottom-right { + margin-top: -18px; + margin-left: 18px; + background-position: 100% -11px; + height: 18px; + font-size: 2px; +} +.bb-bbm-bubble-left .inside { + border-left: 1px solid #A5A2A5; + border-right: 1px solid #A5A2A5; + background-color: #DEDBDE; + padding-left: 3px; + padding-right: 3px; + overflow:auto; +} +.bb-bbm-bubble-left .nogap { + margin-top: -3; + margin-bottom: -3; + padding-left: 10px; + padding-right: 10px; +} + +.bb-bbm-bubble-right +{ + margin-top: 10px; + margin-right: 8px; + margin-left: 20px; + position:relative; +} + + +.bb-bbm-bubble-right .image { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAAdCAYAAABSfAiGAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oFHBUgJ4c9AuwAAAJNSURBVHja7dyxa1tXGMbh95o7fIYOEmSIoIUIumjIkLEaM3rUkCFD/8AOd7NHj+pgiIcMHRpohoICCUjQgM4guB3clgZMSRorQ/w8i16MpiOd4YcldWPGJMnFcDG2Q0trLQAAAJ+r+kr6m8ez1VmXJN2YMcMwjNuWtMk8NZsnSU7Tsk/Z9r3ZzsJ2B+KO296Ttrtmf/T+78fkNJVt2yZ/7FLvfsu0T1bPVl13PpyPm/ctWSwzf1iZVUk1AADgzqxf75Jf15lV5aQdWtrDeZaPJuIDAAC4c8tHk7QH87RDy0lrLU+fLJwKAABwNE+fLG4CxFEAAABfxCECBAAA+HIECAAAIEAAAAABAgAAIEAAAAABAgAAIEAAAAABAgAACBAAAAABAgAACBAAAAABAgAACBAAAOCr1ycnVZXLq2uHAQAAHM3l1XUqlZPqK/Vuk/XrjVMBAADu3PrVJrXbpKrSjRkzDMO4fZ+0ySz13TynqSQt+8S279GOs7Dv9d6nueO296Ttrtmf/BpXJYsHdft/PV5tkrdvUrtNpt8kq9Wq68aMSZKL4WJsh5bWmkQDAAA+yvaQ1OKHLL+fffD369932V+dZzqZpvrkbLXqkuSfAAEAAPhUw0/DuG1JHi+z/HbyQYDk5WWe//i8+/fz/QoWAADwv62erbppJe3l+iY6/tbf/rEsAQIAAHx2hMwq2f7yIru/vtKxPzQBAgAAHDFC+pb1z+vsWnLaR4AAAADHjZD5oeXF1To5JOkFCAAAcERVlWl7k+3bTeqW74H8CX8ZrQX6MdddAAAAAElFTkSuQmCC"); +} + +.bb-bbm-bubble-right .details +{ + position:relative; + margin-left:25px; +} + +.bb-bbm-bubble-right img +{ + position:relative; + float:left; +} + +.bb-bbm-bubble-right .top-left { + margin-right: 9px; + height: 9px; +} +.bb-bbm-bubble-right .top-right { + margin-top: -9px; + margin-left: 9px; + background-position: 100% 0; + height: 9px; + font-size: 2px; +} +.bb-bbm-bubble-right .bottom-left { + margin-right: 18px; + background-position: 0 -11px; + height: 18px; + font-size: 2px; +} +.bb-bbm-bubble-right .bottom-right { + margin-top: -18px; + margin-left: 18px; + background-position: 100% -11px; + height: 18px; + font-size: 2px; +} +.bb-bbm-bubble-right .inside { + border-left: 1px solid #A5A2A5; + border-right: 1px solid #A5A2A5; + background: #D6EBF7; + padding-left: 3px; + padding-right: 3px; + overflow:auto; +} +.bb-bbm-bubble-right .nogap { + margin-top: -3; + margin-bottom: -3; + padding-left: 10px; + padding-right: 10px; +} + + + + +/* ================================================= + Panel Header - High Resolution + =================================================*/ + +.bb-hires-panel-header { + border-bottom: solid 1px #DCDBDB; + margin-bottom: 5px; + padding-bottom: 3px; + font-size: 14pt; + color: #7C7E80; + font-weight: bold; +} + +/* ================================================= + Panel Header - Low Resolution + =================================================*/ + +.bb-lowres-panel-header { + border-bottom: solid 1px #DCDBDB; + margin-bottom: 5px; + padding-bottom: 3px; + font-size: 12pt; + color: #7C7E80; + font-weight: bold; +} + +/* ================================================= + Pill Buttons + =================================================*/ + +.bb-pill-buttons +{ + margin: 8px; + margin-bottom: 0px; + text-align:center; + /*position:relative;*/ + +} + +.bb-pill-buttons .buttonLeft { + background: transparent url('../images/button/pillButtonRight.png') no-repeat scroll top right; + color: White; + display: block; + float: left; + height: 39px; + margin-right: 0px; + padding-right: 10px; + text-decoration: none; + width: 30%; +} + +.bb-pill-buttons .buttonLeft span { + background: transparent url('../images/button/button.png') no-repeat; + display: block; + line-height: 39px; + padding: 0px 0px 0px 10px; + text-align:center; +} + +.bb-pill-buttons .buttonRight { + background: transparent url('../images/button/btnRight.png') no-repeat scroll top right; + color: White; + display: block; + float: left; + height: 39px; + margin-right: 0px; + padding-right: 10px; + text-decoration: none; + width: 30%; +} + +.bb-pill-buttons .buttonRight span { + background: transparent url('../images/button/button.png') no-repeat; + background-position: -10px 0px; + display: block; + line-height: 39px; + padding: 0px 0px 0px 10px; + text-align:center; +} + +.bb-pill-buttons .buttonMiddle { + background: transparent url('../images/button/pillButtonRight.png') no-repeat scroll top right; + color: White; + display: block; + float: left; + height: 39px; + margin-right: 0px; + padding-right: 10px; + text-decoration: none; + width: 30%; +} + +.bb-pill-buttons .buttonMiddle span { + background: transparent url('../images/button/button.png') no-repeat; + display: block; + line-height: 39px; + padding: 0px 0px 0px 10px; + text-align:center; + background-position: -10px 0px; +} + +/* ================================================= + BB7 Pill Buttons + =================================================*/ + +.bb-bb7-pill-buttons { + padding-top: 5px; +} + +.bb-bb7-pill-buttons-hires { + height:59px; +} + +.bb-bb7-pill-buttons-lowres { + height:45px; +} + +.bb-bb7-pill-button { + float: left; + border-width:1px; + border-color:#BCBEC2; + border-style: solid; + color: black; + text-align:center; + white-space:nowrap; + vertical-align: middle; + padding-left: 0px; + padding-right: 0px; + display: table-cell; + box-shadow:1px 1px 1px #DCDCDC; + background-clip: padding-box; + background-image: -webkit-gradient(linear, center top, center bottom, from(#F9F9F9), to(#D0D2D4)); +} + +.bb-bb7-pill-button-highlight{ + float: left; + border-width:1px; + border-color:#0060E6; + border-style: solid; + color: White; + text-align:center; + white-space:nowrap; + vertical-align: middle; + padding-left: 0px; + padding-right: 0px; + display: table-cell; + box-shadow:2px 2px 2px #DCDCDC; + background-clip: padding-box; + background-image: -webkit-gradient(linear, center top, center bottom, from(#098CEE), to(#1766DB)); +} + +.bb-bb7-pill-button-lowres { + height:40px; + line-height:40px; +} + +.bb-bb7-pill-button-hires { + height:54px; + line-height:54px; +} + +.bb-bb7-pill-button-left{ + border-top-left-radius:5px; + border-bottom-left-radius:5px; +} + +.bb-bb7-pill-button-right{ + border-top-right-radius:5px; + border-bottom-right-radius:5px; +} + +/* ================================================= + BB10 Pill Buttons + =================================================*/ + +.bb-bb10-pill-buttons-lowres { + padding-top:5px; +} + +.bb-bb10-pill-buttons-hires { + padding-top:10px; +} + +.bb-bb10-pill-buttons-container-lowres { + border-width:1px; + border-style: solid; + border-radius:3px; + padding: 2px; + font-size: 14pt; + height:37px; +} + +.bb-bb10-pill-buttons-container-hires { + border-width:2px; + border-style: solid; + border-radius:5px; + padding: 2px; + font-size: 27pt; + height:89px; +} + +.bb-bb10-pill-buttons-container-light +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#BDBDBD), to(#D4D4D4)); + color: #5D5D5D; + border-top-color: #A3A3A3; + border-bottom-color: #CECECE; + border-left-color: #C3C3C3; + border-right-color: #C4C4C4; +} + +.bb-bb10-pill-buttons-container-dark +{ + color: #8D8D8D; + border-top-color: #262626; + border-left-color: #2A2A2A; + border-right-color: #2A2A2A; + border-bottom-color: #2E2E2E; + background-image: -webkit-gradient(linear, center top, center bottom, from(#292929), to(#333333)); +} + +.bb-bb10-pill-button-lowres { + float: left; + text-align:center; + white-space:nowrap; + vertical-align: middle; + padding-left: 0px; + padding-right: 0px; + border-width: 1px; + border-style: solid; + border-color: transparent; + display: table-cell; + background-clip: padding-box; + height:35px; + border-radius: 3px; +} + +.bb-bb10-pill-button-hires { + float: left; + text-align:center; + white-space:nowrap; + vertical-align: middle; + padding-left: 0px; + padding-right: 0px; + border-width: 2px; + border-style: solid; + border-color: transparent; + display: table-cell; + background-clip: padding-box; + height:85px; + border-radius: 5px; +} + +.bb-bb10-pill-button-inner-lowres +{ + margin:0px; + border-width:1px; + border-style: solid; + border-radius: 3px; + height:28px; + line-height:28px; + z-index:10; + border-color: transparent; + padding-top: 5px; +} + +.bb-bb10-pill-button-inner-hires +{ + margin:0px; + border-width:2px; + border-style: solid; + border-radius: 5px; + height:76px; + line-height:63px; + z-index:10; + border-color: transparent; + padding-top: 5px; +} + +.bb-bb10-pill-button-inner-selected-lowres-dark +{ + border-color: #4F4F4F; +} + +.bb-bb10-pill-button-inner-selected-hires-dark +{ + border-color: #4F4F4F; +} + +.bb-bb10-pill-button-inner-selected-lowres-light +{ + border-color: transparent; +} + +.bb-bb10-pill-button-inner-selected-hires-light +{ + border-color: transparent; +} + +.bb-bb10-pill-button-selected-lowres-light{ + color: black; + border-width:1px; + border-style: solid; + border-top-color: #B4B4B4; + border-left-color: #C2C2C2; + border-bottom-color: #B4B4B4; + border-right-color: #C8C8C8; + background-image: -webkit-gradient(linear, center top, center bottom, from(#F9F9F9), to(#DDDDDD)); +} + +.bb-bb10-pill-button-selected-hires-light{ + color: black; + border-width:2px; + border-style: solid; + border-top-color: #B4B4B4; + border-left-color: #C2C2C2; + border-bottom-color: #B4B4B4; + border-right-color: #C8C8C8; + background-image: -webkit-gradient(linear, center top, center bottom, from(#F9F9F9), to(#DDDDDD)); +} + +.bb-bb10-pill-button-highlight-lowres-light{ + color: white; + border-width:1px; + border-style: solid; + border-top-color: #B4B4B4; + border-left-color: #C2C2C2; + border-bottom-color: #B4B4B4; + border-right-color: #C8C8C8; +} + +.bb-bb10-pill-button-highlight-hires-light{ + color: white; + border-width:1px; + border-style: solid; + border-top-color: #B4B4B4; + border-left-color: #C2C2C2; + border-bottom-color: #B4B4B4; + border-right-color: #C8C8C8; +} + +.bb-bb10-pill-button-selected-lowres-dark +{ + color: white; + border-width:1px; + border-style: solid; + border-color:#090909; + background-image: -webkit-gradient(linear, center top, center bottom, from(#3F3F3F), to(#262626)); +} + +.bb-bb10-pill-button-selected-hires-dark +{ + color: white; + border-width:2px; + border-style: solid; + border-color:#090909; + background-image: -webkit-gradient(linear, center top, center bottom, from(#3F3F3F), to(#262626)); +} + +.bb-bb10-pill-button-highlight-lowres-dark +{ + color: white; + border-width:1px; + border-style: solid; + border-color:#333333; +} + +.bb-bb10-pill-button-highlight-hires-dark +{ + color: white; + border-width:2px; + border-style: solid; + border-color:#333333; +} + + + +/* ================================================= + Ripple Drop-Down dialog + =================================================*/ + +.ripple-dropdown-dialog { + position:absolute; + background-color:black; + left:10px; + padding-top:10px; + padding-bottom:10px; + right:10px; + border-radius:10px; + padding: 15px; + overflow:auto; +} + + +.ripple-dropdown-dialog .backgroundHighlight:hover { + background-image: -webkit-gradient(linear, center top, center bottom, from(#098CEE), to(#1766DB)); +} + +.ripple-dropdown-dialog .backgroundSelected{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#098CEE), to(#1766DB)); +} + +.ripple-dropdown-dialog .item { + color:white; + padding-left:35px; + height:45px; + line-height:45px; + vertical-align:center; +} + +.ripple-dropdown-dialog .item span { + overflow: hidden; + height: 45px; + display: block; +} + +.ripple-dropdown-dialog .selected { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAPCAYAAAAGRPQsAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sLDhI4FDHFH/YAAAEJSURBVDjLrdO9SsNQFMDx/w3euSUkDxApltLsUnURfQuxOHSQUmJQfA9BxMEPpOCouKlFaDvVtVhfwa52sMslXCdLbgTxNj3TmX6cTxGUKuSJ5SDQtdoqd/cPLOWByuUVfdu+xnVdfN/DWQSUJAnD4dt8WBaK4iO6vb5wFgE9PnUEYFdZGlJKGZAVloXiw2MDAnCklEStpt5YX9N5IACnvruj44MWVxfnbG9t6nkhAGcweOVzMkFKydnpiQHaQAAiKFUIw6pu31xSLBRQSrHfjPgYj8kO+7nzIv6aq/h5pyz4NZ3O8v9AxjZHo3dR32vMWraFfp1GGrSFjDbTEYZV7Xse3V5f2Bz1N0W6rXbndMo2AAAAAElFTkSuQmCC"); + background-repeat: no-repeat; + background-position: 10px center; +} + + +/* ================================================= + BB10 Grid + =================================================*/ + +.bb-bb10-grid-lowres +{ + margin:0px; + padding:0px; +} + +.bb-bb10-grid-hires +{ + margin:0px; + padding:0px; +} + + +.bb-bb10-grid-header-lowres +{ + height:28px; + line-height:30px; + vertical-align:middle; + border-bottom-width: 2px; + border-bottom-style: solid; + font-weight: bold; +} + +.bb-bb10-grid-header-hires +{ + height:44px; + line-height:44px; + vertical-align:middle; + padding-left: 10px; + border-bottom-width: 3px; + border-bottom-style: solid; + font-weight: bold; +} + +.bb-bb10-grid-header-normal-light { + background: -webkit-gradient(linear, center top, center bottom, from(#F9F9F9), to(#DDDDDD)); + font-weight: normal; + color: black; +} + +.bb-bb10-grid-header-normal-dark { + background: -webkit-gradient(linear, center top, center bottom, from(#3F3F3F), to(#262626)); + font-weight: normal; + color: white; +} + +.bb-bb10-grid-header-lowres p +{ + font-size: 16pt; + line-height:30px; + margin:0px; + padding:0px; + padding-top:4px; + margin-left: 10px; +} + +.bb-bb10-grid-header-hires p +{ + font-size: 28pt; + line-height:44px; + margin:0px; + padding:0px; + margin-left: 10px; +} + +.bb-bb10-grid-header-left-lowres +{ + text-align:left; + padding-left: 10px; +} + +.bb-bb10-grid-header-right-lowres +{ + text-align:right; + padding-right: 10px; +} + +.bb-bb10-grid-header-left-hires +{ + text-align:left; + padding-left: 20px; +} + +.bb-bb10-grid-header-right-hires +{ + text-align:right; + padding-right: 20px; +} + +.bb-bb10-grid-header-center +{ + text-align:center; +} + +.bb-bb10-grid-item-overlay-lowres +{ + position:relative; + right:0px; + left: 0px; + background-color: black; + opacity: 0.7; +} + +.bb-bb10-grid-item-overlay-two-rows-lowres +{ + height: 40px; + top:-40px; +} + +.bb-bb10-grid-item-overlay-one-row-lowres +{ + height: 24px; + top:-24px; +} + +.bb-bb10-grid-item-overlay-hires +{ + position:relative; + right:0px; + left: 0px; + background-color: black; + opacity: 0.7; +} + +.bb-bb10-grid-item-overlay-two-rows-hires +{ + height: 70px; + top:-70px; +} + +.bb-bb10-grid-item-overlay-one-row-hires +{ + height: 40px; + top:-40px; +} + +.bb-bb10-grid-item-overlay-lowres .title +{ + text-align:center; + right:0px; + left:0px; + padding:0px; + margin:0px; + padding-top: 3px; + line-height:20px; + opacity:1.0; + color:white; + font-size: 13pt; + overflow: hidden; +} + +.bb-bb10-grid-item-overlay-lowres .title-two-rows +{ + height: 37px; +} + +.bb-bb10-grid-item-overlay-lowres .title-one-row +{ + height: 21px; +} + +.bb-bb10-grid-item-overlay-hires .title +{ + text-align:center; + right:0px; + left:0px; + padding:0px; + margin:0px; + padding-top: 4px; + line-height:30px; + opacity:1.0; + color:white; + font-size: 22pt; + overflow: hidden; +} + +.bb-bb10-grid-item-overlay-hires .title-two-rows +{ + height: 66px; +} + +.bb-bb10-grid-item-overlay-hires .title-one-row +{ + height: 36px; +} + +/* ================================================= + BB10 Action Bar + =================================================*/ + +.bb-bb10-action-bar-table +{ + margin:0px; + margin-top:0px; + padding:0px; + width:100%; + border-collapse:collapse; +} + +.bb-bb10-action-bar-table tr td +{ + padding:0px; + margin:0px; + border-collapse:collapse; +} + +.bb-bb10-action-bar-lowres +{ + position: absolute; + height: 73px; + bottom:0px; + right:0px; + left:0px; + background-repeat: repeat-x; + border-top-width: 1px; + border-top-style:solid; +} + +.bb-bb10-action-bar-hires +{ + position: absolute; + height: 139px; + bottom:0px; + right:0px; + left:0px; + background-repeat: repeat-x; + border-top-width: 1px; + border-top-style: solid; +} + +.bb-bb10-action-bar-dark { + border-color: #484948; + background-image: -webkit-gradient(linear, center top, center bottom, from(#323232), to(#272727)); +} + +.bb-bb10-action-bar-light { + border-color: #D1D1D1; + background-image: -webkit-gradient(linear, center top, center bottom, from(#FBFBFB), to(#E1E1E1)); +} + +.bb-bb10-action-bar-icon-lowres +{ + height: 40px; + width: 40px; + margin-top: 3px; +} + +.bb-bb10-action-bar-icon-hires +{ + height: 80px; + width: 80px; + margin-top: 4px; +} + +.bb-bb10-action-bar-button-tab-left-lowres-dark +{ + background-position:left -4px; + background-repeat:no-repeat; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAABJCAIAAACCd4BSAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9wEFRcpJS1EicAAAAEySURBVEjHvZRBEsMgCEUBvUbuf0vpgpSiokJmUhYdkyB9/I/idV2llFIKEekC+wAAAKjyAb7BzMwsa/seEatNaq0hIjNLkmzTwlXz9HNrDQCISMrLAhEJYsHMNGPpo/y11ParutsAgIa3q/Jd6pA0R+UpVIqhfFSBH4BlGri7tuyroTO7DgGMxuqgzA11bm381F+yTbjN7YydG020dadan4YWLajf1kw8AqzG5cfqWjVPY2esW8839jivT4fwcAo21qur/jFcncdHrJGoFm7G9RVYXSr/Yd3IudR1YxsFe7pT7WlJsLrX4A7gINZxQ35eN/f1I1Y7zlGxBGAjcHKyVpfUkjVaNapAFCDuVp41dLY07zjdGQuCSuXbSlwZkeP6GsBLVRMKBNt/DyCuwDusCYAPj8Kv3bCpS3oAAAAASUVORK5CYII="); +} + +.bb-bb10-action-bar-button-tab-left-hires-dark +{ + background-position:left -4px; + background-repeat:no-repeat; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAB1CAIAAAAwSA0oAAAABGdBTUEAALGPC/xhBQAAAAd0SU1FB9wEFRcpJS1EicAAAAQ/SURBVGhD1ZrpVttADIUdeAh2EvYspC3t+79b5VwfWdYyW5zQzg+OoeGrlitpZszi4eFhsVhcXl5eXFzQA75iyWf6tus6+5V/SA/Dur29vbu7Wy6Xq9Xq+fn55eXl7e3t4+NjvV5vNpvdbvf5+bnf738c1s/D+nVYX19fvw/rz3R1Nzc3BH18fCTo09MTQV9fXwn6/v5O0O12WwvtYKMkwkwikqVkZiGUje0Id39/D69hIxFhJvsuoYiAcp8jQNwUEWbCd1oIaBRTgoLrE0vMZEtlrgga2siOq7zL1LsC6ImsHoqjCiU7znnn1CMCKghkbwUR8vwOoqyZEq8pjpx0dllmaVC40iPn2sZREpEZmZ8+jspGKNwSZfEoYUoD80SSTlQ5rsvUQTI2Mk4VeIQ7I5EKRjWLY23kFqm8dhONPsTV7cfRJaJaEolGb+97OHdc2yJZj0o9CZE7xBI9VhCrFG4bT69w5TVPBQolXLYKz9TMNxAxuDG8suke65qma0miXSLrEZIc53UJsUiPvAP4h4ly3xOZSZmJkmPbmt5J2emKXGeJnB+faLsZq0el25nXdreXGDIlknT2j8cQdTeLtig2iO4+bVC4rOssEQpPN91J74mI2D9yTvJEKhs6MdhtLnUz3jtLx6N+ga3AkJmIKJtjJCC1UTkXEQq3Ywt6VFvIIhslUZWgIjp7M9SMiqOc15aYFtCkZtB7ZM3wSEinRbbxaqLd40rcqB51ipNHQyjRnVzy/BV2s+gUl5iFoY3Zc2FUhaVEV4zpLAM9ZkbaKE/DVeP/XMSEvBu9LpSOOhjl1aMy49aMPHPxc+rmI9scq4ly9isb5clacR31qDgmqjBjI+sxkZmo10p03sZ0m7BmnpHoJjq6AJh4fX19LacCX8ZJPbrDWh6S+F6FHjoQ3XszVz1qoyJZeHaI7jk46uEpolSPdbmdiEGYLmprlx9HOVojosq1ix7jeBKikg7vJsqDmMo17nHt0UNORFaSfNDqUZk5ihjFUXWzChv5Plypx+2Prr/44STXVUUdQUNiW1pCG9VVlFJPwuWeeHV1RdtcvlVI5FoOL96Q24dMzbh73ASO/imTmf+BaEs77bLjtWzg0uXCtPjERAPPGjgh8klmNqJ6z2VFjs1Fdmn12Jco3CmyLHzglEQVxxm8BpHPHdx7Cp3ljw1e42WhIkp5l3MnxOhivRw3yYwbR55csLdkaa/tFXMJRX7mxEQZR6meKjNHG+VbYeAagkj/d0/EG0hLrDKNPzwQ0Sbcoq7ljkS3YGpxo9dk42xEGtb0Rjwq6hYbmQhtq23jDMRmGY65VjbORoR01MxqcLnPNdlIV4VElL22jYXf6t/PMFG+1WqGDkT1xyPNOO0124g20ba0jdx12nD0Wz2RNrjktXw72IxziMew8LuDjRDj8bieiHY7P5H/9uZ4MztqZdQcZyT+BU+MsECN23toAAAAAElFTkSuQmCC"); +} + +.bb-bb10-action-bar-button-tab-left-lowres-light +{ + background-position:left -4px; + background-repeat:no-repeat; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAABJCAIAAABttetsAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9wEFgAQJ8YSf00AAAGwSURBVEjH1VbLksQgCJSWqcz/f9X8Uya6B2YIEXzksFW7nFIRsGlalF6v17Ztz+dz+1rOGUD+GhGllIio1sqllOM49n0nIll4PB45Z/nPzAAASACLR621lPJ+vzWm1ppS2vddvGVDtssScxwHACIqpQAopUjilBIrLPnQrNYkS0oJ+ku9BwbJJDD8sv4UB9g1IpKaqGNoQPdMfLjB0GzdFI0wh27V7InGz4fZ/7A7DmB8ONHQJlPTLCEKHvSgU7BsNKjkW7R66Y4vyHJyVul14gNE36d3KBIPD+mOsc06EMyHx5BBZSPuvCzoPtILy+AHyRSrhcoX0QChsC5Vhsc2ZPbeKWY/HrxW49x6fntboaeNsFNslWAjw+rjKnsVc6jsWquotGXQ1tSTeKzBwdw5cfuJM8rtJ3dv5J53SjicRrh7Ymo5sZ0fceIP2CB9PO27SCxrVoOTzo+5uyBZPEHs9TS6L6cd6XpPA3i9kbeRcEPzpMppR7oMjhNfcK/khj4xfgGJvviWkNzCzeFMmvC9iuSWN+sTYbXK9Zv7njdPT258N/wvb9aX+Gp3APwBTn4A1o9I+rclZWgAAAAASUVORK5CYII="); +} + +.bb-bb10-action-bar-button-tab-left-hires-light +{ + background-position:left -8px; + background-repeat:no-repeat; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAB0CAIAAABrB6dCAAAABGdBTUEAALGPC/xhBQAAAAd0SU1FB9wEFRcpJS1EicAAAAdVSURBVGhDzZrHcuNIEEQ50h70//8i77333nvvduWl02YrEalSNUAQBDZi+zBBSZx+rMpy3eCf0dHR1tbWtra2v74XXmPhRUtLC3+DF1h/vhde1Go19yP/hN+nr/7+/sHBwampqbm5uaWlpdXV1a2trd3d3YODg5OTk4uLi+vr67u7u/v7+4eHh7+/19PT0/Pz8+vr69vb28fHx+fn59fXF/7lC7dqvb29YExMTExPT8/Pz4OxtrZGxuHh4enpKRm3t7dkPD4+Wsb7+zsZmQDsPjAwMDk5KQCM2NjY2N7e3t/fPzo6AuPy8lIMYMD453vJDovxFmD3oaEhAuClxcXF5eVlGLG5ubmzs0PG2dkZ7Li6urq5uUk15eXlBR4DxhkEs2oQIAbIiL29PTgKYoABOwiQJNZdsAYYqmKd9gOYmZmBBrQAgPX1dSghI8A4Pz+HEfAVMGJQeXmMDNpBTAJAFGUBaMTx8TGNoKMAcHa46BIjAIaHhwGYnZ2lBSsrK9BAFhBAJSwAatu4oh2IYOohOzIBCCS6SACGrCxIBTC0LCMTgChCpDYBoBESo4YwTXURAUg3RKo0UNJZkRlLTmp5qdbX18dSIQ2YB3QRASgbzDibDY5BDGWwXmoIQJGzANhauxcDwEVQmMkchylDSNUp9eMjWOtZQAD9w0RTUbJJYJ3j/OMBCwsLqkWsd1kAG6OFAUy0MgCEUHoU0QIAkMYMU1oAAVSL4nqXFT+sFqHhsB/YWiQLGKYU2RY7V1Md45cFMSDLRUwCVtPmAWiZqQD1Tu4edwUbpvUssAAWIpvG8ceP84CV7kdk5yICKDK7DUV2FrhmwIYTJ0HIg1wAK13zgJ6eHo0tbPqxBgJkiaxq6oxA20kswFykMBVAzSAGxOWaLlIzoAYpAIksDexUAZE5IGXVIluoGwWw0rEhN5IE6peZAMwsbvCKAa4hp0ZRArAia6pAmKrYyUU2k+mi1KlCXmI21AiwtYh5UAhAC1wq5ADsbCoXpU52moUZo96CONE4mFoAskztzOqsOuE+vqpFcFEdAI8hbPe5AKUYhyL6px5A55xG0jjV+780cJnMwVTdpo4Fdrp2RtCUJIoaAVBhp8H/FcC5UR1fM11qw3EjFz2jFVyE8XR8fJyHQE0VTmRGkSvXdrKTzkwFrRyA6oQA7igYa9AQQC6yhYgWpJ411Qzc7vgx3YI6AHcItHVCpcK7yJ70oQFKhcY6pXHWUCSF2c5SLOju7obIyANeVxDAUsrbBFY6AFzDYcWWBSpHJGnVBFAU/bcAXrjIRbQAIRRboG6jZiCpvQXUAFMFpmsHKKqB8w9+DC5KBXCs48mJFsTdxh094t0DoKuriyJzLqIF7jpHLiJDY4s7/llf6XUOgM2geoD6ZcUAiqyhiHO1NIgHL3fGr+ciVFNpYKcuWkCGq6bMMjE4/8Yr0UAA3iPYWo3dHSAWOWt3/L4ewNZqJlpWFOUDlGiwQB3fAVSr47uuwgCekHlvqkqXlWh1dg8u6uzsxOyllokokgW8/I0zmTebqkWUOmvVA8QuwhlWV6dlAdZFqkU6JBezwNUiuIgasJRaFzUJiDWQyNBAtSg+YupOivNL6vrRgP2AYaoL3ziN7QmwAEB5gOMNarWagQO4a5A6H1x/ChZQA9w6cqwDgCeDuJTa2/dGdsd7ah0dHdRALpIFsch2KGIg5a56AFtKU4+YubvjDQmAGqS6SKXUjdaN7J4C4MxiNagMAJE1s9iTQepY1+DHDxa0t7fjiECRBdD5UsVOTw4UqXxGkbt+NChkQe6+ekOSB7hKEICHJ5ZSJlp8tmkegIasJ2gqRJonivoHnyNogERjJutRoyzQ7K5Kp5bAy83c5QEcKayL3GBaGMBSAQ34sNS5yDbkolvTuCSKCGCthgZ6ZuAAuQ6J35DkATSwAD0YspMvS0XR9ZMHAPCuyz5e1DWIE7lxjAe4ZqDnsDweN7F+NMDpQ91G18lu5m0SgI4GkQFgKeU8ocHdpnHzAIpMC/T4NT7b8L6o0AouyrKgYgBmFqUxXeQmokIfXG9OLMA9Avols8w++rMiNwlAsYOLLCBLA54Piq6QyQ7gLNDZpujWfH9wEU76uAlBpbMTkW2WuopqghE6GgBoyKh0bp7Q+bssAE8CLcCmcUn//HIRLKCL4loNC5peiQbORXqsQgvKrACAi9CQUSf0pRw3V5cCQGQLSE2CsgB8KwGVDqXUDiz2DqQaAApR3MugQckV8gAWoBkQoIONLCgLwJUavl+EUho3SyZayRVuW/DVE5RStRqNpNUA4CJYIIBzERglV4oF9mhWcnf89wAYGRlBKUWl47xlXVQBABez+LIgCpGbGBlF5Vd4fgAA6oTKHA8dVQLGxsaQxgCo11e1e9AALgKAWUYAe1lVKzzLxNSFeUIDnVxUCSN8vwhzI7KMd+0KoUp2xyYJgDGK3av1TwCg42MoQqvhHWO1/kkAmFkIoIuIqWqF79mhISPLmMPV7o5P+S991h/7kNPVKAAAAABJRU5ErkJggg=="); +} + +.bb-bb10-action-bar-action-lowres +{ + display:table-cell; + float: left; + height:69px; + text-align:center; + border-top-width: 4px; + border-top-style: solid; +} + + +.bb-bb10-action-bar-action-hires +{ + display:table-cell; + float: left; + height:131px; + text-align:center; + border-top-width: 8px; + border-top-style: solid; +} + +.bb-bb10-action-bar-action-display-lowres +{ + font-size:12pt; + line-height:18px; + margin-top: 3px; +} + +.bb-bb10-action-bar-action-highlight +{ + position:absolute; + top: 0px; +} + +.bb-bb10-action-bar-action-display-hires +{ + font-size:20pt; + margin-top:3px; + line-height:30px; +} + +.bb-bb10-action-bar-tab-dark { + color: white; + border-top-color: #373737; + border-right-color: #141414; + border-right-width: 2px; + border-right-style: solid; +} + +.bb-bb10-action-bar-tab-light { + color: black; + border-top-color: #E0E0E0; + border-right-color: #C6C6C6; + border-right-width: 2px; + border-right-style: solid; +} + +.bb-bb10-action-bar-button-dark { + color: white; + border-top-color: transparent; + border-right-width: 0px; +} + +.bb-bb10-action-bar-button-light { + color: black; + border-top-color: transparent; + border-right-width: 0px; +} + +.bb-bb10-action-bar-tab-normal-dark +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#252525), to(#1C1C1C)); +} + +.bb-bb10-action-bar-tab-selected-dark +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#47494A), to(#3F3F3F)); +} + +.bb-bb10-action-bar-tab-normal-light +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#F9F9F9), to(#DFDFDF)); +} + +.bb-bb10-action-bar-tab-selected-light +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#FBFBFB), to(#E6E6E6)); +} + + +.bb-bb10-action-bar-back-button-lowres +{ + display:table-cell; + float: left; + height:71px; + font-size:12pt; + width:77px; + background-repeat: no-repeat; + text-align:center; + line-height:20px; +} + +.bb-bb10-action-bar-back-button-hires +{ + display:table-cell; + float: left; + height:138px; + font-size:20pt; + width:154px; + background-repeat: no-repeat; + text-align:center; + line-height:12px; +} + +.bb-bb10-action-bar-back-text-hires +{ + position:relative; + height: 25px; + top: 61px; +} + +.bb-bb10-action-bar-back-text-lowres +{ + position:relative; + height: 20px; + top: 25px; +} + +.bb-bb10-action-bar-back-button-hires-dark +{ + color: white; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAACMCAYAAAC9O8OPAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOkU2OEE0M0M0MEIyMDY4MTE4QTZEQTMxMDI4RjkzOTUzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJFMDgwNDg0NkEyNzExRTE4RTY1RjBCM0Y0RjJDMUM1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJFMDgwNDgzNkEyNzExRTE4RTY1RjBCM0Y0RjJDMUM1IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgTWFjaW50b3NoIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ODA0RUU5NzA0OTIwNjgxMTkxMDk5QkRCNjQ1RDNDMDUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RTY4QTQzQzQwQjIwNjgxMThBNkRBMzEwMjhGOTM5NTMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz44YIFtAAAAS0lEQVQoU2NQVlb+z8TGxsbAxAAEBIj///8TUoLTFNL1kq6DCC8QoYRYe6mojlijqOh6IoxCKCHdfaTrQLMNbADCFAQXzPrz5w8DAKahNVWLIFVMAAAAAElFTkSuQmCC"); + background-repeat: repeat-x; +} + +.bb-bb10-action-bar-back-button-lowres-dark +{ + color: white; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABICAYAAAA3Qp8tAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAAGYktHRAD/AP8A/6C9p5MAAAAHdElNRQfcBR4VFTTd4qoSAAAAUklEQVQoU5VQWwrAMAjT3sa7emQ1G9nAUlbo/Ag+EiOKmWHIHRNUlQxVnXtNAfBzsKzfll++B73tQYvRKY+y9qWsv8GyVzEjmZCZL0TEwxN3xwVauD1ZErr0eQAAAABJRU5ErkJggg=="); + background-repeat: repeat-x; +} + +.bb-bb10-action-bar-back-button-hires-light +{ + color: #242424; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAACMCAYAAAC9O8OPAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOkU2OEE0M0M0MEIyMDY4MTE4QTZEQTMxMDI4RjkzOTUzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjAyMzA3QUE0OEUwMjExRTFCMEQ5RjZCMkY1Q0IyM0Y3IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjAyMzA3QUEzOEUwMjExRTFCMEQ5RjZCMkY1Q0IyM0Y3IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgTWFjaW50b3NoIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDMyQTNBQTcwOTIwNjgxMUE3QkFFOUY1QzEwM0Q0QzgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RTY4QTQzQzQwQjIwNjgxMThBNkRBMzEwMjhGOTM5NTMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5KJXU5AAAAVElEQVQoU2N4/Pjxf6Z///4xMDEAARLx//9/DDE0JWAuEerwK8EpS7o20o0iwvUIT2NTTKwYzrCiiQHExgx+vxEhS3ockZnMED76+vUrA9Pbt28ZADbdVRdHaEcxAAAAAElFTkSuQmCC"); + background-repeat: repeat-x; +} + +.bb-bb10-action-bar-back-button-lowres-light +{ + color: #242424; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABICAYAAAA3Qp8tAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAAGYktHRAD/AP8A/6C9p5MAAAAHdElNRQfcBR4UKAHge0y4AAAAWklEQVQoU41PQQ4AMQSceor/P8ozmgp20x5spJJ1EIwZAyISNMYAuTtOhTdO+jHLlYj4crMtQGFstNy9cVuV1Gu9tED76o2RTou/vbxnZgZSVdBaCzTnBDEzHiQLYQcUMW/NAAAAAElFTkSuQmCC"); + background-repeat: repeat-x; +} + +.bb-bb10-action-bar-back-chevron-hires-dark +{ + position:relative; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAArCAYAAACJrvP4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowQTgwMTE3NDA3MjA2ODExOEE2REEzMTAyOEY5Mzk1MyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozRTJDQzVDNThDOTExMUUxQTU0RjkzMUFGNjYxM0I1NiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozRTJDQzVDNDhDOTExMUUxQTU0RjkzMUFGNjYxM0I1NiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjkwMDczRkFEMUEyMDY4MTFCODQwQkE3QkZFQzg0RDU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjBBODAxMTc0MDcyMDY4MTE4QTZEQTMxMDI4RjkzOTUzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+7s4t6wAAAedJREFUeNq8mM1LAkEYhzeLoGsQdBA/g056rHtQeBAFT56CULoWHbr3H3jd2IMQRIcuQYEgdO8U+LUKQgftFASdBGGx34gbi6ztvO+MDvwY1lEfn1l3Z95dGwwGhkoLh8PS7w0ZK2wbOr9sOBzuo6sgGcRBXpBL2H9MzSaTiaESt+F0HOH4HcnMxtaRHPKGsW1t0yhA6J6RLZ/hHeRGCywA5LaD6TnzTgWjyYBE+1E1kwWJdqsCo4CqkUjkkTuNFNA9UuZe1FTQaTQadf4uaoIZBXSHnMViMYdzuzpWBcmaCdATBRSPxx3OjVgbKMiMDEokEg5niaGAqjKgRWZUUDmZTDoy/7LQqkDzZmTQbIEkbwsyywa5ZmIVfZAE9bkgd1vwjRSRscQ2YA8x/bYFlGmsIXlkJPGZEmJxzdxfWUMKyEjCsIRYXDPDY1hYlqHfVo5k2O12La4Zy1AW+N8mlWRo27bFNWMZAmhyzTiG551Ox1StYijX4UIgpbCoI3lZw3a7barWZ3WK4TyQUzKRDFutVkW18qQYXgCYUy0sKMArHZWnmNKsxJTuaikGU6nUK7psgGFPW5kbABwj11oLeAHE8SHS9Iz3kROM9bQ/mkin003RNRoNUbRv4vhzac9BPNAvv9d/BRgA+5QYPmPFbOcAAAAASUVORK5CYII="); + width:27px; + height:43px; + margin: 0px auto 0px auto; + top: 31px; +} + +.bb-bb10-action-bar-back-chevron-lowres-dark +{ + position:relative; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAWCAYAAADwza0nAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AUeFRkWpDek+gAAAaFJREFUOMuN1MmKE1EUgOH/VBpssR1QO7oKqeFCRrLwCcStLyBCLxqC+kaNRgQV9C104QMklZFUagjZOKG2NO4q141pO9W3kj6by+Xw1blDnQsXiMVicW4u29B8PgfYFZFPwD3gTalUOpBtyLKsy1rrH8AlOC30cGcT1FpfSdP0N2BlUn+sPJQkyVXgxIDelcvlD8alxnF8HfhlSL23bftRkiQUspkoim4CPwF9Zk8Abx3HeRzHMbZtr8MwDG8D3w3oteu6B1EU4TgOwH84m832gW9n0Gp86XneYRiGuK57+qUCQBAEReCrAb1QSrWDIMDzvLUtFabT6V3gc2Z5IiJHSqmnQRCglDp3Sjtaa+N1LJfLFDAiVhUmk8mdTNXVeFSpVJ7lQoDxeFwEvhjw82q1+iQXAoxGo/3MIa2iU6vV2rkQYDgc3sq5y069Xm/nQoDBYHDj39+TjVeNRuMwFwL0+/1rwLEh1Wk2m+2N/ej7/p6IHBs65MHGfhSRkzRN90Qk28jFrU+H7/sAu1rrIeAAH1ut1v2LvFX0er21ebfb5S9f1JZl0vzYUgAAAABJRU5ErkJggg=="); + width:14px; + height:22px; + margin: 0px auto 0px auto; + top: 15px; +} + +.bb-bb10-action-bar-back-chevron-hires-light +{ + position:relative; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAArCAYAAACJrvP4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowQTgwMTE3NDA3MjA2ODExOEE2REEzMTAyOEY5Mzk1MyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFQUVBRUY4QThDOUYxMUUxQTU0RjkzMUFGNjYxM0I1NiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1QzkzNTZFMjhDOUUxMUUxQTU0RjkzMUFGNjYxM0I1NiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFFRjMzQUIxMzMyMDY4MTFCODQwQkE3QkZFQzg0RDU1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjBBODAxMTc0MDcyMDY4MTE4QTZEQTMxMDI4RjkzOTUzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WvSVzQAAAf9JREFUeNq8mM1LAkEYxu2DoGsQ9AcE3Tom+E1QeJBVOnUKwvBadOjef+B1Yw9CEB0iDHd1VfCqe+rgSRA6dQqCToIw2DPiholu886MvfAwzM6uP5+ZnY93V7LZbEglyuWy8L2roX+MdZ0/lsvl9lAUoTTEIAe6gvu3sbPRaBRSkR8YjkPUX6H0pG0NMiAPbVvaupGDUNjQ5pzmbeh23I3T/04mDMMIAvlxoMOZCIjHl6ozURCPOxVnFFCpUqk8yTqjgB6gC9lJTQWd2bbNfiY1wRkFdA+dO47Dfq0ggrAj6IUCqlarTGZt1AIScUYG1Wo1tnAhDoCRQa7rssBVfwGMAirx17terzOZ/WwpoHnOyKBGo8FE5840jAyabJAhKozvrM/LBPljxnfRR0FQXxbkHws+oVNoKHAM2IXMeccCURh/yIWy0EAAmIcsFZgPPKECZWFSQOoLMhsudAINBJ7Pp1IpS9aZlMNkMmmpwMjARCJhqcDIwHg8bqomFpQxLAQBRc/6lHlYiMVipgqMq0kBRqNRUzU/a/I8QrRLZ4EyKRPJYSQSKapmnhSHlwAaqskgxeG1jpSJO8wIONzRkua22+0WyswfDnva0txOp9MKcDiEbrQm8ByIehjqTrX3oWO09bR/mvA8r4tiPxwO86R9A/X3pX0HmYJ+zLv+LcAAXroN3ub9Q0IAAAAASUVORK5CYII="); + width:27px; + height:43px; + margin: 0px auto 0px auto; + top: 31px; +} + +.bb-bb10-action-bar-back-chevron-lowres-light +{ + position:relative; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAWCAYAAADwza0nAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AUeFCsYrz23uwAAAaJJREFUOMuNlFGLElEUx39HgjbarajWet6vECijKIajozOizz1UEFnsN1pqI6igfRYcZpjBFEXB9z5DtbVbu0T0EqeHWnH1ju6By+Xw53fv/xw4By4QrVZrKZd1ULPZRFU3RGQE3APedjqdRyvBRqMBcEVEjoHLMPuocWkVqKpXReRUVVML0q9E0PO8LeBUVRel991u94PRquu614EfBunA9/0HnuctN6der99U1SNA52oCeBcEwUPXdfF9/zzoOM5t4KsBehOG4eNarUYQBDAvVqvVbVU9nIPO7ldRFD11HIcwDGcvCYBt22ngiwF6Gcfxs0qlQhRF50qScrl8V1U/Gezt9Xq9Xdu2ieN4qUspQ7vP4g9ghGZWS6XSHeCzwepev9/fTQQBisViWkRMdb4YDAbPE0GAQqGwDRwa6t0fDoftRBAgn8/fEpFvJng0GrUTQYBcLncD+G6QXo/H4yeJIIBlWdeAE4O0P5lM2ivn0bKsTVU9ARbHqpxaM48/gU1V/a3/gv8nvXZ1ZLNZgA1V/QjsAP3pdHr/IruKTCazlP8Fr3mntRE67BIAAAAASUVORK5CYII="); + width:14px; + height:22px; + margin: 0px auto 0px auto; + top: 15px; +} + +.bb-bb10-action-bar-back-slash-hires-dark +{ + position:relative; + display:table-cell; + float: left; + background-image: url("data:image/png;base64,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"); + background-position: -1px -1px; + width:33px; + height: 138px; +} + +.bb-bb10-action-bar-back-slash-lowres-dark +{ + position:relative; + display:table-cell; + float: left; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAABJCAYAAAAwh3ZjAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AUeFRU03eKqEgAABF5JREFUWMOlWEtoJFUUPa+qppNM0p/qSieNExwSY0s+JLEhRMEwiMgsEkUHFy4EF64EGUaE7FyNoO4CQkRdDDKrrBRJSAi0iWQjggvFLMyIGzHiiBnD5GOn33vXzX2hJlNVXa98UIu6dTk599x3Px0xNDQ0A+AKLM7x8TGCIPhzZ2fn83q9LoQQz3gdHR1XAHxoA3RycgKl1LsAIIR4GsCzDiyP1hpSSiilvgUAInoBwGkmIKUU+vr67rLpUQDaGoiIAADT09N3OLRxAHC01kj7EBFarRYKhQIWFxdPmOGE1hqeEMKKkZQSvu9/BwD1et0zduvQpJSklFri1xdNqE4GoYXW+ifW65qJKAsQqtXqXyx0hZiSNZDjOJibm/udGT0hmJJnYkxzWq0WSqUSFhYWFJsuZ9JISol8Pv8lAExNTZXD3xybi6iUwunp6RLr82omICM0gF9nZ2dNjWVnVK1W721vb0MI0Rv+nlpsKSVyuRwajca+EAJENJSJEZeGNheQiOzENoyllOjp6VkCgMnJycfO12hbIA4DUkpqNpufse2N835emrCUUtBaCwB/MMurAAiAsNLI9KP+/v4jBiqEQVJrpLVGV1cXGo3GMYf2yHk/J23GgiDYD4FftNIonLF8Pv8BZ+ypKF8nTcaUUnR4eHibzW9ZA4WEFq7r3mfTDEWUg2ORsSaHmxcRE8NJ0+zz+Tw2NjYkhxtEhtZulkkpRblc3gkx9KL8PCNqUsYKhcJNAJiYmHg5jrmTlDEzXQ8ODr5i8zuxQEmTlmmT67pNNj3ONfbQ8bTWsYy4WLXv+8TAnedr7AwojpFpHcViEZubm8TgeWuNmIEIguBrABgfH++JY9MWSEqJYrF4k9m8nuQbq5G5H1tbW9u1Wg1a6xtJQI4QAlEPp14CwO7uLoQQVSEExfk7SakH0AyZLiRqRESIenj8nK6srJgsdsT5ElE0IwNULpe/mJ+fx9jY2OV2xZ0YWqVSeZ9f38wExMsC1tfXf0nqim17Nqf+XwAYHR0FEXVYM+LxQ47j3A/5OFlDE77vH/1vIJ5jt5jhk2lm30P3yGxmg4ODH7HP9aT7E3uPzAq8vLx8j02vpWIUBURE/wDAyMhI6kXMiRCaPM8zcz6XCYhLQ5TL5b8zA5nxo5RCb2/vp2yetQYyPQgAVldXb7H57UyhmYyVSiXzW+O5zEBEtMcZu2DzO+WBni2lpFwud5dBe2yAzno2Awnf938zMyypR0f2bJMx3oM+5j9yNalHR2pkMuY4Dra2ttb42w2r0MJd0XVdFfo2ai22WRiUUncAoFarXYwbnLFAoc0VnZ2de0nrXerQgiD4mV/tgcINbWBg4BO2v2QNZDLmeR7W1tZ+MF0xU2haa7iuexSy+7ZAnhFaSvkjZ6xs80+FB/ZsKSV1d3fvse0SMhzHzLEgCL7ncrkUt7m2ZUREGB4evs136BWbGjtrjJVKZUYp9fz+/v57rNF1AJ2WON/8B8Gd+bGRhVqpAAAAAElFTkSuQmCC"); + background-position: -1px -1px; + width:16px; + height: 71px; +} + +.bb-bb10-action-bar-back-slash-hires-light +{ + position:relative; + display:table-cell; + float: left; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAACOCAYAAAC7W7FpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpFNjhBNDNDNDBCMjA2ODExOEE2REEzMTAyOEY5Mzk1MyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMjMwN0FBNDhFMDIxMUUxQjBEOUY2QjJGNUNCMjNGNyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMjMwN0FBMzhFMDIxMUUxQjBEOUY2QjJGNUNCMjNGNyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzMkEzQUE3MDkyMDY4MTFBN0JBRTlGNUMxMDNENEM4IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU2OEE0M0M0MEIyMDY4MTE4QTZEQTMxMDI4RjkzOTUzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SiV1OQAABoVJREFUeNrMnGtPG0cUhtfLVRYYjAWkSFD40oaqFiogC4vQf9J/11/SViREolKrREo+VFx8wRjbXIQxV9Nz0M7qeGyvZ3fnHDKSs86O2X05856ZZ2bWJJ6fn51vpQzjP8VikV1Rs9l0zs7OnIeHh99XV1d/m5+ffzkPwfgRDl9c1028iGm326xCMPqPj48vLyh/ptNpv+7p6WkDjyDGcSXCj78sRARv7ExMTHwcHR2l1dvqjZgYFILHVCr1VaveEReDkUHrgD9b6jw0WwIOP3UYmDujMCqeXz4tLi5SL6XgMCQWGfxFMTIoBkz6fnZ2lla/pf8REYNCUNDw8PBfk5OTtDonKkYz799DQ0M9zSsWGZXWIOZYq34nKgZF4CuRSFShPKnzIBDv/Z14M2FkQMz+wsICrXqjf9aVyCRl3kwmQ6uzPQdKrn4Gmwejgtk0Pj6+m0wmqdBt8ciotAbz/gtN1TeT2MWozg7fHhwcNLTq3KuIgQj9t7Ky4p+/v78fg0NSXAz6Bjq6vbm5OVq13OvzLqdfVB8DY1IHUEHZEBWjmmgQUImktkprFAWD41ctajuvEhm4cbNcLvtAdXd31wFUomLALx1ABaUDqNjFqGHAM28gUImIUeaFtA4EKhExpkDFnk0oBHrZnkAF93onGhnV2UGp1mo1H6hub2+7gIpdDMmkgUDFKoZmkglQsYqhwwAMAR1A1W8YYDOwYl5vGOgAqn7DAGtkMCpw4/bR0dFAoGIX403yO4Cq1Wr1BCqRyEAmGQEVmxgKVNDrGgEVmxiVSXg0BSq2bFJAhUdToGKPDK5QVSoVH6hubm76AhWrGG+SbwxULGLoChWY1xioWDxDl1f1FSq4fs7kGq7ttPaGAWOgYhFD03pqaipwhYpdDFlerTYaDR+oms1mIFCxNVMUoLJuYH02QIEK6rKm13Ft9i9RgMq6GLW8arpCJRIZfFsoFEIBFYsYL5M6gOr6+nogUFk3sEpraJ4OoILrLoe5jmvDL2FXqNjE0KkJDAOhgcq6GG82ELjlZ+wZS7OBZrVa9YHq6urKCKhYPONoW36mQGVNjDYbiARUXGKMV6jYxJCNikhAZa3To1OTMCtULJGhW36Xl5c+UMF7Y6Cy2kxeWkcGKitiKICHXaGy7hk1OOLRZMuPPTJkNhAZqKyIIRsV7VKpFBmorInxhoEOoLq4uAgFVNY8422e79FhICxQxY6MvkI1PT0dGahii6FPfkAWfYRsigxUVsSQTIoFVNYig0B1dnbmA9X5+XlooIptYPLkx6elpSXqpdBAFSsyyrwmz1CJicHoIFCBZ2J3dlbERF2hsuYZClT6ClUUoIoVGTKvrmazWR+o6vV6JKCKLcabyu5rVW+cmMWN4hc1G9Cqs3HFhPKMaiJ8jY2N7WpCt0UjQ+fVCFQvF3BdK5kUSYwCqnw+bwWoYnlGrVDR87VaLTJQRRZDhoE9rWrZsVCMDayvUGl1GzbEuGGbSAGVVr0tKkY1kW2giiSGAtXm5qYPVKenp7GAKpJnKFBpzRcLqEJHRjPve636rWOphBbTY0zKvYoYPCJQcZjXWAzdwoEJW6QtP2sGVnSHQLW2tuYDVaVSiQ1UkSKjtvxsA1UoMfQZKg6gCi1G9bwjIyO7HMOAsRg6yVdAxZFJvoFNgQoic6FFbV28mbw+5jCXy/lfnjs5OcGNpZSoGDVag3l1bPjesVxc00zSgQrKL7bFBHZ62pbfB5tT2dCRoUA1MzPzhTOTjJrJy6Q7AKobzg5voBgyDHym58vl8qQtoDISMwCofnAYykAx3grVH1xAZZRNNJNSqdS+JnRHNDJ0TEqn04dcQGUsxsukxvr6ug9UpVIJf2bxVSIDftGBas5hKm7QMOCltQ5UP3OJ6Wlgat4eK1R50cgQv+Bs4B+t+tfXEoNAVZfoYwI9o4Bqa2vLB6pisWgdqAaKkQSqQDH0+7ISQBWYTdq3/NiBKjAyFKgymQw7UA1sJs+8dzAbYAeqQDH9gKpQKLAAVV8x+rf8JIAqUIwyL4gRAapAMeQBwH1J83altsokfMGYdCiZ1l2RIVt+DZia+EB1fHzMBlSBYqSBqqcYLZPEgKqvGAXg+FC69rm8qBhthUoMqPqKUUAFkalL9zFdzeRl0mE+n2+TTGIFqp5iyJafKFB1iaFAhc9QSQJVlxj861ytVuslOslk8oPEVLbvcFCv1/39AYkVqn4l8S39obb/BRgAi2smL0SuMN8AAAAASUVORK5CYII="); + background-position: -1px -1px; + width:33px; + height: 138px; +} + +.bb-bb10-action-bar-back-slash-lowres-light +{ + position:relative; + display:table-cell; + float: left; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAABJCAYAAAAwh3ZjAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AUeFCgB4HtMuAAABGxJREFUWMOdWE1oXFUU/s77mc6UieA0BqMkBUWEIIKLUE2UYiSZVUQdFy4CLlwJpbS4cOWqqy5EcePC+lNxIy4E3QkuijvrxopdFjP5oemMNgmZzLv/bs4NL5N5M+/mwSzeufd97zvfud879w5tbGxcAHARAZcQAu12e2dpaemmc46stS8nxpiLAK6HAgG4BgBSypcAvJoQEUIvIQSUUr8BABGtAthLrLVBIESEfr8PADsAYK2dBfBnREQI+VlrIaVEvV6/x8DPERGi0LSstVBKYXFx8YBDzwMIB9Jag4hus1aJjwdpREQQQrg4jr9kdq8fAYVWTQhBQojbfPuWf0FymtJHUfQvAzwGwAVrZK2FEAIzMzPbHHoWAAVrpJSC1hpzc3OKgc+fSiNjDKIo+hkADg8PG/lng1KTUiJN0y9Yn3fyY6VT89bo9Xp32+02rLWr+fHSFnHOIcsypGm6Ozs7CwCTfgwAEudcaX2UUpifn/+PQ0/ln41CrGGM0Y1GwwGAc65xLLUQoDiObwDAwcHB04PjpVMTQrhqtXqDb99jVuUZ+clZltH+/n6bw01vjSBG1lpkWYZKpdJj8Ee8NYI0MsZAa42VlZVDDj0xOCcqK7S19kHOEmdPiF1mZbM1PgOAvb29F4c9M9a0zjlfsW/YKpeGzSslthCCer3eQwa+wBWj0kC+/QghEMexZKCJQZBSqWmtndaaVldXNYOfG5paidITgDu5NZUEAznnoJRCmqafAMDu7u6bzjkMy2Ks2P1+H/V6/QcG/mDQY2MZ5Tzm+rxrcM49Q0RuqNijGPHHzNZqNT+p6pwbWp1oXMWMMWg2mx5oomjuSEZaawLwKwB0u916EZuRjJxzkFKiWq1+zOvn3VHso3F9vtls/tLtdgHgyqi5he7n9qMBYHJyEp1O5/FhHhtrEa6YzPkuLQIpZEREfsMgctY4MzK1Ikbcfn4EgE6nc36cJws1yrIMtVrtU2bz/ligYYx86ZvN5l8cuuRTDlqQ/HnNAGBnZwcAzhSZdeQ6MsY4rfVBbs7YbhMVdA2y1u6HAJ0Qm4ggpUQcx9+x0C+U6X0nxPZCT01Nfc7Al0sBDQrIQmN5efk+36+VAYoKDi27ALC9vV16/xQNMuKKPeS0KmWBkiGbcrLWPmB25YEGxVZKIUmSm8zoldJAg+XPsgwLCwtfM6OrQan5fbQv/fT0dMbjr5U9YkR+ot8waK3vA8DW1lYack45So0/Zk5r7U/P9ZBzyjGxuWL/+B5W1FXHrmwpJSqVyld+CzyqjxWubG+NVqv1E4euhKQWeRDewujc2FyQRn6/w4eWewDQbrfPlj1anGAkpYRSaovj50JP30emVUqBiO4ycDhQnlGlUvmW42+EAiX583yr1fqd45eDNfIVM8b0cvFHg1MjIhhjYIz5GwDW19cbOMUVsdBOa73JsSdPBcTth6Io+iMH5IKBhBDIsgwTExPfcwXfLmvUY1Xb3Ny8pbX+aG1tzf9ndgfAh4E4t/4HD4vQ4lfd1QsAAAAASUVORK5CYII="); + background-position: -1px -1px; + width:16px; + height: 71px; +} + +.bb-bb10-action-bar-tab-overflow-hires-dark +{ + background-repeat: no-repeat; + background-position: center center; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFEAAABRCAYAAACqj0o2AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AYBDiM67O9n6AAAAmxJREFUeNrt28+K2kAABvBvJn8IRmmMIIUgHoU+Qz3uA3TpgxT2FbwW+hiFHvoABS8ufQTv4i4URAmoJJtJZvbQHnrpIQmxZPg+yNFAfkwymfmMMMaAaRdJAiISkYgMEYlIRCIyRCQiEYnIEJGIRCQiQ0QiEpGIDBGJSEQiMkQkIhEZIhKRiERk/o7b9gRKqV4DeJ73f0aiUipRSn1VSj0BMH0+lFJGKfX053qSJh6i7j9lq6paaK1/AogtvDNPUsql4zjbThGLovgG4KPFj7jvvu/fd42YAnhjMeLF9/1RpxOLEAJaa3tfV2T9aaL2L1zXXVv9uuK6PzqfWAC8M8ZsyrKMtdaw4RMOIQSklHBd9ySEWALYdo0IAAmALwDeA3hrwQD8BeARwCcAz7cYiQyXfUQkIhEZIhKRiERkiEjE3qR1x5Kmaa8BoihqfY5Ga+c0TRNjzGf83oBILBhMzwAehRAPURR1vwFxuVwWRVFY27H4vr8cDofbTm/noihWxhgbAQEgLopiBeC+U0RjzJ3l22d3nU8snufh5eXFWkHf97t/xQnDcC2EsBJQCIEwDG/TsWitN+fzOVZKWdH8SSnheR5Go9FJSsmOpWHYsXDZR0SGiEQkIhEZIhKRiERk/pXWHctut+s1wHw+b32ORmvn/X6faK2t61iklA+z2az7DYjD4bC4Xq/WdiyDwWA5nU5rbYXVfiZmWbayFBAA4jzPV50/E23vWIwxtTuW2iMxCAKrZ9om11d7JI7H43WWZR9s/CBISonxeHybjqUsy83xeIzzPEdVVb3HcxwHQRBgMpmcXNdlx9IwrTqWVyY3JzOg14TmAAAAAElFTkSuQmCC"); +} + +.bb-bb10-action-bar-tab-overflow-lowres-dark +{ + background-repeat: no-repeat; + background-position: center center; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AYBFCMy84XJfAAAAQRJREFUWMPt1TFqhEAUxvHvc8YRLUSmsAmC97BNsd1eIOSMW66QE6RIrrDYi3VE5qVJlWRDBuIQ2PcHq2Hg8Qb8AZqmaZqmadotx2sH67oWAB4AdDvP8Abg7Jx7jR3wBOCYYksispEcnHPPn8/sD5cOCV/SArgH8GXA7NoNY8z4MejuH8nNWvsU9cQiUgB4BHC38/ZWAGeSL/pL0LS/lGRZlkJEkknivY+TZJ7npJJkWTZ47+MkEZFkkpCMk6SqqpFkEknyPN/qulZJNO22JJmmqQghJJOk7/s4SS6Xy0lEjokWtVlrh67rfi8JyUMI4f9K0jTNaIzZXREAKMtya9v2W0neAU2/NK9h/6pNAAAAAElFTkSuQmCC"); +} + +.bb-bb10-action-bar-tab-overflow-hires-light +{ + background-repeat: no-repeat; + background-position: center center; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFEAAABRCAYAAACqj0o2AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AYBFBcYkxTzXQAAAcxJREFUeNrtmzFqw0AQRb9DTpAq4AOkcysQCcGF3Bk2OUkgrUu3gRwkxYI6C+QmCHQB38DgylfYFFER0tnaVazJ+wcQzOPvzsyOZhJCEOqnKxAAEYhAREAEIhCBiIAIRCACEQERiEAEIgIiEIEIRAREIAIRiAiIQAQiAiIQL0XXfT/gnBs1AO89TrwETc75P9E5N5X0Jule0tQAh72kT0mv3vt9cojOuTtJjaQbg6Y6Snrw3u+S3okhhLVRgOriWkt6Tn0nFsavuJPjI7H8RYkTQqglPRlmUg3hxFV3AVvUsYsvfYmzXC6nkt67EufWALxDV+K8lGW5HwTiL6CjpleWJR2Lid6ZjSwgRhHHGSfiRJyIE3EiTgQixxlF650Xi4XZGctms0n/AFEUhfkZS1VVu9TH+T/MWNImlhACMxYSywWUOMxY4kBcSXo0nFhWyY9zXdc7STNJH/qeTVjQoYtn1sWXvk78qfl8Pmp62+2Wto+2jwcInAhEjjNOxIkIJ+JEnAhEIEbvnfM8NztjaZom/Ywlz3PzM5amadhj6SH2WCLp5PjOcSI1TQQn1saZsMcSIbEMs8eSZZnZPZa2bYffY8mybNT02rbt/Y0vc129t8+tkSwAAAAASUVORK5CYII="); +} + +.bb-bb10-action-bar-tab-overflow-lowres-light +{ + background-repeat: no-repeat; + background-position: center center; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AYBFCgZvM3p9wAAAPFJREFUWMPtl7GKwkAURU9U2G8Q5wv2D9KnFFJYi11+ycXWXghYptguzf7Fxk+wMEWuTdzCdQSFGYW8A1M9Zri8Ye6dB4ZhGIZhGMaQSXyFPM/nwBpwgTWcgD2wKsvyeF2c+HZJ2gDTCE36ABZABXxdF0fPdDcmozsdLCQdJBF4tZJ2krb24gxjUEmSZdkcWCdJEjRJJP0lSVVVx0d8cAO40D54SRJJy1s6Jve62x/wUrwCu64r+s/CLLCGtr9iSxLDGFaSpGkafSap6/pfkox9u5xz3xE88OLFn8Bv0zQ/jwxN7z2TAAVwiKChBXa+JDkDnZrciSa+gysAAAAASUVORK5CYII="); +} + +.bb-bb10-action-bar-tab-overflow-highlight-hires +{ + background-repeat: no-repeat; + background-position: -56px center; + height: 86px; + width: 16px; + margin-top: -117px; + display:none; +} + +.bb-bb10-action-bar-tab-overflow-highlight-lowres +{ + background-repeat: no-repeat; + background-position: -28px center; + height: 43px; + width: 8px; + margin-top: -63px; + display:none; +} + +.bb-bb10-action-bar-overflow-button-lowres-dark +{ + background-repeat: no-repeat; + background-position: center center; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9wEEBMlIi9CC4EAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAABFklEQVRYw+3VMYqDQBQG4Mdil94mhsDeROxCPEBALBPBXrCw39pSECysNjdIYSoJhBwhjZUOgsVYavy32hukeOy+7wDDz8y89xMJIYQQf9rpdMJ+vwfrkPf7HQAwDAOCIOAZNo5jAMA0TQCAqqreGvTjXQcppQgAGYZBRERN0/B9+iRJ8Hg8UJYlZFqF+C9s2z6yD1kUBZRSuN1ucF2X54oKwxDzPENrDQA4n888m+nXsiz8/2ee5+i6DnVdY7fbSTsJIbiIogjX6xVZlvFdTYfDAW3bou97aK2Rpim/ZrIs68s0TVqtVjSOI71eL1qv17Tdbj9Z3urlcsE4jng+n/B9n3czeZ4Hx3G+2Q/UZrM5yloRgrEfIAWSJM4nw28AAAAASUVORK5CYII="); +} + +.bb-bb10-action-bar-overflow-button-hires-dark +{ + background-repeat: no-repeat; + background-position: center center; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9wEExcbIeIyRnQAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAC+klEQVR42u3ZQUgUURwG8G9235udZWdnxw1hEdFDVmYkZQftEGKlQhch7ZaiFXT30sWzWEFR58oIvXTw5tKlbgaKQl4UQat1MVxjjaCdnYXZeR2iBRG3PU71/WDufz4evHn/DyAiIiIiIiIiIiIior+AFrSB+vv6VevpVti2jVKphGw2i9nZWY0B1mDw+qDqutiFWCwGKSV834frush8zuDR40eBDFEEZZDuq93LZ86eQUNDA0zTrARYLBahhTTcHLmpZl7NaAzwCHWxugstx1tQX1+PeDx+IEAhBHK7OfAEVhtECiQSCdi2DdM0IYSAUgqRSATlchmxWCyQAYaCMkjRKeLb/jcYhgEpJcLhMMLhMKSU8DwPe3t7DLCa+fS8tryyDNd1oWla5fN9Hzs7O1j9sHqXt3ANhoeH1cDAAJqbmvGj8AMLCwuYmJgI7G8MERERERER0f8mcI/03t7e/fb29rpkMgnXdfHx00fMzrATqcngjUHVfakb8XgcQohKJ7K5tYmHDx6yE6mm53LPVMf5DjQ2NsI0Tei6Dt/34TgONE3D2NiYmp6eZidylLgdv3fq5CmkUqkDnYjjOBBC4MvuF/AEVhENRWFZ1qFORNf1X52IwU6kqu/Od+T38zAMA7quQwgBIQQikQg8z0Pua44BVvMm/UZber90qBMpl8vYzmxjZWklkJ1I4IyMjKh0Oq3W19fV4uKimro/pZgKERERERERUXAEbsN7rf+aOtdxDsljSZTcErY2t/Di5Qt2IrUYGhpSfX19sCwLUkoopVAoFLCxsYHJyUl2ItX0XOl53dnZiaampkMr/VAohNt3bqvnz56zEzlKwkrcaGtrQyqVQiKROBCglBIndk6AJ7AKKSVs20YymYRlWZVa8/dKPxqNBjLAwKz0C04B+Xwe0Wi00olIKWEYBjzPw25ul1f+n4yPj6tMJqMcx1Gu66pisajy+byam5vjWr9Wo7dG1dt3b1U2m1Vra2vqydMnDI+IiIiIiIiI/h0/AaEPHrjW6Tb1AAAAAElFTkSuQmCC"); +} + +.bb-bb10-action-bar-overflow-button-lowres-light +{ + background-repeat: no-repeat; + background-position: center center; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9wEEBYiHdCucpAAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAABMElEQVRYw+3XMYqDUBAG4GEVJILFkiZFUgSbQMgBBJvAFnapA7GSVGKbC6Sz9RqPFNqIHiF2SSHYpE6hpIqF+u8lLN5u5jvA8MPMvOERMcYYY/9amqa43++QOqTrulitVrBtG1mWjRr2a6xCQghcr1eaTqdU1zXFcUxSBp3NZmQYBr1eL+r7npbLpbytF0LA8zyEYQjeVsY+RVmW8m/86XTCZrPBbrdDURRyBr5cLlgsFliv15jP5wiCQM4TqqoqKYpCXdfRMAykaZq8rT+fz7AsC4fDAbfbTe5ZfTweP/ykMPYpoijCdruF7/uoqqoes7Y6VqEkSXA8HgkAFUVBk8nkW8rL1DQNtW1Luq6Toij0fD7l/NxZltU4jkPv95tM06T9fi/3nOZ5Lv/5ZIz9Ab8IP3sHbvNNngAAAABJRU5ErkJggg=="); +} + +.bb-bb10-action-bar-overflow-button-hires-light +{ + background-repeat: no-repeat; + background-position: center center; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9wEFxQNFCU9Ho4AAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAABqUlEQVR42u3b223bQBBG4ZmdFfXsRnhBakkNKSEtpBa3oisbSQPkcvMgLCHKDK3kaWScDxBgQC/EDy8I8IgiAAAAAAAAAADgBai3C2qaJpuZqN4uLaUk1+tVGfDJ8Xa73TxekVKS8/nscsTg5ULqpj7GGCWE8OFjZtJ2bfY4YPRzFPSbmUkIYfEfmHO+jRhMGHBrQNXF51W4OcI5Z5mmaXXQ8j0Dbuj7XsdxnMd7vImM4/iDu/ATuq7LVVVJCEFyzjIMg5xOp9c50wAAAAAAfHEem8hvM3ujifzPeG2Tq111u7C754BpSnI+0UQ21XX9K1qcG8iiiQSTrutoIptHQfVniUqPTUREJIQgDLg94GoTKX977STumsjfhrrvJQy4ojSRtXhEE/kHpYmY2dxEjscjTQQAAAAAACdcvicSYxRVnR9xXS4Xmsgz2rad3xNZNJGU3P5K1VMTeS+P9D80EaOJfH4UVL/fD1fknEVV3T6RdtVEynhrj/VpIp+4f0/kMTA9vkPCgCv6vtdhGFa/m6bJ7U3EZRPZ7/eLJnI4HGgiAAAAAADga/gD0hGqxramvjAAAAAASUVORK5CYII="); +} + +/* ================================================= + BB10 Tab Overflow Menu +=================================================*/ +.bb-bb10-tab-overflow-menu-overlay +{ + z-index: 1000; + position: fixed; + top: 0px; + right:0px; + bottom:0px; + left:0px; + display:none; + background-color:black; + opacity:0.25; +} + +.bb-bb10-tab-overflow-menu +{ + position:absolute; + top: 0px; + bottom: 0px; + width: 0px; + left: 0px; + z-index:1001; + white-space:nowrap; + overflow-y : scroll; + overflow-x : hidden; + -webkit-overflow-scrolling : -blackberry-touch; +} + +.bb-bb10-tab-overflow-menu-dark +{ + background-color: #121212; +} + +.bb-bb10-tab-overflow-menu-light +{ + background-color: #F9F9F9; +} + +.bb-bb10-tab-overflow-menu-item-lowres +{ + padding-left: 5px; + vertical-align: center; + font-size:20pt; +} + +.bb-bb10-tab-overflow-menu-item-single-lowres { + padding-top: 7px; + padding-bottom: 3px; + height: 52px; + line-height: 52px; +} + +.bb-bb10-tab-overflow-menu-item-double-lowres { + padding-top: 5px; + padding-bottom: 0px; + height: 27px; + line-height: 27px; +} + +.bb-bb10-tab-overflow-menu-item-hires +{ + vertical-align: center; + font-size:39pt; + padding-left: 10px; +} + +.bb-bb10-tab-overflow-menu-item-inner-lowres +{ + padding-left: 5px; +} + +.bb-bb10-tab-overflow-menu-item-lowres .tab-accent-text +{ + padding-left: 5px; + font-size: 16pt; + height: 25px; + color:#606060; +} + +.bb-bb10-tab-overflow-menu-item-single-hires { + padding-top: 14px; + padding-bottom: 3px; + height: 109px; + line-height: 85px; +} + +.bb-bb10-tab-overflow-menu-item-double-hires { + padding-top: 5px; + padding-bottom: 3px; + height: 60px; + line-height: 60px; +} + +.bb-bb10-tab-overflow-menu-item-inner-hires +{ + padding-left: 15px; +} + +.bb-bb10-tab-overflow-menu-item-hires .tab-accent-text +{ + padding-left: 15px; + font-size: 30pt; + height: 49px; + color:#606060; +} + +.bb10Highlight .tab-accent-text { + color: white; +} + +.bb-bb10-tab-overflow-menu-item-lowres-light +{ + color:Black; + border-bottom: solid 1px #D9DCDE; +} + +.bb-bb10-tab-overflow-menu-item-first-lowres-light +{ + border-top: solid 1px #D9DCDE; +} + +.bb-bb10-tab-overflow-menu-item-hires-light +{ + color:Black; + border-bottom: solid 2px #D9DCDE; +} + +.bb-bb10-tab-overflow-menu-item-first-hires-light +{ + border-top: solid 2px #D9DCDE; +} + +.bb-bb10-tab-overflow-menu-item-lowres-dark +{ + color:White; + border-bottom: solid 1px #404040 +} + +.bb-bb10-tab-overflow-menu-item-first-lowres-dark +{ + border-top: solid 1px #404040 +} + +.bb-bb10-tab-overflow-menu-item-hires-dark +{ + color:White; + border-bottom: solid 2px #404040 +} + +.bb-bb10-tab-overflow-menu-item-first-hires-dark +{ + border-top: solid 2px #404040 +} + +.bb-bb10-tab-overflow-menu-item-image-lowres +{ + height: 42px; + width: 42px; + margin-top:-2px; +} + +.bb-bb10-tab-overflow-menu-item-image-hires +{ + height: 80px; + width: 80px; + margin-top: 0px; + margin-left:12px; +} + +/* ================================================= + BB10 Context Menu +=================================================*/ + +.bb-bb10-context-menu +{ + z-index: 1002; + position:fixed; + height: 100%; + width: 80%; + top: 0px; + clear: both; + visibility : hidden; +} + +.bb-bb10-context-menu-overlay +{ + z-index: 1000; + position: fixed; + top: 0px; + right:0px; + bottom:0px; + left:0px; + display:none; +} + +.bb-bb10-context-menu-scroller { + position: absolute; + left : 0px; + bottom : 0px; + right : 0px; +} + +.bb-bb10-context-menu-lowres-dark +{ + background-color: #121212; + border-left: solid 1px #161616; +} + +.bb-bb10-context-menu-hires-dark +{ + background-color: #121212; + border-left: solid 2px #161616; +} + +.bb-bb10-context-menu-lowres-light +{ + background-color: #F9F9F9; + border-left: solid 1px #D1D1D1; +} + +.bb-bb10-context-menu-hires-light +{ + background-color: #F9F9F9; + border-left: solid 1px #D1D1D1; +} + +.bb-bb10-context-menu-item-lowres +{ + padding-top: 7px; + padding-bottom: 3px; + padding-left: 0px; + border-left: solid 5px; + border-left-color: transparent; + height: 52px; + line-height: 52px; + vertical-align: center; + font-size:16pt; +} + + +.bb-bb10-context-menu-item-hires +{ + padding-top: 14px; + padding-bottom: 3px; + padding-left: 0px; + border-left: solid 10px; + border-left-color: transparent; + height: 109px; + line-height: 95px; + vertical-align: center; + font-size:30pt; +} + +.bb-bb10-context-menu-item-inner-lowres +{ + padding-left: 5px; + position:relative; + float:left; +} + +.bb-bb10-context-menu-item-inner-hires +{ + padding-left: 15px; + position:relative; + float:left; +} + +.bb-bb10-context-menu-header-dark +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#323232), to(#272727)); + border-bottom: solid 1px #404040; +} + + +.bb-bb10-context-menu-header-title-lowres +{ + font-size: 18pt; + height:30px; + line-height:30px; + padding-left: 15px; + margin:0px; + overflow:hidden; + white-space:nowrap; + text-overflow: ellipsis; +} + +.bb-bb10-context-menu-header-title-hires +{ + font-size:30pt; + height:36px; + line-height:30px; + padding-left: 18px; + margin:0px; + padding-top:15px; + overflow:hidden; + white-space:nowrap; + text-overflow: -blackberry-fade; +} + +.bb-bb10-context-menu-header-description-lowres +{ + color: #737173; + font-size: 14pt; + height:30px; + line-height:30px; + padding-left: 15px; + margin:0px; + margin-top:-10px; + overflow:hidden; + white-space:nowrap; + text-overflow: ellipsis; +} + +.bb-bb10-context-menu-header-description-hires +{ + color: #737173; + font-size: 24pt; + height:30px; + line-height:30px; + padding-left: 18px; + margin:0px; + margin-top:5px; + padding-top:0px; + overflow:hidden; + white-space:nowrap; + text-overflow: -blackberry-fade; +} + +.bb-bb10-context-menu-header-title-dark +{ + color: white; +} + +.bb-bb10-context-menu-header-title-light +{ + color: black; +} + +.bb-bb10-context-menu-header-light +{ + background-image: -webkit-gradient(linear, center top, center bottom, from(#FBFBFB), to(#E0E0E0)); + border-bottom: solid 1px #D9DCDE; +} + +.bb-bb10-context-menu-item-lowres-light +{ + color:Black; + border-bottom: solid 1px #D9DCDE; +} + +.bb-bb10-context-menu-item-first-lowres-light +{ + border-top: solid 1px #D9DCDE; +} + +.bb-bb10-context-menu-item-hires-light +{ + color:Black; + border-bottom: solid 2px #D9DCDE; +} + +.bb-bb10-context-menu-item-first-hires-light +{ + border-top: solid 2px #D9DCDE; +} + +.bb-bb10-context-menu-item-lowres-dark +{ + color:White; + border-bottom: solid 1px #404040 +} + +.bb-bb10-context-menu-item-first-lowres-dark +{ + border-top: solid 1px #404040 +} + +.bb-bb10-context-menu-item-hires-dark +{ + color:White; + border-bottom: solid 2px #404040 +} + +.bb-bb10-context-menu-item-first-hires-dark +{ + border-top: solid 2px #404040 +} + +.bb-bb10-context-menu-item-image-lowres +{ + position:relative; + float:left; + height: 42px; + width: 42px; + margin-top:3px; +} + +.bb-bb10-context-menu-item-image-hires +{ + position:relative; + float:left; + height: 80px; + width: 80px; + margin-top:10px; + margin-left:12px; +} + + +/* ================================================= + Not sure if these are needed anymore + =================================================*/ + +.panel-nogap input +{ + display:inline; + float:left; + font-family: BBAlpha Sans; + font-size: 16pt; + border: none; + padding-top: 0px; + width: 10px; +} + + + + + + + diff --git a/bbm/img/Large/White/icon_005.png b/bbm/img/Large/White/icon_005.png new file mode 100644 index 00000000..c3c57fea Binary files /dev/null and b/bbm/img/Large/White/icon_005.png differ diff --git a/bbm/img/Large/White/icon_041.png b/bbm/img/Large/White/icon_041.png new file mode 100644 index 00000000..312325f6 Binary files /dev/null and b/bbm/img/Large/White/icon_041.png differ diff --git a/bbm/img/Large/White/icon_048.png b/bbm/img/Large/White/icon_048.png new file mode 100644 index 00000000..5b8d0715 Binary files /dev/null and b/bbm/img/Large/White/icon_048.png differ diff --git a/bbm/img/Large/White/icon_086.png b/bbm/img/Large/White/icon_086.png new file mode 100644 index 00000000..d6e6d70d Binary files /dev/null and b/bbm/img/Large/White/icon_086.png differ diff --git a/bbm/img/Large/White/icon_099.png b/bbm/img/Large/White/icon_099.png new file mode 100644 index 00000000..dd0f86b5 Binary files /dev/null and b/bbm/img/Large/White/icon_099.png differ diff --git a/bbm/img/Large/White/icon_111.png b/bbm/img/Large/White/icon_111.png new file mode 100644 index 00000000..3746424a Binary files /dev/null and b/bbm/img/Large/White/icon_111.png differ diff --git a/bbm/img/Large/White/icon_127.png b/bbm/img/Large/White/icon_127.png new file mode 100644 index 00000000..c61375b1 Binary files /dev/null and b/bbm/img/Large/White/icon_127.png differ diff --git a/bbm/img/Large/White/icon_159.png b/bbm/img/Large/White/icon_159.png new file mode 100644 index 00000000..59fa2420 Binary files /dev/null and b/bbm/img/Large/White/icon_159.png differ diff --git a/bbm/img/Large/White/icon_180.png b/bbm/img/Large/White/icon_180.png new file mode 100644 index 00000000..8c559860 Binary files /dev/null and b/bbm/img/Large/White/icon_180.png differ diff --git a/bbm/img/Large/White/icon_185.png b/bbm/img/Large/White/icon_185.png new file mode 100644 index 00000000..9203f2cd Binary files /dev/null and b/bbm/img/Large/White/icon_185.png differ diff --git a/bbm/img/Large/White/icon_186.png b/bbm/img/Large/White/icon_186.png new file mode 100644 index 00000000..10ddd1bb Binary files /dev/null and b/bbm/img/Large/White/icon_186.png differ diff --git a/bbm/img/Large/White/icon_191.png b/bbm/img/Large/White/icon_191.png new file mode 100644 index 00000000..64b2f8e6 Binary files /dev/null and b/bbm/img/Large/White/icon_191.png differ diff --git a/bbm/img/Large/White/icon_194.png b/bbm/img/Large/White/icon_194.png new file mode 100644 index 00000000..29e537b6 Binary files /dev/null and b/bbm/img/Large/White/icon_194.png differ diff --git a/bbm/img/Large/White/icon_202.png b/bbm/img/Large/White/icon_202.png new file mode 100644 index 00000000..d1e30c8a Binary files /dev/null and b/bbm/img/Large/White/icon_202.png differ diff --git a/bbm/img/Large/White/icon_203.png b/bbm/img/Large/White/icon_203.png new file mode 100644 index 00000000..b8c9f20d Binary files /dev/null and b/bbm/img/Large/White/icon_203.png differ diff --git a/bbm/img/Large/White/icon_209.png b/bbm/img/Large/White/icon_209.png new file mode 100644 index 00000000..126d18ae Binary files /dev/null and b/bbm/img/Large/White/icon_209.png differ diff --git a/bbm/img/Large/White/icon_212.png b/bbm/img/Large/White/icon_212.png new file mode 100644 index 00000000..a4377f39 Binary files /dev/null and b/bbm/img/Large/White/icon_212.png differ diff --git a/bbm/img/Large/White/icon_235.png b/bbm/img/Large/White/icon_235.png new file mode 100644 index 00000000..e40ada45 Binary files /dev/null and b/bbm/img/Large/White/icon_235.png differ diff --git a/bbm/img/Large/White/icon_242.png b/bbm/img/Large/White/icon_242.png new file mode 100644 index 00000000..c19a6d56 Binary files /dev/null and b/bbm/img/Large/White/icon_242.png differ diff --git a/bbm/img/Large/White/icon_269.png b/bbm/img/Large/White/icon_269.png new file mode 100644 index 00000000..b8ea0480 Binary files /dev/null and b/bbm/img/Large/White/icon_269.png differ diff --git a/bbm/img/Large/White/icon_273.png b/bbm/img/Large/White/icon_273.png new file mode 100644 index 00000000..3af90ea5 Binary files /dev/null and b/bbm/img/Large/White/icon_273.png differ diff --git a/bbm/img/Large/White/icon_280.png b/bbm/img/Large/White/icon_280.png new file mode 100644 index 00000000..35fc6253 Binary files /dev/null and b/bbm/img/Large/White/icon_280.png differ diff --git a/bbm/img/Large/White/icon_283.png b/bbm/img/Large/White/icon_283.png new file mode 100644 index 00000000..d156092f Binary files /dev/null and b/bbm/img/Large/White/icon_283.png differ diff --git a/bbm/img/Large/White/icon_292.png b/bbm/img/Large/White/icon_292.png new file mode 100644 index 00000000..d90451c4 Binary files /dev/null and b/bbm/img/Large/White/icon_292.png differ diff --git a/bbm/img/Medium/White/icon_005.png b/bbm/img/Medium/White/icon_005.png new file mode 100644 index 00000000..489b20db Binary files /dev/null and b/bbm/img/Medium/White/icon_005.png differ diff --git a/bbm/img/Medium/White/icon_041.png b/bbm/img/Medium/White/icon_041.png new file mode 100644 index 00000000..215b30f2 Binary files /dev/null and b/bbm/img/Medium/White/icon_041.png differ diff --git a/bbm/img/Medium/White/icon_048.png b/bbm/img/Medium/White/icon_048.png new file mode 100644 index 00000000..cf8cc8b3 Binary files /dev/null and b/bbm/img/Medium/White/icon_048.png differ diff --git a/bbm/img/Medium/White/icon_086.png b/bbm/img/Medium/White/icon_086.png new file mode 100644 index 00000000..de6b1d2c Binary files /dev/null and b/bbm/img/Medium/White/icon_086.png differ diff --git a/bbm/img/Medium/White/icon_099.png b/bbm/img/Medium/White/icon_099.png new file mode 100644 index 00000000..f3662d3f Binary files /dev/null and b/bbm/img/Medium/White/icon_099.png differ diff --git a/bbm/img/Medium/White/icon_111.png b/bbm/img/Medium/White/icon_111.png new file mode 100644 index 00000000..7c29c741 Binary files /dev/null and b/bbm/img/Medium/White/icon_111.png differ diff --git a/bbm/img/Medium/White/icon_127.png b/bbm/img/Medium/White/icon_127.png new file mode 100644 index 00000000..7e61779d Binary files /dev/null and b/bbm/img/Medium/White/icon_127.png differ diff --git a/bbm/img/Medium/White/icon_159.png b/bbm/img/Medium/White/icon_159.png new file mode 100644 index 00000000..e89f29fe Binary files /dev/null and b/bbm/img/Medium/White/icon_159.png differ diff --git a/bbm/img/Medium/White/icon_180.png b/bbm/img/Medium/White/icon_180.png new file mode 100644 index 00000000..59eb5e72 Binary files /dev/null and b/bbm/img/Medium/White/icon_180.png differ diff --git a/bbm/img/Medium/White/icon_185.png b/bbm/img/Medium/White/icon_185.png new file mode 100644 index 00000000..03f957b0 Binary files /dev/null and b/bbm/img/Medium/White/icon_185.png differ diff --git a/bbm/img/Medium/White/icon_186.png b/bbm/img/Medium/White/icon_186.png new file mode 100644 index 00000000..949f612e Binary files /dev/null and b/bbm/img/Medium/White/icon_186.png differ diff --git a/bbm/img/Medium/White/icon_191.png b/bbm/img/Medium/White/icon_191.png new file mode 100644 index 00000000..857203a4 Binary files /dev/null and b/bbm/img/Medium/White/icon_191.png differ diff --git a/bbm/img/Medium/White/icon_194.png b/bbm/img/Medium/White/icon_194.png new file mode 100644 index 00000000..540a9d1b Binary files /dev/null and b/bbm/img/Medium/White/icon_194.png differ diff --git a/bbm/img/Medium/White/icon_202.png b/bbm/img/Medium/White/icon_202.png new file mode 100644 index 00000000..32838729 Binary files /dev/null and b/bbm/img/Medium/White/icon_202.png differ diff --git a/bbm/img/Medium/White/icon_203.png b/bbm/img/Medium/White/icon_203.png new file mode 100644 index 00000000..b7ec4ad0 Binary files /dev/null and b/bbm/img/Medium/White/icon_203.png differ diff --git a/bbm/img/Medium/White/icon_209.png b/bbm/img/Medium/White/icon_209.png new file mode 100644 index 00000000..597150df Binary files /dev/null and b/bbm/img/Medium/White/icon_209.png differ diff --git a/bbm/img/Medium/White/icon_212.png b/bbm/img/Medium/White/icon_212.png new file mode 100644 index 00000000..926990b7 Binary files /dev/null and b/bbm/img/Medium/White/icon_212.png differ diff --git a/bbm/img/Medium/White/icon_235.png b/bbm/img/Medium/White/icon_235.png new file mode 100644 index 00000000..5f043312 Binary files /dev/null and b/bbm/img/Medium/White/icon_235.png differ diff --git a/bbm/img/Medium/White/icon_242.png b/bbm/img/Medium/White/icon_242.png new file mode 100644 index 00000000..bcdca3e0 Binary files /dev/null and b/bbm/img/Medium/White/icon_242.png differ diff --git a/bbm/img/Medium/White/icon_269.png b/bbm/img/Medium/White/icon_269.png new file mode 100644 index 00000000..e2be51c6 Binary files /dev/null and b/bbm/img/Medium/White/icon_269.png differ diff --git a/bbm/img/Medium/White/icon_273.png b/bbm/img/Medium/White/icon_273.png new file mode 100644 index 00000000..e2374096 Binary files /dev/null and b/bbm/img/Medium/White/icon_273.png differ diff --git a/bbm/img/Medium/White/icon_280.png b/bbm/img/Medium/White/icon_280.png new file mode 100644 index 00000000..fa07aada Binary files /dev/null and b/bbm/img/Medium/White/icon_280.png differ diff --git a/bbm/img/Medium/White/icon_283.png b/bbm/img/Medium/White/icon_283.png new file mode 100644 index 00000000..52ce8527 Binary files /dev/null and b/bbm/img/Medium/White/icon_283.png differ diff --git a/bbm/img/Medium/White/icon_292.png b/bbm/img/Medium/White/icon_292.png new file mode 100644 index 00000000..c4ef609a Binary files /dev/null and b/bbm/img/Medium/White/icon_292.png differ diff --git a/bbm/img/README.md b/bbm/img/README.md new file mode 100644 index 00000000..ae5fcaf9 --- /dev/null +++ b/bbm/img/README.md @@ -0,0 +1,6 @@ +This is small Subway Icons Set released specially for RIM BB10 Dev Samples under CC BY 3.0 license. + +Included icons in three size - 81px, 71px and 61px + +Full set is available on Subway website: +http://subway.pixle.pl/rim/ \ No newline at end of file diff --git a/bbm/img/Small/White/icon_005.png b/bbm/img/Small/White/icon_005.png new file mode 100644 index 00000000..dad85349 Binary files /dev/null and b/bbm/img/Small/White/icon_005.png differ diff --git a/bbm/img/Small/White/icon_041.png b/bbm/img/Small/White/icon_041.png new file mode 100644 index 00000000..95708b9f Binary files /dev/null and b/bbm/img/Small/White/icon_041.png differ diff --git a/bbm/img/Small/White/icon_048.png b/bbm/img/Small/White/icon_048.png new file mode 100644 index 00000000..e5d80c99 Binary files /dev/null and b/bbm/img/Small/White/icon_048.png differ diff --git a/bbm/img/Small/White/icon_086.png b/bbm/img/Small/White/icon_086.png new file mode 100644 index 00000000..e9494b50 Binary files /dev/null and b/bbm/img/Small/White/icon_086.png differ diff --git a/bbm/img/Small/White/icon_099.png b/bbm/img/Small/White/icon_099.png new file mode 100644 index 00000000..d3f1be47 Binary files /dev/null and b/bbm/img/Small/White/icon_099.png differ diff --git a/bbm/img/Small/White/icon_111.png b/bbm/img/Small/White/icon_111.png new file mode 100644 index 00000000..6c6bc50e Binary files /dev/null and b/bbm/img/Small/White/icon_111.png differ diff --git a/bbm/img/Small/White/icon_127.png b/bbm/img/Small/White/icon_127.png new file mode 100644 index 00000000..2ca8d5b5 Binary files /dev/null and b/bbm/img/Small/White/icon_127.png differ diff --git a/bbm/img/Small/White/icon_159.png b/bbm/img/Small/White/icon_159.png new file mode 100644 index 00000000..8ea06f8e Binary files /dev/null and b/bbm/img/Small/White/icon_159.png differ diff --git a/bbm/img/Small/White/icon_180.png b/bbm/img/Small/White/icon_180.png new file mode 100644 index 00000000..7f55825b Binary files /dev/null and b/bbm/img/Small/White/icon_180.png differ diff --git a/bbm/img/Small/White/icon_185.png b/bbm/img/Small/White/icon_185.png new file mode 100644 index 00000000..4c2f0327 Binary files /dev/null and b/bbm/img/Small/White/icon_185.png differ diff --git a/bbm/img/Small/White/icon_186.png b/bbm/img/Small/White/icon_186.png new file mode 100644 index 00000000..3f613b4d Binary files /dev/null and b/bbm/img/Small/White/icon_186.png differ diff --git a/bbm/img/Small/White/icon_191.png b/bbm/img/Small/White/icon_191.png new file mode 100644 index 00000000..623786f4 Binary files /dev/null and b/bbm/img/Small/White/icon_191.png differ diff --git a/bbm/img/Small/White/icon_194.png b/bbm/img/Small/White/icon_194.png new file mode 100644 index 00000000..7bddf490 Binary files /dev/null and b/bbm/img/Small/White/icon_194.png differ diff --git a/bbm/img/Small/White/icon_202.png b/bbm/img/Small/White/icon_202.png new file mode 100644 index 00000000..346ffecf Binary files /dev/null and b/bbm/img/Small/White/icon_202.png differ diff --git a/bbm/img/Small/White/icon_203.png b/bbm/img/Small/White/icon_203.png new file mode 100644 index 00000000..06b36d8b Binary files /dev/null and b/bbm/img/Small/White/icon_203.png differ diff --git a/bbm/img/Small/White/icon_209.png b/bbm/img/Small/White/icon_209.png new file mode 100644 index 00000000..26f2037f Binary files /dev/null and b/bbm/img/Small/White/icon_209.png differ diff --git a/bbm/img/Small/White/icon_212.png b/bbm/img/Small/White/icon_212.png new file mode 100644 index 00000000..2d575727 Binary files /dev/null and b/bbm/img/Small/White/icon_212.png differ diff --git a/bbm/img/Small/White/icon_235.png b/bbm/img/Small/White/icon_235.png new file mode 100644 index 00000000..000019c0 Binary files /dev/null and b/bbm/img/Small/White/icon_235.png differ diff --git a/bbm/img/Small/White/icon_242.png b/bbm/img/Small/White/icon_242.png new file mode 100644 index 00000000..ea751caa Binary files /dev/null and b/bbm/img/Small/White/icon_242.png differ diff --git a/bbm/img/Small/White/icon_269.png b/bbm/img/Small/White/icon_269.png new file mode 100644 index 00000000..fa4e51b4 Binary files /dev/null and b/bbm/img/Small/White/icon_269.png differ diff --git a/bbm/img/Small/White/icon_273.png b/bbm/img/Small/White/icon_273.png new file mode 100644 index 00000000..91ea7ba5 Binary files /dev/null and b/bbm/img/Small/White/icon_273.png differ diff --git a/bbm/img/Small/White/icon_280.png b/bbm/img/Small/White/icon_280.png new file mode 100644 index 00000000..75bdfcf5 Binary files /dev/null and b/bbm/img/Small/White/icon_280.png differ diff --git a/bbm/img/Small/White/icon_283.png b/bbm/img/Small/White/icon_283.png new file mode 100644 index 00000000..285b6645 Binary files /dev/null and b/bbm/img/Small/White/icon_283.png differ diff --git a/bbm/img/Small/White/icon_292.png b/bbm/img/Small/White/icon_292.png new file mode 100644 index 00000000..32ce005b Binary files /dev/null and b/bbm/img/Small/White/icon_292.png differ diff --git a/bbm/img/avatar-128x128.png b/bbm/img/avatar-128x128.png new file mode 100644 index 00000000..32bfe3a1 Binary files /dev/null and b/bbm/img/avatar-128x128.png differ diff --git a/bbm/img/avatar-32x32.png b/bbm/img/avatar-32x32.png new file mode 100644 index 00000000..f043c339 Binary files /dev/null and b/bbm/img/avatar-32x32.png differ diff --git a/bbm/img/avatar-64x64.png b/bbm/img/avatar-64x64.png new file mode 100644 index 00000000..206c4880 Binary files /dev/null and b/bbm/img/avatar-64x64.png differ diff --git a/bbm/img/avatar.png b/bbm/img/avatar.png new file mode 100644 index 00000000..52547310 Binary files /dev/null and b/bbm/img/avatar.png differ diff --git a/bbm/index.html b/bbm/index.html index 551d77b4..a3440524 100644 --- a/bbm/index.html +++ b/bbm/index.html @@ -1,4 +1,5 @@ + - - - - - BBM Sample - - - - - - - - + + + + + + + + + + + \ No newline at end of file diff --git a/bbm/js/bbm.js b/bbm/js/bbm.js index e5e0d894..0778d02d 100644 --- a/bbm/js/bbm.js +++ b/bbm/js/bbm.js @@ -1,173 +1,134 @@ -/** - * Copyright (c) 2012 Research In Motion Limited. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at: - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - */ +/*global blackberry */ -/*global window, document, console, alert, blackberry */ - -/* This file holds the majority of the functionality for integration with - * BlackBerry Messenger. - */ - -var _bbm = { +var bbm = { registered: false, - /* This will be called when the user clicks the 'set' button for - * status or personal message. + /** + * Registers this application with the blackberry.bbm.platform APIs. + * + * NOTE: This is NOT required for the invoke APIs. */ - setField: function (field) { - 'use strict'; - var status, message, onComplete; - - if (field === 'status') { - /* Assign the status for this update. */ - if (document.querySelector('#status').getChecked() === true) { - status = 'available'; - } else { - status = 'busy'; + register: function () { + blackberry.event.addEventListener('onaccesschanged', function (accessible, status) { + if (status === 'unregistered') { + blackberry.bbm.platform.register({ + uuid: '33490f91-ad95-4ba9-82c4-33f6ad69fbbc' + }); + } else if (status === 'allowed') { + bbm.registered = accessible; } - - /* Assign the status message for this update. */ - message = document.querySelector('#statusMessage').value; - - /* Assign the onComplete function for this update. */ - onComplete = function (accepted) { - if (accepted === true) { - alert('Status update was accepted.'); - } else { - alert('Status update was not accepted.'); - } - }; - - /* Call setStatus with our defined arguments. */ - blackberry.bbm.platform.self.setStatus(status, message, onComplete); - } else if (field === 'personalMessage') { - /* Assign the personal message for this update. */ - message = document.querySelector('#personalMessage').value; - - /* Assign the onComplete function for this update. */ - onComplete = function (accepted) { - if (accepted === true) { - alert('Status update was accepted.'); - } else { - alert('Status update was not accepted.'); - } - }; - - /* Call setPersonalMessage with our defined arguments. */ - blackberry.bbm.platform.self.setPersonalMessage(message, onComplete); - } + }, false); }, - fieldChanged: function (element) { - 'use strict'; - - /* Reset all of our fields to invisible. */ - document.querySelector('#_status').style.display = 'none'; - document.querySelector('#_personalMessage').style.display = 'none'; - document.querySelector('#_ppid').style.display = 'none'; - document.querySelector('#_handle').style.display = 'none'; - document.querySelector('#_appVersion').style.display = 'none'; - document.querySelector('#_bbmsdkVersion').style.display = 'none'; - - /* Show the chosen field. */ - document.querySelector("#_" + element.value).style.display = 'inline'; + /** + * setDisplayPicture: Sets the BBM profile display picture. + */ + setDisplayPicture: function () { + blackberry.bbm.platform.self.setDisplayPicture('local:///img/avatar-32x32.png'); }, - populate: function () { - 'use strict'; - - /* Only allow functionality if we've registered with BBM. */ - if (_bbm.registered === true) { - /* Set the Display Name from the BBM profile. */ - document.querySelector('#displayName').innerHTML = blackberry.bbm.platform.self.displayName; + /** + * inviteToDownload: Displays a BBM list of existing users that can be + * contacted to also download this application. + */ + inviteToDownload: function () { + blackberry.bbm.platform.users.inviteToDownload(); + }, - /* Set the Status from the BBM profile. */ - if (blackberry.bbm.platform.self.status === 'available') { - document.querySelector('#status').setChecked(true); - } else { - document.querySelector('#status').setChecked(false); - } + /** + * inviteToBBM: Invokes the invite to BBM functionality to add BBM contacts. + */ + inviteToBBM: function () { + blackberry.invoke.invoke({ + action: 'bb.action.INVITEBBM', + uri: 'pin:2100000A' + }); + }, - /* The remaining fields are direct assignments. */ - document.querySelector('#statusMessage').value = blackberry.bbm.platform.self.statusMessage; - document.querySelector('#personalMessage').value = blackberry.bbm.platform.self.personalMessage; - document.querySelector('#ppid').innerHTML = blackberry.bbm.platform.self.ppid; - document.querySelector('#handle').innerHTML = blackberry.bbm.platform.self.handle; - document.querySelector('#appVersion').innerHTML = blackberry.bbm.platform.self.appVersion; - document.querySelector('#bbmsdkVersion').innerHTML = blackberry.bbm.platform.self.bbmsdkVersion; - } else { - alert('You must register with BBM first.'); - } + /** + * setAvatar: Invokes the avatar selector on the specified image. + */ + setAvatar: function () { + blackberry.invoke.invoke({ + target: 'sys.bbm.imagehandler', + action: 'bb.action.SET', + uri: 'local:///img/avatar.png' + }); }, - /* Will be called when the user clicks the Register button. */ - register: function () { - 'use strict'; - var options; + /** + * startChat: Invokes a BBM chat with an existing BBM contact. + * + * Specifying a PIN that is not already in the user's contacts will result in the Invite To BBM screen. + * + * Specifying a PIN that is in the user's contacts will immediately start a chat with that person. + * + * Specifying no PIN should invoke the Contact Picker, but currently does not. However, shareText with empty data string should do the job. + */ + startChat: function () { + blackberry.invoke.invoke({ + action: 'bb.action.BBMCHAT' + }); + }, - /* Only invoke this functionality if we have not yet registered. */ - if (_bbm.registered === false) { - blackberry.event.addEventListener('onaccesschanged', function (allowed, reason) { - /* If we haven't registered yet, kick off our attempt. */ - if (reason === 'unregistered') { - /* A valid, unique, 36-character UUID is being used. */ - options = { - uuid: "33490f91-ad95-4ba9-82c4-33f6ad69fbbc" - }; + /** + * shareText: Starts a chat session with pre-populated text. + */ + shareText: function () { + blackberry.invoke.invoke({ + target: 'sys.bbm.sharehandler', + action: 'bb.action.SHARE', + data: 'This is some text.', + mimeType: 'text/plain' + }); + }, - /* Call the register function with our UUID. */ - blackberry.bbm.platform.register(options); - } else if (allowed === true) { - /* Access allowed. */ - _bbm.registered = true; + /** + * shareImage: Starts a chat session with attached image. + */ + shareImage: function () { + blackberry.invoke.invoke({ + target: 'sys.bbm.sharehandler', + action: 'bb.action.SHARE', + uri: 'local:///img/avatar.png' + }); + }, - /* Show our BBM Fields panel. */ - document.querySelector('#profile').style.display = 'inline'; - } else if (reason === 'user') { - /* Access blocked by user. */ - alert('Access is blocked by the user.'); - } else if (reason === 'rim') { - /* Access blocked by RIM. */ - alert('Access is blocked by RIM.'); - } else { - /* Remaining error codes have been implemented. */ - if (reason === 'itpolicy') { - alert('Access is blocked by IT Policy.'); - } else if (reason === 'resetrequired') { - alert('Access is blocked because a device reset is required to use the BBM Social Platform.'); - } else if (reason === 'nodata') { - alert('Access is blocked because the device is out of data coverage. A data connection is required to register the application.'); - } else if (reason === 'temperror') { - alert('Access is blocked because of a temporary error. The application should try to call blackberry.bbm.platform.register in 30 minutes, or the next time the application starts.'); - } else if (reason === 'nonuiapp') { - alert('Access is blocked because blackberry.bbm.platform.register was called from a non-UI application.'); - } - } - }); - } + /** + * populate: Retrieve BBM profile information and populate a BBUI screen. + */ + populate: function (element) { + element.querySelector('#displayname').setCaption(blackberry.bbm.platform.self.displayName); + + element.querySelector('#available').setChecked( + blackberry.bbm.platform.self.status === 'available' ? true : false + ); + + element.querySelector('#statusmessage').value = blackberry.bbm.platform.self.statusMessage; + element.querySelector('#personalmessage').value = blackberry.bbm.platform.self.personalMessage; + element.querySelector('#ppid').value = blackberry.bbm.platform.self.ppid; + element.querySelector('#handle').value = blackberry.bbm.platform.self.handle; + element.querySelector('#applicationversion').value = blackberry.bbm.platform.self.appVersion; + element.querySelector('#bbmsdkversion').value = blackberry.bbm.platform.self.bbmsdkVersion; }, - invite: function () { - 'use strict'; + /** + * save: Updates the user's BBM profile based on the current information. + */ + save: function () { + /* Update status. */ + blackberry.bbm.platform.self.setStatus( + document.querySelector('#available').getChecked() === true ? 'available' : 'busy', + document.querySelector('#statusmessage').value, + function (accepted) { + } + ); - /* Only allow functionality if we've registered with BBM. */ - if (_bbm.registered === true) { - blackberry.bbm.platform.users.inviteToDownload(); - } else { - alert('You must register with BBM first.'); - } + /* Update personal message. */ + blackberry.bbm.platform.self.setPersonalMessage( + document.querySelector('#personalmessage').value, + function (accepted) { + } + ); } }; \ No newline at end of file diff --git a/bbm/js/bbui-0.9.5.js b/bbm/js/bbui-0.9.5.js new file mode 100644 index 00000000..80a6c922 --- /dev/null +++ b/bbm/js/bbui-0.9.5.js @@ -0,0 +1,8972 @@ +/* +* Copyright 2010-2012 Research In Motion Limited. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + + +bb = { + scroller: null, + screens: [], + dropdownScrollers: [], + transparentPixel: 'data:image/png;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', + + // Core control variables + imageList : null, + activityIndicator : null, + fileInput : null, + button : null, + scrollPanel : null, + bbmBubble : null, + dropdown : null, + textInput : null, + roundPanel : null, + grid : null, + pillButtons : null, + labelControlContainers : null, + slider : null, + radio : null, + progress : null, + checkbox : null, + toggle : null, + + // Initialize the the options of bbUI + init : function (options) { + if (options) { + for (var i in options) bb.options[i] = options[i]; + } + + // Assign our back handler if provided otherwise assign the default + if (window.blackberry && blackberry.system && blackberry.system.event && blackberry.system.event.onHardwareKey) { + if (bb.options.onbackkey) { + blackberry.system.event.onHardwareKey(blackberry.system.event.KEY_BACK, bb.options.onbackkey); + } else { // Use the default + blackberry.system.event.onHardwareKey(blackberry.system.event.KEY_BACK, bb.popScreen); + } + } + + // Initialize our flags once so that we don't have to run logic in-line for decision making + bb.device.isRipple = (navigator.userAgent.indexOf('Ripple') >= 0) || window.tinyHippos; + bb.device.isPlayBook = (navigator.userAgent.indexOf('PlayBook') >= 0) || ((window.innerWidth == 1024 && window.innerHeight == 600) || (window.innerWidth == 600 && window.innerHeight == 1024)); + if (bb.device.isPlayBook && bb.options.bb10ForPlayBook) { + bb.device.isBB10 = true; + } else { + bb.device.isBB10 = (navigator.userAgent.indexOf('Version/10.0') >= 0); + } + bb.device.isBB7 = (navigator.userAgent.indexOf('7.0.0') >= 0) || (navigator.userAgent.indexOf('7.1.0') >= 0); + bb.device.isBB6 = navigator.userAgent.indexOf('6.0.0') >= 0; + bb.device.isBB5 = navigator.userAgent.indexOf('5.0.0') >= 0; + + // Determine HiRes + if (bb.device.isRipple) { + bb.device.isHiRes = window.innerHeight > 480 || window.innerWidth > 480; + } else { + bb.device.isHiRes = screen.width > 480 || screen.height > 480; + } + + // Check if a viewport tags exist and remove them, We'll add the bbUI friendly one + var viewports = document.head.querySelectorAll('meta[name=viewport]'), + i; + for (i = 0; i < viewports.length; i++) { + try { + document.head.removeChild(viewports[i]); + } catch (ex) { + // Throw away the error + } + } + + // Set our meta tags for content scaling + var meta = document.createElement('meta'); + meta.setAttribute('name','viewport'); + if (bb.device.isBB10 && !bb.device.isPlayBook) { + meta.setAttribute('content','initial-scale='+ (1/window.devicePixelRatio) +',user-scalable=no'); + } else { + meta.setAttribute('content','initial-scale=1.0,width=device-width,user-scalable=no,target-densitydpi=device-dpi'); + } + document.head.appendChild(meta); + + // Create our shades of colors + var R = parseInt((bb.cutHex(bb.options.highlightColor)).substring(0,2),16), + G = parseInt((bb.cutHex(bb.options.highlightColor)).substring(2,4),16), + B = parseInt((bb.cutHex(bb.options.highlightColor)).substring(4,6),16); + bb.options.shades = { + R : R, + G : G, + B : B, + darkHighlight: 'rgb('+ (R - 120) +', '+ (G - 120) +', '+ (B - 120) +')', + mediumHighlight: 'rgb('+ (R - 60) +', '+ (G - 60) +', '+ (B - 60) +')', + darkOutline: 'rgb('+ (R - 32) +', '+ (G - 32) +', '+ (B - 32) +')', + darkDarkHighlight: 'rgb('+ (R - 140) +', '+ (G - 140) +', '+ (B - 140) +')' + }; + + // Create our coloring + if (document.styleSheets && document.styleSheets.length) { + try { + document.styleSheets[0].insertRule('.bb10Highlight {background-color:'+ bb.options.highlightColor +';background-image:none;}', 0); + document.styleSheets[0].insertRule('.bbProgressHighlight {background-color:#92B43B;background-image:none;}', 0); + document.styleSheets[0].insertRule('.bb10-button-highlight {color:White;background-image: -webkit-gradient(linear, center top, center bottom, from('+bb.options.shades.darkHighlight+'), to('+bb.options.highlightColor+'));border-color:#53514F;}', 0); + document.styleSheets[0].insertRule('.pb-button-light-highlight {color:'+bb.options.shades.darkHighlight+';background-image: -webkit-gradient(linear, center top, center bottom, from('+bb.options.highlightColor+'), to('+bb.options.shades.darkHighlight+'));}', 0); + document.styleSheets[0].insertRule('.pb-button-dark-highlight {color:'+bb.options.highlightColor+';background-image: -webkit-gradient(linear, center top, center bottom, from('+bb.options.highlightColor+'), to('+bb.options.shades.darkHighlight+'));}', 0); + document.styleSheets[0].insertRule('.bb10Accent {background-color:'+ bb.options.shades.darkHighlight +';}', 0); + document.styleSheets[0].insertRule('.bb10-title-colored {color:white;text-shadow: 0px 2px black;background-image: -webkit-gradient(linear, center top, center bottom, from('+bb.options.highlightColor+'), to('+bb.options.shades.darkHighlight+'));}', 0); + document.styleSheets[0].insertRule('.bb10-title-button-container-colored {color:white;text-shadow: 0px 2px black;border-color: ' + bb.options.shades.darkDarkHighlight +';background-color: '+bb.options.shades.darkHighlight+';}', 0); + document.styleSheets[0].insertRule('.bb10-title-button-colored {border-color: ' + bb.options.shades.darkDarkHighlight +';background-image: -webkit-gradient(linear, center top, center bottom, from('+bb.options.highlightColor+'), to('+bb.options.shades.mediumHighlight+'));}', 0); + document.styleSheets[0].insertRule('.bb10-title-button-colored-highlight {border-color: ' + bb.options.shades.darkDarkHighlight +';background-color: '+bb.options.shades.darkHighlight+';}', 0); + } + catch (ex) { + console.log(ex.message); + } + } + // Set our coloring + bb.actionBar.color = (bb.options.actionBarDark) ? 'dark' : 'light'; + bb.screen.controlColor = (bb.options.controlsDark) ? 'dark' : 'light'; + bb.screen.listColor = (bb.options.listsDark) ? 'dark' : 'light'; + + // Set up our pointers to objects for each OS version + if (bb.device.isBB10) { + bb.imageList = _bb10_imageList + bb.activityIndicator = _bb10_activityIndicator; + bb.fileInput = _bb10_fileInput; + bb.button = _bb10_button; + bb.scrollPanel = _bb_PlayBook_10_scrollPanel; + bb.bbmBubble = _bb_bbmBubble; + bb.dropdown = _bb10_dropdown; + bb.textInput = _bb10_textInput; + bb.roundPanel = _bb10_roundPanel; + bb.grid = _bb10_grid; + bb.pillButtons = _bb10_pillButtons; + bb.labelControlContainers = _bb10_labelControlContainers; + bb.slider = _bb10_slider; + bb.radio = _bb10_radio; + bb.progress = _bb_progress; + bb.checkbox = _bb10_checkbox; + bb.toggle = _bb10_toggle; + } else if (bb.device.isBB5) { + bb.imageList = _bb_5_6_7_imageList; + bb.button = _bb5_button; + bb.bbmBubble = _bb_bbmBubble; + bb.roundPanel = _bb_5_6_7_roundPanel; + bb.pillButtons = _bb5_pillButtons; + bb.labelControlContainers = _bb5_labelControlContainers; + bb.progress = _bb_progress; + } else if (bb.device.isPlayBook) { + bb.imageList = _bbPlayBook_imageList; + bb.button = _bbPlayBook_button; + bb.bbmBubble = _bb_bbmBubble; + bb.dropdown = _bb_6_7_PlayBook_dropdown; + bb.textInput = _bbPlayBook_textInput; + bb.pillButtons = _bb_6_7_PlayBook_pillButtons; + bb.labelControlContainers = _bb_6_7_PlayBook_labelControlContainers; + bb.progress = _bb_progress; + bb.scrollPanel = _bb_PlayBook_10_scrollPanel; + bb.roundPanel = _bbPlayBook_roundPanel; + bb.activityIndicator = _bbPlayBook_activityIndicator; + } else { //BB6 & BB7 + bb.imageList = _bb_5_6_7_imageList; + bb.button = _bb_6_7_button; + bb.bbmBubble = _bb_bbmBubble; + bb.dropdown = _bb_6_7_PlayBook_dropdown; + bb.textInput = _bb_6_7_textInput; + bb.pillButtons = _bb_6_7_PlayBook_pillButtons; + bb.labelControlContainers = _bb_6_7_PlayBook_labelControlContainers; + bb.progress = _bb_progress; + bb.roundPanel = _bb_5_6_7_roundPanel; + } + }, + + doLoad: function(element) { + // Apply our styling + var root = element || document.body; + bb.screen.apply(root.querySelectorAll('[data-bb-type=screen]')); + if (bb.scrollPanel) bb.scrollPanel.apply(root.querySelectorAll('[data-bb-type=scroll-panel]')); + if (bb.textInput) bb.textInput.apply(root.querySelectorAll('input[type=text], [type=password], [type=tel], [type=url], [type=email], [type=number], [type=date], [type=time], [type=datetime], [type=month], [type=datetime-local], [type=color], [type=search]')); + if (bb.dropdown) bb.dropdown.apply(root.querySelectorAll('select')); + if (bb.roundPanel) bb.roundPanel.apply(root.querySelectorAll('[data-bb-type=round-panel]')); + if (bb.imageList) bb.imageList.apply(root.querySelectorAll('[data-bb-type=image-list]')); + if (bb.grid) bb.grid.apply(root.querySelectorAll('[data-bb-type=grid-layout]')); + if (bb.bbmBubble) bb.bbmBubble.apply(root.querySelectorAll('[data-bb-type=bbm-bubble]')); + if (bb.pillButtons) bb.pillButtons.apply(root.querySelectorAll('[data-bb-type=pill-buttons]')); + if (bb.labelControlContainers) bb.labelControlContainers.apply(root.querySelectorAll('[data-bb-type=label-control-container]')); + if(bb.button) bb.button.apply(root.querySelectorAll('[data-bb-type=button]')); + if (bb.fileInput) bb.fileInput.apply(root.querySelectorAll('input[type=file]')); + if (bb.slider) bb.slider.apply(root.querySelectorAll('input[type=range]')); + if (bb.progress) bb.progress.apply(root.querySelectorAll('progress')); + if (bb.radio) bb.radio.apply(root.querySelectorAll('input[type=radio]')); + if (bb.activityIndicator) bb.activityIndicator.apply(root.querySelectorAll('[data-bb-type=activity-indicator]')); + if (bb.checkbox) bb.checkbox.apply(root.querySelectorAll('input[type=checkbox]')); + if (bb.toggle) bb.toggle.apply(root.querySelectorAll('[data-bb-type=toggle]')); + // perform device specific formatting + bb.screen.reAdjustHeight(); + }, + + device: { + isHiRes: false, + isBB5: false, + isBB6: false, + isBB7: false, + isBB10: false, + isPlayBook: false, + isRipple: false + }, + + // Options for rendering + options: { + onbackkey: null, + onscreenready: null, + ondomready: null, + actionBarDark: true, + controlsDark: false, + coloredTitleBar: false, + listsDark: false, + highlightColor: '#00A8DF', + bb10ForPlayBook: false + }, + + loadScreen: function(url, id, popping, guid, params, screenRecord) { + var xhr = new XMLHttpRequest(), + container = document.createElement('div'), + _reduce = function (nl, func, start) { + var result = start; + + Array.prototype.forEach.apply(nl, [function (v) { + result = func(result, v); + }]); + + return result; + }, + whereScript = function (result, el) { + if (el.nodeName === "SCRIPT") { + result.push(el); + } + + return _reduce(el.childNodes, whereScript, result); + }, + i, + scripts = [], + newScriptTags = []; + + xhr.open("GET", url, false); + xhr.send(); + + container.setAttribute('id', guid); + container.innerHTML = xhr.responseText; + + // Add any Java Script files that need to be included + scripts = _reduce(container.childNodes, whereScript, []), + container.scriptIds = []; + + // Clear out old script id references if we are reloading a screen that was in the stack + if (screenRecord) { + screenRecord.scripts = []; + } + + scripts.forEach(function (script) { + var scriptTag = document.createElement('script'); + + if (script.text) { + //if there is text, just eval it since they probably don't have a src. + eval(script.text); + return; + } + var scriptGuid = bb.guidGenerator(); + // Either update the old screen in the stack record or add to the new one + if (screenRecord) { + screenRecord.scripts.push({'id' : scriptGuid, 'onunload': script.getAttribute('onunload')}); + } else { + container.scriptIds.push({'id' : scriptGuid, 'onunload': script.getAttribute('onunload')}); + } + scriptTag.setAttribute('type','text/javascript'); + scriptTag.setAttribute('src', script.getAttribute('src')); + scriptTag.setAttribute('id', scriptGuid); + newScriptTags.push(scriptTag); + // Remove script tag from container because we are going to add it to + script.parentNode.removeChild(script); + }); + + // Add getElementById for the container so that it can be used in the onscreenready event + container.getElementById = function(id, node) { + var result = null; + if (!node) { + node = this; + } + if ( node.getAttribute('id') == id ) + return node; + + for ( var i = 0; i < node.childNodes.length; i++ ) { + var child = node.childNodes[i]; + if ( child.nodeType == 1 ) { + result = this.getElementById( id, child ); + if (result) + break; + } + } + return result; + }; + + // Special handling for inserting script tags + bb.screen.scriptCounter = 0; + bb.screen.totalScripts = newScriptTags.length; + for (var i = 0; i < newScriptTags.length; i++) { + document.body.appendChild(newScriptTags[i]); + newScriptTags[i].onload = function() { + bb.screen.scriptCounter++; + if(bb.screen.scriptCounter == bb.screen.totalScripts) { + bb.initContainer(container, id, popping, params); + } + }; + } + + // In case there are no scripts at all we simply doLoad(). We do this in + // a setTimeout() so that it is asynchronous just like if you were loading referenced + // script tags. If we don't call this asynchronous, then the screen stack is in different + // states depending on if you have scripts or not + if(bb.screen.totalScripts === 0) { + setTimeout(function() { bb.initContainer(container, id, popping, params) }, 0); + } + return container; + }, + + // Initialize the container + initContainer : function(container, id, popping, params) { + // Fire the onscreenready and then apply our changes in doLoad() + if (bb.options.onscreenready) { + bb.options.onscreenready(container, id, params); + } + bb.doLoad(container); + // Load in the new content + document.body.appendChild(container); + + var screen = container.querySelectorAll('[data-bb-type=screen]'), + animationScreen, + effect, + effectToApply = null, + overlay; + + if (screen.length > 0 ) { + screen = screen[0]; + // Swap the screen with the animation + if (popping) { + var previousContainer = bb.screens[bb.screens.length - 1].container, + previousEffect; + animationScreen = previousContainer.querySelectorAll('[data-bb-type=screen]')[0]; + previousEffect = animationScreen.hasAttribute('data-bb-effect') ? animationScreen.getAttribute('data-bb-effect') : undefined; + // Reverse the animation + if (previousEffect) { + screen.style['z-index'] = '-100'; + if (previousEffect.toLowerCase() == 'fade'){ + animationScreen.setAttribute('data-bb-effect','fade-out'); + }else if (previousEffect.toLowerCase() == 'slide-left'){ + animationScreen.setAttribute('data-bb-effect','slide-out-right'); + } else if (previousEffect.toLowerCase() == 'slide-right') { + animationScreen.setAttribute('data-bb-effect','slide-out-left'); + } else if (previousEffect.toLowerCase() == 'slide-up') { + animationScreen.setAttribute('data-bb-effect','slide-out-down'); + } else if (previousEffect.toLowerCase() == 'slide-down') { + animationScreen.setAttribute('data-bb-effect','slide-out-up'); + } + } + } else { + animationScreen = screen; + } + animationScreen.popping = popping; + if (animationScreen.hasAttribute('data-bb-effect')) { + // see if there is a display effect + if (!bb.device.isBB5 && !bb.device.isBB6) { + effect = animationScreen.getAttribute('data-bb-effect'); + if (effect) { + effect = effect.toLowerCase(); + + if (effect == 'fade') { + effectToApply = bb.screen.fadeIn; + } else if (effect == 'fade-out') { + effectToApply = bb.screen.fadeOut; + } else if (!bb.device.isBB7) { + switch (effect) { + case 'slide-left': + effectToApply = bb.screen.slideLeft; + break; + case 'slide-out-left': + effectToApply = bb.screen.slideOutLeft; + break; + case 'slide-right': + effectToApply = bb.screen.slideRight; + break; + case 'slide-out-right': + effectToApply = bb.screen.slideOutRight; + break; + case 'slide-up': + effectToApply = bb.screen.slideUp; + break; + case 'slide-out-up': + effectToApply = bb.screen.slideOutUp; + break; + case 'slide-down': + effectToApply = bb.screen.slideDown; + break; + case 'slide-out-down': + effectToApply = bb.screen.slideOutDown; + break; + } + } + + animationScreen.style.display = 'inline'; // This is a wierd hack + + // Listen for when the animation ends so that we can clear the previous screen + if (effectToApply) { + // Create our overlay + overlay = document.createElement('div'); + animationScreen.overlay = overlay; + overlay.setAttribute('class','bb-transition-overlay'); + document.body.appendChild(overlay); + // Add our listener and animation state + bb.screen.animating = true; + animationScreen.doEndAnimation = function() { + var s = this.style; + bb.screen.animating = false; + // Remove our overlay + document.body.removeChild(this.overlay); + this.overlay = null; + // Only remove the screen at the end of animation "IF" it isn't the only screen left + if (bb.screens.length > 1) { + if (!this.popping) { + bb.removePreviousScreenFromDom(); + // Clear style changes that may have been made for the animation + s.left = ''; + s.right = ''; + s.top = ''; + s.bottom = ''; + s.width = ''; + s.height = ''; + s['-webkit-animation-name'] = ''; + s['-webkit-animation-duration'] = ''; + s['-webkit-animation-timing-function'] = ''; + s['-webkit-transform'] = ''; + } else { + this.style.display = 'none'; + this.parentNode.parentNode.removeChild(this.parentNode); + // Pop it from the stack + bb.screens.pop(); + screen.style['z-index'] = ''; + // The container of bb.screens might be destroyed because every time re-creating even when the pop-up screen. + bb.screens[bb.screens.length-1].container = container; + } + } else if (bb.screens.length <= 1) { + // Clear style changes that may have been made for the animation + s.left = ''; + s.right = ''; + s.top = ''; + s.bottom = ''; + s.width = ''; + s.height = ''; + s['-webkit-animation-name'] = ''; + s['-webkit-animation-duration'] = ''; + s['-webkit-animation-timing-function'] = ''; + s['-webkit-transform'] = ''; + } + + this.removeEventListener('webkitAnimationEnd',this.doEndAnimation); + bb.createScreenScroller(screen); + }; + animationScreen.doEndAnimation = animationScreen.doEndAnimation.bind(animationScreen); + animationScreen.addEventListener('webkitAnimationEnd',animationScreen.doEndAnimation); + + effectToApply.call(this, animationScreen); + } + } + } + } + } + + // Fire the ondomready after the element is added to the DOM and we've set our animation flags + if (bb.options.ondomready) { + bb.domready.container = container; + bb.domready.id = id; + bb.domready.params = params; + setTimeout(bb.domready.fire, 1); + } + + // If an effect was applied then the popping will be handled at the end of the animation + if (!effectToApply) { + if (!popping) { + if ((bb.device.isBB5 || bb.device.isBB6 || bb.device.isBB7) && (bb.screens.length > 0)) { + bb.removePreviousScreenFromDom(); + } else if (bb.screens.length > 1) { + bb.removePreviousScreenFromDom(); + } + } else if (popping) { + screen.style['z-index'] = ''; + + var currentScreen = bb.screens[bb.screens.length-1].container; + currentScreen.parentNode.removeChild(currentScreen); + // Pop it from the stack + bb.screens.pop(); + // The container of bb.screens might be destroyed because every time re-creating even when the pop-up screen. + bb.screens[bb.screens.length-1].container = container; + } + bb.createScreenScroller(screen); + } + }, + + // Function pointer to allow us to asynchronously fire ondomready + domready : { + + container : null, + id : null, + params : null, + + fire : function() { + if (bb.screen.animating) { + setTimeout(bb.domready.fire, 250); + return; + } + bb.options.ondomready(bb.domready.container, bb.domready.id, bb.domready.params); + bb.domready.container = null; + bb.domready.id = null; + bb.domready.params = null; + } + + }, + + // Creates the scroller for the screen + createScreenScroller : function(screen) { + var scrollWrapper = screen.bbUIscrollWrapper; + if (scrollWrapper) { + // Only apply iScroll if it is the PlayBook + if (bb.device.isPlayBook) { + var scrollerOptions = {hideScrollbar:true,fadeScrollbar:true, onBeforeScrollStart: function (e) { + var target = e.target; + + // Don't scroll the screen when touching in our drop downs for BB10 + if (target.parentNode && target.parentNode.getAttribute('class') == 'bb-bb10-dropdown-items') { + return; + } + + while (target.nodeType != 1) target = target.parentNode; + + if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA' && target.tagName != 'AUDIO' && target.tagName != 'VIDEO') { + e.preventDefault(); + // ensure we remove focus from a control if they touch outside the control in order to make the virtual keyboard disappear + var activeElement = document.activeElement; + if (activeElement) { + if (activeElement.tagName == 'SELECT' || activeElement.tagName == 'INPUT' || activeElement.tagName == 'TEXTAREA' || activeElement.tagName == 'AUDIO' || activeElement.tagName == 'VIDEO') { + activeElement.blur(); + } + } + } + // LEAVING THESE HERE INCASE WE NEED TO FALL BACK TO ISCROLL OVERRIDES + /*if (bb.options.screen && bb.options.screen.onBeforeScrollStart) { + bb.options.screen.onBeforeScrollStart(e); + }*/ + }, + onScrollMove: function(e) { + if (screen.onscroll) { + screen.onscroll(e); + } + }}; + // LEAVING THESE HERE INCASE WE NEED TO FALL BACK TO ISCROLL OVERRIDES + /*if (bb.options.screen) { + var excluded = ['onBeforeScrollStart','hideScrollbar','fadeScrollbar']; + for (var i in bb.options.screen) { + if (excluded.indexOf(i) === -1) { + scrollerOptions[i] = bb.options.screen[i]; + } + } + }*/ + bb.scroller = new iScroll(scrollWrapper, scrollerOptions); + } else if (bb.device.isBB10) { + // Use the built in inertial scrolling with elastic ends + bb.scroller = null; + scrollWrapper.style['-webkit-overflow-scrolling'] = '-blackberry-touch'; + scrollWrapper.onscroll = function(e) { + if (screen.onscroll) { + screen.onscroll(e); + } + }; + } + } + }, + + // Clear the scroller objects + clearScrollers: function() { + // first clear our dropdown scrollers + var scroller; + for (var i = bb.dropdownScrollers -1; i > -1; i--) { + scroller = bb.dropdownScrollers[i]; + scroller.destroy(); + scroller = null; + bb.dropdownScrollers.pop(); + } + }, + + // Remove the topmost screen from the dom + removeTopMostScreenFromDom: function() { + var numItems = bb.screens.length, + oldScreen = document.getElementById(bb.screens[numItems -1].guid); + document.body.removeChild(oldScreen); + }, + + // Remove the previous screen from the dom + removePreviousScreenFromDom: function() { + var numItems = bb.screens.length, + oldScreen, + stepBack; + if (numItems == 1) return; // There is only one screen on the stack + stepBack = (numItems > 1) ? 2 : 1; + oldScreen = document.getElementById(bb.screens[numItems - stepBack].guid); + if (oldScreen) { + document.body.removeChild(oldScreen); + } + }, + + // Add a new screen to the stack + pushScreen: function (url, id, params) { + // Remove our old screen + bb.removeLoadedScripts(); + bb.menuBar.clearMenu(); + var numItems = bb.screens.length, + currentScreen; + if (numItems > 0) { + bb.screen.overlay = null; + bb.screen.tabOverlay = null; + bb.clearScrollers(); + // Quirk with displaying with animations + if (bb.device.isBB5 || bb.device.isBB6 || bb.device.isBB7) { + currentScreen = document.getElementById(bb.screens[numItems -1].guid); + currentScreen.style.display = 'none'; + window.scroll(0,0); + } + } + + // Add our screen to the stack + var guid = bb.guidGenerator(), + container = bb.loadScreen(url, id, false, guid, params); + bb.screens.push({'id' : id, 'url' : url, 'scripts' : container.scriptIds, 'container' : container, 'guid': guid, 'params' : params}); + }, + + // Pop a screen from the stack + popScreen: function() { + var numItems = bb.screens.length; + if (numItems > 1) { + bb.removeLoadedScripts(); + bb.clearScrollers(); + bb.menuBar.clearMenu(); + bb.screen.overlay = null; + bb.screen.tabOverlay = null; + + // Retrieve our new screen + var display = bb.screens[numItems-2], + newScreen = bb.loadScreen(display.url, display.id, true, display.guid, display.params, display); + + // Quirky BrowserField2 bug on BBOS + if (bb.device.isBB5 || bb.device.isBB6 || bb.device.isBB7) { + window.scroll(0,0); + } + } else { + if (blackberry) { + blackberry.app.exit(); + } + } + }, + + removeLoadedScripts: function() { + // pop the old item + var numItems = bb.screens.length; + if (numItems > 0) { + var currentStackItem = bb.screens[numItems-1], + current = document.getElementById(currentStackItem.guid); + + // Remove any JavaScript files + for (var i = 0; i < currentStackItem.scripts.length; i++) { + var bbScript = currentStackItem.scripts[i], + scriptTag = document.getElementById(bbScript.id); + + // Call the unload function if any is defined + if (bbScript.onunload) { + eval(bbScript.onunload); + } + if (scriptTag) { + document.body.removeChild(scriptTag); + } + } + } + }, + + innerHeight: function() { + // Orientation is backwards between playbook and BB10 smartphones + if (bb.device.isPlayBook) { + // Hack for ripple + if (!window.orientation) { + return window.innerHeight; + } else if (window.orientation == 0 || window.orientation == 180) { + return 600; + } else if (window.orientation == -90 || window.orientation == 90) { + return 1024; + } + } else { + if (!window.orientation) { + return window.innerHeight; + } else if (window.orientation == 0 || window.orientation == 180) { + return 1280; + } else if (window.orientation == -90 || window.orientation == 90) { + return 768; + } + } + }, + + innerWidth: function() { + // Orientation is backwards between playbook and BB10 smartphones + if (bb.device.isPlayBook) { + // Hack for ripple + if (!window.orientation) { + return window.innerWidth; + } else if (window.orientation == 0 || window.orientation == 180) { + return 1024; + } else if (window.orientation == -90 || window.orientation == 90) { + return 600; + } + } else { + if (!window.orientation) { + return window.innerWidth; + } else if (window.orientation == 0 || window.orientation == 180) { + return 768; + } else if (window.orientation == -90 || window.orientation == 90) { + return 1280; + } + } + }, + + getOrientation: function() { + // Orientation is backwards between playbook and BB10 smartphones + if (bb.device.isPlayBook) { + // Hack for ripple + if (!window.orientation) { + return (window.innerWidth == 1024) ? 'landscape' : 'portrait'; + } else if (window.orientation == 0 || window.orientation == 180) { + return 'landscape'; + } else if (window.orientation == -90 || window.orientation == 90) { + return 'portrait'; + } + } else { + if (!window.orientation) { + return (window.innerWidth == 1280) ? 'landscape' : 'portrait'; + } else if (window.orientation == 0 || window.orientation == 180) { + return 'portrait'; + } else if (window.orientation == -90 || window.orientation == 90) { + return 'landscape'; + } + } + }, + + cutHex : function(h) { + return (h.charAt(0)=="#") ? h.substring(1,7):h + }, + + guidGenerator : function() { + var S4 = function() { + return (((1+Math.random())*0x10000)|0).toString(16).substring(1); + }; + return (S4()+S4()+S4()+S4()+S4()+S4()+S4()+S4()); + }, + + refresh : function() { + if (bb.scroller) { + bb.scroller.refresh(); + } + } +}; + +Function.prototype.bind = function(object){ + var fn = this; + return function(){ + return fn.apply(object, arguments); + }; +}; +// Apply styling to an action bar +bb.actionBar = { + + color: '', + + apply: function(actionBar, screen) { + + var actions = actionBar.querySelectorAll('[data-bb-type=action]'), + visibleButtons = [], + overflowButtons = [], + visibleTabs = [], + overflowTabs = [], + shownActions = [], + action, + target, + caption, + style, + lastStyle, + tabRightShading, + backBtn, + actionContainer = actionBar, + btnWidth, + res = (bb.device.isPlayBook) ? 'lowres' : 'hires', + icon, + color = bb.actionBar.color, + j; + + actionBar.backBtnWidth = 0; + actionBar.actionOverflowBtnWidth = 0; + actionBar.tabOverflowBtnWidth = 0; + actionBar.setAttribute('class','bb-bb10-action-bar-'+res+' bb-bb10-action-bar-' + bb.actionBar.color); + actionBar.visibleTabs = visibleTabs; + actionBar.visibleButtons = visibleButtons; + actionBar.overflowButtons = overflowButtons; + actionBar.shownActions = shownActions; + actionBar.overflowTabs = overflowTabs; + + // Gather our visible and overflow tabs and buttons + for (j = 0; j < actions.length; j++) { + action = actions[j]; + if (action.hasAttribute('data-bb-style')) { + style = action.getAttribute('data-bb-style').toLowerCase(); + if (style == 'button') { + if (action.hasAttribute('data-bb-overflow') && (action.getAttribute('data-bb-overflow').toLowerCase() == 'true')) { + overflowButtons.push(action); + } else { + visibleButtons.push(action); + } + } else { + if (action.hasAttribute('data-bb-overflow') && (action.getAttribute('data-bb-overflow').toLowerCase() == 'true')) { + overflowTabs.push(action); + } else { + visibleTabs.push(action); + } + } + } + } + + // Create the back button if it has one and there are no tabs in the action bar + if (actionBar.hasAttribute('data-bb-back-caption') && actionBar.querySelectorAll('[data-bb-style=tab]').length == 0) { + var chevron, + backCaption, + backslash, + backHighlight; + backBtn = document.createElement('div'); + backBtn.setAttribute('class','bb-bb10-action-bar-back-button-'+res+' bb-bb10-action-bar-back-button-'+res+'-' + color); + backBtn.onclick = bb.popScreen; + actionBar.backBtn = backBtn; + // Create and add the chevron to the back button + chevron = document.createElement('div'); + chevron.setAttribute('class','bb-bb10-action-bar-back-chevron-'+res+'-'+color); + backBtn.appendChild(chevron); + // Create and add our back caption to the back button + backCaption = document.createElement('div'); + backCaption.setAttribute('class','bb-bb10-action-bar-back-text-'+res); + backCaption.innerHTML = actionBar.getAttribute('data-bb-back-caption'); + backBtn.appendChild(backCaption); + // Create our highlight for touch + backHighlight = document.createElement('div'); + backHighlight.setAttribute('class','bb-bb10-action-bar-back-button-highlight'); + backHighlight.style['position'] = 'absolute'; + backHighlight.style['height'] = bb.device.isPlayBook ? '57px' : '110px'; + backHighlight.style['width'] = bb.device.isPlayBook ? '4px' : '8px'; + backHighlight.style['background-color'] = 'transparent'; + backHighlight.style['top'] = bb.device.isPlayBook ? '8px' : '15px'; + backBtn.backHighlight = backHighlight; + backBtn.appendChild(backHighlight); + backBtn.ontouchstart = function() { + this.backHighlight.style['background-color'] = bb.options.highlightColor; + } + backBtn.ontouchend = function() { + this.backHighlight.style['background-color'] = 'transparent'; + } + + // Create our backslash + backslash = document.createElement('div'); + backslash.setAttribute('class','bb-bb10-action-bar-back-slash-'+res+'-'+color); + + // Create a table to hold the back button and our actions + var table = document.createElement('table'), + tr = document.createElement('tr'), + td = document.createElement('td'); + actionBar.appendChild(table); + table.appendChild(tr); + table.setAttribute('class','bb-bb10-action-bar-table'); + // Set Back Button widths + if (bb.device.isPlayBook) { + actionBar.backBtnWidth = 93; + td.style.width = 77+'px'; + } else { + actionBar.backBtnWidth = 187; + td.style.width = 154+'px'; + } + tr.appendChild(td); + td.appendChild(backBtn); + // Create the container for our backslash + td = document.createElement('td'); + // Set backslash widths + td.style.width = bb.device.isPlayBook ? 16 + 'px' : 33+'px'; + backslash.style['background-color'] = bb.options.shades.darkOutline; + tr.appendChild(td); + td.appendChild(backslash); + // Create the container for the rest of the actions + td = document.createElement('td'); + td.style.width = '100%'; + tr.appendChild(td); + actionContainer = td; + // Add the rest of the actions to the second column + for (j = 0; j < actions.length; j++) { + action = actions[j]; + td.appendChild(action); + } + } + + // If we have "tab" actions marked as overflow we need to show the more tab button + if (overflowTabs.length > 0) { + actionBar.tabOverflowBtnWidth = (bb.device.isPlayBook) ? 77: 154; + actionBar.tabOverflowMenu = bb.tabOverflow.create(screen); + actionBar.tabOverflowMenu.actionBar = actionBar; + // Create our action bar overflow button + action = document.createElement('div'); + action.actionBar = actionBar; + action.tabOverflowMenu = actionBar.tabOverflowMenu; + action.setAttribute('data-bb-type','action'); + action.setAttribute('data-bb-style','tab'); + action.setAttribute('data-bb-img','overflow'); + action.onclick = function() { + this.tabOverflowMenu.show(); + } + actionBar.tabOverflowBtn = action; + // Insert our more button + actionContainer.insertBefore(action, actionContainer.firstChild); + visibleTabs.push(action); + } + + // If we have "button" actions marked as overflow we need to show the more menu button + if (overflowButtons.length > 0) { + actionBar.actionOverflowBtnWidth = (bb.device.isPlayBook) ? 77: 154; + actionBar.menu = bb.contextMenu.create(screen); + actionBar.appendChild(actionBar.menu); + // Create our action bar overflow button + action = document.createElement('div'); + action.menu = actionBar.menu; + actionBar.moreBtn = action; + action.setAttribute('data-bb-type','action'); + action.setAttribute('data-bb-style','button'); + action.setAttribute('data-bb-img','overflow'); + action.onclick = function() { + this.menu.show(); + } + // Insert our action overflow button + actionContainer.appendChild(action); + visibleButtons.push(action); + } + + // Determines how much width there is to use not including built in system buttons on the bar + actionBar.getUsableWidth = function() { + return bb.innerWidth() - this.backBtnWidth - this.actionOverflowBtnWidth - this.tabOverflowBtnWidth; + } + actionBar.getUsableWidth = actionBar.getUsableWidth.bind(actionBar); + + // Create our function to calculate the widths of the inner action items + actionBar.calculateActionWidths = function() { + var result, + numUserActions, + numSystemActions = 0, + totalWidth = this.getUsableWidth(), + visibleActions = this.visibleButtons.length + this.visibleTabs.length; + + // Get our non system actions + numUserActions = (this.moreBtn) ? visibleActions - 1 : visibleActions; // Remove the more button from the equation + numUserActions = (this.tabOverflowBtn) ? numUserActions - 1 : numUserActions; // Remove the tab overflow button from the equation + + // Count our visible system actions + numSystemActions = (this.moreBtn) ? numSystemActions + 1 : numSystemActions; + numSystemActions = (this.tabOverflowBtn) ? numSystemActions + 1 : numSystemActions; + numSystemActions = (this.backBtn) ? numSystemActions + 1 : numSystemActions; + + if ((numSystemActions + numUserActions) < 5) { + result = Math.floor(totalWidth/numUserActions); + } else { + result = Math.floor(totalWidth/(5-numSystemActions)); + } + + return result; + }; + actionBar.calculateActionWidths = actionBar.calculateActionWidths.bind(actionBar); + // Get our button width + btnWidth = actionBar.calculateActionWidths(); + + // Make sure we move when the orientation of the device changes + actionBar.orientationChanged = function(event) { + var actionWidth = actionBar.calculateActionWidths(), + i, + action, + actionType, + length = this.shownActions.length, + margins = 2; + + for (i = 0; i < length; i++) { + action = this.shownActions[i]; + actionType = (action.hasAttribute('data-bb-style')) ? action.getAttribute('data-bb-style').toLowerCase() : 'button'; + // Compute margins + margins = (actionType == 'tab') ? 2 : 0; + action.style.width = (actionWidth - margins) + 'px'; + if (action.highlight && (actionType != 'tab') && (action.getAttribute('data-bb-img') != 'overflow')) { + action.highlight.style['width'] = (actionWidth * 0.6) + 'px'; + action.highlight.style['margin-left'] = (actionWidth * 0.2) + 'px'; + } + } + + // Adjust our more button + if (this.moreBtn && (this.shownActions.length > 0)) { + if (actionType == 'tab') { + // Stretch the last button if all tabs are before the overflow button + this.moreBtn.style.width = (bb.innerWidth() - (this.shownActions.length * actionWidth)) + 'px'; + } else { + this.moreBtn.style.width = this.actionOverflowBtnWidth + 'px'; + } + } + }; + actionBar.orientationChanged = actionBar.orientationChanged.bind(actionBar); + window.addEventListener('orientationchange', actionBar.orientationChanged,false); + + // Add setBackCaption function + actionBar.setBackCaption = function(value) { + this.setAttribute('data-bb-back-caption',value); + backCaption.innerHTML = value; + }; + actionBar.setBackCaption = actionBar.setBackCaption.bind(actionBar); + + // Add setSelectedTab function + actionBar.setSelectedTab = function(tab) { + if (tab.getAttribute('data-bb-style') != 'tab') return; + bb.actionBar.highlightAction(tab); + if (tab.onclick) { + tab.onclick(); + } + }; + actionBar.setSelectedTab = actionBar.setSelectedTab.bind(actionBar); + + // Add all our overflow tab actions + if (overflowTabs.length > 0 ) { + var clone; + // Add all our visible tabs if any so they are at the top of the list + for (j = 0; j < visibleTabs.length; j++) { + action = visibleTabs[j]; + // Don't add the visible overflow tab + if (action.getAttribute('data-bb-img') != 'overflow') { + clone = action.cloneNode(true); + clone.visibleTab = action; + clone.res = res; + clone.actionBar = actionBar; + actionBar.tabOverflowMenu.add(clone); + } + } + // Now add all our tabs marked as overflow + for (j = 0; j < overflowTabs.length; j++) { + action = overflowTabs[j]; + action.res = res; + action.actionBar = actionBar; + actionBar.tabOverflowMenu.add(action); + } + } + + // Add all of our overflow button actions + for (j = 0; j < overflowButtons.length; j++) { + action = overflowButtons[j]; + action.res = res; + actionBar.menu.add(action); + } + + // Apply all our tab styling + var tabMargins = 2, + numVisibleTabs = visibleTabs.length, + display; + for (j = 0; j < numVisibleTabs; j++) { + action = visibleTabs[j]; + // Don't add any more than 5 items on the action bar + if (j > 4) { + action.style.display = 'none'; + continue; + } + action.res = res; + caption = action.innerHTML; + // Size our last visible tab differently + if ((j == visibleTabs.length -1) && (j == 4)) { + // Stretch the last tab if actionbar only has tabs in case of any kind of rounding errors based on division + action.style.width = (actionBar.getUsableWidth() - (4 * btnWidth) - tabMargins) + 'px'; + } else { + action.style.width = (btnWidth - tabMargins) + 'px'; + } + action.actionBar = actionBar; + action.innerHTML = ''; + action.normal = 'bb-bb10-action-bar-action-'+res+' bb-bb10-action-bar-tab-'+color+' bb-bb10-action-bar-tab-normal-'+color; + action.highlight = action.normal + ' bb-bb10-action-bar-tab-selected-'+color; + action.setAttribute('class',action.normal); + + // Add the icon + icon = document.createElement('img'); + icon.setAttribute('class','bb-bb10-action-bar-icon-'+res); + action.appendChild(icon); + // Set our caption + display = document.createElement('div'); + display.setAttribute('class','bb-bb10-action-bar-action-display-'+res); + display.innerHTML = caption; + action.display = display; + action.appendChild(display); + + // See if it is our overflow tab + if (action.getAttribute('data-bb-img') == 'overflow') { + action.style.width = actionBar.tabOverflowBtnWidth + 'px'; + action.icon = icon; + display.innerHTML = ' '; + action.display = display; + // Set our transparent pixel + icon.setAttribute('src',bb.transparentPixel); + icon.normal = 'bb-bb10-action-bar-icon-'+res+' bb-bb10-action-bar-tab-overflow-'+res+'-'+color; + icon.highlight = 'bb-bb10-action-bar-icon-'+res; + icon.setAttribute('class',icon.normal); + // Crete our tab highlight div + action.tabHighlight = document.createElement('div'); + action.tabHighlight.setAttribute('class','bb-bb10-action-bar-tab-overflow-'+res+'-'+color+' bb-bb10-action-bar-tab-overflow-highlight-'+res); + action.appendChild(action.tabHighlight); + action.style.width = (actionBar.tabOverflowBtnWidth - 1) + 'px'; + // Set our reset function + action.reset = function() { + this.icon.setAttribute('src',bb.transparentPixel); + this.icon.setAttribute('class',this.icon.normal); + this.tabHighlight.style.display = 'none'; + this.display.innerHTML = ' '; + }; + action.reset = action.reset.bind(action); + } // See if it was a selected tab + else { + shownActions.push(action); + // Set our image + icon.setAttribute('src',action.getAttribute('data-bb-img')); + action.icon = icon; + + if (action.hasAttribute('data-bb-selected') && (action.getAttribute('data-bb-selected').toLowerCase() == 'true')) { + bb.actionBar.highlightAction(action); + } + // Add our click listener + action.addEventListener('click',function (e) { + bb.actionBar.highlightAction(this); + },false); + + // Assign the setCaption function + action.setCaption = function(value) { + this.display.innerHTML = value; + // Change the associated overflow item if one exists + if (this.actionBar.tabOverflowMenu) { + var tabs = this.actionBar.tabOverflowMenu.actions, + i, + target; + for (i = 0; i < tabs.length; i++) { + target = tabs[i]; + if (target.visibleTab == this) { + target.setCaption(value); + } + } + } + }; + action.setCaption = action.setCaption.bind(action); + + // Assign the getCaption function + action.getCaption = function() { + return this.display.innerHTML; + }; + action.getCaption = action.getCaption.bind(action); + + // Assign the setImage function + action.setImage = function(value) { + this.icon.setAttribute('src', value); + + // Change the associated overflow item if one exists + if (this.actionBar.tabOverflowMenu) { + var tabs = this.actionBar.tabOverflowMenu.actions, + i, + target; + for (i = 0; i < tabs.length; i++) { + target = tabs[i]; + if (target.visibleTab == this) { + target.setImage(value); + } + } + } + }; + action.setImage = action.setImage.bind(action); + + // Assign the getImage function + action.getImage = function() { + return this.icon.getAttribute('src'); + }; + action.getImage = action.getImage.bind(action); + } + + // Make the last tab have a smaller border and insert the shading + if ((j == visibleTabs.length-1) && (j < 4)) { + action.style['border-right-width'] = '1px'; + } + } + + // Apply all our button styling + lastStyle = (visibleTabs.length > 0) ? 'tab' : 'button'; + var actionWidth; + for (j = 0; j < visibleButtons.length; j++) { + actionWidth = btnWidth; + action = visibleButtons[j]; + action.res = res; + caption = action.innerHTML; + // Don't add any more than 5 items on the action bar + if ((((numVisibleTabs + j) > 4)) || (actionBar.backBtn && (j > 3))) { + action.style.display = 'none'; + continue; + } + + // Add the icon + icon = document.createElement('img'); + if (action.getAttribute('data-bb-img') == 'overflow') { + // Set our transparent pixel + icon.setAttribute('src',bb.transparentPixel); + icon.setAttribute('class','bb-bb10-action-bar-icon-'+res+' bb-bb10-action-bar-overflow-button-'+res+'-'+color); + // Stretch to the last tab as long as the only tab isn't the tab overflow + var stretchToTab = false; + if ((lastStyle == 'tab') && actionBar.tabOverflowMenu && (visibleTabs.length == 1) && (visibleButtons.length == 1)) { + stretchToTab = false; + } else if (lastStyle == 'tab') { + stretchToTab = true; + } + // If it is next to a tab, stretch it so that the right shading lines up + if (stretchToTab) { + // Stretch the last button if all tabs are before the overflow button + actionWidth = (actionBar.tabOverflowMenu) ? (bb.innerWidth() - ((numVisibleTabs-1) * btnWidth) - actionBar.tabOverflowBtnWidth) : (bb.innerWidth() - (numVisibleTabs * btnWidth) - actionBar.tabOverflowBtnWidth); + action.style.width = actionWidth + 'px'; + action.normal = 'bb-bb10-action-bar-action-'+res+' bb-bb10-action-bar-button-'+color+' bb-bb10-action-bar-button-tab-left-'+res+'-'+color; + } else { + actionWidth = (actionBar.actionOverflowBtnWidth - 1); + action.style.width = actionWidth + 'px'; + action.style.float = 'right'; + action.normal = 'bb-bb10-action-bar-action-'+res+' bb-bb10-action-bar-button-'+color; + } + } else { + shownActions.push(action); + icon.setAttribute('src',action.getAttribute('data-bb-img')); + icon.setAttribute('class','bb-bb10-action-bar-icon-'+res); + action.icon = icon; + action.style.width = btnWidth + 'px'; + + // set our shading if needed + if (lastStyle == 'tab') { + action.normal = 'bb-bb10-action-bar-action-'+res+' bb-bb10-action-bar-button-'+color+' bb-bb10-action-bar-button-tab-left-'+res+'-'+color; + } else { + action.normal = 'bb-bb10-action-bar-action-'+res+' bb-bb10-action-bar-button-'+color; + } + + // Assign the setCaption function + action.setCaption = function(value) { + this.display.innerHTML = value; + }; + action.setCaption = action.setCaption.bind(action); + + // Assign the getCaption function + action.getCaption = function() { + return this.display.innerHTML; + }; + action.getCaption = action.getCaption.bind(action); + + // Assign the setImage function + action.setImage = function(value) { + this.icon.setAttribute('src',value); + }; + action.setImage = action.setImage.bind(action); + + // Assign the setImage function + action.getImage = function() { + return this.icon.getAttribute('src'); + }; + action.getImage = action.getImage.bind(action); + } + + // Default settings + action.innerHTML = ''; + action.setAttribute('class',action.normal); + action.appendChild(icon); + lastStyle = 'button'; + + // Set our caption + var display = document.createElement('div'); + display.setAttribute('class','bb-bb10-action-bar-action-display-'+res); + display.innerHTML = caption; + action.display = display; + action.appendChild(display); + + // Set our highlight + action.highlight = document.createElement('div'); + action.highlight.setAttribute('class','bb-bb10-action-bar-action-highlight'); + action.highlight.style['height'] = bb.device.isPlayBook ? '4px' : '8px'; + action.highlight.style['width'] = (actionWidth * 0.6) + 'px'; + action.highlight.style['margin-left'] = (actionWidth * 0.2) + 'px'; + action.highlight.style['background-color'] = 'transparent'; + action.appendChild(action.highlight); + + // Highlight on touch + action.ontouchstart = function() { + this.highlight.style['background-color'] = bb.options.highlightColor; + } + // Remove highlight when touch ends + action.ontouchend = function() { + this.highlight.style['background-color'] = 'transparent'; + } + } + // Center the action overflow items + if (actionBar.menu) { + actionBar.menu.centerMenuItems(); + } + // Initialize the Tab Overflow + if (actionBar.tabOverflowMenu) { + actionBar.tabOverflowMenu.centerMenuItems(); + actionBar.tabOverflowMenu.initSelected(); + } + }, + + // Apply the proper highlighting for the action + highlightAction: function (action, overflowAction) { + var i, + target, + tabs = action.actionBar.visibleTabs; + + // First un-highlight the rest + for (i = 0; i < tabs.length; i++) { + target = tabs[i]; + if (target != action) { + bb.actionBar.unhighlightAction(target); + } + } + // Un-highlight the overflow menu items + if (action.actionBar.tabOverlowMenu) { + tabs = action.actionBar.tabOverflowMenu.actions; + for (i = 0; i < tabs.length; i++) { + target = tabs[i]; + if (target != overflowAction) { + bb.actionBar.unhighlightAction(target); + } + } + } + + // Now highlight this action + action.style['border-top-color'] = bb.options.highlightColor; + action.setAttribute('class',action.highlight); + + if (overflowAction) { + overflowAction.setAttribute('class', overflowAction.normal + ' bb10Highlight'); + } + + // See if there was a tab overflow + if (action.actionBar.tabOverflowMenu && !overflowAction) { + if (action.actionBar.tabOverflowBtn && (action == action.actionBar.tabOverflowBtn)) { + overflowAction.setAttribute('class', overflowAction.normal + ' bb10Highlight'); + } else { + tabs = action.actionBar.tabOverflowMenu.actions; + for (i = 0; i < tabs.length; i++) { + target = tabs[i]; + if (target.visibleTab == action) { + target.setAttribute('class', target.normal + ' bb10Highlight'); + } + } + } + } + + // Reset the tab overflow + if (action.actionBar.tabOverflowBtn && action.actionBar.tabOverflowBtn.reset) { + action.actionBar.tabOverflowBtn.reset(); + } + }, + + // Apply the proper styling for an action that is no longer highlighted + unhighlightAction: function(action) { + var target; + action.style['border-top-color'] = ''; + action.setAttribute('class',action.normal); + // See if there was a tab overflow + if (action.actionBar && action.actionBar.tabOverflowMenu) { + tabs = action.actionBar.tabOverflowMenu.actions; + for (i = 0; i < tabs.length; i++) { + target = tabs[i]; + target.setAttribute('class', target.normal); + } + } + } +}; +_bb_bbmBubble = { + // Apply our transforms to all BBM Bubbles + apply: function(elements) { + for (var i = 0; i < elements.length; i++) { + var outerElement = elements[i]; + + if (outerElement.hasAttribute('data-bb-style')) { + var style = outerElement.getAttribute('data-bb-style').toLowerCase(); + if (style == 'left') + outerElement.setAttribute('class','bb-bbm-bubble-left'); + else + outerElement.setAttribute('class','bb-bbm-bubble-right'); + + var innerElements = outerElement.querySelectorAll('[data-bb-type=item]'); + for (var j = 0; j > innerElements.length; j++) { + outerElement.removeChild(innerElements[j]); + } + + // Create our new
's + var placeholder = document.createElement('div'); + placeholder.setAttribute('class','top-left image'); + outerElement.appendChild(placeholder); + placeholder = document.createElement('div'); + placeholder.setAttribute('class','top-right image'); + outerElement.appendChild(placeholder); + + placeholder = document.createElement('div'); + placeholder.setAttribute('class','inside'); + outerElement.appendChild(placeholder); + + var insidePanel = document.createElement('div'); + insidePanel.setAttribute('class','nogap'); + placeholder.appendChild(insidePanel); + + placeholder = document.createElement('div'); + placeholder.setAttribute('class','bottom-left image'); + outerElement.appendChild(placeholder); + placeholder = document.createElement('div'); + placeholder.setAttribute('class','bottom-right image'); + outerElement.appendChild(placeholder); + // Add our previous children back to the insidePanel + for (var j = 0; j < innerElements.length; j++) { + var innerChildNode = innerElements[j], + description = innerChildNode.innerHTML; + innerChildNode.innerHTML = '\n' + + '
'+ description +'
\n'; + insidePanel.appendChild(innerChildNode); + } + + } + + // Add our get Style function + outerElement.getStyle = function() { + return this.getAttribute('data-bb-style'); + }; + outerElement.getStyle = outerElement.getStyle.bind(outerElement); + + // Add setStyle function (left or right) + outerElement.setStyle = function(value) { + if (value == 'left'){ + this.setAttribute('data-bb-style', value); + this.setAttribute('class','bb-bbm-bubble-left'); + } + else if (value == 'right'){ + this.setAttribute('data-bb-style', value); + this.setAttribute('class','bb-bbm-bubble-right'); + } + bb.refresh(); + }; + outerElement.setStyle = outerElement.setStyle.bind(outerElement); + + // Add show function + outerElement.show = function() { + this.style.display = 'block'; + bb.refresh(); + }; + outerElement.show = outerElement.show.bind(outerElement); + + // Add hide function + outerElement.hide = function() { + this.style.display = 'none'; + bb.refresh(); + }; + outerElement.hide = outerElement.hide.bind(outerElement); + + // Add remove function + outerElement.remove = function() { + this.parentNode.removeChild(this); + bb.refresh(); + }; + outerElement.remove = outerElement.remove.bind(outerElement); + } + } +}; +// BlackBerry 10 Context Menu +bb.contextMenu = { + + // Create an instance of the menu and pass it back to the caller + create : function(screen) { + var res, + swipeThreshold; + if (bb.device.isPlayBook) { + res = 'lowres'; + swipeThreshold = 100; + } else { + res = 'hires'; + swipeThreshold = 300; + } + + // Create the oveflow menu container + var menu = document.createElement('div'), + title = document.createElement('div'), + description = document.createElement('div'), + header; + menu.setAttribute('class','bb-bb10-context-menu bb-bb10-context-menu-' + res + '-' + bb.actionBar.color); + + menu.actions = []; + menu.hideEvents = []; + menu.res = res; + menu.threshold = swipeThreshold; + menu.visible = false; + + // Create our overlay for touch events + menu.overlay = document.createElement('div'); + menu.overlay.threshold = swipeThreshold; + menu.overlay.setAttribute('class','bb-bb10-context-menu-overlay'); + menu.overlay.menu = menu; + screen.appendChild(menu.overlay); + + menu.overlay.ontouchmove = function(event) { + // Only care about moves if peeking + if (!this.menu.peeking) return; + var touch = event.touches[0]; + if (this.startPos && (this.startPos - touch.pageX > this.threshold)) { + this.menu.show(this.menu.selected); + this.closeMenu = false; + } + }; + menu.overlay.ontouchend = function() { + if (this.closeMenu) { + this.menu.hide(); + } + }; + menu.overlay.ontouchstart = function(event) { + this.closeMenu = true; + if (!this.menu.peeking) return; + + var touch = event.touches[0]; + this.startPos = touch.pageX; + event.preventDefault(); + }; + + // Create the menu header + header = document.createElement('div'); + header.setAttribute('class','bb-bb10-context-menu-item-'+res+' bb-bb10-context-menu-header-'+bb.actionBar.color); + menu.header = header; + menu.appendChild(header); + + // Create our title container + title.setAttribute('class','bb-bb10-context-menu-header-title-'+res+' bb-bb10-context-menu-header-title-'+bb.actionBar.color); + title.style.width = bb.contextMenu.getWidth() - 20 + 'px'; + menu.topTitle = title; + header.appendChild(title); + + // Create our description container + description.setAttribute('class','bb-bb10-context-menu-header-description-'+res); + description.style.width = bb.contextMenu.getWidth() - 20 + 'px'; + menu.description = description; + header.appendChild(description); + + // Create our scrolling container + menu.scrollContainer = document.createElement('div'); + menu.scrollContainer.setAttribute('class', 'bb-bb10-context-menu-scroller'); + menu.appendChild(menu.scrollContainer); + + // Set our first left position + menu.style.left = bb.contextMenu.getLeft(); + + // Display the menu + menu.show = function(data){ + if (data) { + this.header.style.display = ''; + this.header.style.visibility = ''; + if (data.title) { + this.topTitle.innerHTML = data.title; + } + if (data.description) { + this.description.innerHTML = data.description; + } + this.selected = data; + // Adjust our scroll container top + menu.scrollContainer.style.top = (bb.device.isPlayBook) ? '64px' : '130px'; + } else { + this.header.style.display = 'none'; + this.selected = undefined; + // Adjust our scroll container top + menu.scrollContainer.style.top = '0px'; + } + // Set our scroller + menu.scrollContainer.style['overflow-y'] = 'scroll'; + menu.scrollContainer.style['overflow-x'] = 'hidden' + menu.scrollContainer.style['-webkit-overflow-scrolling'] = '-blackberry-touch'; + + this.peeking = false; + this.overlay.style.display = 'inline'; + this.style['-webkit-transition'] = 'all 0.3s ease-in-out'; + this.style['-webkit-transform'] = 'translate(-' + bb.contextMenu.getWidth() + 'px, 0)'; + this.style['-webkit-backface-visibility'] = 'hidden'; + this.style['-webkit-perspective'] = '1000'; + this.addEventListener("touchstart", this.touchHandler, false); + this.onclick = function() { this.hide();} + // Remove the header click handling while peeking + this.header.addEventListener("click", this.hide, false); + this.style.visibility = 'visible'; + this.visible = true; + }; + menu.show = menu.show.bind(menu); + // Hide the menu + menu.hide = function(){ + + this.overlay.style.display = 'none'; + this.removeEventListener("touchstart", this.touchHandler, false); + this.removeEventListener("touchmove", this.touchMoveHandler, false); + this.style['-webkit-transition'] = 'all 0.5s ease-in-out'; + this.style['-webkit-transform'] = 'translate(' + bb.contextMenu.getWidth() + 'px, 0px)'; + this.style['-webkit-backface-visibility'] = 'hidden'; + this.style['-webkit-perspective'] = '1000'; + if (!this.peeking) { + // Remove the header click handling + this.header.removeEventListener("click", this.hide, false); + } + this.peeking = false; + this.visible = false; + + // Remove our scroller + menu.scrollContainer.style['overflow-y'] = ''; + menu.scrollContainer.style['overflow-x'] = '' + menu.scrollContainer.style['-webkit-overflow-scrolling'] = ''; + + // See if there was anyone listenting for hide events and call them + // starting from the last one registered and pop them off + for (var i = menu.hideEvents.length-1; i >= 0; i--) { + menu.hideEvents[i](); + menu.hideEvents.pop(); + } + + // Hack because PlayBook doesn't seem to get all the touch end events + if (bb.device.isPlayBook) { + for (var i = 0; i < this.actions.length; i++) { + this.actions[i].ontouchend(); + } + } + }; + menu.hide = menu.hide.bind(menu); + // Peek the menu + menu.peek = function(data){ + if (data) { + this.header.style.display = ''; + if (data.title) { + this.topTitle.innerHTML = data.title; + } + if (data.description) { + this.description.innerHTML = data.description; + } + this.selected = data; + // Adjust our scroller top + menu.scrollContainer.style.top = (bb.device.isPlayBook) ? '64px' : '130px'; + } else { + // Adjust our scroller top + menu.scrollContainer.style.top = '0px'; + } + + this.header.style.visibility = 'hidden'; + this.header.style['margin-bottom'] = '-'+ Math.floor(this.header.offsetHeight/2) + 'px'; + this.peeking = true; + this.overlay.style.display = 'inline'; + this.style['-webkit-transition'] = 'all 0.3s ease-in-out'; + this.style['-webkit-transform'] = 'translate(-' + bb.contextMenu.getPeekWidth() + ', 0)'; + this.style['-webkit-backface-visibility'] = 'hidden'; + this.style['-webkit-perspective'] = '1000'; + this.addEventListener("touchstart", this.touchHandler, false); + this.addEventListener("touchmove", this.touchMoveHandler, false); + this.onclick = function() {this.show()}; + // Remove the header click handling while peeking + this.header.removeEventListener("click", this.hide, false); + this.style.visibility = 'visible'; + this.visible = true; + }; + menu.peek = menu.peek.bind(menu); + + // Trap touch start events in a way that we can add and remove the handler + menu.touchHandler = function(event) { + if (this.peeking) { + var touch = event.touches[0]; + this.startPos = touch.pageX; + if (event.target == this.scrollContainer) { + //event.stopPropagation(); + } else if (event.target.parentNode == this.scrollContainer && event.target != this.header) { + event.preventDefault(); + event.stopPropagation(); + } + } + }; + menu.touchHandler = menu.touchHandler.bind(menu); + + // Trap touch move events in a way that we can add and remove the handler + menu.touchMoveHandler = function(event) { + // Only care about moves if peeking + if (!this.peeking) return; + var touch = event.touches[0]; + if (this.startPos && (this.startPos - touch.pageX > this.threshold)) { + this.show(this.selected); + } + }; + menu.touchMoveHandler = menu.touchMoveHandler.bind(menu); + + // Handle the case of clicking the context menu while peeking + menu.onclick = function(event) { + if (this.peeking) { + this.show(this.selected); + event.stopPropagation(); + } + } + + // Center the items in the list + menu.centerMenuItems = function() { + var windowHeight = bb.innerHeight(), + itemHeight = (bb.device.isPlayBook) ? 53 : 111, + margin, + numActions; + // See how many actions to use for calculations + numActions = (this.pinnedAction) ? this.actions.length - 1 : this.actions.length; + margin = windowHeight - Math.floor(windowHeight/2) - Math.floor((numActions * itemHeight)/2) - itemHeight; //itemHeight is the header + if (margin < 0) margin = 0; + this.actions[0].style['margin-top'] = margin + 'px'; + }; + menu.centerMenuItems = menu.centerMenuItems.bind(menu); + + + // Make sure we move when the orientation of the device changes + menu.orientationChanged = function(event) { + this.style['-webkit-transition'] = ''; + this.style.left = bb.innerWidth() + 'px'; + this.style.height = bb.innerHeight() + 'px'; + this.centerMenuItems(); + }; + menu.orientationChanged = menu.orientationChanged.bind(menu); + window.addEventListener('orientationchange', menu.orientationChanged,false); + + // Listen for when the animation ends so that we can make it invisible to avoid orientation change artifacts + menu.addEventListener('webkitTransitionEnd', function() { + if (!this.visible) { + this.style.visibility = 'hidden'; + } + }); + + // Create our add item function + menu.add = function(action) { + var normal, + highlight, + caption = action.innerHTML, + pin = false; + + // set our styling + normal = 'bb-bb10-context-menu-item-'+this.res+' bb-bb10-context-menu-item-'+this.res+'-' + bb.actionBar.color; + //this.appendChild(action); + + this.actions.push(action); + // See if this item should be pinned to the bottom + pin = (action.hasAttribute('data-bb-pin') && action.getAttribute('data-bb-pin').toLowerCase() == 'true'); + if (pin && !this.pinnedAction) { + normal = normal + ' bb-bb10-context-menu-item-first-' + this.res + '-' + bb.actionBar.color; + action.style['bottom'] = '-2px'; + action.style.position = 'absolute'; + action.style.width = '100%'; + this.pinnedAction = action; + this.appendChild(action); + this.scrollContainer.style.bottom = (bb.device.isPlayBook) ? '64px' : '130px'; + } else { + this.scrollContainer.appendChild(action); + } + // If it is the top item it needs a top border + if (this.actions.length == 1) { + normal = normal + ' bb-bb10-context-menu-item-first-' + this.res + '-' + bb.actionBar.color; + } + highlight = normal + ' bb-bb10-context-menu-item-hover-'+this.res; + action.normal = normal; + action.highlight = highlight; + // Set our inner information + action.innerHTML = ''; + var inner = document.createElement('div'), + img = document.createElement('img'); + img.setAttribute('src', action.getAttribute('data-bb-img')); + img.setAttribute('class','bb-bb10-context-menu-item-image-'+this.res); + action.img = img; + action.appendChild(img); + inner.setAttribute('class','bb-bb10-context-menu-item-inner-'+this.res); + action.appendChild(inner); + inner.innerHTML = caption; + action.display = inner; + action.menu = this; + + action.setAttribute('class',normal); + action.ontouchstart = function () { + if (this.menu.peeking) { + this.style['border-left-color'] = bb.options.highlightColor; + } else { + this.style['background-color'] = bb.options.highlightColor; + } + + // Hack because PlayBook doesn't seem to get all the touch end events + if (bb.device.isPlayBook) { + var existingAction, + i; + for (i = 0; i < this.menu.actions.length; i++) { + existingAction = this.menu.actions[i]; + if (existingAction != this) { + existingAction.ontouchend(); + } + } + } + } + action.ontouchend = function () { + if (this.menu.peeking) { + this.style['border-left-color'] = 'transparent'; + } else { + this.style['background-color'] = ''; + } + } + action.addEventListener("click", this.hide, false); + + // Assign the setCaption function + action.setCaption = function(value) { + this.display.innerHTML = value; + }; + action.setCaption = action.setCaption.bind(action); + + // Assign the setImage function + action.setImage = function(value) { + this.img.setAttribute('src',value); + }; + action.setImage = action.setImage.bind(action); + }; + menu.add = menu.add.bind(menu); + return menu; + }, + + // Calculate the proper width of the context menu + getWidth : function() { + if (bb.device.isPlayBook) { + return '300'; + } else { + return '563'; + } + }, + + // Calculate the proper width of the context menu when peeking + getPeekWidth : function() { + if (bb.device.isPlayBook) { + return '55px'; + } else { + return '121px'; + } + }, + + // Calculate the proper left of the context menu + getLeft : function() { + return window.innerWidth + 3 + 'px'; + } +}; + +/*! + * iScroll v4.1.9 ~ Copyright (c) 2011 Matteo Spinelli, http://cubiq.org + * Released under MIT license, http://cubiq.org/license + */ +(function(){ +var m = Math, + mround = function (r) { return r >> 0; }, + vendor = (/webkit/i).test(navigator.appVersion) ? 'webkit' : + (/firefox/i).test(navigator.userAgent) ? 'Moz' : + (/trident/i).test(navigator.userAgent) ? 'ms' : + 'opera' in window ? 'O' : '', + + // Browser capabilities + isAndroid = (/android/gi).test(navigator.appVersion), + isIDevice = (/iphone|ipad/gi).test(navigator.appVersion), + isPlaybook = (/playbook/gi).test(navigator.appVersion), + isTouchPad = (/hp-tablet/gi).test(navigator.appVersion), + + has3d = 'WebKitCSSMatrix' in window && 'm11' in new WebKitCSSMatrix(), + hasTouch = 'ontouchstart' in window && !isTouchPad, + hasTransform = vendor + 'Transform' in document.documentElement.style, + hasTransitionEnd = isIDevice || isPlaybook, + + nextFrame = (function() { + return window.requestAnimationFrame + || window.webkitRequestAnimationFrame + || window.mozRequestAnimationFrame + || window.oRequestAnimationFrame + || window.msRequestAnimationFrame + || function(callback) { return setTimeout(callback, 1); } + })(), + cancelFrame = (function () { + return window.cancelRequestAnimationFrame + || window.webkitCancelAnimationFrame + || window.webkitCancelRequestAnimationFrame + || window.mozCancelRequestAnimationFrame + || window.oCancelRequestAnimationFrame + || window.msCancelRequestAnimationFrame + || clearTimeout + })(), + + // Events + RESIZE_EV = 'onorientationchange' in window ? 'orientationchange' : 'resize', + START_EV = hasTouch ? 'touchstart' : 'mousedown', + MOVE_EV = hasTouch ? 'touchmove' : 'mousemove', + END_EV = hasTouch ? 'touchend' : 'mouseup', + CANCEL_EV = hasTouch ? 'touchcancel' : 'mouseup', + WHEEL_EV = vendor == 'Moz' ? 'DOMMouseScroll' : 'mousewheel', + + // Helpers + trnOpen = 'translate' + (has3d ? '3d(' : '('), + trnClose = has3d ? ',0)' : ')', + + // Constructor + iScroll = function (el, options) { + var that = this, + doc = document, + i; + + that.wrapper = typeof el == 'object' ? el : doc.getElementById(el); + that.wrapper.style.overflow = 'hidden'; + that.scroller = that.wrapper.children[0]; + + // Default options + that.options = { + hScroll: true, + vScroll: true, + x: 0, + y: 0, + bounce: true, + bounceLock: false, + momentum: true, + lockDirection: true, + useTransform: true, + useTransition: false, + topOffset: 0, + checkDOMChanges: false, // Experimental + + // Scrollbar + hScrollbar: true, + vScrollbar: true, + fixedScrollbar: isAndroid, + hideScrollbar: isIDevice, + fadeScrollbar: isIDevice && has3d, + scrollbarClass: '', + + // Zoom + zoom: false, + zoomMin: 1, + zoomMax: 4, + doubleTapZoom: 2, + wheelAction: 'scroll', + + // Snap + snap: false, + snapThreshold: 1, + + // Events + onRefresh: null, + onBeforeScrollStart: function (e) { e.preventDefault(); }, + onScrollStart: null, + onBeforeScrollMove: null, + onScrollMove: null, + onBeforeScrollEnd: null, + onScrollEnd: null, + onTouchEnd: null, + onDestroy: null, + onZoomStart: null, + onZoom: null, + onZoomEnd: null + }; + + // User defined options + for (i in options) that.options[i] = options[i]; + + // Set starting position + that.x = that.options.x; + that.y = that.options.y; + + // Normalize options + that.options.useTransform = hasTransform ? that.options.useTransform : false; + that.options.hScrollbar = that.options.hScroll && that.options.hScrollbar; + that.options.vScrollbar = that.options.vScroll && that.options.vScrollbar; + that.options.zoom = that.options.useTransform && that.options.zoom; + that.options.useTransition = hasTransitionEnd && that.options.useTransition; + + // Helpers FIX ANDROID BUG! + // translate3d and scale doesn't work together! + // Ignoring 3d ONLY WHEN YOU SET that.options.zoom + if ( that.options.zoom && isAndroid ){ + trnOpen = 'translate('; + trnClose = ')'; + } + + // Set some default styles + that.scroller.style[vendor + 'TransitionProperty'] = that.options.useTransform ? '-' + vendor.toLowerCase() + '-transform' : 'top left'; + that.scroller.style[vendor + 'TransitionDuration'] = '0'; + that.scroller.style[vendor + 'TransformOrigin'] = '0 0'; + if (that.options.useTransition) that.scroller.style[vendor + 'TransitionTimingFunction'] = 'cubic-bezier(0.33,0.66,0.66,1)'; + + if (that.options.useTransform) that.scroller.style[vendor + 'Transform'] = trnOpen + that.x + 'px,' + that.y + 'px' + trnClose; + else that.scroller.style.cssText += ';position:absolute;top:' + that.y + 'px;left:' + that.x + 'px'; + + if (that.options.useTransition) that.options.fixedScrollbar = true; + + that.refresh(); + + that._bind(RESIZE_EV, window); + that._bind(START_EV); + if (!hasTouch) { + that._bind('mouseout', that.wrapper); + if (that.options.wheelAction != 'none') + that._bind(WHEEL_EV); + } + + if (that.options.checkDOMChanges) that.checkDOMTime = setInterval(function () { + that._checkDOMChanges(); + }, 500); + }; + +// Prototype +iScroll.prototype = { + enabled: true, + x: 0, + y: 0, + steps: [], + scale: 1, + currPageX: 0, currPageY: 0, + pagesX: [], pagesY: [], + aniTime: null, + wheelZoomCount: 0, + + handleEvent: function (e) { + var that = this; + switch(e.type) { + case START_EV: + if (!hasTouch && e.button !== 0) return; + that._start(e); + break; + case MOVE_EV: that._move(e); break; + case END_EV: + case CANCEL_EV: that._end(e); break; + case RESIZE_EV: that._resize(); break; + case WHEEL_EV: that._wheel(e); break; + case 'mouseout': that._mouseout(e); break; + case 'webkitTransitionEnd': that._transitionEnd(e); break; + } + }, + + _checkDOMChanges: function () { + if (this.moved || this.zoomed || this.animating || + (this.scrollerW == this.scroller.offsetWidth * this.scale && this.scrollerH == this.scroller.offsetHeight * this.scale)) return; + + this.refresh(); + }, + + _scrollbar: function (dir) { + var that = this, + doc = document, + bar; + + if (!that[dir + 'Scrollbar']) { + if (that[dir + 'ScrollbarWrapper']) { + if (hasTransform) that[dir + 'ScrollbarIndicator'].style[vendor + 'Transform'] = ''; + that[dir + 'ScrollbarWrapper'].parentNode.removeChild(that[dir + 'ScrollbarWrapper']); + that[dir + 'ScrollbarWrapper'] = null; + that[dir + 'ScrollbarIndicator'] = null; + } + + return; + } + + if (!that[dir + 'ScrollbarWrapper']) { + // Create the scrollbar wrapper + bar = doc.createElement('div'); + + if (that.options.scrollbarClass) bar.className = that.options.scrollbarClass + dir.toUpperCase(); + else bar.style.cssText = 'position:absolute;z-index:100;' + (dir == 'h' ? 'height:7px;bottom:1px;left:2px;right:' + (that.vScrollbar ? '7' : '2') + 'px' : 'width:7px;bottom:' + (that.hScrollbar ? '7' : '2') + 'px;top:2px;right:1px'); + + bar.style.cssText += ';pointer-events:none;-' + vendor + '-transition-property:opacity;-' + vendor + '-transition-duration:' + (that.options.fadeScrollbar ? '350ms' : '0') + ';overflow:hidden;opacity:' + (that.options.hideScrollbar ? '0' : '1'); + + that.wrapper.appendChild(bar); + that[dir + 'ScrollbarWrapper'] = bar; + + // Create the scrollbar indicator + bar = doc.createElement('div'); + if (!that.options.scrollbarClass) { + bar.style.cssText = 'position:absolute;z-index:100;background:rgba(0,0,0,0.3);border:1px solid rgba(255,255,255,0.9);-' + vendor + '-background-clip:padding-box;-' + vendor + '-box-sizing:border-box;' + (dir == 'h' ? 'height:100%' : 'width:100%') + ';-' + vendor + '-border-radius:3px;border-radius:3px'; + } + bar.style.cssText += ';pointer-events:none;-' + vendor + '-transition-property:-' + vendor + '-transform;-' + vendor + '-transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);-' + vendor + '-transition-duration:0;-' + vendor + '-transform:' + trnOpen + '0,0' + trnClose; + if (that.options.useTransition) bar.style.cssText += ';-' + vendor + '-transition-timing-function:cubic-bezier(0.33,0.66,0.66,1)'; + + that[dir + 'ScrollbarWrapper'].appendChild(bar); + that[dir + 'ScrollbarIndicator'] = bar; + } + + if (dir == 'h') { + that.hScrollbarSize = that.hScrollbarWrapper.clientWidth; + that.hScrollbarIndicatorSize = m.max(mround(that.hScrollbarSize * that.hScrollbarSize / that.scrollerW), 8); + that.hScrollbarIndicator.style.width = that.hScrollbarIndicatorSize + 'px'; + that.hScrollbarMaxScroll = that.hScrollbarSize - that.hScrollbarIndicatorSize; + that.hScrollbarProp = that.hScrollbarMaxScroll / that.maxScrollX; + } else { + that.vScrollbarSize = that.vScrollbarWrapper.clientHeight; + that.vScrollbarIndicatorSize = m.max(mround(that.vScrollbarSize * that.vScrollbarSize / that.scrollerH), 8); + that.vScrollbarIndicator.style.height = that.vScrollbarIndicatorSize + 'px'; + that.vScrollbarMaxScroll = that.vScrollbarSize - that.vScrollbarIndicatorSize; + that.vScrollbarProp = that.vScrollbarMaxScroll / that.maxScrollY; + } + + // Reset position + that._scrollbarPos(dir, true); + }, + + _resize: function () { + var that = this; + setTimeout(function () { that.refresh(); }, isAndroid ? 200 : 0); + }, + + _pos: function (x, y) { + x = this.hScroll ? x : 0; + y = this.vScroll ? y : 0; + + if (this.options.useTransform) { + this.scroller.style[vendor + 'Transform'] = trnOpen + x + 'px,' + y + 'px' + trnClose + ' scale(' + this.scale + ')'; + } else { + x = mround(x); + y = mround(y); + this.scroller.style.left = x + 'px'; + this.scroller.style.top = y + 'px'; + } + + this.x = x; + this.y = y; + + this._scrollbarPos('h'); + this._scrollbarPos('v'); + }, + + _scrollbarPos: function (dir, hidden) { + var that = this, + pos = dir == 'h' ? that.x : that.y, + size; + + if (!that[dir + 'Scrollbar']) return; + + pos = that[dir + 'ScrollbarProp'] * pos; + + if (pos < 0) { + if (!that.options.fixedScrollbar) { + size = that[dir + 'ScrollbarIndicatorSize'] + mround(pos * 3); + if (size < 8) size = 8; + that[dir + 'ScrollbarIndicator'].style[dir == 'h' ? 'width' : 'height'] = size + 'px'; + } + pos = 0; + } else if (pos > that[dir + 'ScrollbarMaxScroll']) { + if (!that.options.fixedScrollbar) { + size = that[dir + 'ScrollbarIndicatorSize'] - mround((pos - that[dir + 'ScrollbarMaxScroll']) * 3); + if (size < 8) size = 8; + that[dir + 'ScrollbarIndicator'].style[dir == 'h' ? 'width' : 'height'] = size + 'px'; + pos = that[dir + 'ScrollbarMaxScroll'] + (that[dir + 'ScrollbarIndicatorSize'] - size); + } else { + pos = that[dir + 'ScrollbarMaxScroll']; + } + } + + that[dir + 'ScrollbarWrapper'].style[vendor + 'TransitionDelay'] = '0'; + that[dir + 'ScrollbarWrapper'].style.opacity = hidden && that.options.hideScrollbar ? '0' : '1'; + that[dir + 'ScrollbarIndicator'].style[vendor + 'Transform'] = trnOpen + (dir == 'h' ? pos + 'px,0' : '0,' + pos + 'px') + trnClose; + }, + + _start: function (e) { + var that = this, + point = hasTouch ? e.touches[0] : e, + matrix, x, y, + c1, c2; + + if (!that.enabled) return; + + if (that.options.onBeforeScrollStart) that.options.onBeforeScrollStart.call(that, e); + + if (that.options.useTransition || that.options.zoom) that._transitionTime(0); + + that.moved = false; + that.animating = false; + that.zoomed = false; + that.distX = 0; + that.distY = 0; + that.absDistX = 0; + that.absDistY = 0; + that.dirX = 0; + that.dirY = 0; + + // Gesture start + if (that.options.zoom && hasTouch && e.touches.length > 1) { + c1 = m.abs(e.touches[0].pageX-e.touches[1].pageX); + c2 = m.abs(e.touches[0].pageY-e.touches[1].pageY); + that.touchesDistStart = m.sqrt(c1 * c1 + c2 * c2); + + that.originX = m.abs(e.touches[0].pageX + e.touches[1].pageX - that.wrapperOffsetLeft * 2) / 2 - that.x; + that.originY = m.abs(e.touches[0].pageY + e.touches[1].pageY - that.wrapperOffsetTop * 2) / 2 - that.y; + + if (that.options.onZoomStart) that.options.onZoomStart.call(that, e); + } + + if (that.options.momentum) { + if (that.options.useTransform) { + // Very lame general purpose alternative to CSSMatrix + matrix = getComputedStyle(that.scroller, null)[vendor + 'Transform'].replace(/[^0-9-.,]/g, '').split(','); + x = matrix[4] * 1; + y = matrix[5] * 1; + } else { + x = getComputedStyle(that.scroller, null).left.replace(/[^0-9-]/g, '') * 1; + y = getComputedStyle(that.scroller, null).top.replace(/[^0-9-]/g, '') * 1; + } + + if (x != that.x || y != that.y) { + if (that.options.useTransition) that._unbind('webkitTransitionEnd'); + else cancelFrame(that.aniTime); + that.steps = []; + that._pos(x, y); + } + } + + that.absStartX = that.x; // Needed by snap threshold + that.absStartY = that.y; + + that.startX = that.x; + that.startY = that.y; + that.pointX = point.pageX; + that.pointY = point.pageY; + + that.startTime = e.timeStamp || Date.now(); + + if (that.options.onScrollStart) that.options.onScrollStart.call(that, e); + + that._bind(MOVE_EV); + that._bind(END_EV); + that._bind(CANCEL_EV); + }, + + _move: function (e) { + var that = this, + point = hasTouch ? e.touches[0] : e, + deltaX = point.pageX - that.pointX, + deltaY = point.pageY - that.pointY, + newX = that.x + deltaX, + newY = that.y + deltaY, + c1, c2, scale, + timestamp = e.timeStamp || Date.now(); + + if (that.options.onBeforeScrollMove) that.options.onBeforeScrollMove.call(that, e); + + // Zoom + if (that.options.zoom && hasTouch && e.touches.length > 1) { + c1 = m.abs(e.touches[0].pageX - e.touches[1].pageX); + c2 = m.abs(e.touches[0].pageY - e.touches[1].pageY); + that.touchesDist = m.sqrt(c1*c1+c2*c2); + + that.zoomed = true; + + scale = 1 / that.touchesDistStart * that.touchesDist * this.scale; + + if (scale < that.options.zoomMin) scale = 0.5 * that.options.zoomMin * Math.pow(2.0, scale / that.options.zoomMin); + else if (scale > that.options.zoomMax) scale = 2.0 * that.options.zoomMax * Math.pow(0.5, that.options.zoomMax / scale); + + that.lastScale = scale / this.scale; + + newX = this.originX - this.originX * that.lastScale + this.x, + newY = this.originY - this.originY * that.lastScale + this.y; + + this.scroller.style[vendor + 'Transform'] = trnOpen + newX + 'px,' + newY + 'px' + trnClose + ' scale(' + scale + ')'; + + if (that.options.onZoom) that.options.onZoom.call(that, e); + return; + } + + that.pointX = point.pageX; + that.pointY = point.pageY; + + // Slow down if outside of the boundaries + if (newX > 0 || newX < that.maxScrollX) { + newX = that.options.bounce ? that.x + (deltaX / 2) : newX >= 0 || that.maxScrollX >= 0 ? 0 : that.maxScrollX; + } + if (newY > that.minScrollY || newY < that.maxScrollY) { + newY = that.options.bounce ? that.y + (deltaY / 2) : newY >= that.minScrollY || that.maxScrollY >= 0 ? that.minScrollY : that.maxScrollY; + } + + that.distX += deltaX; + that.distY += deltaY; + that.absDistX = m.abs(that.distX); + that.absDistY = m.abs(that.distY); + + if (that.absDistX < 6 && that.absDistY < 6) { + return; + } + + // Lock direction + if (that.options.lockDirection) { + if (that.absDistX > that.absDistY + 5) { + newY = that.y; + deltaY = 0; + } else if (that.absDistY > that.absDistX + 5) { + newX = that.x; + deltaX = 0; + } + } + + that.moved = true; + that._pos(newX, newY); + that.dirX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0; + that.dirY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0; + + if (timestamp - that.startTime > 300) { + that.startTime = timestamp; + that.startX = that.x; + that.startY = that.y; + } + + if (that.options.onScrollMove) that.options.onScrollMove.call(that, e); + }, + + _end: function (e) { + if (hasTouch && e.touches.length != 0) return; + + var that = this, + point = hasTouch ? e.changedTouches[0] : e, + target, ev, + momentumX = { dist:0, time:0 }, + momentumY = { dist:0, time:0 }, + duration = (e.timeStamp || Date.now()) - that.startTime, + newPosX = that.x, + newPosY = that.y, + distX, distY, + newDuration, + snap, + scale; + + that._unbind(MOVE_EV); + that._unbind(END_EV); + that._unbind(CANCEL_EV); + + if (that.options.onBeforeScrollEnd) that.options.onBeforeScrollEnd.call(that, e); + + if (that.zoomed) { + scale = that.scale * that.lastScale; + scale = Math.max(that.options.zoomMin, scale); + scale = Math.min(that.options.zoomMax, scale); + that.lastScale = scale / that.scale; + that.scale = scale; + + that.x = that.originX - that.originX * that.lastScale + that.x; + that.y = that.originY - that.originY * that.lastScale + that.y; + + that.scroller.style[vendor + 'TransitionDuration'] = '200ms'; + that.scroller.style[vendor + 'Transform'] = trnOpen + that.x + 'px,' + that.y + 'px' + trnClose + ' scale(' + that.scale + ')'; + + that.zoomed = false; + that.refresh(); + + if (that.options.onZoomEnd) that.options.onZoomEnd.call(that, e); + return; + } + + if (!that.moved) { + if (hasTouch) { + if (that.doubleTapTimer && that.options.zoom) { + // Double tapped + clearTimeout(that.doubleTapTimer); + that.doubleTapTimer = null; + if (that.options.onZoomStart) that.options.onZoomStart.call(that, e); + that.zoom(that.pointX, that.pointY, that.scale == 1 ? that.options.doubleTapZoom : 1); + if (that.options.onZoomEnd) { + setTimeout(function() { + that.options.onZoomEnd.call(that, e); + }, 200); // 200 is default zoom duration + } + } else { + that.doubleTapTimer = setTimeout(function () { + that.doubleTapTimer = null; + + // Find the last touched element + target = point.target; + while (target.nodeType != 1) target = target.parentNode; + + if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA') { + ev = document.createEvent('MouseEvents'); + ev.initMouseEvent('click', true, true, e.view, 1, + point.screenX, point.screenY, point.clientX, point.clientY, + e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, + 0, null); + ev._fake = true; + target.dispatchEvent(ev); + } + }, that.options.zoom ? 250 : 0); + } + } + + that._resetPos(200); + + if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); + return; + } + + if (duration < 300 && that.options.momentum) { + momentumX = newPosX ? that._momentum(newPosX - that.startX, duration, -that.x, that.scrollerW - that.wrapperW + that.x, that.options.bounce ? that.wrapperW : 0) : momentumX; + momentumY = newPosY ? that._momentum(newPosY - that.startY, duration, -that.y, (that.maxScrollY < 0 ? that.scrollerH - that.wrapperH + that.y - that.minScrollY : 0), that.options.bounce ? that.wrapperH : 0) : momentumY; + + newPosX = that.x + momentumX.dist; + newPosY = that.y + momentumY.dist; + + if ((that.x > 0 && newPosX > 0) || (that.x < that.maxScrollX && newPosX < that.maxScrollX)) momentumX = { dist:0, time:0 }; + if ((that.y > that.minScrollY && newPosY > that.minScrollY) || (that.y < that.maxScrollY && newPosY < that.maxScrollY)) momentumY = { dist:0, time:0 }; + } + + if (momentumX.dist || momentumY.dist) { + newDuration = m.max(m.max(momentumX.time, momentumY.time), 10); + + // Do we need to snap? + if (that.options.snap) { + distX = newPosX - that.absStartX; + distY = newPosY - that.absStartY; + if (m.abs(distX) < that.options.snapThreshold && m.abs(distY) < that.options.snapThreshold) { that.scrollTo(that.absStartX, that.absStartY, 200); } + else { + snap = that._snap(newPosX, newPosY); + newPosX = snap.x; + newPosY = snap.y; + newDuration = m.max(snap.time, newDuration); + } + } + + that.scrollTo(mround(newPosX), mround(newPosY), newDuration); + + if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); + return; + } + + // Do we need to snap? + if (that.options.snap) { + distX = newPosX - that.absStartX; + distY = newPosY - that.absStartY; + if (m.abs(distX) < that.options.snapThreshold && m.abs(distY) < that.options.snapThreshold) that.scrollTo(that.absStartX, that.absStartY, 200); + else { + snap = that._snap(that.x, that.y); + if (snap.x != that.x || snap.y != that.y) that.scrollTo(snap.x, snap.y, snap.time); + } + + if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); + return; + } + + that._resetPos(200); + if (that.options.onTouchEnd) that.options.onTouchEnd.call(that, e); + }, + + _resetPos: function (time) { + var that = this, + resetX = that.x >= 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x, + resetY = that.y >= that.minScrollY || that.maxScrollY > 0 ? that.minScrollY : that.y < that.maxScrollY ? that.maxScrollY : that.y; + + if (resetX == that.x && resetY == that.y) { + if (that.moved) { + that.moved = false; + if (that.options.onScrollEnd) that.options.onScrollEnd.call(that); // Execute custom code on scroll end + } + + if (that.hScrollbar && that.options.hideScrollbar) { + if (vendor == 'webkit') that.hScrollbarWrapper.style[vendor + 'TransitionDelay'] = '300ms'; + that.hScrollbarWrapper.style.opacity = '0'; + } + if (that.vScrollbar && that.options.hideScrollbar) { + if (vendor == 'webkit') that.vScrollbarWrapper.style[vendor + 'TransitionDelay'] = '300ms'; + that.vScrollbarWrapper.style.opacity = '0'; + } + + return; + } + + that.scrollTo(resetX, resetY, time || 0); + }, + + _wheel: function (e) { + var that = this, + wheelDeltaX, wheelDeltaY, + deltaX, deltaY, + deltaScale; + + if ('wheelDeltaX' in e) { + wheelDeltaX = e.wheelDeltaX / 12; + wheelDeltaY = e.wheelDeltaY / 12; + } else if('wheelDelta' in e) { + wheelDeltaX = wheelDeltaY = e.wheelDelta / 12; + } else if ('detail' in e) { + wheelDeltaX = wheelDeltaY = -e.detail * 3; + } else { + return; + } + + if (that.options.wheelAction == 'zoom') { + deltaScale = that.scale * Math.pow(2, 1/3 * (wheelDeltaY ? wheelDeltaY / Math.abs(wheelDeltaY) : 0)); + if (deltaScale < that.options.zoomMin) deltaScale = that.options.zoomMin; + if (deltaScale > that.options.zoomMax) deltaScale = that.options.zoomMax; + + if (deltaScale != that.scale) { + if (!that.wheelZoomCount && that.options.onZoomStart) that.options.onZoomStart.call(that, e); + that.wheelZoomCount++; + + that.zoom(e.pageX, e.pageY, deltaScale, 400); + + setTimeout(function() { + that.wheelZoomCount--; + if (!that.wheelZoomCount && that.options.onZoomEnd) that.options.onZoomEnd.call(that, e); + }, 400); + } + + return; + } + + deltaX = that.x + wheelDeltaX; + deltaY = that.y + wheelDeltaY; + + if (deltaX > 0) deltaX = 0; + else if (deltaX < that.maxScrollX) deltaX = that.maxScrollX; + + if (deltaY > that.minScrollY) deltaY = that.minScrollY; + else if (deltaY < that.maxScrollY) deltaY = that.maxScrollY; + + that.scrollTo(deltaX, deltaY, 0); + }, + + _mouseout: function (e) { + var t = e.relatedTarget; + + if (!t) { + this._end(e); + return; + } + + while (t = t.parentNode) if (t == this.wrapper) return; + + this._end(e); + }, + + _transitionEnd: function (e) { + var that = this; + + if (e.target != that.scroller) return; + + that._unbind('webkitTransitionEnd'); + + that._startAni(); + }, + + + /** + * + * Utilities + * + */ + _startAni: function () { + var that = this, + startX = that.x, startY = that.y, + startTime = Date.now(), + step, easeOut, + animate; + + if (that.animating) return; + + if (!that.steps.length) { + that._resetPos(400); + return; + } + + step = that.steps.shift(); + + if (step.x == startX && step.y == startY) step.time = 0; + + that.animating = true; + that.moved = true; + + if (that.options.useTransition) { + that._transitionTime(step.time); + that._pos(step.x, step.y); + that.animating = false; + if (step.time) that._bind('webkitTransitionEnd'); + else that._resetPos(0); + return; + } + + animate = function () { + var now = Date.now(), + newX, newY; + + if (now >= startTime + step.time) { + that._pos(step.x, step.y); + that.animating = false; + if (that.options.onAnimationEnd) that.options.onAnimationEnd.call(that); // Execute custom code on animation end + that._startAni(); + return; + } + + now = (now - startTime) / step.time - 1; + easeOut = m.sqrt(1 - now * now); + newX = (step.x - startX) * easeOut + startX; + newY = (step.y - startY) * easeOut + startY; + that._pos(newX, newY); + if (that.animating) that.aniTime = nextFrame(animate); + }; + + animate(); + }, + + _transitionTime: function (time) { + time += 'ms'; + this.scroller.style[vendor + 'TransitionDuration'] = time; + if (this.hScrollbar) this.hScrollbarIndicator.style[vendor + 'TransitionDuration'] = time; + if (this.vScrollbar) this.vScrollbarIndicator.style[vendor + 'TransitionDuration'] = time; + }, + + _momentum: function (dist, time, maxDistUpper, maxDistLower, size) { + var deceleration = 0.0006, + speed = m.abs(dist) / time, + newDist = (speed * speed) / (2 * deceleration), + newTime = 0, outsideDist = 0; + + // Proportinally reduce speed if we are outside of the boundaries + if (dist > 0 && newDist > maxDistUpper) { + outsideDist = size / (6 / (newDist / speed * deceleration)); + maxDistUpper = maxDistUpper + outsideDist; + speed = speed * maxDistUpper / newDist; + newDist = maxDistUpper; + } else if (dist < 0 && newDist > maxDistLower) { + outsideDist = size / (6 / (newDist / speed * deceleration)); + maxDistLower = maxDistLower + outsideDist; + speed = speed * maxDistLower / newDist; + newDist = maxDistLower; + } + + newDist = newDist * (dist < 0 ? -1 : 1); + newTime = speed / deceleration; + + return { dist: newDist, time: mround(newTime) }; + }, + + _offset: function (el) { + var left = -el.offsetLeft, + top = -el.offsetTop; + + while (el = el.offsetParent) { + left -= el.offsetLeft; + top -= el.offsetTop; + } + + if (el != this.wrapper) { + left *= this.scale; + top *= this.scale; + } + + return { left: left, top: top }; + }, + + _snap: function (x, y) { + var that = this, + i, l, + page, time, + sizeX, sizeY; + + // Check page X + page = that.pagesX.length - 1; + for (i=0, l=that.pagesX.length; i= that.pagesX[i]) { + page = i; + break; + } + } + if (page == that.currPageX && page > 0 && that.dirX < 0) page--; + x = that.pagesX[page]; + sizeX = m.abs(x - that.pagesX[that.currPageX]); + sizeX = sizeX ? m.abs(that.x - x) / sizeX * 500 : 0; + that.currPageX = page; + + // Check page Y + page = that.pagesY.length-1; + for (i=0; i= that.pagesY[i]) { + page = i; + break; + } + } + if (page == that.currPageY && page > 0 && that.dirY < 0) page--; + y = that.pagesY[page]; + sizeY = m.abs(y - that.pagesY[that.currPageY]); + sizeY = sizeY ? m.abs(that.y - y) / sizeY * 500 : 0; + that.currPageY = page; + + // Snap with constant speed (proportional duration) + time = mround(m.max(sizeX, sizeY)) || 200; + + return { x: x, y: y, time: time }; + }, + + _bind: function (type, el, bubble) { + (el || this.scroller).addEventListener(type, this, !!bubble); + }, + + _unbind: function (type, el, bubble) { + (el || this.scroller).removeEventListener(type, this, !!bubble); + }, + + + /** + * + * Public methods + * + */ + destroy: function () { + var that = this; + + that.scroller.style[vendor + 'Transform'] = ''; + + // Remove the scrollbars + that.hScrollbar = false; + that.vScrollbar = false; + that._scrollbar('h'); + that._scrollbar('v'); + + // Remove the event listeners + that._unbind(RESIZE_EV, window); + that._unbind(START_EV); + that._unbind(MOVE_EV); + that._unbind(END_EV); + that._unbind(CANCEL_EV); + + if (!that.options.hasTouch) { + that._unbind('mouseout', that.wrapper); + that._unbind(WHEEL_EV); + } + + if (that.options.useTransition) that._unbind('webkitTransitionEnd'); + + if (that.options.checkDOMChanges) clearInterval(that.checkDOMTime); + + if (that.options.onDestroy) that.options.onDestroy.call(that); + }, + + refresh: function () { + var that = this, + offset, + i, l, + els, + pos = 0, + page = 0; + + if (that.scale < that.options.zoomMin) that.scale = that.options.zoomMin; + that.wrapperW = that.wrapper.clientWidth || 1; + that.wrapperH = that.wrapper.clientHeight || 1; + + that.minScrollY = -that.options.topOffset || 0; + that.scrollerW = mround(that.scroller.offsetWidth * that.scale); + that.scrollerH = mround((that.scroller.offsetHeight + that.minScrollY) * that.scale); + that.maxScrollX = that.wrapperW - that.scrollerW; + that.maxScrollY = that.wrapperH - that.scrollerH + that.minScrollY; + that.dirX = 0; + that.dirY = 0; + + if (that.options.onRefresh) that.options.onRefresh.call(that); + + that.hScroll = that.options.hScroll && that.maxScrollX < 0; + that.vScroll = that.options.vScroll && (!that.options.bounceLock && !that.hScroll || that.scrollerH > that.wrapperH); + + that.hScrollbar = that.hScroll && that.options.hScrollbar; + that.vScrollbar = that.vScroll && that.options.vScrollbar && that.scrollerH > that.wrapperH; + + offset = that._offset(that.wrapper); + that.wrapperOffsetLeft = -offset.left; + that.wrapperOffsetTop = -offset.top; + + // Prepare snap + if (typeof that.options.snap == 'string') { + that.pagesX = []; + that.pagesY = []; + els = that.scroller.querySelectorAll(that.options.snap); + for (i=0, l=els.length; i= that.maxScrollX) { + that.pagesX[page] = pos; + pos = pos - that.wrapperW; + page++; + } + if (that.maxScrollX%that.wrapperW) that.pagesX[that.pagesX.length] = that.maxScrollX - that.pagesX[that.pagesX.length-1] + that.pagesX[that.pagesX.length-1]; + + pos = 0; + page = 0; + that.pagesY = []; + while (pos >= that.maxScrollY) { + that.pagesY[page] = pos; + pos = pos - that.wrapperH; + page++; + } + if (that.maxScrollY%that.wrapperH) that.pagesY[that.pagesY.length] = that.maxScrollY - that.pagesY[that.pagesY.length-1] + that.pagesY[that.pagesY.length-1]; + } + + // Prepare the scrollbars + that._scrollbar('h'); + that._scrollbar('v'); + + if (!that.zoomed) { + that.scroller.style[vendor + 'TransitionDuration'] = '0'; + that._resetPos(200); + } + }, + + scrollTo: function (x, y, time, relative) { + var that = this, + step = x, + i, l; + + that.stop(); + + if (!step.length) step = [{ x: x, y: y, time: time, relative: relative }]; + + for (i=0, l=step.length; i 0 ? 0 : pos.left < that.maxScrollX ? that.maxScrollX : pos.left; + pos.top = pos.top > that.minScrollY ? that.minScrollY : pos.top < that.maxScrollY ? that.maxScrollY : pos.top; + time = time === undefined ? m.max(m.abs(pos.left)*2, m.abs(pos.top)*2) : time; + + that.scrollTo(pos.left, pos.top, time); + }, + + scrollToPage: function (pageX, pageY, time) { + var that = this, x, y; + + time = time === undefined ? 400 : time; + + if (that.options.onScrollStart) that.options.onScrollStart.call(that); + + if (that.options.snap) { + pageX = pageX == 'next' ? that.currPageX+1 : pageX == 'prev' ? that.currPageX-1 : pageX; + pageY = pageY == 'next' ? that.currPageY+1 : pageY == 'prev' ? that.currPageY-1 : pageY; + + pageX = pageX < 0 ? 0 : pageX > that.pagesX.length-1 ? that.pagesX.length-1 : pageX; + pageY = pageY < 0 ? 0 : pageY > that.pagesY.length-1 ? that.pagesY.length-1 : pageY; + + that.currPageX = pageX; + that.currPageY = pageY; + x = that.pagesX[pageX]; + y = that.pagesY[pageY]; + } else { + x = -that.wrapperW * pageX; + y = -that.wrapperH * pageY; + if (x < that.maxScrollX) x = that.maxScrollX; + if (y < that.maxScrollY) y = that.maxScrollY; + } + + that.scrollTo(x, y, time); + }, + + disable: function () { + this.stop(); + this._resetPos(0); + this.enabled = false; + + // If disabled after touchstart we make sure that there are no left over events + this._unbind(MOVE_EV); + this._unbind(END_EV); + this._unbind(CANCEL_EV); + }, + + enable: function () { + this.enabled = true; + }, + + stop: function () { + if (this.options.useTransition) this._unbind('webkitTransitionEnd'); + else cancelFrame(this.aniTime); + this.steps = []; + this.moved = false; + this.animating = false; + }, + + zoom: function (x, y, scale, time) { + var that = this, + relScale = scale / that.scale; + + if (!that.options.useTransform) return; + + that.zoomed = true; + time = time === undefined ? 200 : time; + x = x - that.wrapperOffsetLeft - that.x; + y = y - that.wrapperOffsetTop - that.y; + that.x = x - x * relScale + that.x; + that.y = y - y * relScale + that.y; + + that.scale = scale; + that.refresh(); + + that.x = that.x > 0 ? 0 : that.x < that.maxScrollX ? that.maxScrollX : that.x; + that.y = that.y > that.minScrollY ? that.minScrollY : that.y < that.maxScrollY ? that.maxScrollY : that.y; + + that.scroller.style[vendor + 'TransitionDuration'] = time + 'ms'; + that.scroller.style[vendor + 'Transform'] = trnOpen + that.x + 'px,' + that.y + 'px' + trnClose + ' scale(' + scale + ')'; + that.zoomed = false; + }, + + isReady: function () { + return !this.moved && !this.zoomed && !this.animating; + } +}; + +if (typeof exports !== 'undefined') exports.iScroll = iScroll; +else window.iScroll = iScroll; + +})(); +bb.menuBar = { + height: 100, + menuOpen: false, + menu: false, + + apply: function(menuBar,screen){ + if (bb.device.isPlayBook || bb.device.isBB10) { + bb.menuBar.createSwipeMenu(menuBar,screen); + menuBar.parentNode.removeChild(menuBar); + if (window.blackberry){ + if(bb.device.isPlayBook && blackberry.app.event) { + blackberry.app.event.onSwipeDown(bb.menuBar.showMenuBar); + }else if(bb.device.isBB10 && blackberry.app){ + blackberry.event.addEventListener("swipedown", bb.menuBar.showMenuBar); + } + } + }else if(window.blackberry && blackberry.ui.menu){ + bb.menuBar.createBlackberryMenu(menuBar); + menuBar.parentNode.removeChild(menuBar); + }else{ + console.log('Unable to create Blackberry/onSwipeDown menu.'); + } + }, + + createBlackberryMenu: function(menuBar){ + var items, + item, + title, + div; + items = menuBar.getElementsByTagName('div'); + for (var j = 0; j < items.length; j++) { + div = items[j]; + if(div.getAttribute('data-bb-type') === "menu-item"){ + title = div.innerHTML; + if(title){ + item = new blackberry.ui.menu.MenuItem(false, j, title, div.onclick); + blackberry.ui.menu.addMenuItem(item); + if(div.hasAttribute('data-bb-selected') && div.getAttribute('data-bb-selected') === "true"){ + blackberry.ui.menu.setDefaultMenuItem(item); + } + }else{ + console.log("can't add menu item without data-bb-caption"); + } + }else if(div.getAttribute('data-bb-type') === "menu-separator"){ + item = new blackberry.ui.menu.MenuItem(true, j); + blackberry.ui.menu.addMenuItem(item); + }else{ + console.log('invalid menu item type'); + } + } + }, + + createSwipeMenu: function(menuBar, screen){ + // Get our resolution text for BB10 styling + if (bb.device.isBB10) { + var bb10Menu = document.createElement('div'), + res, + i, + type, + item, + foundItems = [], + img, + imgPath, + caption, + div, + width, + bb10MenuItem; + + if (bb.device.isPlayBook) { + res = 'lowres'; + bb.menuBar.height = 100; + } else { + res = 'hires'; + bb.menuBar.height = 140; + } + + bb10Menu.setAttribute('class','bb-bb10-menu-bar-'+res+' bb-bb10-menu-bar-'+bb.actionBar.color); + items = menuBar.querySelectorAll('[data-bb-type=menu-item]'); + if(items.length > 0){ + for (i = 0; i < items.length; i++) { + item = items[i]; + type = item.hasAttribute('data-bb-type') ? item.getAttribute('data-bb-type').toLowerCase() : undefined; + // Get our menu items + if (type == 'menu-item') { + caption = item.innerHTML; + imgPath = item.getAttribute('data-bb-img'); + // If the item doesn't have both an image and text then remove it + if ((caption && imgPath) && (foundItems.length < 5)) { + // BB10 menus only allow 5 items max + bb10MenuItem = document.createElement("div"); + foundItems.push(bb10MenuItem); + // Set our item information + bb10MenuItem.setAttribute('class','bb-bb10-menu-bar-item-'+res); + item.innerHTML = ''; + // Add the image + img = document.createElement('img'); + img.setAttribute('src',imgPath); + bb10MenuItem.appendChild(img); + // Add the caption + div = document.createElement('div'); + div.setAttribute('class','bb-bb10-menu-bar-item-caption-'+res); + div.innerHTML = caption; + bb10MenuItem.appendChild(div); + + // Assign any click handlers + bb10MenuItem.onclick = item.onclick; + bb10Menu.appendChild(bb10MenuItem); + } else { + if(foundItems.length >= 5){ + console.log('too many menu items.'); + } else { + console.log('missing menu item caption or image.'); + } + } + } else { + console.log('invalid menu item type for bb10'); + } + } + } + // Now apply the widths since we now know how many there are + if (foundItems.length > 0) { + width = Math.floor(100/foundItems.length); + for (i = 0; i < foundItems.length;i++) { + item = foundItems[i]; + if (i == foundItems.length -1) { + item.style.width = width - 1 +'%'; + item.style.float = 'right'; + } else { + item.style.width = width +'%'; + } + } + } else { + bb10Menu.style.display = 'none'; + bb.menuBar.menu = null; + } + + // Set the size of the menu bar and assign the lstener + bb10Menu.style['-webkit-transform'] = 'translate(0,0)'; + bb10Menu.addEventListener('click', bb.menuBar.onMenuBarClicked, false); + document.body.appendChild(bb10Menu); + // Assign the menu + bb.menuBar.menu = bb10Menu; + } else { + var pbMenu = document.createElement('div'), + items, + pbMenuInner, + j, + item, + img, + title, + div, + br, + pbMenuItem; + pbMenu.setAttribute('class','pb-menu-bar'); + // See if there are any items declared + items = menuBar.getElementsByTagName('div'); + if(items.length > 0){ + pbMenuInner = document.createElement("ul"); + pbMenu.appendChild(pbMenuInner); + // Loop through our menu items + for (j = 0; j < items.length; j++) { + item = items[j]; + if(item.getAttribute('data-bb-type') === "menu-item"){ + // Assign our values + title = item.innerHTML + iconPath = item.getAttribute('data-bb-img'); + + // If they don't hav both an icon and a title ignore the item + if (title && iconPath) { + // Create our item + pbMenuItem = document.createElement("li"); + item.innerHTML = ''; + + // Get our image + img = new Image(); + img.src = iconPath; + pbMenuItem.appendChild(img); + + // Add our caption + div = document.createElement('div'); + div.setAttribute('class','pb-menu-bar-caption'); + div.innerText = title; + pbMenuItem.appendChild(div); + + // Assign any click handlers + pbMenuItem.onclick = item.onclick; + pbMenuInner.appendChild(pbMenuItem); + } + } else if(item.getAttribute('data-bb-type') === "menu-separator"){ + pbMenuInner = document.createElement('ul'); + pbMenu.appendChild(pbMenuInner); + } else{ + console.log('invalid menu item type'); + } + } + } + // Set the size of the menu bar and assign the lstener + pbMenu.style['-webkit-transform'] = 'translate(0,0)'; + pbMenu.addEventListener('click', bb.menuBar.onMenuBarClicked, false); + document.body.appendChild(pbMenu); + // Assign the menu + bb.menuBar.menu = pbMenu; + } + + // Add the overlay for trapping clicks on items below + if (!bb.screen.overlay) { + bb.screen.overlay = document.createElement('div'); + bb.screen.overlay.setAttribute('class','bb-bb10-context-menu-overlay'); + } + screen.appendChild(bb.screen.overlay); + bb.menuBar.menu.overlay = bb.screen.overlay; + }, + + showMenuBar: function(){ + if(!bb.menuBar.menuOpen){ + bb.menuBar.menu.overlay.style.display = 'inline'; + if(bb.device.isPlayBook){ + blackberry.app.event.onSwipeDown(bb.menuBar.hideMenuBar); + }else if(bb.device.isBB10){ + blackberry.event.removeEventListener("swipedown", bb.menuBar.showMenuBar); + blackberry.event.addEventListener("swipedown", bb.menuBar.hideMenuBar); + } + bb.menuBar.menu.style['-webkit-transition'] = 'all 0.5s ease-in-out'; + bb.menuBar.menu.style['-webkit-transform'] = 'translate(0, ' + (bb.menuBar.height + 3) + 'px)'; + bb.menuBar.menuOpen = true; + bb.menuBar.menu.overlay.addEventListener('touchstart', bb.menuBar.overlayTouchHandler, false); + } + }, + + hideMenuBar: function(){ + if(bb.menuBar.menuOpen){ + bb.menuBar.menu.overlay.style.display = 'none'; + if(bb.device.isPlayBook){ + blackberry.app.event.onSwipeDown(bb.menuBar.showMenuBar); + }else if(bb.device.isBB10){ + blackberry.event.removeEventListener("swipedown", bb.menuBar.hideMenuBar); + blackberry.event.addEventListener("swipedown", bb.menuBar.showMenuBar); + } + bb.menuBar.menu.style['-webkit-transition'] = 'all 0.5s ease-in-out'; + bb.menuBar.menu.style['-webkit-transform'] = 'translate(0, -' + (bb.menuBar.height + 3) + 'px)'; + bb.menuBar.menuOpen = false; + bb.menuBar.menu.overlay.removeEventListener('touchstart', bb.menuBar.overlayTouchHandler, false); + } + }, + + overlayTouchHandler: function(event){ + event.preventDefault(); + event.stopPropagation(); + bb.menuBar.hideMenuBar(); + }, + + onMenuBarClicked: function () { + bb.menuBar.hideMenuBar(); + }, + + clearMenu: function(){ + if(window.blackberry){ + if(bb.menuBar.menu && (bb.device.isPlayBook || bb.device.isBB10)){ + if (bb.device.isPlayBook && blackberry.app.event) { + blackberry.app.event.onSwipeDown(''); + }else if(bb.device.isBB10 && blackberry.app){ + blackberry.event.removeEventListener("swipedown", bb.menuBar.showMenuBar); + blackberry.event.removeEventListener("swipedown", bb.menuBar.hideMenuBar); + } + bb.menuBar.menu.parentNode.removeChild(bb.menuBar.menu); + bb.menuBar.menu = false; + bb.menuBar.menuOpen = false; + }else if(blackberry.ui && blackberry.ui.menu){ + blackberry.ui.menu.clearMenuItems(); + } + } + } +}; + +_bb_progress = { + + NORMAL : 0, + PAUSED : 1, + ERROR : 2, + + apply: function(elements) { + for (var i = 0; i < elements.length; i++) { + bb.progress.style(elements[i]); + } + }, + + // Style individual item + style: function(progress) { + var res, + color, + highlightColor, + accentColor, + NORMAL = 0, + PAUSED = 1, + ERROR = 2; + + if (bb.device.isBB10) { + res = (bb.device.isPlayBook) ? 'lowres' : 'hires', + color = bb.screen.controlColor; + highlightColor = bb.options.highlightColor; + accentColor = bb.options.shades.darkHighlight; + } else { + res = 'lowres'; + color = 'light'; + highlightColor = (bb.device.isPlayBook) ? bb.options.highlightColor : '#92B43B'; + accentColor = '#8FB03B'; + } + + // Create our container div + outerElement = document.createElement('div'); + outerElement.progress = progress; + outerElement.state = bb.progress.NORMAL; + if (progress.parentNode) { + progress.parentNode.insertBefore(outerElement, progress); + } + progress.style.display = 'none'; + outerElement.appendChild(progress); + // Get our values + outerElement.maxValue = progress.hasAttribute('max') ? parseInt(progress.getAttribute('max')) : 0; + outerElement.value = progress.hasAttribute('value') ? parseInt(progress.getAttribute('value')) : 0; + // Set our styling and create the inner divs + outerElement.className = 'bb-progress'; + outerElement.outer = document.createElement('div'); + outerElement.outer.setAttribute('class','outer bb-progress-outer-' + color + ' bb-progress-outer-idle-background-' + color); + outerElement.appendChild(outerElement.outer); + outerElement.fill = document.createElement('div'); + if (bb.device.isBB10) { + outerElement.fill.normal = 'bb-progress-fill bb10Highlight'; + } else { + outerElement.fill.normal = 'bb-progress-fill bbProgressHighlight'; + } + outerElement.fill.setAttribute('class',outerElement.fill.normal); + outerElement.outer.appendChild(outerElement.fill); + outerElement.inner = document.createElement('div'); + outerElement.inner.className = 'inner'; + outerElement.outer.appendChild(outerElement.inner); + + // Assign our function to set the value for the control + progress.outerElement = outerElement; + progress.setValue = function(value) { + var percent = 0, + width, + xpos; + if ((value && (value < 0)) || (value && (value > parseInt(this.outerElement.maxValue)))) { + return; + } else if (value) { + this.outerElement.value = value; + this.value = value; + } else if (value == 0) { + this.outerElement.value = 0; + this.value = 0; + } else { + value = parseInt(this.outerElement.value); + } + + // Calculate percentage and styling + if (value == this.outerElement.maxValue) { + this.outerElement.fill.style.background = '-webkit-gradient(linear, center top, center bottom, from(' + accentColor+ '), to('+highlightColor+'))'; + percent = 1; + } else if (value == 0) { + this.outerElement.outer.setAttribute('class','outer bb-progress-outer-' + color + ' bb-progress-outer-idle-background-' + color); + } else { + if (this.outerElement.state == bb.progress.PAUSED) { + this.outerElement.fill.style.background = '-webkit-gradient(linear, center top, center bottom, from(#EDC842), to(#BA991E))'; + } else if (this.outerElement.state == bb.progress.ERROR) { + this.outerElement.fill.style.background = '-webkit-gradient(linear, center top, center bottom, from( #E04242), to(#D91111))'; + } else { + this.outerElement.outer.setAttribute('class','outer bb-progress-outer-' + color); + this.outerElement.fill.setAttribute('class',this.outerElement.fill.normal); + this.outerElement.fill.style.background =''; + } + percent = (this.outerElement.value/parseInt(this.outerElement.maxValue)); + } + + // Determine width by percentage + xpos = Math.floor(parseInt(window.getComputedStyle(this.outerElement.outer).width) * percent); + this.outerElement.fill.style.width = xpos + 'px'; + }; + progress.setValue = progress.setValue.bind(progress); + + // Set the state of the control + progress.setState = function(state) { + this.outerElement.state = state; + this.setValue(); + }; + progress.setState = progress.setState.bind(progress); + + // Add our show function + progress.show = function() { + this.outerElement.style.display = 'block'; + bb.refresh(); + }; + progress.show = progress.show.bind(progress); + + // Add our hide function + progress.hide = function() { + this.outerElement.style.display = 'none'; + bb.refresh(); + }; + progress.hide = progress.hide.bind(progress); + + // Add remove function + progress.remove = function() { + this.outerElement.parentNode.removeChild(this.outerElement); + bb.refresh(); + }; + progress.remove = progress.remove.bind(progress); + + // Add setMax function + progress.setMax = function(value) { + if (!value || (value < 0) || (value == this.max)) return; + this.max = value; + this.outerElement.maxValue = value; + }; + progress.setMax = progress.setMax.bind(progress); + + // Set our value on a timeout so that it can calculate width once in the DOM + window.setTimeout(progress.setValue, 0); + outerElement.doOrientationChange = function() { + window.setTimeout(this.progress.setValue, 0); + }; + outerElement.doOrientationChange = outerElement.doOrientationChange.bind(outerElement); + // Assign our document event listeners + window.addEventListener('resize', outerElement.doOrientationChange,false); + + return outerElement; + } +}; +bb.screen = { + scriptCounter: 0, + totalScripts: 0, + controlColor: 'light', + listColor: 'light', + overlay : null, + tabOverlay : null, + contextMenu : null, + animating : false, + + apply: function(elements) { + var screenRes, + outerElement; + // Reset our context Menu + bb.screen.contextMenu = null; + + if (bb.device.isBB10 && bb.device.isPlayBook) { + screenRes = 'bb-bb10-lowres-screen'; + } else if (bb.device.isBB10) { + screenRes = 'bb-bb10-hires-screen'; + } else if (bb.device.isHiRes) { + screenRes = 'bb-hires-screen'; + } + + for (var i = 0; i < elements.length; i++) { + outerElement = elements[i]; + + // Set our screen resolution + outerElement.setAttribute('class', screenRes); + + //check to see if a menu/menuBar needs to be created + var menuBar = outerElement.querySelectorAll('[data-bb-type=menu]'); + if (menuBar.length > 0) { + menuBar = menuBar[0]; + bb.menuBar.apply(menuBar,outerElement); + } + + if (bb.device.isBB10) { + var titleBar = outerElement.querySelectorAll('[data-bb-type=title]'), + actionBar = outerElement.querySelectorAll('[data-bb-type=action-bar]'), + context = outerElement.querySelectorAll('[data-bb-type=context-menu]'), + outerScrollArea, + scrollArea, + tempHolder = [], + childNode = null, + j, + actionBarHeight = (bb.device.isPlayBook) ? 73 : 140, + titleBarHeight = (bb.device.isPlayBook) ? 65 : 111; + + // Figure out what to do with the title bar + if (titleBar.length > 0) { + titleBar = titleBar[0]; + } else { + titleBar = null; + } + + // Assign our action bar + if (actionBar.length > 0) { + actionBar = actionBar[0]; + outerElement.actionBar = actionBar; + } else { + actionBar = null; + } + + // Create our scrollable
+ outerScrollArea = document.createElement('div'); + outerElement.appendChild(outerScrollArea); + // Turn off scrolling effects if they don't want them + if (!outerElement.hasAttribute('data-bb-scroll-effect') || outerElement.getAttribute('data-bb-scroll-effect').toLowerCase() != 'off') { + outerElement.bbUIscrollWrapper = outerScrollArea; + } + + // Inner Scroll Area + scrollArea = document.createElement('div'); + outerScrollArea.appendChild(scrollArea); + + // Copy all nodes in the screen that are not the action bar + for (j = 0; j < outerElement.childNodes.length - 1; j++) { + childNode = outerElement.childNodes[j]; + if ((childNode != actionBar) && (childNode != menuBar) && (childNode != titleBar)) { + tempHolder.push(childNode); + } + } + // Add them into the scrollable area + for (j = 0; j < tempHolder.length -1; j++) { + scrollArea.appendChild(tempHolder[j]); + } + + // Set our outer scroll area dimensions + if (titleBar && actionBar) { + outerScrollArea.style['overflow'] = 'auto'; + outerScrollArea.style['position'] = 'absolute'; + outerScrollArea.style['bottom'] = actionBarHeight+ 'px'; + outerScrollArea.style['top'] = titleBarHeight + 'px'; + outerScrollArea.style['left'] = '0px'; + outerScrollArea.style['right'] = '0px'; + } else if (titleBar) { + outerScrollArea.style['overflow'] = 'auto'; + outerScrollArea.style['position'] = 'absolute'; + outerScrollArea.style['bottom'] = '0px'; + outerScrollArea.style['top'] = titleBarHeight + 'px'; + outerScrollArea.style['left'] = '0px'; + outerScrollArea.style['right'] = '0px'; + } else if (actionBar) { + outerScrollArea.style['overflow'] = 'auto'; + outerScrollArea.style['position'] = 'absolute'; + outerScrollArea.style['bottom'] = actionBarHeight+ 'px'; + outerScrollArea.style['top'] = '0px'; + outerScrollArea.style['left'] = '0px'; + outerScrollArea.style['right'] = '0px'; + } else { + outerScrollArea.setAttribute('style','overflow:auto;bottom:0px;position:absolute;top:0px;left:0px;right:0px;'); + outerScrollArea.style['overflow'] = 'auto'; + outerScrollArea.style['position'] = 'absolute'; + outerScrollArea.style['bottom'] = '0px'; + outerScrollArea.style['top'] = '0px'; + outerScrollArea.style['left'] = '0px'; + outerScrollArea.style['right'] = '0px'; + } + + // Apply any title bar styling + if (titleBar) { + bb.titleBar.apply(titleBar); + } + + // Apply any action Bar styling + if (actionBar) { + bb.actionBar.apply(actionBar,outerElement); + } + + // Assign our context + if (context.length > 0) { + bb.screen.processContext(context[0], outerElement); + } else { + context = null; + } + } + else if (bb.device.isPlayBook) { + var titleBar = outerElement.querySelectorAll('[data-bb-type=title]'), + outerScrollArea, + scrollArea, + tempHolder = [], + childNode = null, + j, + actionBar = outerElement.querySelectorAll('[data-bb-type=action-bar]'), + context = outerElement.querySelectorAll('[data-bb-type=context-menu]'); + + // Remove any BB10 context menus or action bars from sight + for (j = 0; j < actionBar.length; j++) { + actionBar[j].style.display = 'none'; + } + for (j = 0; j < context.length; j++) { + context[j].style.display = 'none'; + } + + if (titleBar.length > 0) { + titleBar = titleBar[0]; } + else { + titleBar = null; + } + + // Create our scrollable
+ outerScrollArea = document.createElement('div'); + outerElement.appendChild(outerScrollArea); + // Turn off scrolling effects if they don't want them + if (!outerElement.hasAttribute('data-bb-scroll-effect') || outerElement.getAttribute('data-bb-scroll-effect').toLowerCase() != 'off') { + outerElement.bbUIscrollWrapper = outerScrollArea; + } + // Inner Scroll Area + scrollArea = document.createElement('div'); + outerScrollArea.appendChild(scrollArea); + + // Copy all nodes that are not the title bar + for (j = 0; j < outerElement.childNodes.length - 1; j++) { + childNode = outerElement.childNodes[j]; + if (childNode != titleBar) { + tempHolder.push(childNode); + } + } + // Add them into the scrollable area + for (j = 0; j < tempHolder.length -1; j++) { + scrollArea.appendChild(tempHolder[j]); + } + + if (titleBar) { + outerScrollArea.style['overflow'] = 'auto'; + outerScrollArea.style['bottom'] = '0px'; + outerScrollArea.style['position'] = 'absolute'; + outerScrollArea.style['top'] = '55px'; + outerScrollArea.style['left'] = '0px'; + outerScrollArea.style['right'] = '0px'; + bb.titleBar.apply(titleBar); + } + else { + outerScrollArea.setAttribute('style','overflow:auto;bottom:0px;position:absolute;top:0px;left:0px;right:0px;'); + outerScrollArea.style['overflow'] = 'auto'; + outerScrollArea.style['bottom'] = '0px'; + outerScrollArea.style['position'] = 'absolute'; + outerScrollArea.style['top'] = '0px'; + outerScrollArea.style['left'] = '0px'; + outerScrollArea.style['right'] = '0px'; + } + } + else { + // See if there is a title bar + var titleBar = outerElement.querySelectorAll('[data-bb-type=title]'), + actionBar = outerElement.querySelectorAll('[data-bb-type=action-bar]'), + context = outerElement.querySelectorAll('[data-bb-type=context-menu]'); + + + // Remove any BB10 context menus or action bars from sight + for (j = 0; j < actionBar.length; j++) { + actionBar[j].style.display = 'none'; + } + for (j = 0; j < context.length; j++) { + context[j].style.display = 'none'; + } + + if (titleBar.length > 0) { + titleBar = titleBar[0]; + bb.titleBar.apply(titleBar); + } + } + + // Set refresh + outerElement.refresh = function() { + if (!bb.scroller) return; + bb.scroller.refresh(); + }; + outerElement.refresh = outerElement.refresh.bind(outerElement); + // Set ScrollTo + outerElement.scrollTo = function(x, y) { + if (bb.scroller) { + bb.scroller.scrollTo(x, y); + } else if (bb.device.isBB10) { + this.bbUIscrollWrapper.scrollTop = x; + } + }; + outerElement.scrollTo = outerElement.scrollTo.bind(outerElement); + // Set ScrollToElement + outerElement.scrollToElement = function(element) { + if (bb.scroller) { + bb.scroller.scrollToElement(element); + } else if (bb.device.isBB10) { + if (!element) return; + this.scrollTo(element.offsetTop); + } + }; + outerElement.scrollToElement = outerElement.scrollToElement.bind(outerElement); + } + }, + + // Process all of the context menu code + processContext : function (context, screen) { + screen.appendChild(context); + context.menu = bb.contextMenu.create(screen); + context.appendChild(context.menu); + bb.screen.contextMenu = context.menu; + // Add the actions + var actions = context.querySelectorAll('[data-bb-type=action]'), + i; + for (i = 0; i < actions.length; i++) { + context.menu.add(actions[i]); + } + context.menu.centerMenuItems(); + }, + + fadeIn: function (screen) { + // set default values + var duration = 0.3, + timing = 'ease-out', + s = screen.style; + s['-webkit-animation-name'] = 'bbUI-fade-in'; + s['-webkit-animation-duration'] = duration + 's'; + s['-webkit-animation-timing-function'] = timing; + s['-webkit-transform'] = 'translate3d(0,0,0)'; + s['-webkit-backface-visibility'] = 'hidden'; + }, + + fadeOut: function (screen) { + // set default values + var duration = 0.3, + timing = 'ease-out', + s = screen.style; + s['-webkit-animation-name'] = 'bbUI-fade-out'; + s['-webkit-animation-duration'] = duration + 's'; + s['-webkit-animation-timing-function'] = timing; + s['-webkit-transform'] = 'translate3d(0,0,0)'; + s['-webkit-backface-visibility'] = 'hidden'; + }, + + slideLeft: function (screen) { + // set default values + var r = 0, + duration = 0.3, + timing = 'ease-out', + s = screen.style; + + s.width = bb.innerWidth()+'px'; + s['-webkit-animation-name'] = 'bbUI-slide-left'; + s['-webkit-animation-duration'] = duration + 's'; + s['-webkit-animation-timing-function'] = timing; + s['-webkit-transform'] = 'translate3d(0,0,0)'; + s['-webkit-backface-visibility'] = 'hidden'; + }, + + slideOutLeft: function (screen) { + // set default values + var r = 0, + duration = 0.3, + timing = 'ease-out', + s = screen.style; + + s.width = bb.innerWidth()+'px'; + s['-webkit-animation-name'] = 'bbUI-slide-out-left'; + s['-webkit-animation-duration'] = duration + 's'; + s['-webkit-animation-timing-function'] = timing; + s['-webkit-transform'] = 'translate3d(0,0,0)'; + s['-webkit-backface-visibility'] = 'hidden'; + }, + + slideRight: function (screen) { + // set default values + var r = 0, + duration = 0.3, + timing = 'ease-out', + s = screen.style; + + s.width = bb.innerWidth()+'px'; + s['-webkit-animation-name'] = 'bbUI-slide-right'; + s['-webkit-animation-duration'] = duration + 's'; + s['-webkit-animation-timing-function'] = timing; + s['-webkit-transform'] = 'translate3d(0,0,0)'; + s['-webkit-backface-visibility'] = 'hidden'; + }, + + slideOutRight: function (screen) { + // set default values + var r = 0, + duration = 0.3, + timing = 'ease-out', + s = screen.style; + + s.width = bb.innerWidth()+'px'; + s['-webkit-animation-name'] = 'bbUI-slide-out-right'; + s['-webkit-animation-duration'] = duration + 's'; + s['-webkit-animation-timing-function'] = timing; + s['-webkit-transform'] = 'translate3d(0,0,0)'; + s['-webkit-backface-visibility'] = 'hidden'; + }, + + slideUp: function (screen) { + // set default values + var r = 0, + duration = 0.3, + timing = 'ease-out', + s = screen.style; + + s.height = bb.innerHeight()+'px'; + s['-webkit-animation-name'] = 'bbUI-slide-up'; + s['-webkit-animation-duration'] = duration + 's'; + s['-webkit-animation-timing-function'] = timing; + s['-webkit-transform'] = 'translate3d(0,0,0)'; + s['-webkit-backface-visibility'] = 'hidden'; + }, + + slideOutUp: function (screen) { + // set default values + var r = 0, + duration = 0.3, + timing = 'ease-out', + s = screen.style; + + s.height = bb.innerHeight()+'px'; + s['-webkit-animation-name'] = 'bbUI-slide-out-up'; + s['-webkit-animation-duration'] = duration + 's'; + s['-webkit-animation-timing-function'] = timing; + s['-webkit-transform'] = 'translate3d(0,0,0)'; + s['-webkit-backface-visibility'] = 'hidden'; + }, + + slideDown: function (screen) { + // set default values + var r = 0, + duration = 0.3, + timing = 'ease-out', + s = screen.style; + + s.height = bb.innerHeight()+'px'; + s['-webkit-animation-name'] = 'bbUI-slide-down'; + s['-webkit-animation-duration'] = duration + 's'; + s['-webkit-animation-timing-function'] = timing; + s['-webkit-transform'] = 'translate3d(0,0,0)'; + s['-webkit-backface-visibility'] = 'hidden'; + }, + + slideOutDown: function (screen) { + // set default values + var r = 0, + duration = 0.3, + timing = 'ease-out', + s = screen.style; + + s.height = bb.innerHeight()+'px'; + s['-webkit-animation-name'] = 'bbUI-slide-out-down'; + s['-webkit-animation-duration'] = duration + 's'; + s['-webkit-animation-timing-function'] = timing; + s['-webkit-transform'] = 'translate3d(0,0,0)'; + s['-webkit-backface-visibility'] = 'hidden'; + }, + + + reAdjustHeight: function() { + // perform device specific formatting + if (bb.device.isBB5) { + document.body.style.height = screen.height - 27 + 'px'; + } + else if (bb.device.isBB6) { + document.body.style.height = screen.height - 17 + 'px'; + } + else if (bb.device.isBB7 && (navigator.appVersion.indexOf('Ripple') < 0)) { + document.body.style.height = screen.height + 'px'; + } + } + +}; +bb.tabOverflow = { + + create : function(screen) { + var menu = document.createElement('div'), + overlay; + menu.screen = screen; + menu.itemClicked = false; + menu.visible = false; + menu.actions = []; + menu.tabOverflowState = { + display : undefined, + img : undefined, + style : undefined, + caption : undefined + }; + menu.res = (bb.device.isPlayBook) ? 'lowres' : 'hires'; + menu.setAttribute('class','bb-bb10-tab-overflow-menu bb-bb10-tab-overflow-menu-'+bb.actionBar.color); + screen.parentNode.appendChild(menu); + + if (!bb.screen.tabOverlay) { + overlay = document.createElement('div'); + overlay.menu = menu; + bb.screen.tabOverlay = overlay; + overlay.setAttribute('class','bb-bb10-tab-overflow-menu-overlay '); + screen.appendChild(overlay); + + // Hide the menu on touch + overlay.ontouchstart = function() { + this.menu.hide(); + }; + + } + menu.overlay = bb.screen.tabOverlay; + + menu.show = function() { + this.itemClicked = false; + this.visible = true; + var tabOverflowBtn = this.actionBar.tabOverflowBtn; + this.tabOverflowState.display = tabOverflowBtn.tabHighlight.style.display; + this.tabOverflowState.img = tabOverflowBtn.icon.src; + this.tabOverflowState.caption = tabOverflowBtn.display.innerHTML; + this.tabOverflowState.style = tabOverflowBtn.icon.getAttribute('class'); + this.setDimensions(); + // Reset our overflow menu button + tabOverflowBtn.reset(); + }; + menu.show = menu.show.bind(menu); + + // Adjust the dimensions of the menu and screen + menu.setDimensions = function() { + var width = (bb.device.isPlayBook) ? bb.innerWidth() - 77 : bb.innerWidth() - 154; + // Set our screen's parent to have no overflow so the browser doesn't think it needs to scroll + this.screen.parentNode.style.position = 'absolute'; + this.screen.parentNode.style.left = '0px'; + this.screen.parentNode.style.top = '0px'; + this.screen.parentNode.style.bottom = '0px'; + this.screen.parentNode.style.right = '0px'; + this.screen.parentNode.style.width = '100%'; + this.screen.parentNode.style['overflow'] = 'hidden'; + // Make our overlay visible + this.overlay.style.display = 'block'; + // Show our menu + this.style.width = width + 'px'; + this.style['-webkit-transition'] = 'all 0.2s ease-out'; + this.style['-webkit-backface-visibility'] = 'hidden'; + // Slide our screen + this.screen.style.left = width + 'px'; + this.screen.style.right = '-' + width +'px'; + this.screen.style['-webkit-transition'] = 'all 0.2s ease-out'; + this.screen.style['-webkit-backface-visibility'] = 'hidden'; + }; + menu.setDimensions = menu.setDimensions.bind(menu); + + menu.hide = function() { + this.visible = false; + // Set our sizes + this.style.width = '0px'; + this.screen.style.left = '0px'; + this.screen.style.right = '0px'; + // Make our overlay invisible + this.overlay.style.display = 'none'; + + // Re-apply the old button styling if needed + if (!this.itemClicked) { + var tabOverflowBtn = this.actionBar.tabOverflowBtn; + tabOverflowBtn.icon.setAttribute('src',this.tabOverflowState.img); + tabOverflowBtn.icon.setAttribute('class',this.tabOverflowState.style); + tabOverflowBtn.tabHighlight.style.display = this.tabOverflowState.display; + tabOverflowBtn.display.innerHTML = this.tabOverflowState.caption; + } + }; + menu.hide = menu.hide.bind(menu); + + // Hide the menu + menu.onclick = function() { + this.hide(); + }; + + // Center the items in the list + menu.centerMenuItems = function() { + var windowHeight = bb.innerHeight(), + itemHeight = (bb.device.isPlayBook) ? 53 : 111, + margin; + margin = windowHeight - Math.floor(windowHeight/2) - Math.floor((this.actions.length * itemHeight)/2) - itemHeight; //itemHeight is the header + if (margin < 0) margin = 0; + this.actions[0].style['margin-top'] = margin + 'px'; + }; + menu.centerMenuItems = menu.centerMenuItems.bind(menu); + + // Initialize any selected items + menu.initSelected = function() { + var i, + action; + for (i = 0; i < this.actions.length; i++) { + action = this.actions[i]; + if (action.initialSelected) { + action.setOverflowTab(true); + break; + } + } + }; + menu.initSelected = menu.initSelected.bind(menu); + + // Make sure we move when the orientation of the device changes + menu.orientationChanged = function(event) { + this.centerMenuItems(); + // Resize the menu if it is currently open + if (this.visible) { + this.setDimensions(); + } + }; + menu.orientationChanged = menu.orientationChanged.bind(menu); + window.addEventListener('orientationchange', menu.orientationChanged,false); + + // Create our add item function + menu.add = function(action) { + var normal, + caption = action.innerHTML, + accentTextValue = action.getAttribute('data-bb-accent-text'), + inner = document.createElement('div'), + innerClass = 'bb-bb10-tab-overflow-menu-item-inner-'+this.res, + img = document.createElement('img'), + table, tr, td; + + // set our styling + normal = 'bb-bb10-tab-overflow-menu-item-'+this.res+' bb-bb10-tab-overflow-menu-item-'+this.res+'-' + bb.actionBar.color; + this.appendChild(action); + this.actions.push(action); + // If it is the top item it needs a top border + if (this.actions.length == 1) { + normal = normal + ' bb-bb10-tab-overflow-menu-item-first-' + this.res + '-' + bb.actionBar.color; + } + // Set our inner information + action.normal = normal; + action.accentText = null; + action.menu = this; + action.caption = caption; + action.setAttribute('class',action.normal); + action.innerHTML = ''; + if (!action.visibleTab) { + action.visibleTab = action.actionBar.tabOverflowBtn; + } + // Create our layout + table = document.createElement('table'); + tr = document.createElement('tr'); + table.appendChild(tr); + action.appendChild(table); + // Add our image + td = document.createElement('td'); + img.setAttribute('src', action.getAttribute('data-bb-img')); + img.setAttribute('class','bb-bb10-tab-overflow-menu-item-image-'+this.res); + action.img = img; + td.appendChild(img); + tr.appendChild(td); + // Add our caption + td = document.createElement('td'); + inner.innerHTML = caption; + action.display = inner; + td.appendChild(inner); + // See if there is accent text + if (accentTextValue) { + action.accentText = document.createElement('div'); + action.accentText.innerHTML = accentTextValue; + action.accentText.setAttribute('class','tab-accent-text'); + td.appendChild(action.accentText); + innerClass = innerClass + ' bb-bb10-tab-overflow-menu-item-double-' + this.res; + } else { + innerClass = innerClass + ' bb-bb10-tab-overflow-menu-item-single-' + this.res; + } + // Set our styling + inner.setAttribute('class',innerClass); + tr.appendChild(td); + + //Set the overflow tab item + action.setOverflowTab = function(hightlight) { + var tabOverflowBtn = this.actionBar.tabOverflowBtn; + if (hightlight) { + bb.actionBar.highlightAction(this.visibleTab, this); + } + if (this.visibleTab == tabOverflowBtn) { + tabOverflowBtn.icon.setAttribute('src',this.img.src); + tabOverflowBtn.icon.setAttribute('class',tabOverflowBtn.icon.highlight); + tabOverflowBtn.tabHighlight.style.display = 'block'; + tabOverflowBtn.display.innerHTML = this.caption; + } + }; + action.setOverflowTab = action.setOverflowTab.bind(action); + + // See if it was selected + action.initialSelected = (action.hasAttribute('data-bb-selected') && (action.getAttribute('data-bb-selected').toLowerCase() == 'true')); + + // Trap the old click so that we can call it later + action.oldClick = action.onclick; + action.onclick = function() { + var tabOverflowBtn = this.actionBar.tabOverflowBtn; + this.menu.itemClicked = true; + bb.actionBar.highlightAction(this.visibleTab, this); + if (this.visibleTab == tabOverflowBtn) { + this.setOverflowTab(false); + } + if (this.oldClick) { + this.oldClick(); + } + }; + + // Assign the setCaption function + action.setCaption = function(value) { + this.display.innerHTML = value; + }; + action.setCaption = action.setCaption.bind(action); + + // Assign the setImage function + action.setImage = function(value) { + this.img.setAttribute('src',value); + }; + action.setImage = action.setImage.bind(action); + }; + menu.add = menu.add.bind(menu); + return menu; + } +}, +bb.titleBar = { + + apply: function(titleBar) { + + if (bb.device.isBB10) { + var res = (bb.device.isPlayBook) ? 'lowres' : 'hires', + orientation = bb.getOrientation(), + button, + caption, + titleBarClass, + details, + topTitleArea = document.createElement('div'), + img, + accentText; + + // Insert our title area + titleBar.topTitleArea = topTitleArea; + titleBar.appendChild(topTitleArea); + + // Style our title bar + + if (bb.options.coloredTitleBar) { + titleBarClass = 'bb-bb10-title-bar-'+res +' bb-bb10-title-bar-'+ orientation + '-' +res +' bb10-title-colored'; + } else { + titleBarClass = 'bb-bb10-title-bar-'+res +' bb-bb10-title-bar-'+ orientation + '-' +res +' bb-bb10-title-bar-' + bb.screen.controlColor; + } + topTitleArea.setAttribute('class', titleBarClass); + + // Set our caption + caption = document.createElement('div'); + titleBar.caption = caption; + caption.setAttribute('class','bb-bb10-title-bar-caption-'+res+ ' bb-bb10-title-bar-caption-'+ orientation+ '-'+res); + caption.innerHTML = titleBar.getAttribute('data-bb-caption'); + topTitleArea.appendChild(caption); + + // Get our back button if provided + if (titleBar.hasAttribute('data-bb-back-caption')) { + button = document.createElement('div'); + button.innerHTML = titleBar.getAttribute('data-bb-back-caption'); + topTitleArea.appendChild(button); + titleBar.backButton = button; + button.onclick = bb.popScreen; + bb.titleBar.styleBB10Button(button); + button.style.left = '0px'; + } + // Get our action button if provided + if (titleBar.hasAttribute('data-bb-action-caption')) { + button = document.createElement('div'); + button.innerHTML = titleBar.getAttribute('data-bb-action-caption'); + if (titleBar.hasAttribute('onactionclick')) { + button.titleBar = titleBar; + button.onactionclick = titleBar.getAttribute('onactionclick'); + titleBar.onactionclick = function() { + eval(this.actionButton.onactionclick); + }; + button.onclick = function() { + if (this.titleBar.onactionclick) { + this.titleBar.onactionclick(); + } + }; + } else if (titleBar.onactionclick) { + button.onclick = titleBar.onactionclick; + } + bb.titleBar.styleBB10Button(button); + button.style.right = '0px'; + topTitleArea.appendChild(button); + titleBar.actionButton = button; + } + // Create an adjustment function for the widths + if (titleBar.actionButton || titleBar.backButton) { + titleBar.evenButtonWidths = function() { + var backWidth = this.backButton ? parseInt(window.getComputedStyle(this.backButton).width) : 0, + actionWidth = this.actionButton ? parseInt(window.getComputedStyle(this.actionButton).width) : 0, + commonWidth; + + if (this.actionButton && this.backButton) { + commonWidth = (backWidth > actionWidth) ? backWidth : actionWidth; + this.backButton.style.width = commonWidth +'px'; + this.actionButton.style.width = commonWidth +'px'; + this.caption.style['margin-left'] = (commonWidth + 24) +'px'; + this.caption.style['margin-right'] = (commonWidth + 24) +'px'; + } else if (this.actionButton) { + this.caption.style['margin-left'] = '0px'; + this.caption.style['margin-right'] = (actionWidth + 24) +'px'; + } else if (this.backButton) { + this.caption.style['margin-right'] = '0px'; + this.caption.style['margin-left'] = (backWidth + 24) +'px'; + } + }; + titleBar.evenButtonWidths = titleBar.evenButtonWidths.bind(titleBar); + window.setTimeout(titleBar.evenButtonWidths,0); + } + + // Display our image ONLY if there are no title bar images + if ((!titleBar.actionButton && !titleBar.backButton) && (titleBar.hasAttribute('data-bb-img') || titleBar.hasAttribute('data-bb-accent-text'))){ + caption.setAttribute('class','bb-bb10-title-bar-caption-left-'+res); + details = document.createElement('div'); + titleBar.details = details; + topTitleArea.appendChild(details); + details.appendChild(caption); + + // First check for the image + if (titleBar.hasAttribute('data-bb-img')) { + img = document.createElement('img'); + img.src = titleBar.getAttribute('data-bb-img'); + titleBar.img = img; + topTitleArea.insertBefore(img, details); + details.setAttribute('class', 'bb-bb10-title-bar-caption-details-img-'+res); + } + // Next check for the accent text + if (titleBar.hasAttribute('data-bb-accent-text')) { + caption.style['line-height'] = bb.device.isPlayBook ? '40px' : '70px'; + accentText = document.createElement('div'); + accentText.setAttribute('class','bb-bb10-title-bar-accent-text-'+ res); + if (bb.options.coloredTitleBar) { + accentText.style.color = 'silver'; + } + titleBar.accentText = accentText; + accentText.innerHTML = titleBar.getAttribute('data-bb-accent-text'); + details.appendChild(accentText); + } + + } + + // Assign the setCaption function + titleBar.setCaption = function(value) { + this.caption.innerHTML = value; + }; + titleBar.setCaption = titleBar.setCaption.bind(titleBar); + // Assign the getCaption function + titleBar.getCaption = function() { + return this.caption.innerHTML; + }; + titleBar.getCaption = titleBar.getCaption.bind(titleBar); + // Assign the setBackCaption function + titleBar.setBackCaption = function(value) { + this.backButton.firstChild.innerHTML = value; + if (this.actionButton) { + this.backButton.style.width = ''; + this.evenButtonWidths(); + } + }; + titleBar.setBackCaption = titleBar.setBackCaption.bind(titleBar); + // Assign the getBackCaption function + titleBar.getBackCaption = function() { + return this.backButton.firstChild.innerHTML; + }; + titleBar.getBackCaption = titleBar.getBackCaption.bind(titleBar); + // Assign the setActionCaption function + titleBar.setActionCaption = function(value) { + this.actionButton.firstChild.innerHTML = value; + if (this.backButton) { + this.actionButton.style.width = ''; + this.evenButtonWidths(); + } + }; + titleBar.setActionCaption = titleBar.setActionCaption.bind(titleBar); + // Assign the getActionCaption function + titleBar.getActionCaption = function() { + return this.actionButton.firstChild.innerHTML; + }; + titleBar.getActionCaption = titleBar.getActionCaption.bind(titleBar); + + } else if (bb.device.isPlayBook) { + titleBar.setAttribute('class', 'pb-title-bar'); + titleBar.innerHTML = titleBar.getAttribute('data-bb-caption'); + if (titleBar.hasAttribute('data-bb-back-caption')) { + var button = document.createElement('div'), + buttonInner = document.createElement('div'); + button.setAttribute('class', 'pb-title-bar-back'); + button.onclick = bb.popScreen; + buttonInner.setAttribute('class','pb-title-bar-back-inner'); + buttonInner.innerHTML = titleBar.getAttribute('data-bb-back-caption'); + button.appendChild(buttonInner); + titleBar.appendChild(button); + } + } else { + if (titleBar.hasAttribute('data-bb-caption')) { + if (bb.device.isHiRes) { + titleBar.setAttribute('class', 'bb-hires-screen-title'); + } else { + titleBar.setAttribute('class', 'bb-lowres-screen-title'); + } + titleBar.innerHTML = titleBar.getAttribute('data-bb-caption'); + } + } + }, + + styleBB10Button: function(outerElement) { + var res = (bb.device.isPlayBook) ? 'lowres' : 'hires', + //disabledStyle, + innerElement = document.createElement('div'), + //disabled = outerElement.hasAttribute('data-bb-disabled'), + normal, + highlight, + outerNormal; + + if (bb.options.coloredTitleBar) { + normal = 'bb-bb10-titlebar-button bb-bb10-titlebar-button-'+res+' bb10-title-button-colored'; + highlight = 'bb-bb10-titlebar-button bb-bb10-titlebar-button-'+res+' bb10-title-button-colored-highlight'; + outerNormal = 'bb-bb10-titlebar-button-container-'+res+' bb10-title-button-container-colored'; + // Set our styles + //disabledStyle = normal + ' bb-bb10-button-disabled-'+bb.screen.controlColor; + } else { + normal = 'bb-bb10-titlebar-button bb-bb10-titlebar-button-'+res+' bb-bb10-titlebar-button-' + bb.screen.controlColor; + highlight = 'bb-bb10-titlebar-button bb-bb10-titlebar-button-'+res+' bb-bb10-titlebar-button-highlight-'+ bb.screen.controlColor; + outerNormal = 'bb-bb10-titlebar-button-container-'+res+' bb-bb10-titlebar-button-container-' + bb.screen.controlColor; + // Set our styles + //disabledStyle = normal + ' bb-bb10-button-disabled-'+bb.screen.controlColor; + } + + //outerElement.enabled = !disabled; + outerElement.enabled = true; + innerElement.innerHTML = outerElement.innerHTML; + outerElement.innerHTML = ''; + outerElement.appendChild(innerElement); + + /*if (disabled) { + outerElement.removeAttribute('data-bb-disabled'); + innerElement.setAttribute('class',disabledStyle); + } else {*/ + innerElement.setAttribute('class',normal); + //} + // Set our variables on the elements + outerElement.setAttribute('class',outerNormal); + outerElement.outerNormal = outerNormal; + outerElement.innerElement = innerElement; + innerElement.normal = normal; + innerElement.highlight = highlight; + //innerElement.disabledStyle = disabledStyle; + //if (!disabled) { + outerElement.ontouchstart = function() { + this.innerElement.setAttribute('class', this.innerElement.highlight); + }; + outerElement.ontouchend = function() { + this.innerElement.setAttribute('class', this.innerElement.normal); + }; + //} + + // Trap the click and call it only if the button is enabled + outerElement.trappedClick = outerElement.onclick; + outerElement.onclick = undefined; + if (outerElement.trappedClick !== null) { + outerElement.addEventListener('click',function (e) { + if (this.enabled) { + this.trappedClick(); + } + },false); + } + + // Assign our enable function + /* outerElement.enable = function(){ + if (this.enabled) return; + this.innerElement.setAttribute('class', this.innerElement.normal); + this.ontouchstart = function() { + this.innerElement.setAttribute('class', this.innerElement.highlight); + + }; + this.ontouchend = function() { + this.innerElement.setAttribute('class', this.innerElement.normal); + }; + this.enabled = true; + }; + // Assign our disable function + outerElement.disable = function(){ + if (!this.enabled) return; + this.innerElement.setAttribute('class', this.innerElement.disabledStyle); + this.ontouchstart = null; + this.ontouchend = null; + this.enabled = false; + };*/ + + + } +}; + +_bb10_activityIndicator = { + apply: function(elements) { + var i, + outerElement, + innerElement, + indicator, + color = bb.screen.controlColor, + res = (bb.device.isPlayBook) ? 'lowres' : 'hires', + size, + width, + swirl; + + if (elements.length > 0) { + var canvas = document.createElement('canvas'), + ctx, + lingrad; + // Create our color matched swirl + canvas.setAttribute('height','184px'); + canvas.setAttribute('width', '184px'); + ctx = canvas.getContext('2d'); + ctx.beginPath(); + ctx.moveTo(92,154); + ctx.arcTo(154,154,154,92,62); + ctx.arcTo(154,30,92,30,62); + ctx.arcTo(81,30,81,20,10); + ctx.arcTo(81,10,91,10,10); + ctx.arcTo(173,10,173,92,82); + ctx.arcTo(173,173,92,173,82); + ctx.arcTo(81,173,81,164,10); + ctx.arcTo(81,154,92,154,10); + ctx.closePath(); + ctx.strokeStyle = 'transparent'; + ctx.stroke(); + + // Create our fill color + var lingrad = ctx.createLinearGradient(0,50,0,154); + lingrad.addColorStop(0, 'transparent'); + lingrad.addColorStop(1, bb.options.highlightColor); + ctx.fillStyle = lingrad; + ctx.fill(); + + swirl = canvas.toDataURL(); + } + + for (i = 0; i < elements.length; i++) { + outerElement = elements[i]; + size = (outerElement.hasAttribute('data-bb-size')) ? outerElement.getAttribute('data-bb-size').toLowerCase() : 'medium'; + + if (size == 'large') { + width = (bb.device.isPlayBook) ? '93px' : '184px'; + } else if (size == 'small') { + width = (bb.device.isPlayBook) ? '21px' : '41px'; + } else { + size = 'medium'; + width = (bb.device.isPlayBook) ? '46px' : '93px'; + } + + outerElement.style.width = width; + // Add another div so that the developers styling on the original div is left untouched + indicator = document.createElement('div'); + indicator.setAttribute('class', 'bb-bb10-activity-margin-'+res+' bb-bb10-activity-'+size+'-'+res+' bb-activity-'+color); + outerElement.appendChild(indicator); + innerElement = document.createElement('div'); + innerElement.setAttribute('class','bb-bb10-activity-'+size+'-'+res); + innerElement.style['background-image'] = 'url("'+ swirl +'")'; + indicator.appendChild(innerElement); + + // Set our animation + innerElement.style['-webkit-animation-name'] = 'activity-rotate'; + innerElement.style['-webkit-animation-duration'] = '0.8s'; + innerElement.style['-webkit-animation-iteration-count'] = 'infinite'; + innerElement.style['-webkit-animation-timing-function'] = 'linear'; + + + // Assign our show function + outerElement.show = function(){ + this.style.display = ''; + bb.refresh(); + }; + outerElement.show = outerElement.show.bind(outerElement); + + // Assign our hide function + outerElement.hide = function(){ + this.style.display = 'none'; + bb.refresh(); + }; + outerElement.hide = outerElement.hide.bind(outerElement); + + // Assign our remove function + outerElement.remove = function(){ + this.parentNode.removeChild(this); + bb.refresh(); + }; + outerElement.remove = outerElement.remove.bind(outerElement); + + return outerElement; + } + } +} +_bb10_button = { + // Apply styling for a list of buttons + apply: function(elements) { + for (var i = 0; i < elements.length; i++) { + bb.button.style(elements[i]); + } + }, + // Style an individual button + style: function(outerElement) { + var res = (bb.device.isPlayBook) ? res = 'lowres' : 'hires', + disabledStyle, + imgSrc, + caption, + imgElement, + captionElement = document.createElement('div'), + innerElement = document.createElement('div'); + disabled = outerElement.hasAttribute('data-bb-disabled'), + normal = 'bb-bb10-button bb-bb10-button-'+res, + highlight = 'bb-bb10-button bb-bb10-button-'+res+' bb10-button-highlight', + outerNormal = 'bb-bb10-button-container-'+res+' bb-bb10-button-container-' + bb.screen.controlColor, + outerNormalWithoutImageOnly = outerNormal; + + outerElement.isImageOnly = false; + outerElement.enabled = !disabled; + caption = outerElement.innerHTML; + captionElement.innerHTML = caption; + outerElement.innerHTML = ''; + outerElement.stretched = false; + outerElement.captionElement = captionElement; + outerElement.appendChild(innerElement); + outerElement.innerElement = innerElement; + + if (outerElement.hasAttribute('data-bb-style')) { + var style = outerElement.getAttribute('data-bb-style'); + if (style == 'stretch') { + outerNormal = outerNormal + ' bb-bb10-button-stretch'; + outerElement.stretched = true; + } + } + // look for our image + imgSrc = outerElement.hasAttribute('data-bb-img') ? outerElement.getAttribute('data-bb-img') : undefined; + if (imgSrc) { + if (!caption || caption.length == 0) { + outerNormal = outerNormal + ' bb-bb10-button-container-image-only-'+res; + captionElement.style['background-image'] = 'url("'+imgSrc+'")'; + outerElement.style['line-height'] = '0px'; + captionElement.setAttribute('class','bb-bb10-button-caption-with-image-only-'+res); + outerElement.isImageOnly = true; + } else { + // Configure our caption element + captionElement.setAttribute('class','bb-bb10-button-caption-with-image-'+res); + imgElement = document.createElement('div'); + outerElement.imgElement = imgElement; + imgElement.setAttribute('class','bb-bb10-button-image-'+res); + imgElement.style['background-image'] = 'url("'+imgSrc+'")'; + innerElement.appendChild(imgElement); + } + } + // Insert caption after determining what to do with the image + innerElement.appendChild(captionElement); + + // Set our styles + disabledStyle = normal + ' bb-bb10-button-disabled-'+bb.screen.controlColor; + normal = normal + ' bb-bb10-button-' + bb.screen.controlColor; + + if (disabled) { + outerElement.removeAttribute('data-bb-disabled'); + innerElement.setAttribute('class',disabledStyle); + } else { + innerElement.setAttribute('class',normal); + } + // Set our variables on the elements + outerElement.setAttribute('class',outerNormal); + outerElement.outerNormal = outerNormal; + outerElement.outerNormalWithoutImageOnly = outerNormalWithoutImageOnly; + outerElement.innerElement = innerElement; + innerElement.normal = normal; + innerElement.highlight = highlight; + innerElement.disabledStyle = disabledStyle; + if (!disabled) { + outerElement.ontouchstart = function() { + this.innerElement.setAttribute('class', this.innerElement.highlight); + + }; + outerElement.ontouchend = function() { + this.innerElement.setAttribute('class', this.innerElement.normal); + }; + } + + // Trap the click and call it only if the button is enabled + outerElement.trappedClick = outerElement.onclick; + outerElement.onclick = undefined; + if (outerElement.trappedClick !== null) { + outerElement.addEventListener('click',function (e) { + if (this.enabled) { + this.trappedClick(); + } + },false); + } + + // Assign our set caption function + outerElement.setCaption = function(value) { + if (this.isImageOnly && (value.length > 0)) { + // Configure our caption element + this.captionElement.setAttribute('class','bb-bb10-button-caption-with-image-'+res); + var imgElement = document.createElement('div'); + this.imgElement = imgElement; + imgElement.setAttribute('class','bb-bb10-button-image-'+res); + imgElement.style['background-image'] = this.captionElement.style['background-image']; + // Remove and re-order the caption element + this.innerElement.removeChild(this.captionElement); + this.innerElement.appendChild(imgElement); + this.innerElement.appendChild(this.captionElement); + // Reset our image only styling + this.setAttribute('class',this.outerNormalWithoutImageOnly); + this.captionElement.style['background-image'] = ''; + this.isImageOnly = false; + } else if ((value.length == 0) && this.imgElement) { + this.captionElement.setAttribute('class','bb-bb10-button-caption-with-image-only-'+res); + // Reset our image only styling + this.setAttribute('class',this.outerNormalWithoutImageOnly + ' bb-bb10-button-container-image-only-'+res); + this.captionElement.style['background-image'] = this.imgElement.style['background-image']; + this.isImageOnly = true; + // Remove the image div + this.innerElement.removeChild(this.imgElement); + this.imgElement = null; + } + this.captionElement.innerHTML = value; + }; + + // Assign our set image function + outerElement.setImage = function(value) { + if (this.isImageOnly) { + this.captionElement.style['background-image'] = 'url("'+value+'")'; + } else if (this.imgElement && (value.length > 0)) { + this.imgElement.style['background-image'] = 'url("'+value+'")'; + } else if (value.length > 0){ + // Configure our caption element + this.captionElement.setAttribute('class','bb-bb10-button-caption-with-image-'+res); + var imgElement = document.createElement('div'); + this.imgElement = imgElement; + imgElement.setAttribute('class','bb-bb10-button-image-'+res); + imgElement.style['background-image'] = 'url("'+value+'")'; + // Remove and re-order the caption element + this.innerElement.removeChild(this.captionElement); + this.innerElement.appendChild(imgElement); + this.innerElement.appendChild(this.captionElement); + } else if (this.imgElement && (value.length == 0)){ + // Supplied an empty image value + this.innerElement.removeChild(this.imgElement); + this.imgElement = null; + this.captionElement.setAttribute('class',''); + } + }; + + // Assign our enable function + outerElement.enable = function(){ + if (this.enabled) return; + this.innerElement.setAttribute('class', this.innerElement.normal); + this.ontouchstart = function() { + this.innerElement.setAttribute('class', this.innerElement.highlight); + + }; + this.ontouchend = function() { + this.innerElement.setAttribute('class', this.innerElement.normal); + }; + this.enabled = true; + }; + outerElement.enable = outerElement.enable.bind(outerElement); + + // Assign our disable function + outerElement.disable = function(){ + if (!this.enabled) return; + this.innerElement.setAttribute('class', this.innerElement.disabledStyle); + this.ontouchstart = null; + this.ontouchend = null; + this.enabled = false; + }; + outerElement.disable = outerElement.disable.bind(outerElement); + + // Assign our show function + outerElement.show = function(){ + this.style.display = this.stretched ? 'block' : 'inline-block'; + bb.refresh(); + }; + outerElement.show = outerElement.show.bind(outerElement); + + // Assign our hide function + outerElement.hide = function(){ + this.style.display = 'none'; + bb.refresh(); + }; + outerElement.hide = outerElement.hide.bind(outerElement); + + // Assign our remove function + outerElement.remove = function(){ + this.parentNode.removeChild(this); + bb.refresh(); + }; + outerElement.remove = outerElement.remove.bind(outerElement); + + return outerElement; + } +}; + +_bb10_checkbox = { + apply: function(elements) { + var i, + input, + touchTarget, + outerElement, + innerElement, + checkElement, + res = (bb.device.isPlayBook) ? 'lowres' : 'hires', + color = bb.screen.controlColor; + + for (i = 0; i < elements.length; i++) { + input = elements[i]; + // Outside touch target + touchTarget = document.createElement('div'); + touchTarget.setAttribute('class','bb-bb10-checkbox-target-'+res); + input.parentNode.insertBefore(touchTarget, input); + input.style.display = 'none'; + touchTarget.appendChild(input); + touchTarget.input = input; + input.touchTarget = touchTarget; + // Main outer border of the control + outerElement = document.createElement('div'); + outerElement.setAttribute('class', 'bb-bb10-checkbox-outer-'+res+' bb-bb10-checkbox-outer-'+color); + touchTarget.appendChild(outerElement); + // Inner check area + innerElement = document.createElement('div'); + innerElement.normal = 'bb-bb10-checkbox-inner-'+res+' bb-bb10-checkbox-inner-'+color; + innerElement.setAttribute('class', innerElement.normal); + outerElement.appendChild(innerElement); + // Create our check element with the image + checkElement = document.createElement('div'); + checkElement.hiddenClass = 'bb-bb10-checkbox-check-hidden-'+res+' bb-bb10-checkbox-check-image'; + checkElement.displayClass = 'bb-bb10-checkbox-check-display-'+res+' bb-bb10-checkbox-check-image'; + checkElement.setAttribute('class',checkElement.hiddenClass); + checkElement.style['-webkit-transition-property'] = 'all'; + checkElement.style['-webkit-transition-duration'] = '0.1s'; + innerElement.appendChild(checkElement); + touchTarget.checkElement = checkElement; + + // Set our coloring for later + touchTarget.innerElement = innerElement; + touchTarget.highlight = '-webkit-linear-gradient(top, rgb('+ (bb.options.shades.R + 32) +', '+ (bb.options.shades.G + 32) +', '+ (bb.options.shades.B + 32) +') 0%, rgb('+ bb.options.shades.R +', '+ bb.options.shades.G +', '+ bb.options.shades.B +') 100%)'; + touchTarget.touchHighlight = '-webkit-linear-gradient(top, rgba('+ (bb.options.shades.R - 64) +', '+ (bb.options.shades.G - 64) +', '+ (bb.options.shades.B - 64) +',0.25) 0%, rgba('+ bb.options.shades.R +', '+ bb.options.shades.G +', '+ bb.options.shades.B +',0.25) 100%)'; + + touchTarget.ontouchstart = function() { + if (!this.input.checked && !this.input.disabled) { + // Do our touch highlight + this.innerElement.style.background = this.touchHighlight; + } + }; + touchTarget.ontouchend = function() { + if (!this.input.checked && !this.input.disabled) { + this.innerElement.style.background = ''; + } + }; + touchTarget.onclick = function() { + if (!this.input.disabled) { + var evObj = document.createEvent('HTMLEvents'); + evObj.initEvent('change', false, true ); + // Set our checked state + this.input.checked = !this.input.checked; + this.drawChecked(); + this.input.dispatchEvent(evObj); + } + }; + touchTarget.drawChecked = function() { + if (this.input.checked) { + this.checkElement.setAttribute('class',this.checkElement.displayClass); + this.innerElement.style['background-image'] = touchTarget.highlight; + } else { + this.checkElement.setAttribute('class',this.checkElement.hiddenClass); + this.innerElement.style['background-image'] = ''; + } + if (this.input.disabled){ + this.innerElement.parentNode.setAttribute('class', 'bb-bb10-checkbox-outer-'+res+' bb-bb10-checkbox-outer-disabled-'+color); + this.innerElement.setAttribute('class', 'bb-bb10-checkbox-inner-'+res+' bb-bb10-checkbox-inner-disabled-'+color); + this.innerElement.style.background = '#c0c0c0'; + } else{ + this.innerElement.parentNode.setAttribute('class', 'bb-bb10-checkbox-outer-'+res+' bb-bb10-checkbox-outer-'+color); + this.innerElement.setAttribute('class', 'bb-bb10-checkbox-inner-'+res+' bb-bb10-checkbox-inner-'+color); + } + }; + touchTarget.drawChecked = touchTarget.drawChecked.bind(touchTarget); + + // Add our set Checked function + input.setChecked = function(value) { + if (value == this.checked) return; + this.checked = value; + this.touchTarget.drawChecked(); + }; + input.setChecked = input.setChecked.bind(input); + + // Add our get Checked function + input.getChecked = function() { + return this.checked; + }; + input.getChecked = input.getChecked.bind(input); + + // Add our enable function + input.enable = function(){ + this.removeAttribute('disabled'); + this.enabled = true; + this.touchTarget.drawChecked(); + }; + input.enable = input.enable.bind(input); + + // Add our disable function + input.disable = function(){ + this.enabled = false; + this.setAttribute('disabled','disabled'); + this.touchTarget.drawChecked(); + }; + input.disable = input.disable.bind(input); + + // Add our show function + input.show = function(){ + this.touchTarget.style.display = 'block'; + bb.refresh(); + }; + input.show = input.show.bind(input); + + // Add our hide function + input.hide = function(){ + this.touchTarget.style.display = 'none'; + bb.refresh(); + }; + input.hide = input.hide.bind(input); + + // Add our remove function + input.remove = function(){ + this.touchTarget.parentNode.removeChild(this.touchTarget); + bb.refresh(); + }; + input.remove = input.remove.bind(input); + + // Set our initial state + touchTarget.drawChecked(); + } + + } +}; +_bb10_dropdown = { + // Apply our transforms to all dropdowns passed in + apply: function(elements) { + for (i = 0; i < elements.length; i++) { + bb.dropdown.style(elements[i]); + } + }, + // Apply our styling to an individual dropdown + style: function(select) { + var res = (bb.device.isPlayBook) ? 'lowres' : 'hires', + img, + i,j, + innerElement, + innerContainer, + buttonOuter, + dropdown, + labelElement, + captionElement, + itemsElement, + enabled = !select.hasAttribute('disabled'), + normal = 'bb-bb10-dropdown bb-bb10-dropdown-'+res+' bb-bb10-dropdown-' + bb.screen.controlColor + ' bb-bb10-dropdown-'+res, + highlight = 'bb-bb10-dropdown bb-bb10-dropdown-'+res+' bb-bb10-dropdown-highlight-'+ bb.screen.controlColor+ ' bb10Highlight bb-bb10-dropdown-'+res, + outerContainerStyle = 'bb-bb10-dropdown-container-'+res+' bb-bb10-dropdown-container-' + bb.screen.controlColor + ' bb-bb10-dropdown-container-'+res, + innerContainerStyle = 'bb-bb10-dropdown-container-inner-'+res+' bb-bb10-dropdown-container-inner-'+bb.screen.controlColor, + innerButtonStyle = 'bb-bb10-dropdown-inner-'+res+' bb-bb10-dropdown-inner-'+bb.screen.controlColor; + + // Make the existing +
+ +
+
Status Message
+ +
+ +
+
Personal Message
+ +
+ +
+
PPID
+ +
+ +
+
Handle
+ +
+ +
+
Application Version
+ +
+ +
+
BBM SDK Version
+ +
+ +
+
+
+
Refresh
+
Save
+
+ \ No newline at end of file